Strona 1 z 1

Zliczenie ilości pulsów, ale inaczej

: 08 wrz 2010 18:51
autor: mmkst
Witam. Mam ściągniętą z karty pomiarowej macierz przebiegu prostokątnego. Chcę policzyć ile w nim jest pulsów. Jak liczę ile jest w tych próbkach wartości true, to zlicza mi wszystkie próbki o wartości true, które są zawarte w jednym "pulsie". I tak zamiast jednego pulsu liczy mi np.:5. Wykonywałem moje obliczenie tak, że przeglądał macierz i szukał wartości true (było na int i szukał wartości 1, ale to to samo) i przenosił tę próbkę do drugiej macierzy. Stąd po przejrzeniu całej macierzy wejściowej miałem stworzoną drugą, która zawierała same wartości true. Na końcu wyświetlałem sobie rozmiar macierzy drugiej.

Ale jak mówiłem jeden puls jest spróbkowany w kilku miejscach, jak zrobić, aby liczył mi go tylko raz? Licznik sprzętowy nie wchodzi w grę. Częst. badanego przebiegu to ok 8-10kHz.

Re: Zliczenie ilości pulsów, ale inaczej

: 08 wrz 2010 19:39
autor: Ender
Witam
Zapis do wersji 7.1 przerasta moje możliwości, więc screen będzie musiał wystarczyć ;) Mam nadzieję, że o to chodzi.

Pozdrawiam
Ender

Re: Zliczenie ilości pulsów, ale inaczej

: 08 wrz 2010 20:16
autor: mmkst
Właśnie w tym sęk, że jak zadasz mu sygnał, w którym 2-3 próbki mają wartość false, potem 2-3 próbki mają wartość true itd. to podczas zliczania, zliczy każdą próbkę na której jest true, a ja chcę zliczyć cały puls jako 1. Rozumiesz? Jeśli nie to postaram się wrzucić obrazek z opisem.

Zliczenie ilości pulsów, ale inaczej

: 08 wrz 2010 21:45
autor: Ender
.... przecież ten program to właśnie robi. Sprawdzałeś? Wykrywa zmianę z F na T i tylko wtedy zlicza puls. Zamiast symulowanego sygnału podepnij na wejście tablicę z elementami boolean, zmieniaj je dowolnie i zobaczy czy wynik będzie się zgadzał.

Re: Zliczenie ilości pulsów, ale inaczej

: 10 wrz 2010 20:33
autor: mmkst
Sprawdziłem i rzeczywiście działa!!:) Nie wiem tylko dlaczego konwersja sygnału, którą zastosowałeś u mnie nie działa. W error-ze jest napisane, że nie można dokonać konwersji sygnału z long na ulong. Jak zastosowałem bloczek konwersji to wyświetla, że nie można przekonwertować z ulong do ulong (??). Obszedłem to, ale zdziwiło mnie to.

Re: Zliczenie ilości pulsów, ale inaczej

: 10 wrz 2010 22:43
autor: wino
No patrze na to rozwiązanie Ednera i od razu mi się ono wydawało jakieś takie ... niedziałające do końca poprawnie. No i się zmusiłem do przetestowania i znalazłem błąd.

Bo jak ostatni impuls składa się z jednej wartości T i jest na końcu w tablicy, to nie zostanie zlicznony, bo pętla go nie bada.
Błąd.jpg
Są dwa impulsy a wynik równa się jeden.

A powinno być chyba tak, ale jakoś mi to rozwiązanie też nie leży
ChybaDobrze.jpg

Re: Zliczenie ilości pulsów, ale inaczej

: 11 wrz 2010 14:07
autor: mmkst
No dobrze, to jeszcze jeden myk, a jak poszerzyć funkcjonalność tak, żebym ja jako użytkownik podawał ile sygnałów TRUE ma znaleźć? Kiedy osiągnie tą liczbę ma mieć zliczone ile próbek musiał zbadać aby zliczyć TRUE i rozpocznie cały proces od nowa. Próbowałem to zrobić tak jak na zdjęciu, ale to nie działa... W miejscu podłączania wyniku porównania do stopu pętli while w moim programie jest strzałeczka pętli sprzężenia zwrotnego w przód i nie ma oczywiście błędu niepodłączenia. Dorzucam też cały vi, może będzie prostrzy do analizy.

Re: Zliczenie ilości pulsów, ale inaczej

: 15 wrz 2010 06:41
autor: mmkst
Witam, napisałem niejasno? Jest to niewykonalne?:) Czy każdy kto potrafi to zrobić mnie olał? Nie musi to być kod, chociaż jakaś sugestia jak to zrobić. Mój jakiś tam pomysł po nawet modyfikacjach kompletnie się nie sprawdza. Pozdro i mam nadzieje dostać odp.

Re: Zliczenie ilości pulsów, ale inaczej

: 15 wrz 2010 12:29
autor: wino
Twoja odpowiedź jest jasna, tylko napisz proszę po co chcesz zliczać ilość TRUE?

Re: Zliczenie ilości pulsów, ale inaczej

: 15 wrz 2010 18:00
autor: Ender
Zakładając, że przez sygnał TRUE rozumiesz to, co wcześniej nazywałeś pulsem, to wyszło mi coś takiego (dzięki wino za naprawienie błędu).
Może faktycznie napiszesz nam jaki jest cel końcowy tego wszystkiego? Znając życie, to po piątej modyfikacji programu okaże się, że chcesz zmierzyć np częstotliwość sygnału albo inną rzecz, którą załatwia się jednym bloczkiem... ;)

Re: Zliczenie ilości pulsów, ale inaczej

: 20 wrz 2010 20:45
autor: mmkst
Muszę zmierzyć prędkość z wykorzystaniem metody M i T oraz kombinowanej M/T. Pierwsze co napisaliście de facto dla mnie (chciałem napisać, że pomogliście, ale byłoby to nadużycie:P) to pomiar prędkości wg metody M, a drugie wg T. Gdzie częstotliwość próbkowania jest jednocześnie generatorem wzorcowym dla mnie. Z trzecią metodą poradziłem sobie sam, ale tylko dzięki wam:) W każdym razie dzięki wielki, pochwały już rozdałem. Jak nadal nie będę dawał rady, to jeszcze się odezwę i zapytam.

Metoda M/T robi tak: Ma zadany czas pomiaru podczas którego zlicza impulsy [true] (u mnie generatorem czasu są kolejne spróbkowane elementy, czyli podaje ile próbek ma brać pod uwagę podczas zliczania). Potem po ostatnim impulsie mierzy ile jeszcze czasu jest od ostatniego impulsu do końca czasu pomiarowego. Obie wielkości wykorzystuje przy liczeniu prędkości obrotowej (czyli ilość zliczonych impulsów [true] i czas nazwijmy go dodatkowy).
Tym sposobem nawet, jak czas pomiaru skończy się między dwoma impulsami [true] to i tak całość pomiaru jest brana pod uwagę i maleje błąd.

Pozdrawiam

Re: Zliczenie ilości pulsów, ale inaczej

: 20 wrz 2010 21:56
autor: wino
A korzystasz z jakiejś karty firmy NI? Czy sam sobie generujesz te impulsy?

Re: Zliczenie ilości pulsów, ale inaczej

: 21 wrz 2010 10:01
autor: mmkst
Właśnie większość problemów wynikła z tego, że używam innej karty. Karta to LabJack U3-HV. W sumie jest kiepska, ale kosztuje 113$... Więc jak za te pieniądze to rewelka, że można zrobić cowolwiek.