控制软件是为完成特定CNC(或MNC)系统各项功能所编制的专用软件,又称为系统软件(或系统程序)。由于CNC(或MNC)系统的功能设置与控制方案各不相同,各种系统软件在结构和规模上差别很大。系统程序的设计与各项功能的实现及其将来的扩展有最直接的关系,是整个CNC(或MNC)系统研制工作中关键性的和工作量最大的部分。
前面曾提到,系统软件一般由输进、译码、数据处理(预计算)、插补运算、速度控制、输出控制、治理程序及诊断程序等部分构成。下面分别加以介绍。
1、输进
CNC系统中一般通过纸带阅读机、磁带机、磁盘及键盘输进零件程序,且其输进大都采用中断方式。在系统程序中有相应的中断服务程序,如纸带阅读机中断服务程序及键盘中断服务程序等。当纸带阅读机读进一个字符至接口中时,就向主机发出中断,由中断服务程序将该字符送进内存。同样,每按一个键则表示向主机申请一次中断,调出一次键盘服务程序,对相应的键盘命令进行处理。
从阅读机及键盘输进的零件程序,一般是经过缓冲器以后,才进进零件程序存储器的。零件程序存储器的规模由系统设计员确定。一般有几K字节,可以存放很多零件程序。例如7360系统的零件程序存储器为5K,可存放20多个零件程序。
键盘中断服务程序负责将键盘上打进的字符存进MDI缓冲器,按一下键就是向主机申请一次中断。
2、译码
由前面的讨论可知,经过输进系统的工作,已将数据段送进零件程序存储器。下一步就是由译码程序将输进的零件程序数据段翻译本钱系统能识别的语言。一个数据段从输进到传送至插补工作寄存器需经过以下几个环节,
从原理和本质上说,软件译码与硬件译码相同。对于8单位的纸带程序,一个字符占8位。在16位字长的缓冲器中,一个字可存放两个字符。数据段长的则占的字数多。译码程序按次序将一个个字符和相应的数字进行比较,若相等了,则说明已输进了该字符。它就似乎在硬件译码线路中,一个代码输进时只打开相应的某一个与门一样。所不同的是译码程序是串行工作的,即一个一个地比较,一直到相等时为止。而硬件译码线路则是并行工作的,因而速度较快。以ISO码为例,M为(01,001,101)2,即M为八进制的(115)8,S为(123)8,T为(124)8,F为(106)8,……,因此,在判定数据段中是否已编进M,S,T或F字时,就可以将输进的字符和这些八进制数相比较,若相等了,则说明相应的字符已输进,立即设立相应的标志。
某一个字符输进以后的处理过程包括:
(1) 建立格式标志。假如是位格式,则每个字符所占的格式字的位数不同。
(2) 根据输进字符的不同,确定相应的存放数值的地址。例如,M码的值存放在1000H,S码的值存放在1002H,……;有的系统则对于各专用地址码(如N,X,Y,G,M,F等)在存放区域中都有一个位移量,该区域的首址加上地址码所对应的位移量,就可得到该地址码所存放的区域。
(3) 确定调用“数码转换程序”的次数。一个代码后总有数字相接,例如M02,S11,X1000000,……。M码的值最多为2位,是码最多为2位(或3位),X码的值最多为7位等。各个系统不尽相同。但对某一个具体系统而言,有一个规定值。假如某一个代码,它的值得最多为2位,那么只需调用数码转换程序两次。所谓数码转换,即把输进的字符(如ASCII码)转换成二进制码在内存中存放。
将不同字符的处理器程序合并起来需要一张信息表。该表中没一个字符均有相应的一栏。栏中内容包括地址偏移量、在格式标志字中的位数及调用数码转换程序的次数。经过一次的算术和逻辑运算即可以完成译码工作。在进行译码的同时,系统要对零件程序作语法检查,如输进的数字个数是否大于答应值,不答应带负号的地址码是否带了负号等。
译码的结果存放在规定的存储区内,存放译码结果的地方叫做译码结果存储器。译码结果存储器以规定的次序存放各代码的值(二进制),且包括一个程序格式标志单元,在该格式标志单元中某一位为1,即表示指定的代码(例如F、S、M……)已经被编进。为了使用方便,有时对G码、M码的每一个值或几个值单独建立标志字。例如,对关于插补方式的G00,G01,G02,G03建立一个标志字,该标志字为0时代表已编进了G00,为1时代表婊进了G01……。
3、预计算
为了减轻插补工作的负担,进步系统的实时处理能力,经常在插补运算前先进行数据的预处理,例如,确定圆弧平面、刀具半径补偿的计算等。当采用数字积分法时,可预先进行左移规格化的处理和积分次数的计算等,这样,可把最直接、最方便形式的数据提供给插补运算。
数据预处理即预计算,通常包括刀具长度补偿、刀具半径补偿计算、象限及进给方向判定、进给速度换算和机床辅助功能判定等。在第二章中已对刀具半径补偿计算的方法作了介绍。下面仅叙述速度计算及控制。
进给速度的控制方法与系统采用的插补算法有关,也因不同的伺服系统而有所不同。在开环系统中,经常采用基准脉冲插补法,其坐标轴的运动速度控制是通过控制插补运算的频率,进而控制向步进电机输出脉冲的频率来实现的,速度计算的方法是根据编程F值来确定这个频率值。通常有程序延时法和中断法两种。
(1) 程序延时法。程序延时法又称为程序计时法。这种方法先根据系统要求的进给频率,计算出两次插补运算之间的时间间隔,用CPU执行延时子程序的方法控制两次插补之间的时间。改变延时子程序的循环次数,即可改变进给速度。
(2) 中断方法。中断方法或称为时钟中断法,是指每隔规定的时间向CPU发中断请求,在中断服务程序中进行一次插补运算并发出一个进给脉冲。因此,改变中断请求信号的频率,就即是改变了进给速度。中断请求信号可通过F指令设定的脉冲信号产生,也可通过可编程计数器/定时器产生。如采用Z80CTC作定时器,由程序设置时间常数,每定时到,就向CPU发中断请求信号,改变时间常数Tc就可以改变中断请求脉冲信号的频率。所以,进给速度计算与控制的关键就是如何给定CTC的时间常数Tc。
在半闭环和闭环系统中,则是采用时间分割的思想,根据编程的进给速度F值将轮廓曲线分割为采样周期,即迭代周期的进给量——轮廓步长的方法。速度计算的任务是:当直线插补时,计算出各坐标轴的采样周期的步长;当插补圆弧时,为插补程序计算好步长分配系数(有时也称之为角步距)。另外,在进给速度控制中,一般也都有一个升速、恒速(匀速)和降速的过程,以适应伺服系统的工作状态,保证工作的稳定性。此内容将在第五章中具体介绍。