Programové sekvence

Funkční blok Programové sekvence umožňuje programovat sekvence funkcí v textové podobě.
Tímto způsobem lze automatizovat různé procesy, které vyžadují sekvenční řízení.

Funkční blok může zjednodušit tyto procesy, které často vyžadují několik běžných funkčních bloků se složitým nastavováním.

Jednotlivé kroky se programují po řádcích, skupina řádků, která vykonává určitou funkci, se označuje jako sekvence.

Obsah


Vstupy

Zkratka Krátký popis Popis Rozsah hodnot
S1-8 Aktivuje sekvence 1-8 -
AI1-8 Analogové vstupy 1-8 -
AIS Analogový vstup pro spuštění sekvence 0...8
R Reset Resetuje blok a uzamkne jej. -




Výstupy

Zkratka Krátký popis Popis Rozsah hodnot
AQ1-8 Analogové výstupy 1-8 -
AQs Aktuální sekvence Aktuálně běžící sekvence
AQl Aktuální řádek Aktuální programový řádek běžící sekvence
TQ Textový výstup Textový výstup, který lze nastavit pomocí sekvence -




Vlastnosti

Krátký popis Popis Standardní hodnota
Nastavení Editor kódu -
Interval [ms] Interval v milisekundách, ve kterém se provádějí řádky programu. Nízké hodnoty mohou ovlivnit zatížení procesoru. 500




Příklad použití

Následující příklad představuje jednoduchou aplikaci pro ohřev vody v domácnosti, kdy jsou dva zásobníky teplé vody ohřívány postupně centrálním topným prvkem.

Teploty topného tělesa, obou zásobníků teplé vody a požadovaná teplota teplé vody se zadávají na vstupech funkčního bloku.
Sekvence 1 se spouští prostřednictvím vstupu S1, v tomto příkladu impulzem v určitém čase.
Topné těleso, čerpadla a ventily se ovládají prostřednictvím výstupů:

Dvojklikem na funkční blok otevřete programovací okno.
Knihovna v levé části okna obsahuje seznam dostupných vstupů, výstupů, příkazů a proměnných.
Dvojklikem na jeden z těchto objektů jej vložíte do programovacího okna vpravo, kde jej můžete dále upravovat:

Každý řádek musí začínat příkazem, jak je vidět v příkladu výše.
Zelené komentáře nejsou pro fungování sekvence nutné, ale umožňují dokumentovat jednotlivé kroky.

Poznámka: Tento příklad má poskytnout přehled o funkčním bloku a jeho funkcích. Na konkrétní aplikaci jej lze aplikovat pouze v omezeném rozsahu.


Popis funkce

Sekvence jsou prováděny řádek po řádku v nastavitelném intervalu. Určité úseky lze přeskočit pomocí podmínek nebo zpozdit pomocí časových příkazů.
Je možné vytvořit více sekvencí, každou sekvenci lze spustit samostatně nebo na ni přepnout pomocí příkazu.

Funkční blok obsahuje také kontrolu syntaxe, která upozorňuje na syntaktické chyby při úpravě sekvence. Neplatné nebo prázdné řádky jsou při běhu sekvence přeskočeny.

Programovací řádek vždy začíná požadovanou funkcí, za níž následují požadované parametry a operátory, které jsou odděleny mezerou.

Vstupy a výstupy uvedené v knihovně bloku lze nastavovat nebo se na ně dotazovat.
Je-li vstup připojen k logice, platí poslední nastavená hodnota. Změny na vstupu přepíší hodnotu nastavenou sekvencí.

Příkazy podporované funkčním blokem Vzorec lze použít k nastavení a porovnání výstupů (např. SET AQ1 = AI2 * 3).


Operátory, Vstupy/Výstupy (IO) a Proměnné

K dispozici jsou operátory =, >=, >, <=, <, !=

Dostupné vstupy: AI1 - AI8. Názvy vstupů lze upravit v dialogovém okně.

Dostupné výstupy: AQ1 - AQ8. Názvy výstupů lze upravit v dialogovém okně.

Proměnné: value1 - value5. Názvy proměnných lze upravit v dialogovém okně.
Proměnné se používají ke zpracování hodnot, které nejsou k dispozici v IO. Mohou být nastaveny jako IO, použity při výpočtech nebo jako paměť.


Příkazy

Sleep
Čekání po zadanou dobu
Syntaxe: sleep [value] [s: seconds, m: minutes]
Příklad:
sleep 300 s (čeká 300 sekund, pak pokračuje dalším řádkem)
sleep 10 m (čeká 10 minut, pak pokračuje dalším řádkem)

Waitcondition
Čekání na splnění podmínky
Syntaxe: waitcondition [IO] [operator] [value]
Příklady:
waitcondition AI1 > AQ1 (čeká, dokud AI1 není větší než AQ1, pak pokračuje dalším řádkem)
waitcondition AI1 + 3 > value1 (čeká, dokud AI1 + 3 není větší než proměnná value1, pak pokračuje dalším řádkem)

Set
Nastavení vstupu, výstupu nebo proměnné na hodnotu
Syntaxe: set [IO] = [value]
Příklady:
set AQ1 = AI1 - AI2 (odečte AI2 od AI1 a výsledek vypíše na AQ1)
set value1 = AI2 + AI3 (sečte AI2 a AI3 a nastaví proměnnou value1 na výsledek)

Setpulse
Provede impulz vstupem nebo výstupem
Syntaxe: setpulse [IO]
Příklady:
setpulse AQ1 (dá krátký impulz na AQ1)
setpulse AI2 = 4 (dá krátký impulz s hodnotou 4 na AI2)

Startsequence
Spustí určitou sekvenci
Syntaxe: startsequence [číslo] nebo startsequence [název sekvence]
Příklad:
startsequence 2 (spustí druhou sekvenci)
startsequence Alarm (spustí sekvenci s názvem "Alarm")

Return
Pokud byla aktuální sekvence spuštěna jinou sekvencí příkazem [startsequence], tento příkaz se vrátí do vyvolávající sekvence a přejde na další řádek.
Syntaxe: return

Goto
Přejdi na určitý řádek
Syntaxe: goto [hodnota]
Příklad:
goto 1 (spustí sekvenci od začátku)
goto 23 (skočí na řádek 23 a pokračuje od něj)

If
"If" nejprve kontroluje, zda je podmínka pravdivá. Pouze pokud je podmínka pravdivá, provedou se následující příkazy až po "endif".
Syntaxe: if [levý člen] [operátor] [pravý člen] ... endif
Příklad:
if AQ3 >= 4
set AQ1 = AQ3
endif

Komentáře a texty

Comment
Přidání komentáře k aktuálnímu řádku nebo vypnutí zbytku řádku
Syntaxe: //
Příklady:
waitcondition AI2 > AI4 // čekat, dokud AI2 není větší než AI4 (komentář se používá k popisu řádku)
// waitcondition AI2 > AI4 (lomítka v komentáři se používají na začátku k zakázání celého řádku)

Textový výstup TQ
Znaky v uvozovkách jsou vypsány jako text, jinak se s nimi pracuje jako s analogovými hodnotami
Syntaxe: set TQ = "..."
Příklady:
[set TQ = AQ2] vypíše "27,5"
[set TQ = "Hodnota AQ2 je" AQ2] vypíše "Hodnota AQ2 je 27,5"