Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
cs:sw:01-mervis:task-definition-hidden [2024/04/04 11:10] – [Typy úloh] kcernycs:sw:01-mervis:task-definition-hidden [2025/07/17 11:38] (aktuální) – [Typy úloh] math ofojt
Řádek 1: Řádek 1:
-====== Pokročilé definování úloh PLC ======+====== Pokročilé definování úloh kontroléru ======
  
 <WRAP group> <WRAP group>
Řádek 14: Řádek 14:
 </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 PLC 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]]**.
  
 ---- ----
  
-V tomto návodu je popsáno, jak a kde úlohy definovat, jaké existují kategorie a typy úloh, vč. toho, jak dosáhnout optimalizace vykonávání programu, ošetření chybových stavů jejich logování, popř. i automatickou opravu.+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 zaznamenat chybové stavy, popř. i automatickou opravu.
 </WRAP> </WRAP>
 </WRAP> </WRAP>
  
- 
-===== 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.  
- 
-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. 
- 
-{{ .:advanced-task-definition:advanced_task_definition_01_add_task.png?direct |}} 
- 
-Vytvoření úlohy a jiné změny je třeba potvrdit kliknutím na **OK** v červené liště. 
- 
-{{ :cs:sw:01-mervis:advanced-task-definition:changes-confirm.png?nolink |}} 
- 
-<WRAP center round important 90%> 
-**POZOR!** \\ 
-Všechny změny úlohy je **vždy** nutné potvrdit kliknutím na OK v červené liště. 
-</WRAP> 
  
 ===== 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 |}}
Řádek 74: Řádek 57:
 ---- ----
  
-**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 |}}
  
-této tabulce se označením myší vybere požadovaný program a přidá kliknutím na tlačítko **Přidat →**.+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 |}}
Řádek 105: Řádek 93:
 |< 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                 |
  
Řádek 113: Řádek 101:
 <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.
  
 ---- ----
Řádek 119: Řádek 109:
 <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).
  
 ---- ----
Řádek 135: Řádek 127:
 {{ .: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ěnné *commerrormusí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ěnnoukterá 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 =====
 +
 +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.
 +
 +{{ .:advanced-task-definition:advanced_task_definition_01_add_task.png?direct |}}
 +
 +Vytvoření úlohy a jiné změny je třeba potvrdit kliknutím na **OK** v červené liště.
 +
 +{{ :cs:sw:01-mervis:advanced-task-definition:changes-confirm.png?nolink |}}
 +
 +<WRAP center round important 90%>
 +**POZOR!** \\
 +Všechny změny úlohy je **vždy** nutné potvrdit kliknutím na **OK** v červené liště.
 +</WRAP>
 +
  
 ===== Příklad použití  ===== ===== Příklad použití  =====