1
Podstawy programowania w środowisku LabVIEW,
projekt oscyloskopu cyfrowego
Celem ćwiczenia jest doskonalenie umiejętności tworzenia typowych aplikacji w środowisku
LabVIEW na przykładzie projektu witrualnego oscyloskopu cyfrowego. Podstawą sprzętową
wspomnianego przyrządu jest karta akwizycji sygnałów PCI DAS-1200 firmy Measurement Com-
puting Corp. Jest to 16 kanałowa karta pomiarowa wyposażona w 12 bitowy przetwornik A/C o
maksymalnej częstotliwości próbkowania 330kHz, dwa 12 bitowe przetwornik C/A, 3 liczniki oraz
24 cyfrowe we/wy. Programowa obsługa funkcji sprzętowych karty odbywa się poprzez wywołania
odpowiednich funkcji zapisanych w bibliotece dynamicznej DLL . Dostępna jest również biblioteka
takich funkcji dla środowiska LabVIEW. Funkcje te są znajdują się w palecie Functions Pallete
jako grupa o nazwie Universal Library.
Oscyloskop cyfrowy działa na zasadzie cyklicznej rejestracji w zadanym czasie stałej liczby
próbek sygnału i wyświetlaniu ich na ekranie. Dlatego podstawą projektowanego oscyloskopu po-
winna być funkcja pozwalająca na rejestrację z zadaną częstotliwością zadanej liczby próbek. Jedną
z takich funkcji dla karty DAS-1200 jest AInScFg (rys.1) z grupy Analog Input.
Rys.1. Parametry funkcji AInScFg
Jest to funkcja dokonująca rejestracji „Count” próbek z częstotliwością „Rate” na wejściach analo-
gowych o numerach od „LowChan” do „HighChan” z karty pomiarowej o numerze podanej w „Bo-
ardNum”. Zakres pomiarowy napięć podawany jest jako „Range”. Przy pomocy parametru
„Options” można sterować trybem realizacji funkcji AInScFg (m.in. sposobem wyzwalania reje-
stracji i przesyłania danych do pamięci). Wyjściowy parametr „ADData” jest tablicą z zarejestro-
wanymi próbkami. Natomiast wyjście „ErrCode” służy do sygnalizowania poprawności przetwa-
rzania i ewentualnych przyczyn błędnego działania. Wyjściowa wartość „Rate” jest rzeczywistą
częstotliwością próbkowania.
Część praktyczna
Po uruchomieniu programu LabVIEW rozpoczynamy tworzenie programu od wyboru nowego in-
strumentu „New VI” (możemy również rozpocząć pracę nad nowym projektem wybierając z menu
„File” opcję „New VI”). Pojawi się wówczas na ekranie pusty panel użytkownika.
2
1.
Na panelu użytkownika w pierwszej kolejności umieszczamy elementy pozwalające na wybór
numeru karty pomiarowej oraz numeru kanału wejściowego. W tym celu poleceniem „Show
Controls Pallete” wybranym z menu „Windows”, otwieramy okno „Controlls Pallete”, w któ-
rym wybieramy grupę „Numeric” a w niej z kolei wybieramy (klikając myszką) „Digital Con-
trol”. Następnie przesuwamy kursor do panelu użytkownika i ponownie klikając myszką wsta-
wiamy wybrany element. Następnie możemy od razu wprowadzić z klawiatury właściwą jego
nazwę: „Nr karty”. Identycznie postępujemy aby umieścić na panelu użytkownika następną
kontrolkę: „Nr kanału” (ponieważ projektowany oscyloskop ma umożliwić obserwację tylko
jednego sygnału – dlatego do wyboru kanału wejściowego wystarczy nam ta jedna kontrolka).
Trzecim niezbędnym parametrem wejściowym funkcji AInScFg jest liczba rejestrowanych pró-
bek „Count” – dlatego umieszczamy na panelu użytkownika jeszcze jedną kontrolkę „Liczba
próbek”, co pozwoli nam na sterowanie ilością próbek rejestrowanych w kolejnych cyklach pra-
cy oscyloskopu. Aby oscyloskop mógł prawidłowo pracować „Liczba próbek” oczywiście po-
winna być większa od zera, dlatego dobrze jest nadać jej dodatnią wartość początkową. Powin-
na to być wartość na tyle duża, aby zapewnić wystarczającą rozdzielczość poziomą obrazu (co
najmniej 100 punktów) a zarazem niezbyt duża, żeby oscyloskop w rozsądnym czasie odświeżał
ekran (co najwyżej 1000). W naszym przykładzie może to być 200 próbek.
2.
Kolejny parametrem wejściowym funkcji AInScFg jest częstotliwość próbkowania „Rate”. W
przypadku oscyloskopu zamiast podawania częstotliwości próbkowania, przy pomocy pokrętła
podstawy czasu ustawia się czas trwania pomiaru (tzn. ustalamy ile czasu przypada na jednostkę
długości osi poziomej ekranu np.: 5 ms/cm). W naszym przypadku wygodniejsze będzie okre-
ś
lanie całkowitego czasu trwania fragmentu sygnału wyświetlanego na ekranie w pojedynczym
cyklu pracy oscyloskopu. Dlatego umieszczamy na panelu użytkownika kolejną kontrolkę typu
„Horizontal Pointer Slide” wybraną z grupy „Numeric” i nazywamy ją „Czas obserwacji [ms]”.
Konieczny parametr wejściowy funkcji AInScFg jakim jest częstotliwość próbkowania „Rate”
uzyskamy dzieląc „Liczbę próbek” przez „Czas obserwacji”.
3.
Kolejny krok to umieszczenie w programie funkcji AInScFg. Znajduje się ona podgrupie funk-
cji Analog Input grupy Uniwersal Library. Funkcję AInScFg umieszczamy na prawo od pozo-
stałych elementów na panelu programu. Następnie szpulką łączymy „Nr karty” z wejściem
„BoardNum” funkcji AInScFg, a „Nr kanału” z oboma wejściami „LowChan” i „HighChan”
funkcji AInScFg. Wejście „Count” łączymy z „Liczbą próbek”. Do obliczenia częstotliwości
próbkowania konieczne jest zastosowanie operatora dzielenia, do którego wejścia „x” dołącza-
my „Liczbę próbek” a do wejścia „y” „Czas obserwacji [ms]”. Ponieważ „Czas obserwacji
[ms]” będziemy zadawać w milisekundach, dlatego otrzymany iloraz należy pomnożyć przez
1000 aby otrzymać częstotliwość w hercach a nie w kilohercach. Mnożenie to realizujemy wy-
korzystując operator mnożenia i element „Numeric Constant” o wartości 1000. Wyjście opera-
tora mnożenia możemy teraz połączyć z wejściem „Rate” funkcji AInScFg. Nie obsadzone pa-
rametry wejściowe funkcji AInScFg „Range” i „Options” przyjmą wartości domyślne, które w
naszym przypadku zapewnią poprawną pracę programu. W tym miejscu należy wrócić do pane-
3
lu użytkownika i wpisać odpowiedni zakres nastawiania „Czasu obserwacji [ms]”. Jego wartość
minimalna jest ograniczona maksymalną częstotliwością próbkowania przetwornika A/C, po-
nieważ „Czas obserwacji” musi byś większy od iloczynu „Liczby próbek” i minimalnego okre-
su próbkowania. W naszym przypadku maksymalną częstotliwością próbkowania wynosi 330
kHz i dlatego rejestracja 200 próbek musi trwać co najmniej 0,606 ms. Jeśli próbek będzie 330
to minimalny czas obserwacji wyniesie 1 ms i taką wartość możemy ustawić jako dolny zakres
nastaw „Czasu obserwacji [ms]”. Maksymalny czas obserwacji może być dowolny, ale rozsąd-
nie jest go ograniczyć do co najwyżej kilku sekund (proponujemy 100 ms).
4.
Aby można było w trakcie używania naszego przyrządu rozpoznać ewentualne przyczyny nie-
prawidłowego jego działania, należy obsłużyć wyjście „ErrCode” funkcji AInScFg. W tym celu
do panelu programu wstawiamy funkcję ErrMsg, którą można znaleźć w podgrupie Calibration
and Configuration biblioteki Universal Library. Funkcja ErrMsg zamienia kod błędu na jego
krótki opis. Aby można było przeczytać ten komunikat o błędzie potrzebny nam będzie wskaź-
nik tekstowy „String Indicator”, który z podgrupy „String & Path” wstawiamy do panelu użyt-
kownika. Wskaźnik ten możemy nazwać jako „Błąd”. Następnie wracamy do panelu programu i
łączymy wyjście „ErrCode” funkcji AInScFg z wejściem „ErrCode” funkcji ErrMsg oraz wyj-
ś
cie „ErrMsg” tej funkcji z wskaźnikiem „Błąd”.
5.
W celu umożliwienia obserwacji na ekranie rzeczywistej częstotliwości próbkowania sygnału,
konieczne jest jeszcze wstawienia do panelu użytkownika odpowiedniego wskaźnika. Może to
być wskaźnik cyfrowy, który nazywamy „f pr. [Hz]” i łączymy z wyjściem „Rate” (po prawej
stronie) funkcji AInScFg.
6.
W następnym kroku musimy zająć się obsługą wyjścia „ADData” funkcji AInScFg. Ponieważ
wartości wyjściowe tej funkcji są liczbami całkowitymi z zakresu od 0 do 2
n
-1 (n – rozdziel-
czość przetwornika A/C) należy dokonać ich konwersji na wartość napięcia. Można do tego
wykorzystać
funkcję
ScaleArr,
która
dokonuje
konwersji
wejściowych
wartości
całkowitoliczbowych zapisanych w tablicy „ADData” na wartości rzeczywiste z zakresu
Rys.2. Parametry funkcji ScaleArr
podanego na wejścia „Min” i „Max”. Funkcja ScaleArr dodatkowo wymaga podania czy war-
tości „ADData” zapisane są na 12 czy na 16 bitach. Funkcję ScaleArr pobieramy z podgrupy
funkcji Signal Conditioning grupy Uniwersal Library i umieszczamy na prawo od funkcji AIn-
ScFg. Następnie szpulką łączymy wyjście „ADData” AInScFg z analogicznym wejściem funk-
cji ScaleArr. Do wejścia „Min” i „Max” funkcji ScaleArr podłączymy natomiast wartości stałe
„-5’ i „5”, ponieważ taki jest domyślny zakres napięć wejściowych naszej karty pomiarowej.
Do wejścia „16 or 12 bit” podłączamy wyjście z dowolnej kontrolki typu boolean umieszczo-
nej na panelu użytkownika i opisanej „12/16 bit”.
4
7.
W oscyloskopie do obserwacji badanego sygnału niezbędny jest oczywiście ekran, do którego
budowy wykorzystamy instrument o nazwie „Waveform Graph”. Służy on do wykreślania
przebiegów czasowych i znajduje się w z grupie „Graph” palety „Controls”. Po umieszczeniu
„Waveform Graph” na panelu użytkownika wracamy do panelu programu, gdzie konieczne bę-
dzie odpowiednie przygotowanie danych dla „Waveform Graph”. Dane te muszą mieć postać
wiązki (bundle) złożonej z:
•
wartości początkowej „x
0
” współrzędnej „x” wykresu,
•
przyrostu „
∆
x” współrzędnej „x” wykresu,
•
właściwych danych kreślonego przebiegu zapisanych w tablicy „y”.
Taką wiązkę tworzymy wykorzystując element „Bundle” z grupy „Cluster”. Po umieszczeniu
go w panelu programu ma on tylko dwa wejścia, dlatego konieczne jest dodanie mu jeszcze jed-
nego (ustawiamy kursor na lewej części „Bundle”, klikamy prawym klawiszem myszki i wy-
bieramy „Add Input”). Następnie łączymy wyjście „Val” funkcji ScaleArr z dolnym wejściem
„Bundle”. Do górnego wejścia dołączamy stałą o wartości „0”, ponieważ chcemy, żeby oś cza-
su na ekranie miała początek w zerze. Natomiast na wejście środkowe należy podać długość
okresu próbkowania tzn. odwrotność okresu próbkowania. Ponieważ chcemy, żeby skala cza-
sowa ekranu była w milisekundach dlatego okres próbkowania również musi być w milisekun-
dach. Taką wartość otrzymamy dzieląc „Czas obserwacji [ms]” przez „Liczbę próbek”. Ponie-
waż odwrotne dzielenie nasz program już wykonuje (patrz pkt.4), dlatego wystarczy obliczyć
jego odwrotność (wykorzystując operator „Reciprocal” z grupy „Numeric”), i podłączyć do
ś
rodkowego wejścia „Bundle”. Teraz wystarczy tylko połączyć wyjście „output cluster” ele-
mentu „Bundle” z wejściem „Waveform Graph” i tor przetwarzania naszego oscyloskopu jest
gotowy.
8.
Następnie musimy zapewnić ciągłą pracę naszego oscyloskopu przez umieszczenie napisanego
przez nas programu wewnątrz pętli warunkowej „While Loop”, którą znajdziemy w grupie
„Structures” palety „Function”. Pętlę wstawiamy do panelu program i do warunku jej zatrzyma-
nia podłączamy przycisk „STOP”, który wcześniej musimy umieścić na panelu użytkownika.
Pamiętamy również o zaznaczeniu opcji „Stop If True” na warunku zakończenia pętli.
9.
Zanim uruchomimy nasz oscyloskop należy jeszcze tak skonfigurować instrument „Waveform
Graph”, żeby obraz sygnału na ekranie był zawsze czytelnie wyświetlany bez konieczności
ręcznego skalowania obrazu. Taki efekt uzyskamy ustawiając dla obu osi opcje „Auto Scale”,
„Loose Fit” i „Visible Scale Label” oraz wpisując dla osi „x” nazwę „t [ms]” a dla osi „y” na-
zwę „U [V]”. Aby obsługa oscyloskopu była prosta i wygodna należy jeszcze uporządkować
rozmieszczenie elementów na panelu i zmienić ich rozmiary. Tak zbudowany program został
przedstawiony na rysunkach poniżej.
5
Literatura:
1.
National Instruments Corporation: LabView User Manual, November 2001 Edition.
2.
W. Tłaczała : Środowisko LabVIEW w eksperymencie wspomaganym komputerowo. WNT,
Warszawa 2002
6
Imię i Nazwisko ……………………………………. Rok ..... Grupa ….. Data: ………………
Podstawy programowania w środowisku LabVIEW,
projekt oscyloskopu cyfrowego
Sprawozdanie
Zadania do wykonania:
1.
Zbudować wg powyższych wskazówek działający oscyloskop.
2.
Ustawić nr karty pomiarowej na 0, a przełącznik 12/16 bit na 16 bit.
3.
Wpisać liczbę próbek 200 i dokonać obserwacji sygnałów okresowych z kanałów od 0 do 4.
Zmieniając liczbę próbek na 199 i 201 sprawdzić kierunek przesuwania sygnału na ekranie.
4.
Ustawić nr karty pomiarowej na 1, nr kanału na 0, a przełącznik 12/16 bit na 12 bit.
5.
Podłączyć do zacisków analogowego wejścia karty generator i dokonać obserwacji sygna-
łów wytwarzanych przez generator.
6.
Sprawdzić działanie suwaka czasu obserwacji i wpływ jego ustawienia na częstotliwość
próbkowania.
7.
Dla trzech ustawień czasu obserwacji zanotować w tabeli uzyskaną częstotliwość próbko-
wania i sprawdzić czy spełniona jest zależność:
f
pr
= liczba próbek / czas obserwacji
(1)
8.
Do sprawozdania dołączyć wydruki panelu użytkownika i panelu programu.
Wnioski:
czas obserwacji
[ms]
liczba próbek
Uzyskana f
pr
[Hz]
Obliczona wg (1) f
pr
[Hz]