Hi all,
I am sure what I am about to ask is a fairly common question, but I can't seem to find a sensible answer on the forum, so here goes: (apologies for the long post, I am trying to be thorough)
What is the best format to store data in?Of course there are dozens of answers, and in reality it depends on the application. So without further ado, here is some additional information:
The data is logged from a DAQ device, at rates up to 10 kHz, several channels, and for a few hours. So the data files can potentially grow up to several hundred megs big (typically if the data acquisition period is more than a few minutes then the sampling rate will be limited to 1 kHz).
At the moment, I am collecting data and writing it, on the fly, as text to a file. As mentioned, the files can get up to a few hundred megs big. This file is then visualised in MATLAB, and can take several minutedson my rusty Pentium IV to display, but MATLAB manages to do the necessary file reading/memory allocation/graphing without too much problem.
I wish to remove the MATLAB requirement, so I decided to create a viewer application in LabVIEW.
I know that text format is quite inefficient, and so I moved over to a binary format in the flavour of TDM (not TDMS, I am using LV 7.11) and this is where the trouble starts. Firstly, doing on the fly writes to a TDM file caused my PC memory usage to climb unbounded! This was solved using the TDM header VIs which someone on the forum suggested. The next problem comes when trying to view the data. I have a separate viewer application, which is just a simple read from TDM file and plot to graph. Wow! The performance is horrible!!! As TDM does not, as far as I can tell, allow only portions of the data to be viewed the whole application basically hangs as windows tries to allocate several gigabytes of memory to process my 200 MB data file!!! So thats a dead end there...
I have read about hierachical waveform storage (HWS), and also know that streaming TDM (TDMS)exists in newer versions of LV.
Can anyone provide any insight into which of these formats would be more suitable for my application. I quite like the TDM format, it seems to provide most of what I require except the performance, so I am hoping TDMS will solve most of these. I don't know that much about HWS. Another reason I want to use TDM(s) is that it integrates well with Diadem.
Any advice??
Thanks to anyone that took the time to read this far, more thanks to anyove who replies!