Omijanie zapisu przy malych wahaniach wartosci

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Awatar użytkownika
Harnas
Posty: 152
Rejestracja: 16 mar 2011 09:56
Wersja środowiska: LabVIEW 2009

Omijanie zapisu przy malych wahaniach wartosci

Post autor: Harnas »

Witam,

musze przygotowac VI ktory bedzie zapisywal dane do pliku tylko wtedy kiedy sie ona zeminiaja ale z pominieciem przypadkowych wahan w jakims tam zakresie. Zapisywanie do pliku tylko przy zmianie wartosci dziala juz od dawna. Teraz przygotowalem testowy VI ktory ma przy zapisie pomijac odchyly o +-0,9 od poprzedniej wartosci i tez dziala. Problem polega na tym, ze jezeli dana wartosc bedzie rosla niezmiennie od 0 do powiedzmy 20 i zmieniala sie przy tym o mniej niz 0,9 to w gruncie rzeczy nic nie jest zapisywane bo roznica z poprzednia wartoscia jest mniejsza niz wyzej wymienione 0,9.

Docelowo podczas pomiaru wartosc bedzie rosnac do jakiejs stalej granicy i przez dluzszy czas na tej granicy sie wahac (w tym momencie zapisywanie kazdego odchylu do 0,9 jest zbedne). VI ma pomijac zapisywanie gdy wartosc przez dluzszy czas sie zmienia tylko nieznacznie. W zalaczniku moj VI.

Pozdrawiam.
Załączniki
Unbenannt 1.vi
(11.24 KiB) Pobrany 303 razy
Hruodberaht
Posty: 15
Rejestracja: 17 mar 2009 19:50
Wersja środowiska: LabVIEW 2010
Kontakt:

Re: Omijanie zapisu przy malych wahaniach wartosci

Post autor: Hruodberaht »

Co powiesz na podejście:
1. Zbieramy 1 próbkę i zapisujemy jako próbkę A.
2. Zbieramy 2. próbkę, zapisujemy jako próbkę B i porównujemy, czy różnica (B-A) jest większa od 0.9
3. Zbieramy 3. próbkę, zapisujemy jako próbkę C i porównujemy, czy różnica (C-A) jest większa od 0.9
Choć w zasadzie takie podejście ograniczy problem: jeśli zmiany będą stale wynosić 0.45, to jeszcze je złapie. Spróbuję wymyślić coś lepszego, ale to nie dzisiaj. Przynajmniej problem podbiję w górę, bo wyjątkowo uniwersalny.
Ostatnio zmieniony 15 lip 2011 22:49 przez Hruodberaht, łącznie zmieniany 1 raz.
CLAD + fotonika (czujniki światłowodowe)
Awatar użytkownika
smiga
Administrator
Posty: 799
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk

Re: Omijanie zapisu przy malych wahaniach wartosci

Post autor: smiga »

Nie wiem czy dokładnie zrozumiałem o co Koledze biega, ale jeżeli chcesz złapać zmianę w jakimś trendzie nawet jeżeli każda pojedyncza zmiana jest poniżej 0,9 to pokombinuj z rejestrem przesuwnym i uśrednianiem wartości z tego rejestru - przykład w załączniku (reaguje już przy zmianach co 0,4 ... 0,5)
Więcej rejestrów to mniejsza zmiana wykryta.
Załączniki
Unbenannt 1.vi
v2009
(9.14 KiB) Pobrany 292 razy
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Awatar użytkownika
Harnas
Posty: 152
Rejestracja: 16 mar 2011 09:56
Wersja środowiska: LabVIEW 2009

Omijanie zapisu przy malych wahaniach wartosci

Post autor: Harnas »

Zajalem sie dokladniej podanym przez Ciebie przykladem i pojawil sie pewien problem, wole sie dopytac zanim zaczne ze soba laczyc bloczki. Chodzi o to, ze w programie bedzie jednoczesnie zapisywana duza ilosc pomiarow. Stosowanie dla kazdego rejestru przesownego w glownym programie sprawia, ze wszystko przestaje byc przejrzyste. Z drugiej strony tworze subVI z podanym wyzej przykladem tez jest bez sensu z powodu petli while. Jest jakies latwiejsze wyjscie, czy ominiecie rejestru przesuwnego w glownym programie jest nie mozliwe ?
Awatar użytkownika
smiga
Administrator
Posty: 799
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk

Re: Omijanie zapisu przy malych wahaniach wartosci

Post autor: smiga »

Skorzystaj z funkcji bundle i unbundle (bundle by name i unbundle by name) czyli zbierz dane w jeden klaster i klaster podepnij do rejestru.
Czyli przed wejściem na rejestr z prawej strony bundlujesz, a po rejestrze z lewej unbundlujesz.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Awatar użytkownika
Harnas
Posty: 152
Rejestracja: 16 mar 2011 09:56
Wersja środowiska: LabVIEW 2009

Re: Omijanie zapisu przy malych wahaniach wartosci

Post autor: Harnas »

Witam ponownie,

testowalem podany przez smiga VI i zauwazylem, ze gdy chce ominac wahania temperatury o 1 stopnie w gore badz w dol, a jednoczesnie zapisywac temperatury tylko wtedy kiedy sie one zmieniaja program nie dziala tak jak nalezy. Wartosci nie sa zapisywane jezeli wzrastaja przykladowo od 0 do 10 po 1. Tak samo w druga strone. Jakies propozycje ?
Załączniki
archiwizowanie temp.vi
(18.14 KiB) Pobrany 288 razy
Awatar użytkownika
Ender
Posty: 137
Rejestracja: 02 cze 2005 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Cieszyn

Re: Omijanie zapisu przy malych wahaniach wartosci

Post autor: Ender »

Może takie rozwiązanie będzie satysfakcjonujące? Zamiast porównywać obecną wartość z poprzednimi próbkami, ich średnimi i czym tam jeszcze porównuję ją z wartością ostatnio zapisaną do pliku. Dodałbym jeszcze na wszelki wypadek zapis wartości co określony czas, bez względu na to czy była zmiana wartości czy nie - skoro wartość będzie stabilna, to może się zdarzyć że przez X godzin nie będziesz miał żadnych pomiarów, padnie zasilanie i będziesz się zastanawiał co się działo przez cały ten czas.
Wyrób też sobie nawyk nie korzystania z przycisku abort do zatrzymywania programu, nawet w najprostszych aplikacjach ;)
Załączniki
Zapis po zmianie1.vi
(12.25 KiB) Pobrany 293 razy
-Czy orał pan już kiedyś morskie fale?
Colon rzucił mu chytre spojrzenie.
-Nie złapie mnie pan na taki numer, sir - rzekł - Wszyscy wiedzą, że konie by potonęły.
Leonard umilkł na chwilę i przestroił swój mózg na Radio Colon ....
Awatar użytkownika
Harnas
Posty: 152
Rejestracja: 16 mar 2011 09:56
Wersja środowiska: LabVIEW 2009

Omijanie zapisu przy malych wahaniach wartosci

Post autor: Harnas »

Przewaznie mam buttona Stop, tutaj jakos wyjatkowo inaczej dalem bo docelowo to ma byc subVI. W podanym przez Ciebie programie przy ustawienu delty na 1 zapisywana przy ciaglym wzroscie temp o 1 co druga wartosc. Moze rzeczywiscie, porownywanie z ostatnimi zapisanymi do pliku wartosciami nie jest takim zlym pomyslem. Co do zapisywania co okreslony okres czasu, masz racje. To wazne i o tym zapomnialem.

smiga, nie wiem czy zauwazyles, ale podany przez Ciebie przyklad nie rejestruje zmian w ogole jezeli wartosc wzrasta caly czas o 0,1. Chcialem, zeby pomijal wahania do gory i w dol przykladowo o te 0,1 badz wiecej (zaleznie od tego co bedzie mierzone).
Ostatnio zmieniony 12 sie 2011 11:54 przez Harnas, łącznie zmieniany 1 raz.
Awatar użytkownika
smiga
Administrator
Posty: 799
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk

Re: Omijanie zapisu przy malych wahaniach wartosci

Post autor: smiga »

Harnas pisze:
testowalem podany przez smiga VI i zauwazylem, ze gdy chce ominac wahania temperatury o 1 stopnie w gore badz w dol, a jednoczesnie zapisywac temperatury tylko wtedy kiedy sie one zmieniaja program nie dziala tak jak nalezy. Wartosci nie sa zapisywane jezeli wzrastaja przykladowo od 0 do 10 po 1. Tak samo w druga strone. Jakies propozycje ?
Myślę że jest to kwestia doboru "szerokości zmian" czyli wartości stałych upper limit i lower limit w bloczkach In Range oraz doboru okienka czasowego (Wait), w którym zmiany są obserwowane.

Oczywiście pomysł Ender'a jest OK, a sugestia dotycząca zapisywania jak najbardziej do wdrożenia.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
ODPOWIEDZ