====== Práce s Autogenem ======
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é v 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í** a 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.
;;#
Patron \\
Neuron \\
Gate \\
Unipi 1.1 \\
Axon
;;#
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.
===== 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.
Dále také umožňuje vlastní pojmenování generovaných proměnných.
----
Co je to datový bod? \\
Datový bod je definice komunikace pro konkrétní vstup, či výstup. Přímo na datovém bodu se definuje datový typ (bool, byte, int, ..) a případně i 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.
----
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ě neupravujte, nemaž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**.
===== 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.
- 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.
\\
==== 1. Pro celé zařízení/kanál ====
=== 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ě.
----
Nejprve otevřete Váš projekt s přiřazenou jednotkou v Plném módu.
Následně klikněte pravým tlačítkem myši na konkrétní zařízení a zvolte **Nastavit autogen**:
{{ :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ů".
Co jsou atributy a k čemu je lze použít je detailně popsáno v článku [[comm-attributes-hidden|]].
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 |}}
----
Nyní máte dvě možnosti:
- 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 |}}
----
Nyní máte dvě možnosti:
- 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é pojmenovat, např.: 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 |}}
----
Nyní máte dvě možnosti:
- 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.