Pokročilé definování úloh kontroléru

Patron Neuron Gate Unipi 1.1 Axon

Systém Mervis umožňuje definovat úlohy, které má kontrolér (RT) vykonávat. Úloha je definice podmínek pro spuštění vybraného, neboli mapovaného programu, či více různých programů ve stanoveném pořadí.

Ve zjednodušeném módu sestavy je vždy definována jedna úloha, která opakovaně vykonává program main.program.fbd a není možné toto nastavení změnit. Pokud vznikne potřeba mít více kontrolerů v jedné sestavě, spouštět více různých programů, nebo spuštění některého programu podmínit, je nutné mít sestavu v plném módu.


V tomto návodu je popsáno, jak a kde úlohy definovat, jaké existují kategorie a typy úloh, vč. toho, jak optimalizovat vykonávání programu, ošetřit a zaznamenat chybové stavy, popř. i automatickou opravu.

Dvojklikem na název regulátoru v levém panelu sestavy se zobrazí seznam definovaných úloh s jejich vlastnostmi.

Seznam úloh regulátoru ve výchozím stavu (založení ve Zjednodušeném módu) vypadá takto:


Úlohy mají následující vlastnosti:

Vlastnosti Význam
ID Identifikační číslo úlohy
Kategorie Kategorie úlohy, vizte sekci Kategorie úloh
Task Vlastní pojmenování úlohy
Priorita Priorita, s jako bude úloha vykonána, nula je nejvyšší priorita
Mapování programu Přiřazení konkrétního programu do úlohy
Typ Typ běhu úlohy, popsáno v sekci Typy úloh
Parametry Parametry se různí podle použitého typu

Kategorie úloh

Existují čtyři kategorie úloh, ale používají se pouze dvě:


NormalOperationTask - Normální operace, výchozí nastavení každé úlohy, úloha se vykonává podle zvoleného typu a definovaných parametrů.

ExecutionError - Úloha se spouští pouze v případě, kdy dojde ke kritické chybě úlohy NormalOperationTask (např. dělení nulou). V případě vytvoření úlohy s touto kategorií se ID úlohy automaticky změní na poslední (nejvyšší) ID. Úloha s touto kategorií může být pouze jedna.

Mervis IDE umožňuje vytvoření více úloh kategorie NormalOperationTask za předpokladu, že první bude typu Freewheeling, nebo Cyclic a další úlohy této kategorie budou pouze typu Event. Typy úloh jsou podrobně popsány níže.

Pro případ, kdy má nepřetržitý beh programu vyšší prioritu, než běh bez chyb a jejich zaznamenání, je možné vypnout volbu Stop při výjimce ve vlastnostech regulátoru a úlohu typu ExecutionError nikdy nespustit:

Mapování programu

Dvojklikem do kolonky pod Mapování programu se zobrazí okno:

V tomto okně se označením myší vybere požadovaný program a přidá kliknutím na tlačítko Přidat →.

Pokud se v seznamu nezobrazí požadovaný program, je nutné zkompilovat sestavu!

Typy úloh

Typ úlohy určí způsob jejího vykonávání.

Typ Význam
Freewheeling Normální vykonávání, pauza mezi cykly podle % nastavení
Cyclic Spuštění úlohy se provádí periodicky dle definovaného intervalu v ms
Event Úloha se vykoná v případě splnění definované podmínky

1. Freewheeling

Nastavení typu Freewheeling znamená, že zvolená úloha se bude vykonávat neustále dokola, podle možností kontroléru.

Parametr Poměr doby neaktivity udává dobu čekání na další výpočetní cyklus. Doba se udává jako podíl z doby posledního výpočetního cyklu. Příklad: bude-li jeden výpočetní cyklus trvat 10 ms a poměr doby neaktivity bude nastaven na 30 %, regulátor spustí další cyklus až po 3 ms.


2. Cyclic

Při nastavení typu Cyclic bude úloha prováděna každou pevně nastavenou periodu [ms].

Při delších periodách je výhodné využít syntaxe ST, například při nastavení periody 2 h a 30 min napíšeme namísto čísla 8400000 hodnotu t#2h30m (datový typ TIME).


3. Event

Nastavení typu Event nabízí podmíněné vykonání úlohy, která se může vykonávat buď jednorázově, nebo opakovaně v reakci na zvolenou proměnnou. Celkem existují 4 možnosti:

Podmínka spuštění Význam
Náběžná hrana Jednorázové vykonání úlohy při náběžné hraně
Sestupná hrana Jednorázové vykonání úlohy při sestupné hraně
Vysoká úroveň Nepřetržité vykonávání úlohy při hodnotě TRUE
Nízká úroveň Nepřetržité vykonávání úlohy při hodnotě FALSE

Po rozkliknutí parametru proměnná se objeví okno se seznamem proměnných, požadovanou proměnnou lze přidat výběrem a kliknutím na tlačítko Přidat →.

Pro spuštění úlohy typu event je nutné jako spouštěcí proměnnou zvolit takovou proměnnou, která je použita v hlavním programu. Pro použití proměnné ve FBD ji stačí napojit na sebe samou:

Stejné pravidlo platí i pro commerror a další atributy.

Po vygenerování sestavy ve zjednodušeném módu je pro kontrolér automaticky vytvořena úloha s namapovaným programem main. Při založení sestavy v plném módu je nutné vytvořit program a úlohu a namapovat.

Pro přidání úlohy stačí kliknout do libovolného místa v otevřeném okně pravým tlačítkem myši a vybrat možnost Přidat task v kontextovém menu.

Vytvoření úlohy a jiné změny je třeba potvrdit kliknutím na OK v červené liště.

POZOR!
Všechny změny úlohy je vždy nutné potvrdit kliknutím na OK v červené liště.

Nastavení bezpečného stavu ovládaného zařízení

Bezpečnými hodnotami se rozumí takové, které nemohou ohrozit zdraví pracovníků a poškodit zařízení. Pokud dojde při běhu programu k výjimce (např. k dělení nulou), NormalOperation se zastaví a spustí se úloha ExecutionError.

1. Příklad bezpečného stavu zařízení "pila"

Zařízení obsluhující pilu. V situaci, kdy nastane chyba programu, úloha NormalOperation se zastaví, úloha ExecutionError se spustí a zastaví list pily a posuv. Díky tomuto ošetření chybového stavu se předejde možným zraněním pracovníků, nebo poškození pily.

2. Příklad bezpečného stavu zařízení "cementárna"

Zařízení obsluhující plnič v cementárně. V situaci, kdy nastane chyba programu, úloha NormalOperation se zastaví, úloha ExecutionError se spustí a uzavře klapky zásobníků. Díky tomuto ošetření chybového stavu se předejde zbytečným ztrátám materiálu.

UPOZORNĚNÍ Je dobrým zvykem nastavit výchozí hodnoty vstupů a výstupů na bezpečné hodnoty.

Pro opětovné spuštění úlohy NormalOperation po ošetření chybového stavu je nutné dát do úlohy ExecutionError funkci RESUMENORMALTASK.


Informování e-mailem, SMS, popř. optická signalizace poruchy na ULED

O chybovém stavu je vhodné informovat příslušné osoby e-mailem, či SMS a tento stav zaznamenat vyvoláním alarmu. Detailní popis nastavení hlášení lze nalézt v samostatných článcích věnovaných odesílání e-mailů a SMS.

Pro názornost lze přidat optickou signalizaci např. na uživatelskou LED diodu X1, nebo sepnout výstup DO/RO s připojeným signalizačním zařízením.

Použití typu Event

1. Spuštění jednorázové akce

Při náběžné hraně DI se vyvolá jednorázová akce - ovlivnění parametru programu, odeslání hlášení, či výpočet nové hodnoty v závislosti na událost.

2. Přepínání mezi programy

Podle hodnoty DI se provádí dva různé programy (false program1 a true program2). Toto je výhodné zejména ve FBD, v ST lze stejného chování podmínkou IF.

3. Spouštění programů s danou periodou

Blok BD2 (pulzní generátor) bude generovat pulzy, které mohou spouštět další program. Výhodné je to v případech, kdy potřebujeme spouštět jiný program opakovaně, ale je nežádoucí jej spouštět každý výpočetní cyklus (pro úsporu výpočetního výkonu).