APP下载

数控机床基于PCI 总线的同步位置检测卡设计*

2014-06-29刘学鹏张东升栾宗涛

组合机床与自动化加工技术 2014年9期
关键词:状态机驱动程序控制电路

刘学鹏,张东升,栾宗涛

(1.中山职业技术学院 机电工程学院,广东 中山 528404,2.西安交通大学 机械工程学院,西安710049)

0 引言

当前数控机床主要发展方向之一就是高速、高精度,这要求在单位时间内能够采集和处理大量数据,具有较好的实时性,因此,对于位置检测系统的数据传输带宽有着较高的要求[1-6]。PMAC 运动控制器采用ISA总线,导致上位机通过它读取位置信息的采样周期较长,在实际应用中,高速进给状态下会丢失大量采样点,使检测到的数据没有实际意义。同时,为了实现复杂曲面的运动和造型,数控设备需要实现多轴的协调运动,这就需要能够同时采集多个轴的位置,以进行分析和反馈处理。

1 同步位置检测卡的总体结构

整个系统分为两个层次,即硬件层和软件层。计算机为了方便扩展,在主板上一般都留有计算机总线扩展插槽,扩展的嵌入式板卡就插在扩展插槽里。同步位置检测卡主要实现了两个功能,一个是总线接口,一个是同步位置检测功能。

总线的接口和检测电路的交互是通过共享空间来完成的,命令字节和数据都存放在共享空间里。为了实现对共享空间的友好访问,防止冲突,设计了握手电路。

现在的计算机操作系统的主流是具有良好人机界面的Windows 操作系统。在Windows 操作系统下,屏蔽了普通应用程序对硬件的操作。实现屏蔽功能的主要是靠Windows 设备驱动程序和操作系统来完成。因此,必须设计的扩展板卡设计设备驱动程序和应用程序,主要功能是在Windows 应用层获取硬件设备,为二次开发留出良好接口。

2 同步位置检测模块

同步位置检测模块所要检测的信息主要来自于位置检测传感器。传感器分为模拟量传感器和数字量传感器。对于数字传感器,采取必要的抗干扰措施以后,可以直接处理其输入的信号。对于模拟量传感器,必须先通过A/D 转换器件对其输入的信号进行数字化处理,然后再传送到检测电路。本文使用的编码器是典型的数字量传感器,没有使用A/D 转换器件。

图1 同步位置检测卡总体结构图

同步位置检测模块能同步检测多个通道的信息(图1),这就要求检测电路对于多路数据能够同时锁存处理,针对每个通道都有一套相类似的处理电路,这些电路组合在一起就组成检测电路。当数据被锁存以后,还要能够被读取,读取的工作主要是由控制电路来完成的。控制电路是以AT89C51 型单片机为核心的单片机及其扩展电路。单片机按照设计的次序从检测电路读取数据,然后把这些数据放到存储器件里,等待计算机通过PCI 总线来读取。存储器件是一个双端口RAM,存储空间实际上也就是共享空间,能够被控制电路和PCI 接口同时操作。

共享空间有两个作用,一个作用是存储从检测电路读取的数据,另一个作用是存储计算机发送的命令字节。本文双端口RAM 为地址空间为2K,范围从0000h~3FFFh,双端口RAM 的同一个地址不能同时被控制电路和PCI 接口操作,因此,数据存储区划在逻辑上被划分为四个部分,见图2。由于分为上下两个半区。当控制电路向其中一个半区写入数据时,PCI接口只能从另一个半区读取数据,只有当控制电路完成对该半区的操作并通知PCI 接口时,PCI 接口才能采取相应的操作。命令字节存储区也被分为上下两个半区,这一方面保持了数据存储区两个部分的空间大小相等,简化了控制程序的编写,另一方面也有利于命令字节的扩展。

图2 共享空间逻辑划分

3 同步位置检测卡PCI 接口功能模块

根据同步位置检测卡PCI 接口的功能需求,整个PCI 接口内部规划为六大模块,即状态机模块、奇偶校验模块、配置逻辑单元、配置寄存器空间、支持状态机的逻辑控制单元和I/O 控制模块等。

同步位置检测卡PCI 接口状态机模块:与PCI 总线的控制信号交互,根据不通的信号组合,负责交易的启动和转换,与其它模块配合实现PCI 总线配置、奇偶校验、I/O 操作等功能,并产生相应的本地总线控制信号,与本地器件交互。

位置检测卡PCI 接口奇偶校验模块:与PCI 总线的奇偶校验信号交互,实现数据、地址的奇偶校验,保证信号的正确性,以及在发生校验错误时,报告奇偶校验错误。

同步位置检测卡PCI 接口逻辑配置单元:与PCI总线的接口地址和数据信号交互,在初始化时期,与PCI 总线控制器配合,实现PCI 总线的硬件资源的配置功能,实现资源的可配置,以及在配置交易和数据交易时,实现地址解码。

同步位置检测卡PCI 接口配置寄存器空间:主要储存的是用户配置的PCI 总线的原始硬件信息,在上电初始化最初期,这里的信息被加载到逻辑配置单元。

同步位置检测卡PCI 接口支持状态机的逻辑控制单元:根据PCI 协议为状态机产生输入信号,主要由定时器组成。定时器产生定时信号,限制设备交易延时。

同步位置检测卡PCI 接口I/O 控制模块:与PCI总线接口地址和数据信号交互,实现了命令、地址位的解码,在PCI 数据/地址多路复用总线上进行数据交换。另外,配置空间中的只读寄存器也将在这部分根据译码结果,被强制转换到响应的地址。

在这六个模块中间,状态机就好比是大脑,它与其它模块的正确配合才能使整个接口正常工作。

根据状态细分表和控制信号图,得出状态机的状态转换图如图3 所示。

图3 同步位置检测卡PCI 接口状态机状态

在图中,主要有两个主线,左边的读操作和右边的写操作。现在以正常读操作为例加以说明。总线首先处于IDLE——闲置状态,当PCI 主设备请求交易时,从设备发现并不是访问自己,则总线处于BUS_BUZY状态,因为这时主设备占用总线,在和别的从设备交易,知道恢复闲置状态。而如果主设备请求交易时,自己本身忙于其它交易,处于RETRY 状态,直到恢复IDLE状态。如果设备正常启动一个读交易,则首先到SWAIT 状态,等待被读的数据放到总线上,然后到SREAD 状态,读走数据。如此这样交易,直到最后主设备发出信号,准备正常结束交易,则进入FINISH 状态。当所有的信号回复初始状态,于是总线又回到IDLE态。其它五个模块的实现方法类似,以同步位置检测卡PCI 接口I/O 控制模块为例说明。

4 数据采样模块

在图4 中,编码器安装在丝杠伺服电机的尾部,根据丝杠的旋转角度发出脉冲信号,限位开关是光栅尺的一部分,发出零点定位信号,这些信号通过IO 口发送到嵌入在PC 机里的位置检测卡里。为了减少现场的噪声和干扰,使用了光耦器件,把采集到的信号与检测卡将要处理的信号隔离。通过对编码器的A、B 两相信号和限位开关的电平信号的处理,可以判定丝杠是正向旋转还是反向旋转,或是到达零点位置,从而发出相应的控制信号。采样电路主要是两个可逆计数器,分别对X、Y轴计数。通过预处理电路发出的控制信号,控制计数器递增计数或者递减计数。通过读取计数器的具体数值,就可以知道工作台的具体位置。

图4 数据采集图

5 同步位置检测卡控制电路的设计

AT89C51 型单片机具有很好的扩展性,内部自带有4k 的程序存储器,并且有4 个8 位的IO 口用于扩展,还带有一个全双工的串口。图5 实现以单片机为核心的控制电路。

图5 同步位置检测卡控制电路原理

在位置检测卡上,晶振给单片机提供了工作时钟。为了配合单片机的串行通信,采用的是11.0592 MHz的晶振。位置检测卡使用单片机的P0 口作为地址和数据线的复用通道。当在地址周期时,与控制信号线配合,通过CPLD 中设计的锁存器锁存地址。在数据周期时,直接通过P0 口从双端口RAM 中读取或者写入数据。控制信号线主要是以单片机的P1 口的为基础扩展的。

计算机通过PCI 接口INT0 中断给单片机。同时,单片机也可以给外部发送中断,通过扩展P1 口的信号线的功能来实现。

为了检验计算机从双端口RAM 中读取数据的正确与否,使用单片机的串行通信功能。在设置时,用到了定时器1 作为波特率发生器。波特率是9600bps。

6 同步位置检测卡设备驱动程序

为位置检测卡开发的一个完整的WDM 驱动程序可以被看作是一个容器,它包含许多例程,当操作系统遇到一个IRP 时,它就调用这个容器中的例程来执行该IRP 的各种操作。有些例程,例如DriverEntry 和AddDevice,还有与几种IRP 对应的派遣函数将出现在每一个这样的容器中。需要对IRP 排队的驱动程序一般都有一个StartIo 例程。执行DMA 传输的驱动程序应有一个AdapterControl 例程。大部分能生成硬件中断的设备,其驱动程序都有一个中断服务例程(ISR)和一个推迟过程调用(DPC)例程。

为了使同步位置检测卡能够被Win32 用户访问,在Windows 2000 系统里,同步位置检测卡的驱动程序使硬件设备像一个文件,对其的操作像是对文件的操作。用户态应用程序使用Win32 函数CreateFile 访问驱动程序。使用CreateFile 访问一个文件的时候,需要知道具体文件的名称,因此,访问驱动程序的时候,也必然要有一个唯一设备名称以供函数调用。这个唯一的设备名称就是该设备的符号链接名。每个设备使一个定义的应用程序编程接口(API)可用,全局唯一标识符(GUID)用于标示这个接口。应用程序为了访问位置检测卡,必须首先得到卡的接口名,取得该设备对象的句柄。在取得了同步位置检测卡的设备句柄以后,就像访问普通的文件一样,可以调用Win32 API 函数访问设备,实现I/O 操作。完成操作以后,要调用CloseHandle 关闭句柄。

7 结论

(1)分析了位置检测卡的功能要求。分析了同步位置检测卡的整体功能需求,按照检测原理对同步位置检测功能模块进行了功能细分,确定了PCI 总线接口模块的方案。

(2)设计了位置检测卡硬件线路。首先根据功能要求,分析了电路原理,并选用合适的电子器件,绘制了电路原理图。其次,按照抗干扰原则,在双层PCB板上布置了电子元件并进行了布线。

[1]Mei XS,Tsitsimi M,Yamazaki,T.,Sun NG. Study of the Friction Error for a High-speed High Precision Table[J].International Journal of Machine tools and manufacture,2001,141:1405 -1415.

[2]堤正臣,大友诚司,摩擦を考虑したCNC 工作机械の送り驱动系の数学モテル[J],精密工学会志,1995,61:1458 -1465.

[3]荣盘祥,刘楠,曲峥敏.开放式数控系统运动控制器的设计[J].哈尔滨理工大学学报,2010 (3):36 -39.

[4]唐建生,刘云豫,王宏颖.数控机床检测元件故障诊断及维修实例[J].机床与液压,2008 (10):290 -291.

[5]Rafiq Ahmad ,Stephane Tichadou ,Jean-Yves Hascoet,3D safe and intelligent trajectory generation for multi-axis machine tools using machine vision[J].International Journal of Computer Integrated Manufacturing, 2013,26 (4 ):365 -385.

猜你喜欢

状态机驱动程序控制电路
基于有限状态机的交会对接飞行任务规划方法
阻止Windows Update更新驱动程序
2017款本田雅阁车控制电路(二)
基于Spring StateMachine的有限状态机应用研究
2014款雷克萨斯CT200h车控制电路(一)
计算机硬件设备驱动程序分析
2018款别克GL8车控制电路(二)
2016款迈腾B8L车控制电路(一)
基于反熔丝FPGA的有限状态机加固设计
基于VHDL的一个简单Mealy状态机