Aktuální vydání

celé číslo

04

2022

veletrh Amper 2022
celé číslo

Esperanto programátorů PLC: programování podle normy IEC/EN 61131-3 (část 17)

V minulé části seriálu (Automa 6/2013 na str. 38) byly popsány základní prvky prostředku SFC. Do tohoto dílu jsou zařazeny ilustrační příklady s řešením jednoduchých sekvenčních problémů z oboru techniky budov. Obdobné úlohy lze najít již vyřešené v podobě funkčních bloků nabízených dodavateli PLC. Například na stránkách www.tecomat.cz je volně dostupná knihovna BuildingLib, jejíž funkční bloky řeší typické úlohy z oboru techniky budov, např. schodišťový automat, ovladač žaluzií, termostaty, převodník čísla na pulzně šířkovou modulaci PWM. Knihovní bloky jsou komplexní a již ověřené, připravené k použití – ale jsou uzavřené, jejich řešení není viditelné. Zde uváděné příklady jsou sice zjednodušené, ale názorně ilustrují metodiku možných postupů při řešení podobných problémů s využitím SFC. 

Příklad 34: Rozlišení krátkého a dlouhého stisku

Vytvořte program s využitím SFC, který rozlišuje krátký a dlouhý stisk tlačítka – kratší nebo delší než 2 s.

Řešení: Zadání odpovídá program podle obr. 70. Oproti příkladům z předchozích částí seriálu je řešení zjednodušeno tak, že provádí pouze samotné rozlišení délky držení tlačítka, ale už se nezabývá ovládáním akčních členů (např. svítidel, popř. ventilátorů, pohonů) – to už lze snadno doplnit podle konkrétní situace a požadavků uživatele. Program generuje výstupy stisk (příchod tlačítka z klidového stavu), kratkydlouhy (rozpoznaná délka držení tlačítka). Z výchozího kroku k0 se po stisku tlačítka tl aktivuje krok k1. V něm je generován výstup stisk a je aktivována vnitřní proměnná limit ve formě impulzu délky 2 s. Aktivuje jej akce s kvalifikátorem SL, T #2s, která prodlouží příznak stavu k1.x (nastaví jeho paměť – set) a vygeneruje od něj impulz limit v délce 2 s. Další přechod se uskuteční až po uvolnění tlačítka tl – jestliže se tak stane v době trvání impulzu limit, aktivuje se krok k2 (který po dobu své aktivity generuje výstup kratky), jinak je aktivován krok k3 a generován výstup dlouhy. V obou těchto krocích jsou generovány zpožděné proměnné prodl_1prodl_2 (zde obě se zpožděním 1 s, v důsledku akce D, T#1s), které zajistí potřebnou dobu trvání výstupů a potlačí odezvu na případné opakované stisknutí tlačítka. Po této prodlevě je aktivován krok k4 a v případě, že nebylo opětně stisknuto tlačítko tl, je okamžitě aktivován klidový krok k0.

Příklad 35: Rozlišení jednoduchého a dvojitého stisku

Vytvořte program s využitím SFC, který rozlišuje jednoduchý a dvojitý stisk tlačítka tl v intervalu 3 s.

Řešení: Zadání odpovídá program podle obr. 71. Po prvním stisku tlačítka tl (z výchozího kroku k0) je aktivován krok k1. Jeho akce generuje výstup první a vnitřní impulzní proměnnou limit s dobou trvání 3 s. Další přechod se aktivuje s uvolněním tlačítka. Jestliže se tak stane po ukončení impulzu limit, je aktivován krok k7 s výstupem dlouhe a prodlevou prodl_3 v délce 1 s, po níž se aktivuje společný závěrečný krok k6. Bylo-li z kroku k1 tlačítko tl uvolněno a znovu stisknuto během limitu, jsou postupně aktivovány kroky k2 k3 – v k3 je generován výstup druhé. Další přechod se uskuteční s uvolněním tlačítka tl. Stihne-li se to ještě v limitu, je v kroku k4 generován výstup v_lim (trvání obou stisků bylo v limitu) – v opačném případě se uskuteční přechod do kroku k5, který generuje výstup po_lim (druhý impulz skončil po limitu). Po prodlevě 1 s (prodl_1, prodl_2, prodl_3) je aktivován závěrečný krok k6 a po něm (při klidném tlačítku) výchozí krok k0. Do kroku k5 směřuje i přechod z kroku k2 v případě, že podruhé bylo tlačítko stisknuto až po uběhnutí limitu.

Poznámka: Popsaný program řeší i zadání příkladu 34 – výstup dlouhy nese informaci o tom, že bylo jednou stisknuto tlačítko, a to po dobu delší, než je limit 3 s. Z ostatních výstupních proměnných lze logickým vyhodnocením odvodit, zda bylo tlačítko stisknuto jednou krátce, nebo dvakrát (a bylo uvolněno ještě v limitu, nebo až po něm).

Úloha 64: V předchozích částech seriálu vyhledejte příklady a zadání úloh, které se zabývaly rozpoznáním různých sekvencí stisků tlačítka a řešte je znovu s využitím prostředku SFC.

Příklad 36: Ovládání rolet a žaluzií s hlídáním časových limitů

Vytvořte program pro ovládání rolet, mříží, venkovních žaluzií a podobných dvoupolohových mechanismů. Kromě základních funkcí rozpoznejte ještě i typické chybové stavy (řešte diagnostiku).

Řešení: Příklad 33 (obr. 54) v patnácté části seriálu (květnovém čísle na str. 43 a 44) byl věnován podobné úloze, řešil ji ale velmi zjednodušeně. Na obr. 72 je uveden program obecnější varianty řešení. Vyhodnocuje časové limity (watch dog – „hlídací pes“) pro doby vykonání zadaných operací. Po překročení některého z limitů se uskuteční přechod do stavu, který odpovídá rozpoznané chybě a generuje chybové hlášení. Takto jsou řešeny základní diagnostické funkce.

Řešení předpokládá, že mechanismus je spouštěn v horní výchozí poloze. Jako počáteční je tedy zvolen krok hore. Program vyhodnocuje dvě vstupní proměnné od tlačítek (tl_dolu, tl_nahoru), od dvou koncových spínačů (k_hore, k_dole) a generuje dvě výstupní proměnné pro řízení pohonů (dolu, nahoru). Všechny mají zdroj nebo použití přímo v řízeném mechanismu. V chybových stavech jsou generovány diagnostické proměnné nerozjel_d, nerozjel_h (po odstartování dolů nebo nahoru zůstává stále sepnutý koncový spínač horní nebo dolní polohy – patrně problém související s tlačítkem, pohonem nebo s koncovým spínačem), nedojel_d, nedojel_h (po rozjezdu dolů nebo nahoru nedosáhl včas odpovídající krajní polohy – patrně chyba související s pohonem nebo s koncovým spínačem) a vypacil (bez požadavku na pohyb byl přerušen koncový spínač dolní polohy – patrně pokus o vypáčení, ale možná jen chyba koncového spínače nebo uvolněného spoje). Protože jde o mimořádné situace, nejsou výstupy chybových hlášení využity v místě ovládaného zařízení, a jsou jako alarmy indikovány zobrazovacími prostředky řídicího systému, popř. jsou komunikačním systémem předávány dále.

V kroku start_d je nastavena výstupní proměnná dolu (akcí S) a současně je spuštěno generování vnitřní proměnné Wstart_d s náběhem zpožděným o 1 s (akcí D, T#1s). Je-li do té doby rozpojen koncový spínač k_hore, znamená to, že se pohon rozjel a je aktivován krok jede_d, v opačném případě je po uběhnutí doby prodlevy aktivován krok Err_1, který generuje příznak chyby nerozjel_d. Podobný mechanismus pro zjištění překročených časových limitů (watch dog) je využit i v ostatních situa­cích. Chybové stavy (kroky Err_1 Err_5) jsou ve schématu kresleny jako „bezvýchodné“ a nemají pokračování v dalších krocích. Předpokládá se, že odpovídající chyby mají příčinu „ve hmotě“ (v hardwaru, např. v pohonu, koncovém spínači, uvolněném přívodu, popř. v páčidle narušitele) a nelze je automaticky odstranit a vrátit se do běžného provozního stavu. Je třeba přivolat člověka, který situaci posoudí a zařídí nápravu. Po opravě a uvedení do výchozího stavu (do horní polohy) je z centrálního pracoviště aktivován program z počátečního kroku hore.

Poznámka: Zde byly pro nastavení výstupních proměnných použity příkazy akcí typu S (set, nastavení paměti) a k jejich vynulování akce R (reset, vynulování paměti). Proměnná nabývá jedničkové (pravdivé) hodnoty od prvního nastavení akcí S až do prvního výskytu akce R – a to i přes několik kroků, jejichž akcemi není „oslovena“. Pro každou takto nastavovanou proměnnou je ale nutné pamatovat na to, že po každé akci S musí někdy následovat zakončovací akce R (třeba i několik akcí R, pro rozvětvený program). Rovnocenně lze ale výstupní proměnné ovládat akcí typu N (not stored), který oslovenou proměnnou rovněž nastaví do jedničkové hodnoty, ale jen na dobu aktivace odpovídajícího kroku (jedničkové hodnoty jeho příznaku x), v ostatních případech se proměnná vynuluje. Je-li tedy třeba zachovat jedničkovou hodnotu proměnné po dobu několika po sobě jdoucích kroků, je nutné v každém kroku zopakovat akci typu N pro tuto proměnnou. Každá z uvedených zásad má své výhody a nevýhody. Používání akce N je sice graficky objemnější (vyžaduje větší plochu), ale na první pohled je viditelné, kdy je která proměnná jedničková nebo nulová. Při používání akcí typu S, R hrozí riziko nedůslednosti – že někdy uživatel opomene nastavenou proměnnou vynulovat. Oba přístupy lze podle potřeby navzájem kombinovat. 

Příklad 37: Ovládání rolet s možností přerušení a reverzace pohybu

Vytvořte program pro ovládání rolet a podobných dvoupolohových mechanismů s možností zastavení a reverzace pohybu. Mechanismus se ovládá podobně jako v příkladu 36 dvěma vstupními proměnnými od tlačítek (tl_dolu, tl_nahoru), od dvou koncových spínačů (k_hore, k_dole) a generuje dvě výstupní proměnné pro řízení pohonů (dolu, nahoru). Jestliže je běhen pohybu stisknuto kterékoliv z tlačítek tl_dolu, tl_nahoru, je pohyb zastaven a po odeznění nastavené časové prodlevy lze mechanismus uvést do pohybu opětovným stiskem libovolného tlačítka (odpovídajícím směrem). Navíc je oproti příkladu 36 požadováno, aby mechanismus mohl být ovládán z libovolné výchozí polohy (horní, dolní nebo z mezipolohy).

Řešení: Program v SFC je uveden na obr. 73. Výchozím je zde stav nevi – předpokládá se neznalost skutečné polohy mechanismu. Pohyb je zastaven a je aktivována vnitřní proměnná časové prodlevy 1 s pockej. Při sepnutém koncovém spínači k_dole nebo k_hore se uskuteční přechod do odpovídajícího kroku dole nebo hore, jinak se po časové prodlevě pockej uskuteční přechod do kroku vy­ckal. Ten je určen pro čekání na stisk některého z tlačítek tl_dolu, tl_nahoru, kterými se bude aktivovat pohyb do některé z krajních poloh. Je-li při pohybu dolu, nahoru stisknuto některé tlačítko (tl_dolu OR tl_nahoru), uskuteční se přechod do čekacího kroku stop, ve kterém se pohyb zastaví, a po časové prodlevě (náběhu proměnné revers) je po stisku tlačítka opět možné aktivovat pohyb odpovídajícím směrem. Jestliže při pohybu vyprší časová prodleva Wdolu nebo Wnahoru, je aktivován krok Err_1 nebo Err_2 a nastaveno odpovídající chybové hlášení nedojel_d nebo nedojel_h.

Úloha 65: Spojte zadání příkladů 36 a 37 do jednoho a vytvořte program pro komplexní ovládání dvoupolohových mechanismů.

Úloha 66: Seznamte se s funkčními bloky z knihovny funkčních bloků BuildingLib pro techniku budov, která je volně dostupná na www.tecomat.cz (např. jednotlačítkový stmívač, schodišťový automat se signalizací před vypnutím, schodišťový automat se stmíváním, ovladač roletových žaluzií), a vytvořte podle zadání své vlastní rovnocenné řešení, popř. vytvořte vlastní alternativy zadání obdobných problémů a vyřešte je. Realizujte jejich účelné zjednodušení nebo zobecnění. Podle možností realizujte ekvivalenty funkčních bloků z knihoven jiných výrobců PLC. 

Ladislav Šmejkal, Josef Černý

Obr. 70. Sekvenční graf SFC pro rozpoznání krátkého a dlouhého stisku tlačítka (k příkladu 34)

Obr. 71. Sekvenční graf SFC pro rozpoznání jednoduchého a dvojitého stisku tlačítka (k příkladu 35)

Obr. 72. Sekvenční graf pro řízení rolet a žaluzií podle příkladu 36

Obr. 73. Sekvenční graf pro řízení rolet a žaluzií podle příkladu 37