V minulých dvou dílech (1.díl a 2.díl) jsem si přiblížili teorii, princip a funkci MQTT komunikace v oblasti počítačů. Stejně však ji lze použít i v oblasti průmyslu pro potřeby snadného zaslání malého množství dat a informací s velkou časovou periodou (malou frekvencí). Narozdíl od jiných průmyslových datových komunikačních systémů, kde se v naváže spojení a následně trvale udržuje a proudí po něm data, u MQTT se komunikace s MQTT serverem (brokerem) naváže vždy jen dočasně během občasného přenosu. V případě poskytovatele informací, tedy tzv. MQTT Publisher jednotky, tak k navázání komunikace dojde vždy jen při potřebě vyslat data, což obvykle bývá buď jen v případě významné změny jejich stavu (hodnoty) nebo dovršení pevně přednastavené časové periody pravidelného vyslání dat.
Tím, jak začíná být protokol MQTT populární, i výrobci průmyslových zařízení začínají do svých programovatelných jednotek a HMI panelů implementovat funkce a bloky snadného použití MQTT. Je však dobré si při volbě PLC či HMI dát předem pozor na to, jaké funkce u MQTT podporují. Zatímco některé podporují jak režim vysílání dat (režim Publisher), tak i režim odběru / příjmu dat (režim Subscriber), některá zařízení mohou mít implementovanou jen funkci Publisher. Mezi takové zařízení například patří HMI panel Weintek MT8073iE, se kterým jste se mohli na stránkách serveru automatizace.hw.cz již několikrát setkat (například naposledy v testu přístupu k HMI přes cloud funkci EasyAccess 2.0 - "TEST: Vzdálený přístup do HMI přes internet - EasyAccess 2.0 - 2. díl").
HMI Weintek MT8073iE a zprovoznění MQTT
HMI panel Weintek MT8073iE je svou výbavou dvěma zcela oddělenými ethernetovými porty a podporou gateway i DNS IP adresy na jeho prvním ethernetovém portu pro MQTT funkci ideálně hardwarově vybaven. Navíc společnost Weintek i implementovala do svého zdarma stáhnutelného PC programovacího prostředí EasyBuilder PRO od verze 5.06.01.115 novou speciální položku s názvem "IIoT", což znamená "Industrial Internet of Things". Pod ní se pak skrývá položka MQTT, která již v sobě obsahuje kompletní nastavení a vše potřebné ke zprovoznění MQTT režimu Publisher.
Jako první MQTT okno se otevře základní přehledová nabídka s navigací na další nastavení. Tedy nejdříve je nutné MQTT funkci aktivovat zaškrtnutím políčka "Enable" a až poté se objeví další možnosti, jako nastavení "Server" a "Topic".
Základní nastavovací okno MQTT režimu Publisher v EasyBuilder PRO pro HMI panel Weintek MT8073iE.
V prvé řadě je nutné nastavit komunikační parametry pro připojení k MQTT brokeru v okně "MQTT Server-General", které se zobrazí po kliknutí na položku "Server - Settings". Broker může být využit lokální například na lokálním podnikovém ethernetovém serveru (pak jen zaškrtnout stačí zvolit "Localhost") , nebo jako vzdálený internetový a pak je nutné přesně nastavit jeho absolutní IP adresu. Zde v našem případě na základní ukázku funkce využijeme volný internetový MQTT broker mqtt.ihmi.net přímo provozovaný společností Weintek na IP adrese 52.208.201.54. Právě pro zadání do HMI panelu Weintek je potřeba znát přímo IP adresu, nikoliv symbolickou adresu. Její zadání zde není podporované. Pak již je nutné jen nadefinovat TCP kanál. Zde pro první základní testy jsem využil základní kanál 1883 nepodporující šifrování. Proto není vhodné po něm zasílat žádná citlivá data a opravdu jej využít jen jako testovací. Další položky již pro prvni zkoušky také není nutné vyplňovat. Principiálně však jde o stejné možnosti jako v PC softwarovém MQTT klientu MQTT.fx, který byl představen v 2. díle a který zde mimo jiné dále použijeme v testování jako MQTT subscriber.
Nastavení MQTT komunikace HMI panelu MT8073iE s MQTT brokerem.
Dále je nutné nastavit téma "Topic", pod jakým se data budou na brokeru publikovat a na který se pak budou následně přihlašovat k odběru i příjemci - odběratelé (Subscriber). To se provádí ze základního okna "MQTT" kliknutím na položku "New" pro vytvoření / přidání úplně nového téma, nebo "Settings..." pokud chceme jen modifikovat již dříve vytvořené nastavení. Následně se otevře okno "MQTT Topic Publisher", kde se v záložce "General" nastavují obecné parametry publikování, jako název téma ("Topic"), pod kterým budou data publikována na brokeru a za jakých okolností se mají data na broker vyslat ("Sending mode"). Zde je možné zvolit vyslání po změně hodnoty dat ("Trigger-based") nebo periodické časové vysílání ("Time-based"). Perioda se zadává v sekundách. Protože IoT komunikace by měla být energeticky nenáročná a neměla přetěžovat síť, měla by se tato perioda v případě jejího použití volit co nejdelší. I v toto případě testování je dobré, když se nebude MQTT subscriber, který bude přijímat vyslaná data, nebude plnit počtem zpráv příliš rychle, aby jsem mohli dobře správnou funkci komunikace snadno vyhodnotit. Já si pro zkoušení zvolil obě možnosti, tedy aktuální hodnoty se budou do broker odesílat v pravidelných intervalech 10 sekund i vždy okamžitě po jejich změně.
Nastavení téma "Topic" pro publikování HMI MT8073iE na MQTT brokeru.
Nakonec je nutné nadefinovat, co se má za hodnoty / proměnné odesílat. Jako zdroj dat zde slouží celá datová paměť HMI panelu, tj. všechny jeho registry, nebo pro připojení libovolného PLC či libovolného zařízení přes Modbus-TCP, Modbus-RTU či jinou průmyslovou sběrnici i hodnoty z jejich paměti. HMI panel tak vlastně může pracovat i taková MQTT brána (převodník), byť v tomto případě jen v režimu Publisher. Zde v ukázce si pro jednoduchost zatím vystačíme jen z datovými WORD registry HMI panelu, které nesou označení "LW". Pro tento článek jsem si pro generování odesílaných hodnot vytvořil jednoduchou zadávací obrazovku se čtveřicí číselných proměnných "Hodnota 1" až "Hodnota 4" přiřazené do paměťových registrů LW-10 až LW-13 a jednoho zadání 10-znakového ASCII řetězce, který obsazuje 10 paměťových registrů od LW-20. Tyto registry jsem tedy také nastavil pro publikování na broker iHMI.net. To se provádí také v okně "MQTT Topic Publisher", ale v záložce "Address". Zde se postupně vloží požadované registy do seznamu kliknutím na tlačítko "New". Tlačítko "Settings..." slouží k modifikaci již vytvořených položek.
Vytvoření jednoduchého ovládací obrazovky s dotykovým zadáváním hodnot, které má HMI panel vyslat na MQTT broker.
Také je možné si na obrazovku HMI panelu "vynést" indikaci stavu komunikace s brokerem pro monitorování navázání spojení po nadefinování dvou LW integer registrů v okně nastavení MQTT serveru v záložce "Address". V mém případě konkrétně LW-10 indikuje stav připojení k MQTT brokeru a LW-11 případné chybové hlášení.
Nastavení stavových indikačních registrů MQTT komunikace HMI panelu MT8073iE s MQTT brokerem.
A tak je prakticky hotové vše zásadní. Už jen stačí vytvořený program uložit, kompilovat (položka "Tools-Compile" a následně provést nahrání do HMI panelu (položka "Tools-Download"). V případě HMI panelu MT8073iE právě opět přes ethernetového rozhraní. Není samozřejmě nutné přímo HMI panel k programovacímu PC připojovat kabelem, ale protože je stejně nutné jej kvůli potřebě přístupu na internet napojit na přes lokální ethernetovou síť na místní internetový gateway, je možné k němu přistupovat a program do něj nahrávat třeba i přes WiFi router. Samozřejmě proto, aby vše správně fungovalo, je zásadně nutné v nastavovacím menu HMI panelu správně nastavit IP adresy. To by měla také být první věc ke kontrolu, když se zprovoznění MQTT z nějakého důvodu nedaří. V mém konkrétním případě jsem si HMI panel přímo připojil ethernetovým kabelem na jeden z RJ-45 ethernetových vstupů mého běžného lokálního ethernetového O2 WiFi router / internetové brány v mém případě s lokální ethernetovou adresou 10.0.0.138, a proto bylo nutné v LAN 1 nastavení HMI panelu nastavit IP adresu gateway na 10.0.0.138, aby bylo možné přistupovat na internet na přednastavenou adresu brokeru. Ve vašem případě je samozřejmě nutné zadat IP adresu vaší internetové brány.
Ukázka provozu ovládací obrazovky HMI panelu Weintek MT8073iE pro vysílání dat na MQTT broker.
Test MQTT přenosu z HMI do PC
Snadno a rychle lze funkci vysílání zpráv z HMI panelu na broker vyzkoušet připojením např. PC klienta v režimu příjemce-odběratele zpráv (Subscriber) na dané téma (topic) a prostě čekat, zda do brokeru odeslané zprávy přijdou. Takto lze kdykoliv v praxi odzkoušet správnou funkci i v libovolné již plně běžící průmyslové aplikaci, kde Publisher i Subscriber jsou průmyslové jednotky (např. snímač-nadřazená řídící jednotka), protože paralelních příjemců zpráv může být libovolně mnoho a nijak se vzájemně neovlivňují. Také to nemá žádný vliv na nastavení jak brokera, tak publishera.
V mém případě jsem využil můj oblíbený softwarový MQTT klient MQTT.fx, který jsem si ukázali v 2.díle. Není tedy nutné jeho funkci zde představovat. Prostě stačí se jeho prostřednictvím přes internet také připojit / přihlásit jako subscriber na stejný MQTT broker server a na stejné téma (topic), na který odesílá data v našem případě HMI Weintek MT8073iE a hned by měli začít přicházet zprávy jak v pravidelných intervalech, tak v okamžicích změny hodnot na HMI panelu.
Nastavení PC MQTT softwarového klienta MQTT.fx jako Subscriber pro příjem dat vyslaných HMI panelem Weintek MT8073iE (obr. vlevo) a ukázka příjmu (obr. vpravo).
Data odesílaná z HMI panelu jsou strukturována v JSON formátu, kde je uveden jak název proměnné, tak jeho aktuální hodnota ve formátu, v jakém jsou definována v HMI panelu. Tedy v mém případě čísla jako16bitové hodnoty typu Integer a ASCII znaky, které jsou v HMI definovány jako typ STRING, se přenášejí a zobrazují správně jako ASCII znaky. Takto strukturovaný formát dat pak umožňuje v případě MQTT subscribera v podobě jiného HMI panelu či PLC opět hodnoty převést do paměti a dále je použít / zpracovávat, jako by byli přenášeny jinou průmyslovou sběrnicí typu MODBUS-TCP či Profinet. To si pak ukážeme příště ve 4. díle seriálu o MQTT, kde k brokeru připojíme jako subscriber průmyslový vizualizační server Weintek cMT-SVR, který bude data sbírat, zaznamenávat je do paměti jako Datalogger a dělat z nich statistiku.
Závěr
V tomto 3. díle jsem chtěl ukázat, že u průmyslových zařízení typu HMI panelů či PLC, které mají od výrobce již implementovanou podporu MQTT komunikace, není její zprovoznění režimu "Publisher" vůbec složité a není potřeba nic moc složitě programovat.
MQTT si i zde, jako správný IoT protokol, zachovává základní vlastnost šetření spotřeby energie, protože komunikace s brokerem je navázána jen opravdu ve chvíli požadavku odesílání dat a v mezidobí zůstává komunikace odpojena. Proto zde dává smysl vysílat data co nejméně často, tedy v řádech desítek nebo i více sekund či dokonce minut a hodin, narozdíl od rychlých průmyslových sběrnic typu Modbus-TCP či Profinet, kde se latence mezi přenosy počítá na milisekundy. Je tedy předem nutné dobře si rozmyslet, jaký bude účel přenosu. Pro potřeby řízení automatizace je nutná rychlá výkonná sběrnice, zatímco pro zasílání informačních dat několikrát za den může být MQTT ideální.
Odkazy:
- První díl "IoT MQTT prakticky v automatizaci - 1.díl - úvod "
- Druhý díl "IoT MQTT prakticky v automatizaci - 2.díl - MQTT.fx"
- Stránky programu MQTT klienta MQTT.fx: http://mqttfx.jfx4ee.org/
- Stránky výrobce HMI panelu Weintek MT8073iE: http://www.weintek.com/globalw/Product/Product_speciE.aspx
- Článek o vlastnostech HMI panelu Weintek MT8073iE - "Novinka - HMI panel se dvěma LAN porty - MT8073iE"
- Článek o nastavení komunikace HMI panelu Weintek MT8073iE -"TEST: Vzdálený přístup do HMI přes internet - EasyAccess 2.0 - 2. díl"
- Stránky prodejce panelů Weintek v ČR - společnost TECON: http://www.tecon.cz