使用LabVIEW Real-Time進行首次測量與數據記錄

更新 Aug 16, 2021

環境

硬件

  • CompactRIO Controller

軟體

  • LabVIEW
  • LabVIEW Real-Time Module
  • LabVIEW FPGA Module

驅動程式

  • NI-DAQmx

本教程提供了使用CompactRIO將數據記錄到磁盤的步驟。
使用LabVIEW完成對CompactRIO系統的檢測後,需要進行首次測量。

此頁面是設置CompactRIO系統的一部分步驟。

在LabVIEW中啟動一個新的CompactRIO專案

首先在LabVIEW中創建一個新專案,您將在其中管理您的程式碼和硬體資源。

  1. 通過選擇File » New Project,在LabVIEW中創建一個新專案。
  2. 通過右鍵單擊樹頂部的專案項並選擇New » Targets and Devices… 將CompactRIO系統添加到專案中。該對話框能檢測網絡上的系統或添加離線系統。
圖1. 將新目標設備添加到您的LabVIEW專案
  1. 展開Real-Time CompactRIO資料夾並選擇您的系統。單擊OK關閉對話窗口。

注意:如果您的系統未列出,LabVIEW無法在網絡上檢測到它。確保您的系統在Measurement & Automation Explorer中正確配置了有效的IP地址。如果您的系統在遠程子網上,您還可以選擇手動輸入IP地址。

圖2. 選擇一個新的CompactRIO系統

選擇合適的撰寫模式

CompactRIO系統至少有兩種用戶可選模式。某些CompactRIO的型號具有額外的用戶可選模式,可以在Real-Time NI-DAQmx中進行撰寫。請參閱本文以判斷您的CompactRIO是否能夠使用Real-Time NI-DAQmx。將目標設備添加到專案後,系統會提示您選擇撰寫模式。
注意:如果需要,您以後可以使用CompactRIO機箱屬性對話框更改撰寫模式。

Real-Time (NI-DAQmx) 模式—帶有NI-DAQmx的CompactRIO是CompactRIO控制器系列的最新產品。它結合了NI-DAQmx的易用性和LabVIEW FPGA的低級功能,將兩種軟體體驗合二為一。它還通過將最新的同步和控制技術引入CompactRIO平台來簡化系統架構。要在此模式下對C系列模組進行撰寫,請將其放置在LabVIEW專案的Real-Time Resources資料夾下。

Real-Time Scan (I/O Variable)模式—該選項讓您對CompactRIO系統的Real-Time處理器進行撰寫,但不能對FPGA進行撰寫。在這種模式下,NI為FPGA提供了一個預定義的特性,該特性定期掃描I/O並將其放置在內存映射中,使其可用於LabVIEW Real-Time。對需要以幾百赫茲的速率單點訪問I/O的應用程式,CompactRIO Real-Time Scan模式已足夠。要在此模式下對C系列模組進行撰寫,請將其放置在LabVIEW專案的Real-Time Scan Resources檔案夾下。要了解有關Scan模式的更多訊息,請閱讀了解NI CompactRIO Scan模式白皮書並查看基準測試
注意:NI推薦Real-Time (NI-DAQmx) 模式而不是Real-Time Scan(I/O 變數)模式。

LabVIEW FPGA Interface模式—該選項允許您通過自定義FPGA個性以及對Real-Time處理器進行撰寫來釋放CompactRIO的真正潛能,從而實現通常需要自定義硬體才能達到的性能。使用LabVIEW FPGA,您可以實現自定義定時和触發、卸載信號處理和分析、創建自定義協議以及以最大速率訪問I/O。要在此模式下對C系列模組進行撰寫,請將其放置在LabVIEW專案中的FPGA目標下。
LabVIEW現在將嘗試檢測系統中存在的機箱和C系列I/O模組,並將它們自動添加到LabVIEW專案中。
注意:如果未發現您的系統,並且選擇離線添加,則需要手動添加機箱和C系列I/O。本文檔討論了Scan模式和FPGA模式的此過程。

下圖顯示了每種模式如何通過唯一路徑發送I/O數據。對於Real-Time (NI-DAQmx) 模式,通過NI-DAQmx VI的處理器I讀取數據。對於Real-Time Scan(IO 變數)模式,數據通過FPGA發送,但最終以IO節點拖放到Real-Time VI的方式,通過處理器進行訪問。對於LabVIEW FPGA模式,可通過將IO節點拖放到FPGA VI直接從FPGA內部讀取I/O。


如果您的開發電腦上安裝了LabVIEW Real-Time,LabVIEW FPGA和NI-DAQmx,則可以通過將模組放置在專案中的適當標題下,來選擇每個模組所使用的撰寫類型。撰寫模式由LabVIEW專案中模組旁邊的文本指示。您還可以通過從Measurement and Automation Explorer (MAX)的下拉菜單中進行選擇要使用的撰寫模型。

在CompactRIO上創建一個基本的紀錄檔案應用程式

本節分為三個小節展示如何創建一個基本的溫度記錄應用程式。請根據您所需的撰寫模式和CompactRIO控制器選擇適合的小節。如果您不確定所需的撰寫模式,請參閱"選擇合適的撰寫模式"部分這些小節按以下順序列出

  1. NI-DAQmx API
  2. FPGA撰寫模式
  3. Real-Time Scan模式

一,使用NI-DAQmx API

NI-DAQmx驅動程式附帶各種範例VI,可幫助用戶熟悉NI-DAQmx API。本節將指導您如何將NI-DAQmx範例導入CompactRIO目標設備。我們將導入Thermocouple - Continuous Input VI。

  1. 通過選擇File » New Project在LabVIEW中創建一個新專案
  2. 將您的CompactRIO系統添加到專案中,請右鍵單擊樹頂部的專案項目,然後選擇New » Targets and Devices…
圖3. 在 LabVIEW 專案中創建新目標
  1. 該對話框使您可以發現網絡上的系統或添加離線系統。展開Real-Time CompactRIO資料夾,選擇您的cRIO-904x系統,然後單擊OK。注意:如果您的系統未列出,代表LabVIEW無法在網絡上檢測到該系統。確保您的系統在Measurement & Automation Explorer中正確設定了有效的IP地址。如果您的系統在遠程子網中,則可以選擇手動輸入IP地址。
圖4. 在 LabVIEW中搜索Real-Time CompactRIO
  1. 要將Thermocouple - Continuous Input VI添加到LabVIEW專案,右鍵單擊cRIO-904x目標並選擇Add>> File...這將打開檔案資源管理器。
NI-DAQmx範例將默認安裝到以下位置:
C:\Program Files (x86)\National Instruments\LabVIEW <xxxx>\examples\DAQmx
(在x32 OS上,默認檔案路徑為C:\Program Files\National Instruments\LabVIEW <xxxx>\examples\DAQmx)。
圖5. Thermocouple - Continuous Input VI的文件位置
  1. 通過將模組移動到Real-Time Resources專案項目下,將確保用於Thermocouple - Continuous Input VI內的NI-DAQmx任務的模組處於所需的Real-Time(NI-DAQmx)模式下。同時確保將撰寫模式中的任何更改部署到目標。
圖6. LabVIEW專案的層次結構
  1. 打開VI並為相應的模組和通道配置物理通道控制元件/常數。注意:NI-9211要求的取樣率低於此範例VI中觀察到的默認值。
  2. 打開程式區。導航到程式區的Timing Settings部分。
  3. DAQmx Timing Property NodeCase之間實現DAQmx Configure Logging (TDMS) VI。確保您有通過DAQmx Configure Logging (TDMS) VI連接任務接線和錯誤接線。
  4. 右鍵單擊logging mode端口並選擇Create >> Constant 。確保常數設置為Log and Read
  5. 右鍵單擊file path端口並選擇Create >> Constant 。有關如何引用檔案路徑的說明,請參閱使用"CompactRIO Real-Time Scan模式"部分的步驟23
  6. 確認您的DAQmx Configure Logging (TDMS) VI的配置如下所示。
圖7. 需要對範例VI進行編輯
  1. 導航到front panel並運行應用程式。
  2. 查看和記錄數據後,單擊"STOP"按鈕您可以從本文檔的"下載/附件"部分下載解決方案。
二,使用LabVIEW FPGA Interface模式
LabVIEW FPGA Interface模式能夠利用CompactRIO的板載FPGA來提高性能和確定性。相关範例專案位於C:\Program Files (x86)\National Instruments\<LabVIEW Version>\examples\CompactRIO\Module Specific\NI 9205\NI 9205 Basic IO\NI 9205 Basic IO.lvproj。該專案展示如何從NI 9205模組讀取類比輸入通道。範例專案中使用 cRIO-9101背板插槽(1)中的NI 9205模組所創建。該專案由兩個VI組成,如下所示。
NI 9205 Basic I/O 項目的項目瀏覽器,擴展了 RT 設備。
圖8. LabVIEW專案的範例層次結構

NI 9205 Basic IO (FPGA) VI使用DMA FIFO與NI 9205 Basic IO(Host)VI通信,如下方程式區所示。在Real-Time處理器上運行的VI需要從DMA FIFO中讀取值。請參閱範例專案以幫助理解NI 9205 Basic IO (Host) VI用於讀取和存儲從板載FPGA接收溫度值的方法。
FPGA VI 的框圖,附有解釋代碼不同方面的註釋。
圖9. NI 9205 Basic IO (FPGA) VI的程式區

三,使用CompactRIO Real-Time Scan模式
本節將引導您使用Scan模式在CompactRIO上創建一個基本的紀錄檔案應用程式。您現在應該有一個新的LabVIEW專案,其中包含您的CompactRIO系統,包括控制器、機箱和 C系列I/O模組。在本教程中,我們將使用NI 9211熱電偶輸入模組,但是任何類比量輸入模組都可以遵循該過程。您也可以從本頁的"下載/附件"部分下載解決方案。
注意:NI推薦Real-Time(NI-DAQmx)模式而不是Real-Time Scan(I/O 變數)模式。
  1. 通過選擇左上角的File»Save來保存專案。
  2. 輸入名稱為Basic logging with scan mode,然後單擊OK關閉對話窗口。
圖10. 保存Basic logging with scan mode LabVIEW專案
  1. 通過右鍵單擊專案中的CompactRIO控制器並選擇New»VI來創建VI後,將VI保存為RT.vi。該專案將僅包含一個VI,即運行在CompactRIO控制器上的LabVIEW Real-Time應用程式。
圖11. 在最近添加的CompactRIO控制器下創建一個新VI
  1. 如下圖所示,在RT.vi程式區上放置一個包含三個框架的flat sequence structure。此應用程式的基本操作將包括三個步驟:啟動、運行和關閉。Flat sequence structure是強制執行此操作順序的簡單方法。
圖12. LabVIEW中的Flat Sequence structure
  1. 將timed loop添加到flat sequence structure的"運行"框架。Timed loop提供了以不同時間為基礎同步程式碼到的能力,包括讀取和寫入Scan模式I/O的NI Scan引擎。
圖13. LabVIEW中帶Timed Loop的Flat Sequence structure
  1. 雙擊左側輸入節點上的時鐘圖標以配置timed loop。
圖14. 雙擊左上角打開Timed Loop配置
  1. 選擇Synchronize to Scan Engine作為Loop Timing Source。
  2. 單擊OK 。這將導致timed loop中的程式碼在每次I/O掃描後立即執行一次,以確保在此timed loop中使用的任何I/O值都是最新的值。
圖15. 使用Scan引擎作為Timing Source配置Timed loop
  1. 右鍵單擊LabVIEW專案中的CompactRIO控制器,然後選擇Properties
  2. 從左側的類別中選擇Scan Engine並輸入100ms作為Scan Period,這將導致CompactRIO系統中的所有I/O每100ms(10Hz)更新一次。Network Publishing Period也可以從這個頁面設置,改設置將控制I/O值發佈到網絡以進行遠程監控和調試的頻率。單擊OK
圖16. 調整Scan Period以控制刷新率
  1. 通過單擊並使用Shift鍵選擇模組下方的所有通道,然後將它們拖放到RT.vi程式區上的timed loop中,如下所示。使用CompactRIO Scan模式時,您可以簡單地將I/O變數從LabVIEW專案拖放到程式區中。展開所要記錄的CompactRIO控制器、機箱和I/O模組。
圖17. 將C系列I/O拖放到Timed Loop中


提示:使用LabVIEW工具欄上的Align Objects » Left EdgesDistribute Objects » Vertical Compress來組織程式框上的I/O變數。
圖18. 使用Left Edges和Vertical Compress對齊對象


您可以通過雙擊模組來修改屬性,如下所示:
圖19. 設置模組屬性
  1. 在Timed loop下的"運行"框架中放置一個普通的while loop,該循環將用於檔案I/O任務。由於檔案I/O佔用大量時間,因此您必須將I/O獲取任務和檔案I/O任務分開。忽略此要求可能會導致數據丟失,因為檔案I/O可能需要比I/O掃描更長的時間,從而導致丟失樣本。
為了在常規while loop中將數據寫入磁盤,您需要使用Real-Time FIFO從timed loop傳輸I/O值。這將在兩個循環之間提供一個緩衝區。Timed loop將運行,同步I/O掃描,並每次將新的I/O值寫入緩衝區。然後,常規while loop將從緩衝區中讀取數據並將其寫入磁盤。通過這種方式分離I/O任務和磁盤訪問可以讓您的timed loop以Real-Time性能運行,這意味著它將始終按時完成。
圖20. 使用循環來確保記錄數據不會降低I/O取樣率
圖21. Real-Time任務訪問I/O與低優先級任務記錄數據
  1. 在LabVIEW專案中,右鍵單擊CompactRIO控制器並選擇New»Variable
圖22. 在LabVIEW專案中添加新變數
  1. 將變數命名Data buffer,選擇Single Process作為變數類型。
  2. 選擇Array of Double作為數據類型。這將創建一個局部範圍變數(無網絡發布),該變數包含雙精度浮點數陣列的。
圖23. 使用變數屬性定義變數和數據類型
  1. 然後從左側菜單中選擇RT FIFO。
  2. 選擇RT FIFO類別後,選中Enable RT FIFO複選框,為FIFO Type選擇Multi-element。
  3. Number of arrays輸入50,Number of elements輸入4 (如果您記錄的通道數不是 4,則輸入該數。)這會將變數配置為作為real-time-safe FIFO運行,可以作為我們的Real-Time任務和低優先級任務之間的數據緩衝區。FIFO將保存51維陣列,每個陣列包含四個雙精度數。單擊OK 。
圖24. 使用變數屬性啟用RT FIFO
  1. Data Buffer RT FIFO拖放到您的timed loop,並使用Build Array功能從I/O變數構建陣列,然後將其傳遞到RT FIFO。
圖25. 拖放Data buffer並將其放置在timed loop中
  1. Data buffer RT FIFO 的其他副本拖放到常規while loop中,您將在其中讀出數據並將其記錄到磁盤。
  2. 右鍵單擊RT FIFO並選擇Show Timeout並將超時設置為100 。這將導致RT FIFO等待最多100毫秒,以便新數據在超時之前到達緩衝區。如果緩衝區中存在數據,RT FIFO將立即返回緩衝區中最早的數據。
圖26. 拖放Data buffer的其他副本
  1. TDMS Open VI在序列結構的啟動框架中放置一個
  2. 檔案路徑操作輸入創建常數。在檔案路徑中鍵入c:\tempdata.tdms,然後選擇create or replace操作如果您的CompactRIO控制器運行不同的Real-Time操作系統,請選擇如下所示的適當檔案路徑。有關更多訊息,請參閱Real-Time Controllers and Real-Time Operating Systems Compatibility

圖27. 根據所使用的CompactRIO控制器使用正確的檔案路徑
  1. 在此處下載該文件或將以下的VI Snippet從您的Web瀏覽器拖放到您的程式區中以執行檔案I/O。
  2. 將此程式碼放置在常規while loop,並如下所示地進行連接。只有當RT FIFO不超時時才使用case structure來執行這部分程式碼,這表明新的數據已經從緩衝區返回。然後,將數據格式化為寫入TDMS檔案並顯示在波形圖上。除了檢查錯誤作為停止條件外,還提供了while loop的停止按鈕。
注意:此圖像是LabVIEW Snippet,其中包含可在專案中重複使用的LabVIEW程式碼。要使用該程式碼,請右鍵單擊圖像,將其保存到您的電腦,然後將該檔案拖到您的 LabVIEW程式區上。

圖28. 不關閉的情況下記錄程式碼
  1. 在LabVIEW專案中,右鍵單擊自動創建的現有庫,其中包含Data buffer变数,然后選擇New»Variable來創建另一個共享變數。
  2. 將變數命名為stop,選擇Single Process,然後選擇Boolean。選擇左側的RT FIFO類別。

圖29. 選擇Single Process並使用Boolean作為數據類型
  1. 選擇Enable RT FIFO,保持Single-element選中狀態,然後單擊OK。這會創建一個可以在需要Real-Time性能的任務中安全讀取的變數。
  2. stop變數的副本放入timed loop並將其連接到stop條件
  3. 如圖所示,將stop變數的另一個副本放入常規while loop中,並將OR函數的結果寫入其中。在常規while loop停止時,將導致timed loop停止。
  4. 在Shutdown框架中放置一個TDMS Close函數並將檔案引用和錯誤簇連接到它。此外,從TDMS關閉error out端口創建并连接indicator。您完成的應用程式應如下圖所示:
圖30. 完成的LabVIEW程式區
  1. 在RT.vi上單擊Run,對於任何未保存的專案單擊Save,然後將任何有關更改應用到CompactRIO系統的任何對話框或警告上單擊OK。 LabVIEW現在將通過乙太網路部署您的VI,以嵌入CompactRIO系統中運行。
  2. VI部署並開始運行後,查看VI的front panel以查看繪製在波形圖上的當前I/O值。

圖31. 完成的LabVIEW front panel顯示記錄的數據
  1. 完成查看和記錄數據後,單擊STOP。
恭喜!您已成功使用LabVIEW和CompactRIO創建了嵌入式紀錄檔案應用程式。要繼續學習,請查看使用LabVIEW和CompactRIO進行嵌入式撰寫頁面上的其他資源。

訪問記錄的數據

完成這些步驟以檢索和查看CompactRIO系統上記錄的數據。如果您的系統上沒有安裝FTP服務器,則CompactRIO也支持WebDAV(Web分佈式編寫和版本控制)。這是使用標準Web瀏覽器交換檔案的安全替代方案。有關詳細訊息,請參閱使用WebDAV與Real-Time目標之間傳輸檔案
  1. 使用Windows Explorer或Web瀏覽器,導航至ftp:// <ip address> ,其中 <ip address> 是CompactRIO系統的IP地址。
  2. 下載tempdata.tdms(或任何您命名的TDMS檔案)
  3. 如果您安裝了Microsoft Excel,則可以通過選擇Add-Ins選項並單擊TDM Importer功能來查看TDMS檔案。工作簿的第一頁包含檔案訊息,其餘工作表包含通道數據。默認情況下,TDM Importer隨LabVIEW一起安裝;但是,如果TDM Importer功能不存在,您可以從此處安裝它。

圖32. 安裝TDM Importer以直接在Excel中打開tdms檔案
  1. 如果您沒有Excel,可以在LabVIEW中使用TDMS File Viewer VI查看TDMS檔案