當前位置:首頁 > 測試測量 > 測試測量
[導(dǎo)讀]終于寫到TDMS了,千呼萬喚始出來啊,其實所有前面的相關(guān)文章都是為了TDMS作鋪墊。正是由于用戶提出的種種需求以及其他種種文件格式的缺點,才有了TDMS的出現(xiàn)。1. TDMS文件的邏輯格式TDMS文件的邏輯格式遵循TDM三層結(jié)

終于寫到TDMS了,千呼萬喚始出來啊,其實所有前面的相關(guān)文章都是為了TDMS作鋪墊。正是由于用戶提出的種種需求以及其他種種文件格式的缺點,才有了TDMS的出現(xiàn)。

1. TDMS文件的邏輯格式

TDMS文件的邏輯格式遵循TDM三層結(jié)構(gòu),仍然是文件、通道組、通道三層。用戶在使用時只需要關(guān)心這三層就行了。

2. TDMS文件API

TDMS文件格式基本上可以稱為NI用在測試測量領(lǐng)域的通用數(shù)據(jù)文件格式,LabVIEW, CVI/LabWindows, Signal Express, DIAdem中都可以使用,也??吹皆贓xcel, MatLab被中調(diào)用。TDMS最核心的內(nèi)容都在一個dll中,用戶如果安裝了LabVIEW,就會發(fā)現(xiàn)在Program FilesNational InstrumentsSharedTDMS文件夾中有個tdms.dll的文件。其他軟件正是通過調(diào)用這個dll的API來操作TDMS文件的。

在LabVIEW中操作TDMS文件其實相當方便,有專門的TDMS面板,提供了TDMS絕大多數(shù)的功能。雖然我們一直說Write/Read Measurement Files, Storage VIs, TDMS分別面向初級、中級、高級的用戶,但是我個人覺得LabVIEW中的TDMS用起來十分方便,即便是初級用戶,也能很容易的上手。在面板上一共就10個SubVI,無論是什么樣的數(shù)據(jù)類型,都可以用這樣同一套SubVI,無需大量額外的編程工作。

這里可以簡單介紹一下TDMS面板上的兩個SubVI,我個人覺得十分有用。一個是“TDMS File Viewer”,當用戶寫完某個TDMS文件之后,就可以用這個SubVI來方便的查看文件的內(nèi)容,只要輸入TDMS文件的路徑即可,運行VI就會跳出一個Viewer的界面,可以查看數(shù)據(jù)、屬性,并且可以根據(jù)數(shù)據(jù)簡單的繪制出一些波形圖。另外一個是“TDMS Defragment”,通常用戶寫完TDMS文件之后,可能會發(fā)現(xiàn)這個文件非常大,那么這時就可以使用這個SubVI,可以大幅度的減小文件的size。

3. TDMS二進制文件

TDMS從設(shè)計之初就確定它必須是二進制的。二進制文件帶來兩個優(yōu)點:第一,與一般的文本式文件相比,二進制文件通常比較??;第二,二進制文件讀寫通常比較快。這兩個都是其他二進制文件都具備的優(yōu)點,就不再多說了。

4. TDMS頭文件

用戶寫完TDMS文件之后,會發(fā)現(xiàn)硬盤上其實有兩個TDMS文件,一個是.tdms,另一個是.tdms_index文件,我們通常把前者稱為主文件或者數(shù)據(jù)文件,而把后者稱為頭文件或者索引文件。頭文件與主文件相比,最大的區(qū)別就是把主文件中的raw data都去掉了,只留下屬性等信息。這樣做,有兩個目的,第一,可以使得讀文件加快速度,并且支持隨機讀取文件數(shù)據(jù),這個稍后再解釋,用戶看完后面的內(nèi)容就可以理解。第二,可以使得某些軟件的搜索TDMS文件功能加快。比如在DIAdem中搜索TDMS文件,可以根據(jù)文件名、通道組名、通道名(其實這些也是屬性),或者其他某些屬性進行搜索,這個時候,僅將TDMS的頭文件載入進行搜索,其速度遠遠比將TDMS主文件載入搜索快得多。

5. TDMS的內(nèi)部結(jié)構(gòu)

TDMS文件的內(nèi)部結(jié)構(gòu),也就是物理結(jié)構(gòu),可以在這里找到原文。一般的用戶并不需要了解這方面的知識就可以方便的使用TDMS文件。在這里介紹這個內(nèi)部結(jié)構(gòu),是為了更好的解釋TDMS文件格式的優(yōu)點。

TDMS內(nèi)部結(jié)構(gòu)的核心概念是segment,如下圖。為了避免混淆,在這里必須澄清的是,這個segment的概念與TDM的三層結(jié)構(gòu)(即邏輯結(jié)構(gòu))沒有任何對應(yīng)的關(guān)系,也就是說,一個通道可能對應(yīng)著多個segment,一個segment中也可能有多個通道。segment是什么意思?我們在寫TDMS文件的時候,數(shù)據(jù)本來可能存放在內(nèi)存中,那么總要往硬盤上寫這些數(shù)據(jù)的,每次往硬盤上寫(flush to disk)就會產(chǎn)生這樣一個segment。同樣,我們在讀TDMS文件的時候,也是一個segment一個segment的把內(nèi)容讀出來。

再稍微深入介紹一下這個segment中的內(nèi)容。一開始有一些頭信息,比如這個segment中是否含有meta data,是否含有raw data,version是多少。下面的東西就很重要了,有個“next segment offset”的信息,指向下一個segment的起始位置,這個有什么用呢?比如我要讀某個通道的數(shù)據(jù),發(fā)現(xiàn)這個segment中并不包含這個通道的內(nèi)容,就可以使用這樣的信息直接跳到下個segment中看下個segment是否有要找的信息。同樣,還有一個“raw data offset”的信息,比如用戶只想讀raw data,并不關(guān)心屬性之類的信息,那么這個“raw data offset”的信息就派上用場了。說到這里,就可以明白,TDMS是怎樣支持Random access,怎樣支持獨立的讀屬性信息和raw data的信息。

此外,這個segment還有一個極為重要的特點。我們每次寫數(shù)據(jù),每次往TDMS文件中flush to disk的時候就在文件的后面添加這樣一個segment,而不去關(guān)心之前的segment中包含了什么樣的信息。這個特點非常關(guān)鍵,這就可以使得我們寫文件的速度非???,我們并不關(guān)心之前文件中包含了什么信息,也就使得我們寫TDMS文件的速度并不和TDMS文件的大小成正比或者有任何關(guān)系。

6. TDMS文件格式的優(yōu)點

我在以前的文章中提到幾個數(shù)據(jù)文件格式的技術(shù)要求,我們現(xiàn)在再來回顧一下,看看TDMS文件是如何實現(xiàn)這些技術(shù)要求的,這樣也就能看出TDMS文件的優(yōu)點來。

1)寫文件速度必須要快——通過segment實現(xiàn)以及二進制。

2)向文件追加(append)數(shù)據(jù)的時候,速度要快——segment。

3)寫文件的速度不能與文件大小成正比——segment。

4)支持隨機的讀取——segment以及頭文件。

5)支持分別讀寫描述性信息和原始數(shù)據(jù)——segment以及頭文件。

6)對讀文件的速度也有一定的要求——segment以及頭文件。

7)文件不能太大——二進制。

7. 其他

TDMS文件格式目前(LabVIEW 8.5)只支持Windows和PharLap(一種實時操作系統(tǒng))平臺上。不過我還看到一個基于VI的TDMS API,這個完全基于LabVIEW,既然LabVIEW能在其他平臺上工作,那么這個小工具也能在其他平臺上工作。當然,效率、性能的會差很多了。

通??傆腥四肨DMS文件格式和一般的基于Windows API文件流操作比較,然后會說TDMS比那樣的Win32 streaming API慢嘛,是不是TDMS不行?比如在某些磁盤陣列的配置下,Win32 streaming API可以達到650MB/S,而TDMS只能600MB/S左右。我在這里需要澄清的是,TDMS在保持著數(shù)據(jù)良好邏輯結(jié)構(gòu)(TDM的三層結(jié)構(gòu))、良好的數(shù)據(jù)管理的前提下,還能保持著這樣高速的性能,這才是TDMS最大的優(yōu)點。Win32 streaming API只是純粹的追求速度(也僅比TDMS快5-10%左右),并不能將測試測量的數(shù)據(jù)良好的組織好、管理好,用戶如果片面的追求速度而不管寫入文件的數(shù)據(jù)如何保存如何管理,那就有點得不償失了。

當然,TDMS文件也并不完美,同樣存在著種種缺點。比如不能支持方便的刪除某個通道的功能,目前還不支持其他操作系統(tǒng)等等。相信將來都會有改善的。

最后,用一個不是很恰當?shù)睦觼斫Y(jié)束這篇文章。測試測量數(shù)據(jù)的文件格式,有很多種,文件格式就像我們中午帶飯的飯盒一樣。其他的數(shù)據(jù)文件格式就是把飯菜都放在一起,吃起來不方便(速度慢),而且味道都混雜在一起(組織不好);而TDMS文件格式就像是內(nèi)部有分隔的飯盒,不同的飯菜分開存放,吃起來又方便(速度快)味道又好(組織良好)。

 

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉