Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2022/10/Mqtt-panasonic-.jpg

Hallo IIoT! – MQTT od Panasonic


MQTT, czyli z ang. Message Queue Telemetry Transport, jest jednym z najczęściej wykorzystywanych protokołów komunikacyjnych w IoT. Przyczyn tego jest całe mnóstwo, ale najważniejszy jest brak ograniczeń co do systemu operacyjnego, przejrzystość i prostota implementacji oraz skalowalność. Gdybyśmy sięgnęli do historii jego powstania okazałoby się, że został on stworzony na potrzeby linii produkcyjnej a dokładnie komunikacji pomiędzy maszynami (M2M).
Sercem komunikacji z wykorzystaniem MQTT jest broker. Upraszczając, jest to rodzaj serwera zajmujący się redystrybucją wiadomości pomiędzy klientami. Wiadomości przesyłane wewnątrz sieci uporządkowane są poprzez system tematów i podporządkowanych im wątków. Obrazowo możemy to porównać np. do komody, gdzie mamy kilka szuflad (tematów) i przegródek znajdujących się w tych szufladach (wątków). Klient może równocześnie publikować i nasłuchiwać całych tematów lub tylko wybranych wątków. Mamy również do dyspozycji inne mechanizmy jak np. mechanizm gwarantujący dostarczenie danej wiadomości.
Wiele osób za minus tego systemu komunikacji podaje konieczność utworzenia brokera, twierdząc, że np. wymaga to osobnego komputera. Czy aby na pewno? Przypomnijmy sobie jak było kiedyś z OPC, które wymagało postawienia serwera i to na Windows, za który dodatkowo należało niejednokrotnie słono zapłacić. W przypadku MQTT możemy użyć darmowego brokera, który bezproblemowo uruchomimy na dowolny komputerze przemysłowym nawet z niewielkimi zasobami. Alternatywnie możemy też wykupić usługę serwera w chmurze.

Przygotowanie broker.

Jednym z popularniejszych i darmowych brokerów MQTT jest Eclipse Mosquitto™. Można go pobrać bezpośrednio ze strony https://mosquitto.org/ dla różnych platform (Windows, Linux, Mac, Raspberry Pi). Właśnie tym serwerem posłużymy się w naszym przykładzie.

Jego instalacja i konfiguracja w środowisku Windows jest dość prosta (zresztą w systemie Linux jest podobnie, jeżeli tylko mamy dostęp do odpowiednich repozytoriów). Wystarczy tak naprawdę pobrać i uruchomić kreator instalacji.

Po zakończeniu instalacji brokera warto sprawdzić, czy wszystko działa i choćby w minimalnym stopniu go skonfigurować. Uruchamiamy w tym celu wiersz poleceń Windows (pamiętając o uprawnieniach administratora) i przechodzimy do folderu instalacyjnego Mosquitto za pomocą polecenia cd C:\Program Files\mosquitto. Wpisując komendę mosquitto -h zobaczymy opis oraz pomoc zainstalowanego serwera, a za pomocą mosquitto -v wystartujemy nasz serwer oraz sprawdzimy jego status. Dodatkowo możemy skorzystać z dwóch komend net start mosquitto oraz net stop mosquitto do późniejszego startowania i zatrzymywania serwera, gdy zostanie on już skonfigurowany.

Pozostaje nam jego konfiguracja. Przed przystąpieniem do czynności, należy zatrzymać serwer. W ramach naszego krótkiego tutorialu stworzymy przykładowego użytkowania i wymusimy konieczność logowania się klienta. Natomiast Eclipse Mosquitto oferuje dużo więcej opcji, dlatego też warto zapoznać się z jego dokumentacją.

Konfigurację zarządzania dostępem należy rozpocząć od utworzenia pliku, w którym będziemy przechowywać informacje o użytkownikach. Następnie taki plik należy wskazać w ustawieniach konfiguracyjnych jako plik z hasłami. I teraz mamy dwie drogi zarządzania użytkownikami. Możemy jawnie, z góry, zdefiniować użytkowników i hasła w pliku, a następnie go zaszyfrować (my użyjemy tej metody) albo dodawać/usuwać/modyfikować użytkowników z linii poleceń.

W naszej metodzie plik użytkowników najlepiej utworzyć za pomocą notatnika. Zwyczajnie linia po linii definiujemy użytkownika i hasło w formacie [login]:[hasło]. Plik taki umieszczamy w folderze instalacyjnym Mosquitto. Następnie z linii poleceń szyfrujemy taki plik komendą: mosquitto_passwd -U [nazwa pliku].

Skoro mamy już utworzonego użytkowania pozostaje nam teraz edycja pliku konfiguracyjnego brokera. Odnajdujemy w folderze instalacyjnym plik mosquitto.conf i otwieramy go przy pomocy dowolnego edytora tekstu. Szukamy sekcji „Security” i dopisujemy dwie linie kodu:
allow_anonymous false
password_file C:\Program Files\mosquitto\uzytkownik.txt

Pierwsza linia (allow_anonymous) wyłącza opcję anonimowego logowania się do brokera, druga natomiast (password_file) wskazuje plik z danymi użytkowników.

Uruchamiamy ponownie brokera i pozostaje nam jedynie sprawdzić, czy działa on poprawnie. Możemy to zrobić na kilka sposobów, ale najprościej jest zainstalować dowolnego darmowego klienta np. MQTTBox i połączyć się z naszym brokerem. Taki test możemy przeprowadź w ramach naszego PC pamiętając, że adres IP brokera będzie lokalnym adresem hosta, czyli 127.0.0.1. Gdybyśmy jednak chcieli przetestować naszego brokera z zewnętrznego urządzania to adresem brokera będzie adres IP karty sieciowej komputera, na którym uruchomiony jest nasz Mosquitto.

Konfiguracja klienta MQTT.

W pierwszej części artykułu uruchomiliśmy brokera MQTT. Pozostaje nam teraz spróbować podłączyć do niego urządzenia, które komunikowałyby się ze sobą, a dodatkowo pozwoliłoby to połączyć fizyczny świat (maszynę) ze światem wirtualnym, czyli dowolnym serwisem przetwarzającym dane.

W ofercie Panasonic znajdziemy dwa typy urządzeń, które pozwolą nam użyć MQTT i które śmiało możemy nazwać bramkami IIoT. Będą to panele HMI serii HM oraz moduł komunikacyjny FP-I4C. Oba urządzenia konfigurowane są za pomocą darmowego środowiska HMWIN Studio.

Panele HMI dostępne są w rozmiarach od 5” do 21.5” z rozdzielczością dochodzącą do 1920 x 1080  pikseli i 16M kolorów. Oferują możliwość obsługi dwóch sieci Ethernet (dwa różne adresy IP) z opcjonalną funkcją routera lub switcha. Równolegle do MQTT pozwalają na uruchomienia serwera i klienta OPC UA, serwera WWW, FTP, klienta poczty czy VNC.

FP- I4C poświęciliśmy cały webinar (link pod artykułem). Generalnie oferuje on dokładnie te same funkcje co panele serii HMI pozwalając dodatkowo na komunikację z bazami danych SQL i dając możliwość indywidualizacji oprogramowania dzięki np. platformie Python.

Obie serie urządzeń łączy jeszcze jedno. Zdalny dostęp i opcja pracy w sieci VPN. Panele i serwer mają wbudowaną opcję uruchomienia usługi chmury zdalnego dostępu – Corvina Cloud. Jednorazowa licencja i dożywotni zdalny dostęp do urządzenia znajdującego się gdziekolwiek na świecie, bez tworzenia zbędnej infrastruktury to tylko jedna z zalet tej usługi.

Wracając jednak do tematu, spróbujmy podłączyć moduł komunikacyjny FP-I4C do naszego brokera MQTT i opublikować informację np. o wartości jakieś zmiennej. Następnie spróbujmy ją wyświetlić na panelu HMI.

Uruchomienie klienta MQTT w środowisko HMWIN jest równie łatwe jak instalacja brokera pod Windows. Po utworzeniu projektu należy odszukać zakładkę MQTT i zaznaczyć opcję „Enable MQTT Interface”. W ten sposób, uruchomiliśmy klienta MQTT. Teraz wystarczy go skonfigurować i wskazać zmienne, które będą używane do transmisji. Przyjrzyjmy się zatem wybranym elementom konfiguracji, które będą przydatne w naszym projekcie.

Sekcja „Tag configuration” (1) służy do definiowania zmiennych, a tak naprawdę grup zmiennych, które będą wymieniane w ramach interfejsu MQTT. W HMWIN tworząc zmienną możemy przypisać ją do grupy np. o nazwie Grupa_MQTT. Taką grupę możemy dalej użyć jako listę zmiennych do publikacji w ramach MQTT lub automatycznie ładować do nich wartości wysłane przez brokera. Określamy również, kiedy będą one publikowane (ze stałym cyklem czasowym, czy po zmianie wartości) oraz wskazujemy dla nich QoS (Quality of Service). Ten ostatni parametr definiuje, czy publikujemy bez potwierdzenia, za potwierdzeniem odbioru, lub też czy każda publikacja wymaga obustronnego potwierdzenia skutecznego dostarczenia informacji. Dodatkowo parametr „Retain” wymusza zapisanie ostatniej znanej wartości przez brokera tak aby w przypadku pojawienia się nowego klienta śledzącego dany wątek wysłać mu ją natychmiast.

W sekcji „Settings”(2) określa się np. wielkość kolejki, tzn. ilość informacji do publikacji, które mają być przechowywane w RAM w przypadku utraty połączenia z brokerem. Kolejny bardzo ważny element tej części to ustawienia połączenia z brokerem (3). Określamy tutaj typ brokera, jego adres IP oraz port do komunikacji. Definiujemy ID klienta, czyli jak będzie się przedstawiać w sieci nasze urządzenie, a także dane do logowania. Znajdują się tu też opcje pozwalające na zaciągnięcie certyfikatów TLS oraz funkcje zarządzania sesją. W przypadku korzystania z certyfikatów warto zajrzeć do Help Contents programu HMWIN, gdzie przedstawione jest jak poprawnie to konfigurować.

Na koniec skonfigurować musimy kształt wysyłanych informacji (4). Mamy tu do dyspozycji różne scenariusze: Birth – publikujemy informacje przy nawiązaniu połączenia z brokerem, Will – Informacje jest zapisana przez brokera i publikowana gdy nasz klient utraci połączenie, Data (Pub) służy do publikacji danych w danym wątku, Data (Sub) używana jest do subskrybowania wątku. W każdym z przypadku określamy temat i wątek, w którym publikujemy (Topic) oraz treść do publikacji (Payload).

 

 

W obu elementach możemy użyć funkcji automatyzacji dostępnej w HMWin. Za pomocą specjalnych słów kluczowych możemy dynamicznie budować treść komunikatu. Jest to bardzo przydatna rzecz choćby w przypadku, gdy chcemy automatycznie wysyłać całą grupę tagów lub ją odbierać. Wystarczy wtedy skonstruować odpowiednio Playload (lub np. użyć domyślnych ustawień) a zmienne, którymi będziemy posługiwać się w wizualizacji będą automatycznie transmitowane i odbierane poprzez protokół MQTT. Należy tylko pamiętać, aby wszystkie urządzenia w sieci zachowywały ten sam format wiadomości.

Konstrukcja standardowego komunikatu, który jest użyty do odbierania danych wygląda następująco:

{„tag”: „${tagName}”, „v”: { „v”: „${value}”, „ts”: „${timestamp}”, „q”: „${quality}” } }
Rozszyfrowując go widzimy, że użyte zostały dynamiczne tagi: ${tagName} – nazwa zmiennej, ${value} – ostatnia znana wartość, ${timestamp} – znacznik czasu, ${quality} – znacznik jakości.

 

 

W celu wymiany danych, stworzymy projekt dla modułu komunikacyjnego I4C oraz panelu HMI, oczywiście w oprogramowaniu HMWIN Studio. Po otwarciu programu, należy wybrać urządzenie dla którego przygotowujemy projekt. Następnie musimy zdefiniować protokół oraz tagi. Protokół służy do definiowania z jakim urządzeniem połączony jest panel HMI lub moduł I4C. W przypadku tego przykładu, posłużymy się protokołem, który określa zmienne wewnętrzne. Tag tworzymy jako zmienną unsignetShort i wpisujemy nazwę grupy MQTT.

Następnie tworzymy obiekt, gdzie zmienną będziemy mogli odczytywać lub ustawiać. W związku z tym, przechodzimy do zakładki Page1. Z listy widgetów wybieramy obiekt numeryczny (99999). Przystępujemy do konfiguracji. Aktywujemy ramkę oraz przypisujemy tag, klikając dwukrotnie na obiekt i wybierając z listy wcześniej przygotowaną zmienną.

Wiedząc już jak skonfigurować klienta MQTT nie pozostaje nam nic innego jak użyć danych logowania użytkownika, którego stworzyliśmy przy konfiguracji brokera. Wpisać adres IP komputera, na którym uruchomiony jest nasz broker, a także zdefiniować grupę zmiennych, które użyjemy do komunikacji. Podobne operacje przeprowadzamy zarówno po stronie panelu HMI jak i modułu komunikacyjnego FP-I4C.  I gotowe, nasz panel i mały serwer wymieniają ze sobą dane za pośrednictwem MQTT! Proste, prawda?

 

HMWin: https://industry.panasonic.eu/products/automation-devices-solutions/human-machine-interfaces/hmi-programming-software/programming-software-hm-series-hmwin

Panele serii HM: https://industry.panasonic.eu/products/automation-devices-solutions/human-machine-interfaces/high-end-touch-terminals

I4C: https://industry.panasonic.eu/products/automation-devices-solutions/programmable-logic-controllers-plc/communication-units/fp-i4c-panasonics-industrial-communicator

Webinar:



Utworzono: / Kategoria:
  • Autor: Panasonic Industry
  • Panasonic Industry zajmuje się produkcją oraz dystrybucją komponentów elektronicznych, takich jak: przekaźniki elektromechaniczne, przekaźniki półprzewodnikowe, przełączniki i złącza. Portfolio produktowe zawiera również czujniki przemysłowe , sterowniki programowalne, napędy przemysłowe i systemy znakowania laserowego. W ścisłej kooperacji z europejskimi klientami, oferujemy rozwiązania dla różnych obszarów biznesu, takich jak przemysł motoryzacyjny, pojazdy elektryczne, automatyzacja procesów technologicznych oraz budynków, odnawialnych źródeł energii czy zarządzania środowiskowego.
  • Profil Autora
  • https://industry.panasonic.eu/

Reklama



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY