Strona 1 z 1

synchronizacja wejść w daqmx

: 07 cze 2016 11:33
autor: świdro
Witam, mam mały problem z przetwarzaniem danych DAQmx w LV 2010.
Untitled.png
Mam kod który obsługuje pobieranie danych z DAQ ai3, następnie dane poddawane są FFT. Przy założeniu że mam 48kHz próbkowanie i 1024 probki, z matematyki wychodzi że bin=Sample_rate/sample=46.875 Hz. Jednak po FFT wartość df=49.9501. Z tego co udało mi się ustalić winą może być wewnętrzny zegar karty 80MHz, a właściwie "brzydki podział" wewnętrznego zegara przez sample rate.

Wyczytałem, że można synchronizować wejścia daq używając DAQmx channel property node'a. Chciałem wdrożyć do mojego kodu tak aby bloczek sample clock wejścia ai3 był synchronizowany z wyjścia PFI karty inną częstotliwością niż onboard clock. Jednakże kiedy kod wystartuje i mam ustawiony source na Sample Clocku inny niż Onboard Clock, kod wisi na pętli oczekującej zakończenie taska.


Nie jestem pewien czy aby nie pokręciłem propertiesów w DAQmx-ie.


Próbowałem różnych metod, bezskutecznie. Może ktoś byłby w stanie podpowiedzieć co robię nie tak?

Z góry dzięki za pomoc.

Re: synchronizacja wejść w daqmx

: 07 cze 2016 19:09
autor: PiDi
0. Z jakiej karty korzystasz?
1. Co pokazuje Ci indykator "dt" z pierwszego screena? Jeśli jest tak, jak mówisz, to 1/dt powinno wyjść różne od 48k.
2. Na drugim screenie ten task z CO Pulse Freq w ogóle nie jest uruchamiany, więc ciężko, żeby cokolwiek do niego synchronizować ;) Zobacz sobie przede wszystkim przykład: w LabVIEW: Help -> Find Examples..., wyszukaj sobie "Analog Input - Synchronization.vi". Polecam też poczytanie: http://www.ni.com/white-paper/5471/en/ . Jeśli to Ci nie pomoże, będziemy kombinować dalej.


Załączaj w postach VIje, jeśli możesz, bo png się trudno kompiluje ;)

Re: synchronizacja wejść w daqmx

: 13 cze 2016 09:15
autor: świdro
Dzięki za odpowiedz. Zmieniłem plan, podszedłem do tematu w inny sposób.

Teraz mam inne pytanie:
ze specki PCI6259 wyczytałem że onboard clock ma 80MHz i podwielokrotności. Czyli znaczy to, że mogę próbkować sygnał z max 80MHz. W moim kodzie używam mniejszego sampling rate'a i widzę że w widmie syg pojawiają się prążki których tam nie powinno być. Używam okna prostokątnego, wiec może to być skutkiem aliasingu. Pytanie: czy i w jaki sposób mogę wprowadzić filtr DP na sygnał jeszcze przed downsamplingiem?
Obecnie mam kod jak poniżej:
Untitled.png
EDIT:
znalazłem opcje AI.Lowpass.Enable w channel property node dla PCI6281 ale niestety nie jest ona widoczna dla karty PCI6259. Czy ktoś z Was próbował kiedyś obejść taki problem?
Untitled.png

synchronizacja wejść w daqmx

: 14 cze 2016 08:18
autor: robertmmarek
Dodatkowe prążki wynikają raczej z używania okna prostokątnego niż zegara.

Najprawdopodobniej LabVIEW nie potrafi dobrać odpowiednich prescalerów dla zegara 80MHz tak, żeby otrzymać idealne 48kHz. Przy tworzeniu nowych źródeł zegarowych w projekcie otrzymujemy od razu informację zwrotną jaką częstotliwość udało się uzyskać i jaki jest jej błąd.