Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cs:sw:01-mervis:autogen-hidden [2020/05/11 13:56]
avsetula
cs:sw:01-mervis:autogen-hidden [2024/03/14 09:58] (current)
kcerny typos
Line 1: Line 1:
 ====== Práce s Autogenem ====== ====== Práce s Autogenem ======
-Jednou z nejdůležitějších ​cí, kterou je třeba o Mervis IDE vědět, je odpověď na otázku "Co je to Autogen a jak s ním mám pracovat?"​V př [[en:​sw:​01-mervis:​creating-new-project-hidden|edchozím tutoriálu]] jsme se naučili, že Autogen je nezbytný pro přístup z programu k hardwarovým vstupům a výstupům. Také jsme se naučili, jak Autogen nastavit u všech zařízení (PLC, rozšiřující moduly, Modbus zařízení,​ 1-Wire senzory apod.)+<WRAP group> 
 +<WRAP half column 81%> 
 +Ve Zjednodušeném módu sestavy není nutné autogen znát, jelikož je implicitně (automaticky) aktivovaný a vždy vytvoří proměnné pro všechny dostupné datové bodyToto řešení je vhodné v ípadě, že s řešením Mervis ​začínáte.
  
-===== Proč NEpoužívat Autogen ===== +Pokud ale chcete pracovat ​na konkrétním projektu**je znalost práce s funkcí Autogen nezbytností** ​a je proto nutné ​mít sestavu v [[creating-new-project-hidden#​prepnuti_do_plneho_modu|Plném módu]].
-Autogen pro celé zařízení je užitečným nástrojem pro ladění programů; díky Autogenu můžete běhovému prostředí Mervis RT zadat instrukci, aby seřadil všechny vstupy a výstupy a okamžitě Vám je nabídl k dispozici pro ladění programu. Nevýhodou jsou zde ale vyšší nároky ​na výkon programu. Kontroléry zpracovávají velké množství informacímnoho z nich je ale potřeba jen v určitých zvláštních situacích ​za normálních okolností ​je nevyužijete. Řazení nedůležitých informací z rozšiřujících modulů přes relativně pomalé rozhraní RS485 pak může ​mít na výkon ještě výraznější dopad+
  
-Druhou nevýhodou je faktže Set Autogen ​automaticky generuje názvy proměnných. Snadno si můžete sami zkontrolovat,​ že vygenerované jméno sestává ze jména kontroléru ​jména vstupu/​výstupuV našem projektu jsme k systému připojili jednotku Neuron L503 a rozhodli jsme se použít digitální vstup DI_3.07. Vygenerované jméno je "Neuron ​L503_DI_3.07"​. ​+V návodu se dozvíte[[#​jak_autogen_ovlivnuje_rychlost_programu|proč je nutné spravovat ​Autogen ​manuálně]] jaké z toho plynou výhody. 
 +</​WRAP>​ 
 +<WRAP half column 15%> 
 +;;# 
 +<​html><​span class="dev-tag dev-patron">​Patron</​span></​html>​ \\ 
 +<​html><​span class="​dev-tag dev-neuron">​Neuron</​span></​html>​ \\ 
 +<​html><​span class="dev-tag dev-gate">​Gate</​span></​html>​ \\ 
 +<​html><​span class="​dev-tag dev-unipi11">​Unipi&​nbsp1.1</​span></​html>​ \\ 
 +<​html><​span class="​dev-tag dev-axon">​Axon</​span></​html>​ 
 +;;# 
 +</​WRAP>​ 
 +</​WRAP>​
  
-{{ :en:sw:01-mervis:​working-with-autogen-01-insert-existing-variable.png?direct |}}+<WRAP center round info 95%> 
 +Následující návod navazuje na[[creating-new-project-hidden|]]Před pokračováním se ujistěte se, že jste tento návod dokončili. 
 +</​WRAP>​
  
-Tuto proměnnou můžete ve Vašem programu používat poměrně bez problémů, a to i opakovaně (jedno tlačítko může ovládat více částí projektu naráz). Jedním z problémů takového pojmenování ale je jeho nepopisnost. Když projekt vytváříte,​ snadno si zapamatujete,​ že DI_3.07 je připojen k tlačítku "​OK"​ na operátorském panelu či k nástěnnému vypínači ve Vaší ložnici; o půl roku později si to už ale pamatovat nemusíte. Stejně tak může dojít k tomu, že bude třeba projekt předat někomu jinému, který na projektu nikdy předtím nepracoval a Vaše značení pro něj bude zmatečné. 
  
-Další problém představuje automatické začlenění jména PLC do jména ​proměnné - v našem ​ípadě ​edpona "​Neuron_L503_"​Pokud používáte v sestavě pouze jeden kontrolér, tento problém se vás zřejmě nedotkne. Pokud ale užíváte kontrolérů víceprojekt se může stát špatně čitelným a zcela nečitelnýmpokud používáte více kontrolérů stejného typu. Z toho důvodu je užitečné pojmenovávat proměnné systematicky a podle nějakého klíče. Nejintuitivnější jsou jména založená na fyzickém umístění - kotelna, prvni_patrooperatorsky_panel apod+===== Co je to Autogen? ===== 
 +Autogen je nástroj v Mervis IDE, která slouží k vytváření proměnných pro datové body, resp. vstupy a výstupy celé sestavy. Nejedná se pouze o vstupy a výstupy ​ímo na jednotce, ale také o zařízení ​ipojené pomocí různých protokolů: Modbus, 1-Wire, M-bus, BACnet, ajZařízeními mohou být jednotkynebo rozšiřující moduly Unipisenzory, elektroměryatd.
  
-<WRAP center round tip 60%+Dále také umožňuje vlastní pojmenování generovaných proměnných. 
-Při pojmenovávání ​proměnných a kontrolérů doporučujeme používat malá písmena a číslice (a-z0-9) a k oddělení slov využít podtržítka:​ zasteny_lozniceteplota_patro1kotelna_leva apod.+ 
 +---- 
 + 
 +<html><span class="​kbBlueText">​Co je to datový bod?</​span></​html>​ \\ 
 +Datový bod je definice komunikace pro konkrétní vstup, či výstup. ​ímo na datovém bodu se definuje datový typ (bool, byte, int, ..) a případně ​další parametry specifické pro zvolený typ komunikace.  
 + 
 +Aby bylo možné datový bod použít, je nutné pro něj vytvořit ​proměnnou, se kterou již lze v programu pracovat. 
 + 
 +---- 
 + 
 +<WRAP center round important 95%> 
 +Nejdůležitější součástí Autogenu je soubor **generated.Mixed.st**který je automaticky generován právě touto funkcí a jakýkoli manuální zásah do tohoto souboru může způsobit nedostupnost vstupů a výstupůnebo neočekávané chování. Proto tento soubor **nikdy manuálně neupravujtenemažte, ani nepřesouvejte**.  
 + 
 +Zásah do tohoto souboru je možný jen ve vyjímečných případech a to jen pro **velmi zkušené uživatele**.
 </​WRAP>​ </​WRAP>​
  
-Pro vytváření přehledných a snadno čitelných projektů nabízí Mervis možnost přejmenovat kontroléry či vstupy/​výstupy dle Vašich potřeb. Vytvořme si nyní jednoduchý projekt, na kterém si přejmenovávání ukážeme. Projekt bude zahrnovat jeden digitální vstup (DI1.1), kterým budeme odečítat stav tlačítka, a jeden digitální výstup ovládající LED indikátor. ​ 
  
-Začneme přejmenováním kontroléru. V **levém panelu** vyberte kontrolér, v okně **Vlastnosti** změňte vlastnost "​Název"​ na "​operatorsky_panel"​ a potvrďte kliknutím na ikonku {{:​files:​dialog-confirm_button_2.png?​nolink|}}. ​ 
  
-{{ :​en:​sw:​01-mervis:​working-with-autogen-02-rename-plc.png?direct |}}+===== Jak se Autogen používá===== 
 +V základu existují dvě varianty, jak lze Autogen správně použít a každá varianta má své výhody i nevýhody.
  
-Nyní přejmenujeme vstupy a výstupy. Dvojitě klikněte na prototyp ​**levém panelu**přejděte na seznam vstupů/​výstupů na **hlavním panelu** a vyhledejte název "DI_1.01"+  - Vytvoření proměnných [[#​pro_cele_zarizeni_kanal|pro ​všechny datové body zařízení]] a následné vypnutí autogenu u datových bodůkteré nepoužijete 
 +  - Vytvoření proměnných jen [[#​pro_konkretni_promenne|pro konkrétní datové body]], které chcete použít.
  
-{{ :​en:​sw:​01-mervis:​working-with-autogen-03-look-for-di.png?​direct |}} 
  
-Pro přejmenování vstupu zapište nové jméno do sloupečku "​Jméno pro Autogen"​ a potvrďte kliknutím na "​V"​. DI_1.01 je určen pro čtení stavu tlačítka, proto jej pojmenujte "​tlacitko"​+\\ 
 +==== 1. Pro celé zařízení/​kanál ====
  
-{{ :en:sw:01-mervis:​working-with-autogen-04-rename-and-set-autogen.png?direct |}}+=== Vytvoření proměnných === 
 +Lze použít v případě, kdy nevíte, jaké vstupy a výstupy použijete, nebo chcete-li mít přístup ke všem, např. z důvodu testování/​ladění nových zařízení,​ či celé sestavy (rozvaděče). Následujícím postupem zpřístupníte veškeré vstupy a výstupy pro jedno, čí více zařízení současně.
  
-Nyní pro tento datový bod nastavíme Autogen. Klikněte na bod pravým tlačítkem myši, v kontextovém menu klikněte na "​Nastavit Autogen"​ a potvrďte kliknutím na OK +----
  
-U digitálního vstupu postup opakujte. DO_1.01 nazvěte "​led"​+Nejprve otevřete Váš projekt s přiřazenou jednotkou v Plném módu.
  
-<WRAP center round info 60%> +Následně klikněte pravým tlačítkem myši na konkrétní zařízení a zvolte **Nastavit autogen**:​ 
-Jak zjistíte, digitální výstupy (DO) mají dva datové body: DO_X.Y_w ​DO_X.Y_r. Pro účely tutoriálu ​použijte DO_X.Y_w, rozdíl mezi těmito body vysvětlíme ​dalších tutoriálech+ 
 +{{ :​cs:​sw:​01-mervis:​01_autogen.png?​direct |}} 
 + 
 +---- 
 + 
 +Otevře se dialog, zde je nutné zvolit do kterého projektu se budou proměnné generovat. Můžete zde také zvolit možnost "​Včetně atributů"​. 
 + 
 +<WRAP center round info 95%> 
 +Co jsou atributy ​čemu je lze použít je detailně popsáno ​článku [[comm-attributes-hidden|]].
 </​WRAP>​ </​WRAP>​
  
-Nastavením Autogenu ​pro dva datové body jsme vytvořili dvě globální ​proměnné. ​Jedním z místkde můžete proměnné ​spravovat, je nabídka ​**Prohlížeč proměnných** na **hlavním ​panelu**. ​+Nyní klikněte na **OK**.  
 + 
 +{{ :​cs:​sw:​01-mervis:​02_autogen.png?​nolink |}} 
 + 
 +Tímto se vygenerovaly proměnné ​pro všechny dostupné ​datové body a je možné je vyhledat (po kompilaci sestavy) mezi dostupnými proměnnými. 
 + 
 +---- 
 + 
 +Tento postup lze aplikovat i na všechny zařízení v kanálu kliknutím pravým tlačítkem myši a zvolením **Nastavit autogen** a potvrzením dialogu. 
 + 
 +{{ :​cs:​sw:​01-mervis:​03_autogen.png?​direct |}} 
 + 
 + 
 +\\ 
 +=== Smazání proměnných === 
 +Postup je téměř totožný.  
 + 
 +---- 
 + 
 +Nejprve klikneme pravým tlačítkem myši na zařízení/​kanál a zvolíme **Nastavit Autogen**, ale v následujícím dialogu nyní zvolíme **Operace: Vypnout Autogen** a potvrdíme kliknutím na **OK**. 
 + 
 +{{ :​cs:​sw:​01-mervis:​04_autogen.png?​nolink |}} 
 + 
 +Tím se smažou veškeré proměnné pro vybrané zařízení/​kanál a již nebudou dále dostupné. 
 + 
 +---- 
 + 
 +V případě, že máte vytvořeny proměnné i pro atributy a chcete je odebrat, zvolte také možnost **Včetně atributů**. 
 + 
 +\\ 
 +==== 2. Pro konkrétní proměnné ==== 
 + 
 +=== Vytvoření proměnných === 
 +Pro vytvoření pouze vybraných proměnných je třeba nejprve otevřít editor zařízení. Otevření se provádí dvojklikem na zařízení,​ v tomto případě na **Patron S207**. 
 + 
 +Otevře se (modbus) tabulka se skupinami a jejich datovými body.  
 + 
 +{{ :​cs:​sw:​01-mervis:​05_autogen.png?​direct |}} 
 + 
 +---- 
 + 
 +Nyní vyhledáme datový bod, pro který chceme proměnnou vytvořit. V našem případě budeme vyhledávat **DI_1.01**. Vyhledáme jej pomocí filtru v horní části okna. 
 + 
 +{{ :​cs:​sw:​01-mervis:​06_autogen.png?​direct |}} 
 + 
 +---- 
 + 
 +<​html><​span class="​kbBlueText">​Nyní máte dvě možnosti:</​span></​html>​ 
 +  - Klikneme na datový bod pravým tlačítkem myši, zvolíme **Nastavit autogen** a potvrdíme dialog 
 +  - Klikneme na datový bod levým tlačítkem,​ tím se v pravém panelu zobrazí jeho vlastnosti, zde klikneme na **Povolit Autogen** a následně o řádek níž vybereme projekt, pro který se bude proměnná generovat 
 + 
 +{{ :​cs:​sw:​01-mervis:​07_autogen.png?​direct |}} 
 + 
 +Nyní se vygenerovala proměnná pouze pro zvolený datový bod. Po kompilaci bude dostupná mezi ostatními proměnnými.  
 + 
 + 
 +\\ 
 +=== Smazání proměnných === 
 +Postup je téměř totožný, jako vytvoření konkrétní ​proměnné. 
 + 
 +---- 
 + 
 +Pro smazání vybraných proměnných je třeba otevřít editor zařízení. Otevření se provádí dvojklikem na zařízenív tomto případě na **Patron S207**. 
 + 
 +V otevřené tabulce pomocí filtru v horní části okna vyhledáme datový bod, který chceme smazat. 
 + 
 +{{ :​cs:​sw:​01-mervis:​08_autogen.png?​direct |}} 
 + 
 +---- 
 + 
 +<​html><​span class="​kbBlueText">​Nyní máte dvě možnosti:</​span></​html>​ 
 +  - Klikneme na datový bod pravým tlačítkem myši, zvolíme **Nastavit autogen**, ale v následujícím dialogu nyní zvolíme **"​Operace:​ Vypnout Autogen"​** a potvrdíme dialog 
 +  - Klikneme na datový bod levým tlačítkem,​ tím se v pravém panelu zobrazí jeho vlastnosti, zde klikneme na **Povolit Autogen**, aby se hodnota změnila na **False** 
 + 
 +{{ :​cs:​sw:​01-mervis:​09_autogen.png?​direct |}} 
 + 
 +Proměnná byla smazána a již nadále nebude dostupná mezi ostatními proměnnými.  
 + 
 + 
 + 
 +\\ 
 +===== Změna názvu generovaných proměnných ===== 
 +Když projekt vytváříte,​ snadno si zapamatujete,​ že DI_1.01 je připojen k tlačítku “OK” na operátorském panelu, či k nástěnnému vypínači ve Vaší ložnici. Po půl roce si to už ale pamatovat nemusíte. Stejně tak může dojít k tomu, že bude třeba projekt předat někomu jinému, který na projektu nikdy předtím nepracoval a Vaše značení pro něj bude zmatečné.  
 + 
 +Z těchto a dalších důvodů je vhodné ​proměnné ​pojmenovatnapř.: OK_panel1, Vyp_loznice,​ atd.. 
 + 
 +---- 
 + 
 +Pro nastavení vlastního názvu proměnných ​je třeba otevřít editor zařízení. Otevření se provádí dvojklikem na zařízení,​ v tomto případě na **Patron S207**. 
 + 
 +V otevřené tabulce vyhledáme datový bod, který chceme smazat. Lze využít vyhledávání v horní ​části okna. 
 + 
 +{{ :​cs:​sw:​01-mervis:​10_autogen.png?​direct |}} 
 + 
 +---- 
 + 
 +<​html><​span class="​kbBlueText">​Nyní máte dvě možnosti:</​span></​html>​ 
 +  - Klikněte na datový bod levým tlačítkem,​ a ve sloupci **Jméno pro Autogen** vložte váš vlastní název a potvrďte stisknutím klávesy ENTER nebo kliknutím na tlačítko {{:​files:​dialog-confirm_button.png?​nolink|}} 
 +  - Klikněte na datový bod levým tlačítkem,​ tím se v pravém panelu zobrazí jeho vlastnosti, zde klikněte na **Generované jméno ​proměnné**, vložte váš vlastní název a potvrďte stisknutím klávesy ENTER nebo kliknutím na tlačítko {{:​files:​dialog-confirm_button.png?​nolink|}} 
 + 
 +{{ :​cs:​sw:​01-mervis:​11_autogen.png?​direct |}} 
 + 
 +Proměnná je nyní přejmenována a lze ji pod tímto názvem vyhledat mezi ostatními proměnnými. 
 + 
 +\\ 
 +==== Změna názvu zařízení ==== 
 + 
 +Jelikož každá proměnná má vždy před vlastním názvem ještě název zařízení (zde: Patron S207), je vhodné nastavit i tento název zařízení,​ aby byl projekt přehlednější. Nejvíce intuitivní jsou jména založená na fyzickém umístění:​ Kotelna, Sklep, RZV1, Hala3, atd.. 
 + 
 +---- 
 + 
 +Pro změnu názvu klikněte na konkrétní zařízení a v pravém sloupci vlastností nastavte nový název. Následně potvrďte stisknutím klávesy ENTER nebo kliknutím na tlačítko {{:​files:​dialog-confirm_button.png?​nolink|}}. 
 + 
 +{{ :​cs:​sw:​01-mervis:​12_autogen.png?​direct |}} 
 + 
 + 
 + 
 +\\ 
 +===== Rychlý přehled v mapování I/O ===== 
 +K dispozici je také přehled všech datových bodů, jejich datových typů, vlastního pojmenování,​ či výsledná deklarace proměnné. Tento rychlý přehled je k dispozici pro každé PLC zvlášť a zahrnuje datové body a kanály všech připojených technologií zvoleného PLC. 
 + 
 +---- 
 + 
 +Pro zobrazení přehledu mapování I/O dvojitě klikněte ​na regulátor (**PLC**) v levém ​panelu
 + 
 +{{ :​cs:​sw:​01-mervis:​13_autogen.png?​direct |}} 
 + 
 +Otevře se okno PLC s mapováním úloh (tasků), kde ve spodní části přepněte na **Mapování I/O**. 
 + 
 +{{ :​cs:​sw:​01-mervis:​14_autogen.png?​direct |}} 
 + 
 +Nyní se již zobrazí tabulka s rychlým přehledem všech datových bodů. 
 + 
 +{{ :​cs:​sw:​01-mervis:​15_autogen.png?​direct |}} 
 + 
 + 
 + 
 +\\ 
 +===== Jak Autogen ovlivňuje rychlost programu? ===== 
 +Jednoduše lze říci, že datové body nejsou komunikovány (čteny/​zapisovány),​ pokud nemají vytvořenou proměnnou. Vždy tomu tak ale není. 
 + 
 +Následující příklad je proto vysvětlen na nejpoužívanějším komunikačním protokolu Modbus, který je právě komunikován po skupinách, nikoli po jednotlivých bodech. 
 + 
 +---- 
 + 
 +Otevřete si (modbus) tabulku vaší jednotky. Zde máte mnoho skupin s ještě více datovými body. 
 + 
 +{{ :​cs:​sw:​01-mervis:​16_autogen.png?​direct |}} 
 + 
 +---- 
 + 
 +Jak již bylo zmíněno, Modbus komunikuje po skupinách a každá skupina znamená jednu samostatnou zprávu skládající se z **adresy, funkce, dat a CRC**. Každá Modbus zpráva tedy znamená určité zpoždění v závislosti na rychlosti komunikačního rozhraní, které dále může narůstat v případě, že došlo ke ztrátě, nebo poškození zprávy. 
 + 
 +---- 
 + 
 +Např. u funkce F03 prodlužuje každý Modbus registr (2 byty) zprávu s odpovědí právě o 2 byty. 
 + 
 +Pokud tedy čtete v rámci jedné skupiny 1 registr, je dotaz složen z 8 bytů a odpověď ze 7 bytů. Čtete-li 10 registrů v rámci jedné skupiny, je dotaz stále složen z 8 bytů, ale odpověď je nyní složena z 25 bytů. 
 + 
 +Pokud v rámci skupiny nečtete žádný registr - žádný datový bod v rámci skupiny nemá vytvořenou proměnnou, je celá zpráva přeskočena. Pokud tento postup aplikujete na všechny datové body/​skupiny,​ lze tak výrazně zrychlit čtení/​zápis ostatních skupin a zrychlit tak celkovou odezvu systému. 
  
-{{ :​en:​sw:​01-mervis:​working-with-autogen-05-variable-browser.png?​direct |}}