Triggering - problem
- set-han
- Posty: 17
- Rejestracja: 31 lip 2009 04:10
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Krakow
Triggering - problem
Witam,
na wstepie powiem, ze korzystam z NI USB-6210, karta NI-PXI-8106.
Mam dwa kanaly na ktore wprowadzam 2 sygnaly : analogowy (napiecie) i cyfrowy (prostokatny). Chcialbym pobrac 256 probek z sygnalu analogowego. Pobierane powinny byc wtedy, gdy na prostokatnym sygnale wystapi narastajace zbocze. Czyli pobieranie powinno zaczac sie przy pierwszym zboczu narastajacym, i zakonczyc przy 256tym.
Kombinowalem 2 dni, ale nie udalo mi sie tego rozwiazac, mam nadziej, ze tutaj znajde rozwiazanie.
Pozdrawiam
na wstepie powiem, ze korzystam z NI USB-6210, karta NI-PXI-8106.
Mam dwa kanaly na ktore wprowadzam 2 sygnaly : analogowy (napiecie) i cyfrowy (prostokatny). Chcialbym pobrac 256 probek z sygnalu analogowego. Pobierane powinny byc wtedy, gdy na prostokatnym sygnale wystapi narastajace zbocze. Czyli pobieranie powinno zaczac sie przy pierwszym zboczu narastajacym, i zakonczyc przy 256tym.
Kombinowalem 2 dni, ale nie udalo mi sie tego rozwiazac, mam nadziej, ze tutaj znajde rozwiazanie.
Pozdrawiam
Ostatnio zmieniony 31 lip 2009 04:38 przez set-han, łącznie zmieniany 3 razy.
- Nowszy
- Posty: 504
- Rejestracja: 30 maja 2008 08:33
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Katowice
- Kontakt:
Re: Triggering - problem
Witam
Może najprościej po prostu wykorzystać sygnał prostokątny jako sample clock dla wejścia analogowego?
Może najprościej po prostu wykorzystać sygnał prostokątny jako sample clock dla wejścia analogowego?
Pozdrawiam, Maciek Antonik
Edu4Industry
Edu4Industry
- set-han
- Posty: 17
- Rejestracja: 31 lip 2009 04:10
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Krakow
Re: Triggering - problem
Witam,
dzieki za szybka odpowiedz.
Tylko teraz w 70-80% uruchamiania programu wyskakuje nastepujacy blad:
Error -200019 occurred at DAQmx Read (Analog 1D DBL 1Chan NSamp).vi:1
Possible reason(s):
Measurements: ADC conversion attempted before the prior conversion was complete.
Increase the period between ADC conversions. If you are using an external clock, check your signal for the presence of noise or glitches.
Task Name: _unnamedTask<4E7>
Do tego mam wrazenie, ze niezbyt dokladnie sa pobierane te probki.
Sygnalem prostokatnym jest sygnal pochodzacy z enkodera, w zaleznosci od predkosci silnika bedzie wieksza/mniejsza czestotliwosc. Ale nawet przy niewielkich predkosciach ten blad sie pojawial.
Wczesniej ten problem rozwiazalem porownujac stany sygnalu prostokatnego, ale to dzialalo tylko przy niskich obrotach silnika - przy wyzszych program "gubil" probki.
Tutaj fragment programu odpowiedzialny za to:
dzieki za szybka odpowiedz.
Tylko teraz w 70-80% uruchamiania programu wyskakuje nastepujacy blad:
Error -200019 occurred at DAQmx Read (Analog 1D DBL 1Chan NSamp).vi:1
Possible reason(s):
Measurements: ADC conversion attempted before the prior conversion was complete.
Increase the period between ADC conversions. If you are using an external clock, check your signal for the presence of noise or glitches.
Task Name: _unnamedTask<4E7>
Do tego mam wrazenie, ze niezbyt dokladnie sa pobierane te probki.
Sygnalem prostokatnym jest sygnal pochodzacy z enkodera, w zaleznosci od predkosci silnika bedzie wieksza/mniejsza czestotliwosc. Ale nawet przy niewielkich predkosciach ten blad sie pojawial.
Wczesniej ten problem rozwiazalem porownujac stany sygnalu prostokatnego, ale to dzialalo tylko przy niskich obrotach silnika - przy wyzszych program "gubil" probki.
Tutaj fragment programu odpowiedzialny za to:
- Nowszy
- Posty: 504
- Rejestracja: 30 maja 2008 08:33
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Katowice
- Kontakt:
Triggering - problem
Masz możliwość zobaczenia tego sygnału prostokątnego na oscyloskopie? Może faktycznie są tak zakłucenia?
Pozdrawiam, Maciek Antonik
Edu4Industry
Edu4Industry
-
- Posty: 383
- Rejestracja: 17 lis 2006 00:00
- Wersja środowiska: LabVIEW 2009
- Lokalizacja: Warszawa
Triggering - problem
Na pewno chcesz używać zmiennego częstotliwościowo sygnału jako zegara? Jedna próbka sygnału powinna mieć stałą szerokość czasową, inaczej sygnał będzie raczej bezwartościowy, abstrahując już od możliwości sprzętowych takiego pomiaru.
Rozumiem, że enkoder ma 256 impulsów/obrót i chcesz zmierzyć sygnał dla pełnego kąta obrotu? Czy silnik kręci się cały czas, czy rozpędza się podczas pomiaru? Myślę że powinieneś użyć wewnętrznego zegara z częstotliwością przynajmnie 10x większą niż to co daje enkoder i mierzyć OBA sygnały przes czas wystarczająco długi by znalły się tam te 256 impulsów (można użyć licznika). Niezależnie możesz oczywiście wyzwalać pomiar sygnałem z enkodera, ale ma to chyba sens tylko wtedy gdy przed pomiarem silnik stoi.
I jeszcze jedno: Czy świadomie użyłeś trybu differencial? Łączy się to z tym, że masy mierzonego sygnału nie podpina się do masy urządzenia tylko do drugiego wejścia analogowego (zwykle jest to np. para AI0-AI8)
Rozumiem, że enkoder ma 256 impulsów/obrót i chcesz zmierzyć sygnał dla pełnego kąta obrotu? Czy silnik kręci się cały czas, czy rozpędza się podczas pomiaru? Myślę że powinieneś użyć wewnętrznego zegara z częstotliwością przynajmnie 10x większą niż to co daje enkoder i mierzyć OBA sygnały przes czas wystarczająco długi by znalły się tam te 256 impulsów (można użyć licznika). Niezależnie możesz oczywiście wyzwalać pomiar sygnałem z enkodera, ale ma to chyba sens tylko wtedy gdy przed pomiarem silnik stoi.
I jeszcze jedno: Czy świadomie użyłeś trybu differencial? Łączy się to z tym, że masy mierzonego sygnału nie podpina się do masy urządzenia tylko do drugiego wejścia analogowego (zwykle jest to np. para AI0-AI8)
- set-han
- Posty: 17
- Rejestracja: 31 lip 2009 04:10
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Krakow
Re: Triggering - problem
Nowszy, sprawdzałem to na oscyloskopie, zakłóceń nie ma. Ponadto przy metodzie porównywania stanów wszystko działa ładnie, tylko że wolno.
vugie , sygnał nie jest zmienny częstotliwościowo - ustawiam daną prędkość i tak będzie zawsze pracował silnik. Teraz staram się, aby ta prędkość była jak najwyższa. Czyżbym gdzieś w programie popełnił błąd i ustawił zmienną częstotliwość? Pierwszy raz działam z tym, możliwe, że coś przeoczyłem.
Tak, 256 impulsów to jeden obrót silnika. Faktycznie nie zwróciłem uwagi - silnik startuje - zbieram próbki - silnik zatrzymuje się. Nie czuje się mocny w konfigurowaniu odpowiednio zegarów wewnętrznych / zewnętrznych i teraz, jak nie mam przed sobą LabVIEW to nie bardzo wiem jak się za to zabrać
W poniedziałek będę z powrotem w pracy to spróbuje coś pokombinować. Jeżeli miałbyś czas i chęci wrzucić jakiś przykładowy program odnośnie tego zegara wewnętrznego to byłbym wdzięczny.
Co do differencial - tak, użyłem tego celowo i podpięte mam AI - AI9
vugie , sygnał nie jest zmienny częstotliwościowo - ustawiam daną prędkość i tak będzie zawsze pracował silnik. Teraz staram się, aby ta prędkość była jak najwyższa. Czyżbym gdzieś w programie popełnił błąd i ustawił zmienną częstotliwość? Pierwszy raz działam z tym, możliwe, że coś przeoczyłem.
Tak, 256 impulsów to jeden obrót silnika. Faktycznie nie zwróciłem uwagi - silnik startuje - zbieram próbki - silnik zatrzymuje się. Nie czuje się mocny w konfigurowaniu odpowiednio zegarów wewnętrznych / zewnętrznych i teraz, jak nie mam przed sobą LabVIEW to nie bardzo wiem jak się za to zabrać

W poniedziałek będę z powrotem w pracy to spróbuje coś pokombinować. Jeżeli miałbyś czas i chęci wrzucić jakiś przykładowy program odnośnie tego zegara wewnętrznego to byłbym wdzięczny.
Co do differencial - tak, użyłem tego celowo i podpięte mam AI - AI9

- skoziate
- Administrator
- Posty: 245
- Rejestracja: 06 mar 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Warszawa
- Kontakt:
Re: Triggering - problem
Wciaz najprawdopodomniej mamy do czynienia z "brudnym" sygnalem z enkodera. Mozna go przefiltrowac przy pomocy licznika:
http://decibel.ni.com/content/docs/DOC-3766
http://decibel.ni.com/content/docs/DOC-3766
Pozdrawiam,
Sebastian
Sebastian
- set-han
- Posty: 17
- Rejestracja: 31 lip 2009 04:10
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Krakow
Re: Triggering - problem
Witam po weekendzie.
Dzieki za rady, ale nie bardzo wiem jak mam ten filtr zastosowac. Mam podac zrodlo licznika, ale to jakiegos wbudowanego? jak moge sie dowiedziec gdzie jest taki licznik? bo jak probowalem podac sciezke do enkodera, to pojawial sie blad.
I jak moge wykorzystac ten przefiltrowany sygnal jak argumentem podawanym na zegar jest po prostu sciezka do sygnalu ( tak jak jest to pokazane na moim screenie pare postow wyzej), a jak dany sygnal chce przefiltrowac, to nie ma na wyjsciu sciezki.
Mam nadzieje, ze pisze z sensem, bo niebardzo sie na tym znam.
Dzieki za rady, ale nie bardzo wiem jak mam ten filtr zastosowac. Mam podac zrodlo licznika, ale to jakiegos wbudowanego? jak moge sie dowiedziec gdzie jest taki licznik? bo jak probowalem podac sciezke do enkodera, to pojawial sie blad.
I jak moge wykorzystac ten przefiltrowany sygnal jak argumentem podawanym na zegar jest po prostu sciezka do sygnalu ( tak jak jest to pokazane na moim screenie pare postow wyzej), a jak dany sygnal chce przefiltrowac, to nie ma na wyjsciu sciezki.
Mam nadzieje, ze pisze z sensem, bo niebardzo sie na tym znam.
-
- Posty: 383
- Rejestracja: 17 lis 2006 00:00
- Wersja środowiska: LabVIEW 2009
- Lokalizacja: Warszawa
Triggering - problem
Sygnał z licznika można przefiltrować, ale nie bardzo widzę w jaki sposób użyć go potem jako zegara...
Odnośnie konfiguracji licznika. Jeżeli wybrałeś już w selektorze polimorficznym CI (Counter input) to na wejściu ścieżki prawo-kliknij i stwórz stałą. Będzie ciut inna niż dla normalnego i będzie tam coś w rodzaju dev1/ctr0 i ctr1 (piszę z pamięci, mogłem coś pokręcić). A które to są fizycznie porty, to trzeba już znaleźć w dokumentacji, w każdym razie są to konkretne dwa porty i na innych licznik nie będzie działać.
Odnośnie konfiguracji licznika. Jeżeli wybrałeś już w selektorze polimorficznym CI (Counter input) to na wejściu ścieżki prawo-kliknij i stwórz stałą. Będzie ciut inna niż dla normalnego i będzie tam coś w rodzaju dev1/ctr0 i ctr1 (piszę z pamięci, mogłem coś pokręcić). A które to są fizycznie porty, to trzeba już znaleźć w dokumentacji, w każdym razie są to konkretne dwa porty i na innych licznik nie będzie działać.
- set-han
- Posty: 17
- Rejestracja: 31 lip 2009 04:10
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Krakow
Re: Triggering - problem
witam znow.
Stworzylem VI z filtrem, ktory zaproponowal skoziate.
Jezeli go odpale, pare razy przekreci sie silnik, i potem odpalam program glowny to jest wszystko wporzadku ;] Ale bez odpalenia tego VI z filtrem program bedzie sypal bledy. Tak jest za kazdym uruchomieniem komputera.
I teraz moje pytanie. Czy proponowane przeze mnie rozwiazanie jest dobre? Mianowicie: Przy rozpoczeciu programu po prostu odpalic silnik na kilka okrazen i przefiltrowac sygnal tym filtrem? I potem zaczac wlasciwa prace programu?
EDIT: ok, juz sobie poradzilem inaczej. wszystko ladnie dziala. Dziekuje za pomoc.
Stworzylem VI z filtrem, ktory zaproponowal skoziate.
Jezeli go odpale, pare razy przekreci sie silnik, i potem odpalam program glowny to jest wszystko wporzadku ;] Ale bez odpalenia tego VI z filtrem program bedzie sypal bledy. Tak jest za kazdym uruchomieniem komputera.
I teraz moje pytanie. Czy proponowane przeze mnie rozwiazanie jest dobre? Mianowicie: Przy rozpoczeciu programu po prostu odpalic silnik na kilka okrazen i przefiltrowac sygnal tym filtrem? I potem zaczac wlasciwa prace programu?
EDIT: ok, juz sobie poradzilem inaczej. wszystko ladnie dziala. Dziekuje za pomoc.
Ostatnio zmieniony 04 sie 2009 10:19 przez set-han, łącznie zmieniany 4 razy.
- skoziate
- Administrator
- Posty: 245
- Rejestracja: 06 mar 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Warszawa
- Kontakt:
Re: Triggering - problem
Wybaczcie wszyscy, chyba zbyt pochopnie podałem wcześniej link. Raz zastosowałem licznik do filtrowania sygnału cyfrowego, lecz w prostszy sposób. Działa to tak:
1. Tworzę zadanie generowania pojedynczego impulsu przy pomocy licznika, które może być wyzwalane wielokrotnie (property:retriggerable)
2. Ĺąródłem wyzwalania będzie sygnał, który chcę wyltrować.
3. Wyjściem będzie sygnał filtorwany.
3. Długość generowanego impulsu będzie określała częstotliwość graniczną filtru.
1. Tworzę zadanie generowania pojedynczego impulsu przy pomocy licznika, które może być wyzwalane wielokrotnie (property:retriggerable)
2. Ĺąródłem wyzwalania będzie sygnał, który chcę wyltrować.
3. Wyjściem będzie sygnał filtorwany.
3. Długość generowanego impulsu będzie określała częstotliwość graniczną filtru.
Pozdrawiam,
Sebastian
Sebastian
- set-han
- Posty: 17
- Rejestracja: 31 lip 2009 04:10
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Krakow
Re: Triggering - problem
hmm...
Szczerze mowiac, to ten schemat ktory mi podales wczesniej dziala bez zarzutow. Przed kazda wlasciwa praca programu wrzucam ten filtr i nie ma najmniejszych problemow, wiec chyba to tak zostawie
Szczerze mowiac, to ten schemat ktory mi podales wczesniej dziala bez zarzutow. Przed kazda wlasciwa praca programu wrzucam ten filtr i nie ma najmniejszych problemow, wiec chyba to tak zostawie

- skoziate
- Administrator
- Posty: 245
- Rejestracja: 06 mar 2007 00:00
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Warszawa
- Kontakt:
Triggering - problem
Zorientowałem się, że przykład z debounce filter jest dla kart licznikowych, a tutaj mamy do czynienia z 6210. Nie doceniłem tej karty, bo okazuje się, że też posiada debounce filter.
Drugi przykład do zastosowania dla tych, którzy filtra nie mają. Można wtedy zrobić sobie filtr z licznika.
Drugi przykład do zastosowania dla tych, którzy filtra nie mają. Można wtedy zrobić sobie filtr z licznika.
Pozdrawiam,
Sebastian
Sebastian