選擇適當的程式設計模式
LabVIEW 為 CompactRIO 系統提供三種程式設計模式。要選擇合適的程式設計模式,重要的是要了解資料如何從實體輸入與輸出埠經由 cRIO 目標傳輸到嵌入式系統元件。使用 CompactRIO 時,有三種方式可存取 I/O。在本教學中,使用的是 Real-Time (NI-DAQmx Mode)。
Real-Time (NI-DAQmx) Mode
此模式將兩種軟體體驗結合為一:NI-DAQmx 的易用性與 LabVIEW FPGA 的低階功能。它同時簡化了系統架構,並引入最新的同步與控制技術至 CompactRIO 平台。要在此模式下為 C 系列模組編程,請將其放在 LabVIEW 專案的 Real-Time Resources 資料夾下。本教學將介紹如何使用 NI-DAQmx 進行簡單的資料擷取設定。
Real-Time Scan (I/O Variable) Mode
此模式允許你對 CompactRIO 系統的即時處理器編程,但不包含 FPGA。在此模式中,NI 提供預先定義的 FPGA personality,週期性掃描 I/O 並將其放入記憶體對應區,讓 LabVIEW Real-Time 模組存取。
CompactRIO Real-Time Scan 模式適合需要單點存取 I/O 且速率為數百 Hz 的應用。要在此模式下編程 C 系列模組,請將其放在 LabVIEW 專案的 Real-Time Scan Resources 資料夾中。更多資訊可參考 Take Your First Measurement in LabVIEW Real-Time 。
LabVIEW FPGA Interface Mode
此模式允許你透過自訂 FPGA personality 來發揮 CompactRIO 的全部能力,除了編寫即時處理器程式外,還能實現自訂觸發與計時、分擔訊號處理任務、建立自訂通訊協定,以及以最大速率存取 I/O。要在此模式下編程 C 系列模組,請將其放在 LabVIEW 專案的 FPGA Target 下。
下圖顯示了各模式如何傳送 I/O 資料:
-
Real-Time (NI-DAQmx) mode:資料透過 NI-DAQmx VI 讀取,處理器直接存取。
-
Real-Time Scan (I/O Variable) mode:資料透過 FPGA 掃描後存放至記憶體,處理器再存取。
-
LabVIEW FPGA Interface mode:資料直接由 FPGA 傳送到處理器或由 FPGA 處理。
如果你的開發電腦已安裝 LabVIEW Real-Time Module、LabVIEW FPGA Module 和 NI-DAQmx,你可以在專案中將模組放置到對應的標題下,來選擇每個模組要使用的程式設計模式。LabVIEW 專案中模組名稱旁的文字會顯示該模組的程式設計模式。
你也可以透過 NI Measurement & Automation Explorer (MAX) 中的下拉式選單來選擇要使用的程式設計模式。
在本教學中,請確保 CompactRIO 硬體的程式設計模式已設定為 Real-Time (NI-DAQmx)。

在 LabVIEW 中建立新的 CompactRIO 專案
- 首先建立一個新的 LabVIEW 專案來管理程式碼與硬體資源。
-
在 LabVIEW 中選擇 File » Create Project 建立新專案,然後選擇 Blank Project。
-
儲存專案,方法是選擇 File » Save 並輸入一個唯一名稱,例如 CompactRIO Using NI-DAQmx。
-
按 OK。
- 預設專案包含 My Computer,它代表你目前開發時所使用的 Windows 電腦。
請記住,Real-Time 目標擁有一個執行即時作業系統的處理器,所以它實際上是另一台電腦。
若要撰寫在該 Real-Time 電腦上執行的程式,你需要在專案中新增另一個目標。
在樹狀結構頂端的 Project 項目上按右鍵,選擇 New » Targets and Devices...,以將一個 Real-Time 系統新增到專案中。
- 在此對話框中,你可以搜尋網路上已存在的系統,或新增一個系統。如果你已經在 LabVIEW 或 NI MAX 中設定好 CompactRIO 系統,請選擇 Existing Target or Device,然後選擇 Discover an existing target(s) or device(s)。展開 Real-Time CompactRIO 資料夾並選擇你的裝置,然後按 OK。如果你的裝置位於遠端子網,可能需要透過 IP 位址連線。選擇 Specify a target or device by IP address,並輸入裝置的 IP 位址。LabVIEW 會依照已安裝的驅動程式列出可用的硬體。由於你已安裝 NI-RIO 驅動程式與評估軟體,請展開 Real-Time CompactRIO 資料夾,然後選擇 cRIO-9045。按 OK。
- 確認你的 C-Series 模組出現在 Real-Time Resources 區段下。在本教學中,你使用的是 NI-9215 類比輸入模組。
使用 Real-Time NI-DAQmx API 擷取資料
- 現在你應該已經有一個新的 LabVIEW 專案,其中包含你的 CompactRIO 系統(包括控制器、機箱以及 C Series I/O 模組)。
在 LabVIEW 專案中,對 CompactRIO real-time 控制器按右鍵,選擇 New » VI。
將 VI 儲存為 DAQmx.vi。
這個 VI 將用來使用 NI-DAQmx 進行資料擷取與處理。

- 首先,建立一個虛擬 DAQmx Channel。方法是先在 Front Panel 上按右鍵,然後依序選擇 Measurement I/O » DAQmx – Data Acquisition » DAQmx Create Virtual Channel。將此 VI 拖曳到 Front Panel。
- 在 DAQmx Create Virtual Channel VI 的 Physical Channels 輸入端上按右鍵,選擇 Create » Constant。點擊 Browse 並選取所有通道(可按住 Shift 鍵並點擊各項目進行多選)。這樣即可在單一虛擬通道中同時讀取所有四個類比輸入通道的數據。
如果看不到任何通道,請確認裝置已連接,並且各個模組都已設定為 Real-Time (NI-DAQmx) 模式(在 NI MAX 中設定)。
- 在 DAQmx – Data Acquisition palette 中找到 DAQmx Timing VI,並將它放到 front panel 上。在 rate 端按右鍵並選擇 Create » Constant,這裡可以設定資料擷取的取樣率。請確保將其設為 1000 Hz。接著在 sample mode 端也建立 constant,並在下拉選單中選擇 Continuous Samples,這樣就可以連續擷取資料。
- 建立一個 While Loop。在 DAQmx – Data Acquisition palette 中找到 DAQmx Read VI,並將它放到迴圈內。因為要從四個通道讀取多筆樣本,在 VI 的下拉選單中選擇 Analog » Multiple Channels » Multiple Samples » 1D Waveform (Samples)。
- 在 VI 的 front panel 中建立 Waveform Chart,方法是按右鍵開啟 palette,然後選擇 Silver » Graph » Waveform Chart (Silver)。在 Block Diagram 中,將 DAQmx Read 的 data terminal 連接到 waveform chart,以顯示擷取的波形資料。再加入一個 Wait (ms) 函數以及一個停止按鈕到迴圈中。完成後,最終的 VI 應該會如下面的範例圖所示。(注意:該截圖為可直接拖曳到 LabVIEW 的 VI Snippet。)

- 執行你的 VI。LabVIEW 會連接到 CompactRIO,部署程式碼,然後在 real-time target 上執行。你可以在剛建立的 waveform chart 上查看資料。