Witam, mam mały problem z przetwarzaniem danych DAQmx w LV 2010.
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.
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.synchronizacja wejść w daqmx
-
- 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?
-
- 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.