Dosud se autoři tohoto seriálu zabývali nástrojem SFC. Jeho přínos spočívá v možnosti rozložit problém na posloupnost elementárních událostí, kterým odpovídají kroky a k nim přidružené akce. Samotný přechod je zde považován za bezvýznamnou, mžikovou událost, při které se nic neodehrává a není k ní přidružena žádná akce. V teorii konečných automatů tuto vlastnost vykazují automaty Mooreova typu. V praxi se ale vyskytují i problémy, pro jejichž popis jsou důležité právě přechody a jim přiřazené hodnoty výstupních či vnitřních proměnných nebo doprovodné akce. Takový model sekvenčního chování se nazývá konečný automat Mealyho typu.
Příklad 38: Rozpoznání směru pohybu osoby dvěma nepřekrývajícími se senzory PIR
Předpokládejme chodbu vybavenou dvojicí infračervených senzorů pohybu PIR. Zde není důležité, jakým způsobem ovládají osvětlení, ale jak lze jejich informaci využít k rozpoznání směru pohybu jedné osoby a k určení místa, kde chodbu opustila. Předpokládejme, že zorná pole obou senzorů se navzájem nepřekrývají (obr. 74a). Dále předpokládejme, že do chodby lze vstoupit jen na jejích koncích a že podél chodby neexistuje žádný prostor, kam by osoba mohla vstoupit nebo se z něj vynořit. Mlčky předpokládejme, že osoba chodbou projde bez dlouhých zastávek (aby ji senzory PIR stále „vnímaly“) a bez návratů (reverzací směru). Zóny Z0 a Z4 lze považovat za okraje chodby, kam senzor PIR již „nedohlédne“, ale především jsou prostorem mimo chodbu (např. předsíň, schodiště, vchod do místnosti, východ z domu), kam osoba mohla vstoupit nebo odkud se může na chodbě vynořit.
Řešení 1: Zorná pole obou senzorů vymezují v prostoru chodby pět pásem – zóny Z0 až Z4. Kladnému směru zde odpovídá pohyb vpravo, zápornému směru pohyb vlevo. Výskyt osoby v jedné ze zón nese informaci o její aktuální poloze, nikoliv o směru jejího pohybu. Teprve změna aktivity libovolného senzoru signalizuje pohyb osoby do sousední zóny. Principiální přechodový diagram, jako zjednodušený model sekvenčního vyhodnocení, je uveden na obr. 74b. K odpovídajícímu přechodu jsou přidruženy akce, které nesou informaci o směru pohybu – impulzní výstupní proměnné p, m při překročení hranic pásem a při opuštění chodby ještě proměnné vpravo, vlevo. Intervaly mezi impulzy p, m mohou být využity k výpočtu rychlosti pohybu po chodbě a nepřímo k identifikaci osoby nebo jejího stavu. Proměnné vpravo, vlevo lze využít k informaci o obsazenosti odpovídajících místností nebo bytu.
V zájmu zjednodušení jsou jednotlivé zóny a kroky konečného automatu zobrazeny stejnými symboly Z0 až Z4. Při první aktivaci je nastaven počáteční krok nevi, protože o situaci není nic známo, není registrována žádná osoba. V tomto kroku model setrvává, dokud se nějaká osoba nevyskytne v zorném poli jednoho ze senzorů a, b. Pak je uskutečněn přechod buď do kroku Z1 (při aktivaci senzoru a), nebo do Z3 při aktivaci senzoru b. Při přechodu z počátečního kroku není přesně znám směr pohybu ani odpovídající hodnoty výstupů – mohou být tedy nulové. Při předpokladu, že osoba na chodbu vstoupila na jednom z jejích konců s cílem ji celou projít, je možné směr pohybu odhadnout tak, že přechod do kroku Z1 je doprovázen nenulovou hodnotou výstupní proměnné p a při přechodu do Z3 je aktivován výstup m. Další vývoj je patrný z přechodového diagramu – jde o konečný automat Mealyho typu.
Řešení 2: V přechodovém diagramu z obr. 74b odpovídají kladnému směru přechody s akcemi, které generují impulzy p (jsou kresleny vlevo od kroků). V pravé části grafu jsou zakresleny přechody, které odpovídají zápornému směru pohybu a generují impulzy proměnné m. Zjednodušený model z obr. 74 b je ale dvojznačný. Z kroku Z1 při splnění podmínky NOT a AND NOT b vedou dva přechody (každý vyhodnocuje jiný směr pohybu), podobně z kroku Z3. Model je proto nepoužitelný. Korektní je teprve model z obr. 74c. Vychází z předpokladu, že osoba vstoupí na okraj chodby se záměrem ji celou projít až na opačný konec (nikoliv aby jen „poškádlila senzor PIR“) a že je vyloučena možnost, kdy by se osoba „vynořila odnikud“ v prostoru chodby. Přechodový graf je tvořen dvěma větvemi, jednou pro pohyb vpravo (s kroky P1, P2, P3) a druhou pro opačný směr (s kroky M1, M2, M3). I zde jsou impulzy p, m generovány i při přechodech z počátečního kroku nevi.
Řešení 3: Model z obr. 74c opět řeší jen zjednodušený případ, kdy celou chodbou prochází jediná osoba postupně oběma směry (ze začátku na konec a pak zase zpět). Obecnější situace, kdy chodbou mohou ještě postupně procházet osoby jedním směrem (s dostatečným odstupem – druhá vstoupí, až když první již prošla), je řešena v grafu na obr. 74d. Ani tento model není zcela obecný. Zjednodušení spočívá např. v tom, že nepředpokládá „váhající osobu“ a její možná zastavení (kdy ji senzor PIR přestane vnímat), návraty a změny pohybu v prostoru chodby. Všechny modely platí za předpokladu, že chodbou se pohybuje jediná osoba, popř. dvojice či hlouček osob v zákrytu, takže je senzory nerozliší. Bylo by sice možné snažit se graf zobecnit i pro více osob současně se pohybujících po chodbě. Dva senzory PIR a jejich uspořádání bez překrytí k tomu poskytuje příliš málo informací. Model by vykazoval příliš mnoho nejistot. Je účelné graf zobecnit tak, aby všechny neobvyklé situace směřovaly do společného kroku (např. nevi), ve kterém nejsou generovány žádné výstupní proměnné. Teprve při výskytu obvyklé situace by se obnovil obvyklý režim vyhodnocení.
Úloha 67: Doplňte konečný automat z obr. 74c
tak, aby (v mezích možností) rozpoznal krátké úseky reverzace směru „váhající osoby“ v prostoru chodby.
Úloha 68: Analyzujte chování konečného automat z obr. 74c a vyhodnoťte jeho chování, jdou--li po chodbě dvě osoby jedním směrem nebo v protisměru v různých odstupech.
Příklad 39: Rozpoznání směru pohybu osoby se dvěma překrývajícími se senzory PIR
Předpokládejme chodbu vybavenou dvojicí infračervených senzorů pohybu PIR, jejichž „zorná pole“ se navzájem překrývají (obr. 75a).
Řešení: Zorná pole obou senzorů opět vymezují v prostoru chodby pět pásem – zóny Z0 až Z4. Pohyb osoby podél chodby popisuje konečný automat, jehož přechodový diagram je na obr. 75b. Ten ale rozpoznává jen pohyb jedné osoby ze začátku chodby na její konec a zase zpět – neumí rozeznat opakovaný průchod dalších osob stejným směrem. To zvládne až automat podle obr. 75c. Rozmístění senzorů s překrývajícími se zornými poli poskytuje více informace a větší jistotu správného rozpoznání (dovoluje větší robustnost rozpoznávacího algoritmu). Konečný automat např. dokáže správně vyhodnotit i návraty a váhání osoby v prostoru chodby (krátké návraty s reverzací).
Úloha 69: Doplňte konečný automat z obr. 75b, c tak, aby rozpoznal situaci, kdy se v zóně Z2 osoba ztratí ze zorného pole obou senzorů (pravděpodobně upadla).
Úloha 70: Analyzujte chování konečného automat z obr. 75b, c a vyhodnoťte jeho chování, jdou-li po chodbě dvě osoby jedním směrem nebo v protisměru v různých odstupech.
Úloha 71: Pro trojici senzorů PIR s různým uspořádáním podle obr. 76 a, b, c navrhněte přechodové diagramy konečných automatů pro různé rozpoznatelné situace.
Příklad 40: Převod přechodového diagramu na graf SFC
Přechodový diagram z obr. 75c převeďte na rovnocenný graf SFC.
Řešení: Problém spočívá v tom, že konečný automat Mooreova typu, stejně tak i graf SFC, dokáže rozhodovat o větvení v dopředném směru (při přechodech do následujících stavů), ale nedokáže rozpoznat větvení ve zpětném směru (kterým přechodem byl aktivován aktuální krok). Problém lze vyřešit např. tím, že v místech přechodů se vytvoří pomocné kroky s „krátkou dobou života“ (ale minimálně na dobu jednoho cyklu programu). V nich se přechod zdrží a stane se krokem, ke kterému již lze přidružit odpovídající akci. Je to patrné z obr. 77 (pro přehlednost je vypuštěn krok nevi spolu s odpovídajícími přechody). Jména pomocných kroků jsou zde tvořena jako kombinace zdrojového a cílového kroku. Jako podmínky přechodů, které vycházejí z pomocných kroků, je zvolena logická jednička (booleovská konstanta TRUE). Je to možné za předpokladu, že při implementaci nástroje SFC je vyloučeno, aby se po realizaci jednoho přechodu okamžitě (ještě v témže cyklu programu) uskutečnil přechod následující. V opačném případě by bylo nutné uměle prodloužit „dobu života“ pomocných kroků, např. časovým zpožděním.
Příklad 41: Rozlišení směru pohybu u technických systémů
Podobný princip jako v příkladu 39 lze použít i v technice, např. při rozpoznání směru pohybu vozidel nebo vagonů a při jejich počítání, ale i při měření polohy a pohybu strojních zařízení. Vyhodnoťte směr a přírůstky úhlu natočení s využitím půlkruhové clonky z obr. 78a.
Řešení 1: Na obr. 78a je uveden příklad půlkruhové clonky na hřídeli, která periodicky zakrývá dvě fotobuňky, jež jsou proti sobě přesazeny o čtvrtinu obvodu kružnice. Při rovnoměrném otáčení jsou tak generovány dva periodické napěťové signály obdélníkového průběhu fázově posunuté o čtvrtinu periody. Podobného efektu lze dosáhnout i uspořádáním podle obr. 78b (děrovaný kotouč) nebo podle obr. 78c (děrované pravítko). V případě děrovaného kotouče nemusí být senzory umístěny tak, aby rozteč obou senzorů byla shodná s průměrem otvoru nebo mezery mezi nimi (jako na obr. 78b), ale mohou být umístěny ob jeden otvor, podobně jako na obr. 78c. Jako senzory nemusí být použity fotobuňky, mohou to být např. senzory přiblížení u ozubeného kola nebo hřebene.
Na obr. 79 jsou uvedeny časové průběhy obou signálů pro oba směry pohybu (proměnné a, b). Jejich kombinace definují kroky Z0 až Z3. Stavu z obr. 78a až 78c (oba senzory jsou viditelné – nezakryté) odpovídá krok Z2. Pohybu v kladném směru odpovídá periodická posloupnost hodnot proměnných a, b podle grafu v levé části obr. 79, zápornému směru pohybu odpovídá posloupnost hodnot podle grafu v pravé části obrázku. Logickým vyhodnocením lze získat sérii čtyř impulzů p (pro směr plus) nebo čtyř impulzů m (pro směr minus) v průběhu jedné periody. Na obr. 80 je je uveden přechodový diagram konečného automatu, který rozpoznává směr pohybu a jeho čtyři fáze. Na obr. 81 je jeho úplná verze. Kroky jsou zde uspořádány do kruhu. Při vyhodnocení pohybu je přípustná pouze změna jedné ze vstupních proměnných a, b. Tomu odpovídá přechod do jednoho ze sousedních stavů, podle směru pohybu (jako by se kruh s kroky natočil v odpovídajícím směru). Oproti obvykle kresleným přechodovým diagramům jsou zde uvedeny přechody, které odpovídají všem kombinacím hodnot podmínkových proměnných a, b – i těm, které nemění stav a žádné výstupy negenerují, jen „potvrzují“ setrvání v současném kroku („krátké smyčky“). Některé kombinace zdánlivě „nemohou nastat“, ale přesto se někdy vyskytnou v důsledku chyby (zde je to obvykle překročení povolené rychlosti, vada senzoru nebo rušení). Jim odpovídají přechody s příznaky chyby – zde chybu indikuje proměnná e = 1 v situaci, kdy se současně změnily hodnoty obou podmínkových proměnných a, b. Dále je na uvážení návrháře, do kterého kroku nasměruje přechody s chybovými příznaky. V uváděném případě se při chybě stav nemění, ale mohl by se uskutečnit např. přechod do kroku nevi nebo do protilehlého kroku (např. z kroku Z0 do Z2, ze Z1 do Z3 apod.) nebo do zvláštního kroku pro chybové stavy.
Příklad 42: Program rozlišení směru – kombinace hladin a hran
Z obr. 79 je zřejmé, že výstupní proměnné p a m mají charakter krátkých impulzů a vyskytují se v okamžicích hran (náběžných nebo sestupných) vstupních proměnných a, b. Lze je popsat logickými výrazy mezi ustálenými hodnotami proměnných a, b a impulzními proměnnými od jejich hran. Realizujte tento program v jazyce LD.
Řešení: Dvě varianty programu, který řeší zadání, jsou uvedeny na obr. 82. V první variantě (obr. 82a) jsou impulzy od náběžných a sestupných hran generovány funkčními bloky R_TRIG a F_TRIG, ve druhé (obr. 82b) jsou impulzy generovány automaticky. Navíc je zde uvedeno zjednodušené použití funkčního bloku obousměrného čítače CTUD, který čítá pulzy pro oba směry, a generuje tak výslednou polohu nebo natočení. Reálná situace by asi byla složitější – rozsah číselných hodnot čítače by patrně nepostačoval a bylo by zapotřebí zvětšit jeho rozsah kaskádováním. Dále je nutné upravit zobrazení záporných hodnot výsledku a zvolit podmínky pro nulování čítače.
Příklad 43: Program rozlišení směru – minulé a současné vzorky
Pro generování impulzů od hran logických proměnných jsou vyhodnocovány vzorky dvou časových úrovní – současné a minulé. Použijte je přímo ke generování impulzů o směru pohybu.
Řešení: Na obr. 83a, b, c jsou uvedeny K-mapy pro výstupní impulzní proměnné rozlišení směru (p, m) a proměnnou e, která indikuje chybu (současnou změnu dvou vstupních proměnných). Obr. 83d zobrazuje sdruženou K-mapu pro všechny tři proměnné. Symboly a0, b0 označují minulé vzorky a a1, b1 označují současné (aktuální) vzorky. Různými postupy lze z uvedených map získat různé formy ekvivalentních logických výrazů. Patrně nejblíže k minimální formě jsou výrazy:
p := (b0 XOR a1) AND (a0 XOR b0 XOR a1 XOR b1) ;
m := (a0 XOR b1) AND (a0 XOR b0 XOR a1 XOR b1) ;
e := (a0 XOR a1) AND NOT(a0 XOR b0 XOR a1 XOR b1) ;
a0 := a1 ;
b0 := b1 ;
Úspornější je tato forma výrazů:
spol := a0 XOR b0 XOR a1 XOR b1;
p := (b0 XOR a1) AND spol ;
m := (a0 XOR b1) AND spol ;
e := (a0 XOR a1) AND NOT spol ;
a0 := a1 ;
b0 := b1 ;
Uvedené logické výrazy lze chápat jako úseky programu v jazyce strukturovaného textu ST. Ve všech třech výrazech první varianty se vyskytuje výlučný součet (XOR) všech operandů a0 XOR b0 XOR a1 XOR b1, který je ve druhé variantě „vytknut před závorku“ formou pomocné proměnné spol. Po vyčíslení logických výrazů jsou aktualizovány hodnoty minulých vzorků – současný vzorek se v příštím programovém cyklu stane minulým. Na obr. 84 je ekvivalent druhé (úspornější) varianty programu v jazyku LD.
Úloha 72: Ověřte, že uvedený program odpovídá K-mapám z obr. 83.
Úloha 73: Podle map na obr. 83 vytvořte vlastní verze logických výrazů podle obvyklých postupů Booleovy algebry (s využitím operátorů AND, OR, NOT), pokuste se je minimalizovat a převést na program PLC. Porovnejte složitost svého nejlepšího řešení s výsledky, které poskytují operátory XOR.
Poznámka: Dvojice obdélníkových fázově posunutých průběhů jsou obvyklým typem výstupů senzorů polohy a pohybu (v oboru obráběcích strojů se mluví o odměřování). Problematikou se zabýval časopis Automa v dvojčísle 8-9/2013 na str. 56 až 57 (přehled trhu senzorů pro odměřování). Při měření polohy a pohybu na obráběcích a jiných pracovních strojích (např. na tvářecích a řezacích strojích, na robotech a manipulátorech, pilách, nůžkách, dopravních a manipulačních zařízeních) je ale nutné měřit s extrémním rozlišením při extrémních rychlostech pohybu. Zde již nelze k řešení použít uživatelský program PLC. Vyhodnocení pohybu pak řeší specializované moduly řídicích systémů CNC, moduly řízení servopohonů, popř. specializované moduly PLC (zde se obvykle mluví o oboru Motion Control – MC). I malé programovatelné automaty (např. Tecomat Foxtrot) jsou schopny vyhodnocovat pohyb a polohu průmyslových mechanismů, ovšem ne na úrovni uživatelského programu, ale prostřednictvím specializovaných rychlých vstupů, které jsou vyhodnocovány vnitřním systémovým programem (firmware).
Ladislav Šmejkal, Josef Černý
Obr. 74. Rozpoznání směru pohybu osoby dvěma nepřekrývajícími se senzory PIR k příkladu 38
a) situace – jako kladný směr (p) je označen pohyb ze zóny Z0 směrem k zóně Z4, b) principiální přechodový diagram, c) přechodový diagram bez dvojznačností pro pohyb jedné osoby na konec chodby a zpět, d) přechodový diagram pro situaci, kdy druhá osoba projde chodbou stejným směrem
Obr. 75. Rozpoznání směru pohybu osoby dvěma překrývajícími se senzory PIR k příkladu 39
a) situace – jako kladný směr (p) je označen pohyb ze zóny Z0 směrem k zóně Z4,
b) přechodový diagram pro pohyb jedné osoby na konec chodby a zpět, c) přechodový diagram pro situaci, kdy druhá osoba projde chodbou stejným směrem
Obr. 76. Situace pro rozpoznání směru pohybu osoby třemi senzory PIR (k úloze 71)
a) nepřerývají se, b) s jedním překrytím, c) s dvojnásobným překrytím; jako kladný směr (p) je označen pohyb ze zóny Z0 směrem k zóně Z6
Obr. 77. Graf SFC, ekvivalentní přechodovému diagramu na obr. 75c
Obr. 78. Příklady provedení jednoduchých senzorů rotačního nebo přímočarého pohybu
a) rotující clonka, b) clonka ve tvaru děrovaného kotouče, c) clonka ve tvaru děrovaného pravítka
Obr. 79. Průběhy proměnných při vyhodnocení pohybu – k příkladu 41
Obr. 80. Přechodový diagram konečného automatu pro vyhodnocení pohybu – k příkladu 41
Obr. 81. Úplný přechodový diagram, který obsahuje přechody pro všechny kombinace vstupních proměnných – i ty, které nemění stav (krátké smyčky), negenerují žádné výstupní proměnné nebo generují příznaky chyby (proměnná e)
Obr. 82. Program v LD, který řeší zadání příkladu 42 – dvě rovnocenné varianty
a) s použitím funkčních bloků R_TRIG a F_TRIG, b) s využitím automatického generování hran
Obr. 83. Karnaughovy mapy (K-mapy) pro generování výstupních proměnných při rozlišení směru pohybu
a) pro impulzy kladného směru p, b) pro záporný směr m, c) pro příznak chyby e, d) sdružená K-mapa pro všechny proměnné p, m, e
Obr. 84. Program v LD pro druhou variantu řešeni vyhodnoceni směru pohybu
Přechodové diagramy konečných automatů
Konečné automaty jsou používány jako matematický model sekvenčního chování různých mechanismů, strojů či automatizovaných celků, při zadávání požadavků na jejich řízení, obsluhy nebo technologických receptur. Jsou dobrým podkladem k preciznímu zadání programu PLC pro řízení a technickou diagnostiku. K popisu funkce se obvykle používají přechodové diagramy, též nazývané jako stavové grafy či stavové diagramy. Jejich symbolika je využívána při řešení příkladu 38 a dalších. Je určena pro „ruční kreslení“. Její výhodou je přehlednost, názorný popis a malé požadavky na zobrazovací plochu. Je odlišná od zásad nástroje SFC, který je určen pro automatické „kreslení“ přechodových diagramů programem vývojového systému a je přímo grafickou formou programu pro PLC. V přechodovém diagramu jsou kroky značeny kroužky nebo ovály, přechody spojnicemi mezi nimi – hranami v grafu.
V grafech konečných automatů Mealyho typu jsou podmínky přechodu a jim odpovídající akce uváděny vedle hran grafu ve formě zlomku, kde podmínka přechodu je před lomítkem a za lomítkem je akce přidružená k přechodu. Krokům není přiřazena žádná akce. Naproti tomu u grafů konečných automatů Mooreova typu jsou u hran uváděny jen podmínky přechodů a akce jsou přidruženy ke krokům. V zájmu přehlednosti jsou v přechodových diagramech k řešení příkladu 38 a dalších dodržovány zvyklosti Booleovy algebry: negace je značena jako pruh nad proměnnou, ve funkci operátoru OR je používán symbol součtu + a operátor AND je nahrazen symbolem násobení (tečka nebo nic). V textu je ale i nadále používána forma logických výrazů podle zásad jazyka strukturovaného textu (ST). V teorii konečných automatů se používá jiná terminologie a symbolika než při popisu nástroje SFC. Zatímco se u konečných automatů mluví o stavech, v terminologii SFC se ve stejném významu používá pojmenování krok a stavem je označována souhrnná aktivita celé sítě – aktivita všech kroků grafu. Zde se autoři rovněž přiklánějí k pojmenování krok.
Přechodové diagramy konečných automatů Mealyho i Mooreova typu jsou velmi názornou formu zobrazení jejich algoritmů. Jsou vhodné především pro počáteční fáze vývoje, pro rychlé ruční skici navrhovaných algoritmů. Lze je doporučit konstruktérům strojů nebo automatizovaných zařízení k popisu jejich funkce, pro precizní zadání programu PLC a pro komunikaci s programátorem. Ušetří se tak mnoho času a předejde se stresu při diskusích nad zadáním a při řešení případných sporů o chybné funkci, popř. při řešení reklamací a penále. Jsou vhodné i pro názorný popis funkce v dokumentaci programu nebo řízeného celku, ale i k popisu postupu doporučené obsluhy. Vytvoření grafu (sítě) podle zásad SFC je vhodné až v konečné fázi programování. Pro přechodové diagramy konečných automatů Mooreova typu jde jen o formální úpravu, většinou rutinního charakteru (v podstatě jen o překreslení podle zásad SFC). U automatů Mealyho typu je ale zapotřebí provést podstatnější změny struktury diagramu, obvykle přidat další kroky. Z teorie konečných automatů vyplývá, že automaty obou typů mají shodnou „algoritmickou sílu“ a jsou navzájem převoditelné.