Kurs EdgeLink cz. 2 - MQTT, broker lokalny

17.03.2023 How to, Informacje produktowe /
edgelink
Wizerunek autora
Aleksandra Panufnik Były pracownik Elmark Automatyka S.A.
Producent: Advantech
  • Zakłady przemysłowe

Czym jest protokół MQTT?

Protokół MQTT (ang. Message Queue Telemetry Transport) to standard firmy IBM wprowadzony w 1999 roku. Jest chętnie wykorzystywany w zastosowaniach Przemysłowego Internetu Rzeczy (IIoT) przy łączeniu warstwy operacyjnej przedsiębiorstwa (OT) z warstwą informatyczną (IT).

File:Mqtt-hor.svg - Wikimedia Commons

Rysunek nr 1. Protokół MQTT

Jak działa MQTT?

To już zostało wytłumaczone we wcześniejszym artykule, ale jeszcze raz przypomnę tutaj najważniejsze kwestie.

Protokół MQTT oparty jest o wzorzec publikacja/subskrypcja. Oznacza to, że każdy z klientów (urządzeń odbierających lub wysyłających wiadomości) łączy się z tzw. brokerem (termin ten wyjaśnię w dalszej części tego artykułu).
Sam mechanizm wygląda w następujący sposób: KLIENT1 publikuje informacje w temacie TEMAT1, informacje te trafiają do brokera, a następnie każdy klient, który nasłuchuje tematu TEMAT1 otrzymuje opublikowane wiadomości. Klienci mogą być aktywni jedynie wtedy, gdy wysyłają lub odbierają wiadomość. Ciągłość komunikacji zapewnia zawsze aktywny broker, który sprawdza obecność klientów podczas pracy systemu. W oparciu o ten protokół działa popularny komunikator internetowy Messenger. Warto wspomnieć, że przy utracie komunikacji wiadomości nie przepadają, a urządzenie po ponownym połączeniu z siecią otrzymuje całą paczkę danych, a nie tylko ostatnią wysłaną informację.

Wady i zalety MQTT

Jak wszystkie inne protokoły MQTT ma zarówno zalety jak i wady, choć te pierwsze zdecydowanie przeważają. Warto je przeanalizować i zdecydować, czy jesteśmy w stanie zaakceptować istniejące wady [1].

Zalety

  • możliwość asynchronicznej i synchronicznej wymiany danych w obu kierunkach,

  • możliwość odbioru informacji po wystąpieniu zdarzenia,

  • bardzo szybka wymiana informacji,

  • skalowalność,

  • małe wymagania sprzętowe,

  • niski pobór energii (dzięki funkcji uśpienia),

  • uniwersalność i łatwość wdrożenia (nie jest związany z konkretną platformą programistyczną ani systemem operacyjnym),

  • małe obciążenie łącza komunikacyjnego,

  • szybkość konfiguracji,

  • niezawodność przy wymianie danych poprzez ograniczenie prędkości transmisji,

  • komunikacja M2M,

  • szyfrowanie i zabezpieczenie komunikacji.

Wady:

  • konieczność stosowania bramek dla starszych urządzeń,

  • konieczność uruchomienia serwera,

  • mała przepustowość (0.3-50 kbit/s).

Bezpieczeństwo

Protokół MQTT umożliwia zapewnienie bezpieczeństwa w dwóch aspektach:

Po pierwsze - daje pewność dostarczenia wiadomości poprzez przesyłanie potwierdzeń pomiędzy odbiorcą a nadawcą.

Po drugie - komunikacja jest szyfrowana. Stosowane jest szyfrowanie SSL i TLS, a także podpisy, certyfikaty i hasła dostępowe.


Broker MQTT

Broker pełni rolę serwera, z którym łączą się klienci, aby za jego pośrednictwem publikować informacje. Nadawca i odbiorcy nie wiedzą o swoim istnieniu i nie znają swoich adresów IP. Cała wymiana danych odbywa się przez pośrednika, który zapisuje i udostępnia tematy.

Istnieją dwa modele brokerów MQTT - lokalny i chmurowy. W tym artykule zajmiemy się jedynie brokerem lokalnym, gdyż temat brokera chmurowego został poruszony w oddzielnej publikacji.

Broker lokalny

Brokerem lokalnym nazywamy serwer MQTT wdrożony na naszym własnym urządzeniu. Działa on tak samo jak rozwiązanie chmurowe z tą różnicą, że sami musimy zadbać o sprzęt i odpowiednie oprogramowanie.

Broker można zaimplementować samodzielnie, jednak zazwyczaj wykorzystuje się gotowe rozwiązania, takie jak:

  • Mosquitto

  • HiveMQ

  • RabbitMQ

  • VerneMQ

mosquitto · GitHub Topics · GitHub

Rysunek nr 2. Broker Mosquitto

Broker nie ma dużych wymagań sprzętowych, dlatego można zainstalować go na kompaktowych komputerach przemysłowych.


Wady i zalety brokera lokalnego

Zaletą takiego rozwiązania jest fakt, że mamy nad wszystkim kontrolę:

  • gdzie trafiają nasze dane,
  • co dzieje się z nimi po drodze,
  • kto ma do nich dostęp.

Takie rozwiązanie nie musi mieć nawet połączenia z Internetem. Pełna kontrola wiąże się jednak z koniecznością utrzymywania fizycznej architektury oraz samodzielnego dbania o bezpieczeństwo naszych danych. W przypadku awarii sprzętu na których uruchomiony jest broker komunikacja staje się niemożliwa, o ile sami nie zadbamy o redundancję. Słowem - o wszystko musimy zadbać sami.


ECU, EdgeLink i lokalny broker

Oprogramowanie EdgeLink daje nam możliwość zastosowania protokołu MQTT, dzięki bramie ECU, czy innemu urządzeniu obsługującego EdgeLink. Umożliwia proste pozyskiwanie danych nie tylko z pojedynczych mierników, ale z całych urządzeń.

Stanowisko

Pokazowe stanowisko składa się z następujących elementów:

  • brama ECU-1051D,

  • laptop jako broker i subskrybent,

  • przyciski cyfrowe,

  • sonda do pomiaru temperatury,

  • sterownik PLC z panelem HMI Unitronics US5-B5-B1,

  • Moduł I/O ADAM-6060,

  • Moduł I/OADAM-4048+,

  • Switch przemysłowy ADAM-6520.

Rysunek nr 3. Schemat stanowiska testowego

Broker

Rolę serwera (brokera) lokalnego pełni zwykły biurowy laptop. Zainstalowano na nim darmowe oprogramowanie Mosquitto, działające jako pośrednik przy publikowaniu wiadomości. Producent udostępnia instrukcję uruchomienia komunikacji przy pomocy oprogramowania HiveMQ, jednak ja wybrałam Mosquitto ze względu na dużo łatwiejszą instalację. Broker lokalny HiveMQ wymaga dodatkowo aplikacji kontenerowej, a Mosquitto wystarczy uruchomić z poziomu wiersza poleceń.

Rysunek nr 4. Uruchomienie brokera Mosquitto

Klient

Klientem w prezentowanej aplikacji został ten sam laptop, który pełni rolę serwera. Oczywiście da się odczytywać i wysyłać wiadomości przy pomocy innego urządzenia - wystarczy podpiąć je do serwera. W celu łatwego publikowania oraz czytelnego odbierania wiadomości wykorzystano narzędzie MQTTBox dostępne za darmo w Microsoft Store.

Rysunek nr 5. Odczytywanie przesyłanych danych przy pomocy MQTTBox

Korzystanie z MQTTBoxa do odczytywania danych nie jest najwygodniejszym rozwiązaniem. Do tego celu idealnie sprawdzi się darmowe narzędzie programistyczne node-red umożliwiające łatwe tworzenie wizualizacji.

Rysunek nr 6. Wizualizacja danych przy pomocy narzędzia node-red


Podsumowanie

Protokół MQTT umożliwia szybką i bezpieczną komunikację różnych typów urządzeń. Nie jesteśmy ograniczeni do jednego producenta, a lokalny serwer może zostać uruchomiony nawet na najprostszym komputerze. W przypadku urządzeń nieobsługujących MQTT konieczne jest wykorzystanie bramy sieciowej, jednak oprogramowanie takie jak EdgeLink pozwala w prosty sposób uporać się z problemem.

 

Chcesz otrzymać instrukcję do tego stanowiska?

Napisz do nas!

e-mail: jaroslaw.molenda@elmark.com.pl

 

 

 

[1] W. Kaczmarek, J. Panasiuk, S. Borys, R. Dyczkowski, M. Siwek, „Robotyzacja i automatyzacja. Przemysł 4.0", PWN, Warszawa 2023

Skontaktuj się ze specjalistą Elmark

Masz pytania? Potrzebujesz porady? Zadzwoń lub napisz do nas!