Aktuální vydání

celé číslo

06

2019

Počítačová podpora vývoje a výroby, software pro řízení údržby 

celé číslo

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

V této části seriálu pokračuje řešení složitějších sekvenčních úloh, které využívají funkční bloky čítačů a časovačů. V závěru je uvedena i základní úloha řešená s využitím metodického aparátu konečných automatů a systematických prostředků sekvenčního programování (SFC) podle normy IEC/EN 61131-3. Dosud byla respektována zásada, že všechny výstupní a vnitřní proměnné mají unikátní jména, aby nemohly být ovlivňovány z jiných míst programu. Lze ale předpokládat, že čtenáři příklady ověřují jednotlivě a nespojují je do jednoho dlouhého programu. Proto (v zájmu přehlednosti výkladu) není nadále zachovávána zásada unikátních jmen proměnných.

Příklad 30: Jednoduchý a dvojitý stisk s využitím CTU

Příklady 28 a 29 (viz Automa 4/2013, str. 39) řešte s využitím standardního funkčního bloku čítače CTU. Při jednoduchém stisku tlačítka T1 se má svítidlo aktivovat na kratší dobu (např. na 3 min) a při opakovaném stisku na delší dobu (např. na 10 min).

Řešení 1: Zadání odpovídá program v LD podle obr. 48. Na rozdíl od předchozích příkladů je zde využit standardní funkční blok čítače nahoru, CTU (Counter Up). S prvním stiskem tlačítka T1 se aktivuje první impulzní časovač TP (casovac1), který generuje kratší impulz pro rozsvícení svítidla (zde v trvá­ní 3 min). Stav čítače se zvětší na hodnotu 1. Druhý stisk tlačítka T1 zvýší stav čítače na hodnotu 2, která je shodná s jeho předvolbou. Výstup Q se tedy změní na hodnotu 1 (true), nastaví proměnnou druhy a aktivuje druhý časovač TP, který generuje delší impulz (zde s dobou trvání 10 min). Výstup čítače je přiveden na jeho resetovací vstup R, ale uplatní se až v dalším výpočetním cyklu a uvede čítač zpět do výchozího stavu. Proměnná druhy se vynuluje s uvolněním (sestupnou hranou) druhého stisku tlačítka T1. K resetu časovače dojde i po skončení krátkého impulzu (NOT sviti), který následoval po ojedinělém stisku tlačítka – provede se i po odeznění delšího impulzu, ale v té situaci je čítač již resetován a jeho stav to již neovlivní.

Řešení 2: V předchozím řešení nebyla kontrolována délka intervalu mezi dvěma stisky tlačítka T1 – s nevyřčeným předpokladem, že oba stisky budou následovat „dostatečně brzy po sobě“. Opožděný druhý stisk může mít za následek nanejvýš prodloužení prvního (krátkého) impulzu o aktivovaný druhý (delší) impulz. Kdyby se druhý stisk uskutečnil až po odeznění prvního impulzu, zvýší stav již vynulovaného čítače na hodnotu 1, jako by šlo o stav po novém začátku. Tento nedostatek odstraňuje řešení podle programu na obr. 49. První impulzní časovač odstup je aktivován prvním stiskem tlačítka T1. Generuje impulz (zde 2,5 s), během kterého je respektován druhý stisk tlačítka. Ten sice aktivuje výstup čítače Q a pomocnou proměnnou druhy, která vzápětí způsobí reset časovače a vynuluje sama sebe, ale časovač druhého (dlouhého) impulzu je aktivován pouze za předpokladu, že se tak stalo po dobu trvání proměnné interval (s podmínkou druhy AND interval). Čítač je také resetován v případě, že odezní první (kratší) impulz, aniž po něm následuje druhý stisk tlačítka.

Poznámka: Každá proměnná, která byla nastavena příkazem SET, se stává výstupem paměťové funkce typu SR nebo RS a musí být vyřešeno i její nastavení do opačného stavu (vynulování) – příkazem RESET nebo prostým zápisem. V uváděném případě je vynulování proměnné druhy způsobeno (v obou předchozích variantách řešení) resetováním s podmínkou součinu sestupné hrany proměnné T1 (F_TRIG) a proměnné druhy.

Řešení 3: Program z předchozího řešení lze zjednodušit s využitím skutečnosti, že výstup Q čítače CTU si svou jedničkovou hodnotu pamatuje, pokud jeho stav je shodný s nastavenou předvolbou (viz obr. 50). Změna oproti předchozímu řešení je jen ve způsobu nastavení proměnné druhy – jen kopíruje výstup čítače (neprovádí SET). V současném cyklu programu stačí ještě aktivovat časovač druhého (dlouhého) impulzu a v následujícím cyklu se automaticky vynuluje v důsledku resetu čítače.

Úloha 62: Vytvořte program pro modifikované zadání, ve kterém je požadováno, aby druhý stisk tlačítka T1 způsobil trvalou aktivaci svítidla svit.

Jakkoliv se ovládání svítidla zdá být jednoduché, z dosavadních příkladů je zřejmé, že tomu tak není. Stejný požadavek lze řešit různými variantami programu – s identickou funkcí nebo s drobnými odlišnostmi v chování. Dále mají různí uživatelé odlišné představy o stejné funkci. Jen v příkladech 28 až 30 byly řešeny různé varianty obdobné úlohy ovládání svítidla pro jednoduchý a dvojitý stisk tlačítka (a bylo by možné řešit další varianty, příkladem je úloha 62). Všechny dosavadní příklady obsahovaly předpoklad, že bezprostředně po prvním stisku tlačítka se svítidlo aktivuje krátkodobě, zatímco při opakovaném stisku se rozsvítí na delší dobu, popř. natrvalo. To odpovídá situaci, kdy jednoduchým stiskem (jednodušší akcí) je aktivováno jen krátkodobé osvětlení, např. „přisvícení“ pro všeobecnou orientaci, nasvícení prostoru pro jeho překonání k dalšímu vypínači (např. na chodbě nebo na schodišti) nebo pro časově omezenou aktivitu. Dvojitý stisk (složitější akce) je pak využíván k zadání požadavku na trvalé nebo dlouhodobé osvětlení. Trvalé rozsvícení v sobě skrývá riziko, že uživatel zapomene zhasnout. Proto je výhodnější časově omezený svit po přiměřeně dlouhou dobu (třeba i desítek minut nebo hodin).

Lze si ale představit i opačný požadavek. Vychází z logiky, že dlouhodobé (trvalé) osvětlení bývá požadováno častěji a je přirozenější, více odpovídá dosavadním zvyklostem u tradičně řešené instalace, více vyhovuje starším obyvatelům a hostům – mělo by tedy být aktivováno jednodušší akcí (prvním stiskem). Krátkodobé osvětlení bývá méně frekventované, takže je k jeho aktivaci vhodná složitější akce – opakovaný stisk.

Příklad 31: Je požadováno, aby jednoduchým stiskem bylo aktivováno trvalé osvětlení a opakovaným stiskem jen krátkodobé osvětlení.

Řešení 1: Zadání odpovídá programu z obr. 51. Prvním stiskem tlačítka T1 je aktivováno trvalé osvětlení (nastavena paměť proměnné svit), které je přerušeno druhým stiskem (po libovolně dlouhé době) – ten současně aktivuje impulzní časovač, který generuje impulz pro krátkodobé osvětlení. Při požadavku na zhasnutí lze použít opačnou polohu vypínače (pokud existuje, zde T1_dolni), jinak je možné osvětlení zhasnout druhým stiskem tlačítka, ale až po odeznění krátkého impulzu.

Řešení 2: Předchozí řešení nerespektovalo časový odstup mezi dvěma stisky. Program z obr. 52 je obecnější. První stisk tlačítka T1 rovněž aktivuje trvalý svit, který je přerušen druhým stiskem stejného tlačítka. První stisk současně aktivuje impulzní časovač, který odměřuje časový odstup mezi stisky (zde 2,5 s). Je-li tlačítko T1 podruhé stisknuto s krátkým odstupem po prvním (současně s proměnnou interval), je aktivován impulzní časovač, který odměří dobu krátkého osvětlení. Trvalé osvětlení se tedy zhasne druhým stiskem tlačítka T1. Jestliže druhý stisk následuje bezprostředně po prvním, je chápán jako požadavek na aktivaci krátké doby osvětlení. Pozdější stisk je chápán jako požadavek na okamžité zhasnutí.

Příklad 32: Nyní je požadováno, aby jednoduchým stiskem tlačítka T1 bylo aktivováno dlouhodobé impulzní osvětlení (např. 30 min) a
druhým stiskem, který po něm následuje s odstupem do 2,5 s, bylo svítidlo aktivováno krátkodobě (např. na 3 min).

Řešení: Zadání vyhovuje program podle obr. 53. První stisk tlačítka aktivuje impulzní časovač, který určuje časový odstup mezi dvěma stisky tlačítka (odstup), a současně impulzní časovač pro impulz dlouhodobého osvětlení (s proměnnou dlouze). Výstup časovače do_dvou aktivuje výstup druhý. Jestliže se druhý stisk uskuteční během trvání proměnné interval, bude ještě aktivován impulzní časovač pro krátkodobé osvětlení s výstupní proměnnou kratce. Aktivace svítidla svit je omezena na dobu krátkého impulzu, je-li aktivován, jinak na dobu dlouhého impulzu dlouze. Pokud ke druhému stisku dojde po skončení zadaného odstupu (interval), je svítidlo zhasnuto.

Systematický popis sekvenčních úloh

„Již dost bylo příkladů na vyhodnocení jednoho tlačítka.“ Úlohy čítání a časování budou probírány ještě později. Nyní bude text věnován metodice popisu složitějších sekvenčních úloh. Názorný a výkonný aparát k tomu poskytuje teorie konečných automatů a Petriho sítí. Z obou teorií vychází grafický programovací prostředek s názvem Grafcet (zavedený francouzskou firmou Telemechanique). Později byly vytvořeny jeho různé mutace pro programování PLC. Výsledkem jejich unifikace je prostředek sekvenčního programování SFC (Sequential Function Chart), který je zahrnut do normy IEC EN 61131-3.
Grafcet a SFC nejsou totožné – Grafcet je obecnější, SFC je výsledkem kompromisu, který vznikl při vytváření normy. Zde půjde jen o základní myšlenku obou prostředků, která bude vysvětlena na nejjednodušších příkladech.

Příklad 33: Popište nejjednodušší variantu postupu ovládání venkovních žaluzií v domě. Podobným postupem jsou ovládána jiná elektromechanická zařízení se dvěma stabilními stavy (např. rolety, mříže, markýzy, dveře, vrata, okna apod.). Předpokládejme ovládání tlačítky dolu, nahoru a generování výstupů pro pohon směrem stahuj vytahuj. Obě krajní polohy jsou indikovány koncovými spínači nahore a dole.

Řešení: Nejjednodušší postup je popsán přechodovým grafem na obr. 54, který lze slovně interpretovat takto: výchozí krok 0 je klidový, všechny výstupy jsou nulové. Při stisku tlačítka dolu se aktivuje krok 1, který odpovídá řízení pohybu směrem dolů. V něm je výstup stahuj jedničkový a výstup vytahuj zůstává nulový. Dosažení dolní mezní polohy je indikováno koncovým spínačem dole a uskuteční se přechod do kroku 2, … atd. Takto lze jednoduše a názorně slovně interpretovat i velmi složité sekvenční grafy.

Základní prvky SFC

Grafická podoba sekvenčního postupu, vytvořená prostředky SFC nebo Grafcet, je označována jako přechodový diagram, přechodový graf nebo též stavový diagram. Obdélníkové značky jsou symboly pro kroky sekvenčního algoritmu (používá se i pojmenování stavy, podle zvyklostí v teorii konečných automatů). Odpovídá jim situace, která je po určitou dobu neměnná (setrvání v kroku). Dvojitá obdélníková značka (zde první nahoře) označuje počáteční krok nebo též iniciální stav, v němž začíná popisovaný postup. Uvnitř značky je vepsáno jméno kroku, které je kódovým znakem kroku, obvykle jeho pořadovým číslem. Vedle značky jsou uvedeny aktivity odpovídající setrvání v kroku – zde jsou uvedeny pouze hodnoty odpovídajících výstupů. Mohou tam být uvedeny i další aktivity, časové závislosti – obvykle zvláštní symbolikou nebo programem ve zvoleném jazyce, popř. přechodovým grafem nižší úrovně (podgrafem, vnořeným grafem). Spojnice mezi kroky jsou označovány jako hrany. Vodorovné čárky, kterými jsou přeškrtnuty, značí přechody (transitions). Vedle značky přechodu je uvedena podmínka přechodu. Je to dvouhodnotová proměnná, která může být jednoduchou proměnnou, logickým výrazem či programem ve zvoleném jazyce po­dle normy. Aktivní stav je při interpretaci grafu označován hvězdičkou. Přechod z předchozího kroku do následujícího se uskuteční, jestliže vychází z aktivního kroku a současně je splněna podmínka přechodu. Při této jednorázové události se aktivita „přelije“, „přeskočí“ z výchozího kroku do následného – výchozí stav přestane být aktivní a aktivita je předána následnému stavu.

Prozatím výklad zůstává u jednoduchých algoritmů, jejich přechodové grafy nejsou větvené, obvykle mají tvar přímé linie (která začíná v počátečním kroku a končí v koncovém kroku) nebo smyčky, jejíž koncový stav pokračuje v počátečním stavu.

Představení druhého autora

Počínaje tímto pokračováním je seriál společným dílem dvou autorů. Novým spoluautorem je Josef Černý. Je mu 21 let a studuje Fakultu dopravní ČVUT v Praze, studijní projekt Automatizace a technická diagnostika v dopravě. 

Ladislav Šmejkal, Josef Černý

Obr. 48. Využití časovače CTU k rozlišení jednoduchého a dvojitého stisku (k řešení 1 příkladu 30)

Obr. 49. K řešení 2 příkladu 30

Obr. 50. K řešení 3 příkladu 30

Obr. 51. K řešení 1 příkladu 31

Obr. 52. K řešení 2 příkladu 31

Obr. 53. K řešení příkladu 32

Obr. 54. Sekvenční diagram ke zjednodušenému postupu ovládání venkovních žaluzií (k řešení příkladu 33)