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ę.
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ę.
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”.
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.
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.
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.
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:
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”.
-
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.
W przypadku wiersza drugiego wystarczy zaznaczyć pola Composing MQTT Publish Topic i Composing MQTT Subscription Topic w Specific Purposes:
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:
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)
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:
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.
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.
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
- Jeżeli chcesz stworzyć bardziej rozbudowany system z większą ilością czujników, sprawdź nasz artykuł „Jak monitorować temperaturę i wilgotność w biurze z wykorzystaniem panelu Astraada HMI, czujników ELA i routera Teltonika„.