Atrybuty - Property nodes - Valahia · 2009. 2. 19. · Programy LabVIEW, przyrządy wirtualne,...
Transcript of Atrybuty - Property nodes - Valahia · 2009. 2. 19. · Programy LabVIEW, przyrządy wirtualne,...
VccSSe
Virtual Community Collaborating Space for Science Education
Wiesław Tłaczała
Wprowadzenie do
LabVIEW
1
VccSSe
Virtual Community Collaborating Space for Science Education
LabVIEW – graficzne środowisko programistyczne
Co oznacza LabVIEW?
LabVIEW (Laboratory Virtual Instrument Engineering Workbench) jest produktem firmy
National Instrument Inc. (NI), chronionym znakiem towarowym, którego przeznaczeniem jest
obsługa przyrządów pomiarowych oraz analiza danych za pomocą komputerów klasy PC. Jest
to środowisko programistyczne dysponujące narzędziami niezbędnymi do sterowania
przyrządami, akwizycji, przechowywania, analizy i prezentacji danych, które integruje
wymienione możliwości w jeden system. Jest to graficzne środowisko programistyczne
wykorzystujące graficzny język programowania, nazywany językiem G. Głównym
przeznaczeniem LabVIEW jest budowa przyrządów wirtualnych.
Co to jest przyrząd wirtualny?
Pod pojęciem przyrządu wirtualnego zazwyczaj rozumie się rzeczywisty system pomiarowy
wspomagany komputerowo. Sterowanie rzeczywistymi przyrządami funkcjonującymi w tle
komputera może być realizowane za pomocą klawiatury i myszki oraz monitora. Szersze
rozumienie przyrządów wirtualnych uwzględnia również różnorodne aplikacje komputerowe
służące modelowaniu procesów, symulacji funkcjonowania przyrządów lub animacji
działania systemów pomiarowych. Uwzględniając zaprezentowane pojęcie przyrządów
wirtualnych można przyjąć, że wszystkie programy (aplikacje) opracowane w środowisku
LabVIEW są Przyrządami Wirtualnymi (ang. Virtual Instruments), nazywanymi w
skrócie VI.
Wprowadzenie do LabVIEW
Konstruowanie przyrządów wirtualnych może być wykorzystywane nie tylko do budowy
rzeczywistych przyrządów, lecz również może być użyteczne do opracowywania aplikacji
symulujących działanie realnych urządzeń i przyrządów, animacji i modelowania
rzeczywistych procesów fizycznych, na przykład eksperymentów fizycznych, w celu
demonstracji, w jaki sposób są wykonywane rzeczywiste eksperymenty. Jest to jedna z wielu
możliwości i istotnych cech LabVIEW, które można wykorzystać do opracowania narzędzi
2
VccSSe
Virtual Community Collaborating Space for Science Education
dydaktycznych użytecznych w czasie nauczenia, również e-nauczania, na przykład, nauczania
podstaw zjawisk fizycznych lub zaprezentowania metodyki wykonania eksperymentu
fizycznego.
Głównym przeznaczeniem niniejszego krótkiego kursu LabVIEW jest pokazanie, jak
graficzny język G (LabVIEW) można wykorzystać do opracowania aplikacji, które będą
wirtualnymi eksperymentami fizycznymi poświęconymi zaprezentowaniu Praw Gazowych.
Celem tego kursu jest przygotowanie osób zainteresowanych wykorzystaniem środowiska
LabVIEW do samodzielnego opracowywania prostych aplikacji na podstawowym poziomie.
Podstawy LabVIEW
Programy LabVIEW, przyrządy wirtualne, składają się z trzech głównych części: płyty
czołowej (ang. Front Panel), schematu blokowego (ang. Block Diagram) oraz ikony ze
złączem (ang. Icon/Connector). Po wywołaniu LabVIEW na ekranie monitora pojawia się
okno startowe, analogiczne do pokazanego na rys. 1, charakterystycznego dla LabVIEW 8.2.
Rys. 1 Okno startowe LabVIEW 8.2
3
VccSSe
Virtual Community Collaborating Space for Science Education
Korzystając z okna startowego można otworzyć nowy (pusty) program VI (rys. 2)
zaznaczając polecenie Blank VI w polu Files>>New.
Każdy program VI składa się z dwóch okien, okna Front Panel, widocznego na pierwszym
planie rysunku 2, po otwarciu nowego VI, oraz okna Block Diagram w tle, z tyłu okna Front
Panel.
Wymienione okna charakteryzują się standardowymi możliwościami dostępnymi dla okien
systemu Windows, takimi jak paski tytułu i menu, paski przewijania, przyciski minimalizacji,
maksymalizacji i zwijania okna, jak również możliwościami specyficznymi dla LabVIEW, w
postaci paska narzędziowego oraz ikony Icon/Connector, widocznej w prawym górnym rogu
każdego okna VI.
Rys. 2 Okna z płytą czołową (na wierzchu) i schematem blokowym (pod spodem)
Front Panel pełni funkcję interfejsu użytkownika i umożliwia operatorowi kontrolowanie
działania VI. Składa się on z zestawu obiektów graficznych umożliwiających operatorowi
wprowadzanie danych do programu (danych wejściowych) lub śledzenie informacji
zwracanej przez program w formie danych, które mogą być interesujące dla użytkownika
(dane wyjściowe). Obiekty umieszczone na płycie czołowej przyrządu są nazywane Controls
lub Indicators, w zależności od funkcji, jaką pełnią i w dalszej części opracowania będą
4
VccSSe
Virtual Community Collaborating Space for Science Education
nazywane kontrolkami. Obiekty typu Controls dostarczają dane do programu lub są
wykorzystywane do sterowania sposobem wykonania programu, natomiast obiekty typu
Indicators służą prezentacji zarejestrowanych danych pomiarowych lub rezultatów
uzyskanych po ich przetwarzaniu.
Kontrolki można umieścić na płycie czołowej urządzenia otwierając pole Controls,
kliknięciem w wolnym miejscu okna Front Panel, i zaznaczając odpowiednią bibliotekę (na
przykład bibliotekę Numeric), a następnie, po wskazaniu myszką odpowiedniego obiektu (na
przykład Tank), przeciągając go w wybrane miejsce na płycie czołowej za pomocą techniki
przeciągnij i upuść, (rys. 3). Pole z kontrolkami można również otworzyć z paska menu
korzystając z polecenia View>> Controls Palette.
Rys. 3 Pole z kontrolkami numerycznymi w oknie panelu
Wybrany element (w przykładzie Tank), po umieszczeniu na płycie czołowej VI, może być
poddany modyfikacji polegającej na zmianie rozmiarów, oznakowaniu za pomocą etykietki,
zmianie nazwy, wyborze zakresu, oprawie graficznej itd. Wyszczególnione operacje można
5
VccSSe
Virtual Community Collaborating Space for Science Education
wykonać po wybraniu odpowiedniego narzędzia dostępnego w polu z narzędziami - Tools
Paletce, pokazanego na rys. 4. Pole Tools Palette można otworzyć korzystając z paska menu i
zaznaczając polecenie View>>Tools Palette lub za pomocą kliknięcia prawym klawiszem
myszki przy wciśniętym klawiszu Shift (kombinacja Shift+Right-Clicking).
Rys. 4 Pole z narzędziami - Tools Palette
Pole z narzędziami ma postać panelu graficznego zawierającego różnego rodzaju narzędzia w
formie piktogramów, które można stosować do tworzenia i obsługi programu VI. Narzędzie w
środowisku LabVIEW jest w istocie swej kursorem myszki przybierającym różnorodne
formy, w zależności od przeznaczenia, i stosowanym do wykonania określonych operacji, jak
zaznaczania obiektów lub grup obiektów, realizacji połączeń między obiektami, opisywania
elementów i ich obsługi, przewijania okien, wstawiania przerwań i sond, otwierania
podręcznych menu, również operacji, służących zmianie oprawy graficznej interfejsu, a więc
typowych operacji graficznych.
6
VccSSe
Virtual Community Collaborating Space for Science Education
Rys. 5 Płyta czołowa przyrządu z obiektem Tank symulującym zbiornik
Rysunek 5 pokazuje kontrolkę Tank, której nazwę zmieniono na Tank for B-M law, czego
dokonano edytując tę nazwę za pomocą narzędzia Labeling Tool. To samo narzędzie
wykorzystano do zmiany opisu skali Y oraz zastąpienia wartości zakresowej 10 liczbą 4.
Edycji tekstów dokonano w sposób typowy dla edytorów tekstu. Zmieniono również
szerokość i wysokość zbiornika wykorzystując do tego celu narzędzie Positioning Tool. Na
koniec, zmieniono kolor przestrzeni nad gazem na biały za pomocą narzędzia Set Color Tool,
podobnie jak kolor tła w oknie panelu. Czynności, związane zarówno ze zmianą rozmiarów,
jak i zmianą kolorów, wykonuje się w sposób analogiczny do edycji rysunków w typowych
programach graficznych. Do zmiany poziomu gazu w zbiorniku można wykorzystać kursor
myszki przydzielając mu funkcję manipulatora po wybraniu narzędzia Operating Tool.
Ten sam zestaw narzędzi, dostępny w polu narzędziowym Tools Palette, służy do edycji
programu zarówno w oknie panelu - Front Panel, jak i w oknie diagramu - Block Diagram.
7
VccSSe
Virtual Community Collaborating Space for Science Education
Rys. 6 Okna panelu i diagramu należące do aplikacji Boyle-Mariotte's law.vi umieszczone obok siebie na
ekranie monitora
W oknie diagramu jest tworzony kod źródłowy programu, który składa się z terminali
kontrolek, obiektów funkcyjnych – functions, instrukcji sterujących – structures,
podprogramów – subVIs, stałych – constants i linii (połączeń) – wires, które są
odpowiedzialne w programie za przesyłanie danych między poszczególnymi obiektami.
Functions, structures i subVIs, określane wspólnym mianem nodes, są elementami programu
odpowiedzialnymi za sposób jego wykonania. Ikona subVI reprezentuje program traktowany
jako podprogram w obrębie programu nadrzędnego. Zbiór wymienionych elementów
reprezentuje w formie graficznej kod źródłowy programu. W czasie wykonywania programu
dane są przesyłane między panelem a diagramem oraz między ikonami umieszczonymi w
oknie diagramu. Sposób przepływu danych w obrębie diagramu jest determinowany za
pomocą połączeń. Rysunek 6 pokazuje panel aplikacji Boyle-Mariotte's law.vi wraz z
kontrolką numeryczną Volume, której zadaniem jest wyświetlenie liczby odpowiadającej
wartości objętości gazu, wyrażonej w mililitrach (ml) z dokładnością do jednego miejsca po
przecinku.
8
VccSSe
Virtual Community Collaborating Space for Science Education
Okna panelu i diagramu można otwierać oddzielnie za pomocą instrukcji Window>>Show
Front Panel lub Window>>Show Block Diagram, dostępnych na paskach menu w obu
oknach.
We wspomnianej aplikacji kontrolka numeryczna Tank for B-M law dostarcza dane
numeryczne do wskaźnika numerycznego Volume. Zmiana funkcji kontrolki Tank for B-M
law z indicator (wskaźnik – obiekt wyświetlający dane) na control (obiekt sterujący -
dostarczający dane) była możliwa za pomocą polecenia Change to Control dostępnego w
menu podręcznym kontrolki. Podobne zmiany funkcji są dopuszczalne dla każdej kontrolki
umieszczonej na panelu. Poleceniem przeciwnym do polecenia Change to Control jest
polecenie Change to Indicator. Obiekty sterujące – controls, są źródłami danych, natomiast
wskaźniki – indicators, odbiornikami danych. Jak wspomniano wyżej, każdy element
umieszczony na panelu jest reprezentowany w oknie diagramu przez przyporządkowany mu
terminal. W zależności od funkcji elementu jego terminal może mieć krawędzie pogrubione
(w przypadku obiektów sterujących) lub cienkie (w przypadku wskaźników). Dane mogą być
przesyłane od terminalu obiektu dostarczającego dane do terminalu obiektu przyjmującego
dane za pośrednictwem połączenia wykonanego za pomocą narzędzia Wiring Tool.
Właściwości kontrolki umieszczonej na panelu określa się w oknie Properties (rys. 7b
pokazuje takie okno dla kontrolki numerycznej Volume), które można otworzyć z menu
podręcznego kontrolki po kliknięciu na niej prawym klawiszem myszki i zaznaczeniu opcji
Properties, rys. 7a. W przykładowym oknie, po kliknięciu zakładki Format and Precision,
wybrano opcję 1 Digits of precision (wyświetlanie wartości liczby z dokładnością do jednego
miejsca po przecinku) dla liczby wyświetlanej za pomocą wskaźnika Volume.
9
VccSSe
Virtual Community Collaborating Space for Science Education
Rys. 7 Wybór właściwości elementu umieszczonego na panelu: a) podręczne menu kontrolki Volume, b) okno
Numeric Properties
Dane mogą być modyfikowane w czasie przepływu między obiektami. W oknie diagramu,
pokazanym na rys. 6a, wartość liczbowa objętości gazu podawana w litrach i dostarczana
przez terminal zbiornika jest przetwarzana w wartość liczbową podawaną w mililitrach, która
następnie jest przesyłana do cyfrowego wskaźnika objętości. Modyfikacja danych liczbowych
została dokonana za pomocą obiektu funkcyjnego Multiply, wstawionego na drodze
przepływu danych między terminalami elementów Tank for B-M law i Volume. Obiekty
funkcyjne i podprogramy służące modyfikacji (obróbce, przetwarzaniu, analizie) danych są
dostępne w polu Functions. Umieszczenie obiektu funkcyjnego lub podprogramu w oknie
diagramu jest możliwe po otwarciu pola Functions za pomocą kliknięcia prawym klawiszem
w wolnym miejscu tego okna i wybraniu biblioteki (na przykład biblioteki Express Numeric
za pomocą polecenia Express>>Arithmetic&Comparison>>Express Numeric), a następnie
zaznaczeniu ikony pożądanego obiektu (na przykład ikony operatora arytmetycznego
Multiply) i umieszczeniu go w oknie diagramu techniką przeciągnij i upuść, rys.8. Pole z
10
VccSSe
Virtual Community Collaborating Space for Science Education
obiektami funkcyjnymi można otworzyć również z paska menu wybierając polecenie
View>>Functions Palette.
Rys. 8 Demonstracja wstawiania obiektu funkcyjnego Multiply między terminalami kontrolek po uprzednim
pobraniu obiektu z biblioteki Express Numeric
Po zakończeniu tworzenia kodu można program VI wykonać jednokrotnie klikając przycisk
Run lub wielokrotnie w sposób cykliczny po kliknięciu przycisku Run Continuosly. Oba
przyciski są dostępne na pasku narzędziowym. Biała strzałka na przycisku Run informuje, że
program VI jest gotowy do uruchomienia. Po kliknięciu przycisku Run LabVIEW kompiluje
VI, a następnie uruchamia i wykonuje program. Podczas wykonywania programu przycisk
Run zmienia swój wygląd (biała strzałka na przycisku zostaje zastąpiona czarną strzałką)
informując w ten sposób operatora o tym, że program jest aktualnie uruchomiony. Program
11
VccSSe
Virtual Community Collaborating Space for Science Education
VI można zatrzymać w sposób natychmiastowy za pomocą kliknięcia przycisków Abort
Execution lub Running Continuosly, które są dostępne na pasku narzędziowym.
Technika obsługi błędów Przycisk Run z uszkodzoną (przełamaną) strzałką pojawia się na pasku narzędziowym
wówczas, kiedy program zawiera błędy lub jest uszkodzony. W takim przypadku nazwa
przycisku Run zostaje zastąpiona nazwą List Errors (rys. 9a). Uszkodzonego programu nie
można skompilować ani uruchomić z powodu występujących w nim błędów. W
uszkodzonym programie jest możliwa identyfikacja i lokalizacja błędów za pomocą kliknięcia
przycisku Error list (uszkodzonego przycisku Run). Rysunek 9a pokazuje program Boyle-
Mariotte's law.vi , w którym występują dwa błędy: jeden spowodowany pojawieniem się w
programie niedokończonego połączenia, co sygnalizuje komunikat w oknie z listą błędów
(Wire: has loose ends) oraz przerywana linia połączenia i drugi będący wynikiem braku
podłączenia źródła danych do jednego z dwóch terminali operatora Multiply, o czym
informuje zaznaczony komunikat w oknie z listą błędów (Multiply: contains unwired or bad
terminal).
Rys. 9 Obsługa błędów w programie: a) VI z błędami, b) okno z listą błędów
LabVIEW jest systemem programowania bazującym na zasadzie przepływu danych. Program
utworzony na bazie takiego systemu programowania składa się z węzłów (ang. nodes),
odpowiedzialnych za wykonanie w programie określonych zadań, które są realizowane przez
poszczególne węzły tylko po przyjęciu kompletu danych dostarczonych do terminali
12
VccSSe
Virtual Community Collaborating Space for Science Education
wejściowych węzłów, a po ich przetworzeniu natychmiast udostępniają wynik operacji na
terminalach wyjściowych. Program VI można przetestować włączając spowolniony tryb
przeglądania za pomocą przełącznika Highlight Execution, dostępnego na pasku
narzędziowym. W tym trybie przeglądania można prześledzić, w jaki sposób dane
przepływają między terminalami, rys. 10a. Dodatkowo, dostępne jest przeglądanie programu
VI krok po kroku za pomocą przycisków Start Single Stepping (uruchom krokowy tryb
przeglądania), Step over...(omiń obiekt) i Finish VI...(zakończ krokowy tryb przeglądania),
rys. 10b.
Rys. 10 Testowanie VI: a) z wykorzystaniem opcji Highlight Execution, b) krok po kroku
Budowa aplikacji przeznaczonej do demonstracji prawa Boyle-Mariotte’a
Do demonstracji prawa Boyle-Mariotte'a wymagane jest zaimplementowanie następującego
równania
p0V0 = p1V1 for T = const, (1)
a następnie pokazanie, jak w przypadku idealnego gazu ciśnienie p zależy od objętości V,
kiedy temperatura gazu T0 jest stała i równa 293 K
p1 = p0 V0/ V1 for T0 = 293. (2)
13
VccSSe
Virtual Community Collaborating Space for Science Education
W celu zademonstrowania prawa Boyle-Mariotte'a trzeba zasymulować proces kompresji
gazu wymuszonej zewnętrzną siłą F przyłożoną do tłoka, w wyniku czego objętość gazu
zostanie zmieniona. Oznacza to konieczność opracowania programu VI zawierającego
kontrolkę numeryczną reprezentującą wpływ siły F na objętość gazu V, graficzny
wyświetlacz Tank for B-M law i dwa wskaźniki cyfrowe wyświetlające wartości V1 i p1 (rys.
11a). Do tego celu można wykorzystać VI, wcześniej utworzony i pokazany na rys. 5. W
najprostszej wersji programu, przeznaczonego do prezentacji prawa Boyle-Mariotte’a,
potencjometr suwakowy (ang. Slide) nazwany V(F) można wykorzystać do symulacji zmian
objętości V wymuszonej siłą F. Można przyjąć, że potencjometr suwakowy V(F) będzie
wymuszać zmiany objętości gazu w przedziale od Vmax = 2,7 litra do Vmin = 1 litra, co oznacza,
że jego zadaniem będzie dostarczanie do terminalu kontrolki Tank for B-M law liczb z
przedziału ograniczonego wartościami Vmin i Vmax. Jeżeli tak, to należy zadeklarować taki
właśnie przedział zmian wartości liczbowych dopuszczalnych dla kontrolki V(F), czego
można dokonać po otwarciu okna Properties skojarzonego z tą kontrolką. Konieczna jest
również inwersja skali kontrolki V(F). Po skonfigurowaniu kontrolki V(F) należy zmienić
funkcję kontrolki Tank for B-M law przydzielając jej funkcję wskaźnika (ang. Read) zamiast
funkcji obiektu dostarczającego dane (ang. Write).
Rys. 11 Najprostsza wersja programu do demonstracji prawa Boyle-Mariotte’a: a) płyta czołowa VI, b) okno z
kodem, c) okno do konfigurowania kontrolki V(F)
W celu wskazania kierunku oddziaływania siły F można pobrać strzałkę z pola
Controls>>Decorations z elementami dekoracyjnymi i umieścić ją ponad tłokiem. Do
14
VccSSe
Virtual Community Collaborating Space for Science Education
wyświetlania aktualnych wartości objętości V1 i ciśnienia p1 wykorzystano wskaźniki
numeryczne V1 i p1. Po wykonaniu opisanych czynności zmodyfikowany program Boyle-
Mariotte's law 0.vi jest gotowy do wykonania wirtualnych pomiarów przy normalnej
temperaturze T0 = 293 K. Najprostszą implementację równania (2) pokazano na rys. 11b.
Bardziej zaawansowana aplikacja powinna umożliwić zaprezentowanie danych pomiarowych
w postaci zbioru punktów (na przykład 10 punktów) umieszczonych w układzie
współrzędnych XY. Oznacza to, że opisany wcześniej program należałoby uzupełnić o
wyświetlacz XY. Panel VI uzupełniony wyświetlaczem graficznym XY z nazwą p(V) graph
pokazano na rys. 12a.
Rys. 12 VI do demonstracji prawa Boyle-Mariotte’a z wyświetlaczem XY: a) panel, b) okno z kodem
Wyświetlacz XY można umieścić na panelu po zaznaczeniu i przeciągnięciu odpowiedniej
ikony z biblioteki Controls>>Graph. Po umieszczeniu wyświetlacza na panelu można go
skonfigurować w oknie Properties w sposób analogiczny do opisanego w przypadku
kontrolki numerycznej. Kod uzupełnionej o wyświetlacz aplikacji pokazano na rys. 12b. Jak
zwykle, po umieszczeniu na panelu nowej kontrolki, w przykładzie wyświetlacza XY,
odpowiednia ikona automatycznie została wstawiona do kodu w oknie diagramu.
Instrukcje sterujące - Structures
Jak zaznaczono wyżej, wyświetlacz XY został umieszczony na panelu w celu
zaprezentowania zbioru danych w postaci wykresu, co jednak wymaga zarejestrowania i
przechowania zbioru współrzędnych, odpowiadających zebranym punktom pomiarowym.
15
VccSSe
Virtual Community Collaborating Space for Science Education
Jeżeli tak, to konieczne jest zastąpienie kontrolki V(F) podprogramem, którego zadaniem
będzie przygotowanie wartości Vi (współrzędnych xi) dla każdego punktu w zbiorze p(V),
oraz zbudowanie dwóch jednowymiarowych tablic (ang. Arrays) zawierających zbiory
współrzędnych (Vi) i (pi). Wyrażając się bardziej precyzyjnie, należy utworzyć dwa zbiory
danych w formie tablic jednowymiarowych, które oznaczono V1 i p1. Do tego celu można
zastosować pętlę For Loop, jedną z wielu instrukcji sterujących (ang. Structure) dostępnych
w środowisku LabVIEW.
Podstawowe struktury programistyczne, pokazane na rys. 13, (z dostępem:
Functions>>Programming>>Structures) są węzłami odpowiedzialnymi za sposób
wykonania programu, i zalicza się do nich takie podstawowe instrukcje sterujące, jak
instrukcje Flat/Stacked Sequence, Case, Event oraz pętle For Loop i While Loop. Instrukcje
sterujące mogą być wykonywane w sposób iteracyjny lub warunkowy. Sposób wstawiania,
analogiczny dla każdej z wymienionych instrukcji, pokazano w górnym lewym rogu rys. 13.
Technika wstawiania instrukcji sterujących różni się od sposobu umieszczania innych
obiektów funkcyjnych w oknie diagramu, bowiem nie są one gotowe natychmiast po
przeciągnięciu do okna diagramu. Po zastosowaniu techniki przeciągnij i upuść, w chwili
pojawienia się w oknie diagramu małej ikony reprezentującej daną instrukcję, konieczne jest
jej poszerzenie w taki sposób, aby zostały nią otoczone i znalazły się w jej wnętrzu wszystkie
obiekty funkcyjne składające się na fragment programu, który powinien być wykonywany
pod jej kontrolą.
Rys. 13 Instrukcje sterujące
16
VccSSe
Virtual Community Collaborating Space for Science Education
Pętla For Loop wykonuje N-krotnie program znajdujący się w polu ograniczonym
krawędziami instrukcji, gdzie N jest liczbą udostępnianą przez terminal obiektu sterującego
dołączony do terminalu N - Loop Count. Terminal “i” - Loop Iteration, zwraca na bieżąco
numer ostatniej wykonanej iteracji.
Po wyjaśnieniu przeznaczenia pętli For Loop można ją wykorzystać do modyfikacji kodu
źródłowego, pokazanego na rys. 12b, w celu udoskonalenia aplikacji demonstrującej prawo
Boyle-Mariotte'a. W związku z tym, najpierw, wstawimy pętlę For Loop stosując technikę
wstawiana struktur pokazaną na rys. 13, a do terminalu N podłączymy terminal kontrolki
numerycznej Number of points, która będzie odpowiedzialna za liczbę iteracji (i w
konsekwencji za liczbę punktów przewidzianych do umieszczenia na wykresie). Następnie
przygotujemy fragment programu, który, w miarę wykonywania kolejnych iteracji przez For
Loop, będzie automatycznie zmniejszać wartość liczbową objętości i w ten sposób
symulować zmniejszanie objętości gazu w zbiorniku. Po utworzeniu w wyżej opisany sposób
fragmentu programu, którego zadaniem będzie przejęcie funkcji kontrolki V(F), można tę
kontrolkę z programu usunąć, natomiast niezbędne jest uzupełnienie programu o kontrolkę
Number of points.
17
VccSSe
Virtual Community Collaborating Space for Science Education
Rys. 14 Udoskonalony program do prezentacji prawa Boyle-Mariotte’a - Boyle-Mariotte’s law 1.vi:
a) panel, b) okno z kodem
W początkowym etapie tworzenia programu, kiedy kod źródłowy zajmuje mało miejsca w
oknie diagramu, można ekran monitora podzielić na dwie równe części, na przykład, górną
przeznaczoną do prezentacji panelu oraz dolną do wyświetlania diagramu, krótko mówiąc,
18
VccSSe
Virtual Community Collaborating Space for Science Education
można obie oba okna umieścić jedno nad drugim. Do tego celu służy polecenie
Window>>Tile Up and Down, ze skutkiem pokazanym na rys. 14. Na rysunku 6 pokazano, z
kolei, okna paneli i diagramu umieszczone obok siebie po zastosowaniu polecenia
Window>>Tile Left and Right.
Do tworzenia tablic można wykorzystać tunele, które pojawiają się na krawędzi For Loop po
podłączeniu źródeł danych w miejscach, wskazanych na krawędzi pętli kursorem-szpulką (w
przykładzie są to punkty podłączone do terminali p1 i V1). Tablice ze zbiorami danych p1 i
V1, przed dostarczeniem do terminalu wyświetlacza graficznego, muszą być reprezentowane
przez jedną zmienną, co uzyskano łącząc je w klastry, do czego zastosowano w programie
operator Bundle.
Po wykonaniu opisanych czynności i zadeklarowaniu liczby punktów można uruchomić
ulepszony program VI, Boyle-Mariotte’s law 1.vi, zebrać dane i umieścić je na wykresie.
Wykorzystując tryb Highight Execution można prześledzić sekwencję operacji
towarzyszących rejestracji danych i wykreśleniu krzywej p(V) na wyświetlaczu graficznym.
Typy danych i połączeń
Typy danych stosowane w środowisku LabVIEW i akceptowane przez większość programów
VI i obiektów funkcyjnych to dane numeryczne, logiczne, łańcuchy znaków, zbiory znaków,
zbiory w postaci przebiegów, tablic i klastrów, referencje i ścieżki dostępu.
Analizując kod graficzny przedstawiony na rys. 14 można zauważyć, że połączenia mają
różne grubości i kolory. Cienkie linie stosuje się w przypadku połączeń przeznaczonych do
przesyłania wielkości skalarnych, natomiast pogrubione linie służą do transferu
jednowymiarowych (1D) tablic danych. Informacja o typie danych zakodowana jest nie tylko
w grubości połączeń, lecz również w ich formie, fakturze (wyglądzie) i kolorze. Wygląd
połączeń jest jednoznacznie określony dla każdego typu danych. Na przykład, kolor
pomarańczowy jest zarezerwowany dla liczb zmiennoprzecinkowych, niebieski dla liczb
całkowitych, zielony dla zmiennych boolowskich, a różowy dla łańcuchów znaków. Rodzaj
połączeń stosowanych w oknie diagramu jest przyporządkowany danym w następujący
sposób: cienkie i ciągłe linie służą do przesyłania wielkości skalarnych, pogrubione i ciągłe
linie stosuje się do przekazywania tablic jednowymiarowych, bardziej pogrubione lub
podwójne linie są zarezerwowane dla dwuwymiarowych tablic liczb, natomiast grube linie są
19
VccSSe
Virtual Community Collaborating Space for Science Education
wykorzystywane do dostarczania dwuwymiarowych tablic zmiennych boolowskich lub
znaków. Czarna przerywana linia sygnalizuje niewłaściwie wykonane połączenie.
Dzięki zastosowaniu struktury Case i kontrolki boolowskiej można udoskonalić aplikację
umożliwiając wybór wartości temperatury, przy czym do zmiany wartości temperatury T2
wykorzystano kontrolkę suwakową T2. W omawianej aplikacji wartość temperatury T1 jest
niezmienna i równa 293 K.
Rys. 15 Aplikacja Boyle-Mariotte’s law 2.vi z możliwością wyboru między temperaturą T2 a T1:
a) panel, b) okno z kodem
20
VccSSe
Virtual Community Collaborating Space for Science Education
Struktura Case składa się z dwu lub więcej podprogramów w postaci subdiagramów
otoczonych charakterystyczną ramką z terminalem selektora na lewej krawędzi, które są
odpowiedzialne za różne sposoby wykonania części programu. O tym, który z podprogramów
struktury Case zostanie wykonany decyduje wartość zmiennej dołączonej do terminalu
selektora, przy czym w przypadku struktury z dwoma subdiagramami stosuje się kontrolkę
boolowską, natomiast w przypadku większej ich liczby wyboru podprogramu dokonuje się za
pomocą kontrolki numerycznej lub znakowej.
Kontrolka boolowska charakteryzuje się dwoma stanami „ON” (WŁ) i „OFF” (WYŁ), które
można wybierać klikając na kontrolce za pomocą kursora Operating Tool. Terminal kontrolki
boolowskiej jest koloru zielonego z widocznymi oznaczeniami literowymi “TF”, które
odpowiadają dwóm wzajemnie wykluczającym się możliwościom – True lub False,
przyporządkowanym stanom ON lub OFF – włączenia lub wyłączenia kontrolki.
Rysunek 15 pokazuje zmodyfikowany kod źródłowy udoskonalonej aplikacji Boyle-
Mariotte’s law 2.vi, w której kontrolka boolowska T2 or T1 steruje za pośrednictwem
terminalu strukturą Case, odpowiedzialną za wybór wartości temperatury. W opisywanej
wersji aplikacji temperatura jest parametrem. Po zmianie tego parametru, czyli wartości
temperatury, konieczna jest aktualizacja objętości gazu zgodnie z prawem Gay Lussac’a, co
uzyskuje się za pomocą fragmentu kodu przetwarzającego dane dostarczane przez strukturę
Case.
W tym samym oknie widoczna jest struktura Formula Node, zastosowana w miejsce
fragmentu kodu widocznego na rys. 14b, która dostarcza wartości objętości gazu zmniejszane
automatycznie w kolejnych iteracjach w czasie wykonywania programu, kontrolowanego
przez pętlę For Loop. Rola struktury Formula Node jest identyczna z rolą fragmentu
programu, zrealizowanego z wykorzystaniem operatorów matematycznych niskiego poziomu
(rys. 14b).
Struktura Formula Node jest prostokątem, w którego polu można wpisywać wyrażenia
algebraiczne służące przetwarzaniu danych wprowadzanych do struktury za pośrednictwem
terminali wejściowych (ang. Inputs), umieszczonych na krawędzi struktury. Po przetworzeniu
dane są udostępniane poza polem struktury za pośrednictwem terminali wyjściowych (ang.
Outputs). Terminale wejściowe i wyjściowe można utworzyć klikając prawym klawiszem na
krawędzi struktury, a po otwarciu podręcznego menu, zaznaczając odpowiednie polecenie
21
VccSSe
Virtual Community Collaborating Space for Science Education
Add Input lub Add Output. Po umieszczeniu terminali na krawędzi struktury należy w nich
wpisać nazwy przyporządkowane określonym zmiennym. Do tworzenia wyrażeń
algebraicznych w polu struktury Formula Node stosuje się zapis podobny do zapisu
przyjętego w większości języków tekstowych i w wyrażeniach matematycznych.
W celu pełnej demonstracji prawa Boyle-Mariotte’a wydaje się celowe umieszczenie na tym
samym wykresie kilku (przynajmniej dwóch) krzywych różniących się wartością temperatury
traktowanej jako parametr. Cel ten można osiągnąć modyfikując poprzednią aplikację w taki
sposób aby dane przewidziane do umieszczenia na wykresie zostały zarejestrowane w kilku
(na przykład, dwóch) etapach, z których każdy byłby odpowiedzialny za zgromadzenie zbioru
danych dla jednej wartości temperatury. Tego typu zadanie można zrealizować korzystając ze
struktury sekwencyjnej Sequence structure.
22
VccSSe
Virtual Community Collaborating Space for Science Education
Rys. 16 Program Boyle-Mariotte’s law 3.vi ze strukturą sekwencyjną wykorzystaną do przygotowania danych
dla dwóch krzywych, różniących się wartością temperatury: a) okno panelu, b) okno z kodem
Struktura sekwencyjna jest przeznaczona do sekwencyjnego wykonywania fragmentów
programu (podprogramów), umieszczonych w kolejnych polach struktury, ograniczonych
perforowanymi ramkami, które w rozwiniętej (płaskiej; ang. Flat) formie przypominają
kolejne kadry filmu. Po zastąpieniu struktury sekwencyjnej rozwiniętej (Flat Sequence)
strukturą nakładkową (Stacked Sequence), funkcja struktury nie zmienia się, natomiast
poszczególne pola zostają umieszczone jedne nad drugimi, a ich ramkom zostają przydzielone
kolejne numery porządkowe. Fragmenty kodu umieszczone w poszczególnych polach
struktury sekwencyjnej są wykonywane w kolejności od lewej strony do prawej, w przypadku
23
VccSSe
Virtual Community Collaborating Space for Science Education
struktury rozwiniętej, lub w kolejności determinowanej numerami porządkowymi ramek
poczynając od numeru „0”, w przypadku struktury nakładkowej.
Program VI, poddany opisanej wyżej modyfikacji i nazwany Boyle-Mariotte’s law 3.vi, z
dwoma krzywymi dla dwóch różnych wartości temperatury pokazano na rys. 16.
Opisany program (Boyle-Mariotte’s law 3.vi) powstał w wyniku modyfikacji programu
Boyle-Mariotte’s law 2.vi zrealizowanej w następujący sposób:
• najpierw w oknie diagramu programu Boyle-Mariotte’s law 2.vi wstawiono strukturę
Stacked Sequence otaczając nią pętlę For Loop za pomocą rozszerzenia prostokąta,
reprezentującego strukturę sekwencyjną,
• następnie dodano drugie pole struktury sekwencyjnej za pomocą polecenia Add Frame
After dostępnego w podręcznym menu tej struktury,
• w kolejnym kroku, skopiowano pętlę For Loop widoczną w pierwszej ramce i
wklejono ją w drugiej ramce, po czym usunięto, ze skopiowanej pętli For Loop,
terminale p1 2, Tank for B-M law 2 i V1 2 i w konsekwencji przyporządkowane im
dodatkowe (powstałe w wyniku kopiowania) obiekty na panelu,
• następnie dołączono terminal Number of points do terminali N w obu pętlach For
Loop, a terminal kontrolki T2 połączono z terminalem operatora Multiply w drugiej
ramce struktury sekwencyjnej zastępując w ten sposób temperaturę 293 K wartością
temperatury T2 wymuszaną za pomocą kontrolki T2,
• na końcu wykorzystano funkcję Bundle do uformowania zbiorów współrzędnych dla
poszczególnych krzywych oraz funkcję Build Array do połączenia tak uformowanych
zbiorów przed ich dostarczeniem do terminalu wyświetlacza graficznego.
Identyczny efekt, jak ten pokazany na rys. 16a, w postaci sposobu rejestracji danych i ich
prezentacji, można uzyskać za pomocą różnych kodów źródłowych. Dwa z nich pokazano na
rys. 17. Rysunki 17a i b przedstawiają dwie kolejne ramki nakładkowej struktury
sekwencyjnej Stacked Sequence wstawionej do programu w miejsce rozwiniętej struktury
sekwencyjnej. W strukturze Stacked Sequence dane między ramkami są przesyłane za
pośrednictwem zmiennych lokalnych Sequence Locals pełniących funkcje portów lokalnych,
24
VccSSe
Virtual Community Collaborating Space for Science Education
w odróżnieniu od przekazywania danych za pośrednictwem tuneli, co można było
zaobserwować w strukturze Flat Sequence.
Sequence Locals można utworzyć w oknie diagramu po otwarciu podręcznego menu struktury
i zaznaczeniu polecenia Add Sequence Local. Rysunek 17c, z kolei, pokazuje program, w
którym funkcje struktury sekwencyjnej wraz z odpowiednimi podprogramami przejęła w
całości zmodyfikowana struktura Formula Node, w której umieszczono dodatkowo dwa
wyrażenia, oddzielone średnikiem, służące równoległemu obliczaniu współrzędnych punktów
odpowiedzialnych za graficzną prezentację prawa Boyle-Mariotte’a dla dwóch różnych
wartości temperatur, 293 K i T2.
Rys. 17 Różne sposoby przygotowania kodu do demonstracji prawa Boyle-Mariotte’a: a i b) z zastosowaniem
struktury Stacked Sequence, c) wykorzystującej strukturę Formula Node z dwoma niezależnymi wzorami
Na etapie edycji programu, VI można uruchamiać a następnie zatrzymywać za pomocą
odpowiednich przycisków dostępnych w pasku narzędziowym Tools bar, lecz po zakończeniu
tworzenia aplikacji powinna istnieć możliwość zatrzymania programu wyłącznie za pomocą
kontrolki umieszczonej na panelu sterowania. Do tego celu można wykorzystać strukturę
25
VccSSe
Virtual Community Collaborating Space for Science Education
While Loop, traktowaną jako pętlę główną programu, umieszczając w polu ograniczonym jej
krawędziami wcześniej przygotowany kod źródłowy.
Rys. 18 Program Boyle-Mariotte’s law 6.vi w całości kontrolowany za pomocą kontrolek umieszczonych na
panelu: a) interfejs użytkownika, b) okno z kodem
Program objęty pętlą While Loop jest powtarzany wielokrotnie do chwili, kiedy na jej wejściu
sterującym (wejściu warunku) zostanie spełniony określony warunek, a mianowicie, do
terminalu warunku pętli zostanie doprowadzona wartość True lub False (w zależności od
wcześniej dokonanego wyboru rodzaju warunku, który można zdeterminować poleceniami
26
VccSSe
Virtual Community Collaborating Space for Science Education
Stop if True lub Stop if False, dostępnymi w podręcznym menu struktury). Dzięki tej
właściwości pętla While Loop może być kontrolowana za pomocą dwustanowego
przełącznika, a więc kontrolki boolowskiej. W aplikacji pokazanej na rys. 18, Boyle-
Mariotte’s law 6.vi, pętla While Loop znajduje się pod kontrolą wyłącznika STOP
EXPERIMENT.
Aplikację można uruchomić klikając przycisk Run na pasku narzędziowym. Po uruchomieniu,
aplikację można zatrzymać w dwojaki sposób, klikając przycisk Abort Executin na pasku
narzędziowym (nie rekomenduje się) lub klikając przełącznik STOP EXPERIMENT (operacja
zalecana w celu zatrzymania aplikacji). Po uruchomieniu programu VI, kod objęty pętlą
główną jest wykonywany cały czas, co oznacza, że również pomiary są wykonywane cały
czas i powtarzane w określonym cyklu. Zazwyczaj jednak oczekuje się, że akwizycja danych i
uruchomienie pomiarów będzie miało miejsce w ściśle określonej chwili. Można to osiągnąć
dzięki dodatkowej strukturze Case sterowanej przyciskiem z terminalem dołączonym do
terminalu selektora. Normalnym stanem, w jakim znajduje się taki przycisk, jest stan
wyłączenia (False) i dopiero po jego kliknięciu przechodzi on chwilowo do stanu włączenia
(True), po czym automatycznie powraca do stanu wyłączenia, czyli zachowuje się jak
rzeczywisty przycisk. Skutkuje to wyborem opcji True struktury Case na czas potrzebny do
jednokrotnego wykonania programu umieszczonego w polu objętym ramką True. Jeżeli więc
umieścimy kod naszego programu w polu True, a pole False pozostawimy puste to
zapewnimy sobie możliwość uruchamiania pomiaru w chwili, która nam odpowiada. W
aplikacji pokazanej na rys. 18 do tego celu służy przycisk RUN MEASUREMENT.
Atrybuty - Property nodes Wydaje się, że w celu uatrakcyjnienia aplikacji byłoby wskazane pokazanie, w jaki sposób
siła F wpływa na zmianę położenia tłoka zmieniającego objętość gazu. W tym celu
należałoby umieścić wewnątrz zbiornika na panelu sterowania pewien obiekt symulujący tłok.
Może nim być, na przykład, kontrolka numeryczna nazywana Color box dostępna za pomocą
ścieżki Controls>> Classic >>Classic Numeric>>Color Box. Po umieszczeniu kontrolki
Color Box na panelu należy zmienić jej rozmiary w taki sposób, aby przypominała trzon
tłoka. Oznacza to, że kontrolka Color Box powinna być długa i wąska. Korzystając z menu
podręcznego kontrolki można za pomocą polecenia Create>>Property Node wstawić do
programu atrybut (obiekt typu Property node) skojarzony z daną kontrolką. Przeznaczeniem
27
VccSSe
Virtual Community Collaborating Space for Science Education
tego obiektu będzie wymuszanie zmiany położenia tłoka na panelu pod wpływem przyłożonej
siły F.
Rys. 19 Czynności towarzyszące przydzielaniu właściwości Top kontrolce Color Box
Obiekty typu Property Nodes umożliwiają skonfigurowanie kontrolek umieszczonych na
panelu decydując o ich pojawianiu się lub znikaniu, a także o sposobie zachowania się.
Obiekt Property Node (atrybut) można wstawić w oknie diagramu za pośrednictwem
28
VccSSe
Virtual Community Collaborating Space for Science Education
kaskadowo rozwijanych menu wybierając pożądany atrybut z listy dostępnych dla danej
kontrolki właściwości (rys. 19). Większości atrybutów można przydzielić, za pomocą poleceń
Change to Read lub Change to Write, jedną z dwóch funkcji Read lub Write, omówionych
wcześniej w odniesieniu do terminali kontrolek. W aplikacji Boyle-Mariotte’s law 8.vi
wstawiono do programu obiekt Property Node skojarzony z kontrolką Color Box i
przydzielono mu właściwość umożliwiającą zmianę położenia w pionie, synchronicznie ze
zmianą poziomu gazu w zbiorniku. W tym celu, po otwarciu podręcznego menu kontrolki
Color Box i zaznaczeniu polecenia utworzenia atrybutu wybrano właściwość Top. W
następnym kroku, dostarczono do atrybutu Top wartości liczbowe dostarczane z wyjścia V
struktury Formula Node i zmodyfikowane za pomocą operatorów Multiply i Subtract z
dołączonymi stałymi liczbowymi 55 i 250. W tak zmodyfikowanym programie położenie
tłoka na panelu, odmierzane w pikselach, będzie zależeć od zmodyfikowanej w opisany wyżej
sposób wartości V, doprowadzonej do terminalu wejściowego atrybutu Top.
Do zasymulowania tarczy tłoka można wykorzystać dodatkowy znacznik poziomu (suwak;
ang. Slider), który można dodać do kontrolki Tank for B-M law korzystając z jej podręcznego
menu (polecenie Add Slider). Po dodaniu drugiego znacznika poziomu, wartość liczbową jego
położenia względem pierwszego znacznika należy zwiększyć o 0,05 za pomocą operatora
Add, a przestrzeń między obu znacznikami poziomu zamalować na czarno. Na koniec obie
wartości liczbowe odpowiedzialne za położenia znaczników poziomu należy połączyć w
jedną zmienną za pomocą operatora Bundle i doprowadzić do terminalu kontrolki Tank for B-
M law. Opisane wyżej czynności będą umożliwiać synchroniczną zmianę poziomu gazu wraz
ze zmianą położenia tłoka wymuszoną przyłożoną siłą F.
Atrybuty dostępne w środowisku LabVIEW są bardzo użyteczne w przygotowaniu animacji
ilustrujących procesy fizyczne, co jest szczególnie istotne w modelowaniu eksperymentów.
Aplikacje, które wykorzystują animacje demonstrujące wykonanie doświadczenia w sposób
bardziej przekonywujący oddziałują na wyobraźnię użytkownika.
Na panelu sterowania aplikacji Boyle-Mariotte’s law 8.vi obok wyświetlacza numerycznego
p1 umieszczono czujnik Gauge symulujący funkcjonowanie manometru. Rurka łącząca
manometr ze zbiornikiem jest elementem graficznym przygotowanym za pomocą programu
Paint.
29
VccSSe
Virtual Community Collaborating Space for Science Education
Aplikacja Boyle-Mariotte’s law 8.vi jest kompletną aplikacją, którą można wykorzystać do
zademonstrowania prawa Boyle-Mariotte’a. W tym celu należy uruchomić program klikając
przycisk Run w pasku narzędziowym, co spowoduje uruchomienie zewnętrznej pętli While
Loop, kontrolowanej przez terminal przycisku STOP EXPERIMENT. Po uruchomieniu
aplikacji trzeba wybrać za pomocą kontrolki Number of points liczbę punktów, które będą
reprezentować zależności p1(V1) dla dwóch różnych temperatur, T1=293 K i T2. Temperatura
T1 jest stała, natomiast wartość temperatury T2 można zadać przed wykonaniem pomiarów za
pomocą kontrolki T2. Po wybraniu liczby punktów i wartości temperatury T2 można
uruchomić wykonanie pomiarów klikając przycisk RUN MEASUREMENT. Przed kliknięciem
tego przycisku była aktywna ramka False struktury Case. Ponieważ ramka False jest pusta,
nie zawiera żadnego kodu, to na panelu nic się nie działo. Po kliknięciu RUN
MEASUREMENT program przechodzi do wykonania kodu umieszczonego w ramce True, w
której jest umieszczona pętla For Loop. Pętla For Loop przed uruchomieniem przyjmuje z
zewnątrz wartości N (liczba punktów) i T2. Po ich przyjęciu zaczyna się wykonywanie
fragmentu programu umieszczonego w polu otoczonym pętlą. Wartości N, T2 oraz i (numery
kolejnych iteracji) są zmiennymi wejściowymi, które struktura Formula Node wykorzystuje
do wyznaczenia kolejnych wartości p1, p2 i V. Wartości te, przygotowane w kolejnych
iteracjach zgodnie z wyrażeniami zapisanymi w polu struktury Formula Node, są gromadzone
w tunelach na krawędzi pętli For Loop. Wartość V reprezentująca objętość gazu pod tłokiem
jest wielkością skojarzoną z położeniem trzonu tłoka i jest wykorzystywana do wyznaczenia
wartości tego położenia za pomocą dwóch stałych (250 - położenie początkowe, 55 - przyrost
położenia w kolejnych iteracjach) oraz operatorów arytmetycznych: mnożenia Multiply i
odejmowania Subtract. Przygotowane z ich pomocą wartości liczbowe są dostarczane do
terminalu atrybutu Top odpowiedzialnego za położenie trzonu tłoka pod wpływem
przyłożonej siły F i w kolejnych iteracjach wymuszają zmianę jego położenia animując
przesuw trzonu tłoka. Wartości V oraz wartość V powiększona o 0,05 są łączone w klaster, a
następnie dostarczane do terminalu zbiornika wymuszając w każdej iteracji synchroniczną
zmianę dwóch poziomów nad powierzchnią gazu. Ponieważ przestrzeń miedzy poziomami
została zaczerniona to sprawiają one wrażenie tarczy tłoka, która zmienia swoje położenie w
trakcie wykonywania programu w kolejnych iteracjach. Opóźnienie 10 ms wprowadzono w
celu zapewnienia stabilnego wykonywania fragmentu programu wykonywanego pod kontrolą
pętli For Loop. Po N iteracjach w tunelach wyjściowych pętli For Loop są przygotowane trzy
30
VccSSe
Virtual Community Collaborating Space for Science Education
zbiory współrzędnych p1, p2 i V. Po połączeniu tych zbiorów w dwa zbiory par
współrzędnych punktów pomiarowych wykorzystuje się je do budowy tablicy
dwuwymiarowej, która dostarcza te dane do terminalu wyświetlacza graficznego, czego
wynikiem jest pojawienie oczekiwanych wykresów na wyświetlaczu graficznym pod koniec
wykonania fragmentu programu umieszczonego w polu True struktury Case. Równocześnie z
umieszczeniem danych na wyświetlaczu graficznym oba zbiory, (p1, V) i (p2, V), są
dostarczane do terminali wyświetlaczy numerycznych, Cluster for T1 data i Cluster for T2
data, dzięki czemu możliwy jest odczyt wartości liczbowych poszczególnych współrzędnych
punktów pomiarowych. Po zakończeniu wykonania fragmentu kodu w polu True program
samoczynnie powraca do pustego pola False (przycisk RUN MEASUREMENT tylko na
początku dostarczył wartość True. Jego normalne położenie dostarcza wartość False). Od
tego momentu program jest gotowy do kolejnego pomiaru, na przykład, z inną wartością T2,
co można wymusić klikając ponownie przycisk RUN MEASUREMENT. Jeżeli chcemy
zatrzymać aplikację to można to uczynić klikając przycisk STOP EXPERIMENT, co
spowoduje zatrzymanie zewnętrznej pętli While Loop i wyjście z programu, a w konsekwencji
zatrzymanie aplikacji.
31
VccSSe
Virtual Community Collaborating Space for Science Education
Rys. 20 Aplikacja Boyle-Mariotte’s law 8.vi z poruszającym się tłokiem: a) interfejs użytkownika, b) kod
Kilka zaawansowanych właściwości LabVIEW Tworzenie podprogramów Sub-VI. W przypadku dużych programów rekomenduje się
sukcesywne tworzenie podprogramów z wybranych fragmentów kodu, co powoduje, że
program staje się bardziej zwarty i jednocześnie bardziej czytelny. W celu utworzenia
podprogramu sub-VI należy za pomocą kursora Positioning Tool zaznaczyć wybraną część
kodu, a następnie kliknąć polecenie Edit>>Create SubVI dostępne w pasku menu. W
32
VccSSe
Virtual Community Collaborating Space for Science Education
odpowiedzi na opisane czynności LabVIEW zastąpi wyselekcjonowany fragment kodu
prostokątną ikoną ze standardowym rysunkiem, który można zmodyfikować korzystając z
edytora ikon Icon Editor dostępnego z paska menu za pomocą polecenia File>>VI
Properties, i kliknięciu przycisku Edit Icon.... Utworzony, w opisany wyżej sposób,
podprogram jest wyposażony w terminale wejściowe i wyjściowe, których funkcja jest
podobna do funkcji styków w złączu rzeczywistego przyrządu. Złącze podprogramu
umożliwia wprowadzanie i wyprowadzanie danych do i z programu, a więc służy
komunikowaniu się podprogramu z otoczeniem. Rysunek 21 pokazuje kod źródłowy
programu z dwoma podprogramami Data modification.vi i Data for graph.vi. Złącze
podprogramu można uwidocznić klikając prawym klawiszem na ikonie podprogramu, w celu
otwarcia podręcznego menu podprogramu, w którym należy zaznaczyć polecenie Visible
Items>>Terminals.
Event structure jest instrukcją sterującą, która składa się z jednego lub więcej pól otoczonych
ramkami, z których tylko jedno może być aktywne w chwili wykonywania programu i
odwołania się do tej instrukcji. Instrukcja Event czeka na zaistnienie jakiegoś zdarzenia na
panelu, które powinno spowodować uaktywnienie jednej z ramek struktury i wykonanie
umieszczonego w jej polu programu. Takim zdarzeniem może być, na przykład, przesunięcie
kursora myszki, kliknięcie strzałek na klawiaturze lub kliknięcie przycisku na panelu. W
omawianej wyżej aplikacji zastosowano instrukcję Event do ustawienia, wcześniej
zdeterminowanych, wartości domyślnych, przydzielonych wybranym kontrolkom,
umieszczonym na panelu.
Po wstawieniu struktury Event do programu w oknie diagramu i dodaniu nowej ramki należy
skojarzyć z tą ramką wybrany obiekt na panelu, którego stan będzie sprawdzany co pewien
czas przez instrukcję Event. Do tego celu służy okno Edit Event, które otwiera się
automatycznie w chwili dodania nowej ramki do struktury. W oknie Edit Event należy wybrać
z listy nazw kontrolek nazwę tej kontrolki, która ma uruchomić instrukcję Event. Następnie
należy wybrać rodzaj zdarzenia z udziałem danej kontrolki, które powinno uaktywnić daną
ramkę w celu wykonania programu umieszczonego w jej polu. W opisanej wyżej aplikacji
kliknięcie (wymuszenie zmiany stanu) kontrolki Set to defaults powoduje uaktywnienie
ramki “Set to defaults” i wykonanie programu umieszczonego w jej polu, którego zadaniem
jest przywrócenie wybranym kontrolkom wartości domyślnych. Wybrane kontrolki są
33
VccSSe
Virtual Community Collaborating Space for Science Education
reprezentowane w ramce “Set to defaults” przez atrybuty i zmienne lokalne Local variables,
do których dołączono różnego rodzaju stałe z odpowiednimi wartościami domyślnymi.
Rys. 21 Program Boyle-Mariotte’s law VI, w którym wykorzystano kilka zaawansowanych właściwości
LabVIEW
Local variables – zmienne lokalne reprezentują kontrolkę jednocześnie w wielu miejscach w
oknie diagramu. Można je wykorzystać do przesłania danych między różnego rodzaju
34
VccSSe
Virtual Community Collaborating Space for Science Education
strukturami bez konieczności wykonywania połączeń między nimi lub na bieżąco uaktualniać
stan kontrolki przesyłając dane z różnych miejsc wykonywanego w oknie diagramu
programu. Zmienną lokalną skojarzoną z konkretną kontrolką można utworzyć otwierając jej
menu podręczne i zaznaczając polecenie Create>>Local Variable. Operacja ta jest
analogiczna do wstawiania atrybutu kontrolki, co pokazano na rys. 19. Po wstawieniu do
programu zmiennej lokalnej pojawia się ona w formie prostokąta z nazwą kontrolki
umieszczoną wewnątrz. Każda kontrolka umieszczona na panelu może być reprezentowana w
wielu miejscach programu przez zmienne lokalne. Wśród zmiennych lokalnych, skojarzonych
z daną kontrolką, część może funkcjonować w programie jako obiekty dostarczające dane,
natomiast pozostałe mogą mieć przydzieloną funkcję odbiorników danych, w zależności od
wybranej, za pomocą poleceń Change to Write lub Change to Read, funkcji.
Rys. 22 Instrukcja Event: a) menu podręczne, b) okno Edit Events
Po zakończeniu tworzenia kodu można zająć się uporządkowaniem i zmianą oprawy
graficznej interfejsu użytkownika. Elementy dekoracyjne, które można wykorzystać do
zmiany oprawy graficznej aplikacji są dostępne w bibliotece Decorations na panelu Controls.
35
VccSSe
Virtual Community Collaborating Space for Science Education
36
Rys. 23 Końcowa wersja aplikacji Boyle-Mariotte’s law10.vi
Końcową wersję aplikacji Boyle-Mariotte’s law 10.vi, po zmianie oprawy graficznej
interfejsu użytkownika, pokazano na rys. 23.