Strona 1 z 2

Konwersja sygnału

: 25 mar 2010 20:36
autor: mmkst
Witam. Mam odczyt analogowy z karty pomiarowej. Wizualizacja działa pięknie przez waveform chart, ale chciałbym mierzyć RMS oraz częstotliwość. Są na to bloczki, więc wszystko jest pięknie, tylko że nie mierzą mi tych wielkości z całego sygnału, tylko z ostatniej próbki. Jak zrobić, aby brał pod uwagę cały sygnał, a co się z tym wiążę liczył poprawnie.

Pozdro

Konwersja sygnału

: 25 mar 2010 21:30
autor: Nowszy
bloczków do liczenia RMS-a i częstotliwości jest conajmniej kilka - napisz których używasz konkretnie, najlepiej wrzuć swojego VIa

Re: Konwersja sygnału

: 25 mar 2010 21:39
autor: mmkst
Oto on

Konwersja sygnału

: 25 mar 2010 23:01
autor: Nowszy
Zauważ, że z twoich funkcji pobierających dane z karty LabJack wychodzą dane tylko w postaci pojedynczego punktu, pobierasz tylko pojedynczą wartość. Nie znam tego urządzenia, ale albo musisz skonfigurować je na pobieranie większej liczby próbek, lub pobierać po jednej próbce ale w pętli i gromadzić je np. w rejestrze przesuwnym.

Re: Konwersja sygnału

: 28 maja 2010 10:38
autor: mmkst
Tylko jak te dane gromadzić w rejestrze, żeby to działało? Jak zrobiłem to jak w załączniku to działała tylko pętla rejestru, a reszta wieszała się (była podawana jednakowa dana w każdym kroku, niezależnie od wszystkiego). Zmiana ilości danych w sterowniku samej karty to jak dla mnie trochę za głęboka ingerencja.

Nie wiem, czy lepsza nie byłaby tablica ok 40 el i w niej dane były by dodawane (nowa dana na końcu najstarsza dana usuwana, a reszta przesuwana w każdym kroku), więc wynik byłby liczony z ostatnich pobranych tych 40 próbek. Tylko nie wiem jak to zrobić, pomoc mile widziana.

Pozdrawiam
badanie sygnalu analogowego.png

Re: Konwersja sygnału

: 28 maja 2010 13:19
autor: Pitol
Skoro mówisz, że wszystko pięknie działało wcześniej, to znaczy, że korzystasz z Continous Run co jest złym nawykiem i proponuję się go pozbyć jak najszybciej.
Zamknij całość w pętli While i będzie działać. Dane gromadzić będziesz w tablicy tak jak ja rys.
SR.PNG

Re: Konwersja sygnału

: 14 cze 2010 09:42
autor: mmkst
Niestety, to nie pomogło. Kiedy całość umieściłem w while reakcja jest taka sama. Czyli, w pierwszym wykonaniu pętli odczytuje dane, ale potem nie odczytuje aktualnej wartości, tylko cały czas używa danej odczytanej na początku.

Pomocy..

Aha jak zrobić, aby w osi Y był czas rzeczywisty?? Pozdrawiam i czekam na odp

Re: Konwersja sygnału

: 14 cze 2010 15:40
autor: __behemot_
Spróbuj tak,
Nie wiem tylko czemu dodajesz wyniki pomiarów, chcąc obliczyć np średnią radziłabym np budować tabelę 10 elementową i z tego liczyć średnią, potem kolejnych 10 próbek, gdzie pierwszą byłaby średnia z poprzednich. Mam nadzieję, że to logiczne

Re: Konwersja sygnału

: 15 cze 2010 08:41
autor: mmkst
No właśnie wyżej pisałem, że ta tabela byłaby chyba najlepszym pomysłem, ale nie mogę tego zaimplementować, żeby działało tak jak należy.

Zrobiłem jak kolega wyżej proponował, ale w takim rowiązaniu sumuje wynik, a nie uśrednia go. Zresztą gdyby udało się wpakować wynik w tabelę i podawać na te bloczki funkcyjne ciąg próbek to przy okazji mógłbym liczyć częstotliwość, a to by mi się przydało.

Stworzyłem więc to tablicowo (w końcu się udało:) ), ale nie mogę sobie poradzić z zamianą w tablicy elementów o kolejnych indeksach. W sensie potrzebny jest licznik, który będzie jechał od 0 do powiedzmy 10 i podawał to na wejście indeksowe bloczku replace. Próbowałem zrobić to for loop, ale wtedy ni z gruszki ni z pietruszki macierz zainicjowana stawała się 2D. Wyjąłem to z pętli For i znowu wszystko było ok. Propozycje?

Aha dzięki za pomoc, pochwały dam po rozwiązaniu problemu do końca. Pozdro

Re: Konwersja sygnału

: 15 cze 2010 09:18
autor: Pitol
wrzuć swoje wypociny to może coś poradzimy :) bo nie mogę ogarnąć gdzie utknąłeś...

Re: Konwersja sygnału

: 15 cze 2010 09:39
autor: mmkst
Jest nad Twoim postem, jak zacząłem pisać to mnie coś oderwało i pisałem post 3 godz:)

Re: Konwersja sygnału

: 15 cze 2010 09:48
autor: Pitol
hmm... nie mam LV 7.1 więc nie zapiszę Ci tego... chyba że jakoś sobie otworzysz to.
Spróbuj sobie to zbudować, uruchomić i zrozumieć jak działa. Powinno Ci to pomóc w Twoim problemie.
testd.png
testd.png (6 KiB) Przejrzano 13456 razy
testd1.png
testd1.png (1.51 KiB) Przejrzano 13456 razy

Re: Konwersja sygnału

: 15 cze 2010 11:51
autor: mmkst
Hmm a co to jest za bloczek w Case przy True? Jak się nazywa, bo ja takiego chyba nie mam. Jedyne co mam to replace, który użyłem. Wtedy jednak trzeba podać indeks danej, którą podmieniam.

Konwersja sygnału

: 15 cze 2010 12:23
autor: Pitol
to jest build array w palecie Array.

Re: Konwersja sygnału

: 15 cze 2010 16:17
autor: mmkst
Działa uff, dzięki tylko jak to rozszerzyć, żeby czytało tylko określoną ilość próbek? Bo teraz pomiar jest z całego zmierzonego zakresu. Zrobiłem to tak jak w załączonym zdjęciu, ale nadal nie działa, żeby po zebraniu tutaj 10 próbek zaczynało cały proces od nowa. A już w ogóle idealnie by było, gdyby po dodaniu nast. próbki wszystkie inne były przesuwane w dół, a ostatnia kasowana. Jak to zrobić? No i jeszcze jeden drobiazg - jak zrobić w osi Y czas rzeczywisty?