Betöltés…
WAGO Hungária

Mi az MQTT?

Az MQTT egy 1999-ben megjelent, és a mai napig használt, könnyű kommunikációs protokoll. A rövidítést sokszor tévesen a „Message Queuing Telemetry Transport” kifejezésből vezetik le, azonban a név tényleges eredete az „MQ Telemetry Transport” kifejezésből származik. Az „MQ” az MQ sorozatra utal, amit az IBM fejlesztett ki az MQ kommunikáció támogatására. Amikor Andy Stanford-Clark (IBM) és Arlen Nipper (Arcom, jelenleg Cirrus Link) megalkották protokolljukat az IBM termékről nevezték azt el. Ők alapvetően az alábbi pontokat fogalmazták meg a jövő protokollja számára:

  • Egyszerű implementáció
  • „Quality of Service” jellegű adatszolgáltatás
  • Könnyű és sávszélesség-hatékonyság
  • Adat agnosztikusság
  • Folyamatos munkamenet-tudatosság

Ezek a célok továbbra is az MQTT középpontjában állnak, azonban a protokoll elsődleges fókusza az egyedi beágyazott rendszerekről a dolgok internete (IoT) nyílt használati eseteire módosult. Mára már az MQTT név nem rövidítés, hanem ilyen egyszerűen a protokoll neve.

A protokoll alapvető működését az alábbi ábra mutatja be (QoS0 esetén):

1. ábra – Forrás: Simon A. Eugster, CC BY-SA 4.0, via Wikimedia Commons (fordította: Fekete Zsolt)

Jól látszik a kommunikáció pub/sub jellegű működése. A kliensek első lépésben csatlakoznak egy MQTT kiszolgálóhoz, amin keresztül közvetett módon lesznek majd képesek más kliensekkel kommunikálni. Ezt az MQTT kiszolgálót brókernek szokás nevezni. A bróker ugyan egy minden kliens számára elérhető központi szerver, azonban nem feltétlenül szükséges, hogy tipikus „back end” feladatokat ellásson. A hálózat elvi sémája ezt a ként funkciót teljesen elkülöníti, ezért a bróker gyakorlatilag csak MQTT illesztőként működik. A kliensek ezekhez a brókerekhez csatlakozva tudnak adat csatornákra publikálni, illetve feliratkozni.

2. ábra – Forrás: https://mqtt.org/ (fordította: Fekete Zsolt)

A pub/sub alapú kommunikáció magában hordozza az alábbi tulajdonságokat:

  • Az MQTT leválasztja egymástól a publikálót és a feliratkozót. Üzenetek közzétételéhez vagy fogadásához a publikálónak és az feliratkozónak csak a bróker elérhetőségét kell tudnia.
  • Az MQTT idő szerint is leválaszt. Bár a legtöbb MQTT alkalmazás szinte valós időben juttatja el az üzeneteket, ha szükséges, a bróker üzeneteket tárolhat olyan kliensek számára, amelyek nem érhetőek el az üzenet küldésének pillanatában. (Az üzenetek tárolásának két feltételnek kell teljesülnie: a kliens állandó munkamenethez kapcsolódott, és feliratkozott egy olyan témára, amelynek szolgáltatásminősége (QoS) nagyobb, mint 0).
  • Az MQTT aszinkron módon működik. Mivel a legtöbb kliens implementáció aszinkron módon működik, így a feladatok nincsenek blokkolva amíg üzenetre várnak, vagy üzenetet tesznek közzé. Bizonyos használati esetekben a szinkronizálás kívánatos és lehetséges.

A cikk során már többször említésre került a QoS, Quality of Service kifejezés. Ez egy olyan üzenetekre vonatkozó besorolás, ami a névnek megfelelően biztosítja, hogy egy üzenet milyen biztonsággal közlekedik két eszköz között. Az alábbi módon működnek:

3. ábra – QoS 0, forrás: https://www.hivemq.com/

4. ábra – QoS 1, forrás: https://www.hivemq.com/

5. ábra – QoS 2, forrás: https://www.hivemq.com/

Összefoglalva:

  • QoS 0 –              „Fire and forget”, az üzenet csak egyszer kerül elküldésre
    • Nagyon gyors, de az üzenet sikeres kézbesítése csak a hálózattól függ (mint a TCP protokoll)
  • QoS 1 –              Az üzenet legalább egyszer elküldésre kerül
    • A küldő fél ismételgeti az üzenetet, így nagyobb biztonsággal kapja meg azt a fogadó fél. Ez addig tart, amíg a küldő fél nem kap vissza PUBACK választ, hogy sikeresen megérkezett az üzenet. Itt számolni kell azzal is, hogy a fogadó fél duplikált üzeneteket kaphat, és valamivel lassabb is a kommunikáció a visszajelzés miatt.
  • QoS 2 –              Az üzenet pontosan egyszer van kézbesítve
    • A két fél között egy több lépcsős kézfogás üzenet sorozat hangzik el, ami biztosítja azt, hogy a fogadó fél egész biztosan csak egyszer kapja meg a küldeni kívánt adatokat. A sok technikai üzenet miatt ez a leglassabb, de legbiztosabb módja az adatok átadásának.

Az egyik legfontosabb tulajdonsága a protokollnak, hogy kliens oldalon nagyon egyszerű a használata, és ez így van WAGO PLC- k esetén is.

MQTT és WAGO, kapcsolódás felhőszolgáltatókhoz

Az első és talán az egyik legfontosabb lépés egy ilyen szoftver készítése során, hogy az eszköz firmware verziója megfeleljen a kapcsolathoz szükséges kritériumoknak. Ezt nehéz összefoglalni, hiszen a technológia folyamatosan fejlődik és akár egy év leforgása alatt olyan változások mehetnek végbe, amik sokat változtatnak mindkét oldal beállításában és használatában. Erre példa akár az is, hogy egy szolgáltató egyik évben csak a titkosítatlan 1883 porton működő MQTT kapcsolatot támogatja, következő évben pedig már csak a titkosított 8883 porton működőt.

Az eddigiek alapján felállítható egy ellenőrző lista, amin végig haladva a legtöbb felhőszolgáltatóhoz képesek csatlakozni a WAGO PLC- k.

  1. Firmware és fejlesztői környezet frissítése
  2. Regisztráció a felhőszolgáltató weboldalán
  3. Új IoT eszköz regisztrálása a weboldalon a csatlakozáshoz szükséges adatok generálásához, illetve a dokumentáció átolvasása ugyan ezen célból
  4. A PLC WBM felületén lévő hiányzó adatok kitöltése az előző pont alapján
  5. Eszköz újraindítása, és a paraméterek javítása mindaddig, amíg a PLC nem képes letöltött alkalmazás nélkül is csatlakozni a brókerhez
  6. PLC alkalmazás elkészítése a „WagoAppCloud” munkakönyvtár használatával
  7. Szoftver letöltése és tesztelése

Természetesen kisebb nagyobb különbségek vannak szolgáltatók között. Ebben a cikkben az kerül bemutatásra, hogy miként történik a WAGO Cloud- hoz való csatlakozás. Mivel a WAGO felhőszolgáltatása Microsoft Azure alapokon nyugszik, így a két felhőszolgáltató használata a felületektől eltekintve meglehetősen hasonló.

Sikeres regisztráció után az oldalon először létre kell hozni egy új eszközt.

6. ábra – Eszköz létrehozása a WAGO Cloud oldalon

A jobb oldali menüben látszódik minden olyan adat, aminek megadása szükséges lehet a WBM felületen. Az aktivációs kulcs csak a létrehozás pillanatában látható biztonsági okok miatt.

7. ábra – PLC beállításai a WBM felületen

Az adatok megadása után újra kell indítani a PLC- t ahhoz, hogy azok érvénybe lépjenek. Az újraindítás után helyes konfiguráció esetén az alábbi státusz üzenetnek kell megjelennie a webes felületen.

8. ábra – A PLC kapcsolódik a WAGO Cloud által futtatott MQTT brókerhez

Ezek után a PLC program feléleszthető. Mivel a WAGO Cloud- dal való kommunikációhoz kifejlesztésre került egy különleges WAGO protokoll, így ezen szolgáltató esetén az ezzel kapcsolatos funkció blokkokat kell használni. Egyéb esetben, ha egy hagyományos, natív MQTT brókerhez csatlakozik az eszköz az ehhez tartozó natív funkció blokkok használata szükséges.

Ebben a példában nem használt, de említésre méltó funkció blokkok:

9. ábra – Funkció blokk MQTT publikáláshoz

10. ábra – Funkció blokk MQTT feliratkozáshoz

A munkakönyvtárban található, és a https://www.wago.com/hu/ weboldalról letölthető dokumentáció részletesen tárgyalja ezeknek a blokkoknak is a használatát.

Alapvetően a WAGO protokoll is ezekre az alap funkció blokkokra épül, viszont elsősorban két fő funkcióra kihegyezve: adatok felhőbe továbbítása és parancsok fogadása. Az adatok felhőbe továbbítása egy egyirányú kommunikáció, amit az alábbi funkció blokk valósít meg.

12. ábra – Utasítás konfigurátor

13. ábra – Utasítás lehallgató blokk

14. ábra – Válaszadó blokk

Ezen három funkció blokk használatával a szolgáltató felé az eszköz elküldi először, hogy milyen utasításokat támogat milyen bemenő és kimenő paraméterekkel, lehallgatja a kapott utasításokat és válaszolni is képes rá.

Az alábbi linkről letölthető példa program bemutatja, hogy hogyan lehetséges ezeket a funkciókat a programozás során alkalmazni.

Ez a példa a cikk írása során használt WAGO Cloud felhasználói fióktól teljesen független, ugyanis a csatlakozás nem PLC programon belül, hanem a WBM felületen történik. Kipróbálva, és egy kisebb vizualizáció elkészítése során jól látható, hogy minden funkció működő képes.

15. ábra – WAGO Cloud dashboard, működő példa

16. ábra – Az utasítás kezelése is működik