05-19-2010 11:47 AM
I am collecting 5 channels of data at 80kHz continuously. I collect blocks of 800 samples/channel using DAQ assistant then index the data on the loop. I need to display this data as one long continuous "block" so i append each array to the next. I believe there has to be a better way of doing this. I have attached screen shot of block diagram. Any help is greatly appreciated.
-Jake
05-19-2010 12:09 PM
05-19-2010 01:00 PM
I could use same loop but I want the acquisition to be as fast as possible. I just need to know if there is a way to append my data that will use less memory because right now I am getting a memory full error.
-Jacob
05-20-2010 03:39 AM
Hi Jacob,
you acquire 5 channels with 80kHz. Let's do some math:
5*80kHz = 400.000 samples per second.
400kS/s of DBLs = 400.000 kS/s * 8 Byte = 3.2MB per second
So you get 3.2MB of data each second. How long do you measure? In one minute you collect ~200MB of data, surely enough to force you into "Out of memory" messages...
You should think about:
- not using a While loop for measurement (as LabVIEW doesn't know the final array size before the loop starts)
- using queues
- using a proper Producer/Consumer structure
- not using the DAQ-Assistent for these data rates due to high overhead
- reading the knowledge base article on "Handling large datasets"
05-20-2010 04:31 PM
GerdW provided some excellent advice!
Dealing with large datasets in LabVIEW is definitely an art which requires good programming practices.
You may also find this KnowlegeBase article useful.
Why do I get "Memory is Full" Error in LabVIEW?