Witam, mam mały problem z przetwarzaniem danych DAQmx w LV 2010.
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.
synchronizacja wejść w daqmx
-
PiDi
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: synchronizacja wejść w daqmx
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 ;)
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
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: 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?
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: 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?
-
robertmmarek
- Posty: 20
- Rejestracja: 03 sty 2015 11:06
- Wersja środowiska: LabVIEW 2013
synchronizacja wejść w daqmx
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.
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.
