2024年6月5日发(作者:)
《机电技术》2008年第4期 计算机技术应用
PCL8 1 8H数据采集卡应用及数据采集程序设计
王育桥叶金虎
(罗定职业技术学院机电工程系,广东罗定527200)
摘要:PCL818H数掂采集卡具有数据采集、信号处理和输出的功能,通过调用数据采集卡驱动程序提供的函数,
实现了对I/0口的访问和控制,用vC++编制数据采集程序,在Windows环境下调用驱动程序,实现了数据的高速采集
与保存。
关键词:PCL818H数据采集卡A/D转换触发方式ADO数据库
中图分类号:TP312文献标识码:A文章编号:1672-4801(2008)04-04—03
引言
(6)本卡具有1个12位数模转换输出,1个
PCL818H数据采集卡是一种高速、高性价比、
8254定时/计数通道供用户使用。此外,还有1
多功能可编程数据采集卡,在数据采集领域应用
个l位数字通道,1个16位数字输出通道,信号
广泛。为了实现对数据的高速采集与保存,本文
全部TTL/DTL兼容。
在前人研究与应刚的基础上,以Vi sual C++作为
1.2 PCL818H数据采集卡寄存器和触发方式
编程工具,用它提供的多种访问数据库的工具和
编写PCL818H的程序的关键是使用板卡上的
队 队 队 队
方法,并调用数据采集卡驱动程序提供的函数,
16个寄存器。PCL818H需要16个连续的PC机I/O
们 H
对PCL8 18H数据采集卡进行程序设计,完成对信
空间地址,每个口地址与采集板内的寄存器相对
号的处理和对数据的采集与保存。
应。每个寄存器的地址是通过指定到板卡基地址
1 PCL818H数据采集卡
1.1 PCL818H数据采集卡介绍
的偏移量。例如,BASE+O是这个板卡的基地址,
PCL818H数据采集卡为ISA结构,能在IBM
并且BASE+7表示基地址+7个字节。
PC/XT/AT及其兼容机上使用,它不仅具有数据采
如果板卡的基地址是400h,则BASE+7寄存器
集的功能,还具有信号控制和输出的功能。能把
的地址就是407h,结果如表1所示。
模拟电信号转化为数字信号传递给计算机,也可
表i I/O端口地址
直接读取数字信号并接受计算机传来的数据或控
I/O地址 作用
制信号,将模拟或数字信号传递给外设。从放大
A/D低4位和通道软件触发器
电路输出一个电压范围在0~5V之间的信号,把
A/D高8位和A/D扫描范围
它接到PCL818H模拟输入通道0,采集卡对输入信
MUX扫描通道
号进行A/D转换后进入工控机,就可以实现对信
D/I(D/O)的低字节(DO ̄7)
号的采集 。
D/I(D/O)的高字节(D8~15)
与模数转换相关的主要性能有:
PCL818H模拟输入的16个端口,可以构成l6
(1)有16个单模模数转换输入通道和8个双
个单端输入或者8对差分输入。根据需要,利用
模的输入通道可供选择,转换形式为l2位逐步逼
跳线可设置输入通道的工作方式。通过软件控制,
近式,最高频率可大IOOKHz。
可以对一个或多个通道进行操作。输入信号经放
(2)增益±0.625,±1.25 ±2.5,±5,
大电路后,由一个逐次逼近式转换器转换为12位
±lOv,可由程序控制。
数字信号。PCL818H提供了3种触发方式:软件触
(3)各通道的增益控制代码单独存放于卡内
发、时钟步进触发和外部信号触发。软件触发的
RAM中。
触发器是由软件控制的,当在软件寄存器中写入
(4)开放转换可以由软件控制,卡内提供的
数值后,A/D转换器就开始工作,这种方式适用于
定时脉冲控制或外部触发源控制。
低速A/D转换。时钟步进触发适用于转换速度要
(5)模数转换结果书可以用查询方式,中断
求很高的系统;PCL818H提供的8254定时/计数器
方式或DMA方式提供给计算机。
用来为A/D转换提供一个固定触发源;8254的计
4
m
计算机技术应用 《机电技术》2008年第4期
数器1和计数器2级联在一起提供了一个周期精
确的触发脉冲;当需要一个固定且精确的采样频
数 制。
打开设备
函数返回的值ErrCde如果为SUCCESS的话表
示成功,不为SUCCESS的话就返回错误信息。其
率时,可以用时钟步进触发,它比另外两种方式
更灵活。把外部触发信号接在CN3的35脚,可以
实现外部触发。当不需要周期采样时,可以使用
中SUcCESS是预编译量。
这种方式。外部信号的上升沿A/D转换开始。可
ErrCde=DRV
—
Device Open(DeviceList[0].
以根据实际需要,选择合适的触发方式。一般情
dwDeviceNum,(LONGfar*)&(DriverHand1e))
况下,模拟输入通道采用2种连接方式如图1所 配置输入通道范围
示。前一种为单模输入,后一种是双模输入方式,
lpAIContig.DasChan=intChannel//设置通道
分为高压输入和低压输入。PCL818H采集卡的输
ipAtCo,alS.DasGain=O//增益为O
入,输出信号全采用20-pin的集中式连接插件,
ErrCde=DRV AIConf i g(Dr i verHand l e,(LPT_
可用同样的扁平电缆连接,使用十分方便。
AlConfig)&ptAIConfig))//配置模拟输入通道值
读取电压值
刊AID
AiVol In.chan=lpAIContlg.DasChan//
}嫩嚣
电压输入通道
AiVo!In.gain=lpAIConfig.DasGain//
电压输入增益
AiVolIn.Trig Mode=AiCtr Mode//
触发模式
图l PcL818H两种模拟量输入电路图
2 VC+十数据采集程序设计及使用ADO技术访
AiVol In.voltage=DRY
_
Get Address(voltage)
问数据库
//读人电压值
2.1 VC++数据采集程序设计
Err C de=DRY
—
AlVoltage In(Device Handle,
Microsoft Vi sual C++以其易学、高效及功
AiVol In)
能强大等特点受到了众多用户的欢迎,在数据采
返回值
集和工业控制领域得到了广泛应用。尽管如此,但
fn Get Va1ue=voltage
其自身也存在不足。因其不具备直接对硬件I/O
获取硬件设备(PCL818H)驱动端口号
地址的访问能力,在工业控制中对计算机的底层
DRV
—
Device Get Num Of List((SHORT far。)
硬件进行访问以及利用各种接口板进行数据采集
&gn Num Of Devices))
和控制时间,仅靠VC++自身无法解决,但通过调
获取不包括COM和CAN的硬件设备列表
用驱动提供的函数,就可以实现对I/O口的访问
DRY Device Get List((DEVLIST far )&
和控制。驱动支持高速的数据采集方案(如DMA、
Device List[0]
中断),而且采用双缓冲的技术,还支持事件驱动
(SHORT)gn Num Of Dev ices,(SHORT far*)&n
的工作方式,这些特点使VC++很方便的编制数据
Out Entries))
采集程序…。首先在Windows环境下调用驱动程
关闭设备
序,要实现数据的读取,需要将一些库文件加到
Err C de=DRY
—
Device Close((L0NG far )
程序中来。工程中添加一个Driver.h头文件,在
&Driver Handle)
这个头文件中定义了PCL818H的所有常量,全局
此外,Visual C++提供了两种定时器。一般
变量名,函数,数据结构,状态代码和消息,可
常用的是系统计时器,它使用函数Set Timer进
以直接在程序中调用。编写系统程序时,在菜单
行初始化,应用程序响应Set Timer函数发送来
工程一>设置->Link中添加库文件Adsapi32.1ib,
的消息WM_TIMER。这个定时器是IBM PC硬件和
这个文件中负责实现Driver.h中定义的数据的函
ROM BIOS构造的定时器逻辑的一个相当简单的扩
数读取。在这些函数中,最重要的是以下几个函
展。PC的ROM初始化Inte18259定时器芯片来产
5
《机电技术》2008年第4期 计算机技术应用
生硬件中断08H。这个中断有时称为“定时器滴答”
中断。中断08H每隔54.925毫秒产生一次,或大
约每秒18.2次。BIOS使用中断08H更新存于BIOS
数据区的“时间”值。因此,这个定时器在Windows
中的最大缺点是计时器的最大分辨率是55毫秒,
其中ADO是较新的数据库访问技术,它是使
用更加简单,更加灵活的对象模型。对于新工程,
应该使用ADO作为数据访问接口。ADO提供如下访
问数据库的方法:
(1)连接到数据源。
(2)定访问数据源的命令,同时可带变量参
数或优化执行。通常涉及ADO的Command对象。
(3)执行命令,例如一个SELECT脚本。
也就是说应用程序每秒只能接收到l8个消息。此
外,这个计时器消息的优先权太低,只有在所有
的消息(除了消息wM—PAINT)被处理后才能被处
理。因此函数Set Timer只能用于一般的定时,
(4)如果此命令使数据按表中行的形式返回,
如屏幕显示时间定时等,它远远不能满足实时数 则将这些行存储在易于检查、操作或更改的缓冲
据采集的要求。而多媒体定时器(Multimedia
中。
Timer)。它使用自己单独的线程(Thread),来调
(5)适当情况下,可以把缓存行的更改内容
用一个自己的回调函数(Callback ̄unction)。
写回数据库中,更新数据源。
它的优先级很高,它每隔一定时间就发送一个消
(6)提供常规方法检测错误,涉及ADO的
息而不管其它消息是否执行完。此外,对于现在
Error对象。
的Intel CPU来说,它的最小定时精度通常都可 为了实现上面的功能,ADO编程模型提供了以
以达到1毫秒,足够满足实时数据采集的定时精
下基本元素:连接,命令,参数,记录集,字段,
度要求 。
错误,属性,集合,实现对数据库的访问。
2.2使用ADO访问数据库
3结论
Visual C++是一种面向对象的可视化编程
通过选择合理的触发方式,调用数据采集卡
具,它提供了多种访问数据库的工具和方法。在 驱动程序提供的函数,就可以实现对I/0口的访
Visual C++中,可以通过以下方式访问数据库 :
问和控制,完成高速的数据采集,Visual C++提
(1)ActiveX数据对象(ADO)。
供的多种访问数据库的工具和方法,可对PCL818H
(2)远程数据对象(RDO)。 .
数据采集卡进行程序设计,完成对数据的采集与
(3)数据访问对象(DAO)。
保存。该方式在数据采集和工业控制领域具有较
(4)ODBC直接连接到数据库。
高的实用价值。
参考文献
[1]陈小忠,黄宁。赵小侠. 片机接口技术实用予程序[^f].北京:人民邮电出版社,2005,235—247.
[2]龚建伟,熊光明.Visual C++/Turbo C串口通信编程与实践[M].北京:电子工业出版社,2004,237—244
[33黄维通,姚瑞霞.Visual c++程序设计教程[M].北京:机械工业出版社,2004,190-198.
[4]王育坚,Visual c++面向对象程序设计[M].北京:清华大学出版社,2003,384—399.
[5]PCL-818HG User’S Manua1.Part No。2003818070 2rid Edition[J].Taiwan:June1994,3-78.
[6]PCL-818HG User’S Manua1.Pm‘t No.2003000060 2rid Edition[J].Taiwan:September1994,2-25.
作者简介:王育桥(1981年一),男,硕士,主要从事机电一体化方面的教学和研究工作。
6
发布者:admin,转转请注明出处:http://www.yc00.com/web/1717550918a2740126.html
评论列表(0条)