Programování PLC podle normy IEC EN 61131-3 – víc než jednotné jazyky
Článek stručně seznamuje s obsahem normy IEC EN 61131-3, zamýšlí se nad metodikou programování PLC (Programmable Logic Controller, programovatelný automat) a zároveň upozorňuje na skutečnost, že respektování zásad normy samo o sobě ještě nezaručuje systematičnost navrhovaného programu a jeho bezchybnost. Doporučuje přehodnotit účelnost dosud velmi rozšířených jazyků nejnižší úrovně, zejména LD, a dát přednost jazykům a prostředkům vyšší úrovně ST a SFC, popř. FBD (tab. 1).
Tab. 1. Jazyky pro programování řídicích jednotek specifikované v normě IEC EN 61131-3
Kodifikované označení v angličtině |
Označení obvyklé v němčině |
Vhodný název v češtině |
zkratka |
název |
zkratka |
název |
LD |
Ladder Diagram |
KOP |
Kontaktplan |
reléové schéma |
FBD |
Function Block Diagram |
FUP |
Funktionplan |
jazyk funkčních bloků |
IL |
Instruction List |
AWL |
Anweisungsliste |
jazyk mnemokódů |
ST |
Structured Text |
ST |
Strukturierter Text |
strukturovaný text |
SFC |
Sequential Function Chart |
AS |
Ablaufsprache |
jazyk sekvenčního programování |
Norma IEC EN 61131-3
V poslední době se v souvislosti s programováním PLC často mluví o normě IEC 1131-3 (v evropské legislativě s označením IEC EN 61131-3).
Obr. 1. Příklad zápisu programu v jazyce pomocí LD: a) zápis v LD, b) ekvivalentní zápis v ST
V ČR byla uvedená norma přijata, nikoliv však přeložena, pod označením ČSN EN 61131-3 Programovatelné řídicí jednotky – Část 3: Programovací jazyky. Tato norma byla také přijata jako směrnice většinou významných světových výrobců PLC.
Norma sjednocuje syntaxi (formální pravidla, gramatiku) i sémantiku jazyků pro programování řídicích jednotek (PLC). Lze říci, že jazyky specifikované v této normě jsou jakýmsi esperantem, které nahrazuje dosavadní množství různorodých jazyků. Uživatelé a programátoři PLC zde najdou typy jazyků, které jsou zvyklí používat, které vycházejí z jazyků používaných světovými výrobci, a bez větších problémů jim porozumějí. Jde především o grafické jazyky kontaktních schémat (LD, obr. 1) a blokových schémat (FBD, obr. 2) nebo o textové jazyky – jazyk mnemokódů (IL, obr. 3), který je obdobou jazyků typu assembler, a strukturovaného textu (ST, obr. 4), patřící do kategorie vyšších programovacích jazyků podobně jako jazyk C, Pascal atd.
Obr. 2. Příklad zápisu programu: a) v jazyce FBD, b) ekvivalentní zápis v ST
Součástí normy je i definice společných prvků, mezi něž patří především deklarace proměnných a datových typů, funkcí a funkčních bloků, vytváření speciálních uživatelských funkcí a funkčních bloků a jejich aktivace, ale i způsob aktivace úloh programu a grafický aparát pro sekvenční aktivaci úloh (SFC, obr. 5). Podrobnější informace lze najít přímo v originálu normy [1] nebo v publikaci [2], v češtině v [3], [4]. Vhodné je připomenout, že o rozšíření a popularizaci normy IEC EN 61131-3 se stará organizace PLCopen (http://www.plcopen.org).
Jednotné prostředí a jazyky
Zavedení normy IEC EN 61131-3 je obdobou kodifikace spisovného jazyka, který sjednotil různorodá nářečí do jedné spisovné formy. Jednotlivá nářečí tím nezanikla, ale nadále zůstala pouhými lokálními dialekty. Stejně tak zavedením normy IEC EN 61131-3 nezaniknou dosavadní firemní programovací jazyky. Důvodem jsou především ohledy výrobců PLC na tradiční uživatele jejich produktů, kteří jsou na původní firemní jazyky zvyklí a nejsou ochotni se učit syntaxi nového jednotného jazyka – nezbytně odlišnou a mnohdy komplikovanější. Novým uživatelům a programátorům se vyplatí naučit se přímo programovat podle normy IEC EN 61131-3, stejně jako se při výuce cizímu jazyku učí jeho spisovná forma, nikoliv dialekt. Programování podle normy IEC EN 61131-3 uvítají především programátoři ve firmách, které jsou nuceny kompletovat své zakázky pokaždé s jinou značkou PLC. Jednotná syntaxe programovacích jazyků jim ušetří ztrátový čas a mnoho programátorských chyb, které jsou průvodními jevy situace, v níž je nutné naučit se a používat současně několik různých jazyků a převádět stejné či podobné bloky programu do různých jazykových mutací.
Obr. 3. Příklad zápisu programu v jazyce IL
Přínos normy IEC EN 61131-3 je ale podstatně větší než jen náhrada početné množiny různých jazyků několika málo standardizovanými jazyky. Jazyky podle normy IEC EN 61131-3 a jejich společné prvky jsou podstatně systematičtěji a obecněji definovány, než tomu je u dosavadních jazyků. Navíc všechny navzájem sdílejí společné prvky. Přechody mezi různými typy jazyků jsou tak snazší. Patrně nerozšířenější jsou jazyky nejnižší úrovně – grafický jazyk LD a textový jazyk IL. Na periferii zájmu programátorů dosud jsou, alespoň v ČR, dva prostředky nejvyšší úrovně – jazyk strukturovaného textu ST a grafický prostředek SFC.
Program – víc než soubor příkazů
Častým omylem je tvrzení či pocit, že programování je jen psaní programu ve zvoleném jazyce, že stačí naučit se vhodný programovací jazyk a po zadání úlohy sednout k počítači a psát program. Program pro PLC není ale samoúčelná kombinace znaků, grafické schéma nebo sled instrukcí či příkazů vyššího jazyka. Je to ucelený produkt a přitom neoddělitelná součást automatizačního projektu. Právě program oživuje celý automatizovaný systém – stroj nebo technologické zařízení. Kvalita programu rozhoduje o kvalitě řízení systému, o úspornosti a spolehlivosti provozu i o pohodlí obsluhy a spokojenosti koncového uživatele – a výsledně o úspěšnosti celé zakázky.
Obr. 4. Příklad deklarace funkčního bloku v jazyce ST
Je chyba se domnívat, že okamžitě po zadání úlohy je třeba neprodleně začít s psaním instrukcí programu. Program lze sice tímto způsobem vytvořit, vynechání analytické a přípravné fáze se však projeví – a vymstí – později, ve fázi ladění programu a při uvádění řízeného celku do provozu. Tedy ve fázi, kdy je mezi zúčastněnými nejvíce stresu a nervozity a prostředí je nejméně vhodné k soustředění se a ke hledání chyb, logických mezer a nesystematičností v řídicím programu.
Nesystematicky vytvořený a nedostatečně odladěný program je trvalým zdrojem problémů, reklamací a dodatečných nákladů. Proto se i při tvorbě programu vyplatí respektovat obvyklé vývojové fáze, obdobné jako u celkového projektu, především úvodní analýzu požadavků, zadání úlohy a její algoritmizaci, a dále navázat systematickým návrhem koncepce a struktury programu, definováním podsystémů, modulů a funkčních bloků, které budou v programu použity, a rozhraní mezi nimi. Přitom je důležité zvolit programovací jazyk vhodný pro danou úlohu. Teprve pak má smysl začít vytvářet vlastní program. Podobně jako při tvorbě hmatatelných produktů je i u softwaru základním požadavkem důsledné prověřování kvality v průběhu i na závěr celého procesu.
Obr. 5. Příklad zápisu programu s použitím SFC
Ne všechny programovací jazyky definované v normě IEC EN 61131-3 jsou rovnocenné a vhodné pro všechny typy úloh. Jen některé z nich jsou vhodné ve fázi analýzy a zápisu algoritmů. Použitelnost a úroveň jednotlivých jazyků podle IEC EN 61131-3 je patrná z obr. 6, kde jsou na vodorovné ose naznačeny vývojové fáze tvorby programu pro PLC od analýzy, přes návrh programu po samotné psaní kódu programu (sestavování programu z modulů a příkazů jazyka) a svisle je vynesena úroveň abstraktních možností popisu vlastní jazyku nebo programovacímu prostředku (ve smyslu jazyk nižší/vyšší úrovně).
Z obr. 6 je např. patrné, že tolik rozšířený jazyk kontaktních schémat (LD) je jazyk nejnižší úrovně, vhodný až pro fázi psaní kódu programu (kreslení liniového schématu). Omezený počet příkazů a výlučná orientace prvků jazyka na základní logické úlohy jej předurčují k zápisu nepříliš komplikovaných úloh logického typu.
Na poněkud vyšší úrovni abstrakce popisu se nacházejí jazyky FBD a IL. Grafický jazyk funkčních bloků (FBD) je umístěn více doleva, k etapám návrhu koncepce programu. Vděčí za to své názornosti a možnosti sestavovat program formou blokových schémat z modulů a funkčních bloků. Na stejné úrovni jako jazyk FBD je umístěn jazyk mnemokódů (IL), ovšem zcela vpravo. Svou úrovní abstrakce popisu je výš než LD, protože s použitím jeho příkazů (základních instrukcí) lze realizovat i poměrně komplikované algoritmy, ovšem za cenu dlouhého a nepřehledného zápisu. Je vhodný až pro konečnou fázi tvorby programu (kódování).
Obr. 6. Hierarchie standardizovaných programovacích jazyků podle IEC EN 61131-3
Jazyku strukturovaného textu (ST) je právem přiřazena výrazně vyšší úroveň než předchozím jazykům. Jeho příkazy dovolují zapsat i složité algoritmy poměrně názorně a přehledně. Přesto se nejvíc uplatňuje až v závěrečných etapách tvorby programu. Je ale vhodné připomenout, že jazyk ST je vhodný i pro popis funkce uživatelských funkčních bloků a jejich knihoven, které pak může využívat grafický jazyk FBD.
Nejvyšší úroveň abstrakce popisu a nejširší použitelnost jsou hlavními rysy grafického programovacího prostředku SFC. V normě sice není označen jako jazyk, přesto jej lze považovat za prostředek vhodný jak k popisu činnosti programu již v počátečních fázích analýzy a zadávání požadavků na řídicí program, tak k zápisu algoritmu řízení technologické soustavy. Kdyby si tento nepříliš komplikovaný grafický prostředek osvojili již konstruktéři a projektanti, mohli by své požadavky na řízení formulovat podstatně přesněji a komplexněji než při dosud nejobvyklejším slovním popisu.
Metodika celého návrhu programu pro PLC je velmi pěkně popsána v [2], odkud jsou také převzaty ilustrační obrázky k tomuto článku. Vzhledem k tomu, že v českém jazyce dosud nebylo publikováno příliš mnoho knižních titulů na toto důležité téma, určitě by stál za zvážení i český překlad této knihy. Projektantům, programátorům i uživatelům řídicích systémů, zejména PLC, ji lze než doporučit.
Co říci závěrem
Sama existence jednotné syntaxe programovacích jazyků podle normy IEC EN 61131-3 nezaručuje bezchybné a efektivní programování PLC. Norma IEC EN 61131-3 a především její programové prostředí společných prvků, grafického prostředku SFC a jazyka strukturovaného textu ST ale vytvářejí předpoklady pro systematický postup nejen při vlastním psaní programu, ale i v počátečních etapách jeho tvorby. Je pouze na programátorech, jaké metody zvolí a zda jejich program bude srozumitelným zápisem dobře fungujícího algoritmu řízení, který řízené soustavě vdechne život.
Ing. Luboš Urban
(urban@tecomat.cz)
Literatura:
[1] IEC 1131 – 3 Programmable Controllers – part 3, Programming Languages. IEC, 1993.
[2] BONFATTI, F. – MONARI, P. D. – SAMPIERI, U.: IEC1131-3 Programming Methodology. ICS Triplex IsaGRAF Inc., 2003, ISBN 0-9734670-0-2.
[3] MARTINÁSKOVÁ, M. – ŠMEJKAL, L.: Řízení programovatelnými automaty III. Vydavatelství ČVUT, Praha, 2003.
[4] Programovací jazyk ST pro PLC Tecomat. Teco a. s., Kolín, 2004.
|