以 NI 軟硬體建立一套即時系統

綜覽

NI 即時軟硬體可順暢搭配在一起,穩定執行應用程式,並提供精確的時序效能。此篇技術文件將說明建立 NI 即時系統的不同元件、列出可用的軟硬體選項,並說明如何為您的專案做出最佳選項。

如要建立 NI 即時系統,您必須同時選擇開發軟體與硬體平台。以下各節將提供每個選項的詳細資訊。在閱讀本文件之前,先對即時系統有一個基本的了解,以及建立如何使您的專案受益,是非常有用的。請參閱「我需要即時系統嗎?」

建立即時系統時,您必須選擇具有即時功能的作業系統。NI 即時開發工具隨附所有必要的即時 OS (RTOS) 軟體,無需另行選用此元件。根據硬體平台的不同,NI 可使用 NI Linux Real-Time OS 或 Phar Lap ETS OS。 

選擇開發環境

如要開發即時程式,可選擇使用 LabVIEW 圖形化程式設計 - LabWindows™/CVI ANSI C 環境 (適用於 Phar Lap) 或 Linux 相容的 C/C++ 開發環境 (適用於 NI Linux Real-Time)。

開發選項:LabVIEW Real-Time 圖形程式設計

圖 1.使用 LabVIEW 進行圖形化程式設計。

如要以圖形化方式設計 NI 支援的即時硬體,必須使用 LabVIEW 搭配 LabVIEW Real-Time 模組。LabVIEW Real-Time 讓您能夠建立可靠的硬體即時應用程式,下載至硬體,透過單一工具即可除錯並執行應用程式。

您可在即時應用中使用 LabVIEW 隨附的大多數內建數學與訊號處理演算法,包含數個比例積分微分 (PID) 控制函式。 此外,可透過 MATLAB 節點在即時系統上執行文字式數學指令碼,也可整合在 The MathWorks, Inc.Simulink® 軟體或其他模型製作環境中 (使用選購的 LabVIEW Model Interface Toolkit) 建立的模型。

LabVIEW Real-Time:開發、下載執行應用程式

透過 LabVIEW 開發即時應用程式時,可使用 LabVIEW Project Explorer 來組織程式 (VI) 並分配執行它們的硬體。您將在一般的 Windows 主機電腦上開發程式碼,然後透過乙太網路或 USB 連接將程式碼佈署至即時硬體。

 

圖 2.透過 LabVIEW Project Explorer 管理 LabVIEW 程式 (VI) 並指派至即時目標系統。

透過 LabVIEW 開發即時程式,與為您的電腦開發標準的 LabVIEW 應用程式幾乎是一樣的。Real-Time VI 面板中包含了多個即時系統特有的附加功能,包含:

  • Watchdog 功能可在程式停止執行時自動重新啟動某些硬體目標
  • 可於即時程式的各部分之間精確地進行資料通訊的功能
  • 可於多 CPU 核心的系統上設定負載平衡的公用程式
  • 時序功能可精確地控制即時程式中的迴圈執行情形

若要測試硬體上的 LabVIEW Real-Time 程式碼,只要點選 Run 箭頭,您的應用程式就會佈署至即時硬體,並開始執行。您可透過開發電腦使用標準 NI 除錯工具,例如高亮執行、單步執行與斷點,即使即時程式實際上已經執行於即時目標系統上。

當您完成即時程式時,可於 LabVIEW 中建立可執行檔,並下載至即時硬體中作為啟動應用程式。重新啟動即時硬體之後,您的程式將自動以穩定獨立的方式執行。

LabVIEW Real-Time:指定平行程式碼區段核心處理優先級別

LabVIEW 的資料流程式設計模型,可免於冗長的文字式程式語言架構。由於執行順序是由節點之間的資料流決定,因此您可輕鬆建立應用程式,以平行方式執行多個作業。此外,LabVIEW 的 Timed Loop 結構可輕鬆分配執行緒的優先級別。如下所示,每個迴圈都具有可設定的時序來源、週期、優先級別等。

圖 3.透過 LabVIEW Timed Loop 架構,指定不同程式碼區段的優先級別與處理器分配。 

LabVIEW Real-Time 支援多核心處理作業,並可自動將程式碼的平行部分對應至個別的作業系統執行緒,讓您無需手動建立與管理執行緒。根據預設,這些執行緒也會在即時硬體的可用 CPU 上自動平衡。

若要進一步提升即時系統的效能與穩定性,若需要時,可透過手動方式將 Timed Loops 指派至特定處理器核心。舉例來說,您可將處理器的一組核心專門用於執行一組重要的迴圈,並將其與不同核心的次要工作作業隔離開來。

故障排除選項:使用 Real-Time Trace Viewer 進行除錯

針對進階的多核心除錯,您可使用 Real-Time Trace Viewer 檢驗 LabVIEW 或 LabWindows/CVI 即時程式的效能,而不用中斷或暫停執行程式碼。只需對即時程式碼稍作修改,即可將應用效能記錄至檔案,並傳送至主機電腦以供查看與分析。 Trace Tool Viewer 以圖形化的方式顯示多執行緒的程式碼的執行情形,同時高亮顯示執行緒交換、互斥體,與記憶體分配。您可使用 Real-Time Trace Viewer 來識別不需要的執行特性與難以發現的競爭條件,以最佳化應用效能。

C 與 C++ 的開發選項

如果貴公司的標準是 C 或 C++,則可使用 LabWindows/CVI 開發環境或其他開發環境。另請注意,LabWindows/CVI Real-Time 僅支援 Real-Time PXI 控制器,而使用 NI Linux Real-time 的目標系統 (例如 CompactRIO 控制器) 卻是開放原始碼,所以可自由選擇所需的開發工具。 若需要更多適用於 Linux-Real Time 的 C/C++ 開發工具的資訊,請參閱 NI Linux Real-Time 的 C/C++ 開發入門

選擇 NI 硬體平台與 I/O 模組

所有 NI Real-Time 硬體平台均基於相同的架構,也就是說,您以 LabVIEW Real-Time 所寫的程式,僅需稍作修改,或不需修改,即可跨不同的 NI 硬體運作。具體來說,每款硬體平台都具備現成的運算元件,包含處理器、RAM、非揮發性儲存空間,與 I/O 匯流排介面。某些硬體平台具有使用者可程式化的 FPGA,可使用 LabVIEW FPGA Module 進行程式設計。

PXI (PCI Extensions for Instrumentation)

工業級標準的 PXI 平台包含整合時序與觸發線路的機箱、嵌入式控制器,與插卡式 I/O 模組。序列、USB、Gigabit 乙太網路與 GPIB 埠,亦內建於控制器。PXI Real-Time 硬體可透過使用 LabVIEW Real-Time 或LabWindows/CVI Real-Time 進行程式設計。

如果您有現有運行 Windows 的 PXI 控制器,且想變更為即時控制器,可購買 LabVIEW Real-Time 佈署授權,以轉換控制器,或設定雙啟動系統。

您可透過線上的 PXI Advisor 組裝自己的 PXI 即時系統,包含控制器、機箱、I/O 模組與軟體。


圖 4.PXI 硬體為即時專案提供了耐用的高效能選項。

NI PXI 硬體常用於高效能即時系統,例如電子控制單元的硬體迴路測試,以及機器狀態監控應用的振動分析。使用即時 PXI 系統時,您的應用可以獲得進階時序與同步化硬體功能,從而簡化精確的 I/O 觸發與多模組同步化作業。

CompactRIO

CompactRIO 整合即時處理器、FPGA、C 系列 I/O 模組,並提供組合式與機板層級兩種規格。此外,序列、USB 與乙太網路埠也內建於控制器。

透過使用線上的 CompactRIO Advisor,即可組裝自己的 CompactRIO 系統,包含控制器、I/O 模組、軟體。

 

圖 5.整合式 CompactRIO 控制器可針對即時應用提供彈性、耐用且可攜式的選項。

您可使用 LabVIEW Real-Time 或 C/C++ 開發工具,以程式設計 CompactRIO 控制器的處理器。您也可以透過使用 LabVIEW FPGA 來開發 FPGA 程式碼。若要存取處理器的 IO 資料,可使用 NI-DAQmx API - NI 最頂尖的測量程式設計 API,或 NI Scan Engine。或者,您也可以透過 LabVIEW FPGA 直接存取 FPGA 的資料。 

 

圖 6.CompactRIO 的異質架構,具備即時處理器、可重新配置 FPGA,與 I/O。

CompactRIO 硬體常用於工業級應用,包含狀態監控、硬體迴路測試、物理系統測試,與機器控制。

CompactRIO 板件等級控制器 (例如 CompactRIO 單卡式控制器 (sbRIO)) 的架構與組合式 CompactRIO 控制器相同,但不具備堅固的封裝功能,且體積也更小。

圖 7.CompactRIO 板件等級控制器具有與封裝式 CompactRIO 控制器相同的架構,但體積較小。

CompactRIO 單卡式控制器或系統模組化模組,可提供彈性、穩定性與高效能的大量應用。