Tworzenie maski dla dowolnego przebiegu

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
rafal
Posty: 39
Rejestracja: 12 lip 2004 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Grudziądz

Tworzenie maski dla dowolnego przebiegu

Post autor: rafal »

Witam,

Mój problem wygląda następująco:
Mierzę sygnał z wyjścia urządzenia (pomiar trwa kilka minut). Sygnał ten jest sekwencją różnych typów przebiegów (rys. sygnał).

Chciałbym stworzyć maskę dla tego przebiegu (rys. sygnał z maską).

Maska ta (czyli Upper i Lower Limit) musiałaby się generować automatycznie, bo takich sygnałów mam do "omaskowania" 32 (każdy jest inny i jak juz pisałem ich czas trwania to kilka minut).

Moje pytanie: jak to zrealizować?

p.s. Te rysunki są tylko poglądowe.

Działam w LabView 8.5.1 i Win XP.

Dzięki i pozdrawiam.
Awatar użytkownika
Nowszy
Posty: 504
Rejestracja: 30 maja 2008 08:33
Wersja środowiska: LabVIEW 2011
Lokalizacja: Katowice
Kontakt:

Tworzenie maski dla dowolnego przebiegu

Post autor: Nowszy »

Rozumiem że limity w każdej jednostce czasu to po prostu obecna wartość próbki plus minus jakaś wartość? Jeżeli tak to najprościejstworzyć dwa dodatkowe przebiegi dodając/odejmując od każdej próbki stałą wartość.

Jeżeli sygnał jest po prostu tablicą to proste. Jeżeli tym danych to waveform to najprościej użyć "Get Waveform Components" przeprowadzić operacje na tablicy Y i z powrotem wpisać ją do Waveforme'a. Są też chyba jakieś VI-e które mogą to zrobić na samym Waveformie, ale nie mam tu LV więc nie sprawdzę :<
Pozdrawiam, Maciek Antonik
Edu4Industry
Awatar użytkownika
rafal
Posty: 39
Rejestracja: 12 lip 2004 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Grudziądz

Re: Tworzenie maski dla dowolnego przebiegu

Post autor: rafal »

Nowszy dzięki za zainteresowanie tematem.
Rozumiem że limity w każdej jednostce czasu to po prostu obecna wartość próbki plus minus jakaś wartość?
Po części tak.
Jeżeli tak to najprościejstworzyć dwa dodatkowe przebiegi dodając/odejmując od każdej próbki stałą wartość.
Niestety to nie takie proste. Maska ma określać limity w dziedzinie X jak również Y.
Zauważ, ze to sprawdziłoby się dla przebiegu stałego.
Dla np. prostokątnego limit musi się zmienić zanim nastąpi zbocze narastające i musi się zmienić chwilę po tym jak nastąpi zbocze opadające (w przypadku górnego limitu). Zatem maska dla przebiegu prostokątnego nie jest sygnałem prostokątnym (czas trwania poziomu niskiego jest różny od czasu trwania poziomu wysokiego). Zresztą dla sinusoidy tez nie jest sinusoidą.
Ma ktoś jakiś inny pomysł jak tego dokonać? Będę wdzięczny za wszelką pomoc.
Pozdrawiam.
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

Tworzenie maski dla dowolnego przebiegu

Post autor: spec.kolombo »

Ostatnio się trochę bawiłem tymi limitami - w celu analizy kształtu impulsu udaru. Chciałem żeby one się rysowały automatycznie, więc musiałem wprowadzić analizę...

Trochę niedokładnie opisałeś swój problem - bo nie wiem czy sekwencja sygnałów, amplitudy, częstotliwości, liczba okresów są stałe czy przypadkowe?
Ja generalnie swój problem rozwiązałem za pomocą triggerów - obliczałem czas trwania udaru, po czym generowałem odpowiednie sinusoidy.

Triger ma kilka fajnych funkcji:
możesz ustalić poziom wyzwalania, rodzaj zbocza i histerezę,
a na wyjściu podaje miejsce wybranego zbocza w przebiegu.
Np. w przypadku przebiegu prostokątnego - możesz wyciągnąć jego czas trwania i stworzyć nowy przebieg nierówno-prostokątny - przesunięty trochę w czasie.

Nie wiem czy to pomoże, ale tak czy siak czeka Cię sporo pracy.

pozdro!
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Tworzenie maski dla dowolnego przebiegu

Post autor: vugie »

Bez wnikania w merytoryke - zakładam, że cel jest dokładnie taki jak na rysunku.
Jeżeli ma to być ogólne rozwiązanie - dla dowolnej krzywej, to trzeba by ją najpierw opisać wektorowo - wielomiany, krzywe Beziera, spliny, linie łamane, czy coś takiego. Ja ostatnio szczególnie lubię Akima spline do takich rzeczy. Muszisz mieć krzywą opisaną zestawem współrzędnych węzłów i matematycznego opisu krzywych pomiędzy węzłami. Potem dla każdy węzeł przenosisz o określoną odległość wzdłuż normalnej, przeliczasz funkcję interpolacyjną między każdą parą węzłów i jest krzywa.

W programach do grafiki wektorowej taka operacja nazywa się offset i operuje się w nich najczęściej na krzywych Beziera. Myślę, że powinno dać się znaleźć trochę gotowych algorytmów na offset, chociażby w kodzie Inkscape'a.
sliski
Posty: 69
Rejestracja: 15 mar 2005 00:00
Lokalizacja: Rzeszów

Re: Tworzenie maski dla dowolnego przebiegu

Post autor: sliski »

Witam,

Jezeli ta maska ma byc oddalona od idealnego przebiegu o stala wartosc (prostopadle do przebiegu) to przyjzyj sie algorytmom stosowanym w programach cnc do tworzenia sciezki narzedzia z kompensacja promieniowa narzedzia (freza). Przebieg do ktorego chcialbys tworzyc maske musialby byc opisany zbiorem odcinkow prostych lub prostych i lukow.

Pozdrawiam
sliski
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Tworzenie maski dla dowolnego przebiegu

Post autor: jogurt_owocowy »

Może po prostu coś takiego?
Awatar użytkownika
rafal
Posty: 39
Rejestracja: 12 lip 2004 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Grudziądz

Re: Tworzenie maski dla dowolnego przebiegu

Post autor: rafal »

jogurt_owocowy jak zwykle zwięźle i na temat.

Dzięki Ci bardzo.

Pozdrawiam.
ODPOWIEDZ