TDMS(Technical Da
TDMS的逻辑结构分为三层:文件(File)、通道组(Channel Groups)和通道(Channels),如图 25所示,每一个层次上都能够附加特定的特点(Properties)。程序员能够十分便利地运用这三个逻辑层次界说测试数据,也能够恣意检索各个逻辑层次的数据,这使得数据检索是有序的、便利存取的。
图 25 TDMS文件的逻辑结构
TDMS文件的内部结构(物理结构)如图 25所示,实践上程序员无需了解该部分内容就能够运用相关的API函数进行TDMS文件的读写,因而这儿只作简略的介绍。TDMS内部结构的中心是segment,当数据被写入到segment中时实践上是新建了segment。各个segment中包括的首要数据段的意义如下所示,更详细的信息能够参阅http://zone.ni.com/devzone/cda/tut/p/id/5696。
- ToC Bitmask:这是一个32位的整型数据段,它表明该segment是否包括meta da
ta、raw da ta。 - Version number:表明segment的版别,这能够确保兼容一些旧的TDMS文件版别。
- Next segment offset:表明下一个segment的偏移字节。
- Raw da
ta offset:表明Raw da ta的偏移字节。 - Meta Da
ta:三个层次的特点存储字段。 - Raw da
ta:实践的raw da ta存储字段。
这种物理结构也就决议了TDMS文件的随机存取特性,当程序员只期望读取raw da
图 25 TDMS文件的物理结构
TDMS文件格局在LabVIEW、LabWindows/CVI、Signal Express和DIAdem中均能够运用,也能够在Excel或Matlab中被调用。在LabVIEW中,TDMS文件的操作函数在Programming>>File I/O>>TDM Streaming选板中,如图 25所示。其运用方法比较简略,这儿只给出简略的解说,详细的实例能够参阅LabVIEW自带的Examples。
- TDMS Open/Write/Read/Close:与文本文件和二进制文件的功用相似,程序员只需求紧记TDMS文件的三层次逻辑结构即可。
- TDMS List Contents:列出TDMS文件的Groups和Channels称号,或许依据指定的Group列出其包括的Channels的称号。
- TDMS Set Properties:设置TDMS文件、通道组或通道的特点。
- TDMS Get Properties:获取TDMS文件、通道组或通道的特点。
- TDMS Flush:改写一切TDMS文件在内存中的数据,即立行将一切的TDMS数据写入硬盘(创立新的segments)。
- TDMS Defragment:收拾TDMS文件中的存储碎片,当TDMS文件较大时,运用该函数能够进步数据存取的功能。
- TDMS Create Scaling Information:将TDMS中的数据创立Scaling信息,当收集到原始数据需求运用如y=ax+b等线性、多项式或许各种传感器的转化联系时,能够运用该函数直接改动TDMS文件中某些通道的数据值(该改动是不可逆的,无法删去Scaling信息)。
- TDMS File Viewer:TDMS文件检查器,该VI能够十分直观地以树形方法列出TDMS文件中的特点和数据,便于用户检查。
图 25 TDMS函数选板
当写完TDMS文件之后,LabVIEW会主动生成两个文件:*.tdms文件和*.tdms_index文件。前者为数据文件(或主文件),后者为索引文件(或头文件)。二者最大的差异在于索引文件不含raw da
LabVIEW 2009进一步改进了对TDMS格局的支撑,从1.0版别升级到2.0版别,而且进步了对高速流盘使用的支撑,以及对DAQmx的使用支撑,比上一版别的TDMS文件至少有4倍以上速度的提高。当然,TDMS也有一些缺陷。比方速度上并没有win32 streaming API快,不支撑删去某个通道或通道组,以及只支撑Windows操作系统和VxWorks、Phar Lap等实时渠道。整体而言,TDMS文件格局统筹了速度、逻辑安排、易用性等多个要素,在数据存储方面是一种十分不错的挑选。