<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

          作者: 時間:2017-01-09 來源:網(wǎng)絡(luò) 收藏
          TDMS(Technical Data Management Streaming)文件是NI主推的一種二進(jìn)制記錄文件,它兼顧了高速、易存取和方便等多種優(yōu)勢,能夠在NI的各種數(shù)據(jù)分析或挖掘軟件之間進(jìn)行無縫交互,也能夠提供一系列API函數(shù)供其它應(yīng)用程序調(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)容就可以利用相關(guān)的API函數(shù)進(jìn)行TDMS文件的讀寫,因此這里只作簡單的介紹。TDMS內(nèi)部結(jié)構(gòu)的核心是segment,當(dāng)數(shù)據(jù)被寫入到segment中時實際上是新建了segment。各個segment中包含的主要數(shù)據(jù)段的含義如下所示,更詳細(xì)的信息可以參考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文件的隨機存取特性,當(dāng)程序員只希望讀取raw data而并不關(guān)注屬性時,此時可以利用raw data offset直接獲得raw data信息而無需關(guān)注Meta Data信息。正如前面所述,往TDMS中添加信息時實際上是添加了新的segment,因此無需關(guān)心segment之前的內(nèi)容是什么,也就確保了寫TDMS文件的速度與TDMS文件的大小無關(guān),保證了高速存取。值得注意的是,TDMS物理結(jié)構(gòu)中的segment與其三層次邏輯結(jié)構(gòu)沒有任何關(guān)系。可能一個通道對應(yīng)著多個segment,也可能一個segment中包含多個通道。當(dāng)把數(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:與文本文件和二進(jìn)制文件的功能類似,程序員只需要牢記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ù)寫入硬盤(創(chuàng)建新的segments)。
          • TDMS Defragment:整理TDMS文件中的存儲碎片,當(dāng)TDMS文件較大時,利用該函數(shù)可以提高數(shù)據(jù)存取的性能。
          • TDMS Create Scaling Information:將TDMS中的數(shù)據(jù)創(chuàng)建Scaling信息,當(dāng)采集到原始數(shù)據(jù)需要使用如y=ax+b等線性、多項式或者各種傳感器的轉(zhuǎn)換關(guān)系時,可以使用該函數(shù)直接改變TDMS文件中某些通道的數(shù)據(jù)值(該改變是不可逆的,無法刪除Scaling信息)。
          • TDMS File Viewer:TDMS文件查看器,該VI可以非常直觀地以樹形方式列出TDMS文件中的屬性和數(shù)據(jù),便于用戶查看。


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


          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();