TDM和TDMS文件在LabVIEW中的编写以及读取操作

更新 Jul 27, 2023

环境

软件

  • LabVIEW

为了减少设计和维护自己的数据文件格式的需要,NI创建了灵活的技术数据管理(TDM)数据模型,该模型可通过 NI LabVIEWLabWindows™/ CVIMeasurement StudioLabVIEW SignalExpress  和  DIAdem 本地访问。可移植到其他常见应用程序,例如Excel。 TDM数据模型具有几个独特的优点,例如可以根据您的特定项目需求进行扩展,并在将数据流式传输到磁盘时轻松地将描述性信息附加到测量中。

TDM数据模型提供了三个层次结构,如图1所示: "根,组和通道" 。每个级别接受无限数量的客户定义属性,从而使文件“search ready” (搜索就绪)。
 

                

                                  图1  在LabVIEW中编写的每个TDM和TDMS文件都包含 "根,组和通道" 级别的描述性信息


TDM数据模型文件可以包含多个组,每个组可以包含多个通道。您可以在三个级别的每个级别插入自己的自定义属性。

TDM数据模型支持两种文件格式:TDM和TDMS。 TDM文件格式指定您将描述性信息保存在扩展名为TDM的头文件中,而批量测量,模拟和分析结果将保存在扩展名为TDX的批量二进制数据文件中。与具有严格要求的基于XML的头文件的TDM文件不同,TDMS文件具有扩展名为* .TDMS_Index的二进制索引文件。 TDMS_Index文件提供有关批量数据文件中所有属性和指针的合并信息,并在读取时加快对数据的访问。

在LabVIEW中,您可以选择三种应用方法将数据写入TDM数据模型。在多数的应用方法中是可以支持TDM和TDMS两种文件格式的, 以下章节将讲述该几种应用方法的基本使用。

“Write To Measurement File” Express VI: 写入测量文件Express VI

写入TDM或TDMS文件的最简单方法是使用文件I/O面板中的 “Write To Measurement File” Express VI 。
DAQmx任务作为VI所必需的唯一输入或着是您正在写入到磁盘的信号,如图2所示:

                                                             

                                       图2  您可以将数据直接连接到 "Write to Measurement File " Express VI

在 “Write To Measurement File" Express VI  的配置对话框中,您可以选择写入TDM或是TDMS文件。
另外,您可以使用配置对话框向文件添加属性:如“描述”,你自定义的属性或者是源于DAQmx任务的属性,如图3所示:
 

       

                                             图3 选择要写入TDM或TDMS文件后,还可以在配置对话框中配置用户定义的属性

Write To Measurement File” Express VI 是开始数据写入TDM和TDMS文件的最简单方法。但是,您在写入数据的结构上几乎没有灵活性。为了实现TDM数据模型的全部优点以及要拥有编写有序且有文档记录的数据,您需要利用 “Data Storage” VIs 搭配或者使用 “TDM Streaming” API。




“Data Storage" VIs:   数据存储VIs

使用 “Data Storage" VIs,您可以将数据写入TDM或TDMS文件。
如图4所示,使用 LabVIEW “Data Storage" VIs 是写入测量数据的最简单形式,一个数据采集任务将为 "Write Data" VI (写入数据VI) 生成一个测量值数组。

 

                                                     

                                                                       图4 “Data Storage" VIs 在通道级记录数据

注意: “Write Data” VI (写入数据VI)除信号输入外,还有两个输入:名称和单位。
通过双击 “Write Data” VI,可以选择要通过配置对话框保存的其他信息,类似于 "Write to Measurement File " Express VI  的过程。

在图4中,所有来自 “DAQ Assistant” 的通道均具有相同的 “名称和单位”。但是,“Data Storage" VIs 会枚举通道名称,以防止命名冲突。可以通过将通道名称数组传递给名称输入或为每个通道使用单独的 “Write Data” VI 来覆盖自动枚举,这两种方法都是可以接受的解决方案。
Write Data” VI 的另一个好处是,它可以自动计算每个测量阵列的最小值和最大值,并将其保存在TDM或TDMS文件中。

图4概述了 “Data Storage" VIs 如何在通道级记录数据。图5说明了如何使用 “Set Properties” VI (设置属性VI)在文件级保存更多描述性信息。

 

                                       

                                                图5 “Set Properties” VI (使用设置属性VI)可以在文件级保存其他描述性信息


图6说明了使用 “Open Storage" VI (开放存储VI)读取数据的最简单形式。此处, “Open Storage" VI 将文件引用传递至 "Read Data" VI (读取数据VI),然后将所有数据从TDM或TDMS文件读取到存储器中,并显示在波形图上。

                                       

              图6 “Open Storage” VI 将文件引用传递给 “Read Data” VI, 然后将所有数据从TDM或TDMS文件读取到存储器中,并显示在波形图上




 

TDM Streaming API:   TDM流API

尽管 "Data Storage" VIs 易于使用且具有灵活性,但在将数据写入磁盘时,它们表现出的性能与使用 "TDM Streaming" API 所获得的性能不同。 "TDM Streaming" API旨在以较小的磁盘占用空间高速将数据流传输到磁盘,这就是为什么它也是理想的在实时系统上写入数据的原因。

使用TDM Streaming VI写入测量数据的最简单形式如图7所示。在本示例中, "DAQ Assistant" (DAQ助手)  生成测量值数组并将其传递给 "Write Data" VI。

 

                                               
                                                                     图7  在通道级别将数据写入TDMS文件

注意,"Write Data" VI 除信号输入外还有两个输入。在图7中,所有来自 "DAQ Assistant" 的通道都具有相同的组和通道名称。如果组和频道名称输入未连接,则默认为“无标题”。

图8 显示了使用 "TDM Streaming" VI 读取数据的最简单形式。在此,TDMS打开文件VI将文件引用传递给TDMS读取文件VI,然后将 "Main Group" 组中的所有数据从TDMS文件读取到存储器中,并显示在波形图上。

 

                                                
                                                                                 图8  从TDMS文件读回数据

写入某些数据类型时,TDMS数据模型会自动创建某些属性。但是,在许多情况下,您可能想要创建一个特定于您的特定需求属性,例如被测设备,序列号和测试温度。您可以使用 TDMS "Set Properties" VI来实现此目的,使用它可以在文件,组或通道级别写入属性,如图9所示。

 

                       

                                                          图9.在将数据写入文件之前,在三个不同的级别上编写自定义属性



“LabWindows"  商标已获得Microsoft Corporation的许可使用。Windows是Microsoft Corporation在美国和其他国家(地区)的注册商标。