PLC-AUTOMATIZACE - PLC - PŘERUŠENÍ Provoz webu zajišťuje:

www.hapesoft.cz

PŘERUŠENÍ (Interrupt)

Charakteristika

Př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.

Poznámka
Přerušení, která nemohou být zpracována z důvodu probíhajícího zpracování přerušení s vyšší prioritou nebo jsou sama přerušena zpracováním přerušení s vyšší prioritou, jsou ukládána do zásobníku přerušení, odkud jsou potom zpětně volána po dokončení 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é.

Obrázek 1
Časový průběh pro samostatné přerušení.

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í.

Obrázek 2
Časový průběh pro postupné přerušení.

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.

Obrázek 3
Časový průběh pro současné přerušení.

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.

Poznámka
Některé typy CPU dovolují definovat, jestli je možno zahájit rutinu přerušení po libovolné dokončené instrukci programu (na hraně instrukce) nebo přerušení může být provedeno až po zpracování segmentu (sítě) programu (na hraně segmentu).
Povolení zpracování přerušení až po dokončení programového bloku nemá smysl, protože v případě, kdy by program obsahoval pouze hlavní program, přerušení by se realizovalo až na konci programu, což by popíralo výhodu rychlé reakce. Taktéž, pokud by bylo možno přerušení zpracovat až po dokončení programového bloku vyjma přerušení samého.

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.

Hardwareové / procesní přerušení

Hardwareové 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.

Poznámka
Výčet přerušení nemusí být konečný a v systémech různých výrobců mohou mít jiné označení a jiné konkrétní funkce.

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, DPV2

DPVx 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 hardwareovou závadu ale i o chybu zpracování instrukcí v programu.

Poznámka
Výčet přerušení nemusí být konečný a v systémech různých výrobců mohou mít jiné označení a jiné konkrétní funkce.

PLC-AUTOMATIZACE - PLC - PŘERUŠENÍ
 
Publikovaný obsah je určen pouze pro individuální studium.
Není povolena distribuce, prodej, přetisk a použití textu a/nebo vyobrazení (úplný, dílčí a/nebo částečný), použití ke školení a/nebo výuce (hromadné, skupinové nebo zadávané), veřejné a/nebo skupinové prezentace a ani jiné formy šíření v hmotné a/nebo nehmotné podobě.