Program do analizy przebiegów

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
kali
Posty: 18
Rejestracja: 22 wrz 2011 14:27
Wersja środowiska: LabVIEW 2017

Program do analizy przebiegów

Post autor: kali » 14 sty 2019 15:51

Witam szanowne grono

Od jakiegoś czasu walczę z programem do analizy przebiegów napięciowych.
Pokrótce opisze co ma on robić:
1. umożliwiać analizę przebiegu napięciowego z rejestratora zapisanego w pliku .csv;
2. umożliwić odczytanie takich wartości napięcia jak RMS, Upp, THD, f, Amin, Amax;
3. obliczać współczynniki amplitudy ka i głębokości modulacji amplitudy;
4. obliczać dryft częstotliwościowy w ciągu 60s;
5. analizować kształt napięcia ( określać odchylenie od kształtu sinusoidy zgodnie ze wzorem (15,5+5,5cos2alfa)%;

Jak do tej pory udało mi się napisać część kodu odpowiedzialną za wczytywanie danych z pliku .csv oraz wyodrębnianie z niego poszczególnych informacji: informacji o pliku pomiarowym, danych liczbowych potrzebnych do stworzenia przebiegu w postaci kolumny, oraz wartości częstotliwości próbkowania dt potrzebnej do dalszych obliczeń.
Mam także funkcje które na podstawie dt i czasu dla jakiego ma być przeprowadzana analiza (domyślnie 60s) odlicza ilość próbek potrzebnych do dalszej analizy, żeby nie obrabiać zbędnych danych.
Dalej mam funkcje, która za pomocą bloczków waveform mesurement daje mi wartości napięcia Urms itd.
Całość programu oparłem o state machine.

Mam jednak problem z jej działaniem, ponieważ nie wiem czemu zawiesza się na wczytaniu danych i nie chce przystąpić do obliczania ilości próbek potrzebnych do analizy. Nie wiem gdzie tkwi błąd.
Nie wiem także jak zabrać się za kształt napięcia. Nie mam pomysłu jak określić kąt na którym występuje zniekształcenie i jaką ma amplitudę.
Może mogli byście coś podpowiedzieć i przy okazji zerknąć na poprawność kodu. Projekt ten traktuje jako możliwość dalszej nauki i podnoszenia swoich umiejętności w LabView dlatego nie chce gotowych rozwiązań. I proszę nie przenoście tego tematu do działu "dam prace" :D
Załączniki
Analiza danych z rejestratora.rar
(1.99 MiB) Pobrany 48 razy
widok analizotora.png

Adrian47
Posty: 3
Rejestracja: 19 paź 2018 15:35
Wersja środowiska: LabVIEW 2017

Re: Program do analizy przebiegów

Post autor: Adrian47 » 14 sty 2019 20:28

Struktura Event ma to do siebie, że czeka na Event lub timeout (który u Ciebie nie występuje). Więc w momencie wejścia w stan "Wczytanie danych" struktura Event czeka na wciśnięcie przycisku "Open Button". Jednak w międzyczasie wykonuje się reszta kodu w tym casie która nie wymaga wyniku z Eventu (poczytaj o DataFlow) czyli zostaje zczytany stan przycisku "analiza danych" (odpal żarówkę wszystko będzie bardzo ładnie widać co kiedy się wykonuje) który jest w tym momencie False (zczytywanie z terminala kontrolki na nic nie czeka po prostu czyta stan aktualny), czyli zaraz po wejściu do stanu "Wczytanie danych" na terminalu wyjściowym z niego już czeka znowu stan "Wczytanie danych", program więc do niego idzie i znowu czeka na wciśnięcie przycisku "Open Button" w nieskończoność (bo już go nie widać więc nikt go nie kliknie) co powoduje teoretyczne zwieszenie.
Polecam, żebyś najpierw (po poczytaniu o Eventach i DataFlow) zrobił nowy stan Idle ze strukturą Event (tylko jedną na cały program) w środku, po stanie Init idziesz do Idle, tam Event czeka na twoje czynności (obsługuje wszystkie buttony które mają coś wykonać), po kliknięciu konkretnego przycisku idzie do określonego stanu (np. Wczytanie danych) a stamtąd wraca do Idle i znowu czeka na czynność użytkownika.

kali
Posty: 18
Rejestracja: 22 wrz 2011 14:27
Wersja środowiska: LabVIEW 2017

Re: Program do analizy przebiegów

Post autor: kali » 15 sty 2019 15:28

Dzięki za uwagi. Uzupełniłem trochę wiedzę i już wszystko działa jak należy. Program się nie zawiesza i podaje prawidłowe wartości parametrów napięcia.

Teraz zmagam się z analizą przebiegu pod kątem kształtu napięcia i dryftu częstotliwościowego.
Co do kształtu to wpadłem na pomysł aby porównywać badany sygnał z wzorcem generowanym w programie. Co wy na to? Dobry pomysł.

Adrian zamieszczam poprawiony kod czy o takie rozwiązanie ci chodziło czy jest coś w nim jeszcze do poprawienia?
Załączniki
Analiza danych z rejestratora.rar
(1.93 MiB) Pobrany 22 razy

kali
Posty: 18
Rejestracja: 22 wrz 2011 14:27
Wersja środowiska: LabVIEW 2017

Re: Program do analizy przebiegów

Post autor: kali » 27 sty 2019 16:33

Znalazłem trochę czasu i coś pokombinowałem z kształtem przebiegu. Nie udało mi się zrobić tego automatycznie ale manualnie.
Za pomocą kursorów na wykresie ustawiam parametry potrzebne do obliczeń.
Widok analizatora.png

ODPOWIEDZ