Sterownik PLC współpracujący z systemem SCADA

Wiktor Susfał Unitronics Tagi: , ,
PLC SCADA i SQL - główne

Sprawdź, jak wygląda przykładowe rozwiązanie zbierania danych z PLC przez system SCADA, oparte o bazy danych SQL.

W dobie coraz większego nacisku na rozwój technologii z zakresu Przemysłowego Internetu Rzeczy (IIoT) bardzo ważne jest zapewnienie swobodnego przepływu informacji pomiędzy wszystkimi systemami w przedsiębiorstwie. Niezależnie, czy są to systemy sterownia PLC, czy prezentacji danych SCADA, komunikacja pomiędzy nimi jest kluczowym aspektem pracy przedsiębiorstwa.

Sterowniki PLC of Unitronics (z serii UniStream) pozwalają na osiągnięcie takiego rezultatu, gdyż wspierają komunikację z bazami danych SQL. Bazy danych SQL są natomiast często stosowanym nośnikiem informacji dla systemów kontroli produkcji takich jak np. ERP, MES, czy SCADA.

Powyższy fakty sprawiają, że sterowniki PLC od Unitronics to urządzenia uniwersalne, które dobrze sprawdzają się zarówno przy budowie nowych, jak i rozszerzaniu istniejących aplikacji. Zapewniają one dodatkowo możliwość zbierania z nich danych oraz ich wizualizacji na scentralizowanych ekranach SCADA.

Wykorzystywane zasoby i założenia projektowe

Celem niniejszego artykułu jest przedstawienie rozwiązania, w którym sterownik PLC udostępnia dane z kontrolowanego procesu do bazy danych SQL. Informacje z bazy SQL mogą być natomiast odczytane przez dowolny system SCADA obsługujący połączenia tego typu.

W tym przypadku używany model sterownika PLC to USC-B10-RA28. Warto zwrócić uwagę na brak konieczności posiadania przez niego panelu HMI. Wszystkie dane wizualizuje się i tak za pomocą systemu SCADA.

Przebieg współpracy sterownika PLC, systemu SCADA i bazy SQL przedstawia natomiast poniższy schemat.

Schemat integracji PLC i SCADA poprzez bazę SQL
Schemat integracji PLC i SCADA poprzez bazę SQL

Sterownik PLC zapisuje dane pomiarowe:

  • Datę i Czas (DateTime),
  • Nazwę Czujnika (SensorName),
  • Wartość Mierzoną (Value)

w swojej wewnętrznej tabeli indeksowanej, w odstępie 1 sekundy. Jeśli liczba rekordów w tabeli będzie większa lub równa 100, dane w niej zawarte zostaną wyeksportowane do określonej tabeli w bazie SQL. Stamtąd odczytywane są już przez system SCADA.

Czytając dalej ten wpis dowiesz się, w jaki sposób zaprojektować program sterownika, który zagwarantuje powyższy efekt.

Program wymiany danych na linii PLC – SQL – SCADA

Darmowe środowisko konfiguracji sterowników serii UniStream nosi nazwę Unilogic i jest dostępne do pobrania z tej strony.

Dodatkowo należy pamiętać, aby odpowiednio przygotować sam serwer danych SQL. Należy włączyć możliwość zdalnego łączenia się z jego bazami danych, dodać bazę dla pomiarów z PLC oraz stworzyć użytkownika z uprawnieniami edytowania zawartości tej bazy.

Jeśli nie wiesz jak to zrobić, przejdź do tego artykułu na naszym blogu. Znajdziesz tam krótki formularz pozwalający na uzyskanie linku do przydatnych materiałów w tym zakresie.

Kolejne kroki budowania programu sterownika w środowisku UniLogic opisano natomiast w poniższych sekcjach.

Dodanie wewnętrznej tabeli indeksowanej sterownika

Sterowniki serii UNISTREAM obsługują 3 typy tabel wewnętrznych: FIFO, LIFO i Indeksowaną (DTI). Jednak funkcję eksportu do tabel SQL realizuje tylko ostatnia z nich i to ona zostanie użyta w projekcie.

W celu dodania DTI należy najpierw stworzyć strukturę(typ danych) reprezentującą zawartość każdego rekordu tabeli. Najlepiej prześledzić to na przykładzie. W tym przypadku struktura zawiera zmienne:

  • DateTime – typu STRING-ASCII,
  • SensorName – typu STRING_ASCII,
  • Value – typu REAL.

Struktury tej używa się następnie przy definiowaniu nowej tabeli sterownika obok takich informacji jak: jej nazwa, typ (DTI), czy liczba wierszy. Cały proces przedstawia poniższy film.

Tabela Indeksowana dla PLC

Połączenie z bazą danych

Temat łączności z serwerem SQL i jego bazami danych został wyczerpany w jednym z wcześniejszych wpisów. W tym przypadku procedura konfiguracji połączenia oraz odpowiedniego zapytania różni się jedynie o skorzystanie z kreatora zapytań. Wybierając jako typ zapytania „Script form Data Table as” można uzyskać wgląd w odpowiednie szablony.

Połączenie z bazą SQL i zapytanie eksportu tabeli

Zapis do tabeli indeksowanej sterownika

Operacja ta jest możliwa dzięki bloczkowi funkcyjnemu „Write Row to DTI” znajdującemu się w kategorii „Data Table: Indexed” widocznej podczas tworzenia programu.

Zapis do tabeli indeksowanej
Zapis do tabeli indeksowanej

Bloczek ten przyjmuje:

  • nazwę tabeli, do której należy zapisać dane;
  • informacje do zapisania – w postaci obiektu o strukturze zgodnej ze strukturą tabeli (tutaj o strukturze „SENSOR_TABLE_STRUCT”);
  • numer wiersza tabeli, do którego należy zapisać dane.

Eksport danych z tabeli indeksowanej do tabeli SQL

Za wykonanie samej operacji eksportu danych odpowiada jeden z domyślnych bloczków funkcyjnych dostępnych w sekcji „Toolbox” widocznej podczas projektowania schematu drabinkowego. Znajduje się on w kategorii „SQL” i w tym przypadku jest to bloczek „Read from DTI row, Write to SQL”.

Eksport Danych z Tabeli PLC do Tabeli SQL
Eksport Danych z Tabeli PLC do Tabeli SQL

Wspomniany bloczek funkcyjny przyjmuje parametry wejściowe w postaci:

  • nazwy zapytania SQL do użycia – w tym przypadku to dodane wcześniej: „Insert Into SQL From PLC Table”,
  • nazwy tabeli indeksowanej w sterowniku, z której pochodzą dane do eksportu,
  • numeru wiersza tabeli, od którego rozpocząć eksport,
  • liczby wierszy przeznaczonych do eksportu.

Całościowa struktura programu sterownika PLC

W celu zwiększenia przejrzystości programu sterownika, zaprojektowano jedną funkcję główną wykonywaną w każdym obiegu pętli sterowania oraz 5 funkcji pomocniczych, wywoływanych w głównej.

Cały program działa w następujący sposób. Zaczyna swoją pracę od dwukrotnego wywołania funkcji przekształcającej aktualną datę i czas odczytane z RTC na tryb tekstowy. Dwa wynikowe ciągi znaków zapisuje do zmiennych.

Kolejny etap programu głównego to połączenie dwóch powyższych ciągów znaków w jeden – tak, aby zawierał zarówno datę i czas pomiaru. Stworzono do tego nową, prostą funkcję – „Add Strings”.

Następnie program zapisuje powyższy łańcuch znaków do odpowiadającej mu zmiennej w każdym obiekcie reprezentującym osobny czujnik. Takich obiektów stworzono 5 („Sensor_1”, „Sensor_2” … „Sensor_5”). Posiadają one taką samą strukturę danych, jak wcześniej utworzona tabela.

Kolejnym krokiem jest wykorzystanie stworzonej funkcji symulującej wartości 5 sygnałów (za pomocą wbudowanych w sterownik formuł matematycznych). Zapisuje ona bieżące wartości sygnałów do odpowiadających im zmiennych w wyżej wspomnianych obiektach.

Następnie wywołuje się funkcja zawierająca szereg bloczków zapisujących dane do przygotowanej tabeli indeksowanej. Aby zapis następował w odstępie 1 sekundy, przed wywołaniem funkcji użyto elementu typu „Positive Contact” z przypisaną zmienną domyślną „Frequency.Frequency 1(S)”.

Ostatnia gałąź programu głównego odpowiada za eksport danych do tabeli SQL przy zapełnieniu się tabeli indeksowanej. Najpierw sprawdzany jest warunek na obecny wolny numer indeksu tabeli (czy jest większy od 99). Jeśli tak, numer indeksu jest zerowany i następuje wywołanie akcji eksportu wszystkich danych z tabeli DTI do bazy danych SQL.

Powyższa gałąź zamyka działania programu sterownika PLC od Unitronics. Nie ma tu potrzeby usuwania zawartości z tabeli indeksowanej po jej eksporcie do SQL, gdyż za kolejnym obiegiem pętli sterowania dane w DTI zostaną po prostu nadpisane.

Efekty uzyskane do tej pory (agregacja danych i zapis do SQL) prezentuje poniższy film.

Prezentacja Eksportu DTI do SQL

Do pobrania

Z uwagi na fakt, że powyższy opis programu pominął zawartość funkcji pomocniczych wywoływanych w programie głównym, cały projekt został udostępniony do pobrania. Aby tego dokonać wystarczy wypełnić poniższy krótki formularz. Dzięki pobraniu zawartości można podejrzeć działania takich mechanizmów jak np. łączenie zmiennych tekstowych, symulowanie złożonych sygnałów za pomocą formuł, czy zapisywanie danych do DTI.

Pamiętaj, że prawdopodobnie ustawienia odnoszące się do adresów IP panelu sterownika (zakładka PLC Communications -> Physical -> Panel Ethernet) oraz parametrów połączenia z bazą danych będą się różnić w Twoim przypadku.

Kontynuacja projektu – integracja z systemem SCADA

W tym momencie osiągnięto połowę zamierzonego celu. Dane zbierane są ze sterownika, który następnie przekazuje je cyklicznie, w przejrzystej formie do tabel SQL. Nadal jednak, mimo archiwizowania tych zmiennych, nie są one nigdzie wizualizowane.

Aby zapoznać się z metodami efektywnej i skalowalnej wizualizacji danych z baz SQL w systemach SCADA, prześledź kontynuację tego projektu opisaną na innym naszym blogu poświęconym rozwiązaniom z zakresu oprogramowania SCADA ICONICS.

Zobacz, jak łączyć się z bazami danych, nadawać relacje tabelom zawierającym uzupełniające się informacje oraz wizualizować je na pulpitach menedżerskich.

Elmark Automatyka wypożycza sprzęt firmy Unitronics w celu samodzielnego przetestowania jego możliwości. Dodatkowo, możesz złożyć zapytanie o wersję demo oprogramowania SCADA ICONICS, aby samodzielnie odtworzyć przedstawione tu treści.

W razie pytań lub chęci złożenia zapytania, skontaktuj się z nami pod adresem: sterowniki@elmark.com.pl .