05-06-2011 10:46 AM - edited 05-06-2011 10:47 AM
I am wondering why it does not seem to be possible to setup DAQmx TDMS streaming on more than one task simulataneously to the same TDMS file.
This can be done programmatically but it seems to be prohibited when using the Configure TDMS Logging vi, which will result in an error when the DAQmx read is executed.
05-08-2011 09:37 PM
05-09-2011 08:37 AM
Hi Andy,
Thanks for your help in understanding how TDMS is working under the hood. I suppose I will take your advise on trying to keep the TDMS files seperate. I did not originally want to do this
because I have so many different tasks as the result of numerous encoder channels which unfortunately each need their own task. I think there is a huge use case here that NI does not really address very well. That is were you either would like to aggregate AI and Counter channels together in the DAQmx task (perhaps a new type of composite task would be interesting) or aggregate the data in the TDMS file. The other thing missing for this type of application is a TDMS like data structure that functions more like a realtime database something like TDMS + SQLlite or Citadel. Maybe this would be a good task for the SE group to chew on 🙂
05-09-2011 11:16 AM
With the composite task idea, I think it's important that within a task, every part of the task has the same timing. It seems like combining AI and CI would generally produce dissimilar timing. Additionally, it would get a bit strange when you go to do a read.
As to the database setup for TDMS, what exactly would you be looking for? DataFinder, for example, currently provides querying capability wherein it looks at various properties from TDMS files indexed on your system. Some of TDMS files' architecture is to alleviate the need for a database (although it's clearly not a complete replacement). If you can shed light on specific abilities that you're looking for, that might help frame what is lacking. (As a bit of background, here's a previous post wherein I described some of the ways that TDMS is similar to a database: http://forums.ni.com/t5/LabVIEW/Datastore-options-TDMS-or-Database/m-p/1284680#M533488)
05-09-2011 05:00 PM
The very common use case is were you need to create a general data logger that can capture, display and log any sort of data a user might be able to configure on a PXI chassis. That might include AI, DI and counter type data such as encoders. You can either try to sample at a uniform data rate (some slow channels may be oversampled to acheive this) and then aggregate all of the data to one TDMS file. Otherwise you will need a TDMS file for each data rate and each task. A good multirate High Speed TDMS Data Logger Reference design is conspicuously missing.
05-09-2011 05:54 PM
Just for clarification, is this use case specifically in reference to your statement:
The other thing missing for this type of application is a TDMS like data structure that functions more like a realtime database something like TDMS + SQLlite or Citadel
Additionally, please note that what you are wanting to do with multiple tasks/rates to the same file is currently possible and relatively easy - just not with the built-in logging feature. It does not provide the optimal performance, but if your performance requirements do not dictate that you have to optimize a lot, this might very well not be a problem for you. Furthermore, you can reduce the number of headers by setting the property NI_MinimumBufferSize on every channel after opening your file.
01-14-2014 01:19 PM - edited 01-14-2014 01:35 PM
<The binary concatination does not seem to work. Using v2 of TDMS. Can you please elorbate on this method of merging TDMS Files.> <-- Remeber to disable prepending array/string sizes to Binary Files. I can't count the number of times this input has messed me up.
Thanks,