摘 要:介紹了在VB和Labview平臺下,利用Labview的強大儀器驅(qū)動和實驗儀器圖形顯示、VB的可視化編程完成友好的用戶界面進行混合編程,實現(xiàn)了應用系統(tǒng)的無縫集成,豐富了軟件的測量功能,縮短了程序的開發(fā)周期。
關鍵詞:VB;虛擬儀器 ;自動化控制;數(shù)據(jù)采集
ABSTRACT:The article introducethe characteristic of LabVIEW,the development. In addition, it analyzes three methods to automatization of the instrument with computer by using LabVIEW language and VB here.From the example of E5262A,it is a good way to integrative design of data acquisition,data processing and analyse.
KEYWORDS:VB,Virtual Instrument(VI);Automatization ;Data Acquisition
1 引言
虛擬儀器(簡稱為VI)的開發(fā)環(huán)境有很多,但NI公司的LabVIEW最為著名。LabVIEW不同于基于文本的編程語言(如Fortran和C),是一種圖形編程語言——通常稱為G編程語言,其編程過程是通過圖形符號描述程序的行為。LabVIEW使用的是科學家和工程師們所熟悉的術語,還使用了很易于識別的構造G語言的圖形符號,即使具有很少編程經(jīng)驗的人也能學會使用LabVIEW。而VB作為可視化編程工具,不僅簡單容易上手,而且功能強大,可以開發(fā)友好的用戶使用界面,同時通過ActiveX控件、DLL(動態(tài)鏈接庫)等多種方法實現(xiàn)與其他軟件的聯(lián)合開發(fā)。
Microsoft把所有以COM為基礎的技術統(tǒng)稱為ActiveX技術。自動化是大多數(shù)ActiveX技術的基礎,它可使解釋性的宏語言(如VB)能夠在不了解應用程序?qū)崿F(xiàn)細節(jié)的情況下控制自動化對象。Labview實現(xiàn)了ActiveX自動化服務支持,在VB下通過ActiveX自動化接口可將Labview作為Visual Basic語言的一個ActiveX部件調(diào)用。
本文以Agilent公司的E5262A儀器為例,通過Labview和VB混合編程,實現(xiàn)了多種數(shù)據(jù)采集和自動化控制系統(tǒng)。
2 程序設計
程序設計以VB作為編程界面,同時調(diào)用Labview的圖形顯示控件,而動態(tài)鏈接庫則要使用Win的Kernel32.dll,以及Labview的Gpib32.dll、Visa32.dll、儀器驅(qū)動安裝時生成的E5260_32.dll等。程序流程圖如下圖所示。
首先安裝儀器自動的驅(qū)動庫,接口一般采用通用的GPIB標準,不僅數(shù)據(jù)、命令傳輸速度快,而且一張GPIB卡能夠同時控制最多16臺儀器。儀器驅(qū)動安裝后,會生成一個以儀器為名的DLL文件??梢岳肔abview的MAX進行接口掃描,發(fā)現(xiàn)新增加的儀器。安裝Labview后,在系統(tǒng)目錄下有gpib32.dll文件。
其次當電腦中安裝了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等等。
程序設計中首先出現(xiàn)用戶選擇界面,選擇所需要的測量方式,進入下一界面,填寫測量參數(shù),程序進行儀器初始化,根據(jù)送入?yún)?shù)進行測試,測試結果由Labview控件顯示,用戶指定文件保存信息將數(shù)據(jù)保存到文件中。
VB自帶了時鐘控件Timer,但時間量級是毫秒,快速測量或者反復切換測量狀態(tài)時不方便,程序中采用了Win的API函數(shù),通過調(diào)用Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)函數(shù),更加方便的對程序進行控制。
E5262數(shù)據(jù)采集和自動測量要求:測量一般為三極管的電壓電流變化曲線和漏電流,因此要加入輸入電壓值一、電壓二作為兩者間的電壓值,如使用共發(fā)射極時,可以測量不同Vce電壓值時,Vbe的電流曲線。即先固定Vce的電壓值,改變Vbe值,得到伏安曲線。
[align=center]

圖1、PNP三極管示意圖[/align]
根據(jù)實驗要求設計數(shù)據(jù)采集模式為以下幾種:
模式1:固定通道一,二的電壓,即固定Vce、Vbe值,測量電流Ibe。
模式1:固定通道二的輸出電壓,即固定Vce,以三角波形方式改變通道一(即Vbe)的輸出電壓,測量電流Ibe。
模式2:固定通道一的輸出電壓,即固定Vbe,以三角波形改變通道二(即Vce)的輸出。測量電流Ibe。
[align=center]

圖2 程序流程圖[/align]
數(shù)據(jù)保存格式規(guī)范為數(shù)據(jù)序列號、實驗日期、采集時間、通道一電壓值、通道二電壓值、采集電流值。
主要程序代碼說明:
ReDim OnePeroI((CInt((vdmax - vdmin) / vdstep)) * CInt(tspotcount.Text)) //根據(jù)測量數(shù)據(jù)要求動態(tài)分配空間
For vg = vgmin To vgmax Step vgstep //進行三角波電壓輸出循環(huán)
For vd = vdmin To vdmax Step vdstep//進行三角波電壓輸出循環(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 //是否被用戶強行終止測量
test_stopmeas //儀器設置清零
Exit Sub //退出
Else
spot_meas //進行測量
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 測試實例、結果和討論
[align=center]

圖3 基于Labview和VB儀器采集自動化控制界面[/align]
程序在Labview7.1和VB6.0軟件下,系統(tǒng)為Windows XP運行測試通過。儀器使用的是Agilent公司的E5262A,實驗測量的是三極管在不同偏壓下的電流值曲線,程序中可以由自定義的函數(shù)設置任意形狀的輸出電壓值。結果表明程序不能快速的自動化測量采集數(shù)據(jù),將采集的不同對比圖形實時顯示,還能夠進行初步的數(shù)據(jù)處理,極大的方便了實驗的進行。
4 結束語
本文的創(chuàng)新點:
?。?)進行基于VB和Labview的聯(lián)合混合編程,,利用Labview的強大儀器驅(qū)動和實驗儀器圖形顯示、VB的可視化編程完成友好的用戶界面進行混合編程,實現(xiàn)了應用系統(tǒng)的無縫集成,豐富了軟件的測量功能,縮短了程序的開發(fā)周期。
?。?)充分的利用了AcitiveX控件和DLL(動態(tài)鏈接庫)等多種方法,不僅能夠滿足實驗測量要求,還增強了儀器的測量功能,充分的發(fā)揮了虛擬儀器編程的強大能力。
?。?)程序中可以通過自己開發(fā)的函數(shù)進行數(shù)據(jù)處理,在測量顯示存儲數(shù)據(jù)的同時,將初步結果也計算顯示出來,這樣不僅直觀的監(jiān)控測量系統(tǒng),還能隨時根據(jù)結果進行參數(shù)的調(diào)整。
參考文獻
[1]畢虎,律方成,李燕青,李和明.Labview中訪問數(shù)據(jù)庫的幾種不同方法.微計算機信息,2006,1-1:131-134。
[2]吳苗,許江寧,繆繡華,紀兵.基于Labview的設備驅(qū)動程序開發(fā)技術研究.微計算機信息,2006,2-1:153-155。
[3]毛建東.基于Labview的單片機數(shù)據(jù)采集系統(tǒng)的設計.微計算機信息,2006,3-2:41-42。
[4]周偉林,李清峰,楊華勇.基于Labview的AC1077數(shù)據(jù)采集卡的驅(qū)動.微計算機信息,2006,1-1:121-123。