新聞中心

EEPW首頁 > 測試測量 > 設計應用 > LabVIEW數(shù)據(jù)記錄和存儲(五)—TDMS文件

LabVIEW數(shù)據(jù)記錄和存儲(五)—TDMS文件

作者: 時間:2017-01-09 來源:網(wǎng)絡 收藏
TDMS(Technical Data Management Streaming)文件是NI主推的一種二進制記錄文件,它兼顧了高速、易存取和方便等多種優(yōu)勢,能夠在NI的各種數(shù)據(jù)分析或挖掘軟件之間進行無縫交互,也能夠提供一系列API函數(shù)供其它應用程序調(diào)用。
TDMS的邏輯結(jié)構(gòu)分為三層:文件(File)、通道組(Channel Groups)和通道(Channels),如圖 25所示,每一個層次上都可以附加特定的屬性(Properties)。程序員可以非常方便地使用這三個邏輯層次定義測試數(shù)據(jù),也可以任意檢索各個邏輯層次的數(shù)據(jù),這使得數(shù)據(jù)檢索是有序的、方便存取的。


圖 25 TDMS文件的邏輯結(jié)構(gòu)
TDMS文件的內(nèi)部結(jié)構(gòu)(物理結(jié)構(gòu))如圖 25所示,實際上程序員無需了解該部分內(nèi)容就可以利用相關的API函數(shù)進行TDMS文件的讀寫,因此這里只作簡單的介紹。TDMS內(nèi)部結(jié)構(gòu)的核心是segment,當數(shù)據(jù)被寫入到segment中時實際上是新建了segment。各個segment中包含的主要數(shù)據(jù)段的含義如下所示,更詳細的信息可以參考http://zone.ni.com/devzone/cda/tut/p/id/5696。
  • ToC Bitmask:這是一個32位的整型數(shù)據(jù)段,它表示該segment是否包含meta data、raw data。
  • Version number:表示segment的版本,這可以確保兼容一些舊的TDMS文件版本。
  • Next segment offset:表示下一個segment的偏移字節(jié)。
  • Raw data offset:表示Raw data的偏移字節(jié)。
  • Meta Data:三個層次的屬性存儲字段。
  • Raw data:實際的raw data存儲字段。
這種物理結(jié)構(gòu)也就決定了TDMS文件的隨機存取特性,當程序員只希望讀取raw data而并不關注屬性時,此時可以利用raw data offset直接獲得raw data信息而無需關注Meta Data信息。正如前面所述,往TDMS中添加信息時實際上是添加了新的segment,因此無需關心segment之前的內(nèi)容是什么,也就確保了寫TDMS文件的速度與TDMS文件的大小無關,保證了高速存取。值得注意的是,TDMS物理結(jié)構(gòu)中的segment與其三層次邏輯結(jié)構(gòu)沒有任何關系??赡芤粋€通道對應著多個segment,也可能一個segment中包含多個通道。當把數(shù)據(jù)寫入硬盤時就是產(chǎn)生一個segment,而把數(shù)據(jù)從硬盤中讀取出來時也就是把一個個的segment內(nèi)容讀取出來。


圖 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所示。其使用方法比較簡單,這里只給出簡單的解釋,具體的實例可以參考LabVIEW自帶的Examples。
  • TDMS Open/Write/Read/Close:與文本文件和二進制文件的功能類似,程序員只需要牢記TDMS文件的三層次邏輯結(jié)構(gòu)即可。
  • TDMS List Contents:列出TDMS文件的Groups和Channels名稱,或者根據(jù)指定的Group列出其包含的Channels的名稱。
  • TDMS Set Properties:設置TDMS文件、通道組或通道的屬性。
  • TDMS Get Properties:獲取TDMS文件、通道組或通道的屬性。
  • TDMS Flush:刷新所有TDMS文件在內(nèi)存中的數(shù)據(jù),即立即將所有的TDMS數(shù)據(jù)寫入硬盤(創(chuàng)建新的segments)。
  • TDMS Defragment:整理TDMS文件中的存儲碎片,當TDMS文件較大時,利用該函數(shù)可以提高數(shù)據(jù)存取的性能。
  • TDMS Create Scaling Information:將TDMS中的數(shù)據(jù)創(chuàng)建Scaling信息,當采集到原始數(shù)據(jù)需要使用如y=ax+b等線性、多項式或者各種傳感器的轉(zhuǎn)換關系時,可以使用該函數(shù)直接改變TDMS文件中某些通道的數(shù)據(jù)值(該改變是不可逆的,無法刪除Scaling信息)。
  • TDMS File Viewer:TDMS文件查看器,該VI可以非常直觀地以樹形方式列出TDMS文件中的屬性和數(shù)據(jù),便于用戶查看。


圖 25 TDMS函數(shù)選板
當寫完TDMS文件之后,LabVIEW會自動生成兩個文件:*.tdms文件和*.tdms_index文件。前者為數(shù)據(jù)文件(或主文件),后者為索引文件(或頭文件)。二者最大的區(qū)別在于索引文件不含raw data信息,而只包含屬性等信息,這樣可以增加數(shù)據(jù)檢索的速度并且利于搜索TDMS文件。該文件是自動生成的,不需要程序員干預。
LabVIEW 2009進一步改進了對TDMS格式的支持,從1.0版本升級到2.0版本,并且提高了對高速流盤應用的支持,以及對DAQmx的應用支持,比上一版本的TDMS文件至少有4倍以上速度的提升。當然,TDMS也有一些缺點。比如速度上并沒有win32 streaming API快,不支持刪除某個通道或通道組,以及只支持Windows操作系統(tǒng)和VxWorks、Phar Lap等實時平臺??傮w而言,TDMS文件格式兼顧了速度、邏輯組織、易用性等多個因素,在數(shù)據(jù)存儲方面是一種非常不錯的選擇。


評論


技術(shù)專區(qū)

關閉