Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2020/02/labview-minaiturka-1v2.jpg

LabVIEW – środowisko do programowania sterowników i szybkiego przetwarzania danych


LabVIEW, a właściwie Laboratory Virtual Instruments Engineering Workbench, jest graficznym środowiskiem programistycznym opracowanym przez National Instruments (NI LabVIEW) ułatwiającym inżynierom tworzenie aplikacji testowych, pomiarowych oraz do sterowania automatycznego procesami przemysłowymi. Największymi zaletami tego środowiska jest bardzo duża możliwość integracji z wszelkiego rodzaju sprzętem pomiarowym oraz przemysłowym, pełne pakiety zaawansowanych bibliotek inżynierskich oraz graficzne podejście do programowania pozwalające na szybkie tworzenie aplikacji w sposób intuicyjny w środowiskach inżynierskich, naukowych oraz akademickich. Program w LabVIEW tworzony jest w oparciu o diagramy przepływu informacji i schematy blokowe, które ułatwiają analizę funkcjonalności, co w naturalny sposób wspiera także tworzenie równoległych procesów. Dodatkowo oferuje ono także pakiet graficznych interfejsów użytkownika do sterowania aplikacją, prezentacji danych w postaci kontrolek, wskaźników, wykresów. Zawiera także jednakowy interfejs do programowania sprzętu pomiarowego i konfigurowalnych sterowników PLC firmy National Instruments.

Sterowniki serii CompactRIO

Seria sterowników CompactRIO, w skrócie cRIO, nie jest typową serią standardowych sterowników przemysłowych. Są to rekonfiguracyjne platformy sprzętowe wyposażone w procesorową jednostkę obliczeniową, na której pracuje system czasu rzeczywistego oparty o Linuxa oraz układ FPGA (ang. Field Programmable Gate Array), pozwalający na akwizycję i przetwarzanie dużych ilości danych z sensorów z wysoką częstotliwością (kilka rzędów wyższą niż w standardowym sterowniku przemysłowym). Przetwarzanie to odbywa się w sposób równoległy bez udziału procesora. Oba te moduły mogą być programowane bezpośrednio z poziomu LabVIEW w niemal identyczny sposób jak programy na komputer PC. Dodatkowo sterowniki mogą zostać wyposażone w bardziej lub mniej standardowe interfejsy wejściowo-wyjściowe.

Do wstępnej konfiguracji sterownika, testach komunikacji oraz wgrywania lub aktualizacji odpowiedniego firmware’u, ustawiania adresów IP wykorzystuje się program NI MAX widoczny na zrzucie ekranu poniżej.

Dostęp do zmiennych wejściowo-wyjściowych w LabVIEW odbywa się w sposób intuicyjny i polega na połączeniu zmiennych powiązanych z fizycznymi interfejsami w pętli synchronizowanej z cyklem sterownika. Przykładowy program realizujący proste operacje jest widoczny na grafice poniżej.

Specjalistyczne pakiety w LabVIEW

Do większości potrzebnych aplikacji nie trzeba wynajdywać na nowo koła, wystarczy skorzystać z pełnego pakietu specjalistycznych bibliotek w LabVIEW. W szczególności typowych zastosowań można wyróżnić pakiety wspierające przetwarzanie sygnałów (filtry cyfrowe, transformata Fouriera), narzędzia wspierające identyfikację procesów, układy sterowania, w tym regulatory PID, obliczenia z zakresu robotyki, pakiety do wszelkich obliczeń numerycznych oraz algorytmów z wizji komputerowej. Są dostępne także biblioteki ułatwiające komunikację ze sprzętem, tworzenie automatycznych raportów pomiarowych, a także dostęp do bazy danych. Pakiety w LabVIEW instalowane są z poziomu NI Package Manager, z którego screen widoczny jest poniżej.


Połączenie między programami na sterowniku i PC.

LabVIEW daje możliwość rozdzielenia programów pomiędzy te, które będą się wykonywały na sterowniku i te, które będą wykonywane na komputerze podczas uruchomienia programu. Jest to niezwykle wygodne, gdy weźmiemy pod uwagę fakt, że niektóre procesy nie muszą być wykonywane z każdym cyklem sterownika –  w ten sposób możemy odciążyć sterownik, a także lepiej zapanować nad kodem poprzez bezproblemową synchronizację podprogramów. Na sterowniku powinny znaleźć się programy przetwarzające stany wejść i wyjść (przypisanie sygnałów we/wy do zmiennych, filtrowanie, skalowanie). Program wykonujący się na komputerze może mieć inny czas cyklu, w nim powinien się znaleźć nasz główny algorytm, a także końcowe wyświetlanie wyników na wykresach, czy logika panelu użytkownika. Synchronizacja obu programów nie sprawia żadnych trudności, nawet w przypadku dużych różnic między czasem cyklu obu programów.

Połączenie między programami na sterowniku i komputerze umożliwiają aliasy, czyli połączenie między zmiennymi na komputerze, a sterowniku.

Na powyższym zrzucie ekranu jest pokazany projekt zawierający różne biblioteki zmiennych – część z nich jest na sterowniku, natomiast reszta na komputerze. Każda zmienna może być połączona z inną za pomocą aliasu, zasada działania jest bardzo prosta, stan, który zostanie przypisany do zmiennej w programie na sterowniku jest przekazywany do zmiennej w programie na komputerze (jest aktualizowany zgodnie z czasem cyklu sterownika), dzięki temu możemy używać zmiennych ze sterownika na komputerze, działa to w obie strony, lecz należy pamiętać o różnych czasach cyklu. Poniższy zrzut ekranu pokazuje okno właściwości zmiennej, dla której możemy włączyć aliasing.

Podczas tworzenia naszego projektu natknęliśmy się na ciekawą sytuację  – na początku wykorzystywaliśmy LabVIEW w wersji 2018, na tej wersji zostały utworzone zmienne, następnie wykorzystaliśmy aliasy, by je połączyć. Program na sterownik oraz program na komputer zostały stworzone w wersji LabVIEW 2019 i podczas testów na obiekcie rzeczywistym  wartości nie były przekazywane prawidłowo pomiędzy sterownikiem, a komputerem. Ponowne utworzenie i połączenie zmiennych wyeliminowało problem. Nie jest to reguła, ale używanie różnych wersji LabVIEW może powodować konflikty w programie i warto o tym pamiętać.

Programowanie w LabVIEW

Początki programowania w LabVIEW mogą wydawać się ciężkie, miłośnicy języka drabinkowego nie będą zbyt zadowoleni, ale spokojnie, interface jest bardzo przejrzysty, w zakładce help jest bardzo dokładnie wyjaśniony opis każdego elementu, który możemy wykorzystać, a internet jest pełen poradników i wiedzy, która na początku na pewno nam się przyda. Przede wszystkim należy zrozumieć ideę działania programów pisanych w LabVIEW, aby wykonywały się cyklicznie musimy stworzyć pętlę o zadanym czasie cyklu, w której będzie się znajdował cały program.


Następnie ogranicza nas już tylko nasza wyobraźnia i umiejętności programisty. Mamy do dyspozycji całą masę bibliotek i bloczków funkcyjnych. Początkowo musimy się zapoznać z podstawowymi elementami, które będą nam potrzebne, czyli typy danych i struktury, następnie możemy je przetwarzać za pomocą elementów programu:

Jak widać na zamieszczonych zrzutach ekranu mamy do dyspozycji mnóstwo różnych typów danych (numeryczne, boolowskie, łańcuchowe), a także struktur (pętle while, case, formula node itd.) Całość dopełniają tzw. klastry, czyli paczki zmiennych, które mogą być przekazywane między podprogramami. Mamy oczywiście do dyspozycji różne typy tablic i innych elementów, które ułatwiają programowanie. Przyciski, zmienne i wszelkie części programu są ze sobą łączone za pomocą “nitek”, jest to bardzo intuicyjne, ale należy bardzo uważać, bo łatwo można się pogubić i wprowadzić nieporządek w kodzie. W dalszej części artykułu będą opisane sposoby na zapanowanie nad bałaganem.

Bardzo przydatną rzeczą jest możliwość zagnieżdżania instrukcji z innych programów np. Matlab, jest to alternatywa dla osób, które wolą standardowe programowanie, ale również również poszerzenie funkcjonalności. Zostanie to przybliżone w dalszej części artykułu.

Front Panel

Front panel to bardzo ciekawe rozwiązanie, można z niego zrobić panel operatorski, miejsce do podglądu zmiennych, czy zadawania pewnych wartości. Wszelkie zmienne, czy przyciski, które tworzymy w programie są automatycznie dodawane na panel, nie musimy więc na koniec dodawać przycisków, czy tabel z wartościami i łączyć ze zmiennymi, dlatego jest to bardzo wygodne. Możliwości programowania czy ustawień takiego panelu są bardzo rozbudowane, natomiast przygotowanie podstawowego układu z kilkoma wykresami i przyciskami (przykład na zrzucie ekranu) nie powinno sprawić nikomu problemu, sposób tworzenia paneli jest bardzo intuicyjny.

Bardzo wygodną opcją jest skalowanie – pozwala na dopasowanie wielkości ikon, przycisków i innych elementów panelu do okna, w którym jest aktualnie prezentowany.

Na panelu możemy też zaimplementować trochę bardziej zaawansowane rozwiązania, jak na przykład tablicę zmiennych o dynamicznym rozmiarze.

By zadbać o estetykę możemy ustalać rozmiar elementów panelu z dokładnością co do piksela.

Zazwyczaj najlepiej jest dopasować panel do rozdzielczości komputera, na którym ostatecznie będzie wyświetlany.

Matlab i C w LabVIEW

Ciekawą funkcją LabVIEW jest możliwość dodania skryptu z programu Matlab, oczywiście jego funkcjonalność jest ograniczona, ale pozwala to na prostszą implementację pewnych funkcjonalności. By połączyć LabVIEW z Matlabem potrzebujemy oficjalnej licencji Matlaba w wersji 6.5 lub wyższej, więcej informacji można oczywiście na oficjalnych stronach National Instruments. Poniżej został przedstawiony przykładowy skrypt, który możemy zaimplementować w LabVIEW.

Dodatkowo można także implementować fragmenty kodu w postaci bloków programu, którego składnia jest bardzo zbliżona do języka C. Nie wymaga to żadnej dodatkowej licencji i zdecydowanie pomaga zapisywać bardziej skomplikowane fragmenty kodu zawierające np. równania. Przykładowy skrypt widoczny jest poniżej.

Symulacje układów sterowania

Środowisko LabVIEW wraz z pakietem Real Time Module pozwala na implementację symulatorów znanych obiektów procesowych. Abstrahując od konieczności zebrania sporej ilości danych z eksperymentów identyfikacyjnych lub wymaganego aparatu matematycznego potrzebnego do wyprowadzenia opisu układu w postaci równań różniczkowych, jeżeli jesteśmy już na etapie posiadania dobrego modelu matematycznego, możemy stworzyć symulator, który będzie połączony z faktycznym programem na sterowniku lub komputerze pozwalając na strojenie regulatorów lub instruktaż operatorów. Do implementacji takiego symulatora należy w sposób numeryczny rozwiązywać równania różniczkowe za pomocą np. metody Eulera z danym krokiem obliczeniowym. Najłatwiej do tego celu wykorzystać wcześniej wspomnianą możliwość tworzenia skryptów w języku C.


W ramach projektu na Politechnice Śląskiej na podstawie modelu matematycznego, którego autorem jest dr Krzysztof Stebel został zaimplementowany symulator układu do badań wytrzymałościowych materiałów konstrukcyjnych. Posłużył on do wstępnych testów bez ryzyka uszkodzenia stanowiska w przypadku błędów oprogramowania, lub źle dobranych parametrów układu regulacji. Symulator wraz z wymianą danych do głównego programu prezentuje się następująco:

Zrzut ekranu poniżej przedstawia przykładową implementację pojedynczej iteracji rozwiązania równania różniczkowego w symulatorze.

Utrzymanie porządku w labVIEW

Gdy dojdziemy do etapu, w którym nasz program stanie się bardziej rozbudowany zauważymy z pewnością, że ciężko o utrzymanie porządku z uwagi na plątaninę nitek, które łączą poszczególne części algorytmu. Dobrą praktyką jest zamykanie poszczególnych funkcji w tzw. subVI. Działa to podobnie do zwykłych funkcji w programowaniu, które są wywoływane w określonych częściach kodu, tutaj natomiast są to bloki funkcyjne, które łączymy z odpowiednimi zmiennymi i dzięki temu główna pętla programu staje się bardziej przejrzysta i łatwiejsza do zrozumienia.

A teraz wyobraźmy sobie, że zamiast zgrabnego bloczka z programem znalazłoby się w tym miejscu wszystko to, co jest wewnątrz niego:

Robi się niepotrzebny bałagan, dlatego warto sobie upraszczać życie i stosować bloczki funkcyjne.

Minusy LabVIEW przy programowaniu sterowników PLC

LabVIEW posiada wiele funkcjonalności, które ułatwiają życie, ma mnóstwo bibliotek do obsługi urządzeń i na pewno wielu osobom się spodoba. Nie można jednak zapominać, że jak wszystko ma też swoje bolączki. Nowym użytkownikom ciężko będzie zrozumieć sposób działania i sposób programowania w LabVIEW, trzeba się przyzwyczaić do pewnych rzeczy, dla mnie bardzo trudno było na początku znaleźć sposób na utrzymanie porządku w programie z uwagi na połączenia między zmiennymi, a funkcjami. Wraz z rozwojem programu stawało się ich po prostu zbyt dużo, o czym wspomniałem w poprzednich punktach. Należy więc się uzbroić w cierpliwość, szukać poradników i czytać dokumentację. Baza wiedzy jest ogromna. Kolejnym minusem jest to, że podczas pracy z tym programem można się natknąć na błędy w działaniu oprogramowania, problemy z niekompatybilnością urządzeń, czy nietypowe zachowania programu. Zdarzało nam się zauważyć, że program nie działa tak jak powinien i niekoniecznie była to wina napisanego przez nas algorytmu, a przykładowo wersji labVIEW. Szczególnie należy uważać przy przejściu między wersjami np. 2018/2019, w naszym przypadku spowodowało to kilka problemów. Nagrywanie programu na sterownik i uruchomienie go również odbiega od standardowych sterowników PLC, w tym przypadku na sterowniku może znajdować się wiele programów, ale działają tylko te, które aktualnie są uruchomione. Warto tutaj wspomnieć, że czasem zdarzało się, że przy nagrywaniu zawartości programu na sterownik biblioteki zmiennych należało nagrać jeszcze raz, bo sterownik ich zwyczajnie nie widział.

Debuggowanie w LabVIEW

Znajdowanie błędów w prostych programach w LabVIEW jest stosunkowo proste dzięki trybowi “żarówki”, która pokazuje w sposób graficzny podgląd przepływu informacji na żywo. Dzięki temu użytkownik może w płynny sposób obserwować jakie wartości przepływają przez programowe “kabelki” i śledzić w którym miejscu występują niepożądane operacje. Tryb ten przedstawiony jest na gifie poniżej.

Dodatkowo można też wykorzystywać standardowe opcje w postaci wykonywania programu krok po kroku, dzięki czemu po każdej operacji będzie się on zatrzymywał w celu dokładniejszego przyjrzenia się wartościom. Zdecydowanie w prostych aplikacjach znajdowanie błędów będzie proste, natomiast w przypadku mocno rozbudowanych i zaniedbanych aplikacji tryb “żarówki” może wprowadzać zbyt wiele niemożliwego do ogarnięcia chaosu.

Podsumowanie

LabVIEW jest środowiskiem, które zdecydowanie ułatwia szybkie tworzenie prostych aplikacji kontrolno-pomiarowych wraz z interfejsami analogicznymi do typu SCADA. Jego współdzielony sposób programowania zarówno do sprzętu jak i do interfejsów użytkownika na komputerze jest zdecydowanie bardzo dobrym podejściem, od którego mogłyby się uczyć pozostałe firmy tworzące sterowniki przemysłowe. Ze względu na cenę sprzętu jest on używany w szczególności podczas badań laboratoryjnych, natomiast w przypadku wymogów zastosowań o dużych częstotliwościach próbkowania, gdzie tradycyjne sterowniki przemysłowe nie dają rady, cRIO zdecydowanie może zająć ich miejsce. Utrzymanie kodu w LabVIEW oraz budowa rozbudowanych programów może trochę odpychać, natomiast przy zachowywaniu odpowiednich praktyk również i to nie powinno sprawiać problemów.

Autorzy artykułu: Szymon Burkowicz, Krzysztof Łukomski

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Luty 2020. Nagrodę Zestaw narzędzi + gadżety dostarcza ambasador konkursu, firma MULTIPROJEKT.


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
  • Wyświetlacz słupkowy ITP15 jest kompaktowym wskaźnikiem procesowym, który wizualizuje analogowy sygnał wejściowy w zakresie od 0 do 100% z 10 słupkami po 10%. Sygnałem wejściowym może być liniowy sygnał napięciowy 0 (2) -10 V lub sygnał prą...
  • To rozwiązanie oparte o technologię LoRaWAN pozwala skutecznie realizować działania ograniczające ryzyko rozprzestrzeniania się wirusa . Możliwość automatycznej kontroli dystansu z jednoczesnym monitoringiem relacji i wstecznym śledzeniem k...
  • Urządzenia XV300 wyposażone są w przemysłowe wyświetlacze wysokiej rozdzielczości z technologią wielodotyku. To, w połączeniu z precyzyjnym i intuicyjnym interfejsem użytkownika, umożliwia operatorom pracę od zaraz. Dodatkowo te wysoko wyda...
  • Rozwiązania wizyjne nadają się idealnie do zautomatyzowanych zadań kontrolnych i pomiarowych. Kamery wizyjne 2D i 3D firmy SICK sprawdzają się w ogromnej ilości aplikacji, polegających na pomiarze, lokalizacji, kontroli i identyfikacji. Nas...
  • 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ł...
  • 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...