Graficzne interfejsy do programowania w automatyce

Większość przemysłowych programistów IT zna graficzne interfejsy do programowania (nie mamy na myśli języka drabinkowego). Graficzne metody programowania od dawna znajdują zastosowanie w przemyśle, automatyce i wizualizacji. Środowiska programistyczne, takie jak LabView National Instruments czy Simulink firmy MathWorks, oraz dedykowane aplikacje do programowania wybranych modeli PLC i systemów DCS w niczym nie przypominają klasycznych kompilatorów C czy Cobol. Programowanie z użyciem graficznych interfejsów (zwane dalej programowaniem graficznym) ma wiele zalet i jest bardzo często wykorzystywane przy tworzeniu systemów automatyki.

LabView National Instruments ? graficzne narzędzie do programowania przepływu danych ukazujące przepływ danych
Graficzne interfejsy zawierają siatkę, na której użytkownik umieszcza wybrane przez siebie elementy i tworzy połączenia między nimi odzwierciedlające ideę programu. Kiedy graficzna reprezentacja programu jest gotowa, utworzony diagram może być przetłumaczony lub skompilowany w standardowy wykonywalny program lub po prostu uruchomiony bezpośrednio.
Christian Fritz, menedżer produktów napędowych i mechatronicznych w National Instruments, mówi: ? Narzędzia graficznej reprezentacji nadają się idealnie do opisywania i programowania skomplikowanych systemów automatyki, w których coraz częściej występuje jednocześnie logika sekwencyjna i iteracyjna połączona z równoległym wykonaniem. Napisanie tego typu programu sterowania lub warstwy MES przy użyciu sekwencyjnych tekstowych języków programowania byłoby bardzo trudne.
Dennis Brandl,  prezes BR&L Consulting, mówi: ? programowanie graficzne jest sformalizowaniem tego, co robimy, tworząc diagramy przepływów pracy i przebiegu procesów. W obszarze wytwórczym IT stosujemy to od dawna, a inne gałęzie przemysłu to podchwyciły.
W artykule traktującym o graficznym programowaniu, zamieszczonym w serwisie Labautopedia, Mark F. Russo stwierdza: ? Wielu nie-programistów potwierdza zaskakująco duży poziom frustracji związany z wielogodzinnymi próbami rozwiązania zwykle małego, dobrze sformułowanego problemu w czasie pracy z tekstowymi językami programowania. Przedmiotem badań jest taki sposób przedstawiania algorytmów działania złożonych systemów, który byłby przystępny nie tylko dla specjalistów.
Trzy przepływy
? Graficzne środowiska programistyczne różnią się tak, jak różnią się koncepcje i założenia przy ich tworzeniu ? mówi Russo. Dodatkowo wyróżnia on trzy podstawowe przepływy, które podlegają wizualizacji: przepływ danych, przepływ materiału i przepływ sterowania (sterowanie).
Języki tekstowe służą do manipulacji wybraną ilością danych, przez co rzeczywisty przepływ danych jest raczej ukryty. ? Inaczej zachowują się programy, z założenia koncentrujące się na przepływie danych, które są głównym obszarem zainteresowań i ciągle nim pozostają. Operacje na danych stają się efektem ubocznym przepływu danych przez program ? wyjaśnia Russo.
Fritz z National Instruments mówi: ? LabView jest wysokopoziomowym graficznym narzędziem programistycznym przedstawiającym przepływ danych, oferującym zaawansowane biblioteki funkcji operacji na wejściach/wyjściach, logowania danych, sterowania i monitorowania aplikacji.
Przepływ materiałów koncentruje się na surowcach i gotowych produktach. Jego analiza nie jest zwykle realizowana przez środowiska graficznego programowania ogólnego przeznaczenia, ale przez wyspecjalizowane narzędzia tworzone specjalnie w tym celu dla przemysłu wytwórczego.
Russo mówi, że graficzne narzędzia programowania przepływu sterowania są znacznie bardziej porównywalne ze standardowym imperatywnym oprogramowaniem niż z narzędziami sterowania przepływem danych czy materiałów. Najbardziej znanym narzędziem z tej grupy jest schemat blokowy. Inne drogi do graficznej reprezentacji kontroli przepływu to diagram stanów i diagram czynności ? obie będące fragmentem większej grupy diagramów stanowiącej standard UML (Unified Modeling Language).

Zrzut ekranu pokazującymodel wykonany w Simulinku (górne okno) wraz z algorytmem sterowania (dolne okno) Źródło: MathWorks
Brandl wskazuje jeszcze jedną metodę programowania, która łączy w sobie cechy graficznego i matematycznego określania przepływów ? sieci Petriego. Były one używane przez długi czas do modelowania i symulowania zachowania się rozmaitych złożonych systemów, w których wiele działań wykonywanych jest współbieżnie, jak ma to miejsce np. w zautomatyzowanych systemach wytwarzania. Brandl mówi, że oprogramowanie do zarządzania wytwarzaniem Siemens Simatic IT bazuje na koncepcji sieci Petriego.
Narzędzia do modelowania i symulacji wyższych rzędów stanowią inną klasę programów z rozbudowanym graficznym interfejsem. Tony Lennon, menedżer ds. automatyki przemysłowej i przemysłu maszynowego w MathWorks, mówi, że chociaż Simulink treściwie prezentuje model obiektu i logikę sterowania nim za pomocą diagramu, a także wykonuje w tym czasie inne zadania, czyni to bez użycia sieci Petriego.
? Simulink pozwala nie tylko na symulację, wczesną weryfikację i szybkie rozwiązanie problemów, ale także na automatyczne generowanie kodu programu w języku C, VHDL, a także opisanego w normie IEC-61131 języka tekstu strukturalnego ST dla sterowników PLC ? mówi Lennon. ? Sieci Petriego dają bardzo abstrakcyjną i uogólnioną reprezentację współbieżności i przebiegu procesu. Są one jednak zdecydowanie zbyt abstrakcyjne, by reprezentować dynamiczne systemy i sterowanie nadrzędne.
Lennon wskazuje podobieństwo: ? Wyobraź sobie tworzenie całego świata, wykorzystując tylko jeden atom w danym czasie, brak molekuł i jakichkolwiek większych tworów. W przeciwieństwie do tego Simulink oferuje graficzną platformę dla symulacji dynamicznych systemów oraz różne bloki wysokiego rzędu, podsystemy, a także całe narzędzia, takie jak Stateflow. Stateflow pozwala wykorzystywać hierarchiczne skończone maszyny stanu, tabele prawdy i diagramy przepływu. Semantyka Stateflow jest z natury deterministyczna, pozwalając użytkownikowi definiować algorytmy w prosty i zwarty sposób.
? Simulink i Stateflow to narzędzia kształtujące przepływ sterowania (lub sygnałów) ? mówi Lennon. Stateflow ma zdolność symulowania maszyny stanów podobną do tej w standardzie UML, ale umożliwia także pracę z tablicami prawdy, diagramami przepływów wraz z Simulinkiem z systemami ciągłymi. Semantyka Stateflow jest deterministyczna. To użytkownik określa kolejność przetwarzania stanów systemu.
Bridget Fitzpatrick, jeden z kierowników działu HMI w Mustang Engineering, mówi, że liczba interfejsów zbliżonych do sieci Petriego wciąż rośnie. ? Dobrze zrobiony interfejs pozwala łatwo ocenić aktualny przepływ. Interfejs nieczytelny bądź zagadkowy może sprawić ogromne problemy. Przepływy przedstawione w postaci wykresu Gantta znajdują się chociażby w dobrze znanym Microsoft Project i Microsoft Outlook. Mogą być użyteczne i intuicyjne, jeśli są wykonane poprawnie.
William ?Bill? Gilbert, menedżer ds. rozwoju narzędzi przemysłowo-biznesowych w Siemens Industry, mówi, że w czasie programowania i monitorowania aplikacji reprezentującej proces preferuje języki graficzne. ? Główną korzyścią jest unikatowa możliwość graficznego podglądu przebiegu procesu i jednoczesna możliwość generowania czytelnej dokumentacji stanowiącej po prostu program.
? Wszystkie języki mają swoje zastosowania ? mówi Gilbert. ? Wybór jednego z nich musi odpowiadać wymogom aplikacji. Język schematów drabinkowych (LAD) np. jest niezastąpiony, gdy na podstawie bitów wejściowych formujemy bity wyjściowe. Język sekwencji działań (SFC) jest odpowiedni do maszyn, które pracują w cyklach. Języki programowania graficznego najlepiej nadają się do sterowania złożonymi procesami. Sterowniki, które przeznaczone są do wielu aplikacji, mogą być programowane przy użyciu wielu języków.
Artykuł pod redakcją mgr. inż. Łukasza Urbańskiego, doktoranta w Katedrze Automatyki Przemysłowej i Robotyki Wydziału Elektrycznego Zachodniopomorskiego Uniwersytetu Technologicznego w Szczecinie.
Programowanie przy użyciu graficznych interfejsów: perspektywa dla programisty HMI
Bridget Fitzpatrick jest jednym z kierowników działu HMI i zarządzania w nietypowych sytuacjach w Mustang Engineering. Mustang ma duże doświadczenie w wyspecjalizowanych narzędziach HMI, dostarczając co rok 5000?10 000 pracujących paneli operatorskich. ? Staramy się używać dedykowanych platform programistycznych tam, gdzie jest to możliwe, zamiast tworzyć od początku własną aplikację, która stanowi jedynie interfejs dla warstwy sterowania ? mówi Bridget.
Mustang używa dedykowanych narzędzi do rysowania w Microsoft Visio i konwertowania powstałych obrazów na wizualizacje, mimo że nie jest to najbardziej popularne rozwiązanie.
?Po prostu nowe, otwarte systemy HMI tworzą nową generację interfejsów i możliwości ? dodaje.
? Przenoszalność danych wewnątrz systemu jest znacznie łatwiejsza w wielu sytuacjach.
? Nawiązując do graficznej metody ?przeciągnij i upuść? i sposobów wykonywania połączeń w nowoczesnych, otwartych językach programowania,główną zaletą jest widoczna łatwość użytkowania połączona z łatwością wyszukiwania błędów. Kopiowanie i klonowanie na potrzeby nowo tworzonej podobnej aplikacji wydaje się również znacznie łatwiejsze ? dodaje. ? W dużych projektach staramy się stworzyć jeden szablon dla każdego głównego typu sterowania, a następnie wybieramy metodę ? importowania rozwiązania z innego projektu lub tworzenia go od początku.
Jeśli chodzi o wady, w rzeczywistości graficzne narzędzia do programowania wydają się być łatwe, ale mogą zawierać niewidoczne na pierwszy rzut oka pułapki ukryte wewnątrz nie zawsze czytelnych okien dialogowych. Czasami zdarzają się problemy z kompatybilnością formatów danych wejściowo-wyjściowych, które mogą stanowić problem dla mniej zaawansowanych użytkowników. Treść informacji o błędach może być bardziej niejasna i zagadkowa niż w typowych środowiskach programistycznych.
Fitzpatrick mówi: ? Czasami programowanie graficzne jest zdecydowanie najlepszą opcją. Czasem jego zbytnie uproszczenie nie pozwala zarządzać efektywnie. Jeśli problem jest skomplikowany, będzie konieczne poszukiwanie rozwiązań i rozmowa z operatorem.