kat przesuniecia fazowego

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.
uksz
Posty: 30
Rejestracja: 18 cze 2009 14:02
Wersja środowiska: LabVIEW 8.0

kat przesuniecia fazowego

Post autor: uksz »

Witam wszystkich bardzo serdecznie.
Częścią mojego projektu jest wygenerowanie sygnału sinusoidalnego oraz analiza jego widma amplitudowego. Pracownia wyposazona jest w LabView w wersji 8.0.
Do generowania sygnału używam Signal generator by duration
jako parametry wejsciowe podaje : liczba próbek : 512 częstotliwość : 100 Hz Amplituda : 1 V Kąt fazowy : 0
duration : 0,05s
Wygenerowany sygnał (5 okresów) podłączam do
Amplitude and phase spectrum i rezultat wyświetlam na obiekcie Waveform Graph
Problemy: 1. Jak zrobic by skladowa byla wyswietlana w formie slupka a nie ciaglego wykresu? 2. Dlaczego widmo na wykresie wskazuje niepoprawna częstotliwość? Zamiast wyświetlac 100 Hz to wyświetla coś kolo 8-10 ( nawet nie potrafie tego dobrze odczytac z tego wykresu). Jak zrobic by wykres wskazowal wlasciwa czestotliwosc?
Prosze o pomoc, z gory dziekuje.
Ostatnio zmieniony 24 cze 2009 11:32 przez uksz, łącznie zmieniany 2 razy.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: widmo amplitudowe sygnalu sinusoidalnego - problem

Post autor: jogurt_owocowy »

1. Jak zrobic by skladowa byla wyswietlana w formie slupka a nie ciaglego wykresu?
Patrz rysunek poniżej.
2. Dlaczego widmo na wykresie wskazuje niepoprawna częstotliwość? Zamiast wyświetlac 100 Hz to wyświetla coś kolo 8-10
A dlaczego przy podanych parametrach na wykresie Sygnał Uh w Twoim programie wartości X rozciągają się od zera do ponad pięciuset, skoro czas trwania sygnału to 0,05s? Ostatnie słowa są tu kluczowe: 8-10, ale czego? Chodzi o to, że nie są herce a po prostu numery próbek. Numer próbki mógłbyś przeliczyć na herce korzystając ze stosownego wzorku i odpowiednio ustawić etykiety osi X, ale na początek spróbuj rady uniwersalnej: do generowania i późniejszej analizy sygnałów skorzystaj z funkcji operujących na typie waveform.
Do wygenerowania sinusoidy zamiast Signal Generator by Duration użyj funkcji Sine Waveform, a do analizy np. FFT Spectrum (Mag-Phase).
Przewaga typu waveform nad zwykłym wektorem próbek jest taka, że ten pierwszy może przechowywać dodatkowe informacje o sygnale, w szczególności częstotliwość próbkowania. Dzięki temu po podłączeniu sygnału w postaci waveforma do Waveform Graph (nomen omen) osie X wyskalują się same i to zarówno w dziedzinie czasu jak i częstotliwości.
Spróbuj tego i jak coś to pytaj.
Ostatnio zmieniony 19 cze 2009 21:33 przez jogurt_owocowy, łącznie zmieniany 1 raz.
uksz
Posty: 30
Rejestracja: 18 cze 2009 14:02
Wersja środowiska: LabVIEW 8.0

Re: widmo amplitudowe sygnalu sinusoidalnego - problem

Post autor: uksz »

Dziekuje bardzo za pomoc, mam teraz tylko taki dylemat.
Po zakonczeniu symulacji, przejdziemy do zajec praktycznych gdzie bedziemy generowac i analizowac sygnaly na prawdziwych przyrzadach pomiarowych typu generatory itd i w tej symulacji musimy miec na wejsciu takie same parametry jak przy prawdziwych urzadzeniach, zatem chcialem tylko spytac czy Sine Waveform w tym przypadku jest wystarczalny, czy na prawdziwym generatorze podaje sie ilosc probek?

Wybacz za takie pytania ale jestem laikiem i pewnie wiele zalezy od tego jakiego typu to beda generatory, ja niestety tego nie wiem.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: widmo amplitudowe sygnalu sinusoidalnego - problem

Post autor: jogurt_owocowy »

czy na prawdziwym generatorze podaje sie ilosc probek?
W zasadzie wszystko zależy od tego jaki to generator, chociaż na zdrowy rozum to podajesz amplitudę i częstotliwość sygnału i generator wypluwa kolejne próbki sygnału cały czas. Liczbę próbek będziesz ewentualnie podawał określając parametry akwizycji sygnału tj. wielkość bufora karty pomiarowej, ale na razie się tym nie przejmuj. Jak już się dowiesz co to będzie za sprzęt i jak to będzie miało wyglądać, to wtedy będzie na to czas.
Pozdrawiam
uksz
Posty: 30
Rejestracja: 18 cze 2009 14:02
Wersja środowiska: LabVIEW 8.0

Re: widmo amplitudowe sygnalu sinusoidalnego - problem

Post autor: uksz »

Numer próbki mógłbyś przeliczyć na herce korzystając ze stosownego wzorku i odpowiednio ustawić etykiety osi X
Czy moglbys mi powiedziec z jakiego wzoru nalezy skorzystac i jak ustawic ta etykiete?
Moj nauczyciel uparl sie by korzystac z signal generator by duration.
uksz
Posty: 30
Rejestracja: 18 cze 2009 14:02
Wersja środowiska: LabVIEW 8.0

Re: widmo amplitudowe sygnalu sinusoidalnego - problem

Post autor: uksz »

Tworzony przeze mnie program ma za zadanie wyznaczyc kat przesuniecia fazowego pomiedzy dwoma sygnalami sinusoidalnymi o jednakowej wysokiej czestotliwosci. W tym celu uzywam 3x Sine Waveform
Pierwszy z nich genereuje sygnal sinusoidalny Uh z czestotliwoscia f1, z ktororym beda mieszane (mnozone) dwa pozostale sygnalu Uh i Ux generowane z czestotliwoscia f2,z ktorych ma zostac wyznaczony kat przesuniecia fazowego. Nastepnie wymnozone sygnaly sa filtrowane za pomoca filtru dolnoprzepustowego, by wyeliminowac skladowa sumacyjna i przeniesc sygnaly w pasmo niskich czestotliwosci. W kolejnym kroku wyznaczone zostaja katy fazowe obu sygnalow oraz ich roznica dajaca kat przesuniecia fazowego pomiedzy tymi dwoma sygnalami Uh i Ux.
Generalnie kat przesuniecia fazowego jest wyznaczany poprawnie, ale te wykresy nie bardzo mi sie podobaja. Przy wysokich czestotliwociach ciezko dostrzec na nich czy tam rzeczywiscie jest sinusoida, chcialbym by bylo widoczne tam kilka ookresow tych sygnalow. Widma amplitudowe tez nie zawsze wskazuja poprawna czestotliwosc skladowych wymieszanego sygnalu. Po filtracji przez 1-2 okresy wystepuje stan nieustalony, ktorego tez nie wiem jak sie pozbyc, chcialbym wyciac probki tych 2 okresow, ale nie wiem jaka to mialaby byc ilosc tych probek, a chcialbym zeby to robilo sie programowo bez ingerencji uzytkownika.
Pozdrawiam i prosze o pomoc.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: widmo amplitudowe sygnalu sinusoidalnego - problem

Post autor: jogurt_owocowy »

Czy moglbys mi powiedziec z jakiego wzoru nalezy skorzystac i jak ustawic ta etykiete?
Wzór na częstotliwość k-tego prążka (licząc od zera) na wykresie widma to Fk=k*fp/N, gdzie fp to częstotliwość próbkowania (w hercach), a N - długość sygnału poddawanego transformacji.
Kontrolka Waveform Graph ma fajną własność, którą możesz wykorzystać do ustawienia wykresu tak, aby oś X była wyskalowana w hercach - Offset and Multiplier. Sposób pokazany na pierwszym obrazku poniżej.
Ten klocek, do którego wędruje wynik z dzielenia to węzeł własności wykresu (Property Node). Tworzysz go klikając na terminalu kontrolki i wybierając z menu kontekstowego Create -> Property Node.
Przy wysokich czestotliwociach ciezko dostrzec na nich czy tam rzeczywiscie jest sinusoida, chcialbym by bylo widoczne tam kilka okresow tych sygnalow.
Znów możesz skorzystać z Property Node wykresu, tym razem żeby ustawić zakres osi X odpowiadający określonej liczbie okresów sygnału (rys. 2.).
Po filtracji przez 1-2 okresy wystepuje stan nieustalony, ktorego tez nie wiem jak sie pozbyc
Jeśli w niczym Ci ten stan nieustalony nie przeszkadza, to zostaw go jak jest - taka już uroda filtrów cyfrowych. W przypadku filtrów typu IIR (a takiego używasz do filtracji) wycięcie tych początkowych okresów jest trochę problematyczne, bo nie da się z góry przewidzieć jak długo ten stan nieustalony trwa.
Pozdrawiam
uksz
Posty: 30
Rejestracja: 18 cze 2009 14:02
Wersja środowiska: LabVIEW 8.0

Re: widmo amplitudowe sygnalu sinusoidalnego - problem

Post autor: uksz »

Do programu dopisalem jeszcze mozliwosc dodania szumow do sygnalow Un i Ux.
Przykladowo :
Sygnal Uh czestotliwosc
- 500 amp - 1
faza - 0
Sygnal Un czestotliwosc - 480
amp - 1 faza - 0
Sygnal Ux czestotliwosc - 480 amp - 1 faza - 45
Czestotliwosc probkowania - 1100 Ilosc probek - 2000
Przy takich parametrach jak powyzej, widma amplitudowe kompletnie sie nie zgadzaja, przyblizajac sobie wykres sygnalu Uh, raczej nie bardzo przypomina to sinusoide, szybciej przebieg trojkatny.
W razie gdy podczas dzialania programu zmienie faze ktoregos z sygnalow Un badz Ux to wynik kata przesuniecia fazowego zostanie obliczony dopiero po zatrzymaniu i ponownym uruchomieniu programu. Jak zrobic by obliczenia byly prowadzone w czasie rzeczywistym?
Wydaje mi sie ze przy uzyciu Signal generator by duration te sinusoidy prezentowaly sie o wiele lepiej.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: widmo amplitudowe sygnalu sinusoidalnego - problem

Post autor: jogurt_owocowy »

Przy takich parametrach jak powyzej, widma amplitudowe kompletnie sie nie zgadzaja
Że niby prążek składowej sumacyjnej jest nie tam gdzie powinien być? I nie będzie, bo nie są spełnione założenia Najważniejszego Twierdzenia Teorii Sygnałów.
Chciałbyś żeby składowa sumacyjna miała 980 Hz? To musisz częstotliwość próbkowania ustawić na co najmniej 1960 Hz. U Ciebie jest tylko 1100 i pojawia się aliasing.
Zapoznaj się z powyższymi linkami, bo to "ABC DSP" ;)
Swoją drogą piękny przykład działania teorii w praktyce! ]
Przy takich parametrach jak powyzej (...) nie bardzo przypomina to sinusoide, szybciej przebieg trojkatny.
Nie przejmuj się tym. Jakkolwiek może się to wydawać nieintuicyjne, to jeśli są spełnione założenia twierdzenia o próbkowaniu, to nawet taka brzydka sinusoida pozostaje sinusoidą pełną gębą.
Wydaje mi sie ze przy uzyciu Signal generator by duration te sinusoidy prezentowaly sie o wiele lepiej.
Wtedy po prostu byłeś bardziej odsunięty z częstotliwością próbkowania od teoretycznej granicy, nawet jeśli nie zdawałeś sobie z tego sprawy.
Jak zrobic by obliczenia byly prowadzone w czasie rzeczywistym?
Są prowadzone w czasie rzeczywistym, tylko najprawdopodobniej dają bezsensowne wyniki. Jak zmienisz fazy sygnałów, wyniki dalej są tak samo bezsensowne, więc nie zobaczysz różnicy. Rozwiązanie jest na obrazku poniżej. Ustaw wejścia reset signal wszystkich trzech generatorów sinusoid na TRUE.
Pozdrawiam
Ostatnio zmieniony 24 cze 2009 21:52 przez jogurt_owocowy, łącznie zmieniany 1 raz.
uksz
Posty: 30
Rejestracja: 18 cze 2009 14:02
Wersja środowiska: LabVIEW 8.0

Re: kat przesuniecia fazowego

Post autor: uksz »

Witam

na mej drodze do sukcesu pojawiaja sie kolejne pytania i problemy

Mianowicie przykladowo dla parametrow:

czestotliwosc f1 : 50 Hz
czestotliwosc f2 : 40 Hz
amplituda : 1 V
kat fazowy sygnalu Ux: 45 stopni
czestotliwosc probkowania :400 Hz
ilosc probek : 80
rzad filtru : 1

uzyskany przeze mnie kat przesuniecia fazowego pomiedzy sygnalami Un i Ux wynosi: 44.9266 stopni

Przy zmianie parametru rzad filtru na 2, wynik ten wynosi: 43,6885 stopni

Wydaje mi sie ze roznica pomiedzy tymi dwoma wynikami jest zbyt duza, czym moze to byc spowodowane? Czy moje parametry filtru dolnoprzepustowego sa blednie dobrane?
Dolna granica odciecia filtru to roznica pomiedzy czestotliwosciami f1 i f2 czyli : 10 Hz
Czestotliwosc probkowania filtru to 2x(f1+f2) czyli :180 Hz

Kolejna sprawa, dlaczego bloki Tone Measurements i Tone Measuremets2 wykazuja mi czestotliwosc sygnalu okolo 0,025 Hz?
Przeciez czestotliwosc skladowej roznicowej wymnozonych sygnałow Uh x Un oraz Uh x Ux powinna byc bliska 10hz?

Gdy zmienie czestotliwosc f2 na : 41 Hz to kat przesuniecia fazowego wynosi : 44,4603
Co rowniez wydaje mi sie duza roznica pomiedzy tymi dwoma wynikami?
Ale prawdopodobnie jest to spowodowane przeciekiem widma, czy moze jeszcze czyms innym?

Moze nalezy uzyc innych filtrow badz innych ich parametrow albo innych blokow do wyznaczenia katow fazowych, w celu uzykania lepszych wynikow?

Pozdrawiam i prosze o pomoc.

P.S.
LabVIEW 8.0
Załączniki
model symulacyjny 2 i szum - fin v2.vi
(223.67 KiB) Pobrany 547 razy
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: kat przesuniecia fazowego

Post autor: jogurt_owocowy »

Cześć,

Musimy zacząć od tego:
Czestotliwosc probkowania filtru to 2x(f1+f2) czyli :180 Hz
Dlaczego tak?
uksz
Posty: 30
Rejestracja: 18 cze 2009 14:02
Wersja środowiska: LabVIEW 8.0

Re: kat przesuniecia fazowego

Post autor: uksz »

Nie wiem na podstawie czego dobiera sie czestotliwosc probkowania filtrow wiec zastosowalem sie po prostu do Twierdzenie Kotielnikowa-Shannona.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: kat przesuniecia fazowego

Post autor: jogurt_owocowy »

zastosowalem sie po prostu do Twierdzenie Kotielnikowa-Shannona
Możesz dokładniej objaśnić, w jaki sposób?
uksz
Posty: 30
Rejestracja: 18 cze 2009 14:02
Wersja środowiska: LabVIEW 8.0

Re: kat przesuniecia fazowego

Post autor: uksz »

skladowa sumacyjna wymnozonych sygnalow o czestotliwosciach 50 Hz i 40 Hz to 90Hz wiec przemnozylem 90Hz przez 2 i wyszlo 180 Hz
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: kat przesuniecia fazowego

Post autor: jogurt_owocowy »

Twój problem jest taki, że nie znasz podstaw, a bez tego niestety ani rusz.
Zamknij ten projekt, weź jakąś książkę do teorii sygnałów (polecam Wprowadzenie do cyfrowego przetwarzania sygnałów Lyonsa) i opanuj podstawy: co to jest sygnał cyfrowy, co to jest częstotliwość próbkowania, dlaczego jest to wartość związana z sygnałem (a nie z filtrem)... Obiecuję, że (wcale niedługi) czas, jaki w to zainwestujesz, zwróci Ci się szybko w dalszej części projektu.

Częstotliwość próbkowania ma być jedna, odgórnie ustalona i tę jedną wartość masz podawać tak samo na wejścia generatorów sygnałów, jak i filtrów. Filtr rzędu 1 to też pomysł raczej dość wątpliwy. Spróbuj rzędu 10, zwiększ ilość generowanych próbek z 80 na 800 - powinno być dużo lepiej.
ODPOWIEDZ