Ćwiczenie nr 6 LabVIEW for Windows JAKO NARZĘDZIE DO PROJEKTOWANIA WIRTUALNYCH PRZYRZĄDÓW POMIAROWYCH Cel ćwiczenia: Zapoznanie się z moŝliwościami, i podstawami programowania programu LabVIEW. 1. Wstęp 2. Opis programu 2.1. Okna robocze 2.2. Linijki narzędzi 2.3. Okno Tools 2.4. Okno Controls 2.5. Okno Functions 3. Podprogram - SubVI 3.1 Panel 3.2 Diagram 3.3 Sprawdzenie poprawności działania 3.4 Wykorzystanie w programie głównym SPIS TREŚCI 1
1. Wstęp Wymagania sprzętowe i programowe: Minimum: 386+387+4 MB RAM Windows 3.1 Zalecana: 16 MB RAM 2. Opis programu 2.1. Okna robocze Okno główne moŝna całkowicie wyłączyć, wtedy program uruchomi się w opcji New. Otwierają się dwa okna: płyta czołowa (panel) i diagram. Ekran moŝna podzielić na dwie części poprzez wybór z menu Window Tile Left and Right (Rys. 2.1). Rys. 2.1. Wygląd ekranu po zastosowaniu opcji Tile Left and Right. Lewą połówkę moŝna nazwać umownie ekranem obrazującym płytę czołową badanego przyrządu, w skrócie panelem, połówkę prawą arkuszem diagramu, na której umieszczany jest program. LabVIEW jest programem w pełni zgodnym ze środowiskiem Windows. Stąd większość zasad, jakie obowiązują w Windows, ma zastosowanie takŝe w LabVIEW (przechowywanie w schowku, kopiowanie, wycinanie, wklejanie, przenoszenie elementów między poszczególnymi programami w Windows itd.). PoniŜej podano znaczenie przycisków, które znajdują się w linijce narzędzi. 2.2. Linijki narzędzi Rys. 2.2. Linijka przycisków narzędziowych. Tab.2.1. Wybrane przyciski na linijce narzędzi Przycisk Znaczenie uruchomienie tworzonego programu zapętlenie programu Podświetlenie aktualnie wykonywanej operacji Menu czcionek (zmiana typu, wielkości, koloru etc.) 2
2.3. Okno Tools Okno Tools jest oknem, które pozwala na wybór trybu pracy. MoŜe ono być otworzone z menu Window Show Tools Palette (Rys.2.4). Wybór poszczególnych przycisków zmienia rolę i wygląd wskaźnika. Objaśnienie znaczenia poszczególnych symboli znajdujących się w oknie Tools umieszczono w tab.2.2. Rys.2.4. Okno Tools. Tab.2.2. Objaśnienie znaczenia symboli okna Tools. Przycisk Znaczenie Rodzaj kursora umoŝliwiającego zmianę stanu przełączników na panelu. Rodzaj kursora umoŝliwiającego edycję (przesuwanie, zmianę wymiarów itp.) panelu i jego elementów oraz symboli na arkuszu diagramu. Umieszczanie tekstów, zmiana napisów, opisów itp. Łączenie poszczególnych symboli diagramu. Otwieranie okna Controls (Functions). Rodzaj kursora umoŝliwiającego przesuwanie elementów. Zatrzymanie przepływu informacji. Podglądanie przepływających danych. Ustawienie koloru. Wybór koloru. Automatyczny wybór narzędzia 2.4. Okno Controls Okno Controls zawiera elementy za pomocą których przekazuje się informacje do programu oraz elementy, za pomocą których odbiera się wyniki z programu. Okno to moŝna otworzyć z menu Window Show Controls Palette lub po wciśnięciu prawego klawisza myszy na obszarze okna panelu (Rys. 2.5). Tab.2.3. Objaśnienie znaczenia symboli okna Controls. Element Zawartość Numeric elementy wskazujące i pozwalające zmieniać wartość. Boolean elementy przełączające dwupozycyjne. String & Path ciągi znaków i ścieŝki dostępu. Array & Cluster tablice i grupy elementów. List & Table listy i tabele. 3
Graph wyświetlacze graficzne. Ring & Enum wybór z listy. I/O elementy kontroli wejść i wyjść. Refnum identyfikacja otwieranych plików. Clasic Control klasyczne elementy sterujące..net &ActiveX elementy ActiveX. Decoretions elementy dekoracyjne. Select a Control wybór z dysku funkcji uŝytkownika. Rys. 2.5. Okno Controls. Objaśnienie znaczenia poszczególnych symboli umieszczono w tab.2.3. 2.5. Okno Functions Okno Functions zawiera elementy (symbole) za pomocą których tworzy się strukturę programu. Okno to moŝna otworzyć z menu Window Show Functions Palette lub po wciśnięciu prawego klawisza myszy na obszarze okna diagramu (Rys.2.6). Tab. 2.4. Objaśnienie znaczenia symboli okna Functions. Symbol Funkcja Structures pętle i typy zmiennych (lokalne i globalne). Numeric podstawowe funkcje matematyczne. Boolean funkcje logiczne. String działania na ciągach znaków. 4
Array operacje na tablicach. Cluster operacja na grupach elementów. Comparison porównanie. Timing funkcje czasowe i łączące dwa elementy. File I/O operacja na plikach. Waveform operacje na przebiegach. Instrument I/O przyrządy obsługujące wejścia i wyjścia. Mathematics funkcje matematyczne. Application Control sterowanie aplikacją. Graphics & Sound grafika i dźwięk. Report Generation tworzenie raportów. Select a VI wybór programu. Rys. 2.6. Okno Functions. W LabVIEW algorytm programu przedstawia się za pomocą schematu blokowego. Schemat ten pokazuje przepływ danych pomiędzy poszczególnymi elementami. KaŜdy element (symbol) jest reprezentacją graficzną operacji, której poddane zostają dane. PoniŜej przedstawiono symbole niektórych podstawowych operacji matematycznych, logicznych, na stałych tekstowych itp. 5
dodawanie dzielenie suma negacja porównanie opóźnienie logiczna stała stała konwersja liczba Pi sinus Asystent numeryczna tekstowa liczb kart DAQ Rys. 2.7. Przykłady ikon funkcji Zgodnie z regułami obowiązującymi podczas rysowania schematów blokowych kaŝdy symbol moŝe mieć wejście (lub kilka) lub/i wyjście (lub kilka). Wejścia zwykle umieszczane są z lewej strony symbolu, a wyjścia z prawej. Dla przykładu podano zapis w postaci graficznej równania paraboli o postaci: y = ax 2 + bx + c. Rys. 2.8. Przykład graficznego zapisu ogólnego równania paraboli. Przesuńmy kursor na prawą część ekranu arkusz diagramu i naciśnijmy prawy przycisk myszki (na linijce narzędzi powinna być wybrana ukośna strzałka). Pojawi się menu Functions. MoŜemy prześledzić zestaw funkcji oferowanych przez LabVIEW (najeŝdŝając na poszczególne symbole-ikony, u dołu będzie pojawiać się tekst informujący o danej funkcji). JeŜeli chcemy poznać dokładniejszy opis symbolu oraz jego konfigurację wejść i wyjść, to po selekcji (zakładamy, Ŝe symbol jest juŝ umieszczony na arkuszu) danego symbolu (jeden klik lewym przyciskiem myszki) naleŝy włączyć Help ctrl-h. W menu Functions, Structs & Constants znajduje się 5 symboli o szczególnym znaczeniu. Oto one: Sequence Case Jest to wiele ramek nałoŝonych na siebie. LabVIEW, ikony na arkuszu diagramu wykonuje równolegle. Tworzona aplikacja wymaga czasami, aby operacje były wykonywane w ściśle określonej kolejności (np. operacje wykonywane na przyrządzie pomiarowym: reset, programowanie funkcji, wyzwolenie pomiaru, odczyt wyniku). Do ustalania kolejności wykonywania operacji słuŝy ikona Sequence. Odpowiada strukturze typu IF... THEN... ELSE (w przypadku dwóch nało- Ŝonych na siebie ramek) lub strukturze SWITCH... CASE (wiele ramek). For Loop Odpowiada strukturze FOR I=0 TO N. Pętla iteracyjna z krokiem równym 1. 6
While Loop Odpowiada strukturze WHILE. Pętla wykonywana jest tak długo, aŝ warunek wykonywania nie przybierze wartości False (sprawdzanie warunku odbywa się raz na obieg pętli, symbol zakrzywiona strzałka) Formula Node Blok ten słuŝy do wpisywania formuł matematycznych, które trudno zbudować z poszczególnych ikon z menu Functions. 3. Podprogram Sub VI W punkcie 3 pokazano w jaki sposób w graficznym języku programowania, uŝywanym w LabVIEW moŝna zrealizować funkcje spełniane w standardowych językach programowania przez podprogramy (subroutines w Pacalu i Fortranie czy funkcje w C). W LabVIEW podprogram nazywamy SubVI. Na diagramie reprezentowany jest przez ikonę posiadającą wejścia (lub nie zaleŝy od funkcji spełnianej przez SubVI) i wyjście (lub wiele wyjść). Zwykle staramy się, aby rysunek w ikonie w sposób obrazowy informował nas o realizowanej funkcji. Zalety stosowania SubVI to: czytelny diagram (w LabVIEW dąŝymy do tego, aby poszczególne diagramy mieściły się na jednym ekranie), wielokrotne wykorzystanie podprogramu w wielu miejscach całego programu, łatwiejsze uruchamianie, znacznie prostsza modyfikacja programu. 3.1 Panel Zdefiniujmy funkcję spełnianą przez SubVI. Niech program w zaleŝności od parametru Z (przyjmującego jedną z wartości: 0, 1,2) oblicza wartość funkcji w punkcie X dla następujących postaci funkcji: gdy Z = 0 to y = ax + c gdy Z = 1 to y = ax 2 + c gdy Z = 2 to y = ax 3 + c Pierwszym krokiem jaki wykonamy będzie budowa panelu SubVI. W tym celu (podobnie jak w punkcie 2.2) budujemy następujący panel: Rys. 3-1. Panel budowanego podprogramu (SubVI) JeŜeli nie odpowiada nam podział ekranu na dwie połowy, to wykorzystując opcję Show Panel/Show Diagram z menu Windows moŝna przechodzić z panelu na arkusz diagramu lub z arkusza diagramu na panel. Okienka Zmienna X, Współczynnik a i Stała c moŝna znaleźć w menu Controls-Numeric pod nazwą Digital Control. Okienko Wartość funkcji y = f(x) w tym samym menu pod nazwą Digital indicator. Przełącznik typu funkcji budujemy w niŝej podany sposób: Z menu Controls-Numeric wybieramy symbol Vertical Pointer Slide. 7
Po najechaniu kursorem na suwak przyciskamy prawy klawisz myszki i z rozwiniętego menu wybieramy Text Labels. Zwalniamy przycisk myszki. Zamiast liczb opisujących suwak pojawią się oznaczenia min i max. W okienku obok min NajeŜdŜamy kursorem na prostokąt z napisem min (lub max) i przyciskamy prawy klawisz myszki. Z menu wybieramy Text Display i z następnego menu Add Item After. W środkowej części suwaka pojawi się następna pozycja. Na linijce narzędzi wciskamy klawisz A. W okienko obok wpisujemy tekst kwadratowa (naleŝy wykonać podwójny klik lewym klawiszem myszki). Na linijce narzędzi wciskamy przycisk ukośna strzałka i w dowolnym miejscu panelu ustawiamy kursor wykonując pojedynczy klik prawym klawiszem myszki. Zmieniamy napisy max i min na Sześcienna i Liniowa. W tym celu wciskamy przycisk A najeŝdŝamy na tekst np. max, wykonujemy podwójny klik lewym klawiszem myszki, wpisujemy nowy tekst i wprowadzanie kończymy enterem. Następnym krokiem jaki wykonamy będzie przypisanie do panelu SubVI ikony. UmoŜliwi to umieszczanie w konstruowanych diagramach ikony reprezentującej nasz podprogram (SubVI). Wykonajmy poniŝsze czynności: Wciskamy przycisk ukośna strzałka i przesuwamy kursor w prawy, górny róg ekranu, na biały kwadrat (jest to miejsce na ikonę). Wciskamy prawy klawisz myszki i z rozwiniętego menu wybieramy Edit Icon, zwalniamy przycisk. Otwiera się okno: Icon Editor. W menu (umieszczonym w lewym górnym rogu okna Icon Editor) wybieramy (pojedynczy klik lewym przyciskiem myszki) symbol prostokąta (pusty w środku). W polu ikony rysujemy ramkę (np. o wielkości równej całemu polu ikony). Wybieramy symbol ołówka i w polu ikony punkt po punkcie rysujemy symbol f(x). Punkt stawiamy pojedynczym klikiem lewym przyciskiem myszki. Po zakończeniu rysowania naciskamy przycisk OK. W prawym górnym rogu zamiast pustego pola pojawiła się ikona (jej rysunek). Wciskamy ukośną strzałkę i ponownie najeŝdŝamy kursorem na narysowaną ikonę. Przyciskamy prawy klawisz myszki i z menu wybieramy Show Connector. Zamiast rysunku ikony pojawia się kwadrat podzielony na pola. Pola z lewej strony kwadratu symbolizują parametry wejściowe (w skrócie: wejścia). Mamy 4 parametry wejściowe i 4 pola. Pole z prawej strony kwadratu oznacza wartość zwracaną przez podprogram (wyjście). Kursor zmienił postać na szpulka nici. Przypisujemy poszczególnym polom wskaźniki umieszczone na panelu SubVI zachowując zasadę: z lewej strony wejścia, z prawej wyjście. Zaznaczamy pierwsze pole (z lewego, górnego rogu) pojedynczym klikiem lewym przyciskiem myszki. Podobny klik wykonujemy nad wskaźnikiem, który odpowiada polu z kwadratu (w tym przypadku jest to Zmienna X ). Czynność powtarzamy dla kaŝdego pola. Prześledźmy pozostałe opcje z menu (opisy są adekwatne do spełnianych funkcji). NajeŜdŜamy na ikonę w prawym górnym rogu ekranu i przyciskamy prawy klawisz myszki. W celu zabezpieczenia się przed pomyłkowym skasowaniem wykonanej pracy przechowujmy utworzony panel na dysku. Korzystamy z menu File i Save As.... Rys. 3-2. Ikona reprezentująca budowany podprogram 3.2 Diagram W budowie diagramu wykorzystamy konstrukcję typu CASE. Będzie się ona składała z trzech ramek (parametr Z mo- Ŝe przyjąć jedną z trzech wartości: 0, 1, 2). Na diagramie ramki te nałoŝone są jedna na drugą. Sposób tworzenia struktury CASE przedstawia się następująco: Z menu Structs and Constans wybieramy ikonę Case. Powiększamy jej rozmiary tak, aby moŝna było zmieścić elementy realizujące poszczególne funkcje (sposób zmiany wymiarów - patrz punkt 2.4). Pomocne mogą być trzy następne rysunki zamieszczone niŝej. Standardowo struktura CASE składa się z dwóch ramek False i True. Na lewym boku ramki znajduje się tzw. tunel (mały zielony prostokąt ze znakiem? w środku). Jest to miejsce do którego podłączamy wyjście z ikony generującej wartość TRUE/FALSE (lub 0, 1, 2,..., n). W zaleŝności od podanej wartości wykonywana jest zawartość odpowiedniej ramki. Do tunelu podłączamy wyjście z ikony reprezentującej przełącznik trójpozycyjny (nazwany przez nas Typ funkcji ) na arkuszu diagramu jest to niebieski prostokąt. Podłączenie wykonuje się w sposób opisany w punkcie 2.4. Tunel moŝemy 8
przesuwać wzdłuŝ lewego boku ramki najeŝdŝając na niego kursorem i przyciskając lewy przycisk myszki. Z chwilą wykonania połączenia następuje zmiana tytułu ramki (napis w prostokącie znajdującym się na górnym boku ramki) z False na 0. Pojedynczym klikiem (lewym przyciskiem myszki) na strzałce znajdującej się obok tytułu ramki zmieniamy ramkę aktualnie znajdującą się na wierzchu stosu ramek. Strzałka w lewo powoduje wywołanie ramki o niŝszym numerze, strzałka w prawo o numerze wyŝszym. Gdy pojawi się ramka o numerze 1, ustawiamy kursor bezpośrednio na ramce (boku) i wciskamy prawy przycisk myszki. Z rozwiniętego menu wybieramy Add Case After. W ten sposób do istniejącego stosu ramek, o numerach 0 i 1, dodaliśmy następną ramkę o numerze 2. W ramkach umieszczamy ikony tak jak to obrazują niŝej zamieszczone rysunki. I tak ramka o numerze (tytule) 0 będzie realizowała funkcję liniową, l funkcję kwadratową, 2 funkcję sześcienną. Podłączamy wskaźniki zewnętrzne do struktury CASE. Wykonujemy połączenia w podobny sposób jak połączenia pomiędzy poszczególnymi ikonami, z tym, Ŝe jeden koniec połączenia zaczepiamy na boku ramki tworząc tunel (teraz o postaci czarnego prostokąta). MoŜna wybrać dowolny bok ramki ale dla zachowania czytelności diagramu dobrze jest przestrzegać zasady: z lewej strony wejścia, z prawej wyjścia. Utworzony panel i diagram chowamy na dysku komendą Save As.. (w menu File). Nazwa pliku moŝna być dowolna. Rys. 3-3. Struktura CASE omawianego przykładu SubVI. 9
3.3 Sprawdzenie poprawności dziania Przed wykorzystaniem podprogramu (SubVI) w programie, naleŝy sprawdzić poprawność działania skonstruowanego podprogramu. W tym celu przełączamy się na okno panelu i na linijce przyrządów wciskamy dłoń z wyciągniętym palcem wskazującym. W odpowiednie okienka wpisujemy wartości x, a, c i wybieramy typ funkcji, następnie uruchamiamy podprogram poprzez wciśnięcie przycisku duŝa strzałka w prawo (znajduje się na linijce narzędzi). Wartości w okienkach moŝna zmieniać w następujący sposób: Najechać kursorem na okienko i wykonać pojedynczy klik lewym przyciskiem myszki. Pojawi się pionowa kreska oznaczająca miejsce wpisywania nowych cyfr (pozostałe klawisze DEL, Back Space, kursory itp. działają standardowo). Najechać kursorem na okienko i wykonać podwójny klik lewym przyciskiem myszki. Wartość istniejąca w okienku moŝe teraz zostać wymazana i zastąpiona przez nową wartość. Najechać kursorem na strzałki (góra, dół) znajdujące się z lewej strony okienka (wskaźnika) i zmieniać wartość liczby w okienku poprzez naciskanie którejś ze strzałek (w górę zwiększamy liczbę, w dół zmniejszamy). Na skutek popełnionych błędów w łączeniu przycisk gruba strzałka w prawo moŝe zmienić kształt na złamana gruba strzałka w prawo. Oznacza to, Ŝe podprogram (dotyczy równieŝ programów) nie moŝe zostać wykonany i nale- Ŝy usunąć błędy. Próba naciśnięcia złamanej strzałki kończy się spisem błędów (w dodatkowym oknie). Wykonując pojedynczy klik lewym przyciskiem myszki na opisie błędu, powoduje na arkuszu diagramu zaznaczenie błędnego elementu (ikona, połączenie). Wówczas naleŝy klawiszem DEL usunąć błędny element i wprowadzić korektę. 3.4 Wykorzystanie w programie głównym PokaŜemy teraz sposób wykorzystania podprogramu w innym programie (nazwijmy go programem głównym). W tym celu zbudujmy panel programu głównego według poniŝszej ryciny. W celu przyspieszenia i jednocześnie ułatwienia sobie pracy część elementów skopiujemy z panelu podprogramu. Kopiowanie, przenoszenie, wklejanie, przechowywanie w schowku, wykorzystywanie w innych programach pracujących w środowisku Windows podlega identycznym regułom jak w Windows. Rys. 3-4. Panel czołowy programu głównego Wskaźnik ekran oscyloskopu znajdziemy w menu Controls, Graph pod nazwą Waveform Graph. Kolejnym krokiem będzie narysowanie diagramu programu głównego. Zastosujemy dwie pętle. Pierwsza typu WHILE będzie główną pętlą diagramu (programu), druga typu FOR LOOP będzie zawierać skonstruowany podprogram (SubVI). Zadaniem pętli FOR LOOP jest generowanie wartości wybranej funkcji dla zmiennej x przyjmującej wartości z przedziału <-1; +1> (krok 0,01). Ikonę zbudowanego podprogramu umieszczamy na arkuszu wybierając z menu Functions linię VI.... Po otworzeniu się następnego okna wyszukujemy plik o nazwie, pod którą podprogram był zapisany. Zaznaczamy ten plik i naciskamy przycisk OK. 10
Rys.3-5. Diagram wykorzystujący SubVI F(x) 11