Rozdział 2
Podstawy
programowania
graficznego
2.1. Co to jest i jak działa LabVIEW
LabVIEW jest środowiskiem programowym związanym z językiem
programowania graficznego – językiem G. Język ten zachowując większość
możliwości języka C/C++ (którego jest w dużej mierze graficznym
odpowiednikiem) pozwala znacznie łatwiej programować użytkownikom nie
znającym klasycznych - tekstowo zorientowanych języków programowania.
Celowo użyto tu słowa programować zamiast pisać programy, ponieważ
programu graficznego nie pisze się a tworzy się jego graficzny diagram
poprzez łączenie określonego typu liniami (przewodami) elementy
reprezentujące graficzne symbole (ikony). Ikony te są graficzną reprezentacją
funkcji i struktur tego języka. Nie bez znaczenia jest fakt, że kompilacja
programu odbywa się automatycznie, na bieżąco, w trakcie tworzenia
diagramu, natomiast uruchomienie lub zatrzymanie wykonania programu
odbywa się przez kliknięcie tylko jednej ikony.
62 Programowanie graficzne układów sterowania
Programować w środowisku LabVIEW można, mając małe doświadczenie
w programowaniu. Wystarczy umieć poruszać się w środowisku Windows.
Diagram programu jest tworzony w sposób wygodny dla użytkowników
ponieważ wykorzystuje się znane w technice symbole (na ikonach) i łączy je
tak jak ma działać program.
LabVIEW jest przeznaczone dla budowy własnych instrumentów
wirtualnych różnego typu. W tym celu w LabVIEW są zaimplementowane
drajwery do szerokiej gamy urządzeń od najprostszych komputerowych kart
We/Wy do specjalizowanych urządzeń i
przyrządów.
Oczywiście
przewidziano obsługę standardów RS-232 i RS-485 oraz TCP/IP, UDP oraz
OPC.
Dla
ułatwienia
rozwiązywania
skomplikowanych
problemów
numerycznych nawet wersja podstawowa LabVIEW posiada bardzo bogatą
bibliotekę matematyczną gdzie standardowe procedury numeryczne
przedstawione są za pomocą gotowych do wykorzystania ikon.
Aczkolwiek podstawowym przeznaczeniem LabVIEW jest budowa
własnych
instrumentów
wykorzystujących
komunikację
fizyczną
z
otoczeniem komputera, to bardzo atrakcyjne mogą być instrumenty
komunikujące się z użytkownikiem tylko za pomocą myszki i klawiatury oraz
obrazu na monitorze.
Dla budowy własnego panelu operatorskiego na ekranie monitora,
LabVIEW oferuje wyjątkowo obfity zestaw gotowych do wykorzystania
wskaźników i zadajników. Elementy te można dowolnie ustawiać na panelu,
zmieniać ich rozmiary i kolory. Każdy z tych elementów ma też możliwość
wyboru wielu opcji i atrybutów jego wyglądu i działania.
Przy użyciu LabVIEW tworzymy 32 bitowe programy, o szybkości
wykonania odpowiadającej językowi C. Wykorzystując ”Application Builder”
możemy
tworzyć
samodzielne
32
bitowe
aplikacje
możliwe
do
rozpowszechniania. LabVIEW posiada również mechanizmy dla przyłączenia
zewnętrznych procedur poprzez, między innymi, DLL i ActiveX.
Podstawy programowania graficznego 63
2.2. Instalacja oprogramowania
Jak większość narzędzi działających w środowisku Windows oprogramowanie
LabVIEW samo się instaluje po odpowiedniej komendzie. I tak:
LabVIEW wersja studencka jest oferowana jako dodatek do książki [79].
Celem instalacji należy włożyć płytę CD do napędu i w Windows wykonać
komendę: setup. Następnie należy wykonywać polecenia programu
instalującego.
Wszystkie profesjonalne wersje są rozpowszechniane na płytach CD lub
DVD. Należy włożyć płytę do czytnika i uruchomić program setup.exe.
Następnie program instalacyjny prowadzi użytkownika przez instalację.
Należy pamiętać o podaniu kodu, który jest zabezpieczeniem programu. W
każdym legalnym zestawie LabVIEW jest podany kod dla danego
egzemplarza oprogramowania. Wersje studencka i demonstracyjna nie są
chronione kodem. Politechnika Śląska wykupiła dla swoich pracowników i
studentów licencję na nieograniczoną liczbę stanowisk.
2.3. Otwarcie LabVIEW oraz panel
operatorski i diagram programu
Po uaktywnieniu w Windows ikony reprezentującej LabVIEW pojawia się na
chwilę plansza informacyjna a następnie okno dialogowe przedstawione na
rysunku 2.1.a
Korzystając z okna dialogowego można rozpocząć edycję nowego
programu, otworzyć program już istniejący oraz wyjść z LabVIEW. Bardzo
ważna jest możliwość skorzystania z bogatej biblioteki gotowych przykładów
– patrz Rysunek 2.1.b. W tym dla nas automatyków istotne są przykłady
aplikacji przemysłowych.
64 Programowanie graficzne układów sterowania
Rysunek 2.1.a. Okno dialogowe LabVIEW
Rysunek 2.1.b. Okno dialogowe LabVIEW Examples
Podstawy programowania graficznego 65
Po przejściu do nowego programu, lub otworzeniu już istniejącego, otwierają
się dwa okna: okno panelu operatorskiego oraz okno diagramu programu w
języku G (rysunek 2.2.).
Jeśli panel operatorski (graficzny interfejs użytkownika) dla danego
programu, budowany w oknie panelu operatorskiego oraz diagram programu
w oknie diagramu, są niewielkie to można te okna mieć na ekranie
komputerowego monitora jednocześnie. Gdy jednakże jedno z okien zajmuje
większość ekranu to przechodzenie z okna do okna wymaga wykorzystania
odpowiedniego mechanizmu. Należy z paska menu (w obu oknach jest ten
sam) wybrać opcję Windows a następnie odpowiednio: Show Diagram lub
Show Panel.
a)
b)
Rysunek 2.2. Okna programu w środowisku LabVIEW,
a) okno panelu operatorskiego,
b) okno diagramu
66 Programowanie graficzne układów sterowania
2.4. Program jako instrument wirtualny
Program napisany w środowisku LabVIEW nazywamy instrumentem
wirtualnym (nawet jeśli dotyczy tylko pewnych obliczeń numerycznych i nie
wykorzystuje, oprócz klawiatury, myszki i monitora, żadnych urządzeń
We/Wy). Program taki zapisany na dysku przyjmuje automatyczne nazwę z
rozszerzeniem „vi” – skrót od angielskiej nazwy virtual instrument.
Każdy program po dodaniu końcówek umożliwiających jego komunikację
może stać się podprogramem innego programu (instrumentu) nadrzędnego.
Reasumując, instrument wirtualny składa się z panelu operatorskiego i
diagramu programu. Oba te elementy są zapisywane razem do jednego pliku
dyskowego o rozszerzeniu „vi”.
Przy wykonaniu programu korzystamy z panelu operatorskiego
aczkolwiek możliwe jest również uruchomienie programu w oknie diagramu
ale z okna diagramu nie mamy możliwości komunikacji z instrumentem.
2.5. Palety podstawowych narzędzi.
W wersji LabVIEW 8.5 narzędzia służące do budowy programu zebrane są na
paletach, które pojawiają się w osobnych oknach. Poniżej przedstawione są te
palety wraz ze sposobem ich uaktywnienia.
2.5.1. Paleta narzędzi edycyjnych i manipulacyjnych
Paletę tę wywołujemy z paska menu w następujący sposób: View>>Tools
Palette.
Podstawy programowania graficznego 67
Rysunek 2.3. Paleta narzędzi edycyjnych i manipulacyjnych
Paleta zawiera szereg narzędzi edycyjnych, które działają w obu oknach
programu. Przedstawione na ikonach palety narzędzia, po uaktywnieniu
(kliknięcie lewym klawiszem myszki) ujawniają się jako kursor
odpowiadający symbolowi na ikonie. I tak.
narzędzie manipulacyjne dla zadajników panelu operatorskiego
(zmienia wartości zadajników poprzez ruch np. suwakiem lub
uaktywnia zmianę zapisu wartości w okienku zadajnika)
kursor wskazujący – pozwala wybierać, zaznaczać, przesuwać lub
zmieniać wymiary obiektów (w obu oknach)
narzędzie edycji tekstu (zarówno w etykietach obiektów jak i przy
zapisie etykiet z komentarzami)
szpulka - pozwala na łączenie przewodami obiektów w oknie
diagramu
narzędzie pozwalające rozwijać menu obiektów
68 Programowanie graficzne układów sterowania
Przesuwanie (skrollowanie) zawartości okien (bez użycia pasków
przesuwania)
ustawienie punktów przerwania w programie
próbnik – pozwala na “podgląd” przewodów w oknie diagramu
smoczek – pozwala “zassać” kolor z jakiegoś obiektu celem
skopiowania
do
innego
obiektu,
skopiowany
kolor
jes
automatycznie umieszczony w pędzelku
pędzelek – narzędzie kolorowania obiektów; lewy klawisz
myszki koloruje wskazany przez kursor obiekt (kolorem
zaznaczonym na ikonie); prawy klawisz myszki otwiera
paletę kolorów celem wyboru tego koloru.
2.5.2. Paleta kontrolek ( zadajników i wskaźników)
Paletę tę wywołujemy z paska menu w następujący sposób: View >> Controls
Palette.
Podstawy programowania graficznego 69
Rysunek 2.4.a Paleta kontrolek z rozwinięciem wskaźników o postaci
wykresów i monitorów (LV 6.1).
Rysunek 2.4.a Paleta kontrolek z rozwinięciem wskaźników o postaci
wykresów i monitorów (LV 8.5).
70 Programowanie graficzne układów sterowania
Paleta kontrolek udostępnia zadajniki i wskaźniki możliwe do wykorzystania
przy programowaniu graficznego interfejsu użytkownika w oknie panelu.
Może zajmować oczywiście dowolne miejsce na ekranie komputera ale jest
widoczna tylko razem z oknem panelu. Również kontrolki mogą być użyte
tylko w oknie panelu.
Zestaw oferowanych kontrolek jest zaiście imponujący. Od kontrolek
analogowych i dwupołożeniowych do okienek monitorowania przebiegów (w
tym animowane przebiego 3D) i dekoracji. Większość kontrolek może być
zarówno zadajnikiem (wprowadzającym dane do programu) lub też
wskaźnikiem (pokazującym wartości i przebiegi). Użytkownik sam wybiera
czy dana kontrolka jest zadajnikiem czy też wskaźnikiem.
Paleta kontrolek jest dwustopniowa. Podstawowa paleta ma tylko ikony
rodzaju kontrolek a uaktywniona lewym klawiszem myszki udostępnia paletę
ikon konkretnych kontrolek. Na rysunku 2.4 przedstawiono rozwinięcie dla
następujących rodzajów wskaźników wykresy XY, monitory przebiegów
czasowych i monitory pokazujące zmiany wartości przy użyciu zmiany
intensywności barw. Na rysunku 2.5. przedstawiono najważniejsze kontrolki
numeryczne – o działaniu ciągłym i dyskretnym. W zależności od ustawień,
kontrolki te mogą być zarówno wskaźnikami jak i zadajnikami. W przypadku
zadajników zmiany wartości ustawiamy przy użyciu kursora manipulacyjnego.
Rysunek 2.5. Kontrolki numeryczne i logiczne (classic).
Podstawy programowania graficznego 71
2.5.3. Funkcje (elementy i struktury języka G)
Paletę tę wywołujemy z paska menu w następujący sposób: Windows>>Show
Functions Palette.
Rysunek 2.6. Paleta funkcji z dwustopniowym rozwinięciem funkcji
arytmetycznych.
Paleta funkcji udostępnia funkcje możliwe do wykorzystania przy tworzeniu
programu w języku G w oknie diagramu. Okienko palety funkcji może
zajmować oczywiście dowolne miejsce na ekranie komputera ale jest
widoczne tylko razem z oknem diagramu. Również funkcje mogą być użyte
tylko w oknie diagramu.
72 Programowanie graficzne układów sterowania
Paleta oferuje wszystkie elementy języka G oraz elementy dodatkowych
narzędzi (np. bogata biblioteka procedur analizy matematycznej). W
zależności od rodzaju funkcji może być rozwijana wielostopniowo. Na
rysunku przedstawiono rozwinięcie dla funkcji realizujących operacje
arytmetyczne z dodatkowym rozwinięciem funkcji trygonometrycznych.
Przy wielostopniowym rozwijaniu palety, ikony wymagające rozwinięcia
mają kolor szary. Dopiero konkretne funkcje do wykorzystania w programie
(mające biały lub żółty kolor tła) można przenieść do diagramu.
a) b)
Rysunek 2.7. Ważniejsze przykłady rozwinięcia palety funkcji.
a) struktury (w tym pętle), b) funkcje logiczne
Podstawy programowania graficznego 73
c) d)
e) f)
Rysunek 2.7. Ważniejsze przykłady rozwinięcia palety funkcji.
c) funkcje operacji na łańcuchach, d) funkcje operacji
macierzowych, e) funkcje operacji na rekordach, f) funkcje
operacji porównania.
74 Programowanie graficzne układów sterowania
Większość symboli na ikonach funkcji powinna być zrozumiała dla
programisty (nawet początkującego). Tym niemniej środowisko LabVIEW
oferuje również bieżącą pomoc.
Paleta
struktur
(Rys.
2.7.a)
zawiera
graficzną
reprezentację
najważniejszych struktur programowych języka G. Są to to kolejno: struktura
sekwencji, struktura przypadku, pętla for, pętla while oraz węzeł formuł
matematycznych.
Działanie struktur jest identyczne jak w konwencjonalnych językach
programowania (w języku graficznym nawet lepiej jest zrozumiały żargonowy
termin „zawartość pętli” ponieważ obliczenia prowadzone w pętli muszą być
zaprogramowane graficznie wewnątrz graficznego symbolu pętli).
2.6. Bieżąca pomoc.
Ś
rodowisko LabVIEW oferuje bardzo przydatną usługę w postaci bieżącej
pomocy. Usługę tę wywołujemy z paska menu w następujący sposób:
Help>>Show Help. Na ekranie pojawi się dodatkowe okienko Help.
Dotykając kursorem interesujących nas ikon funkcji (patrz Rys. 2.6.1)
spowodujemy, że w oknie Help pojawi się automatycznie wyczerpujący opis
funkcji i możliwości jej wykorzystania.
Programista może napisać instrukcje pomocy również dla swoich
własnych funkcji.
Podstawy programowania graficznego 75
Rysunek 2.8. Uaktywnienie bieżącej pomocy
2.7. Pasek menu
Pasek menu jest taki sam w obu oknach (panelu i diagramu). Oferuje
następujące usługi.
File – Standardowe działania na plikach w środowisku Windows, takie jak
m.in.: New (nowy plik), Open (otwórz), Close (zamknij), Save
(zapisz), Save as (zapisz jako), Save a copy as (skopiuj jako), Exit
(opuszczenie LabVIEW). Szczególnie ważna jest usługa Save with
options (zapisz z opcjami). Umożliwia ona zapis specjalny
programu np. bez belek skrollingu lub bez możliwości dostępu do
pasków menu oraz sterowania. Ważne to jest przy zapisie programu
jako osobnej aplikacji.
76 Programowanie graficzne układów sterowania
Edit – Standardowe działania edycyjne, takie jak m.in.: Undo (cofnij
ostatnie działanie), Redo (powtórzenie anulowanego działania),
Copy (skopiuj do schowka zaznaczony obiekt), Paste (wstawienie
zawartości schowka w zaznaczone kursorem miejsce), Import
Picture From File (wstawienie rysunku/obrazu z pliku). Opcja
Remove Bad Wires umożliwia usunięcie złych połączeń w
diagramie programu graficznego.
Operate – Opcje związane z uruchamieniem programu np. Run. Dla
typowych aplikacji rzadziej stosowane ponieważ program
wygodniej uruchomić klawiszem w pasku sterowania.
Project – Zaawansowane usługi związane budową aplikacji. Jeśli
LabVIEW jest wyposażony w Application Builder to tu znajdują
się opcje: Build Application (zbuduj samodzielnie działającą
aplikację – plik ”.exe”) oraz Create Distribution Kit (zbuduj
zestaw istalacyjny samodzielnie działającej aplikacji celem
rozpowszechnienia).
Windows – Usługi związane z aktywacją okien takie jak m.in.: Show
Diagram (przejście do okna diagramu jeśli jesteśmy w oknie
panelu), Show Panel (przejście do okna panelu jeśli jesteśmy
w oknie diagramu), Show Controls Palette (uaktywnienie
palety kontrolek), Show Functions Palette (uaktywnienie
palety funkcji), Show Tools Palette (uaktywnienie palety
narzędzi), Show Clipboard (pokazanie zawartości schowka).
Help – Pomoc. Opcja Show Help uaktywnia okno bieżącej pomocy. W
trakcie budowania programu w języku G dotknięcie kursorem
ikony funkcji (bez kliknięcia) powoduje pokazanie się w oknie
bieżącej pomocy instrukcji użycia tej funkcji).
Podstawy programowania graficznego 77
2.8. Pasek sterowania
Pasek sterowania okna diagramu przedstawiony jest na rysunku 2.9. Pasek
sterowania okna panelu jest prawie identyczny, z tym że w pasku sterowania
okna panelu nie występują klawisze 7,8,9.
Klawisz enter (1) pojawia się tylko wtedy gdy wpisujemy w danym oknie
jakiś tekst – klawisz ten kończy edycję tekstu np. w etykiecie (na rys.2.9
numerki oznaczające klawisze są właśnie etykietami na pustym diagramie).
Dodajmy, że z kolei klawisz ENTER (klawiatury komputera) kończy linię
tekstu.
Rysunek 2.9. Pasek sterowania okna diagramu
Poszczególne klawisze oferują następujące usługi.
1. zapis aktu alnie pisanego tekstu,
2. uruchomienie programu (run),
3. uruchomienie z kontynuacją,
4. zatrzymanie wykonania programu,
5. przerwa w wykonaniu programu,
78 Programowanie graficzne układów sterowania
6. wykonanie z podglądem (graficzny debugging)
7. zatrzymaj się przed danym elementem programu,
8. zatrzymaj się za danym elementem programu,
9. zatrzymaj się po tym elemencie programu i zakończ wykonanie,
10. ustawienie rodzajów, wielkości kolorów czcionek (fontów),
11. ustawienie zaznaczonych obiektów (np. w jednej linii)
12. rozproszenie zaznaczonych obiektów,
13. zmiana kolejności ułożonych na sobie obiektów graficznych.
2.9. Idea programowania graficznego –
pierwszy prosty przykład programu
Aczkolwiek język G jest graficznym odpowiednikiem języka C i w zasadzie
ma takie same możliwości, to jednak (ze względu na inną filozofię
programowania) jego zastosowanie jest szczególnie wygodne w tych
dziedzinach techniki, które związane są ze sterowaniem, przetwarzaniem
różnego typu sygnałów oraz szeroko rozumianymi miernictwem i kontrolą.
Najprostszy program przedstawiony był już bez wyjaśnień w podrozdziale
2.3 dla pokazania okienek programu. Na rysunku 2.10 przedstawiony jest
diagram tego samego programu z dopisanymi dodatkowo komentarzami.
Przypomnijmy, że przedstawiony na rysunku 2.2 panel operatorski
programu (lub inaczej graficzny interfejs użytkownika) ma tylko dwa
elementy. Przełącznik „noise” właczający lub wyłączający sygnał szumu
(wartości przypadkowe w przedziale od zera do jeden) oraz monitor
pokazujący otrzymany przebieg sygnału w funkcji czasu. Program ma działać
w ten sposób, że dla wciśniętego przełącznika (położenie „ON”) na monitorze
Podstawy programowania graficznego 79
ma być rejestrowany sygnał szumu, natomiast przy położeniu „OFF”
przełącznika sygnał rejestrowany ma mieć stałą wartość równą 0.5.
Aby rejestrowana była nie jedna wartość ale przebieg sygnału w funkcji
czasu, rejestracja musi się powtarzać a więc obliczenia muszą być
zorganizowane w pętli. Diagram takiego programu w języku G jest wyjątkowo
prosty (Czytelnik w ramach ćwiczenia raczy się zastanowić jak taki program
wygłądałby w języku C).
Program przy pierwszym spojrzeniu może się wydawać niezrozumiały dla
Czytelnika, który nauczył się już, klasycznych języków tekstowych (takich jak
np. Pascal, C i MATLAB) ponieważ nie ma ani jednej litery tekstu (wszystkie
teksty na diagramie są komentarzami i można je z diagramu wyeliminować).
Przed analizą tego diagramu należy przestawić się na taki sposób myślenia
jaki związany jest z tworzeniem choćby najprostszych obwodów
elektrycznych.
Kluczowa jest tu interpretacja zmiennych. Krótko mówiąc, zmienne na
diagramie w języku G możemy zinterpretować jako przewody (jest to
zrozumiałe dla każdego kto choć raz podłączył żarówkę do baterii i
interpretuje sobie, że w przewodzie płynie prąd reprezentowany przez pewną
wartość zmiennej o symbolu i).
Ikony które są połączone przewodami reprezentują w języku G funkcje
(pewne operacje na zmiennych) lub końcówki (stałe lub zadawane wartości).
Struktura programowa pętli (w tym przypadku jest to pętla „while”) jest
czytelna, mając graficzny kształt pętli obejmującej wszystkie elementy mające
być realizowane wielokrotnie.
Funkcja wyboru (graficzny odpowiednik instrukcji „if”) sprawdza wartość
logiczną s, która jest generowana przez przełącznik na panelu operatorskim.
Jeśli jest to wartość TRUE, na wyściu będzie wartość podłączona przewodem
z generatora liczb przypadkowych, w przeciwnym razie „przepuszczona”
zostanie wartość generowana przez stałą o wartości równej 0.5.
Wyjście funkcji wyboru podłączone jest na wejście monitora
rejestrującego. Aby, jak już wspominiano, nie rejestrować jednej wartości a
ich ciąg (przebieg) w funkcji czasu, obliczenia zorganizowano wewnątrz pętli
80 Programowanie graficzne układów sterowania
„while”. Do warunku logicznego pętli podłączono stałą o wartości TRUE
(program jest włączany i wyłączany klawiszami z paska sterującego). Ikona
reprezentująca zmienną indeksową pętli w tym przykładzie nie jest
wykorzystywana.
Rysunek 2.10. Diagram programu rejestrującego sygnał szumu.
Ikony warunku logicznego pętli oraz zmiennej indeksu pętli pojawiają się
automatycznie wraz ze strukturą pętli i nie można ich usunąć.
Bardzo pouczające jest dla początkującego programisty w języku G
uaktywnienie graficznego debuggera (klawisz z symbolem żarówki w pasku
sterującym) ponieważ pozwala to na pokazanie jak przebiegają obliczenia w
tym programie (ściślej jak sterowany jest przez program przepływ danych).