LabVIEW數(shù)據(jù)記錄和存儲(chǔ)(五)—TDMS文件
TDMS的邏輯結(jié)構(gòu)分為三層:文件(File)、通道組(Channel Groups)和通道(Channels),如圖 25所示,每一個(gè)層次上都可以附加特定的屬性(Properties)。程序員可以非常方便地使用這三個(gè)邏輯層次定義測(cè)試數(shù)據(jù),也可以任意檢索各個(gè)邏輯層次的數(shù)據(jù),這使得數(shù)據(jù)檢索是有序的、方便存取的。
圖 25 TDMS文件的邏輯結(jié)構(gòu)
TDMS文件的內(nèi)部結(jié)構(gòu)(物理結(jié)構(gòu))如圖 25所示,實(shí)際上程序員無(wú)需了解該部分內(nèi)容就可以利用相關(guān)的API函數(shù)進(jìn)行TDMS文件的讀寫(xiě),因此這里只作簡(jiǎn)單的介紹。TDMS內(nèi)部結(jié)構(gòu)的核心是segment,當(dāng)數(shù)據(jù)被寫(xiě)入到segment中時(shí)實(shí)際上是新建了segment。各個(gè)segment中包含的主要數(shù)據(jù)段的含義如下所示,更詳細(xì)的信息可以參考http://zone.ni.com/devzone/cda/tut/p/id/5696。
- ToC Bitmask:這是一個(gè)32位的整型數(shù)據(jù)段,它表示該segment是否包含meta da
ta、raw da ta。 - Version number:表示segment的版本,這可以確保兼容一些舊的TDMS文件版本。
- Next segment offset:表示下一個(gè)segment的偏移字節(jié)。
- Raw da
ta offset:表示Raw da ta的偏移字節(jié)。 - Meta Da
ta:三個(gè)層次的屬性存儲(chǔ)字段。 - Raw da
ta:實(shí)際的raw da ta存儲(chǔ)字段。
圖 25 TDMS文件的物理結(jié)構(gòu)
TDMS文件格式在LabVIEW、LabWindows/CVI、Signal Express和DIAdem中均可以使用,也可以在Excel或Matlab中被調(diào)用。在LabVIEW中,TDMS文件的操作函數(shù)在Programming>>File I/O>>TDM Streaming選板中,如圖 25所示。其使用方法比較簡(jiǎn)單,這里只給出簡(jiǎn)單的解釋?zhuān)唧w的實(shí)例可以參考LabVIEW自帶的Examples。
- TDMS Open/Write/Read/Close:與文本文件和二進(jìn)制文件的功能類(lèi)似,程序員只需要牢記TDMS文件的三層次邏輯結(jié)構(gòu)即可。
- TDMS List Contents:列出TDMS文件的Groups和Channels名稱,或者根據(jù)指定的Group列出其包含的Channels的名稱。
- TDMS Set Properties:設(shè)置TDMS文件、通道組或通道的屬性。
- TDMS Get Properties:獲取TDMS文件、通道組或通道的屬性。
- TDMS Flush:刷新所有TDMS文件在內(nèi)存中的數(shù)據(jù),即立即將所有的TDMS數(shù)據(jù)寫(xiě)入硬盤(pán)(創(chuàng)建新的segments)。
- TDMS Defragment:整理TDMS文件中的存儲(chǔ)碎片,當(dāng)TDMS文件較大時(shí),利用該函數(shù)可以提高數(shù)據(jù)存取的性能。
- TDMS Create Scaling Information:將TDMS中的數(shù)據(jù)創(chuàng)建Scaling信息,當(dāng)采集到原始數(shù)據(jù)需要使用如y=ax+b等線性、多項(xiàng)式或者各種傳感器的轉(zhuǎn)換關(guān)系時(shí),可以使用該函數(shù)直接改變TDMS文件中某些通道的數(shù)據(jù)值(該改變是不可逆的,無(wú)法刪除Scaling信息)。
- TDMS File Viewer:TDMS文件查看器,該VI可以非常直觀地以樹(shù)形方式列出TDMS文件中的屬性和數(shù)據(jù),便于用戶查看。
圖 25 TDMS函數(shù)選板
當(dāng)寫(xiě)完TDMS文件之后,LabVIEW會(huì)自動(dòng)生成兩個(gè)文件:*.tdms文件和*.tdms_index文件。前者為數(shù)據(jù)文件(或主文件),后者為索引文件(或頭文件)。二者最大的區(qū)別在于索引文件不含raw da
LabVIEW 2009進(jìn)一步改進(jìn)了對(duì)TDMS格式的支持,從1.0版本升級(jí)到2.0版本,并且提高了對(duì)高速流盤(pán)應(yīng)用的支持,以及對(duì)DAQmx的應(yīng)用支持,比上一版本的TDMS文件至少有4倍以上速度的提升。當(dāng)然,TDMS也有一些缺點(diǎn)。比如速度上并沒(méi)有win32 streaming API快,不支持刪除某個(gè)通道或通道組,以及只支持Windows操作系統(tǒng)和VxWorks、Phar Lap等實(shí)時(shí)平臺(tái)??傮w而言,TDMS文件格式兼顧了速度、邏輯組織、易用性等多個(gè)因素,在數(shù)據(jù)存儲(chǔ)方面是一種非常不錯(cuò)的選擇。
評(píng)論