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