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
Konfiguracje MQTT rozpoczynamy od wyboru zakładki MQTT z drzewa projektu (PLC Communication > Protocols > MQTT).
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.
- 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.
- 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.
- 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
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
Blok pozawala nam na jednoczesną subskrypcje wszystkich tematów danego Brokera. Terminale złącz działają identycznie jak w wyżej wymienionym.
Unsubscribe Topic
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
Blok umożliwia podłączenie Publishera/Subscribera do określonego Brokera. Terminal A służy do podłączenia ID brokera.
Disconnect Broker
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 Elmark, dzięki którym można poznać inne istotne cechy i funkcje sterowników Unitronics:
- Sterowniki Unitronics serii UniStream
- Uruchomienie sterownika UniStream i instalacja UniLogic
- Konfiguracja sprzętowa sterownika Unitronics UniStream
- Typy danych dostępnych w sterownikach UniStream
- Tagi i struktury w programie UniLogic
- Podstawy tworzenia wizualizacji w UniLogic
- UniLogic prosty program przycisk + lampka
- Timery dostępne w UniLogic
- RTC w sterownikach Unistream
- String, czyli tekstowy typ danych
- DataSampling i archiwizacja danych w UniLogic
- I/O w sterownikach PLC UniStream
- Alarmy wbudowane w programie UniLogic
- UAC, czyli Zarządzanie uprawnieniami użytkowników
- Dostęp VNC do sterownika UniStream
- Tabele Danych w programie UniLogic
- Komunikacja EtherNet/IP
- Komunikacja ModBus RTU w UniStream
- Regulator PID w sterownikach UniStream
- Komunikacja CAN, czyli szeregowa magistrala komunikacyjna
- Konfiguracja Falowników w UniLogic
- Komunikacja za pomocą protokołu FTP
- Protokół MQTT w środowisku UniLogic
- Konfiguracja modemu 3G, wysyłanie/odbieranie SMS
- Bazy SQL w połączeniu z UniLogic
Wpisy wykorzystujące nabytą wiedzę w zaawansowany sposób
Skontaktuj się ze specjalistą Elmark
Masz pytania? Potrzebujesz porady? Zadzwoń lub napisz do nas!