Obsah

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 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