Przemysł 4.0 w praktyce - Modbus w chmurze
| Prezentacje firmowe Przemysł 4.0Przemysł 4.0, IIoT i rozwiązania chmurowe to obecnie bardzo popularne frazy w świecie przemysłu i IT. Hasła te przez wielu są interpretowane jako czysty marketing i wymyślanie koła na nowo, jednak nic bardziej mylnego. Obecnie dostępne są innowacyjne narzędzia i infrastruktura, które razem tworzą synergiczne połączenie, łatwiejsze do wdrożenia niż kiedykolwiek.
OPIS TOPOLOGII
W przeszłości istniały podobne urządzenia i usługi, i możliwe było tworzenie aplikacji IIoT (Industrial Internet of Things) podobnych do tych dzisiejszych, jednak było to znacznie trudniejsze i bardziej kosztowne niż dziś. Obecnie tworzenie rozwiązań i usług w chmurze jest najtańsze i najprostsze w historii, co jeszcze bardziej zwiększa powszechność usług i produktów z zakresu IIoT i Przemysłu 4.0.
Obecnie uruchomienie dedykowanego serwera bądź maszyny wirtualnej pod naszą aplikację u najpopularniejszych dostawców chmurowych takich jak: AWS, Azure lub Google Cloud platform, wymaga od użytkownika tylko "wyklikania" konfiguracji. Ponadto dostawcy udostępniają coraz więcej usług pracujących bezserwerowo (serverless), to znaczy, że dostawca dostarcza jedynie wąską funkcjonalność z której korzysta użytkownik, zajmując się wszystkim, co dzieje się pod maską.
Oznacza to że użytkownik nie musi zajmować się konfiguracją i utrzymaniem serwerów, i może skupić się nad samą funkcjonalnością. Jedną z takich usług jest tzw. IoT Core od AWS, który jest gotowym brokerem protokołu MQTT. W artykule tym opiszę integrację danych Modbus z usługą AWS IoT Core na przykładzie konwertera protokołów MGate 5105. Konwerter firmy Moxa może odczytywać dane z urządzeń wyposażonych w protokół Modbus RTU, Modbus TCP, EtherNet/IP, ale możliwe jest też wysyłanie danych z chmury do MGate, tak aby wysłał on zapytania typu "write" czyli kontrolujące.
Funkcjonalność ta pozwala niskim kosztem i nakładem sił zbudować system monitorowania danych z urządzeń, takich jak liczniki energii, liczniki mediów, czujniki ciśnienia, dataloggery itp., i eksportować takie dane do chmury, np. w celu archiwizacji, dalszej analizy czy wizualizacji. Ponieważ MGate 5105 umożliwia komunikację dwustronną, możliwość wysyłania komend z chmury do urządzeń końcowych daje duże możliwości reagowania np. na określone trendy w monitorowanych wartościach lub zwyczajnie pozwala na kontrolę urządzeń zdalnie, za pośrednictwem Internetu i protokołu MQTT
KONFIGURACJA
MGate 5105 jest konwerterem protokołów EtherNet/IP, Modbus RTU, Modbus TCP, MQTT. Jego główną funkcją jest konwersja protokołów przemysłowych, w sytuacji gdy do połączenia są 2 urządzenia, ale używające różnych protokołów. Jeśli chodzi o dalsze przesyłanie takich danych z protokołu Modbus lub EtherNet/IP, to bramka ta ma zaimplementowanego klienta MQTT, a konfiguracja odbywa się przez przeglądarkę. Z bramką Moxy przesyłanie i udostępnianie danych Modbus do chmury jest niezwykle proste i intuicyjne.
Sama konfiguracja jest intuicyjna, należy jednak zacząć od konfiguracji brokera, w naszym przypadku na przykładzie usługi AWS IoT. Pierwszą czynnością jest utworzenie konta w Amazon Web Services, wystarczy podać numer karty kredytowej i przejść test sprawdzający, czy jest się człowiekiem, a nie np. skryptem. Po założeniu konta należy przejść do konfiguracji IoT core, a następnie Manage->Things i "Register a think".
W trakcie tworzenia "rzeczy" wygenerują się certyfikaty i klucze, należy je pobrać na dysk, przydadzą się później. Następnie należy utworzyć "Policy", czyli regułę, zgodnie z którą nasza nowo utworzona rzec będzie miała określone prawa, i podpiąć ją do wcześniej utworzonej rzeczy. Na tym etapie mamy już wszystko potrzebne do utworzenia połączenia z AWS IoT core, więc przechodzimy do konfiguracji MGate 5105. Wyszukujemy go w naszej sieci, za pomocą narzędzia DSU i zmieniamy adres tak, aby miał on dostęp do Internetu, co jest niezbędne aby wysyłać dane do brokera.
Następnie należy skonfigurować wybrany protokół przemysłowy, dodając komendy odczytujące i zapisujące. Każda taka komenda odnosi się do konkretnych adresów w pamięci MGate. Następnym krokiem jest konfiguracja klienta MQTT, należy uzupełnić adres brokera MQTT i port, dostępne w panelu konfiguracyjnym AWS IoT, ID klienta (dowolny unikalny ciąg znaków).
Należy też załączyć wcześniej pobrane certyfikaty i klucz prywatny. Następnie należy stworzyć 2 wiadomości MQTT, które będą skojarzone z wcześniej utworzonymi zapytaniami Modbus/EtherNetIP. W wiadomości publikującej odczytane dane należy ustawić nazwę odczytywanej wartości, zdecydować, czy publikowana ma być stopka czasowa, ustalić format zmiennej, kiedy ma być publikowana, a także ustalić topic i QoS.
W przypadku wiadomości która będzie odbierana z brokera MQTT, procedura jest podobna, różni się m.in. nazwą topic, i można nazwać go np. "get". Ostatnim krokiem jest skojarzenie wiadomości MQTT z komendami protokołów przemysłowych, a dokładniej skojarzenie adresów pamięci, do których zapisują i odczytują one zmienne.
To już koniec podstawowej konfiguracji, następnie wystarczy sprawdzić, czy wysyłanie wiadomości do brokera o określonym topicu i treści sprawi że zmienia się np. wartość rejestru Modbus w urządzeniu, z którym komunikuje się MGate. Podobnie w drugą stronę, wystarczy zalogować się do konsoli AWS IoT Core, monitor, zasubskrybować topic "update" i zmienić stan rejestru Modbus/EtherNetIP, który jest odczytywany przez MGate 5105.
CZYM WŁAŚCIWIE JEST AWS IOT CORE?
To usługa świadczona na zasadzie SaaS, czyli oprogramowanie jako usługa. Użytkownik nie martwi się o serwery na których świadczona jest ta usługa oraz o budowę i utrzymywanie świadczonego oprogramowania. Jest to tak naprawdę broker protokołu MQTT, czyli serwer, z którym łączą się klienci, aby wysyłać lub odbierać dane. Do założenia konta w AWS wystarczy karta kredytowa i 15 minut wolnego czasu.
Przez pierwszy rok od założenia konta można testować większość usług za darmo, w pewnych limitach. Ceny standardowe za usługi nie są też zbyt wygórowane, np. jeśli do AWS IoT 5 bramek MGate 5105 będzie wysyłać jedną wiadomość o wielkości 274 bajtów co 1 minutę, a każda z takich wiadomości wywoła jedną akcję, to wtedy miesięczny koszt usługi IoT core wyniesie około 1 $.
Jeśli każda taka wiadomość będzie uruchamiała akcję, np. funkcję lambda, to wtedy w przypadku stosunkowo prostej funkcji trwającej 500 ms i alokującej 320 MB pamięci RAM koszt usługi Lambda wyniesie również około 1 $ miesięcznie. Jeśli na koniec użytkownik chciałby zapisywać te dane w usłudze S3 (dysk chmurowy) właśnie za pośrednictwem funkcji w usłudze Lambda to wtedy na koszt S3 składałoby się: 0,0245 $ za 1 GB przechowywanych danych miesięcznie oraz 1,2 $ za wszystkie akcję zapisu.
Łatwo policzyć, że miesięczny całkowity koszt tych usług wyniesie około 3,3 $ w przypadku jeśli w S3 przechowywane było by maks. 4 GB danych, czyli około 12,3 zł (3,4 zł/dolar). Jak widać, jest to niska kwota, biorąc po uwagę funkcjonalność, jaką się zyskuje.
PODSUMOWANIE
MGate 5105 + usługi chmurowe tworzą bardzo ciekawą synergiczną mieszankę, która umożliwia tworzenie nowoczesnych systemów w myśl idei Przemysłu 4.0 i IIoT. Bramka Moxy umożliwia wysyłanie danych z sieci przemysłowych do dostawców chmurowych, a tam dalszą ich obróbkę, przetwarzanie, wizualizowanie, wysyłanie powiadomień e-mail/SMS, uczenie maszynowe, przechowywanie, wizualizowanie, upublicznianie i wiele więcej.
Jeśli nawet z jakichś przyczyn użytkownik chce tylko przechowywać dane w S3 AWS, a korzystać z usług innego dostawcy, np. hostingu, to również nie ma problemu, aby takie dane odczytywać za pomocą dostarczanych api i sdk Amazona. Możliwości jest wiele, dlatego MGate 5105 jest bardzo elastycznym rozwiązaniem do łączenia danych z sieci przemysłowych z usługami chmurowymi i innymi aplikacjami.
Piotr Gocłowski
Elmark Automatyka