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