Jste zde

IoT MQTT prakticky v automatizaci - 4.díl - HMI server cMT-SVR

Ve 4. dílu o MQTT si ukážeme, jak snadno lze v průmyslovém HMI serveru Weintek cMT-SVR zrealizovat příjem hodnot v režimu Subscriber, které byly předtím zadány a odeslány v režimu Publisher. Lze tak snadno přes internetový MQTT broker přenášet řídící data mezi různými stroji s HMI / PLC připojenými kdekoliv na světě.

V 3. díle seriálu o MQTT jsme si ukázali, jak je možné snadno zrealizovat vysílání zadaných či naměřených hodnot pomocí MQTT zpráv z paměti HMI panelu Weintek MT8073iE. Dnes si ukážeme na dalším zařízení hned celý řetězec od vysílání hodnot (režim Publisher) z jedné oblasti paměti, přenis přes vzdálený internetový MQTT broker a zpět  příjem stejných hodnot do paměti stejného zařízení v režimu Subscriber s jejich následným porovnáním. Samozřejmě v případě úspěšného přenosu by měli být stejné. Navíc však lze v reálném čase pozorovat (případně měřit) i zpoždění mezi odesláním a následným příjmem.

Jedno z aktuálních průmyslové zařízení na trhu (nepočítačového typu), které přímo podporuje nejen snadné odesílání i současně příjem MQTT zpráv, je vizualizační server Weintek cMT-SVR. Ten jsem již obecně představil v článku "TEST - HMI vizualizační server Weintek cMT-SVR". Jeho výhodou je že, prakticky bez složitého programování lze převzít libovolná data či naměřené hodnoty z libovolného PLC či měřící jednotky podporující některý z běžných komunikačních protokolů (Modbus-RTU, Modbus-TCP, Profibus-DP, Profinet, CAN, Bacnet atd.) a ty nejen zobrazit, ale současně průběžně vysílat v podobě MQTT zpráv na libovolné další zařízení připojené na internet kdekoliv na světě. Současně také lze i v opačném směru z libovolného zařízení (podporující MQTT komunikaci) připojeného na internet přijímat data (hodnoty či stavy bitů) a ty nejen zobrazovat, ale i opět vyslat po průmyslové síti do libovolného PLC: Data mohou představovat například řídící data pro regulaci, spuštění / vypnutí pohonu, zahájení či ukončení měření apod.

MQTT není primárně určeno pro rychlý přenos velkého množství dat v krátkých periodách, takže se v průmyslové oblasti MaR (Měření a Regulace) hodí hlavně právě pro zobrazování klíčových hodnot nebo naopak zasílání hlavních řídích povelů podřízené "inteligentní" jednotce, která následně sama realizuje rychlé procedury automatického ovládání a regulace pohonů, vytápění, vážení, detekce atd. MQTT tedy primárně neslouží k přenosu nezpracovaných hodnotu přímo ze snímače nebo řídících hodnot přímo např. do pohonu, ale pro komunikaci inteligentních jednotek, které velké množství informací sami zpracovávají a vysílají jen potřebné minimum důležitých řídících hodnot. 

Zprovoznění režimu Subscriber u Weintek cMT-SVR

Nejprve vyjděme z nastavení MQTT vysílání zpráv v režimu Publisher ukázaného v předchozím 3. díle u HMI panelu MT8073iE. Jendnotka Weintek cMT-SVR totiž využívá zcela stejné bezplatné programovací prostředí EasyBuilder PRO. V MQTT nastavovacím okně však minule v projektu s definovaným zařízením  MT8073iE bylo možné vidět jen záložku "MQTT Topic Publisher". U projektu pro zařízení cMT-SVR je však možné ve stejném okně mimo to vidět i další záložku "MQTT Topic Subscriber", která nás bude primárně z pohledu nastavení zajímat dnes.

Dříve, než začneme režim Subscriber nastavovat, je dobré si uvědomit, že oba režimy Publisher i Subscriber zde sdílejí společné nastavení parametrů MQTT brokeru, tedy nelze v jednom cMT-SVR zařízení současně na jeden broker vysílat a z jiného data přijímat. V praxi by to však nemělo vadit, protože tento režim není příliš běžný. Jsme totiž limitováni jen samotnou volbou (IP adresou a TCP kanálem) brokeru a přístupovým heslem, ale již lze bez problémů v režimu Publisher i Subscriber volit odlišné názvy téma (topic). Tedy lze hodnoty vysílat (publikovat) na jiný "topic" než, ze kterého se přijímají. Toto je naopak nejběžnější funkce, protože v praxi nemá obvykle valného smyslu vysílat na internet data, které si následně opět přijmu. Nicméně pro potřeby odzkoušení celého řetězce komunikace "Publisher->Broker->Subscriber" nebo ukázky funkce je to naopak ideální konfigurace, protože nepotřebujeme 2 zařízení k testu, ale jen jedno. Možná by tuto "komunikační smyčku" mělo mít v nějakém servisním menu každé zařízení využívající MQTT, aby bylo možné snadno v případě problému s přenosem kdykoliv odzkoušet, samotnou "průchodnost sítě a brokeru".

Pro aktivaci režimu MQTT Subscriber je v programovacím Weintek softwaru EasyBuilder PRO opět nutné otevřít okno "MQTT" kliknutím na stejně nazvanou růžovou ikonu v záložce "IIoT". Dostaneme se tak do základního okna nastavení, kde MQTT broker server (zde označovaný jen jako "Server"), a záložku "MQTT Topic Publisher" nastavíme stejně jako v 3. díle u HMI panelu MT8073iE. Pouze jsem pro snadné a jasné rozlišení změnil téma (topic) z minulého "hwtest/zHMI_doPC" (minule totiž jako Subscriber pracoval PC program MQTT.fx) na aktuální "hwtest/zHMI_doHMI", i když ani PC dnes z komunikace zcela nevynecháme. Využijeme možnosti zaregistrovat u brokeru současně (paralelně) více odběratelů (subscriberů), a tak můžeme přenos nejen sledovat přenos ve vizualizaci cMT-SVR, ale také současně kontrolovat "surový" formát přenášených dat v PC v programu MQTT.fx.

Nastavení režimu MQTT Publisher v programovacím softwaru EasyBuilder.

Pro aktivaci režimu MQTT subscriber tedy naopak zvolíme záložku "MQTT Topic Subscriber", kde vložíme novou položku do seznamu příjmu tlačítkem "New..." (později pak pro editaci již dříve vytvořené položky se vyžívá tlačítko "Settings..."). Jako je možné vytvořit současně více vysílacích u publikovacích kanálů, tak je také možné vytvořit více různých přijímacích subscriber kanálů každý přihlášený u stejného brokeru na jiné téma (topic). Pro přehlednost dnes opět založíme nejjednodušší variantu v podobě jednoho přijímacího kanálu - v mém případě nazvaný "Subscriber".

V něm v záložce "General" je nutné zcela správně nastavit název odebíraného téma - v mém případě tedy "hwtest/zHMI_doHMI", tedy zcela stejné jako nastaveno v režimu Publisher. Ve vedlejší záložce "Address" se pak stejně jako v nastavení Publisheru definuje seznam proměnných v paměti zařízení, zde však definují, kam se přijatá data uloží. Velmi důležité je tak vytvořené pořadí proměnných (paměťových míst), protože přijatá data přijdou ve stejném pořadí, jak byla odeslána a ve stejném pořadí se i uloží do nastavených proměnných v seznamu. Pokud tedy chceme zde v testu, aby se hodnota pojmenovaná a odesílaná v Publisheru jako "Hodnota1" byla i následně přijala jako "Hodnota1", "Hodnota2" následně přijala jako "Hodnota2" atd. je nutné ji v seznamu příjmu uvést na stejné pozici jako při odeslání - tedy prakticky zcela zkopírovat seznam z režimu Publisher, pouze se změnou paměťových adres. V mém případě jsou hodnoty odesílány z paměťových adres LW-0 až LW-3 a přijímány / ukládány na paměťová místa LW-10 až LW-13 v případě číselných hodnot a z LW-50 na LW-80 v případě ASCII textu.

 

Nastavení režimu MQTT Subscriber v programovacím softwaru EasyBuilder při projektu s nastaveným zařízením cMT-SVR.

Samozřejmě pokud chcete z nějakého důvodu odeslanou proměnnou "Hodnota1" přijmout a uložit jako například "Hodnota4" stačí prostě jen paměťové místo LW-xx uvést v seznamu v režimu Subscriber na první pozici. Nicméně vždy je důležité dodržet struktura dat, tedy když je v Publisheru odesílá první hodnota např. typu "16-bit. Integer" je nutné i v konfiguraci Subscriberu na první pozici seznamu proměnných nastavit typ dat "16-bit Integer". Jinak bude celý příjem posloupnosti dat chybný! V mém testovaném příkladu, kde se na poslední 5. pozici v seznamu proměnných Publisheru odesílá STRING řetězce o 10 znacích, je hlavně nutné dodržet opět v nastavení seznamu Subscriberu opět na 5. pozici nastavit příjem STRING řetězce o 10 znacích. Takto je vytvořen příjem.

Pak již jen stačí si vytvořit nějaké zobrazení (vizualizaci) přijatých hodnot, například je možné vytvořenou vizualizaci pro vysílací režim Publisher zkopírovat na obrazovku zobrazení příjmu Subscriber a jen změnit hodnoty paměťových míst na ty pro příjem - v mém případě tedy výše uvedené LW-10LW-13.

Pro test vytvořené základní ovládací obrazovky pro server Weintek cMT-SVR: zadání odesílaných dat v režimu Publisher (obr. vlevo) a obrazovka příjmu dat v režimu "Subscriber" (obr. vpravo).

Pak již jen stačí tradiční "vícehmat": Save/Compile/Download a již lze spustit utilitu cMT Viewer sloužící pro připojení na zařízení cMT-SVR a zobrazení vytvořené a do něj nahrané vizualizace na obrazovce např. notebooku nebo tabletu (více informací o cMT Viewer - viz test o cMT-SVR "IoT MQTT prakticky v automatizaci - 3.díl - HMI MT8073iE"). Vytvořeném obrazovce "HW test publisher" je možné z klávesnice notebooku zadat libovolné hodnoty Hodnota 1 až Hodnota 4 a ASCII text, který by se následně po několika sekundách měl objevit na obrazovce "HW test subscriber".

 

Ukázka z testu přenosu dat pomocí MQTT komunikace při zobrazení v cMT-Vieweru: vlevo - dat zadaná pro režim odeslání "Publisher", vpravo - data přijata v režimu "Subscriber".

Přenos není zcela okamžitý a v závislosti na zatížení sítě i MQTT brokeru může přenos být přenos hodnot i několika sekundové zpoždění. Současně se lze na paralelně k odběru přihlášeném PC s klientem MQTT.fx podívat, jak v jakém formátu se přesně data přenáší.

Současný příjem / odběr dat v PC programu MQTT.fx, kde lze dobře vidět reálnou strukturu přenášených dat ve formátu JSON.

A to je vše. Dokázali jsem v základním režimu zprovoznit celý řetězec MQTT komunikace pomocí zařízení cMT-SVR podobně jako v 1.díle v PC v programu MQTT.fx.

Závěr

Po dnešním 4. díle již tedy umíme vše potřebné k odesílání a příjmu dat pomocí MQTT zpráv a tak v příštím 5. díle již navážeme konkrétní praktickou průmyslovou aplikací. Budeme měřit teplotu a monitorovat stav vstupů měřící jednotky a přenášet přes Modbus-TCP na zařízení Weintek cMT-SVR, kde je odešleme pomocí MQTT přes internetový broker do PC a následně z PC opět pomocí MQTT budeme ovládat výstupy stejné měřící jednotky. Sledujte proto server automatizace.hw.cz .

Odkazy:

Hodnocení článku: