LabView Fan Group
aplikuj!

Życzymy udanych i bezpiecznych wakacji.

Do zobaczenia w październiku.

Porównanie metod generowania sygnałów

Autor: Jakub Uliarczyk

Jedną z podstawowych bibliotek, którą każdy programista LabVIEW musi opanować, jest NI DAQmx. W celu jej dokładniejszego poznania stworzyłem dwa programy: LVGenerator i LVOscilloscope. Zasada działania tych programów jest taka sama jak standardowych urządzeń, tyle że można je wykorzystać z użyciem większości kart NI, a w szczególności kartą myDAQ.


LVGenerator

LVGenerator

 

LVOscilloscope

LVOscilloscope

 

Co jest w moich programach niezwykłego? W pierwszej, jak i w drugiej aplikacji obrałem sobie na cel „ciągłą” dystrybucję lub akwizycję sygnału.

W programie LVOscilloscope trudnością był Trigger oraz niby zwykła podstawa czasowa. Wybór sprzętowego Triggera uniemożliwiał „ciągłą” akwizycję, a Trigger programowy był trudny w napisaniu, mocno obciążał komputer, ale za to nie występowały przerwy w akwizycji sygnału. Podstawa czasowa jest natomiast powiązana z częstotliwością próbkowania, a co za tym idzie częstotliwość próbkowania sygnału zmniejsza się, gdy zwiększamy podstawę czasową i odwrotnie – tak jest w moim oscyloskopie. Był to dość spory problem.

Poniżej przedstawiam, parę wycinków z kodu programu:
Konfiguracja karty i start task'a
Konfiguracja karty i start task'a
 
Akwizycja sygnału
Akwizycja sygnału
 
Zmiana wielkości bufora zabranych próbek
Zmiana wielkości bufora zabranych próbek (w celu oszczędzania pamięci)
 
Przesunięcie pionowe sygnału
Przesunięcie pionowe sygnału
 
Zmiana podziałki napięcia
Zmiana podziałki napięcia
 
Zmiana podziałki czasu
Zmiana podziałki czasu
 
  
W programie LVGenerator przy zmianie jednego z parametrów sygnału chciałem uniknąć sytuacji gdy na wyjściu analogowym karty powstanie „przerwa”, taka jak poniżej:
   
SignalA

Niestety, coś za coś i jeśli chciałbym, aby sygnał zmieniał się w następujący sposób:
  
SignalB

To rosną wymagania sprzętowe komputera na którym działa aplikacja, ponieważ komputer musi obliczyć kolejne próbki sygnału zanim ostatnia próbka bufora opuści kartę, inaczej biblioteka DAQmx zwróci błąd.

Poniższy schemat przedstawia w jaki sposób działa aplikacja:
  
AppScheme

W pierwszej kolejności musimy skonfigurować kartę, następnie program oblicza kolejne próbki sygnału i wysyła je do bufora sprzętowego, gdy wystąpi jakieś zdarzenie w postaci zmiany któregoś parametru sygnału, komputer oblicza próbki sygnału ze zmienionymi parametrami i „dokleja” je do wcześniej generowanego sygnału. Dokładności generowanych sygnałów zależą od maksymalnej częstotliwości próbkowania karty.

Poniżej znajduje się link do prezentacji, którą przedstawiałem na pierwszej edycji Studenckiego Forum Programistów LabVIEW, konferencji zorganizowanej w marcu 2016, wspólnie z kołem VI Factory i firmą Extensa z Krakowa. Znajduje się tam kilka innych ciekawych fragmentów kodu.
  

Autor: Jakub Uliarczyk
© 2011-2018 LabVIEW Fan Group