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í HMI Weintek a Unipi protokolem BACnet ve vývojovém prostředí Mervis IDE.

Co budete potřebovat?


V návodu jsme použili:

Příklad zapojení:

Pro základní konfiguraci řadiče Unipi a instalaci Mervisu do vašeho počítače postupujte podle 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 zde, nebo si můžete stáhnout nejnovější verzi z 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ší.

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.

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.

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.

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

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.

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.

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ě:

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.

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.

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.

Nový objekt umístíme do okna stejně jako jsme učinili u textového pole. Výsledek by měl vypadat zhruba takto:

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.

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.

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.

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.

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.

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.

Nyní můžeme tlačítko umístit na pracovní plátno.

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.

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.

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.

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:

  1. Modbus TCP přes Ethernet
  2. 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.

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 sekci Mervis.

Dalším krokem je nastavení odečítání teploty z 1-Wire teploměru. Návod naleznete na 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: Nastavení Modbus slave (serverového) zařízení.

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

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.

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.

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.

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.

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

Objeví se prázdný seznam digitálních registrů. Klikněte do volného prostoru pravým tlačítkem a zvolte Přidat coil.

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.

Nahrajte celou sestavu do kontroléru a spusťte jej v plném módu.

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.

V dialogu System parameters klikněte na New…

Název v kolonce Name změňte na něco více popisného, a poté klikněte na možnost Device type.

Ze seznamu zařízení vyberte Modbus IDA a ze submenu vyberte MODBUS TCP/IP. Potvrďte kliknutím na OK.

V boxu IP klikněte na Settings.

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.

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

Kolonku Address nastavte na 4x, což je označení holding registru. Adresu ponechte na hodnotě 1 - tato hodnota určuje číslo registru v Mervisu.

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:

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.

Opět spusťte online simulaci kliknutím na Online simulation. Teplota by se již měla zobrazovat správně.

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.

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.