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/09/24 12:54]
mkudlacek
cs:sw:01-mervis:autogen-hidden [2024/03/14 09:58] (current)
kcerny typos
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&​nbsp1.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č nenastavovat Autogen ​na celém zařízení / kanále ===== +<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 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 |}}