Pliki dołączone do zasobu:

LabView_przyklad.zip


Opis zasobu:

W LabView programuje się używając języka graficznego. W zasadzie rysujemy program. W tym przypadku również zaprezentowany przykład ma pokazać raczej metodykę tworzenia programu, niż nauczyć samego programowania.

Tworzymy nowy projekt w LabView (blank.vi). Pojawiają się dwa panele. Panel z kratką (podziałką) będzie zawierał elementy interfejsu graficznego, panel z białym tłem będzie zawierał nasz program (rys. 6.4).

Napiszemy program, który policzy i wyświetli na wykresie widma amplitudowe sygnałów sinusoidalnego, prostokątnego, trójkątnego i piłokształtnego. Zacznijmy od interfejsu użytkownika. Będą potrzebne dwa wykresy. Jeden będzie przedstawiał sygnał, a drugi jego widmo. Wstawmy te wykresy klikając lewym przyciskiem myszy na panelu interfejsu i wybierając dwa razy element Graph -> WaveformGraph (rys. 6.4).

 

Rys. 6.4 Okna programu i interfejsu użytkownika

Zauważmy, że odpowiedni kod programu (ikony) pojawia się z drugim okienku. Przejdźmy teraz do okna programu. Chcielibyśmy wygenerować sygnały sinusoidalny, prostokątny, trójkątny i piłokształtny. Skorzystamy z bloku Basic function Generator.vi. Po kliknięciu lewym przyciskiem myszy w okienku programu wybieramy opcje Programming -> Waveform -> Analog Waveform -> Waweform Generation i wybieramy blok Basic function Generator (rys. 6.5).  Można też wpisać w pole search nazwę funkcji czyli basic function generator. Przeciągamy odpowiednią ikonę na panel programu. Z każdym elementem związana jest pomoc kontekstowa (polecenie Help -> Show Context Help). Najeżdżając myszką na ikonę generatora funkcji otrzymujemy opis wprowadzeń i wyprowadzeń (zmiennych). Każdy kolor oznacza inny typ zmiennej. Łączymy narzędziem szpulka wyjście generatora (Signal Out) z wejściem pierwszego wykresu. Chcielibyśmy też mieć kontrolę nad generowanym sygnałem. W tym celu tworzymy odpowiednie pola do wprowadzania zmiennych. Wybieramy wejście Amplitude (musi migać) następnie klikamy na nim prawym przyciskiem myszy i wybieramy opcję Create Control. Pojawi się ikona kontrolki i odpowiednie pole na panelu interfejsu użytkownika. Analogicznie robimy dla wejść generatora sygnałów Frequency i Offset. Powstałe na interfejsie użytkownika elementy można dowolnie rozmieszczać i skalować. Utwórzmy jeszcze kontrolkę dla wejścia generatora Sampling info. Kontrolka umożliwia wpisanie częstotliwości próbkowania i liczby próbek generowanego sygnału. Oba te parametry są połączone w jedną zmienną.  Dotychczas stworzony kod programu jest przedstawiony na rys. 6.6.

 

Rys. 6.5 Okno programu i sposób wybierania elementów programu

 

Rys. 6.6 Program generujący sygnał

 

Program można już uruchomić. Program uruchamiamy klikając ikonę strzałki pod menu głównym środowiska LabView. Można również zmieniać parametry generowanego sygnału wpisując różne liczby w odpowiednie pola. Za każdym razem program uruchamia się jednokrotnie i kończy działanie. Nie jest to wygodne. Zastosujmy pętlę while (wybieramy Programing Structures -> While loop). Przeciągamy pętlę do okna programu i otaczamy nią wszystkie elementy programu. Do czerwonej ikonki na dole pętli tworzymy kontrolkę (podobnie jak poprzednio klikamy prawym przyciskiem myszy na ikonce i wybieramy opcję Create Control). Powstaje kontrolka stop i jej odpowiednik na interfejsie użytkownika. Jest to warunek zakończenia działania pętli i tym samym całego programu. Jak naciśniemy przycisk stop program zakończy działanie. Pętle są wykonywane z maksymalną szybkością. Niepotrzebnie zużywa to moc komputera. Możemy uruchamiać pętlę co jakiś czas. Służy do tego funkcja Wait() (wybieramy Programing -> Timing -> Wait).  Na wejściu bloku Wait() miliseconds to wait tworzymy stałą (klikamy prawym przyciskiem myszy i wybieramy opcję Create -> Constant, następnie zamieniamy 0 na 500.  Pętla będzie uruchamiana co 500 ms. Kod stworzonego programu zaprezentowany jest na rys. 6.8. Teraz program działa w pętli. Uruchamiamy go raz. Aby wyjść z programu należy wcisnąć przycisk STOP.

 

Rys. 6.7 Wynik działania programu zaprezentowanego na rysunku 6.6

 

Rys. 6.8 Kod programu z dodaną pętlą while

Do tej pory wyświetlany był tylko jeden typ sygnału – sinusoida. Wróćmy do ikony generatora w programie i utwórzmy jeszcze jedną kontrolkę wyboru typu sygnału (klikamy prawym przyciskiem myszy na wejściu generatora sygnałów signal type i wybieramy opcję Creare control). Pojawia się jeszcze jedna kontrolka. Na interfejsie użytkownika dostajemy pole wyboru, z którego możemy wybrać typ sygnału (rys. 6.9). Ikony programu można w każdej chwili automatycznie uporządkować wciskając sekwencję Ctrl-u z klawiatury komputera. W zasadzie mamy już wszystkie elementy dotyczące generacji sygnału.

Przejdźmy teraz do policzenia widma sygnału. Wykorzystamy do tego celu blok Amplitude and Phase Spectrum (w oknie program wybieramy Signal Processing -> Spectral Analysis i blok Amplitude and Phase Spectrum). Łączymy wejście bloku Amplitude and Phase Spectrum z wyjściem generatora sygnałów, a następnie wyjście bloku Amplitude and Phase Spectrum (Mag. Spectrum) z wejściem drugiego wykresu z użyciem narzędzia szpulka (rys. 6.10). Po uruchomieniu programu mamy już widmo sygnału (rys. 6.11).

 

Rys. 6.10 Program z dołączonym blokiem do liczenia widma

 

Rys. 6.11 Interfejs użytkownika w policzonym widmem

 

Warto dokonać jeszcze kilku rzeczy. Po pierwsze należy zoptymalizować rozkład wykresów i kontrolek. Można też pozmieniać opisy kontrolek, przycisków i wykresów. W tym celu należy kliknąć myszką na odpowiedni napis i go po prostu zmienić. Generalnie z każdym elementem interfejsu graficznego jest związany panel Properties (klikamy prawym przyciskiem myszy na elemencie i wybieramy ostatnią opcję Properties). Poprzez Properties można dostosować do swoich potrzeb niemal każdy aspekt danego elementu. Po zmianach panel może wyglądać np. tak jak na rys. 6.12. Można zauważyć, że  inaczej niż poprzednio wygląda pole wyboru sygnału. Sposób wyświetlania tego (i innych) elementów można łatwo zmieniać. W tym celu klikamy prawym przyciskiem myszy na konkretnym elemencie i wybieramy opcję Replace i następnie element, na który chcemy zmienić obecny (w tym przypadku zamiana nastąpiła na element typu Knob).

Pozostaje jeszcze jedna rzecz, którą należy oprogramować, a mianowicie skalowanie osi wykresu widma. Jeśli zmieni się parametry analizy sygnału widmo nie będzie poprawnie wyskalowane. Dzieje się tak dlatego, że widmo jest wykreślane w funkcji indeksu próbki. Natomiast odległość między próbkami powinna wynosić df=częstotliwość próbkowania/liczba próbek. Odległość taką można co prawda ustawić w Properties wykresu. Problem w tym, że będzie się ona zmieniała wraz ze zmianą parametrów analizy sygnału. Można ten problem rozwiązać wyciągając odpowiednią właściwość wykresu na panel programu. W tym celu klikamy prawym przyciskiem myszy na wykresie i wybieramy Create –> Property Node –> X Scale –> Offset and Multiplyer –> Multiplier. Pojawi się ikonka jak na Rys 6.13. Klikamy na nią prawym przyciskiem myszy i wybieramy opcję Change to Write. Teraz możemy doprowadzić do niej właściwy współczynnik df. Musimy go policzyć. Problemem jest to, że parametry częstotliwość próbkowania i liczba próbek są połączone w jedną zmienną. Trzeba je najpierw rozdzielić. Służy do tego blok Unbundle (w okienku programu wybieramy Programming –> Cluster, Class & Variant i blok Unbundle). Do bloku doprowadzamy zmienną sampling info (przy użyciu narzędzia szpulka) jak na rys. 6.14. Doprowadzamy zmienne częstotliwość próbkowania i liczba próbek do bloku dzielenia (Programming –> Numeric -> Divide) i wyjście bloku do kontrolki właściwości wykresu widma (rys. 6.14). Ta operacja kończy program.

 

Rys. 6.12 Interfejs użytkownika po zmianach nazw domyślnych i optymalizacji położenia kontrolek

 

 

Rys. 6.13 Ikona właściwości wykresu

 

Rys. 6.14 Skalowanie osi wykresu widma i jednocześnie kompletny program analizatora widma

 

Ostatnia modyfikacja: środa, 17 listopada 2021, 12:04