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ā)友好的用戶使用界面,同時(shí)通過ActiveX控件、DLL(動(dòng)態(tài)鏈接庫)等多種方法實(shí)現(xiàn)與其他軟件的聯(lián)合開發(fā)。
Microsoft把所有以COM為基礎(chǔ)的技術(shù)統(tǒng)稱為ActiveX技術(shù)。自動(dòng)化是大多數(shù)ActiveX技術(shù)的基礎(chǔ),它可使解釋性的宏語言(如VB)能夠在不了解應(yīng)用程序?qū)崿F(xiàn)細(xì)節(jié)的情況下控制自動(dòng)化對象。Labview實(shí)現(xiàn)了ActiveX自動(dòng)化服務(wù)支持,在VB下通過ActiveX自動(dòng)化接口可將 Labview作為Visual Basic語言的一個(gè)ActiveX部件調(diào)用。
本文以Agilent公司的E5262A儀器為例,通過Labview和VB混合編程,實(shí)現(xiàn)了多種數(shù)據(jù)采集和自動(dòng)化控制系統(tǒng)。
2 程序設(shè)計(jì)
程序設(shè)計(jì)以VB作為編程界面,同時(shí)調(diào)用Labview的圖形顯示控件,而動(dòng)態(tài)鏈接庫則要使用Win的Kernel32.dll,以及Labview的 Gpib32.dll、Visa32.dll、儀器驅(qū)動(dòng)安裝時(shí)生成的E5260_32.dll等。程序流程圖如下圖所示。
首先安裝儀器自動(dòng)的驅(qū)動(dòng)庫,接口一般采用通用的GPIB標(biāo)準(zhǔn),不僅數(shù)據(jù)、命令傳輸速度快,而且一張GPIB卡能夠同時(shí)控制最多16臺儀器。儀器驅(qū)動(dòng)安裝后,會生成一個(gè)以儀器為名的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工程中,添加儀器的動(dòng)態(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自帶了時(shí)鐘控件Timer,但時(shí)間量級是毫秒,快速測量或者反復(fù)切換測量狀態(tài)時(shí)不方便,程序中采用了Win的API函數(shù),通過調(diào)用 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)函數(shù),更加方便的對程序進(jìn)行控制。
E5262數(shù)據(jù)采集和自動(dòng)測量要求:測量一般為三極管的電壓電流變化曲線和漏電流,因此要加入輸入電壓值一、電壓二作為兩者間的電壓值,如使用共發(fā)射極時(shí),可以測量不同Vce電壓值時(shí),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)日期、采集時(shí)間、通道一電壓值、通道二電壓值、采集電流值。
主要程序代碼說明:
ReDim OnePeroI((CInt((vdmax - vdmin) / vdstep)) * CInt(tspotcount.Text)) //根據(jù)測量數(shù)據(jù)要求動(dòng)態(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儀器采集自動(dòng)化控制界面
程序在Labview7.1和VB6.0軟件下,系統(tǒng)為Windows XP運(yùn)行測試通過。儀器使用的是Agilent公司的E5262A,實(shí)驗(yàn)測量的是三極管在不同偏壓下的電流值曲線,程序中可以由自定義的函數(shù)設(shè)置任意形狀的輸出電壓值。結(jié)果表明程序不能快速的自動(dòng)化測量采集數(shù)據(jù),將采集的不同對比圖形實(shí)時(shí)顯示,還能夠進(jìn)行初步的數(shù)據(jù)處理,極大的方便了實(shí)驗(yàn)的進(jìn)行。
4 結(jié)束語
本文的創(chuàng)新點(diǎn):
(1)進(jìn)行基于VB和Labview的聯(lián)合混合編程,,利用Labview的強(qiáng)大儀器驅(qū)動(dòng)和實(shí)驗(yàn)儀器圖形顯示、VB的可視化編程完成友好的用戶界面進(jìn)行混合編程,實(shí)現(xiàn)了應(yīng)用系統(tǒng)的無縫集成,豐富了軟件的測量功能,縮短了程序的開發(fā)周期。
?。?)充分的利用了AcitiveX控件和DLL(動(dòng)態(tài)鏈接庫)等多種方法,不僅能夠滿足實(shí)驗(yàn)測量要求,還增強(qiáng)了儀器的測量功能,充分的發(fā)揮了虛擬儀器編程的強(qiáng)大能力。
(3)程序中可以通過自己開發(fā)的函數(shù)進(jìn)行數(shù)據(jù)處理,在測量顯示存儲數(shù)據(jù)的同時(shí),將初步結(jié)果也計(jì)算顯示出來,這樣不僅直觀的監(jiān)控測量系統(tǒng),還能隨時(shí)根據(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ū)動(dòng)程序開發(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ū)動(dòng).微計(jì)算機(jī)信息,2006,1-1:121-123。