NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

求助用TDMS存储数据的时间问题

已解决!
转到解答

        我用TDMS文件来存储多通道数据采集得到的波形数据,设的采样率是1000,每通道采样数是512,循环延时是1秒。在采集时,通过波形显示,可以看出采到的波形是一段一段的,每段有512个点,每秒中有一段。时间轴上显示的绝对时间是对的。

        把采到的波形数据存储后,再读取时,通过波形显示发现,各段波形已经被连接起来,整个数据文件显示的时间只有实际时间的一半左右(这跟延时设置有关)。也就是说各段波形其显示时间与它的真实时间不一致了。只有第一段波形t0是对的,后面就不对了。

        采到的波形是含时间的,为什么存储之后,就不对了,不明白。希望知道的人帮忙解答一下,非常感谢!

0 项奖励
1 条消息(共 6 条)
6,133 次查看
解答
已被主题作者 countryboy 接受

是的,这是一个TDMS已知的问题,TDMS会将同一个channel中的数据存在一起,默认地认为他们在时间上是连续的。

暂时的一个解决方法是:如果方便,请把不同时间采集的数据放到不同的channel中。

0 项奖励
2 条消息(共 6 条)
6,130 次查看

谢谢你的解答!

我要采的就有16个模拟输入通道,要把不同时间采集的数据放到不同的channel中,存储和读取感觉都很不好处理。

之前对TDMS了解并不是很多,不知道有这个问题。或许只能换存储的文件格式?一般有哪些文件类型不会存在这个问题?

0 项奖励
3 条消息(共 6 条)
6,126 次查看

其他文件格式是否会有这样的问题,我也没有试过,不过可以肯定的是TDMS是LabVIEW自带文件格式中存储格式最为优良、最为高效的一种。

如果使用TDMS ,还有其他几种方法:1)把每个通道存储为TDMS的一个group,然后每次采集的数据作为TDMS的channel,这样你就有16个tdms的group;2)还是一个通道存到一个tdms的channel中,如果每次采集的数据量一定,那么可以把每次采集的数据的起始时间作为一个属性存下来,但是在读取数据的时候可能要稍微做点编程工作,把他们拆分开来。

0 项奖励
4 条消息(共 6 条)
6,093 次查看

我现在是将每一段数据存成一个group,其中每个group里存了16个channel的数据。

读的时候采用for循环,将每个group里的数据读出。这样好像就解决了存储的波形的时间的问题。

不知这样的方式是否可用。

读数据时,遇到了一些麻烦。从for循环出去之后,如果自动索引启用的话,信号就成了二维数组,要是关闭自动索引,就只有最后一段波形输出了,所以还得想想办法。

总之,谢谢你的建议!

0 项奖励
5 条消息(共 6 条)
6,083 次查看
对,你的办法完全可以。不用客气。
0 项奖励
6 条消息(共 6 条)
6,076 次查看