Strona 1 z 1

buforowanie danych pomiarowych

: 27 wrz 2010 19:30
autor: arczi
Witam. Mam w programie dwie pętle. Pierwsza pętla chodzi szybko i odczytuje dane pomiarowe. Druga pętla chodzi wolniej i zapisuje zebrane dane pomiarowe na dysk. Teraz chciałbym odczytane dane z pętli pierwszej zapisać na dysk (pętla druga) W jaki sposób zbuforować dane z pętli pierwszej aby zapisać wszystkie pomiary z pętli pierwszej?

Re: buforowanie danych pomiarowych

: 27 wrz 2010 20:27
autor: ky3orr
możesz na przykład przesyłać dane pomiarowe w pierwszej pętli do drugiej z użyciem kolejki, zaś w pętli drugiej dodawać je sobie do tablicy (po każdym odebraniu danej z kolejki) i gdy tablica ma odpowiedni rozmiar zapisać na dysk.

to tak na szybko wedle własnej wiedzy :)

pozdrawiam

Re: buforowanie danych pomiarowych

: 27 wrz 2010 20:48
autor: arczi
A jak użyć kolejki o której mówisz?

Re: buforowanie danych pomiarowych

: 27 wrz 2010 21:02
autor: arczi
Mam jeszcze pytanie odnośnie tych kolejek. Skoro szybka pętla będzie non stop dorzucać dane do kolejki, to jak zczytać na bieżącą wszystkie dane pomiarowe w petli która chodzi wolniej? Wydaje mi się że nie będę w stanie zapisać wszystkich danych pomiarowych.

Re: buforowanie danych pomiarowych

: 27 wrz 2010 21:52
autor: ky3orr
przekazywanie danych poprzez kolejkę to standardowa aplikacja frameworka: producent-konsument.

dane mierzone w pierwszej pętli są przekazywane do drugiej za pomocą kolejki.
tam są odbierane, wrzucane do tablicy i gdy jest odpowiednia ich ilość np. zapisywane na dysku.



jeśli chodzi o to, że druga pętla chodzi wolniej możesz w pierwszej pętli wykonać dodawanie kolejnych pomiarów do tablicy i gdy pakiet bedzie odpowiednio duży dopiero taką tabelę wrzucać do kolejki.
druga pętla odbierze taki pakiecik i zapisze np. od razu na dysk.

mam nadzieję, że jakoś pomogłem :)

pozdrawiam

Re: buforowanie danych pomiarowych

: 28 wrz 2010 22:50
autor: arczi
Kolego ky3orr mam jeszcze pytanie odnośnie zamieszczonego przez ciebie programu. Przetestowałem go sobie i potrzebowałbym pomocy w jego rozwinięciu. Chciałbym wrzucać do kolejki w szybszej pętli dwie dane pomiarowe - czas oraz zmienną procesową. Teraz w wolniejszej pętli potrzebowałbym przechwycić te dane w formie tablicy, gdzie w kolumnie 1 ma byc czas, w kolumnie 2 zmienna procesowa, zaś w wierszach poszczególne pomiary. Jak to zrobić?

Re: buforowanie danych pomiarowych

: 29 wrz 2010 01:01
autor: ky3orr
arczi w jakiej postaci zapisujesz czas (timestamp, date/time rec, liczba double, integer) i zmienną procesową?

ponadto ile pomiarów "na raz" chcesz przesyłać z tej szybszej pętli do wolniejszej?

uprzedzając fakty dane z kolejki są odbierane w takiej samej formie jak sa nadawane. jak wpuścisz tablicę to i takową odbierzesz z kolejki :)

pozdrawiam

Re: buforowanie danych pomiarowych

: 29 wrz 2010 07:07
autor: arczi
Zmienna procesową oraz czas chce zapisywać w formacie liczby integer. Chciałbym za jednym razem przesyłać około 1000 pomiarów, by potem zapisywać je w wolniejszej pętli.

Re: buforowanie danych pomiarowych

: 29 wrz 2010 09:30
autor: ky3orr
kolego podeślij kawałek kodu z tymi 2 pętlami ponieważ nie bardzo wiem jak generujesz dane i jak je odbierasz.

generalnie po wstawieniu danych do tablicy należałoby sprawdzić jej rozmiar i jeśli 1000 to wrzucenie tablicy do kolejki i jej opróżnienie.

w drugiej pętli odbierasz nadane 1000 rekordów i wykonujesz dalsze działania.

Re: buforowanie danych pomiarowych

: 30 wrz 2010 10:47
autor: arczi
Ok zamieszczam swój kod. Udało mi się stworzyć tablicę, przesłać ją poprzez kolejkę do drugiej pętli oraz tam zapisać dane pomiarowe. Proszę o sprawdzenie diagramu blokowego czy wszystko jest ok.

Re: buforowanie danych pomiarowych

: 30 wrz 2010 14:30
autor: ky3orr
na mój gust jest to raczej poprawny kod.
można pokusić się o to by zakończeniem pierwszej pętli sterować jakimś przyciskiem, lub sygnałem innym niż błędu.

pozdrawiam

Re: buforowanie danych pomiarowych

: 06 paź 2010 16:00
autor: arczi
Mam jeszcze pytanie - czy taką kolejkę można zastosować w LabVIEW RT?

Re: buforowanie danych pomiarowych

: 07 paź 2010 02:18
autor: skoziate
Można, ale po pierwsze nie masz kontroli nad buforami pamięci (osobiście sprawiało mi to problemy na RT), a po drugie kolejka nie jest deterministyczna. Zamiast tego polecma RT FIFO. W RT FIFO trzeba jednak z góry podać objętość przesyłanych danych i nie wszystkie typy danych są obsługiwane (na przykład klastry).

Re: buforowanie danych pomiarowych

: 13 paź 2010 19:35
autor: arczi
A czy można prosić o jakiś przykłądzik na RT FIFO żeby działał analogicznie jak mój program oparty na kolejkach?