基于PCI总线的DAQ卡研制及测控应用
关键词:PCI总线 ;DAQ卡;测控系统
基于DAQ(数据采集)板卡和信号调理电路为仪器硬件所组成的PC-DAQ测控系统,是整个测控系统中的一个重要的组成部分。本文结合PCI总线工作原理和特性,首先简要讲述了基于PCI总线DAQ板卡的设计结构,然后对带有GPIB[1]接口DAQ卡的硬件原理设计、DLL驱动软件设计做了详细的讨论。
1 基于PCI总线DAQ卡的设计结构
基于PC-DAQ[2]组成虚拟仪器测控系统,通用的构建方法是在计算机上插入数据采集(DAQ)卡,并由驱动软件驱动硬件,通过应用程序构建虚拟面板和发送通讯命令。因此,在该系统中,实现基于PCI总线数据采集(DAQ)卡的软硬件设计,是核心内容。
基于PCI总线的DAQ卡,在设计实现上,分为两个部分:硬件电路的设计和软件驱动程序的实现。由于DAQ卡是基于PCI总线的,因此,在硬件上,包括实现PCI总线的接口电路和实现数据采集及处理的虚拟仪器功能电路两部分。驱动软件部分,则是实现计算机和硬件板卡之间的通讯,把所采集的数据存储到计算机内存中。
图1基于PCI总线DAQ卡的软硬件设计结构图
2 GPIB接口卡的硬件设计与实现
带有GPIB接口的DAQ卡,在硬件功能上,需要实现三个部分:PCI总线接口、PCI设备的即插即用和GPIB功能接口电路。
2.1 PCI总线接口协议的实现
在该系统的硬件设计中,选用了PLX公司的专用接口芯片PCI9052作为实现PCI总线的桥接芯片。PCI9052对于PCI总线和局部总线转换提供了无缝链接。因此,在硬件实现上,只需要对PCI总线引脚和PCI9052引脚做一一对应连接即可。
2.2 即插即用的实现
PCI总线提供了即插即用的功能,从而使得操作系统在启动过程中根据检测到的配置空间寄存器参数,自动为硬件分配各种资源,实现了硬件设备的资源自动配置。
PCI总线的即插即用,对于使用专用集成芯片设计的板卡,主要是通过设置PCI桥接芯片内部的配置寄存器内容来实现的。实现的方法有两种:通过软件在线编程修改桥接芯片中配置寄存器内容和使用烧写器修改串行EEPROM内容。
2.3 接口功能电路的实现
对于GPIB功能电路,为了实现GPIB总线接口协议,本设计中采用了德州仪器生产的专用接口芯片DS75160和DS75162以及74LS375芯片来实现。DS7560和DS75162是专门针对于实现GPIB功能电路的集成芯片。
2.4 接口卡电路的实现
GPIB接口卡的电路包括原理图和印刷版电路两部分。
2.4.1 原理图设计与实现
硬件板卡电路原理如图2所示。在下图中,PCI9052用于实现PCI总线接口各种时序电路,EEPROM为93LC46B,用于实现PCI板卡的即插即用功能,外围芯片74LS688[13]实现地址片选,8255用于实现局部的I/O资源,GPIB功能电路实现接口协议。

图2 GPIB接口卡原理框图
2.4.2 印刷板电路设计与实现
PCI总线设计属于高速线路设计,对信号的完整性设计要求较高,在本系统中,由于应用总线接口端要求工作时钟为8MHZ,这个工作时钟和PCI端的33MHZ工作时钟是相互独立的,因此,设计两层的PCB板就可以达到传输速度上的要求。
3 DLL软件驱动的设计与实现
对于基于DAQ板卡构建的虚拟仪器测控系统,其软件设计主要任务是实现硬件板卡的驱动程序和仪器虚拟化功能函数的实现。在Windows98操作系统环境下,硬件板卡的驱动程序有三种形式:VxD驱动、DLL驱动和WDM驱动程序[3]。这三种形式中,由于在Windows98环境下提供了能够在应用层直接操作硬件I/O空间的API函数,所以,在对于带有GPIB接口的DAQ卡驱动软件,通过设计一个直接操作硬件I/O空间的DLL[4]来实现。
3.1 DLL的内在工作机制
动态连接库是应用程序在运行时连接函数库的一种实现机制。函数库存储在它自己的文件中,并不被编译到应用程序可执行文件中去。DLL在应用程序运行时才连接,而不是在应用程序创建时被连接。DLL包含一个导出函数表,对于需要导出的函数,在定义的时候作类似如下的声明:
extern “C” __declspec(dllexport) int FunctionName(int n);
除了需要作以上的声明外,编译工程中还必须为连接器指定导入库,而且客户程序必须实际调用了DLL的导出函数中的至少一个函数。
在创建DLL时,一般都使用VC++6.0来进行开发,在DLL的开发过程中,需要定义三个文件:
(1)一个C语言源文件(必须);
(2)一个自定义的头文件(可选,在应用程序中调用);
(3)一个模块定义文件(可选,在_stdcall方式调用时可能需要)。
3.2 Windows98下操作硬件的API函数
在Windows98环境中,操作系统为应用程序直接操作硬件I/O空间提供了6个API函数,用于实现硬件I/O空间字节、字和双字的读写。
3个端口读函数原型和说明如下(括号内参数为16位I/O读地址):
读字节:int _inp( unsigned short port );
读 字:unsigned short _inpw( unsigned short port );
读双字:unsigned long _inpd( unsigned short port );
3个端口写函数原型和说明如下:
写字节:int _outp( unsigned short port, int databyte );
写 字:unsigned short _outpw( unsigned short port,
unsigned short dataword );
写双字:unsigned long _outpd( unsigned short port,
unsigned long dataword );
在上述三个API函数中,第一个参数为需要写入数据的16位I/O地址,第二个参数为需要写入的数据。在Windows98操作系统中,通过操作以上6个API函数,就可以对包含I/O资源的设备硬件进行读写操作。
3.3 DLL中PCI设备局部资源的获得
在PCI设计中,在调试完硬件,硬件设备就可以正常工作了。但是,如果需要通过软件来控制硬件动作,则必须获得系统已经为硬件设备所分配的各种资源信息,即各种映射的那个I/O和内存空间的基地址和大小。
在GPIB接口卡的设计中,在硬件上,局部资源为8255所申请的四个字节的I/O空间。因此,在软件上,需要获得这四个字节的I/O空间在系统中PCI地址空间所对应的基地址大小,通过访问PCI地址空间中的基地址才能通过地址映射实现对8255四个I/O端口的读写操作。
在该板卡的设计中,PCI配置周期由配置机制[5]产生,这种机制使用两个双字I/O双字I/OCF8H地址。第一个双字I/O地址CF8H,是一个可读写寄存器,命名为CONFIG-ADDRESS。第二个双字地址是CFCH,命名为CONFIG-DATA寄存器。对配置空间的操作是通过写一个值到设备的CONFIG-ADDRESS寄存器。在此之后如果对CONFIG-DATA寄存器回读,桥就会将CONFIG-ADDRESS寄存器中的值转换为PCI总线上所要求的配置周期,即自动产生配置读和配置写周期[6]。因此,在软件上通过对这两个寄存器进行循环读写,可以获得GPIB接口卡的硬件资源,该部分工作流程如左图3所示。

图3 PCI卡资源获取流程
4 PCI总线DAQ卡在基于示波器测控系统中的应用
在工业现场使用示波器进行信号测量时,常有因环境限制而无法处理测量结果的情况。这时,可通过GPIB总线接口,将数字示波器和位于PC机中的通讯接口卡相连,把数据传输到计算机中,然后再在应用层使用图形化编程软件LabView[7]构建示波器的虚拟控制面板,实现用户通过对在测试现场的示波器进行程控操作,在计算机上的虚拟示波器面板上显示实际的测量结果,并对实际的数据进行分析、存储等处理,完成示波器的虚拟化操作。
系统的结构框图如下图4所示:

图4 系统的结构框图
上述所示波器测控系统中,硬件部分主要是一块自主研制的基于PCI总线的GPIB接口板卡, 用于实现示波器数据的采集,软件部分是用于驱动GPIB板卡的DLL功能驱动程序,实现发送命令和数据采集的软件控制。
在该实际应用中,对于TDS220进行程控操作最基本的几个程控命令如下所述:
初始化硬件:IBFIND(GPIB总线地址,0,3000)
初始化示波器:IBDEV(仪器地址)
发送命令至示波器:IBWRT(仪器地址,控制命令)
接收数据(字符串形式):IBRD(仪器地址,缓冲区地址,接受数据个数)
接收数据(数组形式):IBRDI(仪器地址,缓冲区地址,读出数据字节数)
仪器返回本地:IBGTL(仪器地址)
5 结语
基于PCI总线是现代测控系统发展的必然要求,本文所介绍的DAQ卡是结合测控技术的实际发展的需要,在创新思想的指导下提出并开发完成的,文中还给出了在实际测控系统中的应用实例,取得了较为满意的效果。
参考文献:
[1] 鮑芳. 基于PCI/PXI/VXI总线的虚拟仪器测试系统[J].工业仪表与自动化装置,2000,第3期:17-19
[2] 张兢. 基于DAQ数据采集卡的虚拟仪器通用平台设计[J]. 重庆工学院学报,2001,第15卷第2期:41-43
[3] 武安河.Windows驱动程序(VxD与WDM)开发实物[M].北京:电子工业出版社,2001
[4] [美]David J.Kruglinski著,潘爱明译. VC++技术内幕[M].清华大学出版社,1999
[5] Tom Shanley,Don Anderson. PCI System Architecture [M], 2000
[6] 陈利学. 微机总线与接口设计[M].电子科技大学出版社,1998
[7] National Instruments. LabView Programmer’s Guide [M], 2000
[8] 李纪敏,余宏强.基于PCI总线的导弹控制系统自动测控研制[J].微计算机信息,2005,8-1:47-49
文章版权归西部工控xbgk所有,未经许可不得转载。










服务咨询