以程式方式存取 Scan Mode 下的多個 CompactRIO 通道

更新 Aug 12, 2025

環境

硬件

  • CompactRIO Chassis
  • CompactRIO Controller

軟體

  • LabVIEW
  • LabVIEW Real-Time Module

我想在 Scan Mode 下使用我的 CompactRIO (cRIO)硬體,同時從多個通道擷取資料。若為每個通道各用一個 I/O variable ,從 Project Explorer 一個個拖進來,既繁瑣又不實用。是否有以程式方式掃描單一模組或多個模組全部通道的方法? 

可以透過模組的 reference,搭配  shared Variable pallete  以程式方式存取各通道。請在程式中依序實作下列步驟:

  1. 使用模組的 reference 搭配 property node 取得該模組所有通道的 references。接著使用具 auto-indexing 的 for loop,呼叫 Open Variable Connection Reference.vi 來開啟每個變數的 reference


  1. 若要讀取通道數值,可以使用 Timed Loop  來掃描所有變數。每個變數必須單獨掃描,因此必須使用 for loop。要掃描每個通道,請使用 Scanned Variable Read.vi
  2. 當完成所有通道的讀取後,必須使用 Close Variable Connection.vi 關閉所有通道的參照(references)。 

如需可能的實作範例,請在 LabVIEW 中參考以下路徑:
Help >> Find Examples >> Browse >> Hardware Input and Output >> CompactRIO >> NI Scan Engine >> Advance >> Programmatic IO Access-Scan Mode.lvproj

附加資訊
將模組參照(references)加入到程式方塊圖中。

若要將模組的參照加入到程式方塊圖,只需在 project explorer 中選取該模組,然後將它拖曳到程式中即可。

為一個以上的模組新增參照 (references)

可以透過拖曳多個模組並建立一個包含所有參照的陣列來新增多於一個模組。

設定 FPGA

當建立 LabVIEW 專案時,FPGA 尚未被設定為將我們用作 I/O 資源的模組的實體通道導入。換句話說,FPGA 並不知道專案中的模組。因此,如果我們只是建立專案並嘗試執行,應用程式將無法提供來自模組的通道讀取值。

有兩種方法可以設定 FPGA:

  • 在 FPGA 上建立一個空白 VI 並編譯它。這將會建立一個 bit 檔,用來設定所有 I/O 區塊並將它們連結至 cRIO 上使用的模組。

  • 在初始化區塊中新增任意通道的 I/O 變數。這將會實作 Scan Mode 預先定義的 bit 檔,並已設定 FPGA 晶片上所使用硬體的組態。