CompactRIO 搭配 LabVIEW FPGA 與 C 系列數位模組,實現更多可能性

概觀

National Instruments 提供超過 20 種 C 系列數位模組,可用來在 NI CompactRIO 系統中輸入與輸出數位訊號。C 系列數位模組提供多種訊號準位、速度與通道,可讓您根據自己的規格來建立系統。數位模組非常適合用來完成基本作業,例如監控狀態或開關機器等。搭配 DAQmx 使用 CompactRIO 時,您甚至可以使用 DAQmx API 執行計數器作業,因為 DAQmx API 具有程式設計更簡單的優勢。不過,使用 LabVIEW FPGA 就能進一步擴充數位模組的功能。

本技術文件探討 7 種方式,以提升數位模組的功能。下方範例說明如何使用 LabVIEW FPGA 與 FPGA 介面進行程式設計。這些範例必須針對您的 NI CompactRIO 機箱進行正確設定,才能正常運作。

注意:每個 C 系列數位模組都有不同的時序特性。請務必選擇時序特性符合應用需求的模組。此外,下列範例檔案路徑也適用於 LabVIEW 2012。從 LabVIEW 2013 開始,FPGA 範例都經過改造,並且置於新的檔案路徑中。LabVIEW 2013 與更高版本範例的檔案路徑為新範例,與本文件中使用的範例息息相關。

內容

事件計數

事件計數是數位模組最簡單的工作之一。 事件計數是數位訊號的每個上升與/或下降緣計數的流程,廣泛用於馬達量測至管路中液體流量計量等各種應用。若要使用 NI-DAQmx 驅動程式進行程式設計,您必須使用專屬的內建計數器或獨立的計數器模組來執行計數作業,這對許多應用來說已足夠。 或者,您也可以使用 FPGA 建立自己的計數器應用,不需額外使用計數器模組即可增加可執行的計數器數量。 計數器數量僅受系統中的數位通道數量與 FPGA 大小限制。

下列範例示範如何使用 LabVIEW FPGA 執行事件計數器。此範例使用布林邏輯來判斷是否發生上升緣或下降緣。您可以在 LabVIEW Example Finder 中找到此範例,並瀏覽至: 

LabVIEW 2013 與更新版本:硬體輸入與輸出»CompactRIO»訊號產生與處理»數位»計數器»邊緣計數器»邊緣計數器。lvproj.

LabVIEW 2012 與更早版本:硬體輸入與輸出 » CompactRIO » FPGA Fundamentals » 計數器 » 事件計數器 » 事件 Ctr, either edge – cRIO.lvproj

設定事件計數 VI

  1. 將欲計數的通道連接至任何數位輸入通道。
  2. 開啟並修改 Quad Ctr VI 的程式方塊圖,讓實體訊號的數位輸入通道取代 A 與 B 布林控制項。
  3. 執行 VI 編譯,並以互動模式使用。

圖 1.修改您的程式碼以計算外部訊號

 

PWM

使用脈寬調變 (PWM) 輸出一系列數位脈衝,用於控制類比電路。您可以變更這些脈衝的長度與頻率,判定電路總功率。PWM 訊號最常用於控制 DC 馬達,但也適用於其他許多應用,例如控制閥門或幫浦,或是調整 LED 的亮度。

構成 PWM 訊號的數位脈波列有固定頻率,並會改變脈寬,以改變訊號的平均功率。脈寬與週期的比值,即為訊號的工作週期 (Duty cycle)。舉例來說,如果 PWM 訊號的週期是 10 毫秒,且脈衝長度是 2 毫秒,則訊號的工作週期是 20%。 只要控制 PMW 的工作週期,就能控制類比電路所使用的功率。您可以使用 NI 數位模組輸出控制 PWM,或量測現有 PWM 的工作週期。

如果您的 CompactRIO 控制器支援 NI-DAQmx 程式設計,您也可以在 NI-DAQmx 中執行 PWM 作業。不過,由於 PWM 需要計數器,因此,PWM 作業數量會受限於 CompactRIO 內建的計數器數量。在 FPGA 中進行這項作業的程式設計,就能增加可執行的 PWM 作業數量。

圖 2.脈寬調變

下列範例使用 Loop Timer.vi 控制脈衝高低準位持續時間。此範例可於 Example Finder 中找到,並瀏覽至:

LabVIEW 2012 與更早版本:硬體輸入與輸出 » CompactRIO » FPGA Fundamentals » 計數器 » 事件計數器 » PWM Out, 簡單 - cRIO.lvproj。 

LabVIEW 2013 與更新版本:硬體輸入與輸出»CompactRIO»Signal Generation and Processing»Digital»Pulse Width Modulation»PWM Generation» PWM Generation.lvproj.

 

設定 PWM VI

  1. 將欲計數的通道連接至任何數位輸入通道。
  2. 透過要產生 PWM 的數位輸出通道,修改 PWM Out 簡易 VI 的程式方塊圖。
  3. 執行 VI 編譯,並以互動模式使用。

圖 3.修改您的程式碼以產生 PWM 訊號

 

編碼器

編碼器是用來量測運動或位置的機電裝置,適用於醫療裝置或工業機器測試等用途。大多數編碼器使用光學感測器以脈波列形式提供電子訊號。多組脈波列提供更多訊號相關資訊。數位模組 (例如 NI 9401) 能擷取這些脈波列,並使用 FPGA 將訊號轉換為運動、方向或位置資訊。您也可以使用 C 系列數位模組模擬編碼器的輸出,用於其他應用,例如硬體迴路 (HIL) 測試。由於編碼器可因應多種應用,因此其形狀、尺寸與輸出層級也大不相同。  NI 提供多款數位模組,可整合應用所需的特定編碼器。在工業環境中,使用 NI 9421 讀取 0 至 24V 訊號。在乾淨的實驗室環境中,使用 NI 9401 讀取電晶體對電晶體邏輯 (TTL) 或 0 至 5V 訊號。

同樣地,如果您的 CompactRIO 控制器支援 NI-DAQmx 程式設計,您也可以在 NI-DAQmx 中執行編碼器作業,但編碼器作業的數量會更加有限。在 FPGA 中進行這項作業的程式設計,即可增加可用的編碼器作業數量。

下列範例示範如何使用 LabVIEW FPGA 與 CompactRIO 系統執行編碼器量測。此範例使用布林邏輯來判斷 AB 象限編碼器是否正在旋轉,以及其旋轉方向為何。您可以在 Example Finder 中找到此範例,並瀏覽至: 

LabVIEW 2013 與更新版本:工具組與模組 » FPGA » CompactRIO » Signal Generation and Processing »Digital » Quadrature Encoding » Quadrature Decoder » Quadrature Decoder.lvproj.

LabVIEW 2012 與更早版本:硬體輸入與輸出»CompactRIO»FPGA Fundamentals» Counters»Quadrature Input»Quad Ctr – cRIO.lvproj

設定編碼器應用

    1. 將 A 與 B 訊號連接至兩條數位通道。
    2. 使用實體訊號的數位輸入通道修改 Quad Ctr.vi 的程式方塊圖,以取代 A 與 B 布林控制項。
    3. 執行 VI 編譯,並以互動模式使用。

圖 4.在 FPGA 中使用布林邏輯來追蹤位置

 

頻率

數位訊號的頻率是週期發生率,當中的週期是上升緣或下降緣之間的時間,或是以赫茲 (Hz) 的單位進行週期的反向值。數位訊號的頻率非常適用於多種應用,從決定速度或角度速度,到解碼光源的密度,皆包含在內。使用 LabVIEW 與 CompactRIO 設計 C 系列數位模組的程式,將數位訊號傳輸至 FPGA,其使用週期解碼演算法。之後會將週期傳送至主機應用程式,由此應用程序推算出頻率。取得頻率之後,即可將頻率對應至已知的物理現象。  

這樣一來,只要在 LabVIEW FPGA 中設計頻率輸入作業的程式,相較於 NI-DAQmx,您就能增加 FPGA 輸入作業的數量。由於某些頻率輸入作業會需要 2 組計數器,因此尤為實用。

picture.jpg

圖 5.數位訊號的週期與頻率

下方範例說明如何使用 LabVIEW FPGA 與 CompactRIO 系統執行頻率量測。此範例使用布林邏輯判斷出現邊緣的時間,接著使用 FPGA 時脈判斷脈衝之間的時間。在 Example Finder 中可以找到此範例,需進入 LabVIEW 並瀏覽至:

LabVIEW 2013 與更新版本:硬體輸入與輸出»CompactRIO»Signal Generation and Processing»Digital»Period and Phase Measurement»Period and Phase Measurement.lvproj.

LabVIEW 2012 與更早版本:硬體輸入與輸出»CompactRIO»FPGA Fundamentals» Counters» Frequency Measurement» Count and Period – cRIO.lvproj.

設定頻率作業

  1. 實際連接所需訊號至數位通道。
  2. 使用實體訊號的數位輸入通道修改 Count and Period (FPGA) VI 的程式方塊圖,以取代 A 與 B 布林控制項。
  3. 執行 VI 編譯,並以互動模式使用。
     

圖 6.判斷數位訊號的週期與頻率

深入了解如何使用 NI 硬體進行頻率量測 https://www.ni.com/en/shop/data-acquisition/measurement-fundamentals/frequency-measurements-how-to-guide.html

數位濾波

環境雜訊等環境因素,或是工業切換器或感測器的機械「抖動」等因素,都會讓您的資料擷取系統難以接收清晰的訊號。搭載 FPGA 的 CompactRIO 系統可實作數位濾波或數位去抖動這項技術。數位濾波是一種驗證機制,必須確認訊號在指定的時間內持續維持在新準位後,才允許該訊號變更傳播至系統的處理層面。此方法可濾波線路的干擾或雜訊,並減少系統中的不必要行為。

下列範例示範如何使用布林邏輯、LabVIEW FPGA 與 CompactRIO 系統篩選數位通道。  訊號必須保持新準位指定的時間長度,才能讓濾波輸入反映變更。在 Example Finder 中可以找到此範例,需進入 LabVIEW 並瀏覽至:

LabVIEW 2012 與更早版本:硬體輸入與輸出»CompactRIO»FPGA Fundamentals»Digital Filter»Digital Filter – Continuous – cRIO.lvproj. 

LabVIEW 2013 與更新版本:不再提供同等的範例。您可以在空白 VI 中拖曳下方的程式碼片段。

 

濾波數位線路

  1. 實際將所需訊號連接至數位通道。
  2. 修改「數位濾波 – 連續」 VI 的程式方塊圖,以實體訊號的數位輸入通道取代輸入控制。
  3. 執行 VI 編譯,並以互動模式使用。

圖 7.使用 FPGA 篩選數位訊號

通訊

CompactRIO 系統與 C 系列模組包含許多標準通訊協定,從序列與乙太網路到 PROFIBUS 與 MODBUS 等工業級通訊協定不等。不過,這些標準協定的通訊能力可能會受限於使用不同協定或接頭的裝置。  CompactRIO 系統可讓您使用數位模組與 LabVIEW FPGA,繼續與這些裝置通訊。

圖 8.使用 LabVIEW 與 LabVIEW FPGA 執行 SPI 通訊協定

如需深入了解此協定,請參閱「了解 SPI 匯流排搭配 NI LabVIEW」,如需使用 LabVIEW FPGA 實作 SPI 匯流排協定的詳細範例,請參閲「在 LabVIEW FPGA 中實作 SPI 通訊協定」。

觸發

觸發功能在任何一種資料採集或控制系統中都是不可或缺的功能。使用觸發功能進行同步化、警示或啟動/關機作業。不過,NI-DAQmx 中的標準觸發函式並未提供自訂功能,例如使用多個輸入觸發器,或觸發其中一個邊緣或同時觸發兩個邊緣。  搭配 CompactRIO 系統使用 FPGA 建立客制化觸發應用。

若需如何只在發生數位碼型時產生觸發訊號的範例,請參閱「建立觸發器與計數器 (FPGA 模組)」。 

圖 9.僅在發生數位碼型時產生觸發器

後續步驟