| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze |
| cs:sw:01-mervis:task-definition-hidden [2024/04/23 13:31] – avsetula | cs:sw:01-mervis:task-definition-hidden [2025/07/17 11:38] (aktuální) – [Typy úloh] math ofojt |
|---|
| ====== Pokročilé definování úloh PLC ====== | ====== Pokročilé definování úloh kontroléru ====== |
| |
| <WRAP group> | <WRAP group> |
| </WRAP> | </WRAP> |
| <WRAP half column 100%> | <WRAP half column 100%> |
| Systém Mervis umožňuje definovat úlohy, které má PLC (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í. | 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 [[cs:sw:01-mervis:multiple-controllers-hidden|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 **[[cs:sw:01-mervis:creating-new-project-hidden?tns#prepnuti_do_plneho_modu|plném módu]]**. | 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 [[cs:sw:01-mervis:multiple-controllers-hidden|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 **[[cs:sw:01-mervis:creating-new-project-hidden?tns#prepnuti_do_plneho_modu|plném módu]]**. |
| ===== Popis vlastností úlohy ===== | ===== Popis vlastností úlohy ===== |
| |
| Dvojklikem na název regulátoru v sestavě se zobrazí seznam definovaných úloh s jejich vlastnostmi. | Dvojklikem na název regulátoru v levém panelu sestavy se zobrazí seznam definovaných úloh s jejich vlastnostmi. |
| |
| {{ .:advanced-task-definition:advanced_task_definition_03_open_task_list.png?direct |}} | {{ .:advanced-task-definition:advanced_task_definition_03_open_task_list.png?direct |}} |
| ---- | ---- |
| |
| **NormalOperationTask** - normální operace, je výchozí nastavení kategorie každé úlohy, úloha se vykonává podle zvoleného typu a definovaných parametrů. | **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. | **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. |
| |
| <WRAP center round info 90%> | <WRAP center round info 90%> |
| Mervis IDE umožňuje vytvoření více úloh kategorie NormalOperationTask za předpokladu, že první bude typu Freewheeling, | 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 [[#typy_uloh|níže]]. |
| nebo Cyclic a další úlohy této kategorie budou pouze typu Event. Typy úloh jsou podrobně popsány [[#typy_uloh|níže]]. | </WRAP> |
| | |
| | <WRAP center round important 90%> |
| | Pro případ, kdy má nepřetržitý běh 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: |
| | |
| | {{.:advanced-task-definition:stop-on-except.png?direct|}} |
| </WRAP> | </WRAP> |
| |
| ==== Mapování programu ==== | ==== Mapování programu ==== |
| |
| Kliknutím do kolonky pod **Mapování programu** se zobrazí tabulka: | Dvojklikem do kolonky pod **Mapování programu** se zobrazí okno: |
| |
| {{ .:advanced-task-definition:advanced_task_definition_06_program_mapping.png?direct |}} | {{ .:advanced-task-definition:advanced_task_definition_06_program_mapping.png?direct |}} |
| |
| V této tabulce se označením myší vybere požadovaný program a přidá kliknutím na tlačítko **Přidat →**. | V tomto okně se označením myší vybere požadovaný program a přidá kliknutím na tlačítko **Přidat →**. |
| |
| {{ .:advanced-task-definition:advanced_task_definition_07_program_mapping_window.png?direct |}} | {{ .:advanced-task-definition:advanced_task_definition_07_program_mapping_window.png?direct |}} |
| |< 100% 20% 80%>| | |< 100% 20% 80%>| |
| ^ Typ ^ Význam ^ | ^ Typ ^ Význam ^ |
| | Freewheeling | Normální vykonávání, pauza mezi cykly podle % nastavení | | | 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 | | | 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 | | | Event | Úloha se vykoná v případě splnění definované podmínky | |
| |
| <html><span class="kbBlueText">1. Freewheeling</span></html> | <html><span class="kbBlueText">1. Freewheeling</span></html> |
| |
| Nastavení typu Freewheeling znamená, že zvolená úloha se bude vykonávat neustále dokola, podle možností PLC. 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. | 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. |
| |
| ---- | ---- |
| <html><span class="kbBlueText">2. Cyclic</span></html> | <html><span class="kbBlueText">2. Cyclic</span></html> |
| |
| Při nastavení typu Cyclic bude úloha prováděna každou pevně nastavenou periodu [ms]. Při delších periodách s výhodou využijeme 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). | 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 20 min napíšeme namísto čísla 8400000 hodnotu **t#2h20m** (datový typ TIME). |
| |
| ---- | ---- |
| {{ .:advanced-task-definition:advanced_task_definition_09_trigger_conditions.png?direct |}} | {{ .:advanced-task-definition:advanced_task_definition_09_trigger_conditions.png?direct |}} |
| |
| Po rozkliknutí parametru **proměnná** se objeví tabulka se seznamem proměnných, požadovanou proměnnou lze přidat výběrem a kliknutím na tlačítko **Přidat**. | 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 ->**. |
| |
| {{ :cs:sw:01-mervis:advanced-task-definition:event-assign.png?direct |}} | {{ :cs:sw:01-mervis:advanced-task-definition:event-assign.png?direct |}} |
| |
| <WRAP center round important 90%> | <WRAP center round important 90%> |
| Pokud chcete u typu event použít proměnnou *commerror, musíte ji nejdříve použít v hlavním programu - stačí ji pouze napojit na sebe samou, jinak se event nespustí. | 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: |
| |
| {{ :cs:sw:01-mervis:advanced-task-definition:commerrror-fix.png?direct |}} | {{ :cs:sw:01-mervis:advanced-task-definition:commerrror-fix.png?direct |}} |
| | |
| | Stejné pravidlo platí i pro commerror a další atributy. |
| </WRAP> | </WRAP> |
| |
| ===== Definování úlohy ===== | ===== Definování úlohy ===== |
| |
| Po vygenerování sestavy ve **zjednodušeném módu** je pro PLC 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. | 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 následně vybrat možnost **Přidat task** v kontextovém menu. | 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. |
| |
| {{ .:advanced-task-definition:advanced_task_definition_01_add_task.png?direct |}} | {{ .:advanced-task-definition:advanced_task_definition_01_add_task.png?direct |}} |