在 LabVIEW 中編寫 TDM 和 TDMS 檔案

更新 Jun 29, 2022

環境

軟體

  • LabVIEW

為了減少設計和維護自己的資料檔案格式的需要,NI 創建了靈活的 Technical Data Management(TDM)資料模型,該模型可通過 NI LabVIEW,LabWindows™/CVI,Measurement Studio,LabVIEW SignalExpress 和 DIAdem 本地存取。可移植到其他常見應用程序,例如 Excel。 TDM 資料模型具有幾個獨特的優點,例如可以根據您的特定專案需求進行擴展,並將資料流傳輸到磁碟時輕鬆地將描述性訊息附加到量測中。

TDM 資料模型提供了三個層次結構,如圖1所示 – Root,Group 和 Channel。每個級別接受無限數量的客戶定義屬性(customer-defined attributes),從而使檔案“可以搜尋”。

圖1.用 LabVIEW 編寫的每個 TDM 和 TDMS 文件都包含有關 Root,Group 和 Channel 級別的描述性訊息。

TDM 資料模型檔案可以包含多個 Group,每個 Group 可以包含多個 Channel。您可以在三個級別的每個級別插入自己的自定義屬性。

TDM 資料模型支持兩種檔案格式:TDM 和 TDMS。 TDM 檔案格式指定您將描述性信息保存在副檔名為 TDM 的 header 檔案中,而批量測量,模擬和分析結果將保存在副檔名為 TDX 的批量二進制資料檔案中。與具有嚴格要求的基於 XML 的 header 檔案的 TDM 檔案不同,TDMS 檔案具有副檔名為* .TDMS_Index的二進制索引檔案。 TDMS_Index 檔案提供有關批量資料檔案中所有屬性和指針的合併信息,並在讀取時加快對資料的存取。

在 LabVIEW 中,您可以從三個接口中進行選擇,以將資料寫入 TDM 資料模型。這些接口中的某些接口可同時使用 TDM 和 TDMS 文件格式。以下各節介紹了使用每個接口的基礎。

Write To Measurement File Express VI

寫入 TDM 或 TDMS 檔案的最簡單方法是使用 File I/O 面板中的 Write To Measurement File Express VI。 VI 所需的唯一輸入是 DAQmx Task 或您正在寫入磁碟的訊號,如圖2所示。

圖2 。您可以將資料直接連接到 Write to Measurement File Express VI。

在 Write to Measurement File Express VI 的配置對話框中,您可以選擇寫入 TDM 或 TDMS 檔案。另外,您可以使用配置對話框向檔案添加屬性,例如您的自定義屬性或從 DAQmx Task 定義的屬性,如圖3所示。

圖3.選擇要寫入 TDM 或 TDMS 檔案後,還可以在配置對話框中配置用戶定義的屬性。

寫入 Write to Measurement File Express VI 是開始將資料寫入 TDM 和 TDMS 檔案的最簡單方法。但是,您在寫入資料的結構上幾乎沒有靈活性。為了實現 TDM 資料模型的全部優點並編寫組織良好且記錄良好的資料,您需要使用 data storage VIs 和/或 TDM Streaming API。

Data Storage VIs

使用 data storage VIs,您可以將資料寫入 TDM 或 TDMS 檔案。用 LabVIEW data storage VIs 寫入測量資料的最簡單形式如圖4所示,其中 data acquisition task 為 Write Data VI 生成一系列測量值。

圖4. Data storage VIs 在 channel level 記錄資料。

注意, Write Data VI 除訊號輸入外,還有兩個輸入:Name 和 Unit。通過雙擊 Write Data VI,可以選擇要通過配置對話框保存的其他訊息,類似於 Write to Measurement File Express VI 的過程。

在圖4中,所有來自 DAQ Assistant 的通道均具有相同的名稱和單位。但是,Data storage VIs 會枚舉通道名稱,以防止命名衝突。可以通過將通道名稱數組傳遞給名稱輸入或為每個通道使用單獨的 Write Data VI 來覆蓋自動枚舉,這兩種方法都是可以接受的解決方案。 Write Data VI 的另一個好處是,它可以自動計算每個測量陣列的最小值和最大值,並將其保存在 TDM 或 TDMS 文件中。

圖4概述了 Data storage VIs 如何在 channel level 記錄資料。圖5說明了如何使用 Set Properties VI 在 file level 保存更多描述性訊息。

圖5 。使用設置屬性VI可以在文件級保存其他描述性信息。

圖6說明了使用 Data storage VIs 讀取數據的最簡單形式。此處,Open Storage VI 將檔案引用 (reference) 傳遞至 Read Data VI ,然後將所有數據從 TDM 或 TDMS 檔案讀取到存儲器中,並顯示在波形圖上。

圖6. Open Storage VI 將檔案引用傳遞給 Read Data VI,然後將所有資料從 TDM 或 TDMS 檔案讀取到存儲器中,並顯示在波形圖上。

TDM Streaming API

儘管 Data storage VIs 易於使用且具有靈活性,但在將資料寫入磁碟時,它們表現出的性能與使用 TDM Streaming API 所獲得的性能不同。 TDM Streaming API 旨在以較小的磁碟佔用空間高速將資料流傳輸到磁碟,這就是為什麼它也是理想的在 Real-Time 系統上寫入資料的原因。

使用 TDM Streaming VI 寫入測量數據的最簡單形式如圖7所示。在本範例中,DAQ Assistant 生成測量值數組並將其傳遞給Write Data VI。

圖7 。在 Channel Level 將數據寫入 TDMS 文件。

注意,Write Data VI 除了訊號輸入外還有兩個輸入。在圖7中,所有來自 DAQ Assistant 的通道都具有相同的 Group 和 Channel Name。如果Group 和 Channel Name 輸入未連接,則預設為“untitled”。

圖8顯示了使用 TDM Streaming VI 讀取數據的最簡單形式。在此,TDMS Open File VI 將檔案引用傳遞給 TDMS Read File VI,然後將“ Main Group”組中的所有資料從 TDMS 檔案讀取到存儲器中,並顯示在波形圖上。

圖8.從 TDMS 檔案讀回資料。

寫入某些資料類型時,TDMS 資料模型會自動創建某些屬性。但是,在許多情況下,您可能想要創建一個特定於您的特定需求的屬性,例如被測設備,序列號和測試溫度。您可以使用 TDMS Set Properties VI 來實現此目的,使用它可以在文件(File),組 (Group) 或通道級別 (Channel Level) 寫入屬性,如圖9所示。

圖9.在將資料寫入檔案之前,在三個不同的級別上編寫自定義屬性。

LabWindows 商標已獲得 Microsoft Corporation 的許可使用。 Windows 是 Microsoft Corporation 在美國和其他國家(地區)的註冊商標。