kaiyun官方注册
您所在的位置: 首页> 其他> 设计应用> 基于VB和LabVIEW的自动化控制和编程设计
基于VB和LabVIEW的自动化控制和编程设计
摘要:介绍了在VB和Labview平台下,利用Labview的强大仪器驱动和实验仪器图形显示、VB的可视化编程完成友好的用户界面进行混合编程,实现了应用系统的无缝集成,丰富了软件的测量功能,缩短了程序的开发周期。
关键词: 自动化软件 VB LabView
Abstract:
Key words :

1 引言

  虚拟仪器(简称为VI)的开发环境有很多,但NI公司的LabVIEW最为著名。LabVIEW不同于基于文本的编程语言(如Fortran和C),是一种图形编程语言——通常称为G编程语言,其编程过程是通过图形符号描述程序的行为。LabVIEW使用的是科学家和工程师们所熟悉的术语,还使用了很易于识别的构造G语言的图形符号,即使具有很少编程经验的人也能学会使用LabVIEW。而VB作为可视化编程工具,不仅简单容易上手,而且功能强大,可以开发友好的用户使用界面,同时通过ActiveX控件、DLL(动态链接库)等多种方法实现与其他软件的联合开发。

  Microsoft把所有以COM为基础的技术统称为ActiveX技术。自动化是大多数ActiveX技术的基础,它可使解释性的宏语言(如VB)能够在不了解应用程序实现细节的情况下控制自动化对象。Labview实现了ActiveX自动化服务支持,在VB下通过ActiveX自动化接口可将 Labview作为Visual Basic语言的一个ActiveX部件调用。

  本文以Agilent公司的E5262A仪器为例,通过Labview和VB混合编程,实现了多种数据采集和自动化控制系统。

2 程序设计

  程序设计以VB作为编程界面,同时调用Labview的图形显示控件,而动态链接库则要使用Win的Kernel32.dll,以及Labview的 Gpib32.dll、Visa32.dll、仪器驱动安装时生成的E5260_32.dll等。程序流程图如下图所示。

  首先安装仪器自动的驱动库,接口一般采用通用的GPIB标准,不仅数据、命令传输速度快,而且一张GPIB卡能够同时控制最多16台仪器。仪器驱动安装后,会生成一个以仪器为名的DLL文件。可以利用Labview的MAX进行接口扫描,发现新增加的仪器。安装Labview后,在系统目录下有 gpib32.dll文件。

  其次当电脑中安装了Labview后,在VB的工程引用中选取所需要的库文件,其中包括了Agilent的VISA库文件;在控件引用中,选中 National Instrument公司的CW(波形显示)等控件;Microsoft的通用对话控件。这样就可以直接使用NI公司Labview的控件了。在VB工程中,添加仪器的动态链接库(DLL)声明,包括将要使用的常量字符、GPIB、VISA接口库函数、仪器(E5262A)库函数、以及系统的Kernel32库函数等等。如:Declare Function viOpenDefaultRM Lib "VISA32.DLL" Alias "#141" (sesn As Long) As Long 等等。

  程序设计中首先出现用户选择界面,选择所需要的测量方式,进入下一界面,填写测量参数,程序进行仪器初始化,根据送入参数进行测试,测试结果由Labview控件显示,用户指定文件保存信息将数据保存到文件中。

  VB自带了时钟控件Timer,但时间量级是毫秒,快速测量或者反复切换测量状态时不方便,程序中采用了Win的API函数,通过调用 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)函数,更加方便的对程序进行控制。

  E5262数据采集和自动测量要求:测量一般为三极管的电压电流变化曲线和漏电流,因此要加入输入电压值一、电压二作为两者间的电压值,如使用共发射极时,可以测量不同Vce电压值时,Vbe的电流曲线。即先固定Vce的电压值,改变Vbe值,得到伏安曲线。


图1、PNP三极管示意图

  根据实验要求设计数据采集模式为以下几种:

  模式1:固定通道一,二的电压,即固定Vce、Vbe值,测量电流Ibe。

  模式1:固定通道二的输出电压,即固定Vce,以三角波形方式改变通道一(即Vbe)的输出电压,测量电流Ibe。

  模式2:固定通道一的输出电压,即固定Vbe,以三角波形改变通道二(即Vce)的输出。测量电流Ibe。


图2 程序流程图

  数据保存格式规范为数据序列号、实验日期、采集时间、通道一电压值、通道二电压值、采集电流值。

  主要程序代码说明:

  ReDim OnePeroI((CInt((vdmax - vdmin) / vdstep)) * CInt(tspotcount.Text)) //根据测量数据要求动态分配空间

  For vg = vgmin To vgmax Step vgstep //进行三角波电压输出循环

  For vd = vdmin To vdmax Step vdstep//进行三角波电压输出循环

  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 //保存数据到数组

  Sleep Sleeptime //延迟,控制采用速率

  End If

  CWGraph1.PlotY OnePeroI //Labview控件显示图形

  Next vd//通道循环

  CWGraph1.ClearData //图形更新

  Next vg//通道循环

3 测试实例、结果和讨论


图3 基于Labview和VB仪器采集自动化控制界面

  程序在Labview7.1和VB6.0软件下,系统为Windows XP运行测试通过。仪器使用的是Agilent公司的E5262A,实验测量的是三极管在不同偏压下的电流值曲线,程序中可以由自定义的函数设置任意形状的输出电压值。结果表明程序不能快速的自动化测量采集数据,将采集的不同对比图形实时显示,还能够进行初步的数据处理,极大的方便了实验的进行。

4 结束语

  本文的创新点:

  (1)进行基于VB和Labview的联合混合编程,,利用Labview的强大仪器驱动和实验仪器图形显示、VB的可视化编程完成友好的用户界面进行混合编程,实现了应用系统的无缝集成,丰富了软件的测量功能,缩短了程序的开发周期。

  (2)充分的利用了AcitiveX控件和DLL(动态链接库)等多种方法,不仅能够满足实验测量要求,还增强了仪器的测量功能,充分的发挥了虚拟仪器编程的强大能力。

  (3)程序中可以通过自己开发的函数进行数据处理,在测量显示存储数据的同时,将初步结果也计算显示出来,这样不仅直观的监控测量系统,还能随时根据结果进行参数的调整。

参考文献

  [1]毕虎,律方成,李燕青,李和明.Labview中访问数据库的几种不同方法.微计算机信息,2006,1-1:131-134。

  [2]吴苗,许江宁,缪绣华,纪兵.基于Labview的设备驱动程序开发技术研究.微计算机信息,2006,2-1:153-155。

  [3]毛建东.基于Labview的单片机数据采集系统的设计.微计算机信息,2006,3-2:41-42。

  [4]周伟林,李清峰,杨华勇.基于Labview的AC1077数据采集卡的驱动.微计算机信息,2006,1-1:121-123。

此内容为AET网站原创,未经授权禁止转载。
Baidu
map