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