W poprzedniej części „Jak wykorzystać protokół MQTT w systemach telemetrii opartych o aplikacje SCADA?” dowiedziałeś/aś się, jak – wykorzystując przemysłowy protokół Internetu rzeczy IIoT czyli MQTT – pobierać dane z rozproszonego systemu telemetrycznego SCADA na przykładzie oprogramowania Wonderware InTouch.
Co będzie potrzebne, aby udostępnić dane za pomocą protokołu MQTT?
1. Dostęp do Internetu
Architektura komunikacji bazuje na sieci Internet. W komunikacji wykorzystującej protokół MQTT istnieje nadawca (producent danych), odbiorca (konsument lub subskrybent danych) oraz pośrednik – MQTT Broker.
Konsument z producentem danych nie komunikują się bezpośrednio między sobą, dzięki temu w rozproszonym układzie telemetrycznym nie muszą one posiadać statycznego i publicznego adresu w Internecie.
To pośrednik, czyli MQTT Broker musi posiadać publiczny adres, a nadawca i odbiorca danych mogę korzystać z współdzielonego dostępu do Internetu (urządzenia zlokalizowane za routerami, np. w sieci typu NAT). Więcej informacji na temat, czym jest Broker, można znaleźć we wspomnianym poradniku.
2. Oprogramowanie SCADA – Wonderware InTouch
Oprogramowanie do wizualizacji Wonderware InTouch podobnie jak programy komunikacyjne będzie źródłem danych, które uzyskane ze sterownika PLC będą przetwarzane i następnie udostępniane do odbiorcy za pomocą protokołu MQTT.
3. Programy komunikacyjne i konwerter protokołów
Programy komunikacyjne będą potrafiły pobrać dane generowane przez sterowniki PLC i udostępnić je za pomocą protokołu MQTT do urządzeń odbiorczych. W przypadku oprogramowania Wonderware będzie to OI Gateway – program komunikacyjny pozwalający konwertować protokoły Suitelink, OPC, OPC UA i MQTT oraz program komunikacyjny GESRTP do sterowników Emerson (dawniej GE).
Na potrzeby testów i tylko testów, w ASTOR uruchomiony został broker w wersji otwartej, nieszyfrowanej, bez uwzględnienia użytkowników. Oznacza to, ze każdy może być publisherem danych, każdy te dane może odczytać, każdy te dane może zmienić, a sama transmisja danych odbywa się w sposób jawny i nieszyfrowany.
W jaki sposób udostępniać dane bezpośrednio z programu komunikacyjnego i sterownika PLC?
W celu pokazania sposobu udostępniania danych zastosujemy kontroler Emerson PACSystems RX3i, z którym będzie się komunikował program komunikacyjny do obsługi protokołu SRTP – OI Server GESRTP. Zakładamy, że program komunikacyjny GESRTP łączący się ze sterownikiem jest już skonfigurowany prawidłowo i pobiera dane ze sterownika dla programu wizualizacyjnego InTouch, a jego konfiguracja wygląda następująco (pole Host Name to adres sterownika źródłowego):


Z punktu widzenia dalszej konfiguracji ważne jest, jak skonfigurowany jest temat komunikacji na zakładce Device Groups – jego nazwa i interwał odpytywania sterownika.
W konsoli SMC, gdzie zainstalowany jest program komunikacyjny OI GESRTP oraz OI Gateway, rozwiń gałąź programów komunikacyjnych OI Servers i na poziomie OI.GATEWAY.2 / Configuration z menu kontekstowego wybierz Add MQTT_Broker Connection, aby utworzyć połączenie MQTT i nadaj temu połączeniu nazwę – przykładowo BrokerASTOR.

W oknie konfiguracyjnym połączenia wskaż adres brokera MQTT oraz port TCP, na którym nasłuchuje ta usługa. Na potrzeby testów skorzystaj z otwartego, testowego brokera ASTOR, podając jego adres mqtt.astor.com.pl oraz domyślny port 1883, a następnie sprawdź jego dostępność przyciskiem Validate Address and Port. Testowy broker ASTOR nie wymaga szyfrowania komunikacji, więc pozostaw tę opcję wyłączoną.

Następnie w drzewie na poziomie utworzonego wcześniej połączenia utwórz grupę MQTT wybierając z menu kontekstowego Add MQTTGroup Connection i nadaj jej nazwę, przykładowo MQTTGroup.

Domyślne ustawienia grupy połączeń są wystarczające. W zależności od wymagań i konfiguracji samego brokera, w tym miejscu można skonfigurować użytkownika i hasło w celu zapewnienia wyższego bezpieczeństwa. Do testów opcje te pozostaw wyłączone.

Aby wysyłać dane do Brokera, należy skonfigurować jeszcze połączenie pomiędzy konwerterem protokołów OI Gateway a programem komunikacyjnym GESRTP oraz wskazać, które dane wysyłasz i pod jakimi adresami będą one dostępne. W tym celu w drzewie, na poziomie OI.GATEWAY.2 / Configuration, z menu kontekstowego wybierz Add SuiteLink Connection, aby utworzyć połączenie między tymi programami za pomocą wewnętrznego protokołu Wonderware Suitelink i nazwij je, przykładowo SLGESRTP.

W konfiguracji połączenia Suitelink w polu Server Name określ nazwę programu komunikacyjnego, z którego będziesz korzystać (w naszym przypadku GESRTP), a w polu Server Node wskaż nazwę lub adres IP komputera, gdzie ten program pracuje. Gdy oba są na tym samym komputerze, pozostaw localhost.

Na poziomie utworzonego połączenia Suitelink, z menu kontekstowego wybierz Add Topic Connection, aby utworzyć obiekt reprezentujący temat komunikacji, skonfigurowany w programie komunikacyjnym GESRTP i nazwij go np.: TopicSterownik.

W jego konfiguracji, na pierwszej zakładce zaznacz Change Topic Name (aby móc zmienić domyślną nazwę tematu) i w polu Topic Name wprowadź nazwę zdefiniowanego tematu komunikacyjnego, na taką, jaką nadałeś/aś w programie OI GESRTP, w tym przypadku będzie to Sterownik (zgodnie z Rysunkiem 2 tego poradnika). Jeżeli parametry mają być tylko do odczytu, można dodatkowo zaznaczyć opcję Read Only.

Na zakładce Device Items należy przygotować listę adresów, które chcesz pobierać z programu komunikacyjnego (tu: OI GESRTP) i przekazać do konwertera protokołów. W tym miejscu nadaj im symboliczne nazwy. W kolumnie Name wprowadź nazwę symboliczną, a w polu Item Reference adres w sterowniku PLC. W tym przypadku adres R19 F będziesz publikować pod nazwą symboliczną TemperaturaZbiornika.

Na zakładce MQTT Publish Items, z listy Publish User Group wybierz zdefiniowaną wcześniej grupę połączeń MQTT (w tym przypadku będzie to BrokerASTOR.GrupaMQTT). Zawartość pola Unique Item ID jest generowana losowo w momencie tworzenia obiektu tematu komunikacji i jest identyfikatorem typu GUID. Musi to być unikalna fraza dla Brokera MQTT, gdyż będzie częścią adresu zmiennej protokołu MQTT.
W przypadku korzystania z publicznych brokerów MQTT warto używać tych generowanych losowo identyfikatorów, aby mieć pewność, że odczytujesz te dane, które chcesz. W przypadku posiadania własnego brokera MQTT (utrzymywanego w firmie lub zakupionej usługi w chmurze), w celu skrócenia adresu poszczególnych pomiarów, można ten identyfikator zmienić na bardziej przyjazny wskaźnik.
To tylko część artykułu. Czytaj dalej TUTAJ na Poradniku Automatyka.