Skip to content

Jak zbudować prosty system IIoT


Przemysłowy Internet Rzeczy (IIoT – Industrial Internet of Things) cały czas się rozwija i zyskuje na popularności, znacząco wpływając na nasze życie. W tym artykule przedstawimy użyteczny przykład IIoT – pokażemy, jakie możliwości otwiera właściwe połączenie ze sobą czujnika ELA Inniovation, routera Teltonika i panelu operatorskiego Astraada HMI.

Czujniki ELA Innovation

Czujniki ELA INNOVATION są to bezprzewodowe sensory, pozwalające mierzyć różne wielkości. Mają one szereg zalet:

  • są wytrzymałe, mogą pracować w bardzo trudnych warunkach środowiskowych,
  • są łatwe w montażu,
  • mają wytrzymałą, niewymienną baterię,
  • są zgodne z technologią BLE,
  • mają duży zasięg,
  • są łatwo konfigurowalne poprzez interfejs NFC,
  • posiadają dedykowaną aplikację na PC,
  • są kompatybilne z każdym urządzeniem, które obsługuje technologię BLE od wersji 4.0.

Tutaj skupimy się na czujnikach wykorzystujących standard Bluetooth, ale producent zapewnia też czujniki pracujące w technologii MESH oraz AOA.

Aktywne czujniki wysyłają ramki danych w świat zgodnie z skonfigurowaną mocą i częstotliwością nadawania. Konfiguracje sensorów realizujemy za pomocą programu Device Manager Suite, który pobieramy ze strony ELA Innovation oraz czytnika NFC. Po uruchomieniu programu, przechodzimy do zakładki Programmers i wybieramy opcje Configuration. Kładziemy czujnik na czytnik NFC, wybierając opcje Read i konfigurujemy go dla naszych potrzeb. Do tego przykładu użyliśmy czujnika Blue PUCK T, który mierzy temperaturę.

Konfiguracja czujnika – Aplikacja Device Manager

Sprawdź czy TAG Enable State na pewno jest ustawiona na True i zdejmij czujnik z czytnika. Następnie z zakładce Readers należy wybrać opcję Scanner BLE Devices. Wyświetli się lista dostępnych urządzeń Bluetooth, z której należy wybrać nasz czujnik. Użytkownik może tu sprawdzić MAC adresu czujnika oraz odczytaną przez niego temperaturę.

Sprawdzenie MAC adresu czujnika – Device Manager Suite

Informacje zebrane przez czujniki mogą być dalej przekazywane za pomocą protokołu MQTT. Dane może odbierać dowolny odbiorca, który jest kompatybilny z czujnikami – czyli obsługuję technologię BLE od wersji 4.0. Urządzenie to powinno móc zeskanować czujniki znajdujące się w jego otoczeniu, a następnie się z nimi sparować i wysłać odebrane dane na broker.

W roli takiego urządzenia świetnie sprawdzą się routery Teltonika – w naszym przypadku użyjemy routera RUTX11.

Router Teltonika

Routery Teltonika idealnie nadają się do zastosowań przemysłowych, dzięki posiadaniu takich cech jak:

  • możliwość połączenia VPN, co umożliwia zdalne programowanie PLC/HMI/maszyny,
  • połączenie szeregowe i Ethernet,
  • opcja komunikacji Modbus i MQTT,
  • Bluetooth,
  • możliwość użycia I/O,
  • alarmowanie przy pomocy SMS,
  • kontrolowanie ilości zużycia danych na karcie SIM,
  • zabezpieczenia sieciowe,
  • zdalne zarządzanie / monitorowanie.

Podstawowa konfiguracja routera jest bardzo prosta i została opisana w artykule „Podstawowa konfiguracja routera dla sieci przemysłowej – dostęp do Internetu, publiczny IP, LAN, WiFi, resetowanie routera, DDNS.

Router Teltonika może pełnić funkcję MQTT BROKERA – może wysyłać sam na siebie dane. W tym przypadku RUTX11 jest równocześnie brokerem i publikuje dane. Aby tak było, musimy wykonać 3 kroki w konfiguracji routera.

Aby dostać się do strony konfiguracyjnej routera, należy podłączyć go do komputera PC poprzez kabel Ethernet, wpisać adres IP routera w przeglądarkę i zalogować się.

Krok 1. Router w funkcji brokera

Aby nasz router mógł pełnić role serwera, należy w aplikacji konfiguracyjnej routera z menu SERVICES wybrać zakładkę MQTT. Aktywujemy MQTT BROKER przesuwając suwak na „on”.

Aktywacja MQTT BROKERA w routerze Teltonika

Krok 2. Sparowanie czujnika z gatewayem Teltonika RUTX11

Na początku należy uruchomić usługę Bluetooth z menu SERVICES, a następnie poprzez naciśnięcie przycisku SCAN wykonać skanowanie czujników znajdujących się w otoczeniu routera. Jeśli w AVAILABLE DEVICES pojawi się nasz czujnik – zaznaczamy go i parujemy z routerem za pomocą przycisku PAIR. Na koniec zapisujemy zmiany klikając SAVE&APPLY.

Skanowanie i parowanie czujników z routerem Teltonika

Krok 3. Wysyłanie zgromadzonych danych na serwer

Przechodzimy w aplikacji do SERVICES -> DATA TO SERVER. Ta zakładka pozwoli nam na skonfigurowanie czujników, które zbierają dane i okresowo wysyłają na serwer. Po wpisaniu nazwy i kliknięciu przycisk ADD, przechodzimy do konfiguracji.

Dodanie nowego czujnika

Należy zwrócić szczególną uwagę na wybranie odpowiedniego formatu JSON, który będzie obsługiwany przez aplikację kliencką. W naszym przypadku potrzebujemy tylko nazwy czujnika i dane (temperaturę), więc w polu Format string wpisujemy {„nazwa”:”%name%”,”data”: %data%}. Ważny jest również odpowiedni temat, na który będą wysyłane dane oraz aby wybrać filtrowanie po MAC adresie czujnika. Po skończonej konfiguracji zmiany zapisujemy klikając SAVE&APPLY.

MQTT Explorer

Do monitorowania danych przesyłanych na serwer skorzystamy z narzędzia MQTT EXPLORER, które możemy pobrać ze sklepu Microsoft.

Po uruchomieniu zainstalowanej aplikacji należy dodać nasz broker, do którego będzie łączy się MQTT Explorer i potwierdzić przyciskiem CONNECT. MQTT Explorer domyślnie subskrybuje wszystkie tematy, wystarczy więc poczekać, aż na podany przez nas temat w DATA TO SERVER, przyjdzie paczka danych. Po zaznaczeniu naszego tematu po prawej w zakładce Value, pojawi się przesyłana wiadomość. Możemy sprawdzić czy nie popełniliśmy błędu w formacie JSON. Jeśli wszystko jest poprawne, dane możemy wyświetlić w formie wykresu. Z poziomu naszego narzędzia można również publikować dane na wybrany temat.

MQTT Explorer

Panel Astraada HMI

Astraada HMI Panel to dotykowe, ekonomiczne panele operatorskie. Dzięki swojej niezawodności, intuicyjności i rozbudowanej funkcjonalności są szeroko stosowane do obsługi maszyn w systemach sterowania. Zapewniają bogate możliwości komunikacyjne, ponieważ w standardzie dostarczane jest ponad 400 protokołów komunikacyjnych, co pozwala na wymianę danych z większością urządzeń automatyki.

Dostępne jest bezpłatne oprogramowanie narzędziowe Astraada HMI CFG do tworzenia ekranów wizualizacyjnych, które posiada:

  • dostęp do gotowej biblioteki elementów graficznych
  • rejestrację i archiwizacje danych
  • alarmowanie, trendy, receptury
  • własne algorytmy sterowania
  • wbudowany kompilator i symulator
  • mechanizm pomocy
  • obsługa protokołu MQTT

Dodatkowo istnieje możliwość połączenia zdalnego z panelem, co umożliwia mobilny dostęp do niego. Zrealizowane jest to w oparciu o protokół VNC lub FTP.

W naszym przypadku wykorzystamy funkcjonalność panelu opartą na protokole MQTT, aby panel mógł połączyć się z brokerem, odebrać i wyświetlać od niego dane pomiarowe czujnika na określony przez nas temat „TESTY”.

Konfiguracja MQTT Client dla panelu Astraada

Po stworzeniu nowego projektu, zaczynamy konfiguracje połączenie między brokerem a panelem Astraada HMI. Z drzewa projektu rozwijamy zakładkę Link, z której wybieramy MQTT Client. Otwarte zostanie okno z miejscem na informacje o brokerze, określenie tematu publikacji i subskrypcji oraz do dodania Macro.

Application and MQTT Broker

Zaczniemy od zaznaczenia opcji ENABLE i uzupełnienia informacji o brokerze, podając jego adres IP i port:

Konfiguracja połączenia MQTT panelu Astraada HMI z brokerem

Publish and Subscribe Topics

Aby określić temat publikacji, subskrypcji oraz treść wiadomości, zamykamy okno MQTT Client i wybieramy z drzewka projektowego opcje Text Format Table.

Wyświetli nam się tabela z trzema kolumnami: ID, Name, Language 1. W naszym przypadku będziemy mieć jeden wspólny temat dla publikacji i subskrypcji, więc treść wiadomości też będzie miała taki sam format dla obu trybów – wystarczy zdefiniować jedną treść wiadomości.

Wobec tego za pomocą ikony New  tworzymy dwa wiersze. W kolumnie Name wpisujemy dowolną nazwę, a w kolumnie Language 1:

      • Pierwszy wiersz stanowi tekst wiadomości – tekst będzie przesyłał zmienną, dlatego musi zostać ona zdefiniowana. W naszym przykładzie będziemy odczytywać tą samą wiadomość, jaką wysyłamy do brokera.
      • Drugi wiersz przedstawia formę tematu, na jaki będziemy publikować i subskrybować dane. W naszym przypadku będzie to wspólny temat „TESTY”.
Tabela Text Format Table

Podanym wierszom należy jeszcze nadać odpowiednie cechy, żeby mogły być wykorzystane do konkretnych celów. Aby to zrobić, zależy zaznaczyć wybrany wiersz i kliknąć przycisk Property.  Dla wiersza pierwszego definiujemy zmienną $U1000, która będzie naszym ciągiem JSON oraz w polu Specific Purposes zaznaczamy Composing MQTT Publish Message i Sending/Receiving Data Values. Zatwierdzamy przyciskiem OK i przechodzimy do Property następnego wiersza.

Text Format Settings dla wiersza pierwszego

W przypadku wiersza drugiego wystarczy zaznaczyć pola Composing MQTT Publish Topic i Composing MQTT Subscription Topic w Specific Purposes:

Text Format Settings dla wiersza drugiego

Możemy teraz wrócić do zakładki MQTT Client z węzła Link z drzewa projektu. Zaznaczamy i wybieramy zdefiniowany przez nas temat publikacji i subskrypcji:

Nadanie zdefiniowanym tematom MQTT ID w odpowiedniej kolumnie

MQTT Message Receiving Macro

Ostatnim elementem konfiguracji MQTT będzie napisanie makro do trybu subskrypcji. Makro to będzie odbierać informacje przychodzące na serwer, konwertować dane i zapisywać w zmiennych. Wybierając z drzewa projektu Macros -> Native Scripts -> Add Script i nadajemy dowolną nazwę, w naszym przypadku będzie to CONVERT.

Skrypt rozpoczniemy od wykorzystania funkcji MqttGet, która odbiera informacje o najnowszej wiadomości od brokera.

Dalej za pomocą funkcji GetJsonVal pobieramy nazwę czujnika w ciągu JSON o adresie $U1000, konwertujemy na typ danych STR i zapisujemy wynik w zmiennej wynik_nazwy. W zmiennej wynikJson będzie zapisane, czy operacja się powiodła czy też nie.

Ponownie korzystając z funkcją GetJsonVal, pobieramy dane czujnika, w naszym przypadku temperaturę i zapisując je w zmiennej wynik_temp, typu STR.

Na koniec wykonywana jest konwersja ASCII -> FLOAT przy pomocy funkcji A2F, aby wartości temperatury można było wyświetlić za pomocą elementu numeric display.

0\msgLen = MqttGet (0\topic[0], $U1000, 0\topicLen)

0\nazwa = L"nazwa"
0\wynikJson = GetJsonVal($U1000, 0\nazwa, 0\wynik_nazwy) (STR)

0\nazwa_t= L"[0].data.temperature"(U)
0\wynikJson= GetJsonVal($U1000, 0\nazwa_t, 0\wynik_temp) (STR)

0\wynik_t = A2F(0\wynik_temp,0)(F)
Skrypt CONVERT

Kończąc konfiguracje połączenia MQTT, ponownie z drzewa projektu otwieramy okno MQTT Client. Zaznaczamy opcje MQTT Message Receiving Macro, pojawi nam się na górze okna, zakładka o tej samej nazwie. Po wejściu w nią, z Macro name wybieramy nasz skrypt CONVERT.

Wszystkie zmienne użyte w skrypcie definiujemy w węźle Tags -> Interial Memory i wyglądają one następująco:

Tag Table

Tworzenie programu do wyświetlania danych na panelu Astraada

Stworzymy prosty ekran, który będzie wyświetlać aktualną temperaturę i nazwę naszego czujnika. Dobrym zwyczajem jest także monitorowanie działania MQTT, żeby nie publikować/subskrybować danych na marne. Pomoże to również szybciej zauważyć, gdzie w obsłudze MQTT jest błąd. Do tego użyjemy elementu Bit lamp, który znajdziemy w zakładce Object. Po przypisaniu mu adresu $GS1031.0, obiekt będzie sygnalizował status MQTT – czy jest ono włączone, czy wyłączone.

Następnie dodamy Numeric Display i przypisujemy mu zmienną 0\wynik_t, żeby wyświetlał temperaturę. Dodajemy także Character Display, przypisujemy  mu zmienną  0\wynik_nazwy, dzięki czemu będzie wyświetlać nazwę czujnika. Oba te elementy znajdziemy w zakładce Object.

Wgrywanie projektu z aplikacji Astraada HMI CFG na fizyczny panel

Skończony program zapisujemy, kompilujemy i otwieramy w trybie symulacji, za pomocą trzech ikon zaznaczonych poniżej na żółto.

Zapisywanie, kompilacja i symulacja

Gdy symulacja działa zgodnie z naszymi oczekiwaniami, możemy przejść do wgrywania programu do panelu. Z drzewa projektu wybieramy Links -> Link 1.  Wyświetli się okno Link Properties, gdzie w zakładce General, można sprecyzować rodzaj połączenia, nazwę producenta panelu czy rodzaj protokołu z jakiego zamierzamy skorzystać. W naszym przypadku łączymy się po Ethernet z panelem produkcji Astraada HMI, korzystając z protokołu ModBus Device/Slave. Przechodzimy do zakładki Parameter, gdzie wpisujemy adres IP panelu.

Link Properties

Ostatnim krokiem jest wgranie programu do sterownika. Upewni się, że zaznaczone są wszystkie opcje w zakładce Download i wybrany odpowiedni adres IP.

Tak wygląda nasza aplikacja na panelu Astraada HMI


Udostępnij artykuł:

Proponowane na blogu

Sprawdź więcej artykułów