====== Program ======
Program představuje programovou jednotku nejvyšší úrovně v uživatelském programu. Regulátor (PLC) může zpracovávat více programů a vývojové prostředí obsahuje prostředky pro [[:cs:mervis-ide:35-help:015-plc:065-plc_prog_map|definici činnosti programů]] (v jaké periodě vykonávat program, s jakou prioritou apod.).
Program se skládá ze dvou základních částí: deklarační a výkonné. V deklarační části POU se definují proměnné potřebné pro činnost POU. Výkonná část pak obsahuje vlastní příkazy pro realizaci požadovaného algoritmu.
==== Deklarace programu ====
PROGRAM jmeno
...
END_PROGRAM
==== Deklarace proměnných ====
Deklarační část programu obsahuje definice proměnných potřebných pro svoji činnost. Proměnné jsou používány pro ukládání a zpracování informací. Každá proměnná je definována jménem proměnné a datovým typem. Datový typ určuje velikost proměnné v paměti a zároveň do značné míry určuje způsob zpracování proměnné. Pro definice proměnných jsou k dispozici standardní datové typy (BOOL, BYTE, INT, …). Použití těchto typů závisí na tom, jaká informace bude v proměnné uložena (např. typ BOOL pro informace typu ano/ne, typ INT pro uložení celých čísel se znaménkem apod.). Uživatel má také možnost definovat svoje vlastní datové typy. Umístění proměnných v paměti PLC systému zajišťuje automaticky programovací prostředí. Pokud je to potřeba, může umístění proměnné v paměti definovat i uživatel.
Vstupní proměnné
VAR_INPUT
...
END_VAR
Výstupní proměnné
VAR_OUTPUT
...
END_VAR
Vstupně/výstupní proměnné
VAR_IN_OUT
...
END_VAR
Statické proměnné
VAR
...
END_VAR
Externí proměnné
VAR_EXTERNAL
...
END_VAR
Inicializace proměnných
VAR
I: INT := 1;
END_VAR;
Definice proměnných „retain“
VAR RETAIN
...
END_VAR
==== Výkonná část ====
Výkonná část programu následuje za částí deklarační a obsahuje příkazy a instrukce.
----
Příklad programu (TEST):
PROGRAM TEST //název progamu TEST
VAR //statické deklarace (v tomto případu funkčního bloku)
My_Room: Light_Room;
END_VAR
VAR_EXTERNAL //externí deklarace
Actual_TOD:TOD;
END_VAR
(* Tělo programu *)
IF (Actual_TOD >= TOD#20:15:00) OR (Actual_TOD <= TOD#6:00:00) THEN
MyRoom.NightTime();
ELSE
MyRoom.DayTime();
END_IF;
END_PROGRAM
{{:cs:mervis-ide:35-help:prog.png}}