IoT Rievtech MQTT beállítás
IoT Rievtech MQTT beállítás
Az alábbi bejegyzésben bemutatjuk az IoT Rievtech MQTT beállítás folyamatát( video 4:38-tól ). A videóban található mintaprogram az MQTT beállításáig már előre el lett készítve, így ennek elkészítésével ebben a bejegyzében nem térünk ki.
MQTT funkciók
Az IOT Rievtech plc-n alapuló IoT-hálózatok kiépítésének vagy a már meglévő IOT-hálózatokba történő beépítésének biztosítása érdekében a felhasználó 5 funkciót használhat, melyek a Rievtech PLC programozó szoftverében az xLogicSoft-ban, mint funkcióblokk megtalálható.
- Connect To MQTT server
AZ MQTT szerverhez való csatlakozás célja a PLC és a Broker közötti kommunikáció megteremtése.
2. Publish
Publish / Közzététel – mint a neve is mutatja, ennek a funkcióblokknak a célja, hogy információkat közöljön (a blokkbeállításban konfigurálható) a Broker-nek a megadott témában.
3. Subscribe
A Subscribe / Feliratkozó funkcióblokk az adatok fogadására szolgál a Broker-től. Ennek a blokknak a beállításaiban adja meg azt a témakört, amelynek adatait meg szeretné kapni a Broker-től, valamint kiválasztja azokat a regisztereket, amelyekben ezeket az adatokat a plc-n tárolja további feldolgozás céljából.
4. String to Integer
Ezt a funkcióblokkot a Broker-től fogadott adatok feldolgozására használják. Lehetővé teszi az MQTT üzenetből származó String ( leggyakrabban karakterek sorozata = karakterlánc) adatok numerikus értékké való átalakításárs a funkcióblokk kimenetén.
5. String Comporator
Ezt a funkcióblokkot is a Broker-től fogadott adatok feldolgozására használják. A blokkbeállításban megadott String-et (karakterláncot) karakterenként összehasonlítjuk a PLC-ben tárolt karakterlánccal. Amennyiben megegyeznek, akkor a funkcióblokk kimenete bekapcsol és állapota 1 lesz.
Mielőtt részletesebben áttekintenénk az MQTT funkcióblokkokat és azok beállítását, nézzünk át néhány dolgot, amelyek fontosak ahhoz, hogy kapcsolatot építsünk kia a Broker-rel, és MQTT üzeneteket küldjünk / fogadjunk, valamint tároljuk azokat a PLC memóriájában.
Csatlakozás MQTT szerverhez TCP / IP-n keresztül
Az MQTT egy alkalmazási réteg protokoll, vagyis az az a szint, ahol az adatokat bizonyos alkalmazások egymás között cserélik.
De ahhoz, hogy a kommunikáció létrejöjjön, létre kell hozni egy alacsonyabb szintű kommunikációt, egy kapcsolatot a szállítási rétegen. Ez a kapcsolat olyan TCP / IP protokoll használatával jön létre, amelyken fut az MQTT protokoll.
A Broker-hez a TCP / IP-n keresztüli kapcsolat létrehozásához ismernie kell annak IP-címés és port-ját. Ezeket az adatokat a Connect to MQTT funkcióblokk beállításában lehet megadni. Ez a funkcioblokk csak egyszer használható a programban.
Adatok tárolása a PLC-ben
A Broker-től kapott adatok tárolásához és feldolgozásához a Rievtech IoT PLC három változó típust használ. Ezek a változók funkcióblokként jelennek meg, úgy mint: 1. Variable Byte (VB) – Változó bájt 2. Variable Word (VW) – Változó szó 3. Variable Double Word (VD) – Változó dupla szó
- VB – Variable Byte beállítja a memória címét 1 Byte ( 8 bit ) adat tárolására, amelyet 1 ASCII karakter fejez ki.
- VW – Variable Word beállítja a memória címét 2 Byte ( 16 bit ) adat tárolására, amelyet 2 ASCII karakter fejez ki.
- VD – Variable Double Word beállítja a memória címét 4 Byte ( 32 bit ) adat tárolására, amelyet 4 ASCII karakter fejez ki.
PLC memória területe
A három változó funkcióblokk által használt memóriaterület megegyezik az AF funkcióblokkok által használt memóriaterülettel. Az alábbi ábrán látható, hogyan kezelik a memóriát a VB ; VW és WD funkcióblokkok.
- A VB funkcióblokkok bitcímei megegyeznek az AF funkcióblokkok bitcímeivel.
- A VW funkcióblokkok címzéseit a fenti ábra alapján készítsük el. A VW funkcióblokkok száma megegyezik a VB funkcióblokkok számával, ezért az átfedi az előző VW funkcióblokk memóriaterületét. A VW funkcióblokknál a bit-eket az ellenkező irányba számoljuk a VW és AF funkcióblokkokhoz képest.
- A VD funkcióblokkokra ugyanaz az elv vonatkozik, mint a VW funkcióblokkokra, átfedéssel és a bit-ek fordított számozásával.
Gyakorlati példa az MQTT beállítás és használatára IoT Rievtech PLC-vel
Először egy Broker-t kell kiválasztanunk és konfigurálnunk. A példánkoz egy felhőalapú MQTT Broker-t fogunk használni egy egyszerű regisztrációs folyamat után. A regisztrációs folyamat a fenti videóban (9:24-től) látható.
Sikeres regisztrációt és a szolgátatásba való belépést követően, egy Broker-ként működő példát kell létrehozni a “Create new instance”-re kattintva. A példa létrehozás a fenti videóban látható (9:42-től).
A példa létrehozása után a példánkra (Rievtech-test) kattintva láthatjuk a beállításokat.
Ezek a beállítások lesznek a Broker beállítások:
A TCP / IP kapcsolat létrehozásához szükségünk lesz a szerver nevére és port-jára. A User és Password a közzétételkor (Publish) és a feliratkozások (Subscribe) hitelesítéséhez kell majd.
Mintpélda: Üvegház automatizálása
Példaként az üvegház automatizálásának feladatát vesszük figyelembe. A feladat a hőmérséklet és a páratartalom adatainak továbbítása a Broker-nek, az összes kimenet állapotával együtt. A Broker-től kapjuk a parancsokat a fűtés manuális be- vagy kikapcsolására, és a hőmérséklet beállításával a fűtés automatikus bekapcsolására.
A vezérlő program már előre el van készítve a Példához (video 10:49), most azt mutatjuk meg, hogyan konfiguráljuk a Broker kapcsolatát a PLC-vel. Ehhez a mintapéldához szükségünk lesz 3db Publis funkcióblokkra és 2db Subscribe funkcióblokkra.
PLC és Broker kapcsolata TCP / IP kapcsolattal
IP cím beállítás
A PLC és a Broker kapcsolatához szükségünk van egy MQTT csatlakozási funkcióblokkra, melynek neve: Connect to MQTT Server
A TCP / IP kapcsolathoz tudnunk kell a Broker IP címét. Esetünkben a Cloud MQTT-ben általunk létrehozott Broker server IP címe lesz. Az IP cím könnyen megtudható a Windows parancssorban található ping parancs segítségével ahová a Broker server nevét kell beírni, azaz: soldier.cloudmqtt.com Az IP címet ( 52.91.254.176 ) írjuk be a TCP / IP kapcsolat beállításhoz.
Port beállítás
Be kell állítanunk a port-ot is, hogy csatlakozni tudjunk a Broker-hez.
Egyes Broker-ek lehetővé teszik a biztonságos (SSL Port) és a nem biztonságos (Port) kapcsolaton keresztüli csatlakozást. Ehhez különböző port-okat használnak. Mi most a biztonságos port-on (SSL Port) keresztül csatlakozunk a Bróker-hez. AZ SSL Port értékét ( 21290 ) írjuk be a TCP / IP kapcsolat beállításhoz.
CA tanusítvány
A Port megadása után engedélyezzük a SSL / TLS kapcsolatot. Ezzel elérhetővé válik a “CA Certificate File 1”
A CA tanusítvány megtalálható a cloudmqtt.com oldalon a Documentation / FAQ elérési úton keresztül. A CA tanusítvány letöltéséhez segítséget talál a videóban (12:54)
Kliens ; Név ; Jelszó
- Client ID: Szabadon választott
- Name : A Broker beállításnál megadott User-t kell beírni
- Password: A Broker beállításnál megadott Password-ot kell beírni
Ezzel végére is értünk az MQTT csatlakozási funkcióblokk beállításával.
Publish – Közzététel és Subscribe – Feliratkozás funkcióblokkok
Bemeneti oldal
Mindkét funkcióblokknak van egy Set bemenete, amely aktiválja a kapcsolatot a Broker-rel és a két kimenettel. A mintapéldánkban az összes Publish és Subscribe funkcióblokk folyamatosan aktív lesz, ezért a bemeneteiket egy “Status 1 (high)” funkcióblokkal kössük össze (video 17:49).
Kimeneti oldal
Mindkét funkcióblokknak van egy diszkrét kimenete, ami akkor aktiválódik, amikor a kapcsolat sikeresen létrejött.
Mindkét funkcióblokknak van egy analóg kimenete, melyen az adatátvitel állapota jelenik meg.
Publish – Közzététel funkcióblokk beállítása
A funkcióblokk neve: Publish with MQTT
- A mintapéldánkban szereplő 1. Publish funkcióblokk az aktuális hőmérsékleti adatokat fogja elküldeni a Broker-nek az alábbiak szerint: greenhouse-1/temperature/measured
- A mintapéldánkban szereplő 2. Publish funkcióblokk a páratartalom-érzékelő adatait fogja elküldeni a Broker-nek az alábbiak szerint: greenhouse-1/temperature/measured
- A mintapéldánkban szereplő 3. Publish funkcióblokk az összes kimenet állapotát fogja elküldeni a Broker-nek az alábbiak szerint: greenhouse-1/temperature/outputs/status
Funkcióblokkon belül a Comm felületet beállítása
A QoS (Quality of Service) segítségével a hálózaton meghatározott sebességgel és adott időkereten belül lehet az adatokat továbbítani. A QoS-t támogató hálózatokon a magasabb prioritású üzenetek előnyben részesíthetők alacsonyabb besorolású üzenetekkel szemben.
QoS0
A címzett (Broker) nem erősíti meg az üzenetek fogadását. A feladó (publish) ennek megfelelően csak egyszer továbbítja az üzenetet. Ez a “küldés és elfelejtés” módszer.
QoS1
Ebben az esetben a feliratkozó (subscrieber) többször is megkapja ugyanazt az üzenetet. A feladó (publis) pedig ismételten próbálkozik az elküldéssel, addig, amíg nem kap megerősítését az üzenet sikeres kézbesítéséről.
Retained – Megörzött
Normál MQTT üzenet. A Broker tárolja az utolsó retained üzenetet, és az adott témához tartozó QoS-t. Azok a Kliens-ek akik feliratkoznak egy olyan témára (Topic), amely megfelel a retained üzenet témájának, a feliratkozást (subscribe) követően azonnal megkapja a retained üzenetet. A retained üzenetek segítenek az újonnan feliratkozóknak abban, hogy a kilens-ek állapotfrissítést kapjanak egy téma feliratkozása után.
Publish interval time – Közzétételi idő
Üzentet küldhet a Broker-nek a beállított időintervallumonként, melyet másodperc értékre kell beállítani. Ha a funkció nincs aktiválva, akkor az üzenet küldése csak egyszer történik meg a a funkcióblokk bekapcsolásának pillanatában.
Publish topic – Téma közzététel
- 1. közzétételi téma: greenhouse-1/temperature/measured
- 2. közzétételi téma: greenhouse-1/humidity
- 3. közzétételi téma: greenhouse-1/outputs/status
Funkcióblokkon belül a Parameter felületet beállítása
Az 1. Publish funkcióblokk amely hőmérsékleti adatokat fog küldeni az alábbiak szerint
A hozzáadás (Add) gomb megnyomása után a Parameter legördülő menüből válassza ki a megfelelő adattömböt, esetünkben az AF-et (analóg zászló). Az Index legördülő menü alatt válassza ki a hőmérséklet mérése alkalmas AF-et, ami az AF50 lesz. A leírás (descripton) mezőbe a hőmérséklet mértékegységének első betűjét írjuk be.
Az 2. Publish funkcióblokk amely a páratartalom-érzékelő adatait fogja elküldeni az alábbiak szerint
Az 3. Publish funkcióblokk amely az összes kimenet állapotát fogja elküldeni az alábbiak szerint
A megjegyzés (Comment) és leírás (Description) mezőkbe bármit beírhatunk a funkcióblokk értékén kívül.
Subscribe – Feliratkozás funkcióblokk beállítása
A funkcióblokk neve: Subscribe with MQTT
- A mintapéldában szereplő 1. Subcribe funkcióblokk a fűtés távoli be- és kikapcsolási parancsát egy másik MQTT kilens ( (okostelefon, webböngésző ) a ” greenhouse-1/heater/controll ” témában állítja be a Broker-nek.
- A mintapéldában szereplő 2. Subcribe funkcióblokk a hőmérséklet beállításokat elküldik a Kliens-ek a fűtés automatikus bekapcsolásához a ” greenhouse-1/temperature/threshold ” témában.
Funkcióblokkon belül a Comm felületet beállítása
A felület beállításai megegyeznek a Publish funkcióblokk Comm felület beállításával.
Subscribe topic – Téma feliratkozás
- 1. feliratkozási téma: greenhouse-1/heater/controll
- 2. feliratkozási téma: greenhouse-1/temperature/threshold
Funkcióblokkon belül a Parameter felületet beállítása
1. Subcribe funkcióblokk a fűtés távoli be- és kikapcsolás az alábbiak szerint
2. Subcribe funkcióblokk a hőmérséklet beállítás az alábbiak szerint
String Start byte
Itt állapítjuk meg a kezdeti VB változót, melyben a kapott üzenet első karaktere tárolásra kerül.
Recieve number
Beállíthajuk az üzenetet tartalmazó karakterek pontos számát.
- Az 1. Subscribe blokknál egy 3 karakterből álló üzenet elegendő a fűtés be- és kikapcsolásához. “ON” or “OFF” Ez a 3 karakter a VB0-VB2 változókban kerül tárolásra.
- A 2. Subscribe blokknál szükségünk van az üzenet első 2 karakterére, amelyek a beállított hőmérséklet számait fogjak tartalmazni. Ezt a 2 karaktert a VB3 és VB4 változókban tároljuk.
- Ha a Recieve number = Chars to Recieve, akkor beállítható az olvasható karakterek száma.
- Ha a Recieve number = As Recieve, akkor nem állítható az olvasható karakterek száma.
String Comporator funkcióblokk
Ahhoz, hogy az 1. Subscribe blokknál a Fűtés be- és kikapcsolásához megfelelő vezérlőjelet hozzunk létre, String összehasonlító (String Comprator) blokkra van szükségünk. 1 blokk kell a bekapcsoláshoz és 1 blokk kell a kikapcsoláshoz, melyeket a hozzá tartozó Subscribe blokk kimenetével kötünk össze a PLC programban (video 20:39).
- Start: A String Comporator blokkok beállításánál mindkettőhöz ugyanazt a kezdeti változót kell beállítani, ami a VB0.
- String: Az egyik blokkba: ON ; míg a másikba: OFF
String to Integer funkcióblokk
Mivel a 2. Subscribe blokknál a hőmérséklet értékének számnak kell lennie, és a VB3 és VB4 változóban tárolt adat nem numerikus érték azaz nem számérték, ezért egy “String to Integer” funkcióblokkot kell használni a tárolt adat számértékké való átalakításához. A ” Stirng to Integer” blokk “Parameter” beállításánál ezeket az adatokat kell beírni:
- Start: Legordülő menűnél kell beállítani a változót kezdeti értékét ami a VB3 .
- Count: Értékét 2-re kell beállítani.
Ennek a “String to Integer” átalakítónak a bemenetét kell összekötni a Subscribe funkcióblokk kimenetével a PLC programban (video 21:45). “String to Integer” átalakító kimenetét amin a hőmérséklet számértéke jelenik meg összekötjük az AF20 “analog flag” funkcióblokk bemenetével, ami a fűtés bekapcsolási hőmérsékletének beállítására szolgál (video 22:16).
Az IoT Rievtech PLC MQTT beállítás utolsó lépéseként hozzáadjuk a PLCprogramhoz az 5db “VB” (variable block) funkcióblokkot (video 22:30), amiket már korábban beállítottunk (VB0-VB2 és VB3-VB4), amikben a Broker-től kapott információkat tároljuk.
Adatcsere ellenőrzése a PLC és Broker között
Miután feltöltötte a programot a PLC-be, ellenőrizzük az adatcserét a PLC és a Broker között.
Az ellenőrzést elvégezheti a cloudmqtt.com keresztül is.
Lépjen a WebSocket UI fülre, és nézze meg, hogy a PLC már megkezdte-e az adatok továbbítását a Broker-nek. A további ellenőrzéseket, adattovábbításokat és a PLC MQTT szerveren keresztüli vezérlését a fenti videóban követhetik nyomon (23:02).
Bízunk benne, hogy sikerült érthetően, felhasználóbarát módon bemutatni az IoT Rievtech MQTT beállítás menetét. Felmerülő kérdések esetén forduljon hozzánk bizalommal az alábbi elérhetőségeken>>>
Az alábbi Rievtech PLC-k rendelkeznek beépített MQTT-vel: