More +

了解TDMS文件(一)

undefined��

华穗技术宅 

TDMS(Technical Data Management Streaming)文件是一种二进制记录文件,它兼顾了高速、易存取和方便等多种优势,能够在各种数据分析或挖掘软件之间进行无缝交互,也能够提供一系列API函数供其它应用程序调用。

TDMS的逻辑结构分为三层:文件(File)、通道组(Channel Groups)和通道(Channels)。每一个层次上都可以附加特定的属性(Properties)。程序员可以非常方便地使用这三个逻辑层次定义测试数据,也可以任意检索各个逻辑层次的数据,这使得数据检索是有序的、方便存取的。TDMS的逻辑结构如下图所示: 

undefined��

图: TDMS 文件逻辑结构 

TDM内部结构的核心是segment,当数据被写入到segment中时实际上是新建了segment。各个segment中包含的主要数据段的含义如下所示: 

- ToC Bitmask:这是一个32位的整型数据段,它表示该segment是否包含meta data、raw data。 

- Version number:表示segment的版本,这可以确保兼容一些旧的TDMS文件版本。 

- Next segment offset:表示下一个segment的偏移字节。 

- Raw data offset:表示Raw data的偏移字节。 

- Meta Data:三个层次的属性存储字段。 

- Raw data:实际的raw data存储字段。 

这种物理结构也就决定了TDMS文件的随机存取特性,当程序员只希望读取raw data而并不关注属性时,此时可以利用raw data offset直接获得raw data信息而无需关注Meta Data信息。 

上述斜体内容在之后章节会详细讨论。 

针对多通道数据采集系统的需求特点,TDMS这种存储方式可以在很短的时间内将每个通道的数据有序地存储在一个文件中,其写入文件的速度达到了理论值600M/s;同时,对于后期的数据导入、处理以及挖掘时,TDMS可以很快速地在一个海量数据文件中提取所感兴趣的部分,极大减少等待时间,提高效率。
TDMS目前已经广泛应用于测试测量行业,NI与华穗科技(HUASUI)的各类数据采集产品都无缝支持此存储格式;在软件方面,该文件格式在NI LabVIEW、LabWindows/CVI、.NET、和DIAdem中均可以直接使用。 

以下内容摘自NI网站技术文章,分别介绍了不同软件如何读写TDMS文件:

使用NI软件读写TDMS文件? 

NI TDMS文件格式是NI平台支持的文件格式。所有NI软件开发平台将TDMS文件作为其原生函数选板或库的一部分与之交互。这使得存储带结构的数据不再复杂,且用户可轻易为捕捉到的测量或仿真数据添加描述信息。 

LabVIEW 

从NI LabVIEW软件有许多接口可访问NI TDMS文件。在LabVIEW中写入TDMS文件最简单的方式是使用“写入测量文件”Express VI。该Express VI提供交互式配置界面,让使用变得简单,但这牺牲了性能,因此并不适用于高速流盘和实时应用程序。 

如对灵活性和性能有较高的要求,应使用“文件I/O”选板上的TDMS底层VI。通过这些VI,可最高效地读写TDMS文件和属性。在LabVIEW Real-Time模块中使用该方法访问TDMS可满足实时程序的性能要求。TDM流选板最早在LabVIEW 8.2中发布。 

2010年8月或之后发布的LabVIEW及驱动程序包含一个全新的TDMS高级选板,提供对TDMS文件极底层的控制功能,用户可使用异步读写等高级编程技巧。 

undefined��

图: 可通过LabVIEW中的多个接口读写TDMS文件。 

undefined��

图:TDM流选板提供使用LabVIEW读写TDMS文件最灵活、最高效的方法 

LabVIEW SignalExpress 

用户可配置LabVIEW SignalExpress自动记录测量数据为TDMS文件,而无需其他编程。LabVIEW SignalExpress可导入之前生成的TDMS文件,在其中创建和记录TDMS文件就如同启用数据记录功能一样简单。 

undefined�� 

图:在LabVIEW SignalExpress中,只需启用数据记录功能即可将数据写入TDMS文件 

LabWindows™/CVI 

在NI LabWindows™/CVI软件中有两个库可用于访问TDMS文件。第一个库是LabWindows/CVI TDM Streaming Library,这是访问TDMS文件较快且较通用的方法。通过该API,可使用LabWindows/CVI Real-Time模块在实时应用程序中与TDMS文件交互。TDM Streaming Library最早在LabWindows/CVI
8.1中发布。 

第二个在LabWindows/CVI中访问TDMS文件的接口是DIAdem Connectivity API,该API使用NI DIAdem作为读写TDMS文件的中间机制。 

undefined��

图:LabWindows/CVI提供两个TDMS文件接口,其中TDM Streaming Library是目前最高效灵活的接口 

.NET语言(Measurement Studio中) 

NI Measurement Studio TDM Streaming .NET Class Library库最早在Measurement Studio 8.6中发布,允许通过.NET语言与TDMS文件直接进行快速灵活的交互。注:只能在Measurement
Studio专业版和企业版中访问TDM Streaming .NET Class Library库。 

undefined��

图:Measurement Studio包含一个内置TDM Streaming .NET Class Library库 

NI DIAdem 

NI DIAdem软件是一个灵活的数据后处理、视觉化呈现和报表制作的环境,扩展方便,可通过DataPlugins处理任意自定义文件格式。虽然DIAdem专为快速读写TDMS文件而设计,但加载至Data Portal(DIAdem内部存储器的视觉呈现)中的任何数据都会在内部被映射至TDMS模型。DIAdem是NI DataFinder的客户端和NI TDM解决方案的第三层,用户可通过它轻易搜索NI DataFinder索引,从而找到需要的数据,就如同使用Google搜索引擎一样方便。 

undefined�� 

图:可配置DIAdem映射任意文件格式至TDMS模型,以利用该模型的优势