Jak obliczyć potrzebną pamięć do obsługi bufora programu?

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
spalinowy
Posty: 101
Rejestracja: 03 lut 2012 15:09
Wersja środowiska: LabVIEW 2017
Lokalizacja: Warszawa
Been thanked: 3 times
Kontakt:

Jak obliczyć potrzebną pamięć do obsługi bufora programu?

Post autor: spalinowy » 20 gru 2017 20:05

Witam,

problem mam jak w temacie. Chodzi mi o obliczenie odpowiedniej przestrzeni pamięci, która posłuży jako bufor. Dajmy na to, że typ danych to SGL, do tego 4 kanały o próbkowaniu 1 kHz. Obecnie daję na oko, ale jak to wyznaczyć? Bo łatwo przesadzić i w jedną i drugą stronę.
Głownie problem pojawia się jak tworzę nowy plik do zapisu, bo wtedy dane zapełniają bufor, a jeśli okno będzie otwarte za długo, to bufor się przepełni i wyskoczy błąd.

pawhan11
Posty: 61
Rejestracja: 21 wrz 2011 16:25
Wersja środowiska: LabVIEW 2012

Re: Jak obliczyć potrzebną pamięć do obsługi bufora programu?

Post autor: pawhan11 » 20 gru 2017 22:10

Zależy jaka duża historia jest potrzebna, powinno być to przez kogoś zdefiniowane inaczej na zdrowy rozsądek. Przy 1k o obecnych rozmiarach ramu to kilka minut spokojnie może być.
Zainicjalizuj sobie tablice na początku programu + jakis wskaznik ile danych jest wypełnione w buforze + rotowanie i nadpisywanie tych danych. Alternatywnie na szybko można zrobić fixed queue dla każdego kanału wtedy masz rotowania z głowy, tylko się trzeba pobawić z jakims lockowaniem żeby dane się nie poprzesuwały wzgledem siebie.

https://lavag.org/topic/3469-data-loggi ... ar-buffers
https://lavag.org/topic/20356-a-simple- ... fer-input/
CLS - Certified LabVIEW Student

spalinowy
Posty: 101
Rejestracja: 03 lut 2012 15:09
Wersja środowiska: LabVIEW 2017
Lokalizacja: Warszawa
Been thanked: 3 times
Kontakt:

Re: Jak obliczyć potrzebną pamięć do obsługi bufora programu?

Post autor: spalinowy » 20 gru 2017 23:32

Na sztywno tak właśnie robię, że mam tablicę, mnożę ją z próbkowaniem i współczynnikiem. I właśnie ten współczynnik jest kluczowy, bo nie wiem jak go określić. Jednak chciałbym umieć określić ile moje tablice zajmą pamięci i nie dobierać go na chłopski rozum.
Natomiast nadpisywanie tablic raczej nie jest możliwe, gdy używam DAQmx, bo na początku trzeba zdefiniować ustawienia.

Awatar użytkownika
czab
Posty: 54
Rejestracja: 26 cze 2011 14:59
Wersja środowiska: LabVIEW 2011

Re: Jak obliczyć potrzebną pamięć do obsługi bufora programu?

Post autor: czab » 21 gru 2017 00:03

Ja daje taki bufor, by odpytywanie z DAQmx odbylo sie gdzies pomiedzy 100ms - 250ms. Wtedy watek chodzi zwawo i rzesko, timeout mozna ustawic na sekunde i Windows powinien sobie spokojnie radzic z tak zawrotnym tempem.

Nie uzaleznialbym tego od historii. Akumulacja danych przy obecnym RAM w osobnym buforze na potrzeby przetworzen to na ogol malutki problem.

Wiecej uwagi poswiecam tematowi, kiedy albo jest multum kanalow, albo kosmiczna predkosc probkowania, albo jakies bardzo specjalne obliczenia "w locie". Z reszta, w tym ostatnim przypadku i przy zapisie do plikow (szczegolnie TDMS), czesto zrzucam dane do innego dodatkowego bufora i np. zapisuje raz na 20 akwizycji zeby plik nie puchl od metadanych.
Obrazek

ODPOWIEDZ