插补模块是整个数控系统中一个极其重要的功能模块之一,插补算法的选择将直接影响到系统的精度、速度和加工能力范围。为此,本章将对各种插补原理进行剖析和实验。
插补算法很多,可以归纳为两大类:脉冲增量插补算法和数据采样插补算法。
脉冲增量插补算法比较简单,比较容易用硬件实现,所以,硬件数控系统较多采用该法,但随着计算机速度的大大提高,也可用软件模拟硬件来实现这类插补。这类插补算法的输出是脉冲形式,并且每次仅产生一个单位的行程增量(即脉冲当量)。脉冲当量一般为0.01mm,较精密的一般取为0.005mm、0.0025mm或0.001mm。显然,脉冲当量愈小,加工精度愈高。
脉冲增量插补算法的种类很多,如:数字脉冲乘法器、逐点比较法(最初称为区域判别法)、数据积分法(又称微分分析器DDA),比较积分法(包括:单步追踪法、目标点跟踪法即伸雄函数发生器SFG等)、矢量判别法、最小偏差法等。
数据采样插补算法,又称为时间分割法,它根据程编进给速度将零件轮廓曲线按插补周期分割为一系列微小直线段,然后,将这些微小直线段对应的位置增量数据进行输出,用以控制伺服系统实现坐标轴的进给。显然,这类插补的输出不是单个脉冲,而是一个数字量。这类插补适用于以交、直流伺服电动机作为执行元件的闭环或半闭环数控系统。
为了获得良好的插补精度和插补速度,数控研究人员又研制开发了下列插补方案:
(1)采用软硬结合的两级插补方案。先由计算机插补软件将加工零件的轮廓段按10-20ms的插补周期分割成若干直线段(称为粗插补过程),然后利用附加的硬件插补器进一步对粗插补送来的直线段进行插补,并输出脉冲(称为精插补过程)。这样,就大大缓和了实时插补和多任务控制之间的矛盾。FANUC公司生产的SYSTEM-5数控系统就采用了本方案。
(2)采用多CPU的分布式处理方案。这类系统中,先将数控系统的全部功能划分为几个子功能模块,并分别分配一个独立的CPU来完成该子功能,然后由系统软件来协调各个CPU之间的工作。如,美国的麦克唐纳.道格拉斯公司的ACTRIONⅢ型数控系统就采用了本方案,它用4台微处理器分别实现输入/输出、轮廓插补和进给速度控制功能、坐标轴伺服功能、数控加工程序编辑和CRT显示。
这是数控技术发展的一个方向,它具有较高的性价比。
(3)采用单台高性能微机方案。现在的微机性能甚至超过了以前的小型机的性能,德国西门子公司的SYSTEM-7系统和810系统就采用了本方案。本方案正在蓬勃发展之中。
限于篇幅,我们从前面所列插补方法中选择几种加以讨论并实验。
第一节 逐点比较法插补原理实验
一、实验目的
1.掌握逐点比较法直线与圆弧插补的基本原理
2.掌握逐点比较法直线插补与圆弧插补的程序编制方法
3.加深对逐点比较法插补的理解
二、实验原理
逐点比较法的基本原理是,在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具与被加工零件轮廓之间的相对位置,并根据比较结果决定下一步的进给方向,使刀具向减小偏差的方向进给(始终只有一个方向)。
一般地,逐点比较法插补过程有四个处理节拍,如图4-1:
(1)偏差判别。判别刀具当前位置相对于给定轮廓的偏差状况;
(2)坐标进给。根据偏差状况,控制相应坐标轴进给一步,使加工点向被加工轮廓靠拢;
(3)重新计算偏差。刀具进给一步后,坐标点位置发生了变化,应按偏差计算公式计算新位置的偏差值;
(4)终点判别。若已经插补到终点,则返回监控,否则重复以上过程。
图4-1 处理节拍 图4-2 第一象限直线插补规律
1.直线插补
图4-2为第一象限直线,其终点坐标为(Xe,Ye),现分析其插补规律。
刀尖点位置不外乎3种情况:轮廓线上方(点A),轮廓线上(B点),轮廓线下方(点C)。显然,在点A处,为使刀尖点向轮廓直线靠拢,应+X向走一步;C点处,应+Y向走一步;至于B点,看来两个方向均可以,但考虑汇编编程时的方便,现规定往+X向走一步。
A(X,Y)点处有:Y/X>Xe/Ye XeY-XYe > 0
B(X,Y)点处有:Y/X=Xe/Ye XeY-XYe = 0
C(X,Y)点处有:Y/X<Xe/Ye XeY-XYe < 0
F=XeY-XYe为原始的偏差计算公式(X,Y为当前插补点动态坐标),F称为偏差,每走一步到达新位置点,就要计算相应这个F值。
显然,F≥0时,须+X向走一步;F<0时,须+Y向走一步。为方便汇编编程和提高计算速度,现对偏差F的计算公式加以简化:
插补点位于A、B点时,走完下一步(+X):动态坐标变为(X=X+1,Y=Y),新偏差变为F=XeY-(X+1)Ye=XeY-XYe-Ye=F-Ye。这个公式比F=XeY-XYe计算要方便。
图4-3 逐点比较法第一象限直线插补软件框图
插补点位于C点时,走完下一步(+Y):动态坐标变为(X=X,Y=Y+1),新偏差变为F=Xe(Y+1)-XYe=XeY-XYe+Xe=F+Xe。
因此,
走完+X后:偏差计算公式为F=F-Ye;
走完+Y后:偏差计算公式为F=F+Xe。
图4-3为逐点比较法第一象限直线插补软件框图。
根据该插补软件框图,可编制逐点比较法第一象限直线插补汇编语言源程序(本程序指令系统采用MCS8031,仅供参考):
LP:MOV SP,#60H 定义堆栈指针
MOV 4AH,#00H 偏差单元清零
MOV 49H,#00H
MOV 48H,#01H 初始化XY电动机
MOV 47H,#02H
MOV A,4EH 计算终点判别,Xe+Ye之低位
ADD A,4CH
MOV 50H,A
MOV A,4DH Xe+Ye之高位
ADDC A,4BH 低位相加,可能产生进位
MOV 4FH,A
MOV A,#03H XY电动机上电
MOV DPTR,#0030H
MOVX @DPTR,A
LP2:ACALL DL0 延时子程序
MOV A,49H 取偏差F的高8位
JB ACC.7,LP4 偏差F< 0,去LP4
ACALL XMP F>=0,调X电动机正转子程序
CLR C 计算新偏差F值,F=F-Ye
MOV A,4AH
SUBB A,4CH 可向高位字节借位
MOV 4AH,A
MOV A,49H
SUBB A,4BH
MOV 49H,A
LP3:CLR C 终判值减1
MOV A,50H
SUBB A,#01H 可向高位字节借位
MOV 50H,A
MOV A,4FH
SUBB A,#00H 考虑低位字节借位
MOV 4FH,A 终判值判零
ORL A,50H
JNZ LP2 终判值不为零,去LP2,否则插补结束
LJMP 0000H
LP4:ACALL YMP 调Y电动机正转子程序
MOV A,4AH计算新偏差F值,F=F+Xe
ADD A,4EH
MOV 4AH,A
MOV A,49H
ADDC A,4DH
MOV 49H,A
SJMP LP3
XMP:MOV A,48H 取X电动机当前状态字
CLR C 移位法
RRC A
RRC A
RRC A
XMP2:CPL A
ANL A,#49H 屏蔽无关位
MOV 48H,A 保存X电动机状态字,作为下次转动的基准
ORL A,47H 保存Y电动机原状态不变
XMP4:MOV DPTR,#0030H
MOVX @DPTR,A
RET
XMM:MOV A,48H
CLR
RLC A
RLC A
RLC A
SJMP XMP2
YMP:MOV A,47H
CLR C
RRC A
RRC A
RRC A
YMP2:CPL A
ANL A,#92H
MOV 47H,A
ORL A,48H
SJMP XMP4
YMM:MOV A,47H
CLR C
RLC A
RLC A
RLC A
SJMP YMP2
说明:1)黑体字模块为软件环形分配器;
2)各变量地址分配如下:4FH50H-终判值,4DH4EH-Xe,4BH4CH-Ye,49H4AH-偏差值F,47H-Y电动机状态字,48H-X电动机状态字;以大地址格式(最低字节地址单元存放最高位数据)存放各种数据;
3)口地址0030H与XY三相步进电动机相线关系如下:
1.1. 圆弧插补
图4-4为第一象限逆圆,现分析其插补规律。
刀尖点位置不外乎3种情况:轮廓线外面(点A),轮廓线上(B点),轮廓线里面(点C)。显然,在点A处,为使刀尖点向轮廓圆弧靠拢,应-X向走一步;C点处,应+Y向走一步;至于B点,看来两个方向均可以,但考虑汇编编程时的方便,现规定往-X向走一步。
A(X,Y)点处有:X2+Y2>R2 X2+Y2-R2>0
B(X,Y)点处有:X2+Y2=R2 X2+Y2-R2=0
C(X,Y)点处有:X2+Y2<R2 X2+Y2-R2<0
原始的偏差计算公式为:F=X2+Y2-R2(X,Y为当前插补点动态坐标)。
图4-4 第一象限逆圆插补规律 图4-5 逐点比较法第一象限逆圆插补软件框图
显然,F<0时,须+Y向走一步;F≥0时,须-X向走一步。为方便汇编编程和提高计算速度,对偏差F的计算公式加以简化:
插补点位于A、B点时,走完下一步(-X):动态坐标变为(X=X-1,Y=Y),新偏差变为F=(X-1)2+Y2-R2=F-2X+1。
它比公式F=X2+Y2-R2计算要方便很多。
插补点位于C点时,走完下一步(+Y):动态坐标变为(X=X,Y=Y+1),新偏差变为F=X2+(Y+1)2-R2=F+2Y+1。
因此,
走完-X后:偏差计算公式为F=F-2X+1,动态坐标修正为X=X-1;
走完+Y后:偏差计算公式为F=F+2Y+1,动态坐标修正为Y=Y+1。
图4-5为逐点比较法第一象限逆圆插补软件框图。
根据该插补软件框图,编制出逐点比较法第一象限逆圆插补汇编语言源程序(本程序指令系统采用MCS8031,仅供参考):
RP:MOV SP,#60H
MOV 4AH,#00H F单元清零
MOV 49H,#00H
MOV 48H,#01H X电动机初始化
MOV 47H,#02H Y电动机初始化
MOV DPTR,#0030H
MOV A,#03H XY电动机上电
MOVX @DPTR,A
CLR C 计算终判值
MOV A,52H 低位X、Xe相减,得a
SUBB A,4EH
MOV 54H,A 保存结果于终判值单元低位字节
MOV A,51H 高位X、Xe相减,得b
SUBB A,4DH
MOV 53H,A 保存结果于终判值单元高位字节
CLR C 低位Ye、Y相减,得c
MOV A,4CH
SUBB A,50H
MOV 20H,C 暂存Ye、Y低位相减产生的借位位
ADD A,54H 计算d=a+c,d为低位终判值
MOV 54H,A 保存d于终判值单元低位字节
MOV 21H,C 暂存d=a+c产生的进位位
MOV A,4BH
MOV C,20H 恢复Ye、Y低位相减产生的借位位
SUBB A,4FH 高位Ye、Y相减,得e
MOV C,21H 恢复d=a+c产生的进位位
ADDC A,53H 计算f=b+e,f为高位终判值
MOV 53H,A 保存f于终判值单元高位字节
RP2:ACALL DL0 延时子程序
MOV A,49H 取F高位字节
JB ACC.7,RP6 高位=1,F<0,去RP6
ACALL XMM 高位=0,F>0,X反转一步
CLR C 计算新偏差F=F-2X+1
MOV A,4AH 计算g=F-X低位
SUBB A,52H
XCH A,B g存入B寄存器
MOV A,49H 计算h=F-X高位
SUBB A,51H
XCH A,B 低位存A,高位存B。BA内容为F-X
CLR C 计算i=g-X=F-2X低位
SUBB A,52H
XCH A,B B内容为F-2X低位,A内容为F-X高位
SUBB A,51H A内容为F-2X高位
XCH A,B BA内容为F-2X
ADD A,#01H 计算F-2X+1
MOV 4AH,A 4A内容为F-2X+1低位
XCH A,B B内容为F-2X+1低位,A内容为F-2X高位
ADDC A,#00H 考虑F-2X+1的进位
MOV 49H,A 49H的内容为F-2X+1高位
CLR C 计算X=X-1
MOV A,52H 低位
SUBB A,#01H
MOV 52H,A
MOV A,51H 高位
SUBB A,#00H
MOV 51H,A
RP4:CLR C 终判值减1
MOV A,54H
SUBB A,#01H
MOV 54H,A
MOV A,53H
SUBB A,#00H
MOV 53H,A
ORL A,54H
JNZ RP2 插补没结束,转至RP2
LJMP 0000H
RP6:ACALL YMP Y电动机正转
MOV R6,#02H 此处“2”,为“F+2Y+1”的“2”
RP7:MOV A,4AH F+2Y+1
ADD A,50H
MOV 4AH,A
MOV A,49H
ADDC A,4FH
MOV 49H,A
DJNZ R6,RP7
MOV A,4AH
ADD A,#01H
MOV 4AH,A
MOV A,49H
ADDC A,#00H
MOV A,50H
ADD A,#01H
MOV 50H,A
MOV A,4FH
ADDC A,#00H
MOV 4FH,A
AJMP RP4
说明:1)数据存放格式同前;
2)各变量地址分配如下:47H-4EH,存放数据方式同直线,4FH50H-Y,51H52H-X,53H54H-终判值
从逐点比较法的插补原理可知:本法不易实现三轴以上的联动。因此,一般用于数控车床等两轴联动的系统。
为了让没有条件的教学单位也能做实验,此处用VB和C语言改写上述程序,改写后可在计算机屏幕上模拟仿真插补过程。