Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2018/05/HMI_Communicator_Front.png

Komunikator HMI. Czyli jak komunikują się programiści PLC.

autor: Tomasz Zjawin.

Zagadnienie zbudowania komunikatora pomiędzy panelami HMI powstało spontanicznie na powstałe potrzeby wynikłe podczas problemów realizacji uruchomienia dużego rozproszonego systemu sterowania gdzie hałas, drgania i inne czynniki uniemożliwiały wymianę informacji a wszystkie dostępne metody tj. telefony komórkowe, walkie-talkie oraz inne formy komunikacji po prostu zawiodły.


1. SŁOWEM WSTĘPU

Nie mam absolutnie bladego pojęcia czy kiedykolwiek powstało już takie rozwiązanie ale ja postanowiłem to zrobić zgodnie ze swoją potrzebą, pomysłem i intuicją. Przyjęty model, koncepcja oraz napisane algorytmy są tylko i wyłącznie tworem mojej wyobraźni. Zapoznanie się z zaimplementowanym rozwiązaniem może stanowić dla niektórych wiedzę z zakresu programowania sterowników PLC firmy Siemens w środowisku TIA Portal w języku SCL jak również dostarczyć elementarnej wiedzy z zakresu obsługi struktur danych zwanych dalej w naszym rozwiązaniu bazą danych.

Niniejsza wersja 1.0 powstała w 48 godzin i jest wersją bazową oraz przy odrobinie zaangażowania i czasu można ją dalej rozwijać. Podczas objaśniania artykułu niektóre szczegóły zostały pominięte aby ograniczyć obszerność tekstu jednak można je wykonać samodzielnie. Najważniejszym celem publikacji jest ukazanie rozwiązania samego zadania. Film z prezentacją działania komunikatora znajdziesz na końcu tego artykułu.

2. KOMUNIKACJA

Podczas implementacji i uruchomienia systemów sterowania najważniejsza jest komunikacja. I na razie nie mówię tu o komunikacji urządzeń sterujących ale o zwykłej wymianie informacji pomiędzy ludźmi. Komunikacja pomiędzy osobami odpowiedzialnymi nadzorującymi cały proces wdrożenia jak również osobami wykonujących prace bezpośrednio to klucz do realizacji celu. Bez odpowiedniego planu realizacji zadań i ich rozdziału zawsze dojdzie do napięć, nieporozumień i co najgorsze do opóźnienia realizacji zadania. Kluczem jest zatem właściwa i szybka wymiana informacji.

Po instalacji elektrycznej i gotowości do uruchomienia zazwyczaj zostaje już tylko automatyk i elektryk. Ten pierwszy zmaga się problemami oprogramowania a ten drugi walczy z błędami podłączeń. Jeden i drugi są od siebie uzależnieni bo JEDYNKA nie przyjdzie jak elektryk nie PODŁĄCZY. Przy małych systemach problem komunikacji jest znikomy ponieważ prace zazwyczaj odbywają się w obrębie maszyny i/lub systemu jednak gdy system jest wysoce skomplikowany i rozproszony to ta komunikacja może być już bardzo ograniczona. Co wtedy robić aby nie biegać w te i we w te. Przecież elektryka trafi przysłowiowy szlag a automatyk będzie newralgicznie czekał na JEDYNKĘ a czas jednemu i drugiemu nie ubłagalnie ucieka bo terminy wyżyłowane. Tak czy siak prawidłowe podejście elektryka do automatyka i odwrotnie to podstawa sukcesu. Tu liczy się kooperacja. Warto to zapamiętać bo to elementarna kultura pracy. Jeden bez drugiego żyć nie może a podczas uruchomienia na pewno przeżyją nie jedną ciekawą historię.

3. MOŻLIWOŚCI

Każdy automatyk codziennie styka się z urządzeniami High Tech. Urządzenia mają jeden najważniejszy cel. Przyczynić się do zwiększenia produktywności ludzkiej. Urządzenia wchodzące w system sterowania oparte na sieciach przemysłowych i przesyłają pomiędzy sobą tony bitów informacji. Panele operatorskie HMI wyświetlają informacje o stanach maszynowych, błędach i statusie produkcji. No właśnie. Pobierają i wyświetlają. Czyli w zasadzie można by uznać, że jest możliwe przesyłanie informacji tekstowych pomiędzy samymi panelami HMI. Co za tym idzie mogą się ze sobą komunikować. EUREKA  !! Tak właśnie wpadł mi do głowy pomysł napisania KOMUNIKATORA HMI do wymiany informacji pomiędzy panelami. Pierwsza myśl „da się to zrobić”, druga myśl jaką przyjąć „koncepcja” no i trzecia myśl .. chcę piwa!

4. KONCEPCJA

Po ochłonięciu emocji usiadłem nad problematyką. Kartka do ręki, długopis i koncepcja zaczęła się rodzić. Aby szybko zrealizować cel założenia muszą być proste. Wymiana informacji tekstowych pomiędzy punktami A i B. Na panelach klienci muszą mieć możliwość wpisywania treści, przycisk wysyłania oraz podgląd ostatnich np. 16 wiadomości. Zakładam, że wiadomość typu STRING nie będzie dłuższa niż  50 znaków. Bez rozpisywania listów miłosnych tylko po prostu szybko i sprawnie przekazać informację. Dobrze aby użytkownicy wiedzieli kto, kiedy i o której godzinie wiadomość została wysłana i/lub dostarczona. Poniższy rysunek prezentuje odręczną koncepcję.

Oczywista myśl jaka przychodzi do głowy to baza danych do przechowywania informacji a że jest to Simatic to sprawa jest nadzwyczaj prosta. DBk musi powstać ! Najlepiej strukturalny o takich parametrach jak:

  • linia konwersacji
  • nazwa użytkownika i jego odpowiednik numeryczny
  • treść wiadomości
  • data
  • czas

Do tego niezbędne są takie zmienne jak:

  • pola wprowadzania danych dla każdego użytkownika
  • przyciski akcji userów

5. „BAZA DANYCH”

Zatem tworzymy nową „bazę danych” globalną o następującej strukturze.

Stworzono bazę danych o 2 strukturach głównych DB dzięki czemu jeden klient będzie mógł się komunikować z 2 różnymi panelami i prowadzić dwie odrębne konwersacje. My w naszym przykładzie ograniczamy się do wymiany informacji tylko pomiędzy 1 klientem tj. SCADA (klient 01/A) oraz HMI klient (02/B). Dla klienta A oraz B zarezerwowane zostały zmienne określające ich nazwy klienckie. Kolejna sub struktura db zawiera zmienne tj. pola wprowadzania wiadomości, numer akcji użytkownika oraz tablica struktur przechowywanych wiadomości o nazwie display.

Każda struktura wiadomości podtrzymywać będzie dane które będą wyświetlane na ekranach użytkowników. Jest to wspólna baza danych tych 2 użytkowników.  Jak już mamy przygotowaną bazę danych czas zabrać się tworzenie wizualizacji naszego komunikatora.

6. WIZUALIZACJA

Teraz pozostaje nam już tylko przenieść wszystkie niezbędne dane ze sterownika na panel HMI. Dodajemy zmienne do HMI każdej struktury tablicy dispaly.

Tworzymy nowy ekran na którym przygotujemy szablon pod Faceplate. Tworzenie obiektu faceplate jest w naszym przypadku koniecznością ponieważ przy wielorakiej instancji będziemy mieli łatwy dostęp do interfejsu zmiennych. Nasz Faceplate składać się będzie z obiektów typu Rectangle, rekordów wiadomości, daty i czasu oraz pola wprowadzania tekstu i przycisku przycisku akcji wyślij.

Po przygotowaniu szablonu i  zmiennych należy w dalszej kolejności stworzyć nowy interface dla zmiennych wejściowych oraz odpowiednio je podlinkować. W zakładce Events musimy również przypisać połączenie dla zmiennej przycisku akcji.

Po wywołaniu faceplate na dowolnym ekranie i przypisaniu zmiennych pod jego interface kończymy pracę podpinania zmiennych.

7. KODOWANIE

Przechodzimy do najciekawszej części. Programowanie. Tworzymy nowy blok funkcyjny FB o nazwie „code” i wywołujemy go w OB1. Będzie on naszym blokiem głównym obejmującym swoim zakresem tylko kod związany z naszym komunikatorem.

Nasz blok „code” składa się tylko z 2 Networków. W pierwszym odczytujemy czas i datę sterownika korzystając z funkcji  RD_SYS_T  a w 2 wywołujemy instancję FB naszego komunikatora. W tym przypadku wywołujemy instancję dla linii konwersacji pomiędzy użytkownikami 01 oraz 02. Główne zadania jakie algorytm musi wykonywać to:

  1. Wyszukanie konkretnej linii konwersacji poprzez wyszukanie odpowiedniej struktury w DB
  2. Wykonać odpowiednie zadanie przypisane do przycisku akcji użytkownika
  3. Identyfikacja użytkownika celem rozróżnienia tła wiersza wizualizacji
  4. Pobranie informacji od klienta i spakowanie do zmiennej typu String
  5. Rozpakowanie zmiennej String i załadowanie do struktury wsadowej [0]
  6. Przesunięcie rekordów tablicy o jeden rząd
  7. Wyświetlić wyniku algorytmu na ekranie użytkowników
  8. Zakończyć procedurę i pokasować parametry wejściowe

Nasz kod ostatecznie będzie zatem wyglądał jak poniżej.

Po załączeniu symulatora HMI ujrzymy na ekranie dwie instancje naszego komunikatora. Dla klienta 1 zlokalizowanego w jednym miejscu (strona lewa) oraz klienta nr 2 w drugim miejscu (strona prawa). Od tej pory istnieje już możliwość swobodnej wymiany informacji pomiędzy użytkownikami oddalonymi od siebie.

Funkcjonowanie aplikacji można zaobserwować na poniższym filmie.

Podsumowanie

Jak widać każdy problem może zostać rozwiązany, tylko najważniejszą rzeczą jest wykonywać wszystko najprościej jak to jest możliwe ale nie prościej. W prostocie drzemie siła. Dzięki możliwości obsługi baz danych w środowisku Siemens Simatic udało się w prosty sposób zrealizować nietypowe zadanie. Wystarczył jedynie dobry pomysł, nieco więcej chęci, własnego zaangażowania i przede wszystkim radości z wykonywanej pracy. Programowanie naprawdę może być ciekawe ! Życzę wszystkim natchnienia i realizacji ambitnych zadań aby cały czas mieć poczucie ciągłego rozwoju.

Automatyk Może Więcej! 

Pozdrawiam, 
Tomasz Zjawin z ASTECOMA

Artykuł nagrodzony!

Artykuł został zgłoszony jako Praca Konkursowa do Konkursu iAutomatyka w miesiącu Maj 2018 i zdobył poniższą nagrodę:

Zabezpieczenie elektroniczne 1A EPSITRON od WAGO

Elegancki powerbank o pojemności 8000 mAh od WAGO

  • Elegancki powerbank o pojemności 8000 mAh z logiem WAGO

Nagrodę dostarcza WAGO – producent urządzeń automatyki przemysłowej i budynkowej oraz systemów połączeń dla elektrotechniki i elektroniki. Powstanie w 1951 roku firmy WAGO było wyrazem przekonania o słuszności obranego kierunku i stworzyło podwaliny pod dalszy rozwój technologii. Z czasem stała się ona standardem na całym świecie i teraz nie sposób wyobrazić sobie nowoczesnej instalacji elektrycznej czy systemu automatycznego sterowania bez wyrobów WAGO.  http://www.wago.pl/


🎁 Zwycięzca: Tomasz Zjawin

Praca konkursowa: Komunikator HMI. Czyli jak komunikują się programiści PLC.



Utworzono: / Kategoria: , , , ,

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY
  • #PILZ wraca na rynek komponentów dla aplikacji zdecentralizowanych z nową wyspą z grupy #PDP67 powiększając tym samym istniejące portfolio o nowe rozwiązanie.Moduł PDP67 jak każda wyspa I/O to urządzenie ułatwiające koncentrację sygnałów w ...
  • 1,200 PLN
    Szkolenie jest wprowadzeniem do systemu sterowania PSS4000 i środowiska programowania PAS4000. W jego trakcie omówiona zostanie zarówno struktura sprzętowa, jak i programowanie, a także diagnostyka kompletnego systemu sterowania. Poruszane ...
    Czas trwania: 8h
    Link: Terminy
  • Zaprojektowane, aby zwiększyć wydajność Sterowniki FX5U/FX5UC zapewniają rodzinie FX wyższą wydajność oraz dodają nowe cechy, które wyznaczają standardy w klasie kompaktowych sterowników PLC. Pozwala to użytkownikom na tworzenie bardziej zł...
  • ÖLFLEX® CLASSIC 110 – elastyczny przewód sterowniczy do różnych zastosowań, w płaszczu z PVC, aprobata VDE, odporność na oleje, 300/500 V, również do YSLY lub YY CPR: informacje pod adresem www.lapppolska.pl Certyfikat zgodności VDE z...
  • 1,000 PLN
    Zdobądź wiedzę i bądź pewny, że nic Cię nie zaskoczy. Nie musisz przekopywać się przez tony katalogów i instrukcji. Oferujemy Ci kompleksowy system szkoleń, który sprawi, że najpierw zbudujesz fundamenty swojej wiedzy, a później pod okiem n...
    Czas trwania: 7h - 14 h
    Link: Terminy
  • RPI-1ZI-U24A, to przekaźnik  instalacyjny wytrzymujący maksymalny prąd załączania 120A w czasie 20ms. Przekaźnik ten dedykowany jest do załączania obwodów o wysokim prądzie początkowym, w szczególności do obwodów oświetleniowych, potwierdzo...