You are on page 1of 6

Instrukcje strukturalne

Wpierwszej czci poznalimy rodowisko programistyczne. Wtej czci poznamy


podstawowe struktury jzyka programowania graficznego G. Sterujce wykonaniem
programu iuatwiajce budowanie wygodnego interfejsu uytkownika.
W graficznym jzyku programowania program nie
wykonuje si kolejno linia po linii, tak jak ma to miejsce
wtekstowych jzykach programowania. Okolejnoci wykonania kodu decyduj:
1. Kolejno przepywu danych kod wykonuje si wtedy, gdy dostpne s wszystkie dane. Czyli wszystkie
poprzedzajce instrukcje dostarczajce danych dla
funkcji zakoczyy swoje dziaanie.
2. Instrukcje strukturalne jeli funkcje nie przekazuj sobie adnych danych okolejnoci wykonywania
kodu, decyduj instrukcje, takie jak np. ptle For
Loop, While Loop, struktury Case Structure, Sequence
Structure itp.
3. Kompilator wprzypadku, gdy adne zpowyszych
nie ma zastosowania, o kolejnoci wykonania kodu
decyduje kompilator i nie jestemy w stanie przewidzie, ktra funkcja wykona si jako pierwsza,
a ktra jako druga. Kolejno umieszczania funkcji
na diagramie oraz ich uoenie wzgldem siebie nie
maj na to wpywu.
Dwa umieszczone na diagramie programy bd
wykonywane pseudorwnolegle. Dziki temu dla tego
rodowiska jest naturalne rwnolege przetwarzanie danych. Wystarczy umieci na diagramie dwie ptle while, pomidzy ktrymi nie ma bezporedniej wymiany
danych (przez poczenia), akod wnich zawarty bdzie
wykonywany rwnolegle. Przykad takiego programu
przedstawia rysunek 24. Oczywicie, istniej funkcje
synchronizujce ptle wykonywane rwnolegle z rn
prdkoci, ale to temat na oddzielny kurs. WLabView
instrukcje strukturalne steruj programem. Zgromadzone
s wpalecie struktur (Structures) idostpnej woknie diagramu. Rysunek 10 przedstawia palet struktur.
Struktury zgromadzone wpalecie to:
- (For Loop) ptla for
- (While Loop) ptla while
- (Timed Structures) struktury uzalenie czasowych
pozwalaj w atwiej i dokadniej kontrolowa czstotliwo iczas wykonywania fragmentw kodu
- (Case Structure) struktura wyboru warunkowego
- (Event Structure) struktura zdarze.
- (Sequence Structure) struktura sekwencji
- (Formula Node) struktura pozwalajca na zapis fragmentw kodu wpostaci polece podobnych do jzyka C
- (Shared Variable) wsplna zmienna
- (Local Variable) zmienna lokalna
- (Global Variable) zmienna globalna
- (Feedback Node) Sprzenie zwrotne

124

Krok po kroku Kursy EP

Podstawy programowania
wLabView (2)

Dodatkowe materiay na CD/FTP:


ftp://ep.com.pl, user: 20637, pass: 7430ukcs

Rysunek 11. Ptla For tunele wyjciowe.


Ptla for jest znana zwikszoci jzykw programowania wyszego poziomu, ale w LabView zwizane s
zni pewne dodatkowe waciwoci dotyczce rwnie
ptli while. Zostan one szczegowo opisane na przykadzie ptli for, awprzypadku ptli while bd podane
tylko rnice.

Ptla for
Ptla for wykonuje si zadan liczb razy. Decyduje otym
warto przekazana do ikony N. Liczb iteracji ptli moemy poda jako sta lub wylicza j podczas dziaania
programu. Moliwa jest te sytuacja, w ktrej nie musimy jej podawa, ale o tym dalej. Wewntrz ptli jest
dostpny licznik, z ktrego moemy pobra numer aktualnej iteracji. Licznik zaczyna zliczanie od 0 idlatego
zwraca warto N-1.
Najlepiej pozna waciwoci ptli w sposb praktyczny dla tego otwrzmy sobie LabView nowy, czysty
dokument. Przechodzimy na diagram iklikajc prawym
przyciskiem myszy otwieramy palet funkcji. Wybieramy
Programming -> Structures -> For Loop iwstawiamy j
na nasz diagram. Tym razem robimy to nieco inaczej ni
zwykle. Nie przecigamy jej na diagram, ale po klikniciu wikon ptli izmianie wygldu kursora przechodzimy do okna diagramu i rysujemy prostokt obejmujcy
fragment kodu, ktry ma si wykonywa w ptli. My
oczywici nie mamy jeszcze adnego diagramu, dlatego rysujemy niewielki prostokt. Zwrmy uwag na
przycisk Run natychmiast sygnalizuje bdy. Powodem
jest brak liczby iteracji.
Do ikony N znajdujcej si wlewym, grnym rogu
musimy przekaza warto okrelajc liczb iteracji ptli. Wnaszym wypadku bdzie to staa rwna 10. Wtym
celu najedamy na ikon i gdy wygld kursora zmieni
si na szpulk, wybieramy Create Constant iwpisujemy warto 10. Poczmy teraz ikon i zkrawdzi p-

ELEKTRONIKA PRAKTYCZNA 5/2013

124-129_labview.indd 124

2013-04-30 10:38:01

Krok po kroku Kursy EP

tli. Na krawdzi powstanie tzw. tunel wyjciowy przekazujcy dane zptli na zewntrz. Po zewntrznej stronie
ptli naley korzystajc zCreate Indicator wygenerowa
wskanik. Tak samo wewntrz ptli na poczeniu naley
wygenerowa wskanik mona nazwa go wewntrzny.
Jeszcze raz poczmy ikon zkrawdzi ptli. Tym razem
kliknijmy prawym klawiszem myszki na powstaym tunelu wyjciowym iwybierzmy Tunnel Mode -> Last Value (w starszych wersjach LabView Disable Indexing).
Na zewntrz ptli przy tym tunelu kreujemy wskanik
inazywamy go zewntrzny. Diagram powinien wyglda jak na rysunku11.
Proponuj umieszczenie obok siebie okien, wczenie animacji (przycisk Highlighting Execution) iuruchomienie programu. Oczywicie, ptla wykona si 10 razy,
a wskanik nazwany wewntrzny bdzie wywietla
numery kolejnych iteracji od 0 do 9. Jego warto bdzie aktualizowana przy kadym obiegu ptli. Wskaniki
umieszczone na zewntrz ptli wywietl wartoci dopiero po 10 iteracjach, wskanik zewntrzny wskazuje
numer ostatniej iteracji, natomiast Array jest tablic zawierajc numery wszystkich iteracji.
Skd wzia si tablica? Ot jest to jedna zcech ptli
umoliwiajca automatyczne tworzenie tablic. Po kadej
iteracji dane gromadzone s wtablicy mog zniej by
rwnie pobierane.
Wspomniaem wczeniej, e nie zawsze musimy
okrela liczb iteracji ptli. Kiedy pobieramy dane
z tablicy ptla wykona si tyle razy, ile elementw si
w niej znajduje. Sprawdmy to, tworzc nowy czysty
diagram Vi. Umiemy na diagramie ptl for proponuj zpoprzedniego programu skopiowa tablic Array.
Nastpnie, w oknie diagramu, klikajc na niej prawym
przyciskiem myszy naley wybra Change to Constant.
Uzyskamy w ten sposb sta tablicow, do ktrej proponuj wpisa kilka przykadowych liczb. Podczamy j
do krawdzi ptli. Zwrmy uwag, e wtym momencie
przycisk Run nie jest ju przeamany, wic moemy uruchomi nasz program bez okrelania liczby iteracji.
Dodajmy jeszcze kilka elementw. Diagram powinien
wyglda jak na rysunku 12. Bdzie on dodawa do elementw ztablicy po lewej stronie numer iteracji izapisywa do wskanika wyniki. Wskanik Iteracje zawiera
numer ostatniej iteracji (pamitajmy, e jest to N-1).

Rejestry przesuwne
Ptle w LabView, oprcz gromadzenia elementw w tablicach, maj jeszcze inne waciwoci niedostpne wtypowych jzykach programowania. Mona za ich pomoc
tworzy rejestry przesuwne. Okrelenie to bardziej jest
znane elektronikom ni programistom. Zadaniem rejestrw jest przekazywanie informacji pomidzy poszczeglnymi iteracjami ptli.
Otwrzmy nowy dokument i umiemy w nim ptl for. Skonfigurujmy j w taki sposb, aby wykonaa
si 4 razy. Aby umieci rejestr przesuwny klikamy na
krawdzi ptli prawym przyciskiem myszy i z menu
wybieramy Add Shift Register. Zlewej strony do rejestru
przesuwnego doczamy sta iwpisujemy 0. Wewntrz
umieszczamy funkcj inkrementacji iwskanik wywietlajcy dane na panelu czoowym. Gotowy diagram pokazano na rysunku 13.
Proponuj uruchomienie programu w trybie animacji iprzeledzenie jego dziaania. Przy pierwszej iteracji

do rejestru przesuwnego
zostanie przekazana warto pocztkowa, ktra
wewntrz ptli jest pobierana od lewej strony.
Nastpnie, po zwikszeRysunek 12. Ptla for pobieranie
niu o 1, jest zapisywana danych ztablicy
do rejestru przesuwnego
zprawej strony. Przy kolejnej iteracji
poprzednio zapisana warto jest dostpna wrejestrze przesuwnym zlewej strony itd. Pokazany tutaj przykad inicjalizuje rejestr przesuwny
Rysunek 13. Ptla for
wartoci 0. Mona pomin inicjali- Rejestr przesuwny
zacj (wpewnych przypadkach
jest to wskazane), ale musi to
by zrobione wiadomie, poniewa przy kolejnych uruchomieniach (wywoaniach) programu rejestr bdzie przechowywa wartoci zpoprzedniego Rysunek 14. Rejestr przesuwny
wywoania, co moe skutkowa przykad 2
niespodziewanymi
rezultatami dziaania. Dlatego zawsze,
jeli jest to moliwe,
naley inicjalizowa
rejestr wartoci poRysunek 15. Sprzenie zwrotne
cztkow.
Z m o d y f i ku j m y
teraz program, aby wyglda jak na rysunku 14. Wtym
celu klikamy na rejestrze przesuwnym prawym klawiszem myszy iwybieramy Add Element lub rozcigamy go
tak, aby zawiera 4 elementy. Umiemy wrodku ptli
wskaniki. Na panelu czoowym proponuj uoenie elementw, tak jak na rysunku 14. Wskanik SR1 odpowiada elementowi 1 SR2 elementowi 2 itd.
Po uruchomieniu programu wida jak przesuwaj si
wartoci wrejestrze. Zmniejszaj si przy kadej iteracji
o 1. W ten sposb mona uzyska informacj nie tylko
o danych z poprzedniej iteracji, ale rwnie wczeniejszych.

Feedback Node
Podobne dziaanie do rejestrw przesuwnych ma Feedback Node, czyli sprzenie zwrotne. Dziki niemu moemy rwnie uzyskiwa informacje owyniku ostatniej
iteracji, ale diagram jest znacznie bardziej przejrzysty
izrozumiay. Jeli potrzebujemy danych zjeszcze wczeniejszych iteracji, to jest korzystniej stosowa rejestry
przesuwne. Struktura ta jest dostpna wpalecie struktur.
Aby umieci j wptli naley przecign zpalety do
wntrza ptli.
Przygotujmy program jak na rysunku 15 iprzeledmy jego dziaanie. Po umieszczeniu struktury Feedback
Node wewntrz ptli wyglda ona inaczej ni na rysunku. Terminal do inicjalizacji znajduje si pod strzak.
Mona to zmieni klikajc prawym przyciskiem myszy
iwybierajc Move Initialize One Loop Out. Teraz terminal, do ktrego przekazujemy warto pocztkow znajduje si zlewej strony ptli. Podobnie jak wdla rejestru
przesuwnego polecam dbao oinicjowanie zawartoci,
poniewa obowizuj tutaj takie same zasady, jak dla rejestrw przesuwnych.

ELEKTRONIKA PRAKTYCZNA 5/2013

124-129_labview.indd 125

125

2013-04-30 10:38:01

Kolejn ptl dostpn w LabView


jest while. Diagram zawarty w ptli
wykonuje si dopki, dopty warunek kontynuacji jest prawdziwy.
Rysunek 16. While jako
Sprawdzenie warunku odbywa si
gwna ptla programu
na kocu ptli, a wic
wykona si ona przynajmniej raz. Wewntrz ptli znajduje si licznik i
zawierajcy numer aktualnej iteracji. Z prawej
strony znajdziemy ikon
Rysunek 17. Przykad uycia struktury
kontynuacji. Przekazana
Case
do niej warto logiczna
decyduje o kontynuacji ptli. Klikajc
prawym przyciskiem myszki na ikonie
moemy okreli warunek kontynuacji:
Stop if True zatrzymaj, jeli warunek logiczny jest 1 (prawdziwy).
Continue if True kontynuuj, jeli
Rysunek 18. Zawiecewarunek logiczny jest 1.
nie diod LED bez uycia
Ptla ta jest stosowana w przypadstruktury sekwencji
kach, gdy nie moemy okreli liczby iteracji, na przykad jako ptla gwna programu (rysunek
16).
Wszystkie elementy zwizane zptl for, czyli: rejestry przesuwne (Shift Register), sprzenie zwrotne (Feedback Node) oraz indeksowanie, dotycz rwnie ptli
while. Zt tylko ma rnic, e domylnie tunel wyjciowy jest skonfigurowany jako Last Value (Disable Indexing wstarszych wersjach LabView), czyli otrzymujemy
liczb, a nie tablic. Oczywicie, indeksowanie mona
wczy.

Struktura case
Kolejnym elementem jzyka G jest struktura Case. Funkcjonalnie odpowiada ona instrukcji switch znanej zjzyka C. Na podstawie wartoci zmiennej umoliwia wybranie i wykonanie waciwego fragmentu programu. Akceptuje zmienne logiczne, numeryczne i tekstowe oraz
specjaln zmienn niosc informacje obdzie. Ma posta nakadajcych si na siebie ramek. Wkadej znich
umieszcza si kod odpowiadajcy danemu przypadkowi.
Sprbujmy sprawdzi dziaanie struktury. W nowym, czystym dokumencie na panelu czoowym zpalety Ring & Enum wstawiamy Text Ring. Klikajc prawym
przyciskiem myszki wybieramy Edit Items. Teraz klikamy
na przycisk Insert i w podwietlonym polu wpisujemy
np. literk D. Nastpnie ponownie naciskamy Insert
i wpisujemy literk C, ponownie B i ponownie
A. Zamykamy okno przyciskiem OK. Nasz Text Ring
zawiera teraz cztery pola wyboru opisane za pomoc liter
A, B, C iD. Po wybraniu opcji A, funkcja zwrci warto
0, dla opcji B warto 1 itd. Przejdmy teraz na diagram
izpalety Structures wstawiamy Case Structure (tak samo,
jak ptl). Podczamy nasz Text Ring do terminala ze
znakiem pytajnika na lewej krawdzi ptli. Struktura zawiera teraz dwie ramki, opisane jako 0 i1. Pomidzy
ramkami mona przechodzi za pomoc grnej krawdzi
ptli klikajc wmae strzaeczki lub rozwijajc list wyboru. Do ramki 0 wstawmy z palety String -> String
Constant iwpiszmy tekst Wybrano opcj A. Nastpnie
podczmy sta do krawdzi ptli. Pojawi si tunel wyj-

126

ciowy z biaym kwadratem w rodku. Zwrmy uwag, e przycisk Run jest przeamany sygnalizujc bd.
Przyczyn bdu jest nieokrelenie wartoci zwracanej
przez tunel wyjciowy wprzypadku, gdy wykona si kod
zawarty wramce 1. Przejdmy do ramki 1 ipodczmy
do tego samego tunelu sta tekstow, wpiszmy Wybrano
opcj B. Teraz ju nie ma informacji obdzie. Dla kadego przypadku jest niezbdne okrelenie wartoci tuneli
wyjciowych.
Tunele wejciowe mog przekazywa wartoci tylko
do jednej ramki. Klikajc prawym przyciskiem myszy na
krawdzi ramki wybierzmy Add Case After. Spowoduje to
dodanie ramki znumerem 2 tam rwnie wstawmy sta
podczon do tunelu wyjciowego iwpiszmy Nieoczekiwana warto. Znw klikamy na krawdzi ptli, zmenu
wybieramy Make This The Default Case. Obok liczby 2
pojawi si napis Default. Oznacza to, e dla niezdefiniowanych przypadkw wykona si kod zawarty wtej ramce.
Tu bdzie to dla opcji C iD. Nie wymaga si okrelania,
ktra zramek jest okrelona jako Default tylko wwypadku
zmiennych logicznych. Na rysunku 17 pokazano przykadowy program, wywietlajcy wpolu string napis zaleny
od wybranej wartoci wkontrolce ring.

Krok po kroku Kursy EP

Ptla while

Struktura sequence
Struktura sekwencji umoliwia wykonanie instrukcji
w odpowiedniej kolejnoci. Jest szczeglnie przydatna
w miejscach, w ktrych fragmenty kodu nie s ze sob
bezporednio poczone, to znaczy nie przekazuj sobie adnych parametrw. Takie funkcje bd wykonywane pseudorwnolegle. Nie jestemy wstanie okreli,
ktra wykona si pierwsza. Z pomoc przychodzi nam
struktura Sequence. W LabView zostaa zaimplementowana wdwch postaciach. Flat Sequence Structure charakteryzuje si tym, e na diagramie widoczne s jednoczenie wszystkie ramki ifunkcje wnich zawarte. Daje to
przejrzysto kodu iumoliwia atw analizie. Dane pomidzy ramkami przekazywane s watwy sposb przez
tunele. Druga posta to Stacked Sequence Structure.
Jest wniej tylko jedna ramka, apozostae s ukryte pod
spodem. Przekazywanie wartoci pomidzy ramkami odbywa si zwykorzystaniem specjalnego zacisku. Korzystanie zniej jest korzystne wwypadku, gdy kod zawarty
wramce jest duy iramki nie mieszcz si na monitorze.
Struktur sekwencji czsto wykorzystuje si podczas
komunikacji zprzyrzdem pomiarowym, gdzie po wysaniu polecenia musimy odczeka pewien czas, aby urzdzenie mogo np. wykona pomiar iodesa wynik. Poniewa nie wszyscy dysponuj przyrzdem pomiarowym
i nie umiemy ich jeszcze programowa, przygotujemy
prosty przykad polegajcy na zawieceniu dwch diod
LED w odpowiedniej kolejnoci: zawiecenie si LED 1
symbolizuje wysanie polecenia do przyrzdu, a LED 2
otrzymanie odpowiedzi.
Program powinien:
zapali diod LED 1
odczeka 0.5s
zapali diod LED 2
Otwrzmy teraz nowy Vi. Woknie diagramu umieszczamy dwie diody zpalety Boolean. Na diagramie zpalety Timing pobieramy funkcj Wait, podpinamy do niej
sta iwpisujemy 500 spowoduje ona zwok 500 ms.
Do diod podpinamy sta owartoci 1. Diagram powinien
wyglda jak na rysunku 18.

ELEKTRONIKA PRAKTYCZNA 5/2013

124-129_labview.indd 126

2013-04-30 10:38:01

Krok po kroku Kursy EP

Dociekliwi mog
sprawdzi, e na kolejno wykonywania
programu nie wpywa
umieszczenie ikon na
diagramie ani kolejno ich wstawiania.
Rysunek 19. Przykad uycia
Flat Sequence
To rodowisko decyduje, w jakiej kolejnoci
zostan wykonane wszystkie procedury. Uruchamiajc program zauwaymy
jednoczesne, natychmiastowe zawiecenie si diod
ipsekundowe opnienie
Rysunek 20. Przykad
przed zakoczeniem prouycia Stacked Sequence
gramu. Dzieje si
tak,
poniewa
funkcje umieszczone na diagramie s wykonywane rwnolegle, jak
Rysunek 21. Przykad uycia
niezalene prograFormula Node
my. Aby uzyska
podan kolejno wykonywania instrukcji naley uy
sekwencji. Korzystajc ze struktury Flat Sequence Structure, dostpnej w palecie struktur, zmodyfikujmy nasz
diagram, aby wyglda jak na rysunku 19.
Po wstawieniu struktury klikamy prawym przyciskiem myszki i wybieramy Add Frame After (dodaje
ramk po aktualnej) lub Add Frame Before (dodaje ramk
przed aktualn). Teraz wszystko wykona si we waciwej
kolejnoci. Diagram jest przejrzysty aprzekazywanie danych jest zrozumiae.
Zrbmy taki sam program korzystajc ze struktury Stacked Sequence Structure. Program bdzie dziaa
dokadnie tak samo, a rnice polegaj na wygldzie
struktury oraz przekazywaniu parametrw pomidzy
ramkami. Aby przesa warto ze staej znajdujcej si
w pierwszej ramce do kolejnych, musimy klikn prawym przyciskiem myszki na krawdzi ramki z menu
lokalnego i wybra Add Sequence Local. Spowoduje to
wstawienie na krawdzi ramki zacisku, do ktrego doczamy przekazywany parametr. Po tej operacji, w terminalu zostanie wywietlona strzaka skierowana na zewntrz ramki, oznaczajca miejsce przekazania wartoci
do zacisku. Od tej pory w kolejnych ramkach znajduje
si zacisk ze strzak skierowan do orodka, z ktrego
wdowolnej ramce moemy pobiera przekazywany parametr. Struktura ta jest wykorzystywana w przypadku
duej liczby sekwencji, aby ograniczy wielko diagramu. Przykad uycia Stacked Sequence pokazano na rysunku20.

Formula Node
Formula Node jest struktur przydatn podczas wykonywania oblicze matematycznych. Umoliwia zapisanie
kodu wpostaci podobnej do tradycyjnych jzykw programowania i pozwala na uniknicie tworzenia duych
diagramw wwypadku skomplikowanych oblicze.
Skadnia jest podobna do jzyka C, dostpne s funkcje matematyczne, takie jak sinus, cosinus i inne oraz
instrukcje warunkowe np. if, ptle Do, While, For iinne
elementy dostpne wjzyku C. Linie kodu mog zawie-

ra komentarze jednoliniowe poprzedzone // lub wieloliniowe umieszczone pomidzy znakami /* (pocztek


bloku tekstu) i*/ (koniec bloku tekstu).
W nowym Vi umieszczamy z palety Structures ->
Formula Node. Aby do wntrza przekaza parametry
musimy doda zaciski wejciowe. W tym celu klikamy
na krawdzi ptli iwybieramy Add Input. Wpowstaym
kwadracie wpisujemy nazw zmiennej bdziemy si
ni posugiwali wewntrz struktury. Analogicznie poprzez Add Output dodajemy wyjcia zwracajce wynik
oblicze. Na rysunku 21 pokazano przykad uycia tej
struktury.

Struktura zdarze Event


Struktura Event jest bardzo przydatna podczas budowania interfejsu uytkownika. Reaguje na zdarzenia wystpujce na panelu czoowym, np. najechanie myszk na
wybrany element, kliknicie wniego, podwjne kliknicie, zmian wartoci iinne. Najczciej jest umieszczana
w ptli gwnej programu, poniewa poza ni wykonaaby si tylko raz, reagujc tylko na zdarzenie, ktre wystpio pierwsze. Aby pozna jej dziaanie, przygotujemy
program reagujcy na kilka zdarze. Informacja orodzaju zdarzenia bdzie wywietlana wpolu tekstowym.
W nowym Vi wstawiamy struktur Event. Domylnym, zdefiniowanym zdarzeniem jest Timeout. W prawym, grnym rogu znajduje si terminal Event Timeout.
Klikajc na nim prawym przyciskiem myszki wygenerujmy Create Constant. Pojawi si staa podczona do
terminalu zdomyln wartoci -1. Wpraktyce oznacza
to, e struktura bdzie czekaa na wystpienie ktrego
ze zdefiniowanych zdarze przez nieskoczenie dugi
czas, wic po uruchomieniu dziaanie naszego programu
nigdy nie zakoczy si. Zmieniamy sta -1 na 1000, co
zapobiegnie tej sytuacji ispowoduje, e struktura bdzie
oczekiwaa przez 1 s (1000 ms) na wystpienie zdarze
innych ni Timeout, apo upywie tego czasu wykona si
kod zawarty w ramce timeout. Nie ma zdefiniowanych
adnych zdarze, wic po upywie 1 s program zakoczy
si.
Na panelu czoowym umiemy dwa elementy: przycisk Stop oraz String Indicator (nazwijmy go Zdarzenia).
Wskanik zdarzenia umiemy poza struktur Event.
Wramce timeout umiemy sta tekstow zkomunikatem Wystpio zdarzenie Timeout i podczmy j do
kontrolki Zdarzenia. Po uruchomieniu programu iupywie 1s wystpi zdarzenie Timeout izostanie wywietlony tekst zawarty wramce timeout. Obejmijmy teraz ptl
While struktur idodajmy zdarzenie zwizane zprzyciskiem Stop. W tym celu klikamy prawym przyciskiem
myszy na krawdzi struktury Event i z menu wybieramy Add Event
Case. Otworzy si okno
edycji jak na
rysunku 22.
W oknie
Event Specifiers znajduj
si zdarzenia
zdefiniowane
dla
wybranej
ramki,
a w Event So- Rysunek 22. Okno konfiguracji struktury Event

ELEKTRONIKA PRAKTYCZNA 5/2013

124-129_labview.indd 127

127

2013-04-30 10:38:01

128

z naszym tunelem wyjciowym. Kod znajdujcy si


wtej ramce wykona si po wybraniu dowolnej, aktywnej opcji zgrnego menu aplikacji, awwskaniku Zdarzenia znajdzie si informacja owybranej opcji menu.
Na rysunku 23 pokazano program zramk obsugujc
Menu Aplikacji.
Kilka sw oterminalach znajdujcych si zlewej
strony, z ktrych moemy pobiera przydatne informacje. Dla kadego typu zdarze dostpne s wsplne
terminale, takie jak rodzaj zdarzenia (Type) iczas jego
wystpienia (Time) oraz specyficzne dla danego zdarzenia, jak na przykad: poprzednia warto (OldVal),
nowa warto (NewVal), zmiana wartoci (Value Change).
Obsuga zdarze pozwala na atwe iszybkie przygotowanie przejrzystego interfejsu uytkownika. Mona przy tym korzysta ze zdarze dotyczcych aplikacji lub poszczeglnych elementw panelu czoowego.
Dziki temu moemy zbudowa aplikacj obsugujc
przenoszenie elementw za pomoc myszki.

Krok po kroku Kursy EP

urces dostpne rda


zdarze. Na
diagramie
mona definiowa zdarzenia zwizane z apliRysunek 23. Przykad programu ze struktur
kacj, danym
Event
programem,
oknem programu
i
kontrolkami.
W oknie Event s
widoczne zdarzenia moliwe do
zdefiniowania dla
wybranego
elementu. Dla przyciRysunek 24. Przykad zastosowania zmiensku Stop konfigunej lokalnej
rujemy zdarzenie
Value Change (zmiana wartoci). Po tym fakcie, kada
zmiana wartoci spowodowana przez uytkownika wygeneruje zdarzenie. Naley pamita, e struktura reaguje tylko na zdarzenia wywoane przez uytkownika,
wic zmiana wartoci wsposb programowy nie spowoduje wygenerowania zdarzenia. Po skonfigurowaniu zamykamy okno. Pojawi si nowa ramka, wktrej
naley umieci sta logiczn owartoci true ipodczy j do zacisku kontynuacji ptli. Wewntrz ramki
umieszczamy jeszcze sta tekstow z komunikatem
Wcinito przycisk Stop iczymy j ztunelem wyjciowym prowadzcym do wskanika Zdarzenia. Teraz
mona przetestowa prac programu. Zwrmy uwag na to, e przycisk Stop nie jest nigdzie doczony,
nie musi znajdowa si w ptli ani strukturze, moe
by umieszczony wdowolnym miejscu na diagramie.
Zmiana jego wartoci jest identyfikowana za pomoc
struktury Event. Popatrzmy jeszcze na tunel wyjciowy
prowadzcy do zacisku kontynuacji ptli. Znajduje si
wnim kropka sygnalizujca, e nie zdefiniowano wartoci zwracanej przez ten tunel dla kadej ramki (kadego zdarzenia). Jeli klikniemy prawym przyciskiem
myszki na tunelu, to zobaczymy, e jest zaznaczona
opcja Use Default If Unwired. Moemy j pozostawi
bez zmian, poniewa domylnie ptla wykonuje si
dopty, dopki warunek kontynuacji jest rwny false.
Naley jednak pamita o tym, aby dla kadego zdarzenia wartoci zwracane przez tunele wyjciowe byy
prawidowe.
Aby zobaczy zalety stosowania struktury, dodajmy jeszcze dwa zdarzenia. Jak poprzednio dodajemy
now ramk zdarze woknie Event Sources, wybieramy Controls -> Stop, awoknie Events ->Mouse -> Mouse Move wstawmy w nowoutworzonej ramce komunikat Myszka przesuna si nad przyciskiem Stop.
Ramk doczamy do odpowiedniego tunelu wyjciowego. Kod znajdujcy si wtej ramce wykona si, gdy
kursor myszy przemieci si nad przyciskiem Stop.
Dodajmy jeszcze jedno zdarzenie. Po otwarciu
okna konfiguracji, w oknie Event Sources wybieramy
<This VI>, awoknie Events -> Menu Selection (App).
Zlewej strony nowopowstaej ramki, pojawi si kilka
terminali, zktrych mona pobra przydatne informacje dotyczce zdarzenia. Poczmy terminal ItemPath

Zmienne lokalne
Zmienna lokalna jest dostpna tylko w obrbie jednego diagramu. Pozwala na zapis lub odczyt wartoci wrnych jego miejscach bez prowadzenia pocze. Zmienn identyfikuje si po nazwie elementu
na panelu czoowym. Moe by przypisana zarwno
do kontrolki (controls) jak ido wskanika (indicator).
Zapis wartoci do zmiennej zwizanej z kontrolk
pozwala na jej uycie jako wskanika jest moliwa
rwnie sytuacja odwrotna.
Zmienn lokaln mona utworzy na dwa sposoby. Pierwszy polega na wstawieniu w oknie diagramu symbolu zmiennej lokalnej zpalety Structures po
klikniciu myszk i wskazaniu na licie zmiennej,
ktr ma reprezentowa. Drugi polega na klikniciu
prawym klawiszem myszy na ikonie elementu zpanelu czoowego iwybraniu opcji Create -> Local Variable. Wtedy zostanie wygenerowana zmienna lokalna
reprezentujca dany element. Klikajc na symbolu
zmiennej prawym przyciskiem myszki mona wybra
czy dane maj by do niej zapisane (Change To Write), czy z niej odczytywane (Change To Read). Gdy
ramka symbolu zmiennej jest pogrubiona i terminal
znajduje si z prawej strony, to jest skonfigurowana
w taki sposb, aby odczytywa z niej dane. Gdy jest
cienka, aterminal zlewej strony, to mona zapisywa
do niej dane.
Przygotujmy teraz przykad, wktrym za pomoc
zmiennej lokalnej bdziemy sterowali dwiema ptlami. W nowym Vi umiemy obok siebie dwie ptle
While. Dodajmy przycisk Stop, podczmy go do zacisku kontynuacji (czerwona kropka) jednej z ptli.
Korzystajc z opisu powyej umiecimy zmienn
lokaln reprezentujc przycisk Stop i podczmy j
do zacisku kontynuacji drugiej ptli. W obu ptlach
wstawmy funkcj opniajc Wait oraz wskanik Waveform Chart. Nastpnie trzeba go doczy do licznika iteracji i. Gotowy program powinien wyglda
jak na rysunku 24.
Poniewa pojawi si bd zwizany z niewaciw akcj przycisku Stop, naley klikajc prawym
przyciskiem myszki na przycisku woknie panelu czoowego wybra opcj Mechanical Action -> Switch

ELEKTRONIKA PRAKTYCZNA 5/2013

124-129_labview.indd 128

2013-04-30 10:38:01

Krok po kroku Kursy EP

When Pressed. Wspomn przy tym, e


umieszczone obok siebie ptle wykonuj si pseudorwnoczenie.

Zmienne globalne
(Global Variable)
Rysunek
25. Wygld
panelu
czoowego
zmiennej
globalnej.

Zmienna globalna jest szczeglnym


przypadkiem przyrzdu wirtualnego ma panel czoowy, ale nie ma
diagramu. Jest dostpna nie tylko
w oknie aktualnego diagramu, ale
moe przekazywa dane innym pro-

Rysunek 26. Przykad zastosowania zmiennej globalnej program zapisujcy dane do zmiennej

Rysunek 27. Przykad zastosowania zmiennej globalnej program odbierajcy dane


gramom (instrumentom wirtualnym).
Aby utworzy zmienn globaln naley z palety Structures wstawi jej symbol w oknie diagramu.
Nastpnie, poprzez dwukrotne kliknicie na nim,
otworzy okno podobne do panelu czoowego. Mona w nim umieci kilka zmiennych rnego typu
inada im odpowiednie nazwy posu one do ich
identyfikacji.
Zmienn globaln mona przygotowa rwnie
winny sposb poprzez wybranie zmenu grnego File
-> New Nastpnie, w otwartym oknie, wybieramy
Other Files -> Global Variable. Wten sposb otwieramy okno, w ktrym umieszczamy zmienne. Gotowy
plik naley zapisa na dysku.
W przykadzie demonstrujcym dziaanie zmiennych globalnych uyjemy dwch programw: jeden
bdzie rdem danych, drugi przedstawi na wykresie odebrane dane. Zaczynamy od przygotowania
zmiennej globalnej. W nowym Vi wstawiamy symbol zmiennej globalnej, otwieramy jej panel czoowy

iumieszczamy trzy zmienne przyciski Stop oraz dwie


kontrolki numeryczne Dane iTempo. Panel zmiennej
powinien wyglda jak na rysunku 25. Teraz naley
zapisa zmienn wybierajc z menu File ->Save nadajc jej nazw np. Zmienna Globalna.
Wracamy do diagramu. Wstawiamy ptle While
oraz funkcj Wait. Na panelu czoowym dodajemy
przycisk Stop i kontrolk numeryczn, ktr nazywamy np. Szybko. Posuy ona do ustawiania opnienia pomidzy kolejnymi iteracjami ptli. Wracamy
do diagramu i dodajemy zmienne globalne majc
pierwsz zmienn moemy j skopiowa. Mona te,
klikajc prawym przyciskiem myszy w oknie diagramu po otworzeniu si okna z paletami funkcji, wybra znajdujc si na samym dole opcj Select aVI
iwskaza miejsce zapisania zmiennej na dysku. Bd
potrzebne 3 zmienne. Gdy ju s, to po najechaniu
na zmienn ipojawieniu si apki klikamy iwybieramy waciw nazw. czymy wszystko, jak na rysunku 26. Gotowy program naley zapisa na dysku.
Pozostao jeszcze przygotowanie programu odczytujcego dane ze zmiennych globalnych. Otwieramy znw nowy dokument i na panelu czoowym
umieszczamy wykres Waveform Chart zpalety Graph.
Przechodzimy na diagram iumieszczamy ptl While,
funkcj Wait oraz trzy zmienne globalne za pomoc
opcji Select aVI Klikajc prawym przyciskiem myszy na zmiennych wybieramy Change To Read iczymy wszystko, jak na rysunku 27.
Mamy ju wszystko, co potrzebne. Jako pierwszy
naley uruchomi program bdcy rdem danych
wkontrolce Szybko proponuj wpisanie np. 1000,
aby nasz program nie dziaa zbyt szybko. Przy kadej iteracji ptli do zmiennej Dane zapisany zostanie
numer iteracji. Podobnie z pozostaymi zmiennymi.
Drugi program przy kadej iteracji odczytuje dane
ze zmiennej globalnej Dane i przedstawia je na wykresie. S to numery iteracji z programu zapisujcego dane. Poprzez zmienn Tempo moemy sterowa
szybkoci wykonania ptli, a dziki zmiennej Stop
zdalnie zakoczy prac programu.

Podsumowanie
Do tej pory poznalimy rodowisko oraz podstawowe
funkcje strukturalne jzyka G. Wkolejnej czci zajmiemy si operacjami na tablicach iklastrach danych.

Wiesaw Szaj
wszaj@prz.edu.pl

ELEKTRONIKA PRAKTYCZNA 5/2013

124-129_labview.indd 129

129

2013-04-30 10:38:01

You might also like