IEC 61131-3 je treťou časťou normy IEC 61131 a skladá sa z piatich častí:
- Všeobecný prehľad
- Hardvér
- Programovacie jazyky
- Pokyny pre používateľov
- Komunikácia
Norma sa dá rozdeliť na dve hlavné skupiny:
- Spoločné prvky
- Programovacie jazyky
Spoločné prvky
Dátové typy
Dátové prvky sú definované už v rámci spoločných prvkov. Výber správnych dátových typov zabraňuje vývojovým chybám už v ranom štádiu. Definovanie všetkých použitých parametrov zabráni napríklad deleniu dátumu celým číslom. Spoločné dátové typy sú Boolean, Integer, Real a Byte a Word, ale aj dátum, TIME_OF_DAY a String. Na ich základe možno nadefinovať vlastné, odvodené dátové typy. Týmto spôsobom možno definovať aj analógový kanál ako dátový typ.
Premenné
Premenné sú explicitne priradené hardvérovým adresám (napr. vstupy a výstupy) zdrojov alebo programom. Týmto spôsobom vzniká vysoká miera nezávislosti hardvéru s možnosťou opätovného použitia softvéru. Platnosť definovaných premenných sa zvyčajne obmedzuje na organizačnú jednotku, v ktorej sú deklarované lokálne premenné. Znamená to, že sa dajú použiť v ďalších častiach bez akéhokoľvek konfliktu. Ak majú mať globálny dosah, musia byť definované globálne (VAR_GLOBAL). Premenným sa začiatočné hodnoty priradia pri štarte alebo studenom reštarte.
Konfigurácia, zdroje a úlohy
Softvér potrebný na vyriešenie konkrétneho riadiaceho problému je na najvyššej úrovni definovaný ako konfigurácia. Konfigurácia je špecifická pre určitý typ riadiaceho systému – vrátane zabezpečenia hardvéru, spracovania zdrojov, pamäťových adries pre I/O kanály a systémových možností. V rámci nastavení možno zadefinovať jeden alebo viac zdrojov. Na zdroj možno nazerať ako na technologické zariadenie, ktoré je schopné vykonávať programy IEC. V zdrojoch môžu byť definované úlohy. Tie riadia vykonávanie želaných programov alebo funkčných blokov. Vykonávajú sa pravidelne alebo na základe spúšťača, alebo po zmene premennej. Programy sú zostavené zo softvérových prvkov a sú napísané v IEC jazyku. Program sa typicky skladá z množiny funkcií a funkčných blokov, ktoré sú schopné výmeny dát. Funkcie a funkčné bloky sú základné stavebné kamene obsahujúce dátové štruktúry a algoritmus. V porovnaní s klasickým PLC, ktoré obsahuje jeden zdroj, jednu bežiacu úlohu a jeden riadiaci program bežiaci v uzavretej slučke, norma IEC 61131-3 pridáva ďalšie možnosti – multiprocesing a udalosťami riadené programy. Norma je určená pre širokú škálu aplikácií aj bez znalosti ďalších programovacích jazykov.
Programové organizačné jednotky
V norme IEC 61131-3 sa programy, funkčné bloky a funkcie nazývajú programové organizačné jednotky – POU.
Funkcie
Norma IEC rozdeľuje funkcie na štandardné a definované používateľom. Štandardné funkcie sú napríklad ADD, ABS, SQRT, SIN a COS. Funkcie definované používateľom sa nadefinujú raz a môžu sa používať stále.
Funkčné bloky
Funkčné bloky sú ekvivalentom integrovaných obvodov a predstavujú špecializované riadiace funkcie. Obsahujú aj údaje, aj algoritmus, čiže môžu sledovať aj minulosť (na rozdiel od funkcií). Rozhranie majú definované ako integrovaný obvod alebo čierna skrinka, čím jasne rozdeľujú úrovne programátorov alebo personál údržby. Vynikajúcim príkladom funkčného bloku je regulácia teploty alebo PID. Funkčné bloky možno použiť v tom istom programe, v inom programe, no aj v iných projektoch opakovane. Programovanie funkčných blokov je možné v IEC jazykoch, no často sa používa jazyk C. Odvodené funkčné bloky sú založené na štandardných blokoch, ale nie je problém vytvoriť nové FB podľa poskytnutého frameworku.
Funkcie a funkčné bloky sú opísané rovnakým spôsobom.
FUNCTION_BLOCK
VAR_INPUT:
X: Bool;
Y: Bool;
END_VAR
VAR_OUTPUT
Z: Bool;
END_VAR
(* Výrazy * functionblock body)
END_FUNCTION_BLOCK
Deklarácia opisuje rozhranie funkčného bloku s dvoma logickými vstupnými parametrami a jedným výstupným logickým parametrom.
Programy
Základným stavebným kameňom je program s množinou funkcií a funkčných blokov.
Sekvenčný funkčný diagram
Sekvenčný funkčný diagram opisuje sekvenčné správanie riadiaceho programu a je odvodený z Petriho siete a IEC 848. SFC rozdeľuje vnútornú organizáciu programu a pomáha rozdeliť riadenie do ovládateľných častí. SFC sa skladá z krokov prepojených s akčnými blokmi a prechodmi. Každý krok predstavuje konkrétny stav riadeného systému. Kroky prepojené s akčnými blokmi vykonávajú riadiace akcie. Prvky môžu byť naprogramované v IEC jazyku vrátane SFC. Možno používať alternatívne či paralelné sekvencie, ktoré sa bežne vyskytujú pri dávkových aplikáciách. Jedna sekvencia môže byť použitá napríklad v hlavnom procese, druhá zase na sledovanie celkových prevádzkových vlastností.
Programovacie jazyky
Štandard definuje štyri programovacie jazyky, čiže syntax a sémantika sú už pripravené. Jazyky sa dajú rozdeliť na textové a grafické verzie:
Textové:
- Zoznam príkazov, IL
- Štruktúrovaný text, ST
Grafické:
- Ladder diagram, LD
- Funkčná bloková schéma, FBD
Voľba programovacieho jazyka závisí od:
- znalostí programátora,
- riešeného problému,
- úrovne opisu problému,
- štruktúry riadiaceho systému,
- prepojení s ostatnými ľuďmi/oddeleniami.
Všetky štyri jazyky sú vzájomne prepojené, pretože poskytujú spoločný súbor programov.
Ladder diagram má korene v USA. Je založený na grafickej prezentácii Relay Ladder Logic. Zoznam príkazov je jeho európsky náprotivok. Jeho textový jazyk pripomína assembler. Funkčná bloková schéma sa veľmi často používa vo výrobnom priemysle. Vyjadruje správanie funkcií, funkčných blokov a programov ako súbor vzájomne prepojených grafických blokov, podobne ako elektrotechnických schém. Na systém sa pozerá z hľadiska toku signálu medzi prvkami. Štruktúrovaný text je veľmi silný nástroj na úrovni jazykov Ada, Pascal a C. Obsahuje všetky podstatné prvky moderného programovacieho jazyka vrátane vetvenia (IF-THEN-ELSE a CASE OF) a iteračných slučiek (FOR, WHILE a REPEAT). Tieto prvky môžu byť vnorené. Štruktúrovaný text môže byť použitý na definovanie komplexných funkčných blokov, ktoré sa dajú použiť v ďalších jazykoch.
Ukážka:
I: = 25;
WHILE J <5 DO
Z: = F(I + J);
END_WHILE
IF B_1 THEN
% QW100: = INT_TO_BCD (Display)
ENDIF
CASE TW OF
1,5: TEMP: = TEMP_1;
2: TEMP: = 40;
4: TEMP: = FTMP (TEMP_2);
ELSE
TEMP: = 0;
B_ERROR: = 1;
END_CASE
Zhora nadol v. zdola nahor
Štandard umožňuje rozvíjať program dvoma spôsobmi: zhora nadol a zdola nahor. Buď špecifikujete celú aplikáciu a rozdelíte ju na jednotlivé časti, deklarujete premenné a podobne, alebo môžete začať programovať aplikáciu zdola prostredníctvom odvodených funkcií a funkčných blokov.
Implementácia
Nie je ľahké splniť všeobecné požiadavky na normu IEC 61131-3. Z tohto dôvodu norma umožňuje čiastočnú implementáciu v rozličných oblastiach. To sa týka počtu podporovaných jazykov, funkcií a funkčných blokov.