====== Propojení Mervis IDE a Weintek HMI protokolem Modbus ====== V tomto tutoriálu si ukážeme, jak propojit zařízení HMI Weintek iP series a kontrolér Unipi se systémem Mervis. Cílem tohoto návodu je zobrazit na HMI displeji teplotu měřenou 1-Wire teplotním senzorem připojeným k Unipi a mít na displeji dotykové tlačítko, které zapne a vypne reléový výstup Unipi. ;;# Patron \\ Neuron \\ Gate \\ Unipi 1.1 \\ Axon ;;# Budete komunikovat pomocí ethernetu? Máme tu pro Vás novinku! Podívejte se na nový návod o propojení **[[cs:sw:01-mervis:weintek-hmi-bacnet-mervis-hidden|HMI Weintek a Unipi protokolem BACnet]]** ve vývojovém prostředí Mervis IDE. Co budete potřebovat? * Unipi Neuron kontrolér s instalovaným [[cs:files:software:os-images:00-start|Mervis OS]] * [[https://www.unipi.technology/cs/hmi-devices-c29|Weintek HMI displej]] * [[https://www.unipi.technology/cs/power-supplies-c15|24 V⎓ zdroj napájení]] * 3x síťový kabel (RJ45) a připojení do místní sítě - jeden pro Unipi kontrolér, jeden pro HMI a jeden pro vaše PC \\ V návodu jsme použili: * [[https://www.unipi.technology/cs/unipi-neuron-l523-p329|Unipi Neuron L523]] * [[https://www.unipi.technology/cs/weintek-mt8051ip-p198|Weintek MT8051iP]] * [[https://www.unipi.technology/cs/1-wire-temperature-sensor-p63?categoryId=3|1-Wire teplotní čidlo]] == Příklad zapojení: == {{ :cs:sw:01-mervis:infografika.png |}} ===== Instalace softwaru ===== Pro základní konfiguraci řadiče Unipi a instalaci Mervisu do vašeho počítače postupujte podle [[cs:sw:01-mervis:running-on-neuron-hidden|návodu zde]]. Pro konfiguraci HMI je třeba nainstalovat Weintek EasyBuilder Pro. Můžete si stáhnout verzi používanou v tomto tutoriálu [[files:software:tools:00-start#weintek_easybuilder_pro|zde]], nebo si můžete stáhnout nejnovější verzi z [[http://www.weintek.com/|webových stránek výrobce]]. Instalační soubor není podepsán ověřeným vydavatelem, takže budete požádáni o potvrzení. Zbytek instalace je snadný a všechny možnosti můžete potvrdit kliknutím na **Další**. ===== Konfigurace HMI ===== Z menu Start ve Vašem PC spusťte program Easybuilder Pro. Na uvítací obrazovce se Vám zobrazí možnosti otevřít rozdělaný projekt, či vytvořit zcela nový. Pro účely tohoto tutoriálu vytvoříme nový projekt kliknutím na tlačítko **New**. {{ :en:hw:04-hmi:weintek_ip_series_01_selecting_new_project.png?direct |}} V dalším dialogovém okně je třeba vybrat správný model HMI displeje podle toho, jaké zařízení vlastníte. Zde vybereme model MT8051iP a potvrdíme kliknutím na OK. {{ :en:hw:04-hmi:weintek_ip_series_02_selecting_device.png?direct |}} Dalším dialogovým oknem jsou vlastnosti systému (**System properties**), kde budeme nastavovat Modbus slave zařízení či konfigurovat Modbus master zařízení. K tomuto se dostaneme později, nyní proto pouze klikněte na OK. {{ :en:hw:04-hmi:weintek_ip_series_03_confirm_system_properties.png?direct |}} Nyní uvidíte hlavní panel. Na vrchní liště je umístěna řada panelů **Home**, **Project**, **Object** apod. - pro účely tutoriálu mu budeme říkat "Lišta". Na levé straně pod položkou **Windows** vidíte seznam oken. Každé okno představuje grafickou reprezentaci toho, co se bude zobrazovat na HMI displeji. Ve středu obrazovky se nachází hlavní panel s prázdným plátnem. Toto okno nese název WINDOW_010, neboli výchozí název okna, které se zobrazí po restartu zařízení. {{ :en:hw:04-hmi:weintek_ip_series_04_main_window.png?direct |}} Nejprve vytvoříme textový objekt a umístíme jej na pracovní plátno. Na **liště** klikněte na **Objekt** a v sekci **Draw** klikněte na symbol **A**. {{ :en:hw:04-hmi:weintek_ip_series_05_adding_text.png?direct |}} V dialogu **New text** můžete upravovat širokou škálu parametrů. Zadáme do něj žádaný text, nastavíme velikost fontu na 20 a klikneme na **OK**. {{ :en:hw:04-hmi:weintek_ip_series_05_seting_text.png?direct |}} Po potvrzení pomocí **OK** se dialogové okno zavře a text nyní lze umístit do okna. Výsledek by měl vypadat zhruba následovně: {{ :en:hw:04-hmi:weintek_ip_series_06_placed_text.png?direct |}} Textový objekt je statický, tj. jeho obsah nelze dynamicky měnit pomocí proměnné či registru. Pro zobrazování hodnot lokální HMI proměnné či Modbus registru je nutné použít číselný box. Na **liště** klikněte na panel **Object** a v sekci **Input** vyberte **Numeric**. {{ :en:hw:04-hmi:weintek_ip_series_08_adding_numeric.png?direct |}} V dialogovém okně **New Numeric Object** nyní vložíme popisky. Popisek funguje jako komentář a nezobrazí se nikde jinde. V našem případě chceme zobrazovat teplotu, můžeme proto odznačením vypnout možnost **Allow Input**, čímž znemožníme uživateli displeje hodnotu měnit. Pak přejdeme k boxu **Read address**, který slouží k namapování **číselného** objektu na určitou proměnnou či registr. Jelikož jsme ještě displej nepropojili s kontrolérem, prozatím box **Read address** ponecháme prázdný. Číselný objekt tak bude zobrazovat obsah lokální proměnné č.0. S tímto nastavením se nyní zdržovat nemusíte, slouží pouze pro ukázku. {{ :en:hw:04-hmi:weintek_ip_series_09_setting_numeric.png?direct |}} Posledním krokem je změna vzhledu obrazovky. Ve výchozím stavu bude program Easybuilder okolo objektů zobrazovat nevzhledné okraje, my se jich proto zbavíme kliknutím na panel **Shape** a odstraněním označení ve volbě **Use shape**. Potvrdíme kliknutím na **OK**. {{ :en:hw:04-hmi:weintek_ip_series_10_removing_numeric_shape.png?direct |}} Nový objekt umístíme do okna stejně jako jsme učinili u textového pole. Výsledek by měl vypadat zhruba takto: {{ :en:hw:04-hmi:weintek_ip_series_11_placed_numeric.png?direct |}} V tuto chvíli již máme hotová některá základní nastavení oken, nyní se proto můžeme podívat, jak budou okna vypadat na HMI displeji. EasyBuilder Pro v tomto uživatelům vychází vstříc možností simulovat projekt přímo na počítači bez nutnosti vlastnit samotné HMI zařízení. Na **liště** klikněte na **Projekt**, čímž zobrazíte dvě tlačítka: **Offline simulation** a **Online simulation**. Obě volby projekt zkompilují a spustí jej v místním okně, kde s ním můžete interagovat stejně jako s HMI displejem. **Online simulation** spustí simulaci a zároveň i sběr dat z nakonfigurovaných Modbus slave zařízení, případně spustí Modbus server a umožní tak HMI panelu, aby přijímalo data z kontrolérů. **Offline simulation** pak spustí pouze simulaci. Jelikož stále nemáme nastavené žádné připojení, zvolíme **Offline simulation**. Po potvrzení volby se objeví průběh kompilace projektu, a po několika vteřinách se zobrazí i simulovaný HMI displej. {{ :en:hw:04-hmi:weintek_ip_series_12_first_simulation.png?direct |}} Prozatím jsme vytvořili jen jednoduché okno zobrazující číselnou hodnotu nějakého registru. Abychom proto tomuto tutoriálu dodali více hloubky, naučíme se, jak vytvořit objekt, který bude ve své finální podobě ovládat reléový výstup na PLC Unipi. Prvním krokem k tomuto cíli je umístění nového objektu nazvaného **Set bit**. Nalezneme jej v panelu **Object**. {{ :en:hw:04-hmi:weintek_ip_series_13_adding_button.png?direct |}} V dialogovém okně **New Set Bit Object** nyní vložíme komentář. Opět - tento komentář se nebude nikde v okně zobrazovat a slouží pouze pro orientování se v projektu. Box **Write address** je velmi podobný výše zmíněnému bloku **Read address**, v tomto případě je ale hodnota boxu určována zapsáním hodnoty tlačítka (ON/OFF, TRUE/FALSE) do **bitové** proměnné (oproti číselnému objektu, který jsme mapovali na **word** proměnnou. Jelikož stále nejsme připojeni k PLC, prozatím necháme box prázdný. Naopak změníme políčko **Attribute**, které určuje, jakým způsobem bude tlačítko ovlivňovat hodnotu. Zde vybereme možnost **Momentary**, díky čemuž se bude tlačítko chovat jako spínač. Při jeho stisknutí a podržení se do registru **Write address** zapíše hodnota 1, po puštění tlačítka se do registru zapíše 0. {{ :en:hw:04-hmi:weintek_ip_series_14_bit_object_configuration.png?direct |}} Nyní už jen změníme vzhled tlačítka. Klikněte na panel **Shape** a změňte obrázek tlačítka kliknutím na **Picture library**. {{ :en:hw:04-hmi:weintek_ip_series_15_picture_library.png?direct |}} V knihovně **Picture library** máte k dispozici velké množství různých obrázků tlačítek, případně můžete nahrát své vlastní. My vybereme hned první možnost a klikneme na **OK**. {{ :en:hw:04-hmi:weintek_ip_series_16_round_picture.png?direct |}} Vraťme se nyní do dialogu **Shape**, kde přidáme poslední vylepšení v podobě změny barvy tlačítka na světle zelenou. Potvrdíme **OK**. {{ :en:hw:04-hmi:weintek_ip_series_17_set_color.png?direct |}} Nyní můžeme tlačítko umístit na pracovní plátno. {{ :en:hw:04-hmi:weintek_ip_series_18_window_with_button.png?direct |}} Rovněž můžeme spustit simulaci projektu kliknutím na **Project** na **liště** a výběrem **Offline simulation**. Teď již můžete tlačítko stisknout. {{ :en:hw:04-hmi:weintek_ip_series_19_pressed_button.png?direct |}} V této chvíli již můžeme projekt nahrát do HMI zařízení. K tomu budeme nejprve potřebovat jeho IP adresu. Ve výchozím nastavení je IP adresa zařízení určena DHCP serverem a objeví se přímo na displeji. V pravém dolním rohu obrazovky je umístěna levá šipka, kliknutím na ni pak zobrazíte malé menu. Pak klikněte na ikonu stránky se symbolem (I), čímž IP adresu zobrazíte. Po získání IP adresy můžeme spustit samotné nahrávání. Na **liště** klikněte na **Project** a poté na **Download**. {{ :en:hw:04-hmi:weintek_ip_series_20_download.png?direct |}} V dialogovém okně **Download** je třeba pouze vyplnit zjištěnou IP adresu. Poté klikněte na **Download**. HMI zařízení se restartuje a nahraje Váš projekt. Výsledek by měl vypadat stejně jako simulace, tj. zobrazená teplota bude 0 a stisknutí tlačítka nemá žádný efekt. ===== Komunikace mezi HMI a PLC Unipi ===== V této fázi máme plně funkční HMI design, který nyní připojíme k Unipi. Nejprve je ale potřeba si alespoň rámcově vysvětlit možnosti výměny dat, které máme na výběr. HMI zařízení může s Unipi komunikovat dvěma různými protokoly: - Modbus TCP přes Ethernet - Modbus RTU přes dvouvodičovou linku RS485 V rámci protokolu Modbus je komunikace vždy zahajována master zařízením (klientem). Slave zařízení (server) odpovídá příkazům zaslaným masterem. Master tak odečítá data ze slave zařízení, či do něj naopak data zapisuje. Jelikož Unipi i displeje Weintek série IP mohou fungovat v obou rolích, máme dvě možnosti a závisí pouze na nás, pro kterou se rozhodneme. ==== Unipi jako master, HMI jako slave ==== Toto je tradiční způsob výměny dat. PLC vyčítá data z Modbus slave zařízení (rozšiřující moduly Unipi, elektroměry apod.), rozhodne o jejich využití a pak je nahraje do slave zařízení. **Výhody:** * Tradiční metoda, která bude s největší pravděpodobností vyhovovat stávající infrastruktuře. **Nevýhody:** * HMI je třeba konfigurovat v Mervisu v roli Modbus slave zařízení, což vyžaduje složité parsování dat * Neexistuje zde snadný a rychlý způsob ujištění se, že spojení s Unipi je aktivní a registry obsahují aktuální data ==== HMI jako master, Unipi jako slave ==== U této metody je výměna dat mezi HMI a PLC iniciována HMI zařízením. To vyčítá teplotní data z kontroléru, který následně požadované údaje odesílá přes registr Modbus TCP Server. ** Výhody: ** * HMI může detekovat přerušení spojení a odpovídajícím způsobem reagovat * Jednodušší vytváření na straně Mervisu ** Nevýhody: ** * Při spojení přes RS485 může jako master sloužit pouze jedno zařízení. Pokud je role masteru již obsazena kontrolérem, je třeba využít jiného RS485 spojení s HMI. Ve zbytku tutoriálu budeme používat právě tuto metodu. ===== Nastavení Unipi pro odesílání údajů o teplotě a hodnoty reléového výstupu ===== Pro účely naší ukázky budeme potřebovat kontrolér Unipi se spuštěným Mervisem. Všechny důležité informace o Mervisu naleznete v [[cs:sw:01-mervis|sekci Mervis]]. Dalším krokem je nastavení odečítání teploty z 1-Wire teploměru. Návod naleznete na [[cs:sw:01-mervis:attaching-1-wire-devices-hidden|tomto odkazu]] K vyčítání teploty přes Modbus TCP je třeba nejprve vytvořit kanál Modbus TCP serveru. I zde máte k dispozici manuál: [[cs:sw:01-mervis:setting-modbus-server-hidden]]. Nyní je třeba určit, jaký typ dat budeme pro Modbus TCP server používat. Protokol Modbus zná pouze dva typy dat - 16-bitové registry pro číselné hodnoty a jednobitové coily pro stavové hodnoty. V Mervisu je teplota vyjádřena reálným číslem, tj. (2-bytový unsigned integer). K přenosu této hodnoty pomocí Modbusu bychom ji museli rozdělit na dva 16-bitové registry a následně je na straně HMI zařízení opět složit dohromady, takový postup je ale mimo záběr tohoto tutoriálu. Druhou možností je konverze teplotní hodnoty tak, aby zhruba odpovídala 16-bitovému registru. Předpokládejme nyní, že měříme teplotu v pokoji, která může nabývat hodnoty 0-40 °C s přesností minimálně 0,1 °C. To znamená, že je třeba pokrýt hodnoty 0-400, které do 16-bitové registru snadno vměstnáme. Podívejme se nyní, jak toho dosáhneme metodou funkčních bloků. {{ :en:hw:04-hmi:weintek_ip_series_22_conversion_program.png?direct |}} Na straně vstupů máme proměnné ''sensor_temperature'', která vrací hodnotu z 1-Wire senzoru. Na straně výstupů pak je k dispozici proměnná ''modbus_temperature'' reprezentující hodnotu registru 1 exportovanou z Modbus TCP serveru. Podle teploměru je aktuální teplota 26,8125 °C. Pomocí bloku ''mul'' ji vynásobíme deseti na hodnotu 268,125. Tato hodnota je typu "real" a je tak potřeba ji převést na integer, abychom ji mohli použít pro daný typ registru. Blok ''to_uint'' převádí jakoukoliv vstupní hodnotu na integer, a pokud je vstupní hodnota menší než 0, na výstupu vrátí rovněž nulu - od toho se odvíjí název datového typu **unsigned integer**. S hodnotami jsme trochu zašvindlovali, pro naše potřeby ale vše funguje uspokojivě. Nyní můžeme danou proměnnou vyexportovat na Modbus TCP server. V Mervis IDE klikněte na zařízení Modbus TCP serveru. {{ :en:hw:04-hmi:weintek_ip_series_23_modbus_tcp_server.png?direct |}} V hlavním okně se objeví seznam registrů. Seznam je nyní prázdný, my proto jeden registr přidáme. Klikněte do prázdného prostoru pravým tlačítkem a vyberte **Přidat registr**. {{ :en:hw:04-hmi:weintek_ip_series_24_add_register.png?direct |}} Objeví se nový registr. Nyní změňte hodnotu **Prostá transformace** na **Identita**. Proměnnou modbus_temperature již máme dostupnou v požadovaném formátu. {{ :en:hw:04-hmi:weintek_ip_series_25_identity.png?direct |}} Volbu **Funkce** necháme na možnosti **Holding register**. Klikněte na **n/a** pod **Namapované proměnné** a do vyhledávače vložte **modbus_temperature**. Proměnná by se měla objevit v seznamu. Označte ji kliknutím na její název. {{ :en:hw:04-hmi:weintek_ip_series_26_mapped_variable.png?direct |}} Nyní je třeba přidat Modbus coil k řízení reléového výstupu. Na dolním okraji panelu zařízení je seznam s názvem **Digitální**. Klikněte na ni {{ :en:hw:04-hmi:weintek_ip_series_27_digital_coil.png?direct |}} Objeví se prázdný seznam digitálních registrů. Klikněte do volného prostoru pravým tlačítkem a zvolte **Přidat coil**. {{ :en:hw:04-hmi:weintek_ip_series_28_add_coil.png?direct |}} Dvojitě klikněte na **n/a** pod **Namapované proměnné** a vepište **RO_2.01**. Pokud na Vašem PLC daný reléový výstup nemáte, můžete použít výstup DO_1.01. Následně vyberte proměnnou ze seznamu. {{ :en:hw:04-hmi:weintek_ip_series_29_mapped_variable.png?direct |}} Nahrajte celou sestavu do kontroléru a spusťte jej v **plném módu**. ===== Nastavení HMI pro odečítání dat z Mervisu ===== Nyní máme vše na straně Mervisu připravené, a můžeme provést nastavení PLC na HMI zařízení. Na **liště** klikněte na **Home** a poté na **System parameters**. {{ :en:hw:04-hmi:weintek_ip_series_30_system_properties.png?direct |}} V dialogu **System parameters** klikněte na **New...** {{ :en:hw:04-hmi:weintek_ip_series_31_new_device.png?direct |}} Název v kolonce **Name** změňte na něco více popisného, a poté klikněte na možnost **Device type**. {{ :en:hw:04-hmi:weintek_ip_series_31_new_modbus_device.png?direct |}} Ze seznamu zařízení vyberte **Modbus IDA** a ze submenu vyberte **MODBUS TCP/IP**. Potvrďte kliknutím na **OK**. {{ :en:hw:04-hmi:weintek_ip_series_32_device_properties.png?direct |}} V boxu **IP** klikněte na **Settings**. {{ :en:hw:04-hmi:weintek_ip_series_33_ethernet_settings.png?direct |}} V dialogu **IP address settings** nastavte parametry, které jste použili u Modbus TCP serveru v Mervis IDE. Vše potvrzujte kliknutím na **OK**, dokud neuvidíte hlavní panel. {{ :en:hw:04-hmi:weintek_ip_series_34_ip_address_settings.png?direct |}} Po dokončení konfigurace spojení je teď třeba spárovat objekty **Numeric** a **Set bit** se správnými zařízeními a registry. Dvojitě klikněte na **Numeric** objekt zobrazující teplotu. V dialogu **Numeric Object's Properties** vyberte v rozbalovacím menu **Device** Unipi kontrolér {{ :en:hw:04-hmi:weintek_ip_series_36_select_the_plc.png?direct |}} Kolonku **Address** nastavte na **4x**, což je označení holding registru. Adresu ponechte na hodnotě 1 - tato hodnota určuje číslo registru v Mervisu. {{ :en:hw:04-hmi:weintek_ip_series_37_4x_address_type.png?direct |}} Nyní můžete spustit online simulaci kliknutím na **Project** na **liště** a poté kliknutím na **Online simulation**. Pokud jste vše provedli správně, měli byste vidět toto okno: {{ :en:hw:04-hmi:weintek_ip_series_39_online_with_wrong_temperature.png?direct |}} Vidíte zde číslo 291, které je již převedené. My ale potřebujeme zobrazit jej ve formátu 29,1, musíme proto změnit formát číselného objektu. Zavřete simulaci a opět dvojitě klikněte na teplotní číselný objekt. V panelu **Numeric Object's Properties** vyberte panel **Format**, kde změňte **Left of decimal Pt.** na **2**, a **Right of decimal Pt.** na **1**. Potvrďte kliknutím na **OK**. {{ :en:hw:04-hmi:weintek_ip_series_40_temperature_format.png?direct |}} Opět spusťte online simulaci kliknutím na **Online simulation**. Teplota by se již měla zobrazovat správně. {{ :en:hw:04-hmi:weintek_ip_series_41_correct_temperature_format.png?direct |}} Posledním krokem je adresace tlačítka. Dvojitě klikněte na tlačítko a v dialogu **Set Bit Object's Properties** změňte zařízení pod **Write address** na kontrolér Unipi a adresu na **0x** neboli označení coilu (box **Address**). Číslo coilu nechte na hodnotě **1**. {{ :en:hw:04-hmi:weintek_ip_series_42_set_bit_attribute.png?direct |}} Spusťte online simulaci kliknutím na **Online simulation** a zkuste tlačítko stisknout. Pokud jste na něj v Mervisu namapovali relé výstup, příslušné relé by mělo sepnout. Pokud jste na tlačítko namapovali digitální výstup, na kontroléru by se měla rozsvítit příslušná LED dioda. Pokud vše funguje tak, jak má, můžete celý projekt nahrát do HMI. ===== Ke stažení ===== * {{ :en:sw:01-mervis:weintek_mt8051ip_testing_easybuilder.zip |Soubory EasyBuilder projektu}} * {{ :en:sw:01-mervis:weintek_mt8051ip_testing_mervis.zip |Soubory Mervis projektu}} * [[files:software:tools:00-start#weintek_easybuilder_pro|Weintek EasyBuilder Pro software]] * {{ :en:sw:01-mervis:ebpro_manual.pdf |Weintek EasyBuilder Pro - kompletní manuál (EN)}} * [[https://www.unipi.technology/shop/product/download?fileId=404|Weintek MT8051iP datasheet (EN)]]