功能原型製作系列:演算法工程

綜覽

功能原型製作系列是一系列文章,可帶領您逐步了解原型製作流程。繼續閱讀,以了解原型製作的主要概念、優勢、產品選擇討論,與其他技術資源。

內容

演算法工程

演算法工程是專為應用演算法設計的術語。演算法是指將在紙上的演算法轉化為穩定、經過充分測試且易於使用的實作方式。整個產品開發週期中,最具挑戰性的部分可能是:可為原型提供所需功能的實作演算法,但這部分也可能最具價值。只要應用實際的 I/O,即可親身體驗演算法功能。 

此篇文章將說明開發人員在設計演算法時可能會遇到的錯誤,以及使用圖形化系統設計來克服這些挑戰的優勢。

演算法工程挑戰 

有多種原因會導致難以在功能原型中實作演算法:

程式設計限制。

針對 I/O 功能的控制系統或處理器,如 FPGA 等,開發人員往往會受到程式設計限制。針對不同平台的程式設計,通常需要具備程式設計知識,而僅極少數的系統等級設計師能掌握。

基本演算法實作。

就基本功能而言,實作低階演算法需要時間製作原型時,速度極為重要,但如果沒有程式碼,設計人員一般來說也無法承受這樣的後果。

適用於多個平台演算法。

隨著功能原型的演變,許多時候必須重新評估演算法,才能將其移植至不同類型的系統。程式碼在不同的執行時間環境間幾乎無法運作,而且很難將應用程式從原型製作延伸至佈署。

測試檢驗。

要等到開發後期,才能確定系統能否滿足功能需求,而且重新開始的成本高昂。舉例來說,處理器可能無法以夠快的速度執行所需數量的平行作業。可能無法達到充分的循環時間。亦未必能即時處理密集型處理器分析。

圖形系統設計用於演算法工程優勢

圖形化系統設計可在功能原型的工程演算法中解決並減少眾多潛在缺陷。圖形化系統設計整合直覺式的圖形化程式設計與靈活的商業現成 (COTS) 硬體,可解決設計挑戰。透過此方式,即可針對所有設計階段使用單一環境。即刻深入了解此方式如何具體解決上述挑戰。

多種計算模型

圖形化系統設計的其一優點,就是無論採用何種運算模型 (MoC),程式設計師都能建立演算法。由於演算法的程式碼複雜度不斷提高,因此程式設計師必須使用不同的 MoC 來擴充程式碼功能。以下只是圖形化系統設計的幾種運算模型:

資料流

資料流是 NI LabVIEW 軟體最常相關的 MoC。就資料流而言,作業需要開發人員在執行之前,將資料插入所有輸入項中。資料流是一種直覺式的編碼結構,可輕鬆建置平行流程等應用。

文字數學

文字式數學是另一款可輕鬆建立複雜函式的工具。文字架構的數學是針對複雜演算法,供人類讀取的實作,並且更容易以指令碼說明形式撰寫。Formula 節點和 MATLAB Script 節點即為文字式數學運算式。透過 LabVIEW,即可選擇最有效的語法進行演算法開發,無論是正在開發演算法、探索訊號處理概念,或分析結果皆可。

C 程式碼

有時所使用的演算法,最初是用 C 或 C++ 建立的。如此一來,即可不必再捨棄先前的工作。可使用內聯 C 節點或呼叫函式庫函式節點,直接呼叫先前在 LabVIEW 中的程式碼。內聯 C 節點可用於現有的 C 程式碼,或實作小型數值或陣列演算法,而呼叫函式庫函式節點,則可存取 DLL 或共享函式庫中的 C 程式碼。

深入了解如何透過 LabVIEW 使用 Python、MathWorks® MATLAB ® 軟體、C/C++

開放式軟體架構

數年以來,LabVIEW 平台已於多種設計領域中廣泛採用,因此必須透過不同的設計與模擬工具來整合資料。LabVIEW 透過多種整合工具、程式庫與檔案格式,即可達到此互相容性。LabVIEW 亦可提供多種標準,整合其他軟體工具與量測資源,包含:

  • DLL、共享函式庫
  • ActiveX、COM 與 .NET (Microsoft)
  • DDE、TCP/IP、UDP、乙太網路、藍牙
  • CAN、DeviceNet、Modbus、OPC
  • USB、IEEE 1394、RS232/485、GPIB
  • 資料庫 (ADO、SQL 等)

透過這些工具,即可整合幾乎所有量測與控制裝置的資料。透過整合 LabVIEW 與一般用途的硬體通訊標準,開發人員即可確保未來許多年的相容性與可擴充性。

LabVIEW 的方法

LabVIEW 已具備數百筆函式,涵蓋多項數學、訊號處理,機率,與控制的傳統演算法;並可做為任何客製化演算法的必要基礎區塊。這些函式可減輕低階程式碼的撰寫負擔,讓工程師有時間專心於解決方案而不是實作。

LabVIEW 可輕鬆擷取實際資料,此種以實際資料測試演算法的反覆式微調方式,對使用者來說極具價值。透過互動式測試方式,即可使用不同的功能,確保系統可提供所需的結果。舉例來說,當使用濾波器處理訊號時,可從多種解決方案中進行選擇,擷取所需的實際訊號,並以圖表或檔案形式查看結果。若結果不適用於相關應用,則可選擇其他濾波器。通常,先擷取實際訊號以套用至演算法,然後再花時間使用軟體進行模擬,會更輕鬆。

 

COTS 硬體

現成的商業硬體,不僅可迅速開始製作原型,而且可透過圖形化系統設計,運用整合式 I/O,於大量不同的目標系統上實作原生演算法。使用 NI CompactRIOPXI 平台所配備的即時處理器,即可整合 I/O 與精確控制,以提高穩定性。此特性為硬體迴路 (HIL) 應用所必備。HIL 必須緊密整合硬體與軟體,以動態模擬「控制演算法所要控制的環境」。

除了 Real-Time 處理器搭配 FPGA 之外,亦可將 LabVIEW 整合至應用中,以於 COTS 硬體之間傳輸程式碼。以「透過桌上型系統的實體 I/O 而分析訊號」的程式碼為例,使用者可將此程式碼傳輸至 PXI 模組或嵌入式處理器,且不需大幅重新撰寫。事實上,若能先在桌上型系統中設計並檢驗原型,再轉換至嵌入式系統的 32 位元處理器,將有利於佈署作業;並可大幅縮短開發時間,並減少因遺失設計限制 (Design constraint) 所造成的再作業 (Rework)。

模擬控制設計工具

LabVIEW 為開放式平台,可將量測資料與模擬結果對應。甚至可以交換模擬資料與實體資料,以進行行為建模。此外,亦可透過模擬激源來驅動物理測試,以提供穩定的測試環境。

透過 LabVIEW 進行模擬,以檢驗並預測效能是否符合設計標準。可將設計匯入獨立的模擬工具,以進行早期設計評估。下一步涉及自動化配置或模型形成與工具,以自動化建置流程。在適用的情況下,儲存系統狀態資訊與輸出訊號,有助於除錯應用,並針對應用效能建立規格。

使用 LabVIEW Control Design and Simulation Module 中找到的控制程式圖,可設計線性、非線性、離散,或連續控制系統。透過此抽象的程式設計風格,即可透過傳統的控制概念進行程式設計,例如傳輸函式區塊、積分器、微分器,與反饋迴路。透過此高階程式方塊圖,可從概念層級開發解決方案,並總結自己先前的系統經驗與知識。

圖 1.含 Control Design 與模擬的 PID 控制

 後續步驟

設計可實作原型功能的演算法並不容易。圖形化系統設計的方式,是透過直覺式圖形化軟體與 COTS 硬體之間的緊密整合,以克服演算法工程相關的挑戰,並且以較低的成本快速建立並運作原型。

若要深入了解從紙上設計轉換為軟體設計的技術相關資訊,請參閱下方的相關資源。

後續步驟