Strona 1 z 1
Omijanie zapisu przy malych wahaniach wartosci
: 15 lip 2011 11:56
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.
Re: Omijanie zapisu przy malych wahaniach wartosci
: 15 lip 2011 22:15
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.
Re: Omijanie zapisu przy malych wahaniach wartosci
: 15 lip 2011 22:47
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.
Omijanie zapisu przy malych wahaniach wartosci
: 29 lip 2011 14:17
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 ?
Re: Omijanie zapisu przy malych wahaniach wartosci
: 29 lip 2011 15:18
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.
Re: Omijanie zapisu przy malych wahaniach wartosci
: 11 sie 2011 10:32
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 ?
Re: Omijanie zapisu przy malych wahaniach wartosci
: 11 sie 2011 11:27
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 ;)
Omijanie zapisu przy malych wahaniach wartosci
: 12 sie 2011 11:31
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).
Re: Omijanie zapisu przy malych wahaniach wartosci
: 12 sie 2011 11:52
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.