Triggering - problem

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
Awatar użytkownika
set-han
Posty: 17
Rejestracja: 31 lip 2009 04:10
Wersja środowiska: LabVIEW 2012
Lokalizacja: Krakow

Triggering - problem

Post autor: set-han »

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
Ostatnio zmieniony 31 lip 2009 04:38 przez set-han, łącznie zmieniany 3 razy.
Awatar użytkownika
Nowszy
Posty: 504
Rejestracja: 30 maja 2008 08:33
Wersja środowiska: LabVIEW 2011
Lokalizacja: Katowice
Kontakt:

Re: Triggering - problem

Post autor: Nowszy »

Witam

Może najprościej po prostu wykorzystać sygnał prostokątny jako sample clock dla wejścia analogowego?
Pozdrawiam, Maciek Antonik
Edu4Industry
Awatar użytkownika
set-han
Posty: 17
Rejestracja: 31 lip 2009 04:10
Wersja środowiska: LabVIEW 2012
Lokalizacja: Krakow

Re: Triggering - problem

Post autor: set-han »

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:
Awatar użytkownika
Nowszy
Posty: 504
Rejestracja: 30 maja 2008 08:33
Wersja środowiska: LabVIEW 2011
Lokalizacja: Katowice
Kontakt:

Triggering - problem

Post autor: Nowszy »

Masz możliwość zobaczenia tego sygnału prostokątnego na oscyloskopie? Może faktycznie są tak zakłucenia?
Pozdrawiam, Maciek Antonik
Edu4Industry
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Triggering - problem

Post autor: vugie »

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)
Awatar użytkownika
set-han
Posty: 17
Rejestracja: 31 lip 2009 04:10
Wersja środowiska: LabVIEW 2012
Lokalizacja: Krakow

Re: Triggering - problem

Post autor: set-han »

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 :)
Awatar użytkownika
skoziate
Administrator
Posty: 245
Rejestracja: 06 mar 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Warszawa
Kontakt:

Re: Triggering - problem

Post autor: skoziate »

Wciaz najprawdopodomniej mamy do czynienia z "brudnym" sygnalem z enkodera. Mozna go przefiltrowac przy pomocy licznika:
http://decibel.ni.com/content/docs/DOC-3766
Pozdrawiam,
Sebastian
Awatar użytkownika
set-han
Posty: 17
Rejestracja: 31 lip 2009 04:10
Wersja środowiska: LabVIEW 2012
Lokalizacja: Krakow

Re: Triggering - problem

Post autor: set-han »

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.
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Triggering - problem

Post autor: vugie »

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ć.
Awatar użytkownika
set-han
Posty: 17
Rejestracja: 31 lip 2009 04:10
Wersja środowiska: LabVIEW 2012
Lokalizacja: Krakow

Re: Triggering - problem

Post autor: set-han »

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.
Ostatnio zmieniony 04 sie 2009 10:19 przez set-han, łącznie zmieniany 4 razy.
Awatar użytkownika
skoziate
Administrator
Posty: 245
Rejestracja: 06 mar 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Warszawa
Kontakt:

Re: Triggering - problem

Post autor: skoziate »

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.
Pozdrawiam,
Sebastian
Awatar użytkownika
set-han
Posty: 17
Rejestracja: 31 lip 2009 04:10
Wersja środowiska: LabVIEW 2012
Lokalizacja: Krakow

Re: Triggering - problem

Post autor: set-han »

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 :)
Awatar użytkownika
skoziate
Administrator
Posty: 245
Rejestracja: 06 mar 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Warszawa
Kontakt:

Triggering - problem

Post autor: skoziate »

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.
Pozdrawiam,
Sebastian
ODPOWIEDZ