Zapis danych z pomiarów

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
celsjsuz
Posty: 13
Rejestracja: 02 lut 2010 19:22
Wersja środowiska: LabVIEW 8.5

Zapis danych z pomiarów

Post autor: celsjsuz »

Witam... znowu napotkałem na problem, z którym nie mogę sobie poradzić.Tytułem wstępu załączony plik to VI ćwiczebny, na którym próbuje w domu swoje pomysły. W rzeczywistości właściwy program zbierać będzie dane z rejstratora temperatury. To maksymalnie 20 kanałów (po 20 próbek czasu i wartości mierzonych), w regulowanych odstępach czasu (czas skanu 20 kanałów ok 300ms)... Po upłynięciu ustawionego czasu urządzenie wysyła dane w postaci wektorów array wartości mierzonych oraz odstępu pomiędzy pomiarami. Mój program grupuje/rozdziela je na kolumny symbolizujące mierzone kanały. Wyświetla wartości na wykresie/zapisuje do tabeli/pokazuje na bargrafach. Jednak po zapisie danych do pliku - KASZA... początkowe wiersze to tylko czas zapisu wiersza, po czym zapisywane są te same dane w kilku kolejnych liniach.
Zależy mi tu przy tym by zapis odbywał się na bieżąco. By na przykład w przypadku awarii, zwiechy, nie stracił pomiarów. Dlatego bloczków zapisu danych nie chce umieścić za pętlą while (tak by wykonywały się po zakończeniu pomiarów). Blok inicjalizujący kolejne odczyty z bufora urządzenia znajduje się właśnie w pętli while.
Proszę o pomoc....
Załączniki
bargraf.vi
(99.49 KiB) Pobrany 362 razy
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Zapis danych z pomiarów

Post autor: jogurt_owocowy »

Przy zapisie do pliku zamiast Write to Binary File, użyj Write to Text File (patrz obrazek) i od razu będzie lepiej.
Nie wiem jaką rolę miała tam spełniać funkcja Search/Split String, więc ją usunąłem.
writing appending rows to text file.png
writing appending rows to text file.png (4.38 KiB) Przejrzano 10614 razy
celsjsuz
Posty: 13
Rejestracja: 02 lut 2010 19:22
Wersja środowiska: LabVIEW 8.5

Re: Zapis danych z pomiarów

Post autor: celsjsuz »

Dziękuje ... jest lepiej, niemniej jednak VI write to text file, również wpisuje mi do pliku TXT kilka razy tę samą wartość ( przy ustawieniu czasu odświeżenia pętli while na 1sec... 3 razy)... przy czym czas (dodawany do stringa przed zapisem do pliku) zmienia sie.... Ma któryś z szanownych forumowiczów pomysł jak rozwiązać ten problem. Może po prostu do temetu zapisu danych do pliku należy podejść inaczej ( tylko jak ?? )
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Zapis danych z pomiarów

Post autor: jogurt_owocowy »

Zamieść swój program wraz z subviajami (Demo) Thermometer.vi i Display Table...vi.
Awatar użytkownika
smiga
Administrator
Posty: 824
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Zapis danych z pomiarów

Post autor: smiga »

Patrząc na ten kod nie widzę powiązania pomiarów z czasem odświeżania pętli. Nie wiem co się dzieje w "Display Table Incre.vi" - być może tam wymuszane są pomiary przy każdym cyklu pętli głównej... a być może gdzieś indziej bo nie widzimy miejsca zbierania pomiarów (za to widzimy case'a na dole, który nic nie robi :) ).
W każdym razie jeżeli tak jest, że pomiar nie jest zsynchronizowany z kolejną iteracją pętli, to łatwo sobie wyobrazić sytuację, w której mamy 100 pomiarów ustawionych w tablicy jako 100 wierszy, zapisujemy 98 do pliku (nie wiem czemu akurat jest 100-2), a przy następnym przebiegu pętli nie było pomiarów i znowu ten sam 98 jest zapisywany do pliku.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
celsjsuz
Posty: 13
Rejestracja: 02 lut 2010 19:22
Wersja środowiska: LabVIEW 8.5

Re: Zapis danych z pomiarów

Post autor: celsjsuz »

Parę zdań tytułem sprostowania:

- Jak już pisałem zamieszczony program to Vi ćwiczebny. Struktura case zawiera śmieci, fragmenty kodu skopiowane, na których przykładzie uczyłem się jak funkcjonują poszczególne algorytmy. Tym razem (bez powodzenia) chciałem dowiedzieć się jak w prosty sposób zapisywać na bieżąco mierzone dane. Struktura Case ma na stałe Bool'a na False, wiec w trakcie działania programu nic się wewnątrz niej nie dzieje

- VI Search/Split String służył mi do czego innego. Otóż początkowo założyłem sobie że dane do zapisu pobierał będę za pętlą for filtrującą dane pomiarowe od timestamp'ów. A to co potrafiłem do celów filtrowania zbudować, generuje mi array'a, który ma 40 pól, co przy założeniu że mierze 20 kanałów zapisuje niepotrzebne zera.
Wejście do bloczku zapisu przełączyłem jednak przed pętle by lepiej widzieć co mi się zapisuje (cyfry bez miejsc po przecinku [licznik pętli] łatwiej jest policzyć i sprawdzić czy się powielają, ile razy się powielają itd)...

- Dodam jeszcze (pewnie się powtarzam :) ) że rzeczywisty program ( ten z Vi'ami od Keithley'a 2701) wykonuje, po odpowiednio nastawionej przerwie, scan (pomiar i zapis do bufora wewnętrznego urządzenia nastawionej liczby kanałów) i wysyła wektor array z wykonanymi pomiarami do labview. Podobnie jak w programie "ćwiczebnym" rzeczywisty program dodaje gromadzone pomiary do shift register i podaje przez "interlive array" na dołączone bloki.

DO "smiga": Gdy zobaczyłem rezultaty zapisane w pliku również nie potrafiłem ( dalej nie potrafie) powiedzieć dlaczego tak się tak dzieje jak się dzieje(ten cały brak synchronizacji i bezwładne śmieci w pliku). To wygląda tak jakby bloczek zapisujący dane robił zapis tego samego array'a kilku krotnie ( nim następny się w pętli for "odfiltruje").
Nie wiem czy to ma jakiś związek, ale czy można wykorzystać VI'je z bloku "synhronization" - tak by bloczek zapisu poczekał na nowego array'a z dazymi
Załączniki
DisplayTable - Incre.vi
(53.7 KiB) Pobrany 357 razy
bargraf.vi
(80.45 KiB) Pobrany 349 razy
Awatar użytkownika
smiga
Administrator
Posty: 824
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Zapis danych z pomiarów

Post autor: smiga »

Odnośnie usuwania zbędnych zer masz tu:

http://labview.pl/viewtopic.php?f=12&t= ... zer#p12623

Wracając do głównego problemu, niestety zapis był w każdej iteracji pętli,a zbudowanie tablicy też zajmuje kilka iteracji - więc zapisuję te same dane do pliku wielokrotnie.
Poniżej drobna poprawka usuwająca problem (jedna z możliwych do zastosowania) ... mam nadzieję, że o to chodziło (w wersji 8.0):
Załączniki
testowy1.jpg
bargraf-1-2.vi
(70.31 KiB) Pobrany 351 razy
Ostatnio zmieniony 18 lut 2010 11:23 przez smiga, łącznie zmieniany 2 razy.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
celsjsuz
Posty: 13
Rejestracja: 02 lut 2010 19:22
Wersja środowiska: LabVIEW 8.5

Re: Zapis danych z pomiarów

Post autor: celsjsuz »

używam LV 8.0 .. moglbym prosić o konwersje ?...
Awatar użytkownika
smiga
Administrator
Posty: 824
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Zapis danych z pomiarów

Post autor: smiga »

No i jakie rezultaty prac?
Mam nadzieję, że zauważyłeś plik w wersji 8.0 ... ?
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
celsjsuz
Posty: 13
Rejestracja: 02 lut 2010 19:22
Wersja środowiska: LabVIEW 8.5

Re: Zapis danych z pomiarów

Post autor: celsjsuz »

Tak dziękuje ( dostałem info na Priva)... rzeczywiście teraz działa... sprytny sposób, muszę przyznać (nie wpadłbym sam na to). Do chwili obecnej nie miałem zbyt wiele czasu by przeprowadzić jakieś poważniejsze krasztesty ... ale dziś nie omieszkam. Jeszcze raz dziękuję za pomoc
ODPOWIEDZ