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