1 引言
虛擬儀器(簡稱為VI)的開發(fā)環(huán)境有很多,,但NI公司的LabVIEW最為著名。LabVIEW不同于基于文本的編程語言(如Fortran和C),,是一種圖形編程語言——通常稱為G編程語言,,其編程過程是通過圖形符號描述程序的行為。LabVIEW使用的是科學(xué)家和工程師們所熟悉的術(shù)語,,還使用了很易于識別的構(gòu)造G語言的圖形符號,,即使具有很少編程經(jīng)驗(yàn)的人也能學(xué)會使用LabVIEW。而VB作為可視化編程工具,,不僅簡單容易上手,,而且功能強(qiáng)大,可以開發(fā)友好的用戶使用界面,,同時通過ActiveX控件,、DLL(動態(tài)鏈接庫)等多種方法實(shí)現(xiàn)與其他軟件的聯(lián)合開發(fā)。
Microsoft把所有以COM為基礎(chǔ)的技術(shù)統(tǒng)稱為ActiveX技術(shù),。自動化是大多數(shù)ActiveX技術(shù)的基礎(chǔ),,它可使解釋性的宏語言(如VB)能夠在不了解應(yīng)用程序?qū)崿F(xiàn)細(xì)節(jié)的情況下控制自動化對象。Labview實(shí)現(xiàn)了ActiveX自動化服務(wù)支持,,在VB下通過ActiveX自動化接口可將 Labview作為Visual Basic語言的一個ActiveX部件調(diào)用,。
本文以Agilent公司的E5262A儀器為例,通過Labview和VB混合編程,,實(shí)現(xiàn)了多種數(shù)據(jù)采集和自動化控制系統(tǒng),。
2 程序設(shè)計(jì)
程序設(shè)計(jì)以VB作為編程界面,同時調(diào)用Labview的圖形顯示控件,,而動態(tài)鏈接庫則要使用Win的Kernel32.dll,,以及Labview的 Gpib32.dll、Visa32.dll,、儀器驅(qū)動安裝時生成的E5260_32.dll等,。程序流程圖如下圖所示。
首先安裝儀器自動的驅(qū)動庫,,接口一般采用通用的GPIB標(biāo)準(zhǔn),,不僅數(shù)據(jù)、命令傳輸速度快,而且一張GPIB卡能夠同時控制最多16臺儀器,。儀器驅(qū)動安裝后,,會生成一個以儀器為名的DLL文件??梢岳肔abview的MAX進(jìn)行接口掃描,,發(fā)現(xiàn)新增加的儀器。安裝Labview后,,在系統(tǒng)目錄下有 gpib32.dll文件,。
其次當(dāng)電腦中安裝了Labview后,在VB的工程引用中選取所需要的庫文件,,其中包括了Agilent的VISA庫文件;在控件引用中,,選中 National Instrument公司的CW(波形顯示)等控件;Microsoft的通用對話控件。這樣就可以直接使用NI公司Labview的控件了,。在VB工程中,,添加儀器的動態(tài)鏈接庫(DLL)聲明,包括將要使用的常量字符,、GPIB,、VISA接口庫函數(shù)、儀器(E5262A)庫函數(shù),、以及系統(tǒng)的Kernel32庫函數(shù)等等,。如:Declare Function viOpenDefaultRM Lib "VISA32.DLL" Alias "#141" (sesn As Long) As Long 等等。
程序設(shè)計(jì)中首先出現(xiàn)用戶選擇界面,,選擇所需要的測量方式,,進(jìn)入下一界面,填寫測量參數(shù),,程序進(jìn)行儀器初始化,,根據(jù)送入?yún)?shù)進(jìn)行測試,測試結(jié)果由Labview控件顯示,,用戶指定文件保存信息將數(shù)據(jù)保存到文件中,。
VB自帶了時鐘控件Timer,但時間量級是毫秒,,快速測量或者反復(fù)切換測量狀態(tài)時不方便,,程序中采用了Win的API函數(shù),通過調(diào)用 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)函數(shù),,更加方便的對程序進(jìn)行控制,。
E5262數(shù)據(jù)采集和自動測量要求:測量一般為三極管的電壓電流變化曲線和漏電流,因此要加入輸入電壓值一,、電壓二作為兩者間的電壓值,,如使用共發(fā)射極時,,可以測量不同Vce電壓值時,Vbe的電流曲線,。即先固定Vce的電壓值,,改變Vbe值,得到伏安曲線,。
圖1,、PNP三極管示意圖
根據(jù)實(shí)驗(yàn)要求設(shè)計(jì)數(shù)據(jù)采集模式為以下幾種:
模式1:固定通道一,二的電壓,,即固定Vce,、Vbe值,測量電流Ibe,。
模式1:固定通道二的輸出電壓,即固定Vce,,以三角波形方式改變通道一(即Vbe)的輸出電壓,,測量電流Ibe。
模式2:固定通道一的輸出電壓,,即固定Vbe,,以三角波形改變通道二(即Vce)的輸出。測量電流Ibe,。
圖2 程序流程圖
數(shù)據(jù)保存格式規(guī)范為數(shù)據(jù)序列號,、實(shí)驗(yàn)日期、采集時間,、通道一電壓值,、通道二電壓值、采集電流值,。
主要程序代碼說明:
ReDim OnePeroI((CInt((vdmax - vdmin) / vdstep)) * CInt(tspotcount.Text)) //根據(jù)測量數(shù)據(jù)要求動態(tài)分配空間
For vg = vgmin To vgmax Step vgstep //進(jìn)行三角波電壓輸出循環(huán)
For vd = vdmin To vdmax Step vdstep//進(jìn)行三角波電壓輸出循環(huán)
If Option1.value = True Then //判斷使用通道測量類型
If Combo1.ListIndex = 0 Then//判斷輸入類型,,電流還是電壓
ret = age5260_force(vi, pins(0), age5260_VF_MODE, 2, vd, idcomp, 0)
End If
End If
If RunorStop = True Then //是否被用戶強(qiáng)行終止測量
test_stopmeas //儀器設(shè)置清零
Exit Sub //退出
Else
spot_meas //進(jìn)行測量
OnePeroI(CurrentIndex) = meas //保存數(shù)據(jù)到數(shù)組
Sleep Sleeptime //延遲,控制采用速率
End If
CWGraph1.PlotY OnePeroI //Labview控件顯示圖形
Next vd//通道循環(huán)
CWGraph1.ClearData //圖形更新
Next vg//通道循環(huán)
3 測試實(shí)例,、結(jié)果和討論
圖3 基于Labview和VB儀器采集自動化控制界面
程序在Labview7.1和VB6.0軟件下,,系統(tǒng)為Windows XP運(yùn)行測試通過。儀器使用的是Agilent公司的E5262A,,實(shí)驗(yàn)測量的是三極管在不同偏壓下的電流值曲線,,程序中可以由自定義的函數(shù)設(shè)置任意形狀的輸出電壓值。結(jié)果表明程序不能快速的自動化測量采集數(shù)據(jù),,將采集的不同對比圖形實(shí)時顯示,,還能夠進(jìn)行初步的數(shù)據(jù)處理,極大的方便了實(shí)驗(yàn)的進(jìn)行,。
4 結(jié)束語
本文的創(chuàng)新點(diǎn):
?。?)進(jìn)行基于VB和Labview的聯(lián)合混合編程,,,利用Labview的強(qiáng)大儀器驅(qū)動和實(shí)驗(yàn)儀器圖形顯示,、VB的可視化編程完成友好的用戶界面進(jìn)行混合編程,,實(shí)現(xiàn)了應(yīng)用系統(tǒng)的無縫集成,豐富了軟件的測量功能,,縮短了程序的開發(fā)周期,。
(2)充分的利用了AcitiveX控件和DLL(動態(tài)鏈接庫)等多種方法,,不僅能夠滿足實(shí)驗(yàn)測量要求,,還增強(qiáng)了儀器的測量功能,充分的發(fā)揮了虛擬儀器編程的強(qiáng)大能力,。
?。?)程序中可以通過自己開發(fā)的函數(shù)進(jìn)行數(shù)據(jù)處理,在測量顯示存儲數(shù)據(jù)的同時,,將初步結(jié)果也計(jì)算顯示出來,,這樣不僅直觀的監(jiān)控測量系統(tǒng),還能隨時根據(jù)結(jié)果進(jìn)行參數(shù)的調(diào)整,。
參考文獻(xiàn)
[1]畢虎,,律方成,李燕青,,李和明.Labview中訪問數(shù)據(jù)庫的幾種不同方法.微計(jì)算機(jī)信息,,2006,1-1:131-134,。
[2]吳苗,,許江寧,繆繡華,,紀(jì)兵.基于Labview的設(shè)備驅(qū)動程序開發(fā)技術(shù)研究.微計(jì)算機(jī)信息,,2006,2-1:153-155,。
[3]毛建東.基于Labview的單片機(jī)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì).微計(jì)算機(jī)信息,,2006,3-2:41-42,。
[4]周偉林,,李清峰,楊華勇.基于Labview的AC1077數(shù)據(jù)采集卡的驅(qū)動.微計(jì)算機(jī)信息,,2006,,1-1:121-123。