====== 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.