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
Last revision Both sides next revision
cs:sw:01-mervis:autogen-hidden [2020/06/08 11:34]
avsetula [Práce s Autogenem]
cs:sw:01-mervis:autogen-hidden [2023/09/12 11:58]
avsetula
Line 2: Line 2:
 <WRAP group> <WRAP group>
 <WRAP half column 81%> <WRAP half column 81%>
-Jednou z nejdůležitějších 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 [[en:​sw:​01-mervis:​creating-new-project-hidden|př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.)+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é body. Toto řešení je vhodné ​případě, že s řešením ​Mervis ​začínáte. 
 + 
 +Pokud ale chcete pracovat ​na konkrétním projektu, **je znalost práce s funkcí ​Autogen ​nezbytností** ​je proto nutné mít sestavu v [[creating-new-project-hidden#​prepnuti_do_plneho_modu|Plném módu]]
 + 
 +V návodu ​se dozvíte[[#​jak_autogen_ovlivnuje_rychlost_programu|proč je nutné spravovat ​Autogen ​manuálně]] a jaké z toho plynou výhody.
 </​WRAP>​ </​WRAP>​
 <WRAP half column 15%> <WRAP half column 15%>
 ;;# ;;#
-<​html><​span class="​dev-tag dev-axon">Axon</​span></​html>​ \\+<​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-neuron">​Neuron</​span></​html>​ \\
-<​html><​span class="​dev-tag dev-unipi11">​Unipi ​1.1</​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>​
 </​WRAP>​ </​WRAP>​
  
-===== Proč NEpoužívat Autogen ===== +<WRAP center round info 95%> 
-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 a 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+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>​
  
-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 a jména vstupu/​výstupu. V 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"​. ​ 
  
-{{ :en:sw:01-mervis:​working-with-autogen-01-insert-existing-variable.png?direct |}}+===== 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 přímo na jednotce, ale také o zařízení připojené pomocí různých protokolůModbus, 1-Wire, M-bus, BACnet, aj. Zařízeními mohou být jednotky, nebo rozšiřující moduly Unipi, senzory, elektroměry,​ atd.
  
-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é.+Dále také umožňuje vlastní ​pojmenování ​generovaných proměnných.
  
-Další problém představuje automatické začlenění jména PLC do jména proměnné ​v našem případě př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íce, projekt se může stát špatně čitelným a zcela nečitelným,​ pokud 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_patro,​ operatorsky_panel apod. +----
  
-<WRAP center round tip 60%+<html><span class="​kbBlueText">​Co je to datový bod?</​span></​html>​ \\ 
-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.+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 {{:​files:​dialog-confirm_button_2.png?​nolink|}}. 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 dvojtě 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řenu 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ěďí 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řenu 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 |}}