PLC - Programovatelné logické automaty | ||
PLC-AUTOMATIZACE - PLC - PŘERUŠENÍ | Provoz webu zajišťuje: | ||||||||||
PŘERUŠENÍ (Interrupt)CharakteristikaPřerušení je takový stav v systému PLC, kdy vznikne situace, která vyžaduje provedení okamžité nebo žádané reakce na tento stav. Konkrétní možnosti zpracování a typy dostupných přerušení jsou uváděny v popisu systému konkrétního CPU. |
|||||||||||
Podmínky pro realizaci přerušeníSchopnost zpracovat přerušeníNe všechny CPU v řadě různých PLC nemusí umožňovat zpracování přerušení, tedy je potřeba zvolit vhodné CPU, které je systémově vybaveno pro zpracování přerušení. Obecně, zpracování přerušení musí být v PLC povoleno, události musí být přiřazena obslužná rutina a musí být stanovena priorita přerušení. Zásobník přerušeníPočet zpracovávaných přerušení je u různých PLC různý a závisí na velikosti zásobníku přerušení, do kterého se ukládají příchozí požadavky na přerušení. Jednoduché CPU poskytují možnost zpracování 2-4 přerušení, střední CPU 8 přerušení a výkonné CPU mohou zpracovat až 16 přerušení. K tomu je potřeba vzít v úvahu hloubku vnoření programu v okamžiku zpracování přerušení pokud nemá systém CPU oddělený zásobník hloubky vnoření právě pro přerušení. Priorita přerušeníKaždé přerušení má přiřazenu určitou prioritu s kterou se přerušení zpracuje v případě, že jednom konkrétním okamžiku dojde k výskytu více požadavků na přerušení. Jako první se zpracuje přerušení s nejvyšší prioritou, obvykle označována jako 0 (nula, tedy nesnese žádného odkladu). Ostatní přerušení s nižší prioritou jsou zpracována až po dokončení zpracování přerušení s vyšší prioritou. Pokud již probíhá zpracování nějakého přerušení, může být toto samo přerušeno požadavkem zpracování přerušení s vyšší prioritou, přerušení s nižší prioritou jsou obsloužena nebo dokončena po dokončení zpracování přerušení s vyšší prioritou.
Zpracování přerušeníZpracování přerušení má na starosti systém CPU, který zpracovává požadavky na přerušení od různých zdrojů a podle pořadí (více přerušení se stejnou prioritou) a nebo podle priority vyvolává zpracování obslužných rutin. Samostatné přerušeníJednoduchý případ samostatných přerušení přerušení je zobrazen na obrázku 1, kdy je při přijmutí požadavku přerušení přerušeno zpracování hlavního programu a nebo podprogramu. Následně je vyvolána obsluha přerušení INT 1 nebo INT 2, podle zdroje požadavku přerušení ... procesní, uživatelské, diagnostické.
Pokud se požadavky na přerušení vzájemně nepřekrývají jsou přerušení zpracovány v pořadí, v jakém vznikly. Po zpracování přerušení se činnosti CPU vrátí ke zpracování hlavního programu, konkrétně za poslední instrukci, která ještě byla zpracována. Postupné přerušeníPříklad postupného zpracování přerušení je zobrazen na obrázku 2. V podstatě nezáleží na tom, je-li zpracováván hlavní program nebo podprogram. Při přijetí požadavku přerušení je vyvolána obslužná rutina INT 1, protože požadavek na toto přerušení byl přijat jako první.
V době zpracování přerušení INT 1 je ale přijat požadavek přerušení s vyšší prioritou, INT 0. Zpracování přerušení INT 1 je samo přerušeno a je vyvolána rutina pro obsluhu přerušení INT 0, které má vyšší prioritu. Po dokončení INT 0 je zpracování předáno k dokončení rutiny přerušení INT 1 a po jejím dokončení zpět programu, respektive podprogramu. Současné přerušeníSoučasné přerušení je zobrazeno na obrázku 3. Tento příklad ukazuje řešení situace, kdy se v témž okamžiku vyskytnou dva nebo více požadavků na přerušení ale s různou prioritou.
Zpracování hlavního programu nebo podprogramu je přerušeno a řízení je předáno rutině, která obsluhuje přerušení s vyšší prioritou, konkrétně INT 0. Teprve po dokončení obsluhy přerušení s vyšší prioritou je řízení předáno rutině pro obsluhu přerušení s nižší prioritou INT 1. Po jejím dokončení se zpracování vrátí k hlavnímu programu, respektive podprogramu.
Rutina obsluhy přerušeníRutina obsluhy libovolného přerušení by měla být co možná nejkratší a nejjednodušší. Žádné zpětné skoky, žádné cykly, žádné nadbytečné volání podprogramů z přerušení. Pokud je rutina obsluhy přerušení zbytečně dlouhá, může dojít k situaci, kdy by nastala stejná událost, která by požadovala vyvolání již prováděné rutiny obsluhy přerušení. Rekurzivní volání těchto rutin není povoleno (na rozdíl od podprogramů) a tento stav skončí chybou, tj. STOP stavem CPU. Taktéž může dojít k přetížení systému příliš častým voláním přerušení, byť různých priorit, kdy systém tuto zátěž již nestačí zpracovat nebo dojde k nadměrnému prodloužení doby cyklu, obojí může mít za následek STOP stav CPU. Zákaz přerušeníZákaz přerušení zdánlivě popírá význam a důvody použití přerušení. Mohou však nastat případy, kdy se zpracovává úsek programu, například výpočet hodnoty, která může být v přerušení použita a nebo přerušení může naopak změnit hodnoty proměnných použitých pro výpočet. V takovém případě by byl výsledek výpočtu různý podle toho, proběhlo-li přerušení či nikoliv. Pro takový případ je možno reakci na přerušení potlačit (odložit), eventuelně upravit používání proměnných tak, aby k této situaci nedošlo.
|
|||||||||||
Typy přerušeníUživatelská přerušeníUživatelské přerušení je takové, které vzniká na základě toho, že jej programátor nějakým způsobem nadefinuje, tedy kdy a za jakých podmínek může vzniknout. Reakcí na toto přerušení je volání odpovídajícího reakčního organizačního bloku. Hardwarové / procesní přerušeníHardwarové přerušení reaguje na události procesu, detekované hardwarem / periferiemi PLC. Například na změnu stavu signálu digitálního signálu, překročení limitu analogové hodnoty, dosažení požadovaného počtu impulsů HW čítače a podobně. Pro realizaci tohoto přerušení musí být periferie schopné generovat požadavek přerušení při konkrétní události. Cyklické přerušeníCyklické přerušení je províděno v pravidelném cyklu, periodě, která je mu přidělena, obecně přerušení s kratší periodou mají vyšší prioritu a naopak, jinak by nemuselo dojít obsloužení požadavků s kratší periodou požadavku. Kalendářní přerušeníKalendářní přerušení umožňuje volání konkrétní rutiny prvně od nastaveného prvního datumu a času a díle opakovaně v intervalu minut, hodin, dnů, měsíců, roků. Synchronní cyklické přerušeníSynchronní přerušení se provádí synchronně v konstantní cyklické periodě. Používá se pro obsluhu decentrálních periferií připojených na síti PROFIBUS-DP nebo PROFINET IO v izochronním módu přístupu k periferiím. Časově zpožděné přerušeníČasově zpožděné přerušení umožňuje provést "odložení" zpracování části programu od okamžiku přijetí požadavku o nastavenou dobu.
|
|||||||||||
Systémová přerušeníSystémová přerušení jsou generována na základě vzniku systémové události, například chyby, požadavku na diagnostiku a pod. Tato přerušení jsou definována, kdy vzniknou, při jaké události a programátor má možnost tato přerušení povolit nebo zakázat a zvolit vhodnou reakci na konkrétní příčinu. Zpravidla, pokud není definována reakce na vznik chybového stavu reakčním organizačním blokem, přejde PLC do stavu STOP, tedy do bezpečného stavu, kdy vzniklá chyba nemůže ovlivnit řízený proces v tom smyslu, že by se zpracovávaly například neplatné hodnoty měření nebo by nebylo možno vlivem závady periferie ovládat část zařízení. Přerušení DPV0, DPV1, DPV2DPVx přerušení jsou generována podřazenými částmi systému (slave), decentrálními periferiemi (proto DP) směrem k nadřazenému CPU (master) a požaduje, aby byla v CPU provedena rutina obsluhy přerušení, např. diagnostiky. Charakter přerušení a zpracování je různý podle verze (proto V0, V1, V2). Asynchronní chybové přerušeníAsynchronní chybové přerušení reaguje na vznik chybové události, například požadavku diagnostiky, chyby programu a pod. Diagnostické přerušeníDiagnostické přerušení je generováno nějakou částí systému PLC, pokud tato část zjistí provozní anomálii, tedy vyžaduje diagnostiku. Může se jednat nejen o hardwarovou závadu ale i o chybu zpracování instrukcí v programu.
|
|||||||||||
|
|||||||||||
PLC-AUTOMATIZACE - PLC - PŘERUŠENÍ |
|
|