Wykresy X-Y w LabView.
Spis
treści:
1. Budowa
danych dla obiektu XY
Graph.
2. Kreślenie
wykresu po zgromadzeniu danych
XY.
3. Kreślenie
wykresu równolegle z zbieraniem danych XY
charakterystyk.
3.1. Kreślenie
pojedynczej charakterystyki (Single
Plot).
3.2. Kreślenie
kilku jednocześnie mierzonych charakterystyk (Multi
Plot).
3.3. Kreślenie
kilku kolejno mierzonych charakterystyk (Multi
Plot).
3.4. Kreślenie
bieżące charakterystyki z zastosowaniem bufora okrężnego (Single
Plot).
4. Inne
sposoby uzyskania wykresów - wykres wektorowy (Polar
Plot).
5. Zerowanie
wykresów.
1.Budowa danych dla obiektu XY Graph.
Środowisko LabView posiada szereg różnych możliwości graficznej prezentacji danych. Prezentację danych w przestrzeni kartezjańskiej X-Y zapewnia obiekt prezentacyjny pulpitu XY Graph. Jego port wejściowy z diagramu przyjmuje złożone typy danych na podstawie, których są kreślone wykresy (pojedynczy lub cała rodzina). Dane dla pojedynczego wykresu muszą być przekazane w postaci tablicy z współrzędnymi kolejnych punktów lub w postaci dwóch tablic zawierających odpowiednio współrzędne x i y (tablica 1).
Tabela 1: Budowa danych przekazywanych do obiektu XY Graph.
Sposób prezentacji punktów | Typ wykresu | Budowa danej |
Zbiór koordynat punktów (x,y). | Single Plot | { Tablica
jednowymiarowa struktur: { Każda struktura jest koordynatą punktu i składa się z dwóch pól: { x } i { y } } } |
Zbiór koordynat punktów (x,y). | Multi Plot | { Tablica
jednowymiarowa struktur: { Każda jej struktura reprezentuje jeden wykres i zawiera jednowymiarową tablicę struktur : { Każda struktura tej tablicy jest koordynatą punktu i składa się z dwóch pól: { x } i { y } } } } |
Osobne zbiory
współrzędnych x i y punktów. |
Single Plot | { Struktura złożona z
dwóch pól: { Tablicy jednowymiarowej z współrzędnymi x } { Tablicy jednowymiarowej z współrzędnymi y } } |
Osobne zbiory
współrzędnych x i y punktów. |
Multi Plot | { Tablica
jednowymiarowa struktur: { Każda jej struktura reprezentuje jeden wykres i jest złożona z dwóch pól: { Tablicy jednowymiarowej z współrzędnymi x } { Tablicy jednowymiarowej z współrzędnymi y } } } |
Rys.1.Graficzna
prezentacja budowy danych dla obiektu XY Graph.
Kreślenie wykresu wymaga wyprodukowania danych w wymaganym przez obiekt prezentacyjny formacie (Tablica 1, rys.1). Rodzaj budowy danych dostarczanych do obiektu XY Graph zależy od preferencji projektanta oraz konkretnej sytuacji projektowej.
2.Kreślenie wykresu po zgromadzeniu danych XY.
Dane mają postać tablic. Domyślnie wykres jest tworzony po opracowaniu danych XY. Typową prezentację pojedynczej charakterystyki pokazuje rys.2. Dane XY są produkowane wewnątrz pętli For. Pierwszy sposób polega na utworzeniu osobnych tablic dla współrzędnej X i Y. Realizują to automatycznie wyjścia pętli For z autoindeksacją. Węzeł 1 (Bundle) umieszczony na zewnątrz pętli buduje strukturę złożoną z dwóch pól zawierających tablice współrzędnych x i y. Daną o takiej budowie można wprowadzić do terminala obiektu XY Graph. Drugi sposób polega na zbudowaniu dla każdego punktu koordynaty w postaci struktury z polami zawierającymi dane X i Y. Realizuje to węzeł 2 (Bundle). Tablicę koordynat buduje automatycznie trzecie wyjście z autoindeksacją pętli For.
Rys.2.Metody kreowania
danych w wypadku pojedynczych wykresów (Single Plot).
Kreślenie kilku wykresów na wspólnym obiekcie prezentacyjnym ilustruje rys.3. Wewnętrzna pętla For produkuje dane XY jednej charakterystyki. Pętla zewnętrzna powtarza operację dla innych danych wejściowych. W rezultacie zostają wytworzone trzy zestawy danych XY stanowiących trzy osobne charakterystyki. Podobnie jak poprzednio są dostępne dwa sposoby uzyskania wymaganej postaci danych przekazywanych do terminala obiektu prezentacyjnego XY Graph. Zgodnie z pierwszym sposobem, każde wykonanie pętli wewnętrznej kończy się zbudowaniem przez węzeł 1 struktury zawierającej dane jednej charakterystyki. Wyprowadzenie tej danej przez wyjście z autoindeksacją pętli zewnętrznej produkuje tablicę struktur. Każde pole tej tablicy tworzy jeden wykres w obiekcie XY Graph.
Rys.3.Metody kreowania
danych w wypadku kilku wykresów (Multi Plot).
Drugi sposób wymaga wytworzenia z tablicy koordynat uzyskanych w wyniku działania pętli wewnętrznej (węzeł 2 i wyjście z autoindeksacją) struktury z jednym polem w postaci uzyskanej tablicy. Realizuje to węzeł 3 (Bundle). Drugie wyjście pętli zewnętrznej For tworzy tablicę takich struktur. Każdy element tej tablicy dotyczy odrębnej charakterystyki. Wyniki działania obu przykładowych programów pokazuje rys.4. Niezależnie od wybranego sposobu utworzenia danych wizualna postać charakterystyk na XY Graph i XY Graph2 jest identyczna.
Rys.4.Forma
prezentacji danych aplikacji z rys2 i 3.
3.Kreślenie wykresu równolegle z zbieraniem danych XY charakterystyk.
W aplikacjach pomiarowych można z powodzeniem stosować przedstawione metody tworzenia danych dla wykresów szczególnie, gdy proces akwizycji danych jest szybki i obserwacja postępu pomiaru charakterystyki jest zbyteczna. Dane są gromadzone szybko a żądaną postać końcową wymaganą przez obiekty XY Graph uzyskują po wykonaniu części pomiarowej aplikacji. W sytuacji, gdy gromadzenie danych jest stosunkowo wolne, bieżąca prezentacja graficzna ma istotne zalety:
Kreowanie wykresu na bieżąco jest nieco trudniejsze z powodu konieczności modyfikacji danych tablicowych przekazywanych do obiektu XY Graph w każdym obiegu pętli realizującej pomiar charakterystyki. Modyfikacja polega na kumulowaniu kolejnych punktów mierzonej charakterystyki w tablicy i przekazywaniu jej do obiektu XY Graph. Nowe dane kasują poprzedni wykres i tworzą nowy. Takie postępowanie wprowadza dodatkowe narzuty czasowe i jest uzasadnione tylko w sytuacji powolnej akwizycji danych podyktowanej mała szybkością działania urządzeń pomiarowych.
W dalszych przykładach założono wykorzystanie pętli While do pomiaru charakterystyk. Jej zaletą w stosunku do pętli For jest możliwość uwzględnienia dodatkowych warunków przerwania jej działania, np. na życzenie użytkownika, z powodu błędu wykonania pewnej operacji itp. Wadą są większe koszty czasowe operacji na tablicach wynikające z konieczności ciągłej realokacji obszarów pamięci przeznaczonych na takie dane. Przy założeniu powolnej akwizycji wspomniane niedogodności nie odgrywają jednak istotnej roli.
3.1.Kreślenie pojedynczej charakterystyki (Single Plot).
Przykład akwizycji danych z jednoczesnym kreśleniem charakterystyki przedstawia rys.5 (Single Plot). Kumulację danych uzyskiwanych w kolejnych iteracjach pętli wykonuje subVI o budowie pokazanej na rys.6. Jego działanie opiera się na dołączaniu kolejnych danych (Cluster XY) do aktualnej zawartości obiektu 'Array out' stanowiącego wyjście subVI. Każda iteracja realokuje pamięć rozszerzając obszar o jeden dołączany element i wpisuje w to miejsce nowy Cluster XY.
Rys.5.Pętla akwizycji
danych z bieżącym kreśleniem charakterystyki.
Diagram SubVI zawiera konstrukcję Case z dwoma ramkami o budowie przedstawionej na rys.6. Działa następująco:
Wejście Cluster XY wprowadza strukturę z nową koordynatą punktu charakterystyki.
Wejście Clear wprowadza numer iteracji, który wybiera jeden z wariantów działania subVI.
Ramka Case dla warunku '..0' (pierwsza iteracja) inicjalizuje tablicę 'Array out' pierwszą dostarczoną daną. Węzeł 1 (Build Array z jednym wejściem) tworzy jednoelementową tablicę z daną z wejścia Cluster XY. Wyjście 'Array out' jest teraz jednoelementową tablicą zawierającą w polu o indeksie 0 strukturę z koordynatą pierwszego punktu charakterystyki.
Ramka Case dla warunku '1..' (kolejne iteracje) dodaje do aktualnej zawartości tablicy nową daną Cluster XY. Do węzła 2 (Build Array z dwoma wejściami) jest doprowadzona dotychczasowa zawartość tablicy uzyskana z zmiennej lokalnej związanej z obiektem 'Array out' oraz nowa dana Cluster XY. Węzeł rozszerza tablicę i na ostatnie miejsce wpisuje nową daną.
Rys.6.Budowa subVI
akumulującego dane.
Przedstawiony subVI korzysta z zaalokowanego obszaru pamięci dla tablicy (obiekt wskaźnikowy pulpitu subVI) oraz zmiennej lokalnej z nim skojarzonej. W wypadku zastosowania kilku instancji takiego subVI w projektowanej aplikacji (rys.7), każda z nich korzysta z tego samego obszaru pamięci co prowadzi do błędnej prezentacji graficznej uzyskanych danych. Oba wykresy XY Graph oraz XY Graph2 wyglądają identycznie i są błędne. W rzeczywistości wierzchołki dolne są punktami, które powinny znaleźć się na wykresie XY Graph a górne na wykresie XY Graph2. Aby uniknąć takiej sytuacji należy skonfigurować opcję wykonawczą subVI do pracy na rozdzielnych obszarach pamięci dla każdej jego instancji (VI Properties: - Category:Execution - zaznaczyć opcję Reentrant Execution).
Rys.7.Błędny wykres
spowodowany złą konfiguracją subVI.
3.2.Kreślenie kilku jednocześnie mierzonych charakterystyk (Multi Plot).
Aplikacja mierzy równolegle kilka parametrów np. moduł i przesunięcie fazowe transmitancji obiektu w funkcji częstotliwości. Obie charakterystyki mogą być przedstawione na jednym wykresie (rys.8). Jest to możliwe, jeśli dane każdej charakterystyki zostaną zgromadzone w osobnej strukturze, której polem jest tablica struktur z koordynatami jej punktów. Tablica takich struktur może być przekazana do obiektu prezentacyjnego XY Graph, który wykreśli każdą z nich w postaci osobnej krzywej (rys.1 - MultiPlot - Koordynaty X, Y).
Do kumulacji danych produkowanych w iteracjach pętli (rys.8) zastosowano podobną technikę do poprzednio zaprezentowanej. Realizuje to subVI Real Multi Plot pozwalający gromadzić dane dla dowolnej liczby osobnych charakterystyk (krzywych). Dane wejściowe muszą mieć postać tablicy struktur (Cluster) z koordynatami punktu, aby można łatwo zbudować ogólny algorytm gromadzenia i wytworzenia danych wyjściowych o żądanej budowie. Tablicę (tutaj dwuelementową) koordynat buduje węzeł Build Array. Rozmiar tej tablicy decyduje o liczbie kreślonych krzywych.
Rys.8.Przykład
kreślenia dwóch charakterystyk w trybie Multi Plot.
Diagram subVI Real Multi Plot zawiera konstrukcję Case z dwoma ramkami o budowie przedstawionej na rys.9. Działa następująco:
Wejście 'Array in' wprowadza tablicę struktur z nowymi koordynatami punktów charakterystyk.
Wejście Clear wprowadza numer iteracji, który wybiera jeden z wariantów działania subVI.
Ramka Case dla warunku '..0' (pierwsza iteracja) inicjalizuje tablicę 'Array out' pierwszą dostarczoną daną. Pętla For wykonuje liczbę iteracji określoną pojemnością tablicy 'Array in'. I-ta iteracja pętli otrzymuje i-tą strukturę tablicy wejściowej, z której buduje jednoelementową tablicę (węzeł 1 - Build Array) a następnie strukturę (węzeł 2 - Bundle) z polem będącym tablicą koordynat i-tej charakterystyki. Wyjście z autoindeksacją pętli For tworzy automatycznie tablicę struktur. Wyjście 'Array out' jest teraz tablicą o rozmiarze wynikającym z rozmiaru tablicy wejściowej i każdy jej element zawiera koordynatę pierwszego punktu charakterystyki.
Rys.9.Budowa subVI
kumulującego dane dla kilku charakterystyk (Multi Plot).
Ramka Case dla warunku '1..' (kolejne iteracje) dodaje do aktualnej zawartości tablicy nowe dane - każdy element tablicy wyjściowej otrzymuje nową koordynatę. Liczba iteracji pętli For jest określona pojemnością tablicy wejściowej. Każda iteracja pętli dostaje elementy tablicy wejściowej oraz tablicy wyjściowej. Aktualna zawartość tablicy wyjściowej jest udostępniona przez zmienną lokalną związaną z obiektem 'Array out'. Operacja dołączenia nowej koordynaty dla każdej charakterystyki przebiega według schematu:
Węzeł 3 (Unbundle) dostarcza pole i-tej struktury tablicy wyjściowej. Jest to tablica struktur zawierających koordynaty punktów i-tej charakterystyki.
Węzeł 4 (Build Array) dołącza nową koordynatę (i-tą) z tablicy wejściowej do aktualnej zawartości tablicy koordynat i-tej charakterystyki. Węzeł rozszerza tablicę i na ostatnie miejsce wpisuje nową daną.
Węzeł 5 (Bundle) buduje strukturę z tablicą koordynat i-tej charakterystyki.
Wyjście z autoindeksacją buduje tablicę struktur zawierających uaktualnione dane wszystkich charakterystyk.
SubVI Real Multi Plot można zastosować do kreślenia pojedynczej charakterystyki realizowanej w aplikacji z rys.5 jeśli ze struktury z koordynatą punktu utworzy się jednoelementową tablicę struktur. Tak utworzoną daną można wprowadzić do wejścia 'Array in' subVI Real Multi Plot.
3.3.Kreślenie kilku kolejno mierzonych charakterystyk (Multi Plot).
Inne warunki kumulacji danych dla wykresu występują w aplikacji, która tworzy rodzinę charakterystyk, ale są one budowane szeregowo, jedna po drugiej (rys.10), np. pomiary rodziny charakterystyk Ice=f(Uce) przy różnych prądach bazy tranzystora. Można zastosować technikę sukcesywnego rozszerzania zawartości tablicy wyjściowej z tym, że składana jest jedna charakterystyka i dopiero po jej skompletowaniu jest kreowany następny element tablicy i w nim są kumulowane koordynaty następnej charakterystyki. SubVI realizujący taką kumulację danych potrzebuje dodatkowej informacji określającej rozpoczęcie tworzenia nowej, kolejnej charakterystyki.
|
|
Aplikacja z rys.10 tworzy rodzinę charakterystyk w sposób szeregowy. Każdą z nich buduje pętla wewnętrzna. Wprowadzono do niej dodatkowy, przykładowy warunek zakończenia. Pętla kończy działanie, gdy wartość współrzędnej Y przekroczy wartość 4.0 (np. przekroczenie dopuszczalnej mocy badanego tranzystora). Pętla zewnętrzna decyduje o liczbie charakterystyk (np. pomiary przy pięciu wartościach prądu bazy).
Do kumulacji danych wykorzystano subVI Real Ser. MPlot, który posiada trzy wejścia (rys.12):
Działanie subVI:
Rys.12.Budowa subVI
kumulującego dane dla kilku charakterystyk realizowanych szeregowo.
3.4.Kreślenie bieżące charakterystyki z zastosowaniem bufora okrężnego (Single Plot).
Przedstawione dotąd subVI akumulują dane do wykresu wykorzystując realokację obszaru pamięci przeznaczonego na dane wyjściowe. Można to uznać za cechę negatywną. Dalej przedstawione rozwiązanie korzysta z stałego obszaru pamięci o zadeklarowanej pojemności i alokowanego w momencie rozpoczęcia pracy. Dodatkowo obszar ten jest buforem okrężnym i po wypełnieniu przechowuje N ostatnich punktów charakterystyki (N - zadeklarowana pojemność bufora). Ta cecha może być bardzo przydatna w warunkach monitorowania pewnego procesu, kiedy istotne są ostatnie wyniki a nie wszystkie uzyskane podczas działania aplikacji. Nie przeszkadza to w tworzeniu pełnych charakterystyk. Trzeba tylko zadeklarować pojemność bufora większą od liczby punktów całej charakterystyki.
SubVI posiada trzy wejścia (rys.13):
Rys.13.Kumulacja
punktów z zastosowaniem bufora okrężnego (Single Plot).
Istotną rolę w działaniu przedstawionego subVI pełni pętla While z wejściem i wyjściem ustawionym do pracy z autoindeksacją. Zapewnia to pracę na stałym obszarze pamięci, jeśli nie zmieni się stan wejścia 'Length'. Działanie diagramu :
Wejście Clear w stanie True - Pętla While wykonuje liczbę iteracji określoną pojemnością bufora (Length). Jednocześnie wypełnia wszystkie komórki bufora koordynatą z wejścia 'New Point'. W ten sposób bufor zostaje wyzerowany i wpisana jest do niego pierwsza dana (w rzeczywistości wszystkie komórki zawierają tę samą daną).
Wejście Length otrzymuje wartość różną od aktualnej długości bufora. Wykonywana jest podobna operacja jak dla zerowania, ale pojemność bufora zostaje zmodyfikowana (zwiększona lub zmniejszona). Wejście z autoindeksacją nie wpływa na liczbę iteracji pętli While.
Stan wejścia Length odpowiada aktualnej pojemności bufora a Clear dostaje wartość False. Odpowiada to sytuacji akumulacji danych (dodanie nowego, kolejnego punktu). Wykonywana jest ramka False konstrukcji Case, czyli przeniesienie aktualnej zawartości bufora pobranej z zmiennej lokalnej związanej z obiektem XY Chart Data do wejścia węzła (Replace Array Subset) zastępującego element o indeksie 0 daną z wejścia 'New Point'.
Operacja zastąpienia odbywa się we wszystkich przedstawionych sytuacjach. Dalsze działania są istotne tylko w sytuacji dodania nowego, kolejnego punktu charakterystyki. Nowy punkt jest wstawiany na pozycję zerową. Dana z pozycji zerowej (najstarsza) jest usunięta. Węzeł Rotate 1D Array przesuwa zawartość bufora o jedną pozycję w lewo i jednocześnie przenosi nową daną na pozycję ostatnią. Od momentu, gdy liczba akumulowanych danych osiągnie pojemność bufora przechowuje on zbiór ostatnich punktów charakterystyki.
4.Inne sposoby uzyskania wykresów - wykres wektorowy (Polar Plot).
Graph XY jest obiektem, z którym użytkownik może interaktywnie współdziałać. Możliwe jest używanie kursorów, przesuwanie obrazu, zoomowanie, zmiana skal itp. LabView dysponuje też innymi, mniej wyrafinowanymi sposobami graficznej prezentacji danych na płaszczyźnie X-Y, który polega na wytworzeniu na podstawie dostarczonych danych statycznego obrazu w postaci bitmapy. Tak utworzony obraz może być przekazany do obiektu pulpitu Picture.clt, który prezentuje otrzymany obraz.
SubVI dostarczające takich możliwości znajdują się w grupie funkcji Picture Plots (obrazy wykresów). Użytkownik ma do dyspozycji szereg funkcji pozwalających prezentować dane w postaci specyficznych wykresów, np. polarnego lub Smitha (rys.14). Funkcje te są firmowymi podprogramami subVI dołączonymi do środowiska projektowego. Można poznać budowę ich diagramów i ewentualnie zbudować własne wersje uwzględniające indywidualne potrzeby.
Rys.14.Zestaw funkcji
tworzących obrazy wykresów.
Funkcje tej grupy przyjmują dane charakterystyk, w których punkt jest reprezentowany strukturą z jego koordynatą (rys.1). W zależności od typu wykresu koordynata jest parą współrzędnych XY (Plot XY.vi) lub składa się z modułu i kąta (Polar Plot.vi) względnie wartości rzeczywistej i urojonej (Smith Plot.vi). Dodatkowo można funkcji dodać cały szereg innych danych określających parametry tworzonego obrazu (rys.15). Dane te są opcjonalne i jeśli nie zostaną doprowadzone obraz jest tworzony dla ustawień domyślnych. Wejścia te pozwalają określić rozmiary obrazu, sposób skalowania, kolory itp. (rys.16).
|
|
Wykres wektorowy (polarny, biegunowy) jest przydatny między innymi do prezentacji charakterystyk częstotliwościowych transmitancji filtrów (moduł transmitancji, przesunięcie fazowe). Niżej pokazano sposoby wykorzystania węzła Polar Plot do uzyskania wykresu wektorowego prezentującego wyniki na bieżąco oraz po zgromadzeniu wszystkich danych.
|
|
Prezentację bieżącą uzyskano dzięki akumulacji danych za pomocą subVI Real One Plot opisanego wcześniej. Kreślenie kilku charakterystyk uzyskuje się przez kaskadowe połączenie kilku węzłów Polar Plot przekazujących sobie kolejno obraz. Każdy z węzłów dokłada jeden wykres. Wszystkie te węzły muszą być identycznie skonfigurowane w zakresie rozmiarów obrazu, skalowania, rodzaju skali itp. Nie ma możliwości autoskalowania. Konfiguracja węzłów musi być dostosowana do wartości uzyskiwanych danych. Obraz z dwoma charakterystykami uzyskanymi w przykładzie z rys.17 pokazuje rys.18.
5. Zerowanie wykresów.
Rys.19.Zerowanie
wykresu.
Nowe dane przekazane do wykresu automatycznie kasują aktualną zawartość i wykreślają nowe charakterystyki. Na tej samej zasadzie można zerować wykresy. Trzeba przekazać im puste dane do wykreślenia. W tym celu stosuje się zmienne lokalne związane z obiektami prezentacyjnymi i wpisuje się do nich puste dane odpowiedniego typu (rys.19). Prymitywne, niezależne diagramy zerujące wykonują się natychmiast równocześnie z rozpoczęciem działania pętli produkującej dane. Dzięki temu plansze wykresów pozostają puste aż do momentu zakończenia działania pętli, wskazując tym samym, że proces akwizycji danych jeszcze trwa. W podobny sposób można zerować obrazy wykresów.
15 grudzień 2003 r. | opr. dr inż. Bogdan Kasprzak |
![]() |
![]() |