1 前言
目前,数控技术正在发生根本性变革,由专用型封闭式开环控制模式向通用型开放式实时动态全闭环控制模式发展。另一方面,随着工业Pc机性能的飞速发展,其可靠性也大为提高,且其价格却大幅度降低。从而以工业PC机为核心的控制系统已广泛被工业控制领域所接受。尤其是近年来,发展通用的全软件开放式数控系统已成为国际数控行业研究的热点,代表着数控技术发展的最新潮流。全软件数控系统由通用PC+I/O接口卡构成。这种模式是将I/O接口卡插入到PC机的标准插槽中,整个系统是由PC扩展而成。数控系统所有的非实时任务和实时任务都由PC完成。I/O接口卡实现PC与控制目标之间的沟通及驱动接口的任务。PC+I/O接口卡模式的全软件数控系统才是真正意义上的开放式数控系统,能实现Nc内核的开放、用户操作界面的开放。
该全软件开放式数控系统,采用PC前端加高速I/0平台的复合式结构;所有的数控功能都由模块化的功能软件实现,可供程序直接调用,也可作为构造其他控制系统的二次开发调用。本系统的控制通道为:PC通过总线控制每一个I/O端口,I/O端口与各个控制目标相连。硬件组成如图1所示。
图1数控系统硬件组成结构图
2 硬件系统
2.1 工控PC机
计算机是运行数控软件的核心部件。采用通用的工控PC机,不但可以充分利用PC完备的硬件及计算机领域的先进技术以提高CNC系统的可靠性,而且可以在很大范围内选择硬件,从而避免CNC在更换硬件和服务时引起的限制。选用新型高性能的SIMATC PC840型工控机作为运算和控制核心,用以来完成数控系统的基本功能、开关量功能及伺服控制功能。
2.2 I/O适配卡
系统在PC/AT总线上构架高速I/O平台,自行设计了一块I/O适配卡。该卡用以完成地址译码、I/O端口光电隔离、I/O端口驱动等作为信号输入输出的通用功能。其I/O端口控制和译码的功能都由CPLD可编程器件实现,功能完全由写入该卡的软件定义,只要对CPLD重新编程,而无需修改硬件就可以成为新的数控I/O硬件平台,将硬件设计也实现软件化,使数控系统硬件完全具有通用性,且升级、维护都更方便。其结构如图2所示。
图2I/O适配卡原理图
由于PC机的I/O地址单元大部分被一些标准设备占用,如果设置不当,会引起PC机工作不正常,甚至死机。根据PC机I/O端口地址分配表,我们将适配卡置为0310H~031FH 16个连续地址单元。I/0地址译码采用高速电可擦除可编程器件ATFl6V8B。
其地址分配如下:
2.3伺服信号中转板
这块伺服信号中转板用于在I/O适配卡与电机伺服驱动器之间进行信号转换。主要产生各部分之间差分形式的信号,使伺服控制具有更高的抗干扰能力和可靠性。
3 软件系统分析
数控系统软件属于前后台结构的控制模式,由实时中断完成插补运算和位置控制。与传统的基于PC的数控系统结构比较,全软件数控系统要解决插补计算和位置控制的软件化问题,同时须满足加工过程的实时性要求。所以在选择软件方案时必须围绕这一出发点来进行。在目前比较流行的windows2000操作系统下开发本数控系统的软件。然而目前的windows的产品不支持实时性要求很高的实时任务的调度管理,所以考虑采用windows操作系统下外围设备的硬件中断,由它来提供高精度的实时响应,并合理运用Windows的抢占式、多线程机制有效地解决了开放式CNC系统的实时多任务问题。经过在PⅢ866的CPU上对系统的实时性进行测试,累计最迟中断响应速度为23.3μs,结果表明,完全能满足强实时任务的要求。
3.1 利用硬件中断实现实时控制
由于windows系统的控制实权由虚拟级管理器(XMM)和虚拟设备驱动程序(VxD)实现,通过编写VxD虚拟设备驱动程序来提供时钟中断,并通过时间回调函数来保证其实时性。
VMM和vxD的操作模式和真正的程序不同。在大多数时候,它们是潜伏的。当应用程序在系统中运行时,这些VxD程序没有被激活。当中断/错误/事件发生时,它们才被唤醒。Windows系统为可编程中断控制器8259安装了驱动程序VPICD,并通过相关服务达到允许其它V如利用硬中断的目的。VPICD负责映射中断信号到虚拟机,并模拟相应的I/O来识别虚拟机发出的中断请求。
在虚拟设备驱动程序中要完成以下工作:
3.1.1 初始化8253
该过程是完成适配卡上8253的初始化设置。使用通道o(方式0)。8253用来控制插补速度。8253的cLK信号输入端为2MHz方波信号。当8253的16位计数器将置入的值减为。则发一个正跳变的中断请求信号给ISA插槽的IRQ3,即主板主8259的IRQ3。CPU响应中断后转入中断服务程序INT—SEV0。中断服务程序根据插补的策略送出伺服电机的脉冲及方向信号并接收反馈信号自动调整各坐标值,然后继续对8253进行重新置数,并开放中断等待下一个中断的发生,从而自动完成插补的全过程。
3.1.2 初始化8259
软件对PC机主板上的两片8259进行初始化,即将操作系统的中断系统进行重置,这样做的主要目的是用以接管中断向量B,即原串行口2,我们用它指向中断服务程序。但这是一件比较危险的操作,因为丝毫错误都会给PC机带来系统崩溃的后果。这里我们使用驱动程序开发包(DDK)在VC++6.0集成环境下经过多次调试完成该项工作。同时还需说明的是,在使用适配卡时,数控系统已经占用了COM2,从而必须保证机箱的cOM2端口不能连接任何外部设备;另一方面,在运行本软件时,若未插适配卡,则不会有中断信号发至IRQ3,这样系统软件将无法运行。
3.2 利用Visual C++6.0开发系统软件
windows的多线程技术以“资源分时共享”为原则,在软件设计时,将有并行要求的模块置于独立的线程中,实现系统的多任务并行工作。由于Windows操作系统的设备无关性和高级语言良好的可移植性,在Windows环境下使用Ms Visual系列功能强大的编程语言来实现数控系统,可以使系统的结构组织得比较明晰有序,也便于功能的扩充与剪裁,使数控系统能方便地与各种现有的CAD/CAM软件、数据库接口。
在软件设计中,采用了模块化结构,使得所有的数控核心功能软件和附加的可选功能软件在系统中易于集成,同时也可作为其他控制系统的二次开发调用,体现了数控系统软件的开放性。系统加工程
序文件的读写采用软件自带的编辑窗口,也可以读人外部的文本文件,该程序可自动格式化输人的程序,并检查语法错误,能在线编辑c代码程序,并以文本文档的格式保存。系统主功能键为主界面上的各个按钮和选择框,全部运行用鼠标点击操作。
由于篇幅所限,只对软件中涉及的几个关键问题进行阐述。
3.2.1 线程的应用
在手动运行和自动运行中都用到了线程技术。
3.2.2 对注册表操作的应用
由于数控系统要求有坐标记忆的功能,也就是说在系统再次启动时,各轴坐标值应该为上一次系统退出前的坐标值。为了实现这一个功能,比较便捷的方法就是对注册表进行读写操作。在系统退出之前,把各轴坐标值写入注册表,在系统启动时,把坐标值从注册表中取出。
3.2.3 加工程序的编译与诊断
在编译程序时,基于DOS的数控系统主要是经过多次扫描,将数控加工程序存入缓冲区,最后再次扫描编译缓冲区,根据各功能代码转入相应的子程序。进行插补运算,完成程序加工。
在编写这套软件时,加工代码只经过一次扫描。在扫描过程中,对代码按照字符逐个识别就把程序中的各种代码元素存放在不同的数组中,其中包含绝对坐标值、相对坐标值、正反转标志位等等。在输出脉冲程序模块中,按照这些数组中的值分别向各轴送出相应的脉冲及方向信号。
3.2.4 插补程序
插补程序采用比较积分法,插补算法基于伸雄式函数发生器。基本原理为:如果给定了直线的终点坐标(xo,yo)、圆弧的起点坐标(xo,-yo)、或者其它二次曲线的参数(A,B)和公差(α,β),就可以通过判别函数△的计算来实现这些函数曲线的脉冲分配。△为x轴脉冲总时间间隔和y轴脉冲总时间间隔之差,用来决定两轴进给脉冲的配合关系。运算过程说明如下:
(1)比较x轴和y轴的脉冲间隔A和B(对直线而言,A、B的初始值A0=ye,B0=xe;对圆则A0=x0,B0=y0)。插补时取脉冲间隔小的轴作基础轴,此处设A<B,取戈为基础轴。
(2)脉冲源每发一个脉冲,基础轴都走一步。非基础轴,则根据判别函数△来决定是否走一步。
当△≤0时,x、y都走一步。
当△<0时,只戈走一步,y不动。
为方便计,其中A、B取绝对值进行运算,而α、β取相对值运算。口、卢取值不同就可以得到不同的曲线形式。
采用此算法实现多坐标直线插补插补原理清晰,插补计算比较简单,而且由于这种方法是在基础轴上走步,脉冲发生是不间断的,而且是均匀的,故机床的长轴运行很平稳。
4 结束语
在机械制造加工中,数控软件不仅要有一个友好的人机界面,更重要的是实现加工控制的实时性。我们设计了这种前后台结构的全软件开放式数控系统,以visual C++6.0作为开发工具,在windows2000平台下,充分利用PC的硬件功能,通过编写VPICD虚拟设备驱动程序来提供实时中断以实现实时控制;采用windows多线程机制来实现多任务调度。下一步我们将在不断完善系统自身功能的同时,进一步开发出该数控系统的网络功能。
(审核编辑: 智汇胡妮)