Strona główna ASTOR
Automatyka w praktyce

Jak odczytywać dane pomiarowe z czujników BLE ELA Innovation i wykonywać akcje za pomocą sterownika Astraada One Compact i routera Teltonika?

Kontakt w sprawie artykułu: Natalia Kazykalewicz - 2023-01-16

Z tego artykułu dowiesz się:

  • jak skonfigurować router Teltonika i sterownika Astraada One do odczytywania danych z czujników BLE ELA Innovation,
  • jak skomunikować ze sobą router Teltonika i sterownik Astraada One,
  • jak wykonać akcje typu „jeżeli temperatura spadnie poniżej 15 stopni, załącz wyjście 1”.

Sterownik PLC Astraada One możemy zaprogramować tak, aby w połączeniu z routerem Teltonika, który będzie tym przypadku brokerem MQTT, pozwalał na odczytywanie danych z czujników ELA Innovation. Zbierane dane mogą posłużyć do wyzwalania różnych działań wykonywanych warunkowo. Przykładowo sterownik może załączyć odpowiednie wyjście w momencie, gdy temperatura (zmierzona przez czujnik) spadnie poniżej danej wartości.

Konfiguracja czujników BLE ELA Innovation

Aby czujniki zbierały i wysyłały dane pomiarowe, należy jest aktywować, a następnie przejść do ich konfiguracji. Konfiguracje sensorów realizujemy za pomocą aplikacji Device Manager, którą pobieramy na smartfon z obsługą NFC z sklepu Google Play lub Apple App Store. Do naszego przykładu użyliśmy czujnika RHT, który mierzy wilgotność i temperaturę.

Zrzut ekranu konfiguracji czujnika RHT. Źródło: ASTOR Mission Critical

Konfiguracja routera Teltonika

Do zaprojektowania systemu na potrzeby tego artykułu wykorzystano router RUTX 11, jednak dla wszystkich routerów rodziny Teltonika konfiguracja jest identyczna.

Konfiguracja sterownika Astraada One

Sterownik musi być w tej samej podsieci, co router, aby mogły się „widzieć”. Ponieważ nasz router ma adres IP 192.168.0.1/24, należy w ustawić adres sterownika na 192.168.0.X, gdzie X jest dowolną liczbą od 1 do 254 (ponieważ podsieć ma maskę 255.255.255.0).

W naszym przykładzie sterownik ma adres IP 192.168.0.14.

Konfiguracja sieci dla sterownika Astraada One. Źródło: ASTOR Mission Critical

W pierwszym kroku należy dodać bibliotekę MQTT Client, z której będziemy korzystać. Dostępna jest ona pod linkiem: https://forge.codesys.com/forge/product-news/2019/10/release-mqtt-client-1005/

Z tej biblioteki wykorzystamy blok MQTT_Client.FB_MQTTClient, który będzie subskrybował dane z brokera 192.168.0.1:1883, publikowane w temacie AstTest. Wiadomość otrzymaną z brokera będziemy widzieli w zmiennej message.

Zdefiniowane zmienne programu PLC_PRG. Źródło: ASTOR Mission Critical
Blok MQTT_Client.FB_MQTTCLient. Źródło: ASTOR Mission Critical

Wiadomość przychodzi po zmianie stanu z False na True lub odwrotnie, dlatego by nie robić tego ręcznie, przed blokiem MQTT_Cleint.FB_MQTTClient wstawiliśmy poniższe dwie linijki:

W kolejnym kroku wykonujemy 2 pliki DUT:

1) JSONStruct1 – struktura nazwy sensora:

Kod JSONStruct1. Źródło: ASTOR Mission Critical

2) sensorType – do zaimplementowania wyliczenia typów czujników

Kod sensorType. Źródło: ASTOR Mission Critical

Cała logika do obsługi i porządkowania danych odbywa się w pliku Parser typu POU, napisanym w języku ST.

Załóżmy że otrzymujemy dane z czujnika MOV:

message = '{"Name" : "Czujnik3", "Dane" : {  "x-axis": 10, "y-axis" : 20, "z-axis" : 30 } }';

Parsujemy tę wiadomość, usuwając spacje i rozdzielając wiadomość miedzy wierszami i kolumnami na podstawie znaków { }, : ”

Następnie zapisujemy nazwę czujnika w zmiennej nazwa i przechodzimy do rozpoznawania typu czujnika. Jeśli w zmiennej message jest fraza:

  •  „temperature” – będzie to czujnik typu T
  • „humidity” – będzie to czujnik typu RHT
  • „x-axis” – będzie to czujnik typu MOV
  • „state” – będzie to czujnik typu MAG

Są to frazy charakterystyczne dla danego typu czujnika, występujące stale w formacie wysyłanym przez dany czujnik.

Następnie sprawdzamy, czy nazwa czujnika, z którego odebrano dane, jest już na liście. Jeśli nie ma, to rezerwowane jest miejsce i wpisywane są dane po raz pierwszy w kolejnych wierszach tabeli.

To, ile wierszy w tabeli trzeba zarezerwować, zależy od jego typu:

  • Czujnik T ma 1 wartość.
  • Czujnik RHT ma 2 wartości.
  • Czujnik MOV ma 3 wartości .
  • Czujnika MAG ma 2 wartości.

Jeśli natomiast nazwa czujnika jest już na liście, to dane wpisywane są do istniejących już pól w tabeli.

W rezultacie mamy dwie istotne tabele:

  • dane – która przechowuje dane wszystkich czujników (kolejne czujniki dodawane są w kolejnych wierszach, a jeżeli odebrane zostaną dane z tego samego czujnika, to odpowiednie wiersze są aktualizowane):
Tabela dane[]  z wartościami poszczególnych czujników. Źródło: ASTOR Mission Critical
  • table1 – przechowuje ostatnio odebrane dane z jednego z czujników:
Tabela table1[] z danymi ostatniego czujnika. Źródło: ASTOR Mission Critical

Zaprogramowanie akcji

Wykonywanie akcji zaprogramujemy w osobny podprogramie logika typu POU w języku LD. Będzie to akcja załączania wyjścia 0, jeżeli temperatura spadnie poniżej 10°C.

Aby tak się stało, tablica dane w programie Parser musi być wyjściem (OUTPUT).

Zakładamy, że zawsze dana z temperaturą będzie w tabeli dane w wierszu dane[0,2]. W takim wypadku parsujemy tę daną na typ INT i porównujemy ją – czy jest mniejsza od 10°C. Jeśli tak jest, otrzymujemy wartość TRUE i załączamy wyjście 0 o nazwie OUT1.

Kod do wykonywania akcji. Źródło: ASTOR Mission Critical

Aby ustawić wyjście 0 na OUT1, musimy dodać w Extension_Slots XBIO urządzenie, a następnie po wejściu w to urządzenie przejść do zakładki BGH Slot BUS I/O Mapping i ustawić tam podaną nazwę dla wyjścia 0.

Dodanie slotu XBIO_Berghof_IO. Źródło: ASTOR Mission Critical
Nadanie nazwy OUT1 na wyjście 0. Źródło: ASTOR Mission Critical

Zainteresowany szczegółami?

Jeśli chcesz otrzymać cały kod programu realizujący postawione w artykule zadanie – zapraszamy do kontaktu mailowego: amc@astror.com.pl

Newsletter Poradnika Automatyka

Czytaj trendy i inspiracje, podstawy automatyki, automatykę w praktyce

Please wait...

Thank you for sign up!

Czy ten artykuł był dla Ciebie przydatny?

Średnia ocena artykułu: 5 / 5. Ilość ocen: 2

Ten artykuł nie był jeszcze oceniony.

Zadaj pytanie

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Jedna odpowiedź do “Jak odczytywać dane pomiarowe z czujników BLE ELA Innovation i wykonywać akcje za pomocą sterownika Astraada One Compact i routera Teltonika?”

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *