background image

 

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. 

background image

 

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-

background image

 

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”. 

background image

 

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. 

 

background image

 

 

 

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 

background image

 

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]