CNC动态卡在总线方式下的实现
扫描二维码
随时随地手机看文章
1 引言
20世纪90年代以来,随着现代微电子技术,计小闭式系统没有一个强有力的体系结构给以支足以持,在控制软件开发让缺乏持久的开发能力,并且不能进行高可靠性的软件扩展,不能满足用户对其进行二次开发的需求,因此人们提出了放开式的数控系统方案,他具有加工控制的高速化、高精度化,应用环境网络化,集成化,体系结构柔性化,开放化等特点。
现有的放开式数控系统实现方案主要采用PC机和数控系统结合的方法,PC机作为上位机实现较为复杂的网络通信,人机交互等功能,数控系统作为下位机将上位机输入的运行参数经过处理交给执行部件执行,同时将检测系统的反馈信息上传给上位机实现实时监控,各个模块之间协调工作互不干扰,给系统升级带来了方便。
放开式系统动态控制器的核心是DSP,它具有运算速度快,支持复杂运动算法的特点,可以满足高精度运动控制的要求,因此,以DSP为核心的多轴动态控制卡越来越广泛地应用在运动控制系统中,将多轴动态控制卡插在PC机扩展槽上,就可以组成高精度运动控制系统,位置反馈信号的采集、闭环控制计算及控制量的输出均由动态控制卡完成,极大的提高了运算速度和控制响应速度,将工控机的资源从烦琐的数据采集和计算中解决出来,从而可以更好的实施整个控制系统的管理。
作者经过综合调研,采用TI公司的2407系列DSP作为微处理单元,采用PCI总线作为并行总线与PC机进行通讯,同时采用现在比较流行的现场总线技术同现场设备进行通讯,所以这是一个基于现场总线和PCI总线的智能动态控制器。
2 动态控制器的系统构成
2.1 现场总线
基于PCI总线的动态控制器采用现场总线技术,解决了传统串行总线传输速率低,响应速度慢,出错率高等缺点,同时由于现场总线采用数字信号而不是传统的模拟信号作为通信手段,解决了传统数控系统中的难以解决的零漂问题,简化了系统的实现方案,同时这种总线有利于放开式系统的发展。
CAN是德国Bosch公司为解决现代汽车中众多控制与测试仪器之间的数控交换而开发的一种串行数据通信协议,他是一种多主总线,通信介质可以是双绞线、同轴电缆或光纤,通信速率可达1Mb/s,该协议由数据链路层和物理层组成,数据链路层分为逻辑链路控制子层(LIC)和媒体访问控制子层(MAC)。现在已形成该协议的国际标准(ISO1898),CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的帧处理(包括位填充、数据块编码、循环冗余校验等)、CAN总线有CAN2.0A和CAN2.0B两种协议,CAN协议的一个最大的特点是对通信数据块进行编码(取消了传统的对站地址编码),CAN协议采用CRC校验并提供相应的错误信息处理功能,保证了数据通信的可靠性。
CAN总线以其可靠性高、通信速率快、稳定性好,抗干扰能力强,开发成本低等特点, 而被工控领域普遍采用,被公认为最有前途的现场总线之一。
2.2 PCI 总线
作为目前微型计算机主流总线标准的PCI总线,原来是专门为了提高系统数据传输性能,现在作为高性能外设接口,与传统的ISA总线相比,PCI总线有以下特点:
突出的数据传输性能 总线宽度32位(可扩展到64位,)支持突发传输方式,PCI总线规范2.0版支持3MHz总线操作,32位33MHz总线在读写操作中峰值传输速率达到132MB/s(ISA最大传输速率8MB/s);
良好的兼容性能 PCI总线部件和插卡的设计独立于处理器, 定义了3.3-5V两种信号环境,5-3.3V的组件技术可以是使电平平稳过渡;
即插即用 每个PCI设备上都有配置空间能实现自动配置,使系统BIOS和操作系统的系统层软件能自动配置系统部件和插卡;
线主控和同步操作,PCI总线接口芯片可以主控总线,其同步操作可以保证CPU和总线主控同时操作;
总线仲裁机制,PCI总线仲裁能在另一个总线主设备在PCI总线上执行传输时发出,从而提供系统数据传输性能。
在PCI总线的设计上采用了PLX公司的产品PCI9052,这是一种高性能的PCI总线控制器,专门为开发PCI板卡而设计的一种PCI总线控制器,图1是放开式数控系统总体结构框图。
2.3 微处理芯片
动态控制器板卡上有一个高速DSP芯片作为运动控制模块的控制器,该设计选择IT公司生产的TMS320LF2407作为动态控制卡的控制芯片,由于TMS320xx系列DSP芯片是专门为控制电机设计的一款高性能低价位的产品,同时作为控制电机的伺服控制系统也是采用的这款DSP芯片作为伺服控制器,所以具有良好的通讯和系统兼容性能,TMS3201LF2407内部还有一个CAN控制器模块,这样就不需要另外选择一个CAN控制器,简化了电路设计,同时提高了系统性能。
由于DSP芯片和PC机都是控制器,他们对存储器编址是不同的,为了统一编码,在PCI控制器和DSP之间要加一个双口RAM来连接2个控制器。IDT7024是IDT公司生产的一款双口RAM,他和普遍的RAM不同之处是它有2个地址4单元,1个存储单元,对于PC机来说他就对对应于一段内存单元,对于DSP来说他可以对应于一段片外存储单元,这样就解决了DSP和PC机之间的通信问题,本设计采用的是通用PC机加实时控制单元的递阶式结构。采用放开式数控系统上PC机的Windows环境形成良好的人机界面,利用PC机的资源优势,放开式结构平台(动态控制器)可以集成不同开发商提供的软件并适合连网需要,且具有与硬件无关的特性,设备层高速度、高可靠性,标准化的数字通讯,可满足用户个性化要求且保证高性能、低成本。
3 系统硬件设计原理
基于CAN总线动态控制卡的硬件结构如图2所示,从个人PC机中传入的参数如:加工参数,插补轨迹以及一些状态信息,通过PCI总线传到PCI控制器PCI9052的高速缓存FIFO中,PCI9052作为总线主设备将PC机传来的信息经过缓存最终存储到双口RAMIDT7024内,由于双口RAM映射为PC机的一部分内存地址,所以PC机就像操作内存一样将信息存储到双口RAM,等待DSP的读取,DSP定时从双口RAM中读取PC机传来的各种控制信息,DSP的主要功能是根据PC机送来得插补信息,通过插补算法形成伺服控制模块能够接受的动态信息,通过CAN总线将运动信息传递到伺服控制器,通过伺服控制器来驱动伺服电机运动,从而控制数控机床的运动。
在设计中由于PCI9052,IDT7024都是5V元件,TMS2320LF2407属于3.3V器件,同时PCI插槽提供5V电源模块,所以电路只使用了电压转换电路将5V信号转变为3.3V信号,如图2,由于DSP内嵌CAN控制器,所以外部只需要一个PCAC82520T-CAN收发器就可以直接挂在CAN总线上进行通讯。
4 数控系统的软件设计
放开式CAC系统解决软件公用的最主要措施是采用通用的操作系统,本系统设计PCI动态控制卡可以在Windows90/2000/XP中文操作系统下正常工作,软件框图如图3所示。
为了使系统达到控制要求,需要解决如下几个关键问题:
(1)保证系统相应的实时性
系统对外界信息以足够快的速度进行处理,并在一定的时间内作出响应,本控制系统是利用Windows中断保证实时响应;
(2)协调的进行多任务调度
CNC系统具有多种不同优先级任务,要求系统软件能合理,有序地调度这些任务的运行,多任务意味着多个任务能并行运行,调度的关键在于按照一定的优先权,事件发生的顺序合理的切换各任务的状态;
(3)提供任务通信机制
由于CNC系统中各任务并否是孤立的,任务之间要完成信息交换和资源共享,CNC系统的通信形式有两种,互斥和同步,互斥是针对不可共享资源的访问问题,如大多数外部设备和共享的可读写数据区,同步是指任务之间的协同工作,任务之间的相对速度有不可预见性,必须由任务通信机制达到同步;
(4)提供定时和延时
定时和延时功能一般由时钟提供,CNC系统大部分任务都是依据定时或延迟条件来激活。
5 驱动程序
PCI设备的驱动程序需要解决的问题,首先是即插即用的问题,既如何获取系统分配给该设备的配置资源,然后是如何访问设备I/ O内存映射硬件,如何处理硬件中断,最后还是解决和应用程序的通讯问题。
5.1 获取系统分配的配置资源
对于即插即用型设备,系统都是动态分配系统资源的,如何获取系统分配给这些内存单元的地址是VxD驱动程序需要解决的首要问题。在PCI的配制周期机制中,主桥路提供了两个寄存器用于对配置空间的操作,第一个是配置空间基地址寄存器CANFIG-ADDRESS,双字地址是CF8H,第二个是配置空间数据缓冲寄存器CONFIG-DATA,地址是CFCH,对配置空间的操作是通过输入一个值到设备的CONFIG-DATA寄存器,在此之后如果对CONFIG-DATA寄存器进行读写操作,PCI控制器就会将CONFIG-ADDRESS寄存器中的
5.2 VxD与应用程序的通讯
VxD运行在系统Ring0级,处理系统底层设备,应用程序利用其提供的接口服务来处理硬件,Windows允许VxD和应用程序之间进行双向通信。
在Windows中,Win23应用程序对VxD的通讯方法只有一种,利用设备输入输出控制函数DeviceIoControl()来实现,利用CreateFile()函数加载VxD获得VxD设备句柄,如果调用成功,Win32应用程序就可以调用DeviceIoControl()程序与VxD进行通讯。
VxD的命令代码需要根据其固定格式进行定义,程序中共定义了2个命令代码,分别用于对双口静态RAM的读写操作和VxD对Win32应用程序异步过程调用时回调函数地址传输。
在VxD中与DeviceIocontrol()函数相对应的是OnW32DeviceIocontrol()函数,他W32_DeviceIoControl控制信息,当Win32应用程序动态加载Vxd,动态卸载VxD以及调用DeviceIoControl函数时,OnW32DeviceI0control()函数被触发,
在这个函数的参数中,也包括应用程序调用VxD的命令代码,VxD根据他们的值进行相应的处理。另外,由于采用中断方式对DSP处理的数据进行读取,所以中断事件发生时, 需要VxD异步通知Win32应用程序,设计时在应用程序中创建了两个线程,一个用于等待中断事件,当中断事件发生时,读取DSP送到双口RAM中数据,另一个用于显示数据。
5.3 访问I/O以及内存
在S599的串行存储器中,将PCI配置基础地址寄存器BADR1配置为4k,16位寄存器空间,BADR2设置为8个自己的I/O空间,基地址寄存器BADRO对应S5933内部16个双字节PCI总线操作寄存器,当利用查找方式获得配置空间数据时,即可得到存储器空间基地址和I/O端口基地址。
5.4 处理中断
当DSP处理数据写满2k的存储器空间时PCI将产生中断,中断信号从配置空间寄存器中读出,PCI设备分配的硬件中断信号是共享中断,必须使用类VsharedHardwareInt的中断通知事件处理函数OnSharedHardwareInt()。
6 应用程序的编写
6.1 人机接口模块
使用VC编写基于PCI总线动态控制器板卡的应用程序,主要利用设备输入输出控制函数DeviceIoControl(),将界面上对数控机床的各个参数转换数据送到底层的VxD进行通信。
6.2 解决程序模块
对从应用程序中人机界面模块中传入的参数进行解释,完成将上位机输入信息解释成下位机DSP能够执行的语言,程序解释模块固化到PCI板卡的DSP片内ROM中。
6.3 PLC接口模块
实现PCI控制卡与现场总线上的PLC模块之间的通讯,由于CAN总线的特点是可以将对PLC模块的控制作为一个应用模块做在PCI控制卡上,从而实现了模块化控制。
6.4 插补模块
在加工信息解释的基础上,调用运动学算法模块,将运动平台在操作空间的运动转变为空间的伺服运动,实时生成刀具的运动轨迹,并将各伺服轴的移动指令送给伺服模块。
6.5 运动算法模块
主要为伺服驱动提供逆解、速度映射算法,为加工状态的实时仿真及精度补偿提供正解算法。
7 结语
采用PC+动态控制卡模式,实现数控系统的放开式设计方法开发周期短,系统可靠性高,便于机床功能扩展,由于软件采用了模块化,同时基于组件技术,界面友好,操作方便,进行软件升级以及用户进行二次开发都比较方便。