作為圖形化的編程語(yǔ)言,NI公司的LabVIEW軟件有助于節省您的時(shí)間和編譯G語(yǔ)言的時(shí)間。 圖形化的編程方法可以讓您只需關(guān)注數據以及對數據的操作,并且抽象出了諸如內存分配和語(yǔ)法規則等大量復雜的計算機編程工作,從而進(jìn)一步提高您的工作效率。此外,LabVIEW也包括了高級的定時(shí)機制和應用程序API函數,來(lái)定義硬件和軟件之間時(shí)間約束的參數和關(guān)系。
LabVIEW最新版軟件LabVIEW 2010,其最顯著(zhù)的新功能就是針對各種時(shí)間實(shí)現的優(yōu)化。最新的版本是整個(gè)軟件平臺的綜合更新,包括直接被客戶(hù)需求推動(dòng)的新功能,新的FPGA IP模塊,增強的定時(shí)和同步功能,以及改進(jìn)的用于產(chǎn)生優(yōu)化機器碼的后端編譯器,總體可提升高達20%的應用程序運行性能。

圖1. 相比LabVIEW2009,LabVIEW 2010提升了高達20%的應用程序運行性能
本文將通過(guò)編譯器的優(yōu)化、內置的定時(shí)與同步以及用戶(hù)自身提出的新特性,三個(gè)方面,為您全面介紹LabVIEW 2010。
編譯器的優(yōu)化
LabVIEW編譯器在提升編程效率方面是一個(gè)關(guān)鍵的技術(shù)。編譯器用于處理復雜的任務(wù)如內存分配和線(xiàn)程管理等,并在編輯時(shí),當程序框圖代碼不可執行的情況下提供反饋給用戶(hù)。最終,復雜的編譯器和優(yōu)化線(xiàn)程解析您高層次設計并返回高效率的機器代碼。
在過(guò)去的數十年中, 編譯器已經(jīng)愈加地智能化和最優(yōu)化, 加入了內嵌法(inplaceness),類(lèi)型傳播法,聚叢法,虛擬寄存器,文本編譯器優(yōu)化以及其他來(lái)自于NI編譯器研發(fā)者智囊團的智能化處理方法。無(wú)論是一個(gè)新增功能,修正漏洞,還是編譯器的改進(jìn),每一次發(fā)布都引入了更新的編譯器,讓您的代碼性能更優(yōu)化。LabVIEW 2010版本關(guān)注的焦點(diǎn)之一就是VI 運行時(shí)的性能–也就是說(shuō),無(wú)需改變源代碼本身,提升您的VI運行性能。
為了更快地提高您的代碼執行效率同時(shí)無(wú)須更改您的代碼,研發(fā)者引入了2個(gè) “層”到編譯器層次關(guān)系中。LabVIEW 2009 引入了數據流的中間代碼表示(DFIR),一個(gè)高層次的架構用于轉換從您的程序框圖中產(chǎn)生的數據流驅動(dòng)的圖形化代碼。 LabVIEW 2010加入了基于底層虛擬機(LLVM)的后端 ,提供了一種新的標準編譯器的優(yōu)化(圖2) 。 DFIR和LLVM協(xié)同工作提供高層次和低層次的中間代碼表示,以便于編譯器使用中間代碼細分和優(yōu)化LabVIEW程序。 在LabVIEW 2010中,采用了中間代碼表示意味著(zhù)編譯器優(yōu)化線(xiàn)程并未影響實(shí)際的程序框圖,但由于產(chǎn)生了優(yōu)化的機器代碼,這就為您的應用程序提升了高達20%的運行時(shí)執行效率。

圖2. 全新的 LabVIEW 編譯流程
LabVIEW 2010通過(guò)幫助您管理源代碼和開(kāi)發(fā)更多模塊化的軟件架構,提供了助力于大型應用程序開(kāi)發(fā)這一新功能。 通過(guò)從LabVIEW編寫(xiě)出的源代碼中分離出已經(jīng)編譯過(guò)的對象,LabVIEW 2010可以明顯提高開(kāi)發(fā)者的工作流程。 當這一新的VI屬性選項設置打開(kāi)時(shí),一個(gè)VI在重新編譯后并不顯示為已經(jīng)修改,除非開(kāi)發(fā)人員修改了圖形化的源程序;這就避免了重新保存和重新提交文件到源代碼控制的需要。
新的打包項目庫提供了更加模塊化的軟件設計和開(kāi)發(fā)過(guò)程,更短的生成時(shí)間和更簡(jiǎn)便的部署方法。 LabVIEW打包項目庫文件是一個(gè)新的LabVIEW文件類(lèi)型,由一個(gè)項目庫和所有涉及的子程序組合而成一個(gè)單獨的文件。 導出的VI包含在這個(gè)文件中,就如同其它的VI保存為不帶程序框圖的形式,但是它們的層次已經(jīng)完全被隱藏。它們遵循一個(gè)生成規范,現有的lvlib后綴文件被選擇用于確定哪些VI正在被生成到打包的項目庫中以及哪些VI是公共的或導出的。
內置的定時(shí)和同步
大部分計算機應用程序必須要滿(mǎn)足和它們交互的計算機物理系統所需求的時(shí)間約束參數。如果您所使用的系統環(huán)境并沒(méi)有一個(gè)明確的時(shí)間概念,您將會(huì )不大容易寫(xiě)出一個(gè)可以定時(shí)的程序。
幸運的是,LabVIEW擁有很多獨特的處理時(shí)間的機制。舉例來(lái)說(shuō),定時(shí)循環(huán)結構是在您的應用程序之中用于指定時(shí)間約束參數的一個(gè)定義很好的API函數節點(diǎn)。另外,您還可以使用定時(shí)循環(huán)來(lái)配置優(yōu)先級,處理器分配,和定時(shí)源。您可以在一個(gè)單一的系統中或者在一個(gè)分布式實(shí)時(shí)系統的部分中實(shí)現多個(gè)定時(shí)循環(huán)之間的同步。
在LabVIEW 2010 中,引入了一種新的基于時(shí)間的同步技術(shù),從而更進(jìn)一步地擴展了LabVIEW應用程序的功能,使得LabVIEW可以將不同的LabVIEW實(shí)時(shí)目標平臺通過(guò)標準的以太網(wǎng)實(shí)現同步功能。LabVIEW 2010已經(jīng)合并了該軟件IEEE 1588協(xié)議的執行情況作為定時(shí)循環(huán)的另一個(gè)定時(shí)源,從而提供了分辨率為1ms的絕對時(shí)間。另外,為了控制定時(shí)的基源和功能,LabVIEW 2010 引入了一種新的內部定時(shí)機制,幫助您在多個(gè)定時(shí)分辨率中進(jìn)行衡量。借助于定時(shí)循環(huán),您所開(kāi)發(fā)的代碼從臺式機處理器的ms級系統到帶有FPGA背板處理器的ns級系統進(jìn)行移植時(shí)可以保留相同的應用程序代碼段。
社區驅動(dòng)的新功能
LabVIEW社區對于您使用LabVIEW所能到達的成功程度具有深遠的影響。 會(huì )員可以在NI論壇對他人提供技術(shù)支持,也可以上傳范例代碼到NI 開(kāi)發(fā)者社區,以及/或者用戶(hù)組。 另外,LabVIEW 社區對于LabVIEW2010產(chǎn)生了決策性的影響。
LabVIEW Idea Exchange–在2009年8月,NI 設立了LabVIEW Idea Exchange,這是一個(gè)產(chǎn)品反饋的論壇,通過(guò)連接LabVIEW社區和LabVIEW開(kāi)發(fā)團隊, 有助于確定每一個(gè)版本的新功能。 LabVIEW 2010包含了14個(gè)這樣的功能,直接來(lái)源于社區會(huì )員的反饋。
優(yōu)秀的技術(shù)支持 – 社區同樣也提供NI工程師日常處理的技術(shù)支持問(wèn)題的反饋。鑒于LabVIEW常常是協(xié)同硬件使用的,最常見(jiàn)的技術(shù)支持問(wèn)題就是分布式硬件的配置。您可以在分布式硬件上安裝新的基于網(wǎng)頁(yè)的監測和配置實(shí)用工具,然后可以直接通過(guò)瀏覽器利用類(lèi)似配置路由器的方式來(lái)配置您的硬件。您也可以監測性能和內存信息,文件瀏覽器,以及直接與實(shí)時(shí)操作系統(RTOS)的交互。

圖3.基于網(wǎng)絡(luò )的監測和配置實(shí)用工具簡(jiǎn)化了遠程硬件的管理
LabVIEW開(kāi)發(fā)的第三方附加軟件 –為了加強第三方開(kāi)發(fā)的附加軟件的打包和發(fā)布功能,LabVIEW 2010 引入了很多的改進(jìn)方法。 對于代碼開(kāi)發(fā),可以直接使用LabVIEW Scripting, 即一個(gè)可以自動(dòng)創(chuàng )建LabVIEW代碼的可編程應用程序接口函數(API)。另外,授權和激活幫助開(kāi)發(fā)者創(chuàng )建評估版的軟件,并確保使用LabVIEW開(kāi)發(fā)的附件工具包和應用程序在授權后正常使用。 對于打包生成一個(gè)附加軟件,來(lái)自于JKI軟件團隊的VI打包管理器軟件提供了一個(gè)流水線(xiàn)的打包過(guò)程,并緊密地集成了授權/激活的功能。
結語(yǔ)
LabVIEW 作為工程師與科學(xué)家們的編程語(yǔ)言,在20多年來(lái)不斷地實(shí)現自我突破與進(jìn)步,融合了最前沿的商業(yè)可用技術(shù),全新的2010版本進(jìn)一步讓您實(shí)現與時(shí)俱進(jìn),實(shí)現各種工程應用創(chuàng )新!