Programovateľné riadiace systémy PLC (Programmable Logic Controller) vznikli ako náhrada klasických elektronických zapojení, pričom hlavným cieľom bola jednoduchá rekonfigurácia. Namiesto zmeny zapojenia stačilo riadiaci systém jednoducho preprogramovať.
Najdôležitejším kritériom PLC určených do priemyselného prostredia je spoľahlivosť a odolnosť. Stačí si predstaviť riadiaci systém výrobnej linky a podmienky, ktoré z toho vyplývajú, napríklad prašnosť, vibrácie, rušenie od elektromotorov, či výkonových spínacích prvkov a ďalšie nepriaznivé vplyvy typické pre industriálne prostredie. Moduly PLC sa používajú aj ako riadiace jednotky v inteligentných budovách a v poslednom čase aj inteligentných domov a bytov. Aj tam je kľúčovým parametrom spoľahlivosť.
Veľmi zrozumiteľné vysvetlenie princípov fungovania PLC od stredoškolského profesora Martina Lockera
Programovateľné logické automaty čiže PLC sú malé priemyselné počítače používané na automatizáciu procesov v reálnom čase. Majú vstupy a výstupy prispôsobené na napojenie na technologické procesy a program sa vykonáva cyklicky. Sú robustné, spoľahlivé a jednoduché na obsluhu
PLC verzus „hobby“ vývojové dosky
Hlavným dôvodom, prečo sa ani v priemyselnej automatizácii, ani v takzvanej malej automatizácii, čo sú automatizované zariadenia, ktoré využívajú živnostníci, či malé a rodinné firmy nepoužívajú vývojové dosky pre hobby konštrukcie je robustnosť a spoľahlivosť. Mikrokontrolérové dosky ESP32, Raspberry Pi, a na mnohé účely aj Arduino, by výkonovo aj čo sa týka hardvérovej výbavy na tento účel bohato postačovali. V porovnaní s jednoduchšími PLC modulmi majú dokonca oveľa sofistikovanejšie možnosti programovania a priamo na doske viac vstupov a výstupov, môžete k nim jednoducho pripojiť grafické displeje. Inak povedané tieto univerzálne dosky sú oveľa univerzálnejšie.
Na ilustráciu najjednoduchšie PLC moduly napríklad u nás často používané Siemens Logo! majú 8 vstupov, z toho 4 môžu byť analógové a na ovládanie externých zariadení majú 4 reléové výstupy. Takže v základnej výbave nemáte k dispozícii žiadny analógový výstup. Výhodou je už spomínaná spoľahlivosť, a taktiež to, že modul riadiacej jednotky je po mechanickej aj elektrickej stránke pripravený na použitie. Stačí ho zacvaknúť do DIN lišty a pripojiť na svorkovnice vodiče vstupov a výstupov. Naproti tomu pri použití vývojových dosiek musíte riešiť oddelenie vstupov, musíte pripojiť na výstupy dosku s relé, alebo výkonovými spínacími, či regulačnými členmi, potrebujete pripojiť displej, tlačidlá na ovládanie, prípadne ďalšie hardvérové komponenty. Všetko to musíte umiestniť do nejakej skrinky, aby vaša konštrukcia mala požadovaný stupeň odolnosti voči vonkajším vplyvom, takže keď si k tomu pripočítate časovú réžiu, tak pri riadiacej jednotke pre inteligentnú domácnosť, či malú automatizáciu v porovnaní s použitím jednoduchého PLC, trebárs Siemens Logo! v cene približne 120 eur skôr prerobíte, než ušetríte.
Ak na vstup dosky typu Rasberry, ESP, či Arduino privedie signál s vyšším napätím než je definované pre 5V logiku, prípadne pre logiku využívajúcu napätie 3.3V znamená to takmer určite ich zničenie. Riadiace jednotky naproti tomu PLC obsahuje obvody na oddelenie vstupov a na realizáciu výkonových výstupov, takže ak sa nedopatrením na vstup oddelený optočlenom dostane vyššie napätie, k poškodeniu mikrokontroléra nedôjde. Navyše v dokumentácii ku všetkým prototypovým „hobby“ doskám je ako jedna z prvých informácii uvedené upozornenie, že sa nehodia na nasadenie v scenároch, kde záleží na spoľahlivosti. Domácu automatizáciu v rámci koncepcie Smart Home v žiadnom prípade nie je možné považovať za scenár, kde by na spoľahlivosti nezáležalo, práve naopak. Ovládanie systémov ako je kúrenie, zabezpečenie, osvetlenie, ovládanie žalúzií, či strešných okien si vyžaduje maximálne spoľahlivý riadiaci systém. O priemyselnej automatizácii ani nehovoriac.
Na prvý pohľad sa môže cena PLC jednotiek zdať trochu vysoká, ale u odolných zariadení to už tak býva. V jednoduchých scenároch rôznych sekvenčných automatov je samozrejme možné namiesto PLC modulu použiť klasické prvky, napríklad časovače spínacie relé a podobne, ktoré majú rovnakú triedu odolnosti a spoľahlivosti a dajú sa inštalovať na DIN lištu. Ak si ale spočítate ich cenu, tak vo väčšine prípadov takto vytvorený automat vás vyjde drahšie než PLC a stratíte dve hlavné výhody: možnosť jednoduchej rekonfigurácie preprogramovaním a možnosť pripojenia k internetu. Napríklad PLC modul Siemens Logo! s ôsmimi vstupmi a štyrmi reléovými výstupmi, prípadne výstupmi spínanými tranzistormi, stojí okolo 130 eur. Navyše pomocou používateľského rozhrania, čiže tlačidiel a displeja môžete upravovať parametre fungovania ovládaného zariadenia.
Programovanie PLC
Programovanie PLC by sa dalo výstižne definovať ako prekreslenie blokovej schémy ovládacích obvodov do trochu inej podoby. V možnostiach, univerzálnosti a jednoduchosti programovania PLC na prvý pohľad za platformami typu ESP32, Raspbery, či Arduino zaostáva. Zatiaľ čo vývojové dosky je možné programovať voľne a pokročilejší vývojári využívajú možnosti prerušenia od externých signálov, nezávislé časovače, pokročilé asynchrónne programovanie a podobne, programovanie PLC je viac zviazané štruktúrou programového kódu.
Programová slučka obsahuje štyri základné bloky
- Skenovanie vstupov
- Spracovanie používateľského programu nastavuje len obrazy výstupov
- Nastavenie výstupov
- Réžia systému, komunikácia, časovače…
Typickou črtou PLC je periodické, čiže nespojité spracovanie programu. Čas otočky cyklu je podľa typu PLC 0.1 – 10 ms. Napríklad modul Siemens Logo! je schopný zachytiť signál s maximálnou frekvenciou 5 kHz.
V konečnom dôsledku, však prísna bloková štruktúra programu, ktorú migranti z iných platforiem vnímajú ako určité obmedzenie sa môže ukázať ako veľká výhoda. Striktné oddelenie programovej logiky od obsluhy vstupov a výstupov umožňuje jednoduchú migráciu na iný hardvér, prípadne ladenie na simulátore.
Programovanie PLC začína definovaním rozhraní medzi procesom a programom. Definovaním signálov priradíte konkrétne vstupy a výstupy.
Následne sa vytvorí program. Na jeho vytvorenie môžete použiť buď textové, alebo grafické jazyky, prípadne nástroje na sekvenčné úlohy
Textové jazyky majú dve úrovne:
- Instruction list IL (jazyk zoznamu inštrukcií ) analógia programovania v asembleri
- Structured text ST (štrukturovaný text) analógia vyšších programovacích jazykov
Grafické jazyky sa najčastejšie využívajú vo forme:
- Ladder diagram LD (jazyk kontaktových schém)
- Function block diagram FBD (jazyk funkčných blokov)
- Continuous chart CFC (voľne prepojované bloky)
Osvojenie princípu oddelenia programovej logiky od obsluhy vstupov a výstupov je veľmi užitočné aj pre amatérske konštrukcie a robotiku
Príklad: Robot jazdiaci po čiare
Ak využijete rovnakú filozofiu, aká platí pre programovanie PLC, nemusíte riešiť ako sa sníma či je robot na čiare, alebo mimo čiary stačí vedieť že sú k dispozícii dva snímače a každý z nich poskytuje dva stavy: stav 0 – snímač nie je na čiare, stav 1 – snímač je na čiare.
Klasický kód, ktorý by intuitívne napísal mierne pokročilý programátor by síce fungoval
if(stavLavySnimac() == 1) {//cierna if (stavPravySnimac() == 0) {//biela motorVlavo = 1; motorVpravo = 0; } else { ...
avšak pre zložitejšie úlohy je takéto riešenie neprehľadné a náročné na ladenie a prípadné úpravy.
V konečnom dôsledku je jednoduchšie a aj zrozumiteľnejšie riešenie s použitím pravdivostnej tabuľky popisujúcej všetky možné stavy
SL | SP | ML | MP | popis | |
1. | 0 | 0 | 1 | 1 | obidva snímače mimo čiary (čiara medzi nimi) obidva motory idú |
2. | 0 | 1 | 1 | 0 | pravý snímač na čiare – zatočiť doprava, ľavý motor ide, pravý stojí |
3. | 1 | 0 | 0 | 1 | ľavý snímač na čiare – zatočiť doľava, ľavý motor stojí, pravý ide |
4. | 1 | 1 | 0 | 0 | problém – zastavíme motory |
Z pravdivostnej tabuľky vyplýva, že stav ľavého motoru závisí len na ľavom snímači a stav pravého motoru len na pravom snímači
ML – !SL;
MP = !SP;
V článku sú použité materiály z prednášky Martina Lockera na akcii Malostranské Robodoupě.