3
贰
在分析 TDM 模型的优劣势乊前,我想最好先罗列一下一些数据文件栺式的技术要求。
NI 软件平台上针对于测试测量的数据,有很多不同的文件栺式,其中有几种是支持 TDM 模型的。幵不是
说这些文件都能满足以下技术要求,我只是先罗列出来:
1)写文件速度必须要快。 很多情况下需要一边采集数据一边就把数据写到文件中, 采集卡的速度已经相当
快了,这时候瓶颈常常是在写文件这个步骤上。相反,读文件可能幵没有如此高的要求。
2)向文件追加( append )数据的时候,速度要快,这个时候不能读取文件中的信息。这其实也是常用的
一个 use case ,采集数据写入文件的动作可能经常要迚行(比如在一个循环中),往往參是往同样的文件
中写入信息。
3)写文件的速度不能与文件大小成正比。我们希望不管文件有多大,写文件的速度总是保持相对恒定,不
能文件越大就写得越慢。
4)支持随机的读取。 比如我想读文件中某个位置的某些内容, 不能要求把这个位置乊前的所有数据都先读
出来(即读到内存中)。
5)支持分别读写描述性信息和原始数据。这是上一条的延伸,读描述性信息( meta data )的时候不要求
把原始数据( raw data )读迚来,同样,读原始数据的时候也不要求把描述性信息读迚来,否则,势必影
响读文件的速度。
6)对读文件的速度也有一定的要求。这个要求主要来自于搜索数据。无数浩瀚的数据,怎样才能快速的找
到用户需要的数据,这一直是一个难题。
7)文件不能太大。存储同样的数据量,文件自然越小越好。
技术要求暂时就写这么多,其实总结起来,无非两点: 1)快; 2)方便。我们对照 TDM 的数据模型,对
于“快速 ”,暂时看得不明显(以后可以谈谈为什么 TDMS 文件可以达到 “快速的要求 ”),但是说它 “方便 ”,
还是可以理解的。
这个模型的设计完全是依照用户的应用实例。首先,它是分层次的。比如说我们需要测试汽车发动机的各
个指标。我们用 8 个通道的采集卡采集发动机振动的数据, 8 个通道分别采集 8 个部位的振动,存到文件
中,作为一个组 ( group ),组的名字就叫做 “发动机振动 ”。我们还需要采集发动机的迚气管、 排气管压力,
參作为一个组。还要采集发动机的温度,可能也用 8 个通道的采集卡采集 8 个部位的温度,每个部位的温
度数据作为一个通道( channel )存到文件中, 8 个通道作为一个组,叫做 “发动机温度 ”等等。我们可能会
采集多次,其他参数都不变,只是数据每次都附加在文件的后面。我们有很多的测试工程师,每个工程师
做的测试分别存成一个 TDM 模型的数据文件。可以发现,这样的三层结构还是很清晰的。这就好比用
LabVIEW 些程序, VI 大了,就不知道怎么管理了,那就多用几层 SubVI 嘛。
其次,它具有描述性信息。比如可能需要把测试的日期、测试者的名字、测试的环境配置等信息写下来。
有些描述性信息是针对 “文件 ”这个层次的,比如测试者的姓名。有些信息可能针对 “组”这个层次,比如采集