Jak wykorzystać protokół MQTT w systemach telemetrii opartych o aplikacje SCADA?
Każde nowe urządzenie w systemie wymaga osobnych protokołów – przez to mnoży się liczba i różnorodność programów komunikacyjnych, za pomocą których uzyskujesz dane do systemu SCADA. Można to zmienić.
Jesteś projektantem lub wykonawcą systemu telemetrii? Borykasz się z doborem dedykowanych rozwiązań do transmisji danych? Każde nowe urządzenie w systemie wymaga osobnych protokołów – przez to mnoży się liczba i różnorodność programów komunikacyjnych, za pomocą których uzyskujesz dane do systemu SCADA. Można to zmienić.
Wykorzystaj protokół MQTT, aby skomunikować system wizualizacji z rozproszonym systemem sterowania lub monitoringu. Więcej o samym protokole znajdziesz w poradniku „Protokół MQTT – jak łatwo zbudować rozproszony system telemetrii?”.
W poniższym artykule dowiesz się, w jaki sposób wykorzystać protokół MQTT w systemach telemetrii opartych o aplikacje SCADA na przykładzie oprogramowania Wonderware InTouch (do gromadzenia danych) oraz programów komunikacyjnych Wonderware OI Server (do udostępniania danych z systemu sterowania).
Co będzie potrzebne, aby uzyskać lub udostępnić dane w protokole MQTT:
Dostęp do Internetu :
Komunikacja opiera się na infrastrukturze sieci Internet. Końcówki rozproszonego systemu – czyli nadawca udostępniający dane oraz ich odbiorca – muszą mieć dostęp do sieci Internet, ale niekoniecznie wykorzystując publiczne adresy IP. Oznacza to, że zarówno nadawca, jak i odbiorca mogą być zlokalizowani za routerami np. w sieciach typu NAT, które udostępniają Internet większej ilości urządzeń, komputerom i użytkownikom oraz chronią ich przed potencjalnymi zagrożeniami od strony Internetu.
Komunikacja z wykorzystaniem protokołu MQTT wykorzystuje jeszcze element pośredniczący w komunikacji, a mianowicie broker MQTT (o jego funkcji można przeczytać we wspomnianym wcześniej poradniku). Broker MQTT musi być dostępny pod publicznym adresem w Internecie, widzianym i rozpoznawanym po adresie IP lub nazwie przez nadawcę, jak i odbiorcę danych protokołu MQTT.
Programy komunikacyjne pozwalające na wysyłanie i odbieranie danych po protokole MQTT:
W przypadku oprogramowania Wonderware będzie to OI Gateway (konwerter protokołów Suitelink, OPC, OPC UA, MQTT). Do zainstalowania go potrzebne będzie jeszcze zainstalowanie OI Core (więcej o programach komunikacyjnych OI Servers znajdziesz w poradniku „Jak poprawić stabilność oraz szybkość komunikacji między systemem SCADA, a układem sterowania?”.
Oprogramowanie SCADA do wizualizacji – Wonderware InTouch:
MQTT Broker jest usługą, która może być utrzymywana w ramach własnej infrastruktury IT (oprogramowanie zainstalowane np. na systemie Linux, odpowiednio skonfigurowany ruch sieciowy na routerach, certyfikaty pozwalające szyfrować komunikację) lub zakupiony jako komercyjna usługa w chmurze. Takie usługi można wykupić np. w chmurze Microsoft Azure czy w chmurze Amazon (AWS). Stosując ten protokół na produkcji, należy zadbać szczególnie o kwestię bezpieczeństwa transmisji, korzystając z szyfrowanej komunikacji z wykorzystaniem wiarygodnych certyfikatów oraz zabezpieczeniach na dostępie do danych (odczyt i ich modyfikacja), stosując zdefiniowanych użytkowników wraz z hasłem.
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.
Jak odczytywać publikowane dane w Wonderware InTouch
W celu pokazania, jak w Wonderware InTouch odczytywać dane po protokole MQTT, posłużymy się danymi z systemu BMS w siedzibie firmy ASTOR – konkretnie chodzi o moc chwilową pobieraną przez budynek ASTOR w Krakowie.
W konsoli SMC, gdzie zainstalowany jest OI Gateway, rozwiń gałąź programów komunikacyjnych OI Servers i na poziomie gałęzi OI.Gateway.2 / Configuration wybierz z menu kontekstowego Add MQTT_BROKER Connection, tworząc nowe połączenie i nadając mu nazwę (nazwa będzie potrzebna do konfiguracji połączenia w InTouch).
Definicja połączenia do brokera MQTT
Po definicji połączenia wskaż adres brokera, ewentualnie numer portu, na którym broker nasłuchuje, a następnie waliduj połączenie. W tym miejscu określ poziom szyfrowania i zaimplementuj certyfikaty bezpieczeństwa.
Na potrzeby testów możesz skorzystać z ogólnodostępnego i otwartego brokera ASTOR (wspomnianego wyżej), podając jego adres mqtt.astor.com.pl, pozostawiając domyślny numer portu 1883 bez załączonego szyfrowania, a następnie wybrać Validate Address and Port.
Konfiguracja połączenia
Następnie na utworzonym połączeniu z menu kontekstowego wybierz Add MQTTGroup Connectiontworząc grupę i nadaj jej nazwę (ta nazwa też będzie potrzebna do połączenia z InTouch).
Definiowanie grupy połączeń MQTT
W oknie zdefiniowanej grupy połączeń MQTT można konfigurować kwestie dostępu do danych używając nazwy użytkownika oraz hasła, a także sposób zachowania się OI Gateway’a w przypadku konieczności buforowania danych wysyłanych do chmury.
Z punktu widzenia konfiguracji najważniejsze jest pole Device Group Name. Jest to złożona nazwa dostępowa dla InTouch’a, składająca się z nazwy połączenia oraz nazwy grupy połączeń definiowanych poprzednio. Nazwę tę użyjemy w programie InTouch.
Nazwa dostępowa dla InTouch
W ostatnim kroku uruchom program OI Gateway, klikając Activate (Auto start after reboot) w menu kontekstowym gałęzi OI.GATEWAY.2.
Jak skonfigurować połączenie do programu komunikacyjnego w InTouch
W aplikacji Wonderware InTouch zdefiniuj połączenie do programu komunikacyjnego OI Gateway – wybierz w menu Special opcję Access Name, a następnie przyciskiem Add utwórz dane połączenie na podstawie zdefiniowanych wcześniej nazw w konsoli SMC.
Definiowanie połączenia w InTouch do programu komunikacyjnego
Access Name to nazwa własna połączenia między InTouch i programem komunikacyjnym. W polu Application Name wpisz nazwę procesu programu komunikacyjnego OI Gateway – Gateway. W polu Topic Name wprowadź nazwę, która powstała z nazwy połączenia MQTT i grupy połączeń MQTT w konsoli SMC – w naszym przypadku będzie to BrokerASTOR_GrupaMQTT (zawartość pola Device Group Name z SMC).
Ostatni etap to definicja zmiennej oraz animacji prezentującej dane. Udostępniany parametr chwilowej mocy z biurowca ASTOR Technology Park to parametr zmienno-przecinkowy, potrzebujesz więc zdefiniować zmienną typu IO Real w InTouch’u, dowiązać ją do nazwy dostępowej Access Name – w naszym przypadku MQTT oraz nadać jej adres wg nomenklatury MQTT. Adres, pod jakim udostępniamy chwilową moc z budynku ASTOR Technology Park, to ASTORBMS/ActivePower.
Definiowanie zmiennej w InTouch
W ten sposób odczytujemy dane z rozproszonego systemu, korzystając z przemysłowego Internetu rzeczy (Industrial Internet of Things) i jego protokołu MQTT.
Dane MQTT prezentowane w InTouch
Obsługa protokołu MQTT jest wbudowana w program komunikacyjny OI Gateway i działa na tych samych zasadach licencyjnych, jak pozostałe programy komunikacyjne OI Servers (licencje Wonderware InTouch z IO, Wonderware Historian czy Platforma Systemowa Wonderware).
W następnym numerze przeczytasz artykuł „Jak udostępnić dane ze sterownika PLC do systemu SCADA korzystając z protokołu MQTT?”. Przeczytaj więcej na: www.astor.com.pl/poradnikautomatyka