雕刻机的控制系统是数控雕刻机的核心,其控制功能的强弱,控制性能的优劣直接影响雕刻加工的效率和质量。目前应用的数控雕刻机主要有两类:以8位单片机位内核的雕刻机。此类雕刻机有价格较低、设计比较简单,能够达到一般要求的优点,但也存在存储量小、实时性不强、定位精度不高、人机交互不理想而造成操作不方便等缺点。同时,其独立工作能力较弱,较强功能要与PC机联机才能实现。
基于PC机+运动控制卡的雕刻机。其弥补了8位单片机为内核雕刻机实时性不强、精度不够高等缺点,但此种雕刻机大多采用DOS或Windows操作系统,在软件的成本上有所增加,而且无论是作为单任务、过程式操作系统的DOS还是实时性能欠佳的Windows都有很多不如人意的地方。
基于以上雕刻机存在的不足,本文提出了一种以RT-Linux操作系统为开发平合的雕刻机数控系统。RT-Linux作为一种硬实时操作系统,具有出色的实时性和稳定性,能很好地满足数控加工过程中多任务高精度的要求。文章结合数控系统实例,给出了在RT-Linux平合上构建软数控系统的方法,并对其中的一些关键技术进行了研究。
RT-Linux实时内核是由美国墨西哥理工学院开发的,继承了MERT系统的设计思想,以Linux内核为基础,在系统中将严格的硬实时服务和所有的标准POSIX服务有机的结合起来,提供了一个透明的、模块化、可扩充的实时操作系统。RT-Linux通过修改Linux内核的硬件层,采用中断仿真技术,在内核和硬件之间实现了一个小而高效的实时内核,并在实时内核的基础上形成了小型的实时系统。RT-Linux实时内核采用的是一个基于优先级的可抢占的调度算法。实时内核将标准Linux系统当作它的一个最低优先级任务(idle task),它可以在需要的时候随时抢占Linux系统。由于实时内核同时接管了系统的中断控制,故能对硬件中断做出判断:若硬件中断请求一个实时任务的运行,实时内核能及时处理中断,先占其他优先级较低的任务,转而运行与之相应的中断服务程序;若硬件中断请求Linux任务进行处理,实时内核将截获这一中断,并在适当的时候模拟一个软件中断,通知Linux内核运行相应的中断服务。实时任务被编写成特殊的Linux模块,这些模块能被动态地装入内存中,而不会引发Linux系统调用。非周期性运行的任务通过使用中断即可获得支持。
RT-Linux中的实时线程可以通过共享内存或FIFO管道与Linux中的进程通讯,这样实时应用程序就能够利用Linux的所有功能,比如图形功能、窗口系统、设备驱动以及POSIX标准API.系统结构图如所示。
RT-Linux系统结构图RT-Linux采用双内核共存的策略,有效地实现了硬实时特性。据测试,在一合386的机器上,RT-Linux中断延迟时间不会超过15ps,对于一个周期性任务在35ps内一定会执行。由此可见,RT-Linux完全满足作为一个数控系统软件平合的要求。
2数控系统的整体结构数控系统是一个实时多任务控制系统,而Linux与RT-Linux的组合,以其出色的硬实时性和稳定性在工业控制领域获得了广泛的应用。这里我们选用Linux-2.4.28+Rtlinux-3.2-rc1作为系统的实时软件平合,以工控机作为系统的硬件平合,数控系统与伺服系统接口采用基于ISA总线的接口扩展卡DAC- 7330,该卡提供了32路隔离数字量输入输出通道及32个TTL数字量输入输出通道,可以将计算机输出的位置速度等指令转化为相应的脉冲串,驱动伺服系统,从而实现对机床执行件的运动控制。该系统的整体结构如所示。
数控系统软件结构如所示,用户通过人机界面模块读入NC代码,译码后经由数据FIFO到达插补准备模块;插补准备模块在读取数据FIFO中的内容后,间歇性地向插补模块发送数据,并完成相应的计算工作;插补模块则进行周期性的插补运算并将运算结果送至位控模块,位控模块依照插补结果实时地驱动电机;而myhandler函数随时监听命令FIFO管道,若有命令从总控模块传来,就立即处理相应的模块;数据采集模块获取位置及各种参数,然后由状态FIFO管道送至状态监测处理,并将需要的数据显示在用户界面上。
4控制实例这里通过一个实例来说明基于RT-Linux数控的实现方法,其主要功能是通过对雕刻机两个步进电机来实现平面坐标系第一象限的直接插补,所采用的插补方法是逐点比较法。
4.1程序的基本结构为简便起见,我们在,首先插补线程收到用户空间传递的数据,然后myhandler函数监听命令FIFO管道,一断有开始命令后,立即唤醒插补线程,然后实现插补。位控线程同样通过rthandler监听FIFO管道,一旦收到插补线程的内容后将自己唤醒,经处理后传至接口扩展卡来对相应的端口进行脉冲处理,从而实现对电机的控制。
整个实现过程中,比较关键的就是数据的传递。由于内核空间的模块和用户程序需要交换数据,所以我们一般通过定义一个共同的结构体的方法。由于只是第一象限的直线插补,所以译码处理的结构体只需要X、Y轴坐标以及进给速度,而命令管道传输的结构体应包括命令类型、插补周期、进给加速度等。
4.2用户界面的实现由于安装RT-Linux的基本系统平台为Red可选用系统配有的Qt3来编写。Qt自带的Qt Designer能很方便地编写用户界面程序。根据。
如所示,参数设置栏里用于接受用户设置的插补周期、加速度、速度上限,GCode栏用于接收用户输入的NC代码。三个按键分别为译码、开始、停止。当点击译码时,界面调用译码模块,并将译码得到的结构体写入数据FIFO;点击开始时,插补线程被唤醒;点击停止时,插补线程被挂起。
妖4.3实时模块的实现本例中实时模块包括2个周期性实时线程:插补线程、位控线程。插补线程首先获取由数据FIFO传来的译码结构体,然后通过myhandler函数监听命令FIFO管道,如果收到开始命令时,便唤醒自己,进行插补处理,若收到停止命令时,就将自己挂起。每进行一次插补循环,就唤醒一次位控线程,由位控线程对扩展卡进行读写来实现电机的控制。把这个思路用代码写出来的大体结构如下://挂起线程break://插补周期等待//偏差判断等处理命令FIFO听命令FIFO这段代码是很典型的线程代码,函数起动后,就进入线程等待,监听命令FIFO通道上的数据,通过rtfget收到的命令来对线程进行处理,通过线程间的通道来实现通信,另外初始化和卸载是用线程来进行控制编程所必备的。
4.4程序运行整个程序包括实时域和非实时域,必须要分别编译成可执行文件。实时域部分我们通过编写makefile文件,然后make编译成模块文件cncmodule.o,非实时域部分可以通过Qt专用的qmake工具编译成可执行文件cncapp.运行整个程序时,首先要加载实时模块,通过命令insmod cncmodule.o,然后执行文件cncapp;程序执行完后,需要卸载实时模块,通过命5结束语实时性操作系统RT-Linux以其优异的实时性和稳定性,以及源代码公开等特点,在实时控制领域受到了越来越多的重视,并取得了定的成绩。本文针对般雕刻机的弊端,提出了个基于RT-Linux来构建雕刻机数控系统的方法,而且通过一个实例说明其编程方法,更重要的是系统采用模块化设计,能具备很好的可扩展性。在以后的开发中若利用Linux优秀的网络处理功能以及SMP功能,会有更加好的效果。