邵林林
摘 要:在虛擬儀器領(lǐng)域,廣泛應(yīng)用的是NI公司的LabVIEW語(yǔ)言。LabVIEW語(yǔ)言是一種圖形語(yǔ)言開(kāi)發(fā)環(huán)境,也稱作G語(yǔ)言,它具有高性能的圖形化編程方法以及靈活性,其高性能配置模塊及功能特別設(shè)計(jì)用于自動(dòng)控制和測(cè)試測(cè)量領(lǐng)域,能為數(shù)據(jù)采集、儀器控制、測(cè)量分析與數(shù)據(jù)顯示等各種應(yīng)用提供必要的開(kāi)發(fā)工具。本文重點(diǎn)介紹了LabVIEW的應(yīng)用領(lǐng)域和新手常見(jiàn)錯(cuò)誤。本文可作為L(zhǎng)abVIEW的初級(jí)用戶和從事測(cè)試與計(jì)量、電子開(kāi)發(fā)等行業(yè)工程技術(shù)人員的參考。
關(guān)鍵詞:LabVIEW;虛擬儀器;G語(yǔ)言
中圖分類號(hào): TH14 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1673-1069(2016)17-149-2
0 引言
LabVIEW(Laboratory Virtual Instrument Engineering Workbench,實(shí)驗(yàn)室虛擬儀器工程平臺(tái)) 是美國(guó)NI(National Instruments,美國(guó)國(guó)家儀器)公司推出的一種基于G語(yǔ)言(Graphics Language,圖形化編程語(yǔ)言)的虛擬儀器軟件開(kāi)發(fā)工具。用LabVIEW設(shè)計(jì)的虛擬儀器可以脫離LabVIEW開(kāi)發(fā)環(huán)境,最終用戶看見(jiàn)的是和實(shí)際的硬件儀器相似的操作面板。利用LabVIEW,設(shè)計(jì)者可以像搭積木一樣,輕松組建一個(gè)測(cè)量系統(tǒng)和構(gòu)造自己的儀器面板,而無(wú)需進(jìn)行任何繁瑣的計(jì)算機(jī)代碼編寫(xiě)。
1 概述
作為一個(gè)通用的編程系統(tǒng),LabVIEW有一個(gè)龐大函數(shù)庫(kù),可以完成任何編程任務(wù),這同C語(yǔ)言和BASIC語(yǔ)言一樣。這個(gè)龐大的函數(shù)庫(kù)包括了數(shù)據(jù)采集、GPIB、串口儀器控制、數(shù)據(jù)顯示、分析與存儲(chǔ)等。LabVIEW可以設(shè)置斷點(diǎn)、可以單步執(zhí)行,也可以激活程序的執(zhí)行過(guò)程,以動(dòng)畫(huà)方式查看數(shù)據(jù)在程序中流動(dòng),這使得調(diào)試程序十分便捷。
LabVIEW軟件的特點(diǎn)和優(yōu)點(diǎn)可以歸納為:
①圖形化的編程方式,設(shè)計(jì)者無(wú)需寫(xiě)任何格式的文本代碼,是真正的工程師語(yǔ)言;②提供了豐富的數(shù)據(jù)采集、分析、存儲(chǔ)庫(kù)函數(shù);③既提供了傳統(tǒng)的程序調(diào)試手段,如設(shè)置斷點(diǎn)、單步運(yùn)行,同時(shí)提供獨(dú)到的高亮執(zhí)行工具,使程序動(dòng)畫(huà)式運(yùn)行,利于設(shè)計(jì)者觀察程序運(yùn)行的細(xì)節(jié),使程序的調(diào)試和開(kāi)發(fā)更為便捷;④32bit的編譯器編譯成32bit的編譯程序,保證用戶數(shù)據(jù)采集、測(cè)試和測(cè)量方案的高速運(yùn)行;⑤囊括了DAQ、GPIB、PXI、VXI、RS-232/485在內(nèi)的各種儀器通信總線標(biāo)準(zhǔn)的所有功能函數(shù),使得不懂總線標(biāo)準(zhǔn)的開(kāi)發(fā)者也能夠驅(qū)動(dòng)不同總線標(biāo)準(zhǔn)接口設(shè)備與儀器;⑥提供大量與外部代碼或軟件進(jìn)行連接的機(jī)制,諸如DLLs(動(dòng)態(tài)鏈接庫(kù))、DDE(共享庫(kù))、ActiveX等;⑦強(qiáng)大的Internet功能,支持常用網(wǎng)絡(luò)協(xié)議,方便網(wǎng)絡(luò)、遠(yuǎn)程測(cè)控儀器的開(kāi)發(fā)。
2 應(yīng)用領(lǐng)域
LABVIEW無(wú)處不在,工作站,PC,MAC,Linux,Sun,示波器,工業(yè)計(jì)算機(jī),PC板卡,網(wǎng)絡(luò)IO,無(wú)線,掌上電腦,F(xiàn)PAG,傳感器等都有涉及。
測(cè)試測(cè)量與控制領(lǐng)域:
LabVIEW被譽(yù)為“科學(xué)家與工程師”語(yǔ)言,它為不熟悉文本式語(yǔ)言編程的設(shè)計(jì)者在測(cè)控領(lǐng)域建立計(jì)算機(jī)儀器系統(tǒng)——虛擬儀器,提供了一個(gè)極為便捷、輕松的圖形化設(shè)計(jì)環(huán)境。幾乎所有的測(cè)試、測(cè)量和控制應(yīng)用都可以分成三部分:采集、分析、表達(dá)。LABVIEW就是用于采集、分析、表達(dá)實(shí)際物理量的應(yīng)用最早、功能強(qiáng)大的工程軟件。
LABVIEW能從下列設(shè)備采集數(shù)據(jù):GPIB、串口、VXI接口儀器,數(shù)據(jù)采集卡(DAQ),PXI儀器,圖像采集卡(IMAQ),運(yùn)動(dòng)控制,PXI實(shí)時(shí)系列,PLC(通過(guò)OPC Server),PDA。
LABVIEW包含以下工具來(lái)分析數(shù)據(jù):用于差分方程、曲線擬合、微積分、線性代數(shù)、統(tǒng)計(jì)處理的超過(guò)400個(gè)分析功能模塊,包括軟件濾波和譜分析在內(nèi)的新增的12個(gè)快速VIs,用于濾波、加窗、變換、峰值測(cè)量、諧波分析、譜分析的信號(hào)處理VIs。
LABVIEW包括以下工具來(lái)表達(dá)數(shù)據(jù):在PC上使用圖形、圖表、表格、儀表容器、3D控件、圖形控件等,通過(guò)網(wǎng)絡(luò)使用互聯(lián)網(wǎng)發(fā)布工具、Datasocket、TCP/IP、VI Server、Remote Panels、Email,企業(yè)鏈接工具SQL、FTP、Telnet、HTML。
仿真領(lǐng)域:
LabVIEW不但能夠完成一般的數(shù)學(xué)運(yùn)算與邏輯運(yùn)算和輸入輸出功能,它還有專門(mén)的用于數(shù)據(jù)采集和儀器控制的庫(kù)函數(shù)和開(kāi)發(fā)工具,尤其還帶有專業(yè)的數(shù)學(xué)分析程序包,基本上可以滿足復(fù)雜的工程計(jì)算和分析需求。因此,LabVIEW在模擬和仿真領(lǐng)域也得到了廣泛應(yīng)用。
其它領(lǐng)域:
LabVIEW編程耗時(shí)只有文本語(yǔ)言的20%左右,因此在快速開(kāi)發(fā)領(lǐng)域,應(yīng)該優(yōu)先使用LabVIEW語(yǔ)言。
LabVIEW語(yǔ)言博采眾家之長(zhǎng),具有良好的平臺(tái)一致性,其代碼無(wú)需修改就可以在三大臺(tái)式機(jī)操作系統(tǒng)(Windows、Mac OS 及Linux)上運(yùn)行。除此之外,LabVIEW支持第三方軟件和內(nèi)嵌通信協(xié)議之多,使得在跨平臺(tái)領(lǐng)域,LabVIEW有重要的一席之地。
3 開(kāi)發(fā)系統(tǒng)
LabVIEW基本版包含圖形化用戶界面開(kāi)發(fā)、數(shù)據(jù)采集、儀器控制、報(bào)告生成和文件I/O。
LabVIEW完整版包含700多個(gè)數(shù)學(xué)/分析函數(shù)、外部代碼集成 (.dll) 、互聯(lián)網(wǎng)連接和高級(jí)用戶界面開(kāi)發(fā)。
LabVIEW專業(yè)版包含應(yīng)用發(fā)布 (creat.exe) 、開(kāi)發(fā)管理、源代碼控制和網(wǎng)絡(luò)通信。
4 版本歷史
回顧LabVIEW的發(fā)展歷史可以間接的體會(huì)到LabVIEW的發(fā)展速度有多快,最初的LabVIEW 1.0 發(fā)布于1986年,而2014年8月發(fā)布的已經(jīng)是LabVIEW 2014版本了。從LabVIEW的軟件版本來(lái)看,有LabVIEW 5系列、LabVIEW 6系列、LabVIEW 7系列和LabVIEW 8系列。
5 LabVIEW新手常見(jiàn)錯(cuò)誤
犯錯(cuò)誤的用戶是因?yàn)樗麄儧](méi)有真正理解LabVIEW框圖數(shù)據(jù)流背后的原理,另外一些用戶則是不知道哪些特性可提高LabVIEW編程質(zhì)量。
錯(cuò)誤1:過(guò)度使用平鋪式順序結(jié)構(gòu)
許多新手并不完全了解“數(shù)據(jù)流”執(zhí)行背后的概念,其中一個(gè)現(xiàn)象是他們往往在程序框圖中過(guò)度使用平鋪式順序結(jié)構(gòu)。這些新手經(jīng)常依賴平鋪式順序結(jié)構(gòu)來(lái)實(shí)現(xiàn)程序框圖的代碼串行執(zhí)行,而不是使用數(shù)據(jù)流和節(jié)點(diǎn)之間的連線。
錯(cuò)誤2:錯(cuò)誤使用局部變量
局部變量是共享內(nèi)存中的一個(gè)區(qū)域,用于在計(jì)算機(jī)程序不同部分之間傳遞數(shù)據(jù)。局域變量具有非常強(qiáng)大的功能,通常用于文本編程語(yǔ)言,但如果出現(xiàn)競(jìng)爭(zhēng)條件,就會(huì)產(chǎn)生問(wèn)題。
對(duì)于文本編程語(yǔ)言來(lái)說(shuō),通過(guò)變量傳遞數(shù)據(jù)是必需的,但LabVIEW則提供了一種數(shù)據(jù)流方法,可將數(shù)據(jù)從程序的一個(gè)部分移動(dòng)到另一個(gè)部分。LabVIEW固有的并行性機(jī)制決定著用戶不能過(guò)度使用變量。如果過(guò)度使用變量,則會(huì)出現(xiàn)某個(gè)讀/寫(xiě)操作贏了“競(jìng)爭(zhēng)”,而其他操作則輸了“競(jìng)爭(zhēng)”,丟失數(shù)據(jù)的操作會(huì)被忽視,因此在LabVIEW中過(guò)度使用變量可能會(huì)最終導(dǎo)致數(shù)據(jù)丟失。
錯(cuò)誤3:忽略代碼模塊化
通常情況下,新LabVIEW用戶創(chuàng)建的是“即寫(xiě)即忘”應(yīng)用程序去完成簡(jiǎn)單的任務(wù),而沒(méi)有考慮到以后是否會(huì)用到這些代碼。隨著編程工作越來(lái)越多,他們會(huì)發(fā)現(xiàn)自己在一遍遍地重寫(xiě)同一段代碼。其實(shí)在編程同時(shí)創(chuàng)建一個(gè)可復(fù)用于其他應(yīng)用的模塊化子VI,就可以節(jié)省大量的開(kāi)發(fā)時(shí)間。
錯(cuò)誤4:創(chuàng)建龐大繁瑣的程序框圖
許多新LabVIEW用戶都會(huì)把程序框圖編寫(xiě)得非常繁瑣龐大。我們難免需要編寫(xiě)較大的程序框圖,但龐大的程序框圖從也表明該程序缺乏編程架構(gòu)。如果沒(méi)有一個(gè)基本架構(gòu),長(zhǎng)期維護(hù)該程序是非常困難的,如果以后要添加新功能也會(huì)非常困難。
錯(cuò)誤5:不重視文檔記錄
優(yōu)秀的代碼文檔可以有效地幫助他人理解自己寫(xiě)的程序,這一點(diǎn)從微軟公司的代碼文檔就能看出來(lái)。遺憾的是,許多新手在開(kāi)發(fā)周期末期功能開(kāi)發(fā)結(jié)束之后才開(kāi)始進(jìn)行文檔撰寫(xiě)。這使得用于對(duì)代碼進(jìn)行文檔記錄的時(shí)間變得非常少。正確的做法應(yīng)該是在開(kāi)發(fā)過(guò)程中就需抽出時(shí)間來(lái)開(kāi)始進(jìn)行文檔記錄。文檔對(duì)于編程人員自身也非常有用,尤其是當(dāng)他們過(guò)段時(shí)間回來(lái)看代碼卻不記得當(dāng)初他們?yōu)槭裁催x擇某些代碼時(shí)。
總的來(lái)說(shuō),LabVIEW作為NI設(shè)計(jì)平臺(tái)的核心,其開(kāi)發(fā)環(huán)境集成了工程師和科學(xué)家快速構(gòu)建各種應(yīng)用所需的所有工具,可以幫助工程師和科學(xué)家解決問(wèn)題、提高生產(chǎn)力和不斷創(chuàng)新,是開(kāi)發(fā)測(cè)量系統(tǒng)和控制系統(tǒng)的理想選擇。
參 考 文 獻(xiàn)
[1] 王超.LabVIEW2015虛擬儀器程序設(shè)計(jì)[M].2016.