LabVIEW写入可快速加载的TDMS文件
TDMS文件格式的设计目的是在尽可能快地读写数据的同时仍保持足够的灵活性来适应采集过程中通道数量和采样率的变化。 但是数据读写速度快的文件未必可快速加载。 TDMS文件是一个完全的二进制文件,由多个部分数据段组成,在写入文件时每个数据段叠加在另一个数据段之上。 这些数据段包含分配到一个或多个通道数据值缓冲区以及/或关联至一个或多个层次的元数据属性。 通常,TDMS文件包含的数据段越少,加载速度越快。
每次写入或读取TDMS文件时便会生成一个 TDMS_Index 文件,该文件包含二进制数据段的分布图。 之后如果读取同一个TDMS文件,系统会询问TDMS_Index文件以确定正确的比特位置来读取TDMS文件的每个通道和属性集合。 一般来说,如果生成的TDMS_Index文件大小与TDMS文件相似,则该TDMS文件被“碎片化”,也就是说该文件包含的数据段多于所需的数据段,因此加载速度变慢。 无论在采集过程中还是采集后,均可采用多种方法来最小化多余数据段的数量,以达到最大的TDMS文件读取速度。
以最少碎片写入TDMS文件
首先,如果使用NI数据采集硬件来采集数据,则可考虑使用NI-DAQmx TDMS写入功能,因为该功能可自动写入未碎片化的TDMS文件。 如果使用NI LabVIEW采集数据通道,则可从 TDMS高级选项 选板中选择VI,以写入碎片化程度最小的TDMS文件。 如果使用标准TDMS写入函数,则以下技巧可以最大程度减少TDMS文件的碎片化。
在数据采集(循环)之前或之后写入所有TDMS属性。
从多个通道写入数据时使用二维矩阵和一个TDMS写入函数。
每次至少写入1000个数据点到TDMS文件的一个采集数据通道。
如果一次只能写入1个数据点,则将通道属性 NI_MinimumBufferSize 的值设置为1000。
采集后对TDMS文件进行碎片整理
即时由于数据采集限制而不得不创建碎片化的TDMS数据文件,用户仍可在采集后解决这个问题。 如果使用的是NI LabVIEW, TDMS碎片整理 功能能够以最低程度的碎片化重新写入TDMS文件。 或者,如果将TDMS数据文件加载到NI DIAdem并重新保存,则生成的TDMS数据文件也具有最低程度的碎片化。
写入加载速度提高通道属性
如果读取TDMS文件的目标应用程序是NI DIAdem,则可通过创建以下四个TDMS文件中每个数据通道的属性来大幅提高加载到NI DIAdem的速度。 如果这四个属性都没有出现且加载指定TDMS数据通道时填充了一个有效值,则NI DIAdem将会自动计算这四个属性来加快图轴的自动换算速度。 如果这些属性已经创建并填充了有效值且关联至TDMS文件的每个数据通道,则该TDMS文件加载到NI DIAdem的速度将会快很多。
提高NI DIAdem内文件加载速度的属性
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。
楼主最近还看过