概覽 功能原型系統系列 是幫助您了解原型開發過程的一系列文章。通過閱讀,可以了解關鍵概念、原型開發的優點、產品選擇討論以及其他技術資源。 算法工程 算法工程是為應用算法設計而造的術語。它所指的是將紙上的算法草稿轉換為魯棒、經過完整測試、簡單易用實現的過程。在原型系統中實現算法提供需要的功能可能是整個產品開發生命周期中最具有挑戰性的部分,但是它也可能是最有回報的部分。通過應用現實世界的I/O,您能夠親眼看到算法實現工作。 本文說明了開發員可能會在設計算法中遇到的問題,以及使用圖形化設計來克服這些挑戰的優點。算法工程挑戰少數系統級設計師才能夠熟練掌握的編程知識。為不同平臺編程需要的編程知識通常是少數系統級設計師能精確掌握的。 基本算法實現 為基本功能實現底層算法需要時間。速度在原型開發中是至關重要的,因為缺少現有代碼而陷入從頭開發的已知算法的困境是開發人員無法接受的。 為多個平臺重復實現算法 隨著功能原型的發展,算法需要多次重復功能以便移植到不同類型的系統中。代碼通常無法在不同的運行環境中工作,這使得應用程序從原型系統到部署的擴展變得困難起來。 測試和驗證 通常只有到較晚的時候才能夠確定系統是否可以真正滿足功能需求,重頭開始的代價是昂貴的。舉例而言,處理器可能無法足夠快速地執行多個并行任務。它可能無法達到需要的循環時間。它還可能無法實時處理處理器密集的分析。 圖形化系統設計為算法工程帶來的優點 圖形化系統設計解決了功能原型系統算法工程中的許多潛在問題。圖形化系統設計是將直觀的圖形化編程與靈活的商用(COTS)硬件結合在一起解決設計挑戰的方法。您可以使用這個方法,在設計的所有階段中使用同一個環境。現在我們來深入了解一下這個方法如何解決以上提出的挑戰。 多個計算模型 圖形化系統設計的優點之一是它讓程序員能夠無需考慮實現用的計算模型(MoC)創建算法。隨著算法的復雜度不斷增加,程序員必須使用不同的計算模型擴展他們的代碼能力。下面是您可以用于圖形化系統設計的幾個計算模型: 數據流 數據流是與NI LabVIEW軟件緊密關聯的計算模型。使用數據流,需要開發員在開始執行前,輸入所有輸入的數據。數據流是直觀的代碼結構,將并行處理等應用的實現變得十分簡單。 文本數學 文本數學是簡單創建復雜功能的另一個工具。基于文本的數學是將可以用腳本描述形式編寫的復雜算法,用人類可以閱讀的形式實現的方法。文本數學的實例包括公式節點和LabVIEW MathScript實時模塊。使用LabVIEW MathScript,您可以選擇最有效的語法用于算法開發,無論您是開發算法、探索信號處理概念或是分析結果。 ![]() 圖1:使用LabVIEW MathScript實時模塊重用基于文本的代碼 C 代碼 有時候您使用的代碼原來是用C或C++創建的。在這個情況下,您不必舍棄過去的工作。您可以在LabVIEW中使用內嵌C節點或調用庫函數節點直接調用您之前的代碼。使用內嵌C節點用于現有的C代碼或編寫小型的數字或矩陣算法,使用調用庫函數節點訪問DLL或共享庫中的C代碼。 開放式軟件體系結構 在過去的幾年中,LabVIEW平臺在眾多設計學科中得到了廣泛應用,因此需要將數據與不同的設計與仿真工具整合在一起。LabVIEW使用多種整合工具、庫和文件格式實現這種交互兼容性。LabVIEW還提供了與其他軟件工具和測量資源的眾多標準集成,其中包括: * DLLs, 共享庫 * ActiveX, COM, 以及 .NET (Microsoft) * DDE, TCP/IP, UDP, 以太網、藍牙 * CAN, DeviceNet, Modbus, OPC * USB, IEEE 1394, RS232/485, GPIB * 數據庫(ADO、SQL等等) 使用這些工具,來自幾乎任何測量和控制設備的數據集成都是可能的。通過將LabVIEW與硬件通信的通用標準整合在一起,開發者可以確保未來多年的兼容性和可擴展性。 LabVIEW方法 LabVIEW中的數百個函數涵蓋了數學、信號處理、概率、控制中的許多傳統算法,是構造任何定制算法的基礎。這些函數減輕了編寫底層代碼的負擔,為工程師提供了關注解決方案而不是關注實現細節的時間。 因為使用LabVIEW將采集現實世界的數據變得十分簡單,用戶認為能夠使用實際數據對算法進行測試,從而使用重復的方法進行微調是十分有價值的。采用這種交互式的測試方法,您可以用不同函數進行實驗,檢查它們是否給出了期望的結果。舉例而言,在使用濾波器處理信號時,您可以從不同解決方案中進行選擇,采集您所需要的實際信號,然后在圖或文件中查看結果。如果結果并不適用于應用程序,您可以選擇其他濾波器。通常采集實際信號應用算法比花時間用軟件仿真更加簡單。 商業硬件 商業硬件步進提供了快速開始原型開發的簡單方法,而且使用圖形化系統設計幫助您在許多帶有集成I/O的目標上實現本地算法。使用在NI CompactRIO和PXI平臺中的實時處理器,集成帶有確定性控制的I/O,得到更多可靠性。這對于硬件在環應用是很重要的,因為需要將硬件和軟件緊密整合在一起,動態仿真控制算法設法控制的環境。 處理使用帶有FPGA的實時處理器,您可以將LabVIEW集成到您的應用中,將代碼從一個類型的商用硬件移植到另一個硬件上。舉例而言,您可以移植在臺式機上對實際世界I/O信號進行分析的代碼,無需大量重寫就可以將它用于PXI、PDA以及嵌入式處理器等平臺上。實際上,先在臺式機上設計并驗證原型,然后將它轉換到32位處理器上,進行嵌入式系統部署可以大大節省因為忽略設計限制而增加的開發時間和重復編碼。 ![]() 圖2:LabVIEW目標 用于仿真和控制設計的工具 由于LabVIEW是一個開放式平臺,您可以將您的測量數據映射到仿真結果上。您可以將用于行為建模的仿真數據與實時數據進行互換。此外,您可以使用仿真激勵驅動物理測量,提供魯棒的測試環境。 使用LabVIEW仿真驗證并估計設計準則的性能。您可以將設計導入到不同的仿真工具中,進行早期設計評估。下一步包括自動化布局或模型建立工具,對構造過程進行自動化。保存可用的系統狀態信息和輸出信號幫助您調試應用程序以及建立應用程序性能規范。 使用例如LabVIEW控制設計和仿真模塊中的控制方塊圖設計線性、非線性、離散或連續控制系統。使用這個抽象編程風格,您可以使用例如傳遞函數模塊、積分器、微分器和反饋循環等傳統控制概念進行編程。使用高級方塊圖,您可以在概念級開發解決方案,從而可以利用過去的系統經驗和知識。 ![]() 圖3:使用控制設計與仿真的PID控制 下一步 對算法進行工程設計,實現原型系統的功能是個具有挑戰性的過程。圖形化系統設計是利用直觀的圖形化軟件與商業硬件之間緊密整合優點幫助您克服與算法工程相關挑戰的方法,從而讓您可以用更低的成本更快地完成原型系統開發。 要學習從紙面設計轉換到軟件設計的技術細節,請參閱下面的相關資源。要繼續原型開發過程的后續步驟,請返回功能原型系統系列。 NI公司供稿 |