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.
1
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-
2
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”.
3
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 „x0” 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.
4
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
5
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ść:
fpr = liczba próbek / czas obserwacji (1)
czas obserwacji
Uzyskana fpr
Obliczona wg (1) fpr
liczba próbek
[ms]
[Hz]
[Hz]
8. Do sprawozdania dołączyć wydruki panelu uŜytkownika i panelu programu.
Wnioski:
6