王 超,李 可,杜奔新
(北京航空航天大學(xué) 航空與科學(xué)工程學(xué)院,北京 100191)
實(shí)驗(yàn)室是高校校內(nèi)的實(shí)踐基地,是培養(yǎng)學(xué)生創(chuàng)新能力和實(shí)踐能力的重要場(chǎng)所,對(duì)培養(yǎng)具有實(shí)踐和創(chuàng)新能力的高素質(zhì)人才有著重要的作用[1]。在測(cè)控領(lǐng)域,隨著低成本、高性能計(jì)算機(jī)的普及運(yùn)用,采用虛擬儀器技術(shù)的數(shù)字化測(cè)量平臺(tái)逐漸成為測(cè)量?jī)x器的主流趨勢(shì)。虛擬儀器技術(shù)利用計(jì)算機(jī)強(qiáng)大的計(jì)算能力和靈活的軟件技術(shù),在有限的硬件基礎(chǔ)上,實(shí)現(xiàn)符合要求的、全新的測(cè)量?jī)x器體系。與傳統(tǒng)的測(cè)量?jī)x器相比,它能夠明顯地提高實(shí)驗(yàn)的測(cè)量精度和實(shí)驗(yàn)的效率[2]。
虛擬儀器主要由硬件和軟件兩部分組成:其中硬件分為數(shù)據(jù)采集部分和數(shù)據(jù)分析顯示部分;軟件部分是虛擬儀器的核心,通過(guò)編制軟件,可以實(shí)現(xiàn)眾多的儀器功能。虛擬儀器的開(kāi)發(fā)軟件通常分為通用開(kāi)發(fā)軟件和專用開(kāi)發(fā)軟件。通用開(kāi)發(fā)軟件就是常見(jiàn)的高級(jí)編程語(yǔ)言,比如 Visual C++、VB、Delphi、Java等;專用開(kāi)發(fā)軟件是指專業(yè)化的圖形化編程軟件,例如Lab-VIEW、LabWindow/CVI或者 VEE等[3-4]。
在開(kāi)發(fā)虛擬儀器的方面,專業(yè)開(kāi)發(fā)軟件(例如LabVIEW)比通用開(kāi)發(fā)軟件(例如Visual C++)具有明顯的優(yōu)勢(shì)。
Visual C++是一種通用且強(qiáng)大的編輯語(yǔ)言,開(kāi)發(fā)者具有較高的自由度,可以自定義具有獨(dú)特個(gè)性的虛擬儀器,這是其他開(kāi)發(fā)軟件不能比擬的。LabVIEW是美國(guó)NI公司推出的業(yè)界領(lǐng)先的工業(yè)標(biāo)準(zhǔn)圖形化編程工具,主要用于開(kāi)發(fā)測(cè)試、測(cè)量與控制系統(tǒng)。它是一個(gè)開(kāi)放性的開(kāi)發(fā)環(huán)境,使用圖標(biāo)代替文本代碼創(chuàng)建應(yīng)用程序,擁有大量與其他應(yīng)用程序通信的VI庫(kù)。在開(kāi)發(fā)虛擬儀器方面,LabVIEW比Visual C++有以下幾方面優(yōu)勢(shì)[5-7]。
(1)Visual C++是一種傳統(tǒng)的文本代碼編程語(yǔ)言環(huán)境,而LabVIEW是一種圖形化編程語(yǔ)言環(huán)境。圖形化編程環(huán)境具有形象生動(dòng)、便于理解的特點(diǎn)。通過(guò)LabVIEW的圖形化編程語(yǔ)言,在開(kāi)發(fā)過(guò)程中可以很快編寫(xiě)出所需要的程序界面。LabVIEW提供了豐富的圖形控件,程序內(nèi)容由一個(gè)個(gè)表示函數(shù)的圖標(biāo)和圖標(biāo)之間的數(shù)據(jù)流的連線構(gòu)成。而使用Visual C++編程就需要記憶復(fù)雜的語(yǔ)法和函數(shù)原型。因此,Lab-VIEW的圖形化開(kāi)發(fā)環(huán)境更符合通常的思維習(xí)慣,從而使編寫(xiě)程序的過(guò)程也變得簡(jiǎn)單、快捷。
(2)用Visual C++編寫(xiě)的程序,是根據(jù)代碼的語(yǔ)句和指令的先后順序來(lái)決定程序的執(zhí)行順序。而LabVIEW采用數(shù)據(jù)流的編程方式,程序框圖中結(jié)點(diǎn)之間的數(shù)據(jù)流向決定程序的執(zhí)行順序。
(3)在開(kāi)發(fā)系統(tǒng)時(shí),經(jīng)常會(huì)用到多線程技術(shù)。在處理多個(gè)并行的線程的時(shí)候,用Visual C++需要花費(fèi)一定的時(shí)間和精力編寫(xiě)眾多線程代碼,用來(lái)提高程序的運(yùn)行效率;而在LabVIEW編程環(huán)境中實(shí)現(xiàn)了自動(dòng)多線程,不用再為定義線程去浪費(fèi)時(shí)間和精力。這樣便使處理器的性能得到充分的利用,尤其在多處理器的環(huán)境下,優(yōu)勢(shì)更加明顯。
(4)為利用多種編程語(yǔ)言的優(yōu)勢(shì),在進(jìn)行混合編程時(shí),Visual C++ 能夠和大多數(shù)的編程語(yǔ)言進(jìn)行混合編程,通用性比較好,但是在調(diào)用其他語(yǔ)言時(shí),編寫(xiě)的代碼有時(shí)過(guò)于復(fù)雜。而LabVIEW也提供了大量的接口與外部語(yǔ)言進(jìn)行混合編程。通過(guò)DLL、CIN結(jié)點(diǎn)、ActiveX、.NET或Matlab腳本節(jié)點(diǎn)等技術(shù),可以輕松實(shí)現(xiàn)LabVIEW與其他語(yǔ)言的混合編程,在編寫(xiě)的過(guò)程中不用編寫(xiě)復(fù)雜的代碼,有效地提高了編程效率。
(5)由于Visual C++是通用性的軟件,與底層硬件進(jìn)行通信需要編寫(xiě)相應(yīng)的代碼,雖然其通用性比較好,但過(guò)程比較復(fù)雜、繁復(fù),對(duì)于硬件設(shè)備的適應(yīng)性不強(qiáng)。而LabVIEW為開(kāi)發(fā)者提供了大量的驅(qū)動(dòng)和專用工具,幾乎能夠和絕大多數(shù)硬件接口連接。這又省去了開(kāi)發(fā)者許多的寶貴的時(shí)間和精力。
以上幾點(diǎn)可以看出:LabVIEW在開(kāi)發(fā)速度上具有絕對(duì)的優(yōu)勢(shì)。通常使用LabVIEW開(kāi)發(fā)應(yīng)用系統(tǒng)的速度比使用其他編程語(yǔ)言快4~10倍。這得益于圖形化的開(kāi)發(fā)環(huán)境和LabVIEW本身集成的大量驅(qū)動(dòng)程序和函數(shù)庫(kù)。因此,LabVIEW對(duì)于開(kāi)發(fā)虛擬儀器更加具有針對(duì)性[8-9]。
實(shí)驗(yàn)室引進(jìn)先進(jìn)的實(shí)驗(yàn)技術(shù),可以減少人力和物力的浪費(fèi),極大地提高實(shí)驗(yàn)效率,同時(shí)也可以使學(xué)生緊跟技術(shù)前沿和科學(xué)技術(shù)的發(fā)展[5-6]。在實(shí)驗(yàn)室測(cè)控領(lǐng)域,基于虛擬儀器的數(shù)字化測(cè)量平臺(tái)已得到廣泛的應(yīng)用。目前實(shí)驗(yàn)室比較常用的有Visual C++和Lab-VIEW等開(kāi)發(fā)平臺(tái)。本文以本校實(shí)驗(yàn)室的環(huán)境模擬測(cè)控系統(tǒng)為例予以說(shuō)明。
該實(shí)驗(yàn)室的環(huán)境模擬測(cè)控系統(tǒng),利用計(jì)算機(jī)的接口連接外部硬件。通過(guò)接口,將要輸出的控制信號(hào)傳遞給硬件,控制硬件的工作模式,同時(shí)將硬件工作產(chǎn)生的相關(guān)數(shù)據(jù)傳遞給計(jì)算機(jī),通過(guò)軟件處理,實(shí)現(xiàn)儀器面板上各個(gè)模擬環(huán)境變量的測(cè)量、顯示等功能。整個(gè)系統(tǒng)由Visual C++編寫(xiě)而成,人機(jī)界面友好、操作簡(jiǎn)單,可以滿足實(shí)驗(yàn)室大部分實(shí)驗(yàn)的數(shù)據(jù)測(cè)控工作(見(jiàn)圖1)。
圖1 環(huán)境模擬測(cè)控系統(tǒng)硬件圖
由于整個(gè)系統(tǒng)由VISUAL C++編寫(xiě)而成,需要開(kāi)發(fā)者對(duì)VISUAL C++編程語(yǔ)言非常熟悉,而且整個(gè)編程周期比較長(zhǎng)。然而,現(xiàn)在流行的測(cè)控軟件LabVIEW對(duì)編寫(xiě)者的要求卻不是很高,比較容易掌握,因此可以大大縮短系統(tǒng)的編寫(xiě)周期,提高系統(tǒng)編寫(xiě)的效率。
本文利用LabVIEW開(kāi)發(fā)了與上述實(shí)驗(yàn)室的環(huán)境模擬測(cè)控系統(tǒng)相似的環(huán)境模擬測(cè)控系統(tǒng),從中體會(huì)到LabVIEW確實(shí)可以極大地提高開(kāi)發(fā)效率,主要體現(xiàn)在以下幾方面。
LabVIEW的編程環(huán)境十分友好,它具有以下幾方面的優(yōu)點(diǎn)。
(1)編輯和調(diào)試方便。LabVIEW有開(kāi)發(fā)、測(cè)試和調(diào)試等多種工具,其特點(diǎn)是:模塊執(zhí)行時(shí)為高亮度顯示,可在單步模式下進(jìn)行調(diào)試、使用線式探針和斷點(diǎn)跟蹤調(diào)試,可以跟蹤和監(jiān)視塊間的執(zhí)行流向,如果程序有錯(cuò),就會(huì)給出錯(cuò)誤列表信息。
(2)豐富的幫助體系。相關(guān)的“幫助”詳細(xì)介紹了每個(gè)圖標(biāo)及其相關(guān)的內(nèi)容,在線即時(shí)幫助窗口可迅速提供一般問(wèn)題的解答、在線手冊(cè)、錯(cuò)誤代碼、用戶支持信息等。這些在開(kāi)發(fā)系統(tǒng)的過(guò)程中,可以幫助用戶更加快捷地完成系統(tǒng)的開(kāi)發(fā)。
(3)LabVIEW提供了大量詳細(xì)的實(shí)例幫助用戶進(jìn)行開(kāi)發(fā)。開(kāi)發(fā)系統(tǒng)時(shí)可以直接利用這些實(shí)例,也可以按照自己的需要進(jìn)行修改,免去了從頭開(kāi)始建立程序的工作,從而也提高了開(kāi)發(fā)效率。這些都是Visual C++所不及的。
LabVIEW的前面板集成了大量用于搭建界面的控件,無(wú)需用戶重新籌劃,只需用戶根據(jù)需要制定人機(jī)界面。使用LabVlEW的圖像控制工具箱生成的圖形或引入其他繪圖工具繪制的圖形,都可以用來(lái)表示儀表符號(hào)和系統(tǒng)框圖。用戶可以很方便地搭建出自己所需要的軟件界面。其控件豐富程度遠(yuǎn)遠(yuǎn)超過(guò)了Visual C++的控件種類。與Visual C++編程語(yǔ)言相比,可以極大地提高界面設(shè)計(jì)的效率。
所設(shè)計(jì)的環(huán)境模擬測(cè)控系統(tǒng)分為3層:頂層、邏輯層和驅(qū)動(dòng)層。頂層負(fù)責(zé)人機(jī)界面和系統(tǒng)狀態(tài);邏輯層負(fù)責(zé)配置、數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)等;驅(qū)動(dòng)層負(fù)責(zé)與硬件通信[5]。本系統(tǒng)主要是實(shí)現(xiàn)數(shù)據(jù)的采集和控制信號(hào)的輸出。整個(gè)系統(tǒng)的組成除計(jì)算機(jī)和儀器之外,還必須建立儀器與計(jì)算機(jī)之間的通路以及上層應(yīng)用程序。通路屬于驅(qū)動(dòng)層設(shè)計(jì)內(nèi)容,上層應(yīng)用程序?qū)儆谶壿媽雍晚攲釉O(shè)計(jì)工作。通路包括總線技術(shù)和針對(duì)不同儀器的驅(qū)動(dòng)程序,上層應(yīng)用程序用于發(fā)送控制命令,儀器控制面板的顯示以及數(shù)據(jù)采集、處理、分析、顯示和存儲(chǔ)等。
LabVIEW支持?jǐn)?shù)千種儀器的驅(qū)動(dòng);支持多種總線的連接方式。在本系統(tǒng)的底層程序設(shè)計(jì)中,使用Lab-VIEW提供的VISA庫(kù)函數(shù)[10],不需要自己去編寫(xiě)與儀器通信的程序。VISA支持大多數(shù)儀器總線連接。本系統(tǒng)主要是通過(guò)串行總線實(shí)現(xiàn)儀器的控制,只需要通過(guò)VISA庫(kù)函數(shù)進(jìn)行配置參數(shù)就可以實(shí)現(xiàn)系統(tǒng)的I/O功能。而使用Visual C++進(jìn)行底層程序的設(shè)計(jì),需要對(duì)儀器和總線有相當(dāng)?shù)牧私?,才能夠編?xiě)底層程序,實(shí)現(xiàn)系統(tǒng)的I/O功能。如果使用Visual C++開(kāi)發(fā)系統(tǒng),還需要編寫(xiě)紛繁復(fù)雜的代碼,與LabVIEW相比,既增加了程序編寫(xiě)的難度,也增加了時(shí)間成本。
對(duì)于上層應(yīng)用程序的設(shè)計(jì),LabVIEW把復(fù)雜、繁瑣、費(fèi)時(shí)的代碼語(yǔ)言編程簡(jiǎn)化為簡(jiǎn)單易懂的圖形編程。LabVIEW是建立在目標(biāo)定向和數(shù)據(jù)流程序設(shè)計(jì)基礎(chǔ)上的,被連接的圖標(biāo)之間的數(shù)據(jù)流控制著程序執(zhí)行的順序。所以用LabVIEW開(kāi)發(fā)系統(tǒng),不需花時(shí)間去定義眾多的變量;在編寫(xiě)所需的VI時(shí),也不必考慮傳統(tǒng)編程語(yǔ)言的許多語(yǔ)法細(xì)節(jié),只需要在函數(shù)菜單中選擇需要的函數(shù),按照程序要求進(jìn)行連線,即可實(shí)現(xiàn)數(shù)據(jù)流的流動(dòng)。這樣設(shè)計(jì)出的程序簡(jiǎn)潔、直觀、易懂,便于提高開(kāi)發(fā)效率以及后續(xù)的維護(hù)。
相比之下,Visual C++需要嚴(yán)格按照文本代碼的編寫(xiě)規(guī)范進(jìn)行編寫(xiě)程序,尤其要注重代碼的順序指令。在Visual C++開(kāi)發(fā)的系統(tǒng)中,為了方便定義各個(gè)傳感器采集數(shù)據(jù)的變量,優(yōu)化數(shù)據(jù)結(jié)構(gòu),在Access數(shù)據(jù)庫(kù)里面定義了所有的傳感器變量[11],需要繁復(fù)地定義要集數(shù)據(jù)采集硬件的信息,過(guò)程比較繁瑣。
利用LabVIEW開(kāi)發(fā)時(shí),只需要通過(guò)VISA庫(kù)函數(shù)就可以輕松地讀出實(shí)時(shí)測(cè)得的實(shí)驗(yàn)數(shù)據(jù)值,通過(guò)簡(jiǎn)單的處理,即可實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)顯示、處理和存儲(chǔ)。特別是LabVIEW還以圖形方式提供了大量的波形顯示和信號(hào)分析處理功能,使得數(shù)據(jù)的顯示和處理更加方便,也很容易發(fā)現(xiàn)錯(cuò)誤并立即改正。與Visual C++相比,利用LabVIEW作為開(kāi)發(fā)工具,可以極大地節(jié)省時(shí)間。
在環(huán)境模擬系統(tǒng)開(kāi)發(fā)過(guò)程中[12-14],邏輯層的各項(xiàng)功能通常由數(shù)個(gè)較小的單元實(shí)現(xiàn)。在用LabVIEW開(kāi)發(fā)系統(tǒng)時(shí),各個(gè)單元都相互獨(dú)立,由功能齊全的模塊構(gòu)成。這些模塊可以獨(dú)立運(yùn)行、編輯和測(cè)試。本系統(tǒng)將文件配置、硬件配置、數(shù)據(jù)處理以及數(shù)據(jù)存儲(chǔ)查詢等功能均進(jìn)行了模塊化處理。這樣就可以提高代碼模塊的可重復(fù)利用性,使得整個(gè)系統(tǒng)的結(jié)構(gòu)層次比較清楚、有條理,可以方便地調(diào)試、測(cè)試模塊的性能,輕松地集成到更高層次的系統(tǒng)內(nèi)。與Visual C++相比,這樣的編程形式,可以極大地減少開(kāi)發(fā)所用的時(shí)間,同時(shí)使整個(gè)系統(tǒng)結(jié)構(gòu)更加的清晰,便于制定更加簡(jiǎn)潔高效的解決方案,也利于以后的系統(tǒng)維護(hù)。
在實(shí)驗(yàn)室測(cè)控領(lǐng)域,無(wú)論是在資金方面還是在技術(shù)方面,虛擬儀器都具有明顯的優(yōu)勢(shì),利用專業(yè)虛擬儀器軟件進(jìn)行測(cè)控領(lǐng)域開(kāi)發(fā)有很好的前景。LabVIEW具有強(qiáng)大的用戶界面,使用圖形編程方法設(shè)計(jì)圖形程序,使用數(shù)據(jù)流編程,具有可獨(dú)立運(yùn)行的應(yīng)用程序,可提高用戶的效率。與利用Visual C++開(kāi)發(fā)的虛擬儀器相比,利用LabVIEW軟件開(kāi)發(fā)虛擬儀器,不僅可以大大簡(jiǎn)化虛擬儀器的研制過(guò)程,明顯縮短其開(kāi)發(fā)周期,而且使多種儀器性能的改進(jìn)和維護(hù)也變得更加容易。
(
)
[1]劉湘梅.高校實(shí)驗(yàn)室建設(shè)的思考[J].科技資訊,2012(31):193,195.
[2]劉民岷,楊平,吳浩文.基于虛擬儀器的實(shí)驗(yàn)室建設(shè)[J].實(shí)驗(yàn)技術(shù)與管理,2002,19(1):93-95,101.
[3]尚振東,王群燕,韓建海.基于LabVIEW的虛擬儀器在測(cè)試技術(shù)實(shí)驗(yàn)中的應(yīng)用[J].中國(guó)現(xiàn)代教育裝備,2007(1):119-121.
[4]王英紅,秦化渤,閆芳,等.LabVIEW虛擬儀器開(kāi)發(fā)平臺(tái)及其應(yīng)用分析[J].遼寧工學(xué)院學(xué)報(bào),2004,24(5):16-18.
[5]宋波,陳一民.關(guān)于虛擬儀器開(kāi)發(fā)工具的比較與選取[J].國(guó)外電子測(cè)量技術(shù),2006,25(8):1-5.
[6]時(shí)秋蘭,趙偉,侯國(guó)屏.基于LabVIEW環(huán)境開(kāi)發(fā)虛擬儀器的幾點(diǎn)體會(huì)[J].電測(cè)與儀表,2001,38(12):29-33.
[7]張千鋒.淺談LabVIEW在語(yǔ)言程序?qū)崿F(xiàn)中的優(yōu)勢(shì)[J].機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新,2010,23(3):119-121.
[8]陳錫輝,張銀鴻.LabVIEW8.20程序設(shè)計(jì)從入門(mén)到精通[M].北京:清華大學(xué)出版社.2007.
[9]楊樂(lè)平,李海濤,肖凱,等.虛擬儀器技術(shù)概論[M].北京:電子工業(yè)出版社,2003.
[10]蔣薇,賴青貴,張曉波.基于LabVIEW的儀器通信技術(shù)研究[C]//中國(guó)核學(xué)會(huì)2011年學(xué)術(shù)年會(huì)論文集:中國(guó)核科學(xué)技術(shù)進(jìn)展報(bào)告第2卷.北京:原子能出版社,2011:44-47.
[11]唐亞鵬,侯媛彬.基于LabVIEW的實(shí)踐教學(xué)平臺(tái)與Access數(shù)據(jù)庫(kù)的開(kāi)發(fā)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(5):219-222.
[12]宋建軍,何常青.基于研華PCI-1713U和LabVIEW的測(cè)控系統(tǒng)設(shè)計(jì)[J].機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新,2013,26(1):130-132.
[13]盧佳,徐熙平.LabVIEW環(huán)境下自動(dòng)溫度檢測(cè)系統(tǒng)的研究[J].電子測(cè)量技術(shù),2011,34(9):80-83.
[14]顧文武,何慶中,周鐵,等.基于LabVIEW與智能儀器數(shù)據(jù)采集系統(tǒng)[J].儀表技術(shù)與傳感器,2012(11):53-54,58.
實(shí)驗(yàn)技術(shù)與管理2013年12期