[摘 要]介绍了PCL-818HG数据采集卡的性能,阐述了如何在VB环境下利用该板卡丰富的资源进行数据采集系统软件的快速开发。
[关键词]PCL-818HG;数据采集;Visual Basic 6.0??
1 引 言
Visual Basic 6.0是面向对象的可视化编程语言,具有高效、简单易学及功能强大的特点。近几年用VB开发测控软件已日渐流行,它既可以使用DLL来实现I/O端口的输入输出功能,也可通过API函数或Mscomm控件实现串口通信,还能够充分发挥VB数据库功能强大以及生成用户界面快等优点。文中主要阐述如何使用DLL实现对I/O端口的访问和控制。PCL-818HG是通用型的数据采集卡,适用于PC及兼容机,可用于各类电信号的采集、数据处理和控制运算后的电信号输出。由于PCL-818HG配有DOS、Windows 3.1/95/NT多种操作系统下的驱动程序,并可在BASIC、Visual Basic、Borland C++、Microsoft C/C++、Visual C++、Borland Delphi等多种开发软件环境下使用,因而它已广泛应用于许多工业测控领域。
2 PCL-818HG卡
PCL-818HG卡是外界电信号与计算机之间的桥梁。它把从外界获取的各种电信号转换为统一的数字信号传递给计算机;并接收计算机传来的数字或控制信号,将模拟或数字信号传递给外设。其过程如图2―1所示。
图2―1从左到右的过程即为数据采集的过程,它是由PCL-818HG卡的A/D转换器完成的。PCL-818HG卡有16个模拟量输入通道,可构成16路单端输入或8对差分输入。最大A/D采样频率可达100 kHz。另外,PCL-818HG还具有一个用于读取微弱输入信号(x0.5,1,5,10,50,100,500或1000)的高增益可编程放大器,可对每个输入通道的增益进行编程设置。
3 Visual Basic 6.0环境下的软件设计
3.1 DLL技术
动态链接库DLL是一种基于Windows的程序模块,它是在运行时刻被装入和连接的。动态链接库中只包含供应用程序运行时装入该DLL的有关信息,并非是源代码的复制,因此使用动态链接库可以使多个应用程序之间共享代码和资源从而提高运行速率。研华公司的“Advantech DLL Driver”软件支持PCL-818HG等多种型号板卡的设备驱动,它提供了“adsapi32.dll”动态链接库,其中包含有一系列能对硬件设备进行底层I/O操作的函数。从VB调用这些DLL函数时,先在全局模块或窗体的说明部分,用Declare声明所要使用的DLL函数,然后象使用VB自己的函数(或过程)一样调用这些函数。例如:Declare Function DRV_DeviceOpen Lib“adsapi32.dll”(By Val DeviceNum As Long,DriverHandle As Long)As Long
其中“DRV_DeviceOpen”是将在VB使用的函数名,“adsapi32.dll”是提供该DLL函数的动态链接库。为方便用户,“Advantech DLL Driver”的软件开发商制作了“Driver.bas”文件,其中声明了有关DLL函数及相应的结构,只需把“Driver.bas”导入VB工程的模块中,用户就可省去声明DLL函数的麻烦。下面对几个关键的DLL函数进行简单的说明。
①DRV_DeviceOpen():该函数必须最先被调用。它加载一个设备驱动程序到内存,并确定设备的类型,完成对设备的初始化,使设备做好I/O的准备工作;同时返回一个函数值,若设备驱动成功返回非“0”的设备句柄,若设备驱动失败则返回“0”。
②DRV_DeviceClose():该函数是关闭由DRV_DeviceOpen()函数打开的设备,它的函数参数是由DRV_DeviceOpen()函数返回的设备句柄,若设备关闭成功返回非“0”值,否则返回“0”。
③DRV_DeviceGetFeatures():该函数从由DRV_DeviceOpen()函数打开的设备中获取相关的硬件信息;同时返回一个函数值,操作成功则返回非“0”值,否则返回“0”。
④DRV_GetAddress():该函数仅在VB中适用,它把变量作为函数参数,返回值是该变量的指针或地址。在VC++或Delphi中,用户能获得一个变量的指针或地址,但在VB中却没有相应标准函数来获取变量的内存地址。因此,特为VB开发环境制作了该函数。
⑤DRV_MAIVoltageIn():该函数的参数是由DRV??-DeviceOpen()函数返回的设备句柄,它每被调用一次就对通道的设置完成一次I/O操作,操作成功则返回“0”值。在实际的数据采集中,是通过调用这个函数得到与模拟量相对应的电压值。按照所要求采样频率,在VB的Timer()事件中定时调用该函数。
3.2 程序设计
为简明起见,笔者用一个实例阐述PCL-818HG数据采集卡在VB应用工程中最基本的使用。具体步骤如下:
(1)首先,参照用户手册,根据实际需要完成对PCL-818HG数据采集卡的硬件参数设置。
(2)新建一个VB工程,工程包含一个窗体和一个模块。模块内容为导入的“Driver.bas”。
(3)窗体的设计:文本框txtStartChan与txtStopChan分别用来初始化板卡的起始通道和终止通道;文本框控件组txtGainCode(16)则用于输入各通道电压范围的序号;在文本框控件组txtVoltRead(16)中显示各通道输入的电压值;时间控件tmrRead确定采样频率。按钮cmdRun与cmdQuit分别用来打开和关闭板卡设备。
(4)在窗体的说明部分定义一些模块级变量,代码如下:







(8)最后,运行程序,在txtStartChan与txtStopChan文本框中填入板卡的起始通道号和终止通道号;参照硬件用户手册电压输入范围与增益倍数对照表,在文本框控件组txtGainCode(16)填写各相应通道的输入电压范围序号,输入电压范围与输入电压范围序号是一一对应的关系,且每一输入电压范围又对应一确定的增益倍数。按下cmdRun按钮就可以从文本框控件组txtVoltRead(16)中看到各通道输入的电压值。
说明:限于篇幅上述程序设计只列出部分关键的程序代码。??
4 结束语
利用VB和PCL-818HG卡,笔者为武汉大学化学院的电化学工作站做了一个电化学实验软件。很多电化学实验耗时长、数据处理复杂,且需要准确记录化学反应时间。如果采用人工记录化学反应时间,手工数据处理,不可避免地会引入较大的误差,且费时费力。该软件在上述程序设计的基础上,采用了数字滤波、OLE、API等技术,实现了实验数据的自动保存、自动处理,坐标图的自动绘制,以及实验数据、坐标图的查阅打印功能;从而大大方便了广大师生,收到了良好的实验教学效果。可见,采用PCL-818HG数据采集卡,以Visual Basic 6.0作为软件开发平台,可以充分利用Visual Basic 6.0界面友好的优势和PCL-818HG丰富的资源,在短时间内开发出功能强大的数据采集系统软件。
[参考文献]
[1]Advantech Co.Ltd PCL-818HG Muti??funtion Data Acquition User??s manual[M]
[2]Brian Siler,Jeff Spotts.Visual Basic 6开发使用手册[M].机械工业出版社,1999.