Przesył danych z PLC BEDROCK do chmury

02.09.2020 How to / Komunikacja przemysłowa
Komunikacja PLC BEDROCK z chmurą
Wizerunek autora
Wiktor Susfał
Producent: Bedrock Automation
  • Zakłady przemysłowe
  • Górnictwo
  • Gaz i Paliwa
  • Energetyka
  • Woda i ścieki

Strona ta poświęcona jest opisowi rozwiązania, w którym sterownik PLC wysyła informacje na temat stanu swoich wyjść cyfrowych do chmury Azure. Komunikacja sterownika z chmurą jest możliwa dzięki zastosowaniu przemysłowego komputera wbudowanego UC-8112-LX firmy Moxa, działającego w tym przypadku jako Gateway. Następnie dane odczytywane w chmurze są wyświetlane za pomocą graficznego interfejsu zaprojektowanego przy pomocy oprogramowania SCADA od ICONICS.

System ten pozwala na śledzenie danych na temat pracy sterownika z każdego miejsca na Ziemi (z dostępem do Internetu) z użyciem jedynie telefonu komórkowego.

Konfiguracja sterownika PLC BEDROCK

Sterowniki BEDROCK są skalowalne i uniwersalne – na elektromagnetycznej płycie montażowej, oprócz modułów zasilających oraz kontrolujących proces (kontrolerów) zamontować można dowolną kombinację komponentów odpowiedzialnych np. za obsługę wejść/wyjść czy komunikację Ethernet.

W omawianym przypadku wykorzystuje się 5-slotową magistralę (BMI) wyposażoną w:

  • moduł zasilania (SPM.U)
  • kontroler (SCS.10)
  • inne moduły, z których kluczowe są: moduł wyjść cyfrowych (UDO.10) oraz komunikacji Ethernet (UE.5).

Wgranie nowego programu do sterownika jak i konfiguracja komunikacji z zewnętrznym Gateway’em odbywa się za pomocą darmowego środowiska BEDROCK IDE, opisanego dosyć dokładnie w innych materiałach naszego Centrum Wiedzy.

Program sterownika

Napisany za pomocą języka Structured Tekst, program sterownika ustawia wyjścia modułu cyfrowego UDO.10 w stan wysoki w zadanej kolejności, wyłączając zawsze wyjście poprzednie.

Aby móc odpowiednio skonfigurować moduł wyjść, należy dodać do drzewka programu element symbolizujący 5-slotową magistralę oraz odpowiednio go zapełnić, dodając odpowiedniki rzeczywistych modułów. Właściwą konfigurację przedstawiają poniższe zdjęcia.

Na potrzeby programu, zadeklarowano 10 zmiennych typu BOOL (o nazwach: out0, …, out9), a następnie przypisano (zmapowano) je do właściwych wyjść modułu I/O. Dodano również 10 zmiennych typu WORD (16-bitowych, o nazwach: sig0, … , sig9) odpowiadających zmiennym wyjściowym. Zostaną one użyte przy do przesyłania informacji na temat stanu wyjść. Za każdym razem, gdy sterownik ustawi wartość danej zmiennej „out” na logiczną jedynkę, zapisze też wartość 1 do odpowiadającej jej zmiennej typu WORD. Dodatkowe zmienne wprowadzono, aby uprościć proces mapowania i odczytywania zmiennych z rejestrów MODBUS w późniejszym etapie.

Konfiguracja serwera Modbus TCP/IP na PLC BEDROCK

Wymiana informacji opiera się o protokół Modbus TCP/IP. Kluczowym modułem wykorzystanym w tej sekcji będzie moduł Ethernet (UE.5). Jest on wyposażony w 5 gniazd o tym standardzie oraz dwa wejścia -48V DC przydatne przy korzystaniu z funkcji zasilania za pomocą przewodów Ethernet (PoE – Power over Ethernet).

Moduł UE.5 jest w pełni konfigurowalny z poziomu BEDROCK IDE. Użytkownik ma możliwość:

  • zablokowania/odblokowania komunikacji dla każdego z 5 partów Ethernet,
  • zmiany ustawienia szybkości wymiany danych i duplex’u,
  • skonfigurowania funkcji Power over Ethernet,
  • ustawienia opcji protokołu IPv4 dla tego modułu,
  • odczytania wielu zmiennych diagnostycznych określających pracę każdego z portów.

Na potrzeby niniejszego projektu zmieniono adres IP modułu UE.5 na taki, aby był on widziany w sieci przez komputer z zainstalowanym BEDROCK IDE oraz Gateway Moxa. Odblokowano również jego porty o numerach 1 i 2. Do portu nr 1 podłączony został na stałe kontroler SCS.10, który odpowiada za symulację serwera MODBUS, port 2 służy natomiast początkowo do przeniesienia programu z BEDORCK IDE do sterownika, a ostatecznie do komunikacji z Gateway’em Moxa.

W drzewku projektu istnieje możliwość przyporządkowania pewnych elementów do modułu Ethernet (zgodnie z poniższym zdjęciem), m.in.:

  • Adapter lub Skaner urządzeń Ethernet IP,
  • Modbus TCP Master lub Slave,
  • Profinet IO Master lub Device.

W omawianym przypadku będzie to Modbus TCP Slave Device. Pozwoli to na udostępnianie zmiennych Modbus przez kontroler, a następnie ich odczytanie oraz przesłanie do chmury przez Gateway Moxa.

Przy konfiguracji urządzenia Modbus TCP Slave, symulowanego za pomocą kontrolera BEDROCK, należy obowiązkowo podać numer portu oraz ID tworzonego urządzenia. Następnie użytkownik określa liczbę rejestrów wejściowych względem systemu BEDROCK (Holding Registers), oraz wyjściowych (Input Registers). Kolejnym krokiem jest określenie adresów startowych dla rejestrów oraz bitów w tych rejestrach.

Po ustaleniu powyższych opcji, rozpoczyna się mapowanie zmiennych na odpowiednie rejestry. Możliwe jest przypisanie zmiennej typu WORD do całego rejestru, lub zmapowanie danej zmiennej BOOL do określonego bitu któregoś z rejestrów.

W omawianym przypadku nie są zapisywane żadne zmienne do systemu BEDROCK (program działa samoczynnie). Jedynym więc krokiem jest przypisanie 10 zmiennych typu WORD sygnalizujących stany wyjść (sig0, …, sig9) do kolejnych 10 rejestrów Input Registers.

Całą konfigurację przedstawia poniższy film. Tak ustawiony serwer MODBUS będzie udostępniał zmienne pod adresem IP kontrolera SCS.10 (tu – 192.168.100.100), wykorzystując rejestry Input Registers o numerach 0 – 9. Po ukończeniu wprowadzania zmian w programie, wgrano go na używany sterownik.

Infrastruktura chmury Azure

Do realizacji postawionego zadania będą potrzebne dwa elementy chmury obliczeniowej:

  • Azure IoTHub,
  • maszyna wirtualna z zainstalowanym oprogramowaniem od ICONICS.

Jako, że wpis ten poświęcony jest głównie sterownikowi PLC od BEDORCK, komponenty chmury oraz i rola zostaną opisane tylko pokrótce. 

Azure IoT Hub jest to broker wiadomości wysyłanych do chmury. Zapewnia on wydajną i bezpieczną komunikację pomiędzy obiorcami z wykorzystaniem systemu „publish/subscribe”. Nadawcy wiadomości nie łączą się bezpośrednio z odbiorcami. Każdy z klientów łączy się jedynie z samym brokerem za pomocą specjalnych kluczy dostępu. W zależności od rodzaju klucza, dany użytkownik otrzymuje różne uprawnienia względem zawartości IoTHub, co pozwala mu na odczyt określonej części komunikatów.

Maszyna wirtualna z zainstalowanym oprogramowaniem SCADA to tylko jeden (nie najprostszy) sposób odczytywania danych wysyłanych do IoTHub. Został on wybrany ze względu na łatwe tworzenie interfejsów graficznych dla projektów oraz szerokie możliwości rozbudowy istniejących rozwiązań. 

Podsumowanie

Po ukończeniu wszystkich etapów konfiguracji opisanych lub nadmienionych wyżej, uzyskuje się rozwiązanie pozwalające na śledzenie stanu wyjść sterownika za pomocą dowolnego urządzenia z systemem Android lub Windows, podłączonego do Internetu.

W omawianym rozwiązaniu wykorzystano serwer dla urządzeń mobilnych od ICONICS – MobileHMI, pozwalający na wygodne publikowanie i dostęp do interfejsów SCADA/HMI z poziomu urządzeń przenośnych. Wspomniany system SCADA działa na maszynie wirtualnej w chmurze, hostując zaprojektowaną aplikację. Po zainstalowaniu na posiadanym urządzeniu mobilnym darmowej aplikacji MobileHMI, możliwa jest jego zamiana na pełnoprawnego klienta SCADA/HMI.

Komputer wbudowany od Moxa zapewnia transmisję danych do natywnego brokera Azure – IoTHub, z którego następuje odczyt informacji przez system SCADA.

Zainteresował cię powyższy artykuł? W razie jakichkolwiek pytań prosimy o kontakt na elmark@elmark.com.pl .