Aktuální vydání

celé číslo

08

2019

MSV 2019 v Brně

celé číslo

Programování PLC podle normy IEC EN 61131-3 – víc než jednotné jazyky

číslo 2/2005

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.

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.

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.

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.

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.

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.

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.