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所示。
由于篇幅所限,只对软件中涉及的几个关键问题进行阐述。
3.2.1 线程的应用
在手动运行和自动运行中都用到了线程技术。主要过程如下(以手动为例):