Protokół MQTT w środowisku UniLogic

Tycjan Kołecki Akademia Unitronics, Bez kategorii

Protokół MQTT to ultralekki rodzaj transmisji danych, który możemy wykorzystać w środowisku UniLogic.

MQTT (Message Queueing Telemetry Transport) jest przeznaczone do transmisji o niewielkiej przepustowości. Ograniczenie prędkości pozwala na zwiększenie niezawodności. Obecnie wyżej wymieniony protokół znajduje zastosowanie w aplikacjach typu maszyna-maszyna i IoT. Takie rozwiązanie pozwala na utrzymanie komunikacji bez dużego zużycia energii, która jest istotne w przypadku małych urządzeń bezprzewodowych (tak jak w IoT oraz IIoT).

Zasada działania MQTT

MQTT działa w oparciu o trzy podmioty: Publisher, Broker, Subscriber. Unilogic wspiera wszystkie te funkcje, w związku z tym, sterowniki UniStream mogą w pełni wykorzystać ten protokół.

  • Publisher (publicysta) – wysyła wiadomości z przypisanym tematem do odpowiedniego brokera.
  • Broker (pośrednik) – akceptuje i odbiera wiadomość, przypisuje do tematu, a następnie wysyła do Subscribera.
  • Subscriber (odbiorca) – „śledzi” dany temat, w rezultacie otrzymuje wszystkie wiadomości z nim związane.
Protokół MQTT w środowisku Unilogic - zasada działania
Zasada działania protokołu MQTT

Protokół MQTT w środowisku UniLogic

Konfiguracje MQTT rozpoczynamy od wyboru zakładki MQTT z drzewa projektu (PLC Communication > Protocols > MQTT).

Drzewo Projektu

Teraz możemy skonfigurować zarówno Subscribera jak i Publishera. Gdy wybierzemy któryś z nich, UniLogic stworzy automatycznie specjalną strukturę.

MQTT General Struct

  • MQTT Process Status – (UNIT32) – wyświetla status połączenia MQTT, może przybierać jedną z trzech wartości: 0 – inicjalizacja w trakcie, 1 – MQTT w trakcie pracy, oraz 2 – MQTT w trybie pauzy.
  • Number of Brokers – (UNIT16) – wartość oznacza liczbę skonfigurowanych brokerów w sieci.
  • (…) of Subscriptions – (UNIT16) – liczba skonfigurowanych subskrybentów w sieci.
  • (…) Publications – (UNIT16) – liczba skonfigurowanych publikacji

MQTT Statics Struct

Struktura ta ma na celu monitorowanie liczby publikacji. Zapisuje liczbę wysłanych (Send Publications), znanych (Acknowledged Publications), odebranych (Received Publications) oraz porzuconych (Dropped) wiadomości. W rezultacie mamy podgląd na stan komunikacji.

Konfiguracja Połączenia Brokera

Aby umożliwić inicjacje prokotołu MQTT w programie UniLogic, musimy najpierw skonfigurować połączenie z Brokerem. Wybieramy w drzewie projektu Broker Connections i klikamy znanego nam zielonego plusa.

MQTT Broker Connection
  • Name – nazwa przypisana Brokerowi, nie istotna w zapisie protokołu
  • ID – indywidualny numer Brokera, nie ma wpływu oraz znaczenia dla protokołu, wykorzystywany tylko w LD.
  • Mode – tryb adresowania (IP lub .url).
  • Port – domyślnie 1883, jeżeli specyfika aplikacji tego wymaga, możliwa jest zmiana.
  • Clean Session – gdy 0, w przypadku utracenia połączenia z subskrybentem, Broker zapisuje na bieżąco wiadomości, które wyśle po ponownym połączeniu.
  • Client ID – możemy tutaj przypisać konkretne ID, które mogą się połączyć z brokerem
  • Hasło – 8-128 znaków

Tak wygląda podstawowa konfiguracja Brokera protokołu MQTT w środowisku UniLogic.

Struktura Podłączenia Brokera

Po dodaniu Brokera, automatycznie stworzona zostanie struktura.

  • Connection Status – (BIT) – 0 połączony, 1 niepołączony.
  • Session Present – (BIT) – 1 gdy odbywa się sesja.
  • Return Code – (UNIT8) – zwraca nam kod statusu pracy.

Konfiguracja Połączenia Subskrybenta

Konfiguracja subskrybenta pozwala na ustalenie, jakie tematy wiadomości będzie odbierał UniStream. Podobnie jak w przypadku Brokera, musimy zacząć od dodania konfiguracji subskrybenta.

MQTT konfiguracja subskrybenta
  • Name – nazwa przypisana subskrybentowi, nie istotna w zapisie protokołu.
  • ID – indywidualny numer subskrybenta, nie ma wpływu oraz znaczenia dla protokołu, wykorzystywany tylko w LD.
  • Broker – przypisanie nazwy brokera, z którym ma się komunikować subskrybent.
  • Topic – temat, który subskrybujemy.
  • Data – tag, do którego wiadomość jest zastosowana.
  • Quality of Service – opisuje liczbę przyjmowanych retransmisji.
  • Buffered Mode – załączenie powoduje zapis kolejki otrzymywanych wiadomości
  • Subscribe at Boot Time – załączenie powoduje automatyczną subskrypcje tematu po włączeniu urządzenia

Struktura Subscription

Skład automatyczne generowanej struktury:

  • Subscribed Status – (BIT) – 0 połączony, 1 niepołączony.
  • Message Received (Received bit) – załącza się za każdym razem, gdy przychodzi nowa wiadomość.
  • Queue Full – (BIT) – załącza się gdy kolejka wiadomości jest pełna
  • Last Message in Topic – (String) – przechowuje ostatnią wiadomość
  • Last Message Received Time – zapis daty i godziny ostatniej wiadomości

Konfiguracja Połączenia Publication

Zajmiemy się teraz konfiguracją strony publikującej w protokole MQTT. Podobne do poprzednich formuł, wybieramy z podgałęzi opcje Publication Configuration.

Protokół MQTT w środowisku Unilogic publication
MQTT konfiguracja Publication
  • Name – nazwa przypisana, nie istotna w zapisie protokołu.
  • ID – indywidualny numer Publication, nie ma wpływu oraz znaczenia dla protokołu, wykorzystywany tylko w LD.
  • Broker – przypisanie nazwy brokera z którym ma się komunikować publicysta.
  • Topic – temat, który publikujemy.
  • Data – tag, do którego wiadomość jest zastosowana.
  • Quality of Service – opisuje liczbę przyjmowanych retransmisji.
  • Retain Flag – jeżeli jest załączone, w wypadku gdy subskrybent jest offline, wiadomość zostanie wysłana gdy powróci do online.
  • Format – format wysyłanych danych
  • Every Period – częstotliwość wysyłania publikacji
  • Broker Received – załącza się gdy Broker otrzyma wiadomość

Publikacja nie tworzy struktury po dodaniu

Funkcje MQTT w języku LD

Obsługa protokołu MQTT odbywa się głównie za pośrednictwem języka Ladder. Poniżej przedstawiamy bloki funkcyjne związane z tym protokołem

MQTT Ladder

Teraz przyjrzymy się najważniejszym funkcjom możliwym do implementacji w języku Ladder

Subskrypcja Tematów (Topic Subscribe)

Bloki funkcyjne związane z subskrypcją tematów:

Subscribe to Topic

Blok służy do subskrybcji nowego tematu. W terminalu A wpisujemy ID Publikacji do której chcemy się podłączyć, B zwraca nam status subskrypcji.

Subscribe All

Protokół MQTT w środowisku Unilogic

Blok pozawala nam na jednoczesną subskrypcje wszystkich tematów danego Brokera. Terminale złącz działają identycznie jak w wyżej wymienionym.

Unsubscribe Topic

Protokół MQTT w środowisku Unilogic

Podobnie do bloku Subscribe Topic, do złącza A trafia ID Tematu, a zwracany jest status. Pozwala na zakończenie subskrypcji danego tematu.

Łączność z Brokerem (Broker Connection)

Bloki LD związane z łącznością z Brokerem:

Connect Broker

Protokół MQTT w środowisku Unilogic

Blok umożliwia podłączenie Publishera/Subscribera do określonego Brokera. Terminal A służy do podłączenia ID brokera.

Disconnect Broker

Protokół MQTT w środowisku Unilogic

W przeciwieństwie do wyżej zaprezentowanego bloku, ten pozwala na odłączenie od brokera wskazanego na wejściu A.

Wcześniej w artykule została opisana procedura konfiguracji połączenia Brokera, Subskrybenta i Publicysty. Teraz opiszemy proces wgrywania wewnętrznych konfiguracji tych podmiotów.

Get/Set Broker Configuration i MQTT Broker Configuration

Ta funkcja wymaga od nas zastosowania specjalnego typu danych: MQTT Broker Configuration. W wyniku zastosowania tej struktury, możemy pobierać i wgrywać konfiguracje brokerów.

Struktura danych MQTT Broker Configuration składa się z najstępujących elementów:

  • IP /URL – wprowadzamy tutaj adres Brokera, któremu chcemy wgrać konfiguracje (adres IP lub .url, w zależności który podaliśmy przy konfiguracji połączenia brokera)
  • Port – port do którego został podpięty Broker
  • Clean Session – zwraca dane z konfiguracji podłaczenia
  • Client ID – umożliwia wprowadzenie ID, które będzie mogło się podłączyć

Set/Set Broker Configuration

Pozwala na wgranie/pobranie stworzonej przez nas struktury do/z Brokera. Do złącza A podpinamy adres Brokera na którym będziemy pracować, do złącza B strukturę konfiguracji (w naszym przypadku Broker42) którą chcemy wgrać (patrz zdjęcie wyżej).

Get/Set Publication Configuration i MQTT Subscription Configuration.

Podobnie jak w przypadku konfiguracji Brokera, struktura konfiguracyjna publicysty jest dedykowana: MQTT Subscription Configuration. Funkcjonalność terminali bloku jest identyczna jak w MQTT Broker Configuration, jednak struktura konfiguracji się różni:

  • Topic – temat publikacji
  • Quality of Service – zawiera informacje zawarte w pliku QoS
  • Retained Flag – zwraca BIT gdy kolejka jest pełna

Get/Set Subscription Configuration i MQTT Subscription Configuration

Konfiguracja struktury subskrypcji nie powinna nam sprawić problemów, ponieważ wszystkie elementy są analogiczne do MQTT Subscription Configuration.

Podsumowanie

Przedstawione dzisiaj funkcje nie są najprostsze do konfiguracji, ponieważ wymaga od użytkownika konfiguracji wielu parametrów. Protokół MQTT w środowisku UniLogic jest z pewnością ciekawą opcją transmisji, która nie wymaga zewnętrznych rozwiązań. Podsumowując, warto znać podstawową funkcionalność MQTT.

Zachęcamy do zapoznania się z pozostałymi częściami kursu Akademi PLC Elmarkdzięki którym można poznać inne istotne cechy i funkcje sterowników Unitronics:

  1. Sterowniki Unitronics serii UniStream
  2. Uruchomienie sterownika UniStream i instalacja UniLogic
  3. Konfiguracja sprzętowa sterownika Unitronics UniStream
  4. Typy danych dostępnych w sterownikach UniStream
  5. Tagi i struktury w programie UniLogic
  6. Podstawy tworzenia wizualizacji w UniLogic
  7. UniLogic prosty program przycisk + lampka
  8. Timery dostępne w UniLogic
  9. RTC w sterownikach Unistream
  10. String, czyli tekstowy typ danych
  11. DataSampling i archiwizacja danych w UniLogic
  12. I/O w sterownikach PLC UniStream
  13. Alarmy wbudowane w programie UniLogic
  14. UAC, czyli Zarządzanie uprawnieniami użytkowników
  15. Dostęp VNC do sterownika UniStream
  16. Tabele Danych w programie UniLogic
  17. Komunikacja EtherNet/IP
  18. Komunikacja ModBus RTU w UniStream
  19. Regulator PID w sterownikach UniStream
  20. Komunikacja CAN, czyli szeregowa magistrala komunikacyjna
  21. Konfiguracja Falowników w UniLogic
  22. Komunikacja za pomocą protokołu FTP
  23. Protokół MQTT w środowisku UniLogic
  24. Konfiguracja modemu 3G, wysyłanie/odbieranie SMS
  25. Bazy SQL w połączeniu z UniLogic

Wpisy wykorzystujące nabytą wiedzę w zaawansowany sposób

  1. UniStream współpracuje z bazami SQL.
  2. Sterownik PLC integruje się z systemem SCADA.
  3. UniStream działa jako serwer OPC UA.