Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
cs:sw:01-mervis:autogen-hidden [2020/06/08 10:56] avsetula [Práce s Autogenem] |
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 ====== | ||
- | <WRAP group 100%> | + | <WRAP group> |
<WRAP half column 81%> | <WRAP half column 81%> | ||
- | Jednou z nejdůležitějších vě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 [[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é 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. | ||
</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 1.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-z, 0-9) a k oddělení slov využít podtržítka: zasteny_loznice, teplota_patro1, kotelna_leva apod. | + | 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. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | <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ě 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**. | ||
</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 v **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 a DO_X.Y_r. Pro účely tutoriálu použijte DO_X.Y_w, rozdíl mezi těmito body vysvětlíme v 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 a k čemu je lze použít je detailně popsáno v č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íst, kde 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é 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 |}} | ||
+ | |||
+ | ---- | ||
+ | |||
+ | <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 |}} |