Internet Rzeczy w praktyce: przykład projektu IoTWorX

Wiktor Susfał Internet Of Things, Łączność i Zarządzanie

Z tego wpisu dowiesz się, jak powstaje przykładowy projekt dla systemu SCADA wdrażający rozwiązanie Internet of Things.

Wpis poprzedzający

W jednym z poprzednich wpisów przedstawiony został sposób konfiguracji oprogramowania IoTWorX z chmurą Azure. Po wykonaniu wszystkich kroków tam opisanych otrzymuje się system złożony z:

  • komputera osobistego (bramki IoT) z zainstalowanym IoTWorX, znajdującego się na miejscu produkcji;
  • brokera wiadomości wysyłanych do chmury (IoTHub);
  • maszyny wirtualnej z oprogramowaniem SCADA – GENESIS64, działającej w chmurze.

Efektem końcowym tego wpisu będzie natomiast sytuacja, gdzie bramka IoT zbiera dane z sieci lokalnej (pochodzące od urządzeń przemysłowych), a następnie wysyła je do brokera w chmurze (IoTHub’a), z którego są one odczytywane przez aplikację kliencką GENESIS64.

Zarys projektowanej aplikacji

Aby przedstawić proces zbierania i wysyłania danych przez IoTWorX w przejrzysty sposób, konfiguracja projektu zostanie przeprowadzona w kilku niżej wymienionych etapach.

  1. Nawiązanie łączności z serwerem OPC oraz MODBUS znajdującymi się w sieci lokalnej bramy IoT (wykorzystanie funkcji IoT Communicator).
  2. Publikowanie bieżących wartości pożądanych zmiennych do brokera IoT Hub.
  3. Określenie listy zmiennych (tagów), które będą lokalnie czasowo archiwizowane na bramie IoT, a następnie wysyłane do właściwego serwera Hyper Historian w chmurze (funkcja IoT Collector).

Podczas wykonywania punktów 1, 2, 3 pokazany zostanie udział modułu IoT Connector pozwalającego na przekazywanie danych czasu rzeczywistego oraz historycznych do chmury.

Wstęp do budowy projektu

Oprogramowanie IoTWorX jest w całości konfigurowalne zdalnie, za pomocą GENESIS64. Tak więc, realizacja projektu odbywać się będzie z poziomu programu Workbench systemu GENESIS64 działającego w chmurze. Następnie, wykorzystując wzajemne połączenie GENESIS64 i IoTWorX przez broker Azure IoTHub, bramka IoT będzie uaktualniana o kolejne ustawienia.

Pod koniec filmu kończącego ten wpis zaprezentowany został wygląd programu Workbench zainstalowanego w chmurze, z dodanym Projektem IoT obsługującym posiadaną bramkę. Rozwijając dodany wcześniej Projekt IoT oraz drzewko danych znajdujące się po prawej stronie okna Workbench, uzyskuje się dostęp zarówno do  miejsca konfiguracji oprogramowania IoTWorX, jak i zmiennych wysyłanych do chmury przez gateway.

Zdj 1

Sam interfejs IoTWorX, do którego dostęp uzyskuje się wpisując w przeglądarkę: http://<lokalny_adres_IP_bramyIoT>:1447, pozwala na śledzenie statystyk pracy urządzenia. Łącząc się przez sieć lokalną z bramką IoT, użytkownik uzyskuje również dostęp do IoT Visualizer’a, będącego w pełni konfigurowalnym pulpitem menedżerskim KPI.

Łączność z MODBUS oraz OPC

MODBUS

Natywne narzędzie ICONICS do odczytywania danych MODBUS konfiguruje się dla Projektu IoT tak samo jak dla jego standardowych odpowiedników. Więcej szczegółowych informacji zawiera ten wpis.

W tym miejscu warto zaznaczyć, że każde pożądane ustawienie powinno zostać wprowadzone pod węzłem „Device Templates”. W przypadku konfiguracji połączenia MODBUS wykorzystywana jest zakładka podlegająca pod element „Data Connectivity” (por. zdj. 1). Użytkownik definiuje tam:

  • kanał wymiany informacji – podając m. in. nazwę dla kanału, IP serwera MODBUS, wykorzystywany port, socket itd.;
  • (opcjonalnie) typ posiadanego urządzenia;
  • kompletne połączenie (pod zakładką „Address Space” – por. zdj. poniżej) – nadając mu nazwę, przyporządkowując właściwy typ urządzenia i kanał wymiany informacji, określając częstotliwość zbierania danych oraz inne ustawienia, np. adres startowy dla rejestrów tego urządzenia.
  • zmienne należące do danego połączenia – rodzaj rejestru, jego adres, typ danych, dostęp do poszczególnych bitów, itd.

Poniższe zdjęcia przedstawiają krok po kroku konfigurację tej funkcjonalności. Połączenie użyte w tym miejscu jest symulowane – opcje „simulated” zaznaczone na zdjęciach. Użyto więc w tym celu domyślnego typu urządzenia, jak i również domyślnego kanału wymiany informacji. Zmienne są generowane za pomocą zestawu gotowych sygnałów znajdującego się w zakładce „Simulated Signals” widocznej na poniższych zdjęciach.

Kanał wymiany informacji
Kompletne połączenie
Zmienna Modbus 1
Zmienna Modbus 2

Po wprowadzeniu pożądanych zmian, należy zaznaczyć kurosem myszy posiadaną grupę gateway’ów wyświetlaną pod nazwą Projektu IoT, tak aby na górnym pasku Workbench pojawiły się dwie opcje – „Generate Devices Configuration” oraz „Deploy Devices Configuration”. Następnie należy wybrać pierwszą z nich, wskazać pożądaną bramkę IoT, dla której generowana jest konfiguracja oraz zatwierdzić. (Porównaj ze zdjęciem poniżej).

Generowanie konfiguracji urządzenia

Kiedy proces zostanie ukończony, należy w podobny sposób wybrać opcję „Deploy Devices Configuration”, wskazać bramkę, na którą mają zostać wgrane ustawienia i zatwierdzić.

Wgrywanie konfiguracji na urządzenie

Jeśli proces został zakończony pomyślnie, w tym samym oknie, co powyżej zostanie wyświetlony stosowny komunikat. Od teraz dane zbierane z serwera MODBUS (według powyższej konfiguracji) są widoczne w programie Workbench w chmurze, w wyszukiwarce danych po prawej stronie okna. Ich lokalizacja pokazana jest na poniższym zdjęciu.

Lokalizacja danych wysyłanych przez bramkę IoT

OPC

W omawianym przypadku, na danej bramce IoT zainstalowany jest również serwer OPC. Został on wcześniej skonfigurowany tak, aby odczytywać kilka zmiennych z jednego urządzenia.

Wraz z oprogramowaniem IoTWorX instalowane jest automatycznie narzędzie do samorzutnego wykrywania serwerów OPC znajdujących się na tej samej maszynie – OPC Local Discovery Server. Dzięki niemu oraz kompatybilności oprogramowania IoTWorX z GENESIS64, dane udostępniane przez lokalne (względem gateway’a) serwery OPC mogą być widoczne w oknie Workbench bez żadnej dodatkowej konfiguracji.

Lokalizacja zmiennych pochodzących z lokalnych serwerów OPC ukazana jest niżej. Podkreślony element reprezentuje używany serwer zainstalowany na bramce IoT.

Dane z serwera OPC

STATYCZNE LISTY – PRZESYŁANIE DANYCH

Jak widać na powyższych zdjęciach, dane zbierane do tej pory są porozrzucane po różnych zakładkach. Moduł IoTWorX nazwany w jednym ze wcześniejszych wpisów „IoT Cloud Connector” pozwala na zebranie wysyłanych zmiennych w jedną listę.

Co więcej, w ustawieniach takiej listy użytkownik ma okazję zdefiniować m. in.:

  • częstotliwość zbierania wartości zmiennych przez bramkę IoT,
  • częstotliwość/warunek ich wysyłania do IoT Hub’a,
  • czas, po upływie którego informacje o zawartości danej listy są odświeżane.

Wysyłanie informacji przez gateway oraz odświeżanie listy może odbywać się zarówno po upływie pewnego czasu lub po wzbudzeniu przez zdefiniowaną zmienną wyzwalającą (trigger). Zależy to od wyboru stosownych opcji w oknie konfiguracji listy, pokazanym poniżej (zakładka „General”). Natomiast w zakładce „Published Points” użytkownik dodaje stosowne zmienne do publikowanej listy oraz nadaje im (najlepiej krótkie) nazwy. Możliwe do określenia są inne opcje, jak np. możliwość zapisu do danej zmiennej.

W omawianym przypadku, do listy zostaną przyporządkowane zmienne MODBUS oraz te, pochodzące z używanego Serwera OPC. Wyszukuje się je za pomocą takiego samego drzewka, jak tego po prawej stronie okna Workbench.

Lista publikowania (Real time – „General”)
Lista Publikowana – zawartość

Ostatnim krokiem jest podpięcie nowo utworzonej listy do elementu symbolizującego połączenie bramki IoT z chmurą. Domyślnie, do szablonu projektu dodane jest jedno połączenie. Jego lokalizacja i konfiguracja pokazana jest na poniższym zdjęciu. Ustawienia zawierają informacje o aktywności danego połączenia, jego typie (docelowa chmura), sposobie kodowania przekazu itp. Znajdują tam się również parametry połączenia z IoTHub, takie jak wybrany protokół czy token dostępu do brokera.

Użytkownik może tworzyć więcej połączeń dla danej bramki IoT. Należy jednak pamiętać, że GENESIS pracujące w chmurze odczyta dane wysyłane tylko do tych brokerów, do których sam ma dostęp.

Połączenie z chmurą – podpięcie listy publikacji

Po wykonaniu wszystkich wyżej opisanych kroków należy znów wygenerować konfigurację dla gateway’a oraz wgrać ją na niego. Od teraz te wybrane zmienne będą dostępne w Workbench w jednej lokalizacji (zakładce) pod nowymi nazwami (porównaj zdjęcie poniżej).

Statyczna lista IoT w Workbench

Archiwizacja danych dzięki IoTWorX

IoTWorX umożliwia zbieranie danych produkcyjnych, ich czasową archiwizację oraz przesłanie do wskazanego głównego serwera Hyper Historian. W omawianym przypadku docelowy Historian pracuje na tej samej maszynie wirtualnej, co GENESIS64. Przed przystąpieniem do dalszych działań, należy upewnić się, że maszyna wirtualna oraz bramka IoT dopuszcza wymianę informacji przez port 8778.

Pierwszym krokiem jest utworzenie jest listy publikowanych zmiennych, które mają zostać archiwizowane (Historical Publish List). Dokonuje się tego analogicznie jak dla wcześniejszej listy. Następnie użytkownik ma możliwość zdefiniowania m.in. okresów publikowania wartości do chmury, zapisywania wartości oraz ich odczytu lokalnie przez gateway. Na końcu należy dodać odpowiednie zmienne do listy.

Tak jak wcześniej, tak i tu publikowanie danych i ich lokalny zapis może następować również na podstawie wartości określonych zmiennych wyzwalających (triggers).

Lista Archiwizacji – ustawienia ogólne
Lista Archiwizacji – dodawanie zmiennych

Następnie należy obok domyślnego połączenia bramki IoT z IoTHub’em, dodać kolejne. Będzie to jednak połączenie z samym serwerem Historian’a. Jako jego typ powinien zostać wybrany element „Platform Services”. Kolejnym ważnym ustawieniem jest przyporządkowanie odpowiedniej listy zmiennych archiwizowanych (powyższej) oraz podanie nazwy maszyny, na której działa Hyper Historian. W przypadku maszyny wirtualnej podaje się jej adres IP lub nazwę domeny.

Połączenie dla archiwizacji

Ostatnim krokiem jest utworzenie odpowiednich zmiennych w samym module HyperHistorian w Workbench. Konfiguracja ta przebiega w standardowym projekcie Workbench (nie IoT). Jest ona identyczna, jak dla normalnych zastosowań. Należy tylko pamiętać o dodaniu odpowiedniej hierarchii folderów oraz o nazwaniu zmiennych tak samo, jak na archiwizowanej liście publikacji. Odpowiednie ustawienia obrazuje poniższe zdjęcie.

Ustawienia Hyper Historian

PODSUMOWANIE

W tym miejscu kończy się ten dosyć obszerny opis mechanizmów przesyłania danych produkcyjnych z dowolnej lokalizacji do chmury obliczeniowej. Mimo sporej długości wpisu, zostały omówione tylko niektóre funkcjonalności oprogramowania typu Internet of Things od ICONICS. To pokazuje, jak wiele możne zostać uzyskane przy pomocy tego potężnego narzędzia.

Elmark Automatyka udostępnia wersję demo oprogramowania GENESIS64 oraz IoTWorX w celu osobistego przetestowania funkcjonalności pakietu. Skontaktuj się z nami na ICONICS@elmark.com.pl w celu otrzymania wersji testowej lub oferty handlowej.