APP下载

计算机并口在轨迹控制系统中的应用

2011-06-12江卫华余睿民李涵嫣

武汉工程大学学报 2011年12期
关键词:驱动程序调用应用程序

王 浩,江卫华,余睿民,李涵嫣

(1.武汉工程大学电气信息学院,湖北 武汉 430205;2.北京服装学院信息工程学院,北京 100029)

0 引 言

轨迹控制,又称轮廓控制,主要应用于传统的数控系统、切割系统的运动轮廓控制[1],如气动标记机、铣床、切割机等.目前连续轨迹控制系统多采用单板机控制[2],其操作复杂、程序修改不便.随着市场全球化的发展,市场对适合中小批量加工、具有良好柔性和多功能的制造系统的需求已超过对大型单一功能的制造系统的需求[3].本文介绍一种基于Windows XP平台并口的三轴轨迹控制系统.

1 系统的组成

通过计算机的控制,步进电机的脉冲、方向信号和刀具的控制信号经并口向下位机接口模块发送.下位机接口模块对信号进行抗干扰处理后,将脉冲和方向信号发送至步进电机驱动器,同时将控制信号发送至辅助设备.系统采用三轴控制.其中X、Y轴电机带动刀具在水平面运动,Z轴在竖直方向运动.三轴到位信号通过并口送回上位机,上位机捕获到位信号后及时动作.系统组成框图如图1所示.

图1 接口模块框图

X、Y和Z轴到位信号的检测由接近开关完成.X轴到位信号的处理电路图如图2所示.

以X轴为例,图2中IN与接近开关的输出端连接,OUT与光耦的输入端连接.电机回原点时,接近开关的信号线为高电平,开关管的基极为高电平,开关管导通,其集电极被拉低为低电平,该低电平信号经阻容滤波后送至光耦输入端,光耦输出端与并口的状态端口连接,计算机读取到位信号.根据计算机状态端口的TTL电平标准,反相器输出端接上10 kΩ的上拉电阻.Y轴和Z轴类似.此外,下位机接口模块还包含电平转换电路,分别为步进电机驱动器、接近开关和反相器提供+36 V、+12 V和+5 V电压.

图2 到位信号处理电路

2 并口驱动程序设计

2.1 并口的特性

并行接口,简称并口,又称LPT接口,是采用并行通信协议的扩展接口.一般用于连接打印机、扫描仪等外部设备.其工作模式包括标准并行口(SPP)模式、双向模式、增强型半行接口(EPP)模式、扩展并行接口(ECP)模式等.以标准SPP模式为例,它使用三个8位的端口寄存器,即数据寄存器、状态寄存器和控制寄存器.计算机就是通过对这些寄存器的读写操作访问并口.该系统的并口工作在双向模式下.

2.2 驱动程序的实现

与Windows 9X环境不同,在Windows NT环境下,应用程序不能使用Win 32 API函数直接操作端口,为此微软提出了一种全新的Windows驱动程序模型,即Windows Driver Model(WDM).WDM旨在通过提供一种灵活的方式来简化驱动程序的开发,在实现对新硬件支持的基础上减少并降低所必须开发的驱动程序的数量和复杂性[4].它实现了模块化、分层次类型的驱动程序结构.本系统驱动的主要例程包括:DefaultPnpHander、DriverEntry、HandleRemoveDevice、HandleStartDevice、AddDevice、DeviceIOControl、DispatchRoutine、Pnp、Unload等部分.

应用程序与底层硬件的通信可分解为应用程序与驱动程序的通信和驱动程序与底层硬件的通信.应用程序与驱动程序通信前必需先建立两者之间的联系,即应用程序获取驱动程序的设备句柄,如图3所示[5].

驱动程序创建设备时,调用IoRegisterDeviceInterface(函数)为设备创建设备链接,该设备链接暴露给应用程序.应用程序通过设备链接获取设备信息,并调用Win 32子系统中的CreatFile API.CreatFile函数调用Ntdll.dll库中的NtCreatFile函数.NtCreatFile穿过用户模式和内核模式之间的界面,到达内核模式,并调用同名的系统服务NtCreateFile.NtCreateFile系统服务通过I/O管理器创建请求包(IRP_MJ_CREAT)并传输至设备的驱动程序,驱动程序处理该IRP并返回.CreateFile调用成功后的返回值为设备句柄.在调用其它Win32函数访问该设备时,只需将该句柄作为函数的设备名参数可实现对设备驱动程序的操作,即完成应用程序与驱动程序的通信.

图3 应用程序获取设备句柄

应用程序获取设备句柄后,对端口的读写操作通过调用端口操作函数(DeviceIOControl)实现.调用该函数前需用CTL_CODE宏定义来定义操作码(IOCTL),定义时需指定操作模式,如定义采用缓冲区方式读端口的IOCTL码为:

#define IOCTL_READ_PORT CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 0X800, METHOD_BUFFERED, FILE_ANY_ACCESS)

为使Windows操作系统易于移植到不同的硬件平台的上,微软提出并使用了硬件抽象层(HAL).设备驱动程序可直接调用硬件抽象层提供的函数实现对底层硬件的操作,通过修改抽象层程序可实现多硬件平台移植[6].如对于32位的X86系列CPU中的Windows,驱动程序调用硬件抽象层的读端口函数(READ_PORT_UCHAR)和写端口函数(WRITE_PORT_UCHAR)可完成对端口数据的八位读写操作,即完成驱动程序与底层数据的通信.

以读取并口八位数据为例,函数调用如图4所示[5].

图4 应用程序读端口

处理过程为:应用程序调用DeviceIOControl函数后,相应控制码和请求同时传递给驱动程序,且I/O管理器会创建一个IRP_MJ_DEVICE_CONTROL类型的IRP,用户提供的输入缓冲区的内容被复制到内核模式中,其地址由IRP的AssociatedIrp.SystemBuffer子域记录.然后驱动程序会将创建的IRP转发至DeviceIOControl派遣函数中;派遣函数读取IRP的内存地址,获得输入缓冲区数据及IOCTL_READ_PORT操作码,并调用READ_PORT_UCHAR函数;READ_PORT_UCHAR函数从端口读取八位数据,并将该数据存放在IRP提供的内存地址中;在IRP返回时,这段内存地址的数据被复制到DeviceIOControl提供的输出缓冲区中;应用程序获取缓冲区中的数据,端口完成读操作.其中,用户层与内核层之间的数据复制由操作系统完成.

3 系统应用程序开发

系统应用程序的开发采用模块化程序设计方法,即将整个软件逐步细分为树形结构,直至所有子过程都能用编程语言直接实现[7].函数之间的参数采用指针传递.整个并口驱动程序为子函数,供应用程序调用.

轨迹控制系统的核心问题是如何控制刀具的运动.下位机接口模块虽为三轴设计,但设计软件时,Z轴并不参与插补.它主要用于铣床中的出刀和回刀操作.在应用于气动标记机系统时,将Z轴出刀位移设置为零即可实现两轴单平面运动.因此该轨迹控制主要针对平面曲线的运动轨迹.而平面曲线的轨迹需要两个坐标轴的协调运动才能形成.在两轴联动的数控机床中广泛应用逐点比较法.系统采用逐点比较法的直线插补方式.在步进电机驱动器高细分度的配合下,系统轮廓的加工精度能得到有效保证.该轨迹控制系统在气动标记机系统中的应用效果图如图5所示.

图5 在气动标记机系统中的应用

4 结 语

整个系统采用模块化设计方法,且同时适用于多种小型数控机床.目前该系统已在气动标记机和铣床上使用.实践证明,该系统具有许多优点:①数据处理能力强、速度快;②抗外界干扰能力强、可在恶劣环境下作业;③有效节约产品成本、提高系统的可靠性;④可加工任意字符、商标、图形和图案等,操作和维护方便.

参考文献:

[1]庄文波.连续轨迹运动控制系统的研究与应用[D].哈尔滨:哈尔滨工程大学,2008.

[2]陈庆,熊瑞平,袁中凡,等.基于PC机并口的线切割数控系统[J].机械与电子,2006(11):44-46.

[3]蔡晓雯.基于MCX314的运动控制器的研究与设计[D].湘潭:湘潭大学,2008.

[4]杨珺.基于WIN2000下的WDM驱动程序探究[D].天津:天津大学,2005.

[5]张帆,史彩成.Windows驱动开发技术详解[M].北京:电子工业出版社,2008.

[6]冉全,陈为,赵世平.事件马飞动编程机制在嵌入式GUI系统中的实现[J].武汉工程大学学报,2009,31(7):84-87.

[7]江卫华.基于PC计算机并行口气动标记机系统的设计[J].电气传动自动化,2002,24(1):44-46.

猜你喜欢

驱动程序调用应用程序
核电项目物项调用管理的应用研究
删除Win10中自带的应用程序
LabWindows/CVI下基于ActiveX技术的Excel调用
基于系统调用的恶意软件检测技术研究
利用RFC技术实现SAP系统接口通信
关闭应用程序更新提醒
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序
驱动程序更新与推荐
驱动程序更新与推荐