Programowanie w języku G
Transkrypt
Programowanie w języku G
1 Programowanie w języku G - Laboratorium 3 Ćwiczenie 3.1 Znajdź liczbę Cel: Zapoznanie z mechanizmem przekazywania danych przez tunel pętli While. Poniższe wskazówki umożliwiają stworzenie programu generującego liczby losowe tak długo, aż wygenerowana liczba będzie zgodna z zadeklarowaną przez użytkownika. Równocześnie będzie rejestrowana i wyświetlana bieżąca liczba losowa oraz liczba wykonanych w pętli iteracji. Panel czołowy _______________________________________________________________________ 1. Uruchom program LabVIEW i otwórz nowy czysty projekt. 2. Zmodyfikuj okno panelu wstawiając odpowiednie kontrolki i wskaźniki oraz zmieniając ich nazwy tak, aby uzyskać rezultat zbliżony do pokazanego na poniższym rysunku. 3. W tym celu należy w palecie Controls znaleźć i umieścić na panelu następujące obiekty: a) z grupy Numeric Controls obiekt Numeric Control i nadać mu etykietę Number to match (kontrolka będzie służyła do wprowadzania poszukiwanej liczby), b) z grupy Numeric Indicator obiekt Numeric Indicator i nadać mu etykietkę Current Number (wskaźnik będzie wyświetlał aktualnie wygenerowaną liczbę losową), c) z grupy Numeric Indicator obiekt Numeric Indicator i nadać mu etykietkę # of iterations (wskaźnik będzie prezentował liczbę wykonanych pętli). Ustawianie zakresu danych _____________________________________________________________ Ustawianie zakresu danych dla kontrolki ma na w celu niedopuszczenia do wprowadzenia wartości, która nie jest zgodna z przeszukiwanym zakresem lub dopuszczalnym krokiem zmian wielkości. Dla wprowadzanych wartości spoza zakresu kontrolki możliwe jest wybranie akcji ignorowania wprowadzonej wielkości lub zaokrąglenia do minimalnej lub maksymalnej wartości z zakresu. Postępowanie według dalszych instrukcji doprowadzi do zadeklarowania zakresu poszukiwanej liczby losowej od 0 do 10 000 przy skoku równym 1 i wartości domyślnej równej 50. 1. Otwórz menu kontekstowe kontrolki Number to Match (klikając prawy przycisk myszy w danym obiekcie) i wybierz opcję Data Range. 2. W otwartym oknie dialogowym Numeric Properties ustaw: a) w oknie Default value (wartość domyślna) wprowadź wartość 50, b) w celu zmodyfikowania domyślnego zakresu danych usuń znacznik pola Use Default Range, c) w oknie Minimum ustaw wartość 0, a z rozwijanego menu Out of range action wybierz opcję Cerce (zaokrąglanie), d) w oknie Maximum ustaw wartość 10 000, z rozwijanego menu Out of range action wybierz opcję Coerce, e) w oknie Increment ustaw wartość 1, a z rozwijanego menu Out of range action wybierz opcję Coerce to Nearest (zaokrąglij do najbliższej). Programowanie w języku G strona 1 2 3. Nie zamykaj okna dialogowego Numeric Properties: Numeric i przejdź do wykonywania poniższych instrukcji. Modyfikowanie sposobu/precyzji wyświetlania liczb ________________________________________ Możliwe jest ustawianie żądanej przez użytkownika dokładności, z jaką mają być wyświetlane wartości liczbowe regulatorów i wskaźników. Liczby można prezentować w notacji zmiennoprzecinkowej (np. 5000,00), naukowej (5E+3) lub zgodnie z układem SI (5 k). Instrukcje z kolejnych kroków spowodują wyświetlanie wartości wprowadzanej liczby jako liczby całkowitej (wyświetlanie z dokładnością do jedności). 1. Przejdź na kartę Format and Precision. Uwaga: Jeżeli wykonując instrukcje zawarte w części Ustawianie zakresu danych zamknąłeś okno Numeric Properties (np. przycisk OK) ponownie wyświetl menu kontekstowe obiektu Number to Match, a następnie wybierz polecenie Format and Precision. 2. Ustaw wyświetlanie wielkości w postaci zmiennoprzecinkowej wybierając funkcję Floating Point, a następnie zmień opcję Significant digits na Digits of precision. 3. Do sąsiadującego pola wstaw wartość 0. 4. Wprowadzone zmiany zatwierdź przyciskiem OK. 5. Takie samo formatowanie zastosuj dla wskaźników Current Number i # of iterations. Schemat blokowy _____________________________________________________________________ 1. Dodając w oknie schematu blokowego brakujące elementy i wykonując połączenia między nimi zbuduj schemat blokowy analogiczny z przedstawionym na poniższym rysunku. wersja angielska 2. W celu dostosowania schematu blokowego do wymagań projektu należy, wykorzystując obiekty z palety Functions, umieścić w nim: a) generator liczb losowych Random Number (0-1) - znajdujący się w grupie funkcji Arithmetic and Comparison i podgrupie Express Numeric; b) moduł mnożenia (Multiply) znajdujący się również w grupie funkcji Arithmetics and Comparison i podgrupie Express Numeric; c) stałą liczbową o wartości 10 000 dołączoną do wejścia y modułu mnożenia (Multiply). W celu dodania takiej stałej liczbowej należy uaktywnić menu kontekstowe wejścia y modułu mnożenia (kliknąć prawy przycisk myszy) i wybrać funkcję Constant z menu Create. W utworzonym obiekcie stałej liczbowej wpisać jej wartość (10 000); d) moduł zaokrąglania Round To Nearest znajdujący się w grupie funkcji Arithmetic and Comparison i podgrupie Express Numeric; Programowanie w języku G strona 2 3 e) funkcję „różne od siebie” Not Equal? znajdującą się w grupie funkcji Arithmetic and Comparison i podgrupie Express Comparison. Funkcja ta sprawdza, czy wartości obu wejść są różne od siebie. Jeżeli tak, to wyjście modułu przyjmuje stan TRUE (wartość 1), jeżeli nie stan FALSE (wartość 0); f) moduł inkrementacji (Increment) znajdujący się w grupie funkcji Arithmetic and Comparison i podgrupie Express Numeric. 3. Rozmieść wstawione obiekty w sposób podobny do przedstawionego na rysunku. wersja polska 4. Wstaw pętlę While znajdują się w palecie Functions w grupie Execution Control. Rozwijając menu kontektsowe obiektu terminala warunku pętli zmień opcję na Continue if True. 5. Usuń z wnętrza pętli moduł przycisku Stop Button. 6. Wykonaj brakujące połączenia pomiędzy elementami. 7. Zapisz stworzony projekt pod nazwą AutoMatch.vi na dysku. Uruchamianie programu _______________________________________________________________ 1. Uaktywnij okno panelu czołowego. 2. Uruchom pogram umożliwiający zliczanie, za którym razem spośród losowo generowanych liczb zostanie wylosowana wartość ustawiona w oknie Number to Match. Przeprowadź kilka prób. 3. W oknie schematu blokowego, przeanalizuj działanie programu uruchamiając funkcję Highlight Execution i śledząc drogę sygnału. 4. W oknie panelu czołowego zmień wartość liczby deklarowanej w oknie Number to Match na liczbę spoza zakresu od 0 do 10 000. Uruchom program i zaobserwuj reakcję programu na taką zmianę. 5. Upewnij się, czy program został zapisany na dysku, a następnie zamknij plik programu. Ćwiczenie 3.2 Rejestr przesuwny Cel: Zapoznanie z wykorzystaniem rejestru przesuwnego (Shift register) do uzyskania wartości z poprzednich obliczeń (tutaj z poprzednich iteracji). Panel czołowy _______________________________________________________________________ 1. Wyświetlić nowe, puste okno panelu czołowego. Umieścić na nim cztery wskaźniki cyfrowe, rozmieścić w sposób zbliżony do zaprezentowanego na rysunku. Zmodyfikować etykiety wskaźników. Przycisk Stop zostanie wprowadzony automatycznie później, ponieważ stanowi element pętli While wprowadzanej na schemacie blokowym. 2. Na panelu czołowym tego programu znajdują się: a) wskaźnik X(i) wyświetlający aktualny stan danej wielkości; b) wskaźnik X(i-1) wyświetlający stan wielkości w poprzednim kroku; Programowanie w języku G strona 3 4 c) wskaźnik X(i-2) wyświetlający stan danej wielkości występujący dwie iteracje pętli wcześniej; d) wskaźnik X(i-3) wyświetlający stan występujący trzy iteracje wcześniej; e) przycisk Stop powodujący zatrzymanie działania programu (pętli). Schemat blokowy _____________________________________________________________________ 1. Wprowadzić brakujące elementy programu tak, aby schemat blokowy wyglądał podobnie do poniższego rysunku. 2. Brakujące elementy schematu blokowego to: a) pętla While (Functions /Execution Control /While Loop), b) rejestr przesuwny (menu kontekstowe pętli /Add Shift register lub później Add element), c) stała liczbowa rejestru (równa 0), d) moduł dodawania (Functions /Arithmtic&Comparison /Numeric Express), e) stała liczbowa modułu dodawania (równa 5), f) połączenia pomiędzy elementami. Uruchamianie programu _______________________________________________________________ 1. Uaktywnij okno panelu czołowego, uruchom pogram, a następnie zakończ jego działania przyciskiem Stop. 2. W oknie schematu blokowego, uaktywnij funkcję Highlight Execution, a następnie uruchom program obserwując zachowanie (drogę) sygnału podczas wykonywania poszczególnych części programu. Zwróć uwagę na wartości liczbowe ukazujące się przy poszczególnych elementach. 3. Jeżeli zmiany sygnału zachodzą zbyt szybko skorzystaj z przycisku Pause lub wykonywania krokowego (Steppingu). 4. Zapisz program pod nazwą „Shift Register Example.vi” i zamknij okno programu. Programowanie w języku G strona 4 5 Ćwiczenie 3.3 Uśrednianie Cel: Utworzenie programu wyświetlającego dwa przebiegi. Pierwszy przebieg prezentuje generowane dane losowe, drugi bieżącą średnią liczoną za cztery ostatnie punkty. Wykres Waveform Chart wyświetla je w trybie Sweep. Panel czołowy _______________________________________________________________________ 1. Uruchom program LabVIEW i utwórz nowy czysty projekt. 2. Wstaw do projektu obiekt wykresu Waveform Chart znajdujący się w palecie Controls w grupie Graph Indicators. Dopasuj jego wygląd, aby był podobny do przedstawionego na poniższym rysunku. 3. W celu dostosowania ustawień wykresu Waveform Chart do wymagań projektu należy: a) rozszerzyć obszar legendy Plot Legend do dwóch wykresów; b) w obszarze Plot Legend zmienić nazwy poszczególnych wykresów, nazwę Plot 0 zmienić na Raw Data (lub Dane losowe), a nazwę Plot 1 zmienić na Running Avg. (Bieżąca średnia); c) w menu kontekstowym obszaru Plot Legend zmienić, za pomocą funkcji Common Plots i Color, typ wyświetlanego wykresu na punktowy dla Raw Data (zielone znaczniki) i liniowy dla Running Avg. (żółta linia); d) w oknie Właściwości (Properties) obiektu Waveform Chart dodaj pasek przewijania osi x uaktywnając opcję Show x scrollbar oraz w oknie Update mode zmień sposób aktualizacji na Sweep; e) w oknie Właściwości (Properties) wykresu Waveform Chart dostosuj oś y ustawiając, na karcie Format and Precision, wyświetlanie wartości liczbowych w postaci zmiennoprzecinkowej (Floating point) oraz dokładność wyświetlanych danych (Digits of precision) do jednego miejsca po przecinku (dodatkowo usunąć opcję Hide trailing zeros); f) dostosuj oś x wybierając, na karcie Scales usunięcie zaznaczenia opcji Autoscale i ustaw wartość Minimum na 0 i Maximum na 100. Ponadto w oknie Grid Style and Colors ustaw kolor Minor Grid na czarny; g) usuń podpis osi x, przez usunięcie znacznika w menu kontekstowym obiektu Waveform Chart opcji Visible Scale Label (menu X Scale). Programowanie w języku G strona 5 6 Schemat blokowy _____________________________________________________________________ 1. Dopasuj wygląd schematu blokowego, aby był podobny do przedstawionego na poniższym rysunku. 2. W celu dostosowania schematu blokowego do wymagań projektu: a) zmień, korzystając z menu kontekstowego, wygląd obiektu Waveform Chart wyłączając funkcję View As Icon; b) uaktywnij paletę Functions i wybierz grupę zawierającą wszystkie funkcje (All Functions). Następnie wstaw w okno schematu blokowego pętlę For znajdującą się w grupie obiektów Structures (All Functions). Wstawiając pętlę pamiętaj, aby obiekt Waveform Chart znalazł się w jej wnętrzu; c) wykorzystując funkcję Create Constant, z menu kontekstowego terminala wejściowego licznika pętli Loop, dodaj stałą liczbową o wartości 200; d) wykorzystując menu kontekstowe pętli For wybierz polecenie Add Shift Register. Następnie zwiększ liczbę modułów wejściowych funkcji Shift Register do 3; e) z grupy zawierającej wszystkie funkcje (grupa All Funtions w palecie Functions) wstaw do wnętrza pętli For obiekt Wait Until Next ms Multiple znajdujący się w grupie obiektów Time and Dialog. Następnie do wejścia tego obiektu dołącz stałą liczbową (wykorzystując menu kontekstowe obiektu i funkcję Create i opcję Constant) o wartości 10; f) z palety Functions umieść, we wnętrzu obszaru pętli For, generator liczb losowych Random Number (0-1) (Functions /Arithmetic and Comparison /Express Numeric); g) z palety Functions umieść, we wnętrzu obszaru pętli For, moduł Compound Arithmetic i ustaw na realizowanie funkcji dodawania, a następnie rozszerz go tak, aby uaktywnić cztery wejścia (Functions /Arithmetic and Comparison /Express Numeric); h) z palety Functions umieść, we wnętrzu obszaru pętli For, moduł dzielenia (Divide) (Functions /Arithmetic and Comparison /Express Numeric). Następnie do wejścia y tego modułu dołącz stałą liczbową (wykorzystując menu kontekstowe i funkcję Create i opcję Constant) o wartości 4; i) z grupy zawierającej wszystkie funkcje (grupa All Funtions w palecie Functions) wstaw do wnętrza pętli For moduł Bundle znajdujący się w grupie Cluster; j) poza obszarem pętli For umieść, najlepiej obok wejść modułu Shift Register, stałą liczbową (kontrolka Numeric Constant) o wartości 0,5. 3. Wykonaj, zgodne z przedstawionymi na rysunku, połączenia między obiektami. Uruchamianie programu _______________________________________________________________ 1. Uaktywnij okno panelu czołowego. 2. Uruchom stworzony pogram sprawdzając jego działanie. 3. Zapisz stworzony projekt na dysku pod nazwą „Random Average.vi”. Programowanie w języku G strona 6 7 Ćwiczenie 3.4 Średnia bieżąca pomiaru temperatury Cel: Wykorzystanie rejestrów przesuwnych do obliczania średniej bieżącej. W kolejnych krokach zostanie przeprowadzona modyfikacja programu „Temperature Monitor.vi”, tak aby obliczana była średnia z trzech ostatnich pomiarów temperatury, a wartość średniej wyświetlana na wykresie Waveform chart. Panel czołowy _______________________________________________________________________ 1. Z katalogu wskazanego przez prowadzącego otwórz plik Temperature Monitor.vi. 2. Zapisz plik na dysku pod nową nazwą Temperature Running Average.vi. Schemat blokowy _____________________________________________________________________ 1. Uaktywnij okno schematu blokowego. 2. Zmodyfikuj schemat blokowy, tak by był analogiczny do przedstawionego na poniższym rysunku. 3. W celu dostosowania schematu blokowego do wymagań projektu należy: a) usuń połączenie obiektu (Demo) Thermometer.vi z wykresem Temperature History; b) skopiuj obiekt (Demo) Thermometer.vi i umieść go poza obszarem pętli While Loop. c) wykorzystując menu kontekstowe pętli While wybierz polecenie Add Shift Register. Następnie zwiększ liczbę modułów wejściowych funkcji Shift Register do 2; Programowanie w języku G strona 7 8 d) z palety Functions umieść, we wnętrzu obszaru pętli While, moduł Compound Arithmetic i ustaw na realizowanie funkcji dodawania. Następnie rozszerz go tak, aby uaktywnić jego trzy wejścia (Functions / Arithmetic and Comparison /Express Numeric); e) z palety Functions umieść, we wnętrzu obszaru pętli While, moduł dzielenia (Divide) (Functions / Arithmetic and Comparison /Express Numeric). Następnie do wejścia y tego modułu dołącz stałą liczbową (wykorzystując menu kontekstowe i polecenie Create /Constant) o wartości 3. 4. Wykonaj połączenia między obiektami zgodnie z rysunkiem. Uruchomienie programu _______________________________________________________________ 1. Uaktywnij okno panelu czołowego. 2. Uruchom stworzony pogram sprawdzając jego działanie. 3. Zapisz stworzony projekt na dysku pod istniejącą nazwą. Modyfikacja tworzonego projektu _______________________________________________________ Postępowanie według podanych instrukcji umożliwia zmodyfikowanie wcześniejszego projektu poprzez dodanie do wykresu przebiegu aktualnej mierzonej temperatury (symulowanej przez wbudowany przyrząd wirtualny). 1. Zmodyfikuj schemat blokowy tworzonego projektu tak, by przypominał przedstawiony na poniższym rysunku. 2. W tym celu należy dokonać następujących poprawek: a) usuń połączenie modułu dzielenia (Divide) z wykresem Temperature History; b) z grupy zawierającej wszystkie funkcje (grupa All Funtions w palecie Functions) wstaw do wnętrza pętli While moduł funkcji Bundle znajdujący się w grupie obiektów Cluster; 3. Wykonaj brakujące połączenia między obiektami zgodnie z rysunkiem. Uruchomienie programu _______________________________________________________________ 1. Uaktywnij okno panelu czołowego. 2. Uruchom stworzony pogram sprawdzając jego działanie. 3. Zapisz zmodyfikowany projekt na dysku pod istniejącą nazwą. Programowanie w języku G strona 8 9 Modyfikacja wyglądu wykresu __________________________________________________________ Postępowanie według podanych instrukcji doprowadzi do modyfikacji wyglądu wykresu (zmiany w legendzie wykresu, opisie skal). W podobny sposób można dostosowywać wyświetlacz cyfrowy i paski przewijania. Dostosowywanie osi y 1. W celu zmiany wartości minimalnej wyświetlanej na wykresie należy dwukrotnie kliknąć lewym przyciskiem myszy w obszarze wartości minimalnej i wpisać nową wartość (np. w miejsce wartości 70 wpisz 75) i zatwierdzić wprowadzoną zmianę klawiszem Enter. Podobnie postępujemy z wartością maksymalną. 2. W celu zmiany skoku wartości między dwoma wielkościami osi należy zmienić wartość drugiej (licząc od dołu osi) liczby. Skok wartości będzie określony jako różnica między wpisaną wartością a wartością minimalną (np. wpisując liczbę 80 określimy skok wartości na 5 z poprzedniego 2,5). Opis skali 1. W celu wyświetlenia legendy Scale Legend należy z menu kontekstowego Visible Items wykresu wybrać polecenie Scale Legend. Widok obiektu Scale Legend został przedstawiony na poniższym rysunku. 1– 2– 3– 4– 5– 6– X-axis Y-axis Scale Labels Scale Look Button Autoscale Button Scale Format Button Wiersz legendy dotyczący osi X Wiersz legendy dotyczący osi Y Etykiety osi X i Y Włączanie/wyłączanie autoformatowania skali Przycisk autoskalowania (w chwili kliknięcia) Wyświelenie menu formatowania 2. Uruchom program i sprawdź możliwości poszczególnych funkcji umieszczonych w obiekcie Scale Legend wyświetlacza wykresów. Programowanie w języku G strona 9 10 Opis przebiegów 1. Jeśli opis przebiegów /legenda wykresu (Plot Legend) nie jest wyświetlona na panelu czołowym nad wykresem należy w menu kontekstowym Visible Items zaznaczyć opcję Plot Legend. 2. Aby wyświetlić informacje o obu wyświetlanych wykresach należy „rozciągnąć” obszar Plot Legend, aż ukaże się informacja o drugim przebiegu. 3. W celu zmiany nazw poszczególnych przebiegów należy dwukrotnie kliknąć lewy przycisk myszki w obszarze nazwy przebiegu i wprowadzić nową nazwę (np. zamiast nazwy Plot 1 wpisać Current Temp lub np. Aktualna temperatura, a zamiast nazwy Plot 0 wpisać Running Avg. lub Średnia bieżąca). Paleta wykresu 1. Dodatkowym dostępnym elementem jest paleta wykresu (graph palette). Jeśli paleta nie jest wyświetlona na panelu czołowym, to należy w menu kontekstowym Visible Items zaznaczyć opcję Graph Palette. Paleta wykresu umożliwiającą dokonywanie zmian w oknie wyświetlanych przebiegów można umieścić w dowolnym miejscu okna panelu czołowego. Widok obiektu Graph Palette został przedstawiony na poniższym rysunku. 1– 2– 3– 4– Cursor Movement Tool Zoom Button Panning Tool Zoom Pull-down Menu Wybór trybu wskazywania (lub powrotu do trybu wskazywania) Powiększenie (rozwijanie menu) Przesuwanie przebiegów na wykresie Rozwinięte menu powiększania przebiegów Uruchomienie programu _______________________________________________________________ 1. Uaktywnij okno panelu czołowego. 2. Uruchom stworzony pogram i sprawdź możliwości poszczególnych funkcji wprowadzonych do wykresu. 3. Zapisz zmodyfikowany projekt na dysku pod istniejącą nazwą. Opracowane na podstawie: LabVIEW 7 Express Basics Interactive Training CD. National Instruments 2003. LabVIEW Basics I. Introduction Course Manual. National Instruments 2002. Programowanie w języku G strona 10