直线及圆弧插补程序--逐点比较法
实验一 逐点比较法圆弧和直线插补实验

Y B(xe,ye)
M(xm,ym)
Rm R
A(x0,y0)
O 图3 圆弧插补原理图 X
圆弧插补原理参见上图,对于第一象限逆圆,设圆弧的起点为 A(x0,y0),终点为 B(xe,ye), 圆弧半径为 R。加工点为 M(xm,ym),它与圆心的距离为 Rm,则
(1)偏差计算
Fm
=
Rm2
− R2
=
xm2
p102=p102-p104 p101=p101+1 x-0.1 else p102=p102+p103 p101=p101+1 y0.1
;计算新的偏差值(Fi+1=Fi-ya) ;步数计数器加一 ;X方向进分别是(-0.1 -0.5 -1.0) ;偏差判别(若P102小于0表示刀具在直线下方) ;计算新的偏差值(Fi+1=Fi+xa) ;步数计数器加一 ;Y方向进给分别是(0.1 0.5 1.0)
endif
endwhile
close
(3)根据直线插补编成格式,编写所给圆弧插补程序。 各组的圆弧的插补任务是: u 第一组:圆弧半径 50,第二象限顺圆;
第二组:圆弧半径 50,第二象限逆圆; 第三组:圆弧半径 60,第三象限顺圆; 第四组:圆弧半径 60,第三象限逆圆; 第五组:圆弧半径 70,第四象限顺圆; 第六组:圆弧半径 70,第四象限逆圆; open prog7 clear linear inc p101=0 p102=0 p103=0 p104=50 while(p101!>100) if(p102!<0) y0.5 p101=p101+1 p102=p102-2*p104+1 p104=p104-1 else -x0.5 p101=p101+1 p102=p102-2*p103+1 p103=103-1 endif endwhile close
直线及圆弧插补程序--逐点比较法

{if(XOY==1||XOY==2)
{
ZF=3;
strcpy(e,c);
}
else
{ZF=4;strcpy(e,d);}
FM=FM+fabs(NX);
printf(" %d %s FM=%d NXY=%d\n\n",BS-NXY,e, FM,NXY);}}}
图一:插补计算过程
第一象限直线OA,起点为(0,0),终点坐标为A(6,4)
图二:插补计算过程
第二象限直线OA,起点为(0,0),终点坐标为A(-3,2)
图三:插补计算过程
第三象限直线OA,起点为(0,0),终点坐标为A(-2,-3)
图四:插补计算过程
第四象限直线OA,起点为(0,0),终点坐标为A(3,-2)
二.四象限逐点比较法圆弧插补
加工逆圆弧(或顺圆弧)A⌒B,圆弧的圆心在坐标原点,已知起点坐标为(X0,Y0)终点坐标(NX,NY)。
XM=X0;
YM=Y0;
for(NXY= fabs(NX-X0) + fabs(NY-Y0)-1;NXY>=0;NXY--)
{
if(RNS==1||RNS==3||RNS==6||RNS==8)
{
if(FM>=0)
{
if(RNS==1||RNS==8)
{ZF=1;
strcpy(e,a);
}
else
{ZF=2;
此程序是根据《微型计算机控制技术》(第二版)清华大学出版社
第三章数字控制技术——3.2插补原理中的3.2.1逐点比较法的直线插补,3.2.2逐点比较法圆弧插补编写的。其中的变量定义,原理依据均来源于此,如有疑问,请参考书中的讲解。尤其是例子,以下两个程序的第一个运行图均与例题中的一致。
逐点比较法

即
Fi1 Fi X e
6
在插补计算、进给的同时还要进行终点判别。常用终点判 别方法是:
设置一个长度计数器,从直线的起点走到终点,刀具沿
X 轴应走的步数为X e,沿Y 轴走的步数为Ye,计数器中存入 X和Y两坐标进给步数总和∑=∣Xe∣+∣Ye∣,当X 或Y
坐标进给时,计数长度减一,当计数长度减到零时,即∑= 0时,停止插补,到达终点。
终点判别:判断是否到达终点,若到 达x ,结束插补;否则,继续以上四个
步骤(如图3-3所示)。
图3-3 逐点比较法工作循环图
3
2. 直线插补
图3-4所示第一象限直线OE为给定轨迹,其方程为
XeY-XYe=0
(3-1)
P(X,Y)为动点坐标,与直线的关系有三种情况:
(1)若P1点在直线上方,则有XeY-XYe>0 E (2) 若P点在直线上,则有 XeY-XYe=0
2.由偏差方程确定加工动点引起的偏 差符号(若要计算偏差量,则偏差方程系数不能简 化)。
3.下一步插补方向确定原则:向使加 工偏差减小、并趋向轨迹终点的方向插补
.(将偏差等于零的情况并入偏差大于零的情况)。
4.关于插补量:每次插补一个脉冲当 量的位移
12
3. 圆弧插补
在圆弧加工过程中,可用动点到圆心的距离来描述刀具位置与 被加工圆弧之间关系。
b) 逆圆弧
图3-9 第一象限顺、逆圆弧
14
偏差递推简化:对第一象限顺圆,Fi≥0,动点Pi(Xi,Yi)应 向-Y向进给,新的动点坐标为(Xi+1,Yi+1),且Xi+1=Xi,Yi +1=Yi-1,则新点的偏差值为:
15
若Fi<0时,沿+X向前进一步,到达(Xi+1,Yi)点,新点
例题:逐点比较法

-、逐点比较法1、直线L1:起点坐标O (0, 0),终点坐标A (4, 6)(1)分析1)直线L1为第一象限内直线2)插补总步数:M=x e+y e=4+6=103)若偏差任0,则刀具向+A x方向进给一步,偏差f i+1j = f.. - y e4)若偏差f<0,则刀具向+A y方向进给一步,偏差f. .+1= f.. + x e(2)列表计算(3)2、直线L2:起点坐标O (0, 0),终点坐标A (-6, 3)(1)分析1)直线L2为第二象限内直线2)插补总步数:M=l x e l+y e=6+3=93)若偏差任0,则刀具向-A x方向进给一步,偏差f i+1j = f.. - y e4)若偏差f<0,则刀具向+A y方向进给一步,偏差f, .+1= f.. +lx e\ (2)(3)3、直线L3:起点坐标O (0, 0),终点坐标A (-5, -8)(1)分析1)直线L3为第三象限内直线2)插补总步数:M=l x e l+l y e l=5+8=133)若偏差任0,则刀具向-A x方向进给一步,偏差f,+1. = f.. -\y\4)若偏差f<0,则刀具向-A y方向进给一步,偏差f,,+1 = f.. +\x\(2)列表计算(3)绘制进给脉冲图(略)4、直线L4:起点坐标O (0, 0),终点坐标A (7, -4)(1)分析1)直线L4为第四象限内直线2)插补总步数:M=x+\y\=7+4=113)若偏差任0,则刀具向+A x方向进给一步,偏差f i+1j = f.. -\y\4)若偏差f<0,则刀具向-A y方向进给一步,偏差f. .+1= f.. + x e(2)(3)5、圆弧NR1:起点坐标A (4, 0),终点坐标E (0, 4)(1)分析1)圆弧NR1为第一象限逆圆2)插补总步数:M=\(x0-x e)\+\(y0-y e)\=4+4=83)若偏差任0,则刀具向-A x方向进给一步,偏差f,+1 . = f.. ~2x. + 14)若偏差f<0,则刀具向+A y方向进给一步,偏差f, .+1 = f.. + 2y.+ 1 (2)列表计算(3)绘制进给脉冲图(略)6、圆弧NR2:起点坐标A (0, 5),终点坐标E (-5, 0)(1)分析1)圆弧NR2为第二象限逆圆2)插补总步数:M=l(x0-x e)l+l(j0-j e)l=5+5=103)若偏差任0,则刀具向-颂方向进给一步,偏差f.,+1 = f.. - 2y.+ 14)若偏差f<0,则刀具向-A x方向进给一步,偏差f,+1 . = f.. ~2x. + 1 (2)列表计算(3)绘制进给脉冲图(略)7、圆弧NR3:起点坐标A (-6, 0),终点坐标E (0, -6)(1)分析1)圆弧NR3为第三象限逆圆2)插补总步数:M=l(x0-x g)l+l(y0-y g)l=6+6=123)若偏差任0,则刀具向+A x方向进给一步,偏差f i+1j = f.. + 2x. + 14)若偏差f<0,则刀具向-A y方向进给一步,偏差f. .+1 = f.. - 2y. + 1 (2)列表计算(3)8、圆弧NR4:起点坐标A (0, -7),终点坐标E (7, 0)1)圆弧NR4为第四象限逆圆2)插补总步数:M=\(x Q-x e)\+\(y Q-y e)\=7+7=143)若偏差任0,则刀具向+A y方向进给一步,偏差f.,+1 =f.. + 2y.+ 14)若偏差f<0,则刀具向+A x方向进给一步,偏差f i+1j =加+ 2x. + 1(2)(3)9、圆弧SR1:起点坐标A (0, 4),终点坐标E (4, 0)(1)分析1)圆弧SR1为第一象限顺圆2)插补总步数:M=\(x0-x e)\+\(y0-y e)\=4+4=83)若偏差f N0,则刀具向-A y方向进给一步,偏差f, .+1 = f.. ~2y.+ 14)若偏差f<0,则刀具向+A x方向进给一步,偏差f.+1. = f.. + 2x. + 1(2)(3)绘制进给脉冲图(略)10、圆弧SR2:起点坐标A (-5,0),终点坐标E (0,5)(1)分析1)圆弧SR2为第二象限顺圆2)插补总步数:M=\(x0-x e)\+\(y0-y e)\=5+5=103)若偏差f N0,则刀具向+A x方向进给一步,偏差f,+1. = f.. + 2x. + 14)若偏差f<0,则刀具向+A y方向进给一步,偏差f, .+1 = f.. + 2y.+ 1 (2)列表计算(3)绘制进给脉冲图(略)11、圆弧SR3:起点坐标A (0, -6),终点坐标E (-6, 0)(1)分析1)圆弧SR3为第三象限顺圆2)插补总步数:M=l(x0-x e)l+l(y0-y e)l=6+6=123)若偏差任0,则刀具向+颂方向进给一步,偏差f i+1j = f,. + 2y.+ 14)+1= "j - 2x.+ 1 (2)列表计算(3)12、圆弧SR4:起点坐标A (7, 0),终点坐标E (0, -7)(1)分析1)圆弧SR4为第四象限顺圆2)插补总步数:M=l(x0-x e)l+l(y0-y e)l=7+7=143)若偏差任0,则刀具向-A x方向进给一步,偏差f. .+1 = f.j - 2x. + 14)+1.(3二、数值积分法(DDA)1、直线L1:起点坐标O (0, 0),终点坐标A (4, 6)(1)分析1)直线L1为第一象限内直线2)x e=4=100B;y e=6=110B3)取积分累加器容量N=3位4)x被积函数寄存器J vx= x e;y被积函数寄存器J vy= y e5)初始时:x累加器J Rx= 0;y累加器J Ry= 06)当J Rx累加超过3位溢出时,则在x方向分配一进给脉冲+A x7)当J Ry累加超过3位溢出时,则在y方向分配一进给脉冲+颂(2)列表计算:(3)绘制进给脉冲图(略)2、直线L2:起点坐标O(0,0),终点坐标A(-6,3)(1)分析1)直线L2为第二象限内直线2)x e=l-6l=110B;y e=3=011B3)取积分累加器容量N=3位4)x被积函数寄存器J vx= x e;y被积函数寄存器J vy= y e5)初始时:x累加器J Rx= 0;y累加器J Ry= 06)当J Rx累加超过3位溢出时,则在x方向分配一进给脉冲-A x 7)当J Ry累加超过3位溢出时,则在y方向分配一进给脉冲+A y (2)列表计算二进制累加:累加N3):累加(3)绘制进给脉冲图(略)3、直线L3:起点坐标O(0,0),终点坐标A(-5,-8)(1)分析1)直线L3为第三象限内直线2)x e=|-5|=101B;y e=|-8|=1000B3)取积分累加器容量N=4位4)x被积函数寄存器J vx= x e;y被积函数寄存器J vy= y e5)初始时:x累加器J Rx= 0;y累加器J Ry= 06)当J Rx累加超过4位溢出时,则在x方向分配一进给脉冲-A x 7)当J Ry累加超过4位溢出时,则在y方向分配一进给脉冲-A y (2)列表计算二进制累加:(3)绘制进给脉冲图(略)4、直线L4:起点坐标O (0, 0),终点坐标A (7, -4)(1)分析1)直线L4为第四象限内直线2)x e=7=111B;y e=l-4l=100B3)取积分累加器容量N=3位4)x被积函数寄存器J vx= x e;j被积函数寄存器J vy= y e5)初始时:x累加器J Rx= 0;j累加器J Ry= 06)当J Rx累加超过3位溢出时,则在x方向分配一进给脉冲+A x 7)当J Ry累加超过3位溢出时,则在j方向分配一进给脉冲-颂(2)列表计算二进制累加:N3):(3)绘制进给脉冲图(略)5、圆弧NR1:起点坐标A (4, 0),终点坐标E (0, 4)(1)分析1)圆弧NR1为第一象限逆圆2)x0=4=100B;y0=0=000B3)取积分累加器容量N=3位4)初始时:x被积函数寄存器J vx= y0;y被积函数寄存器J vy= x05)初始时:x累加器J Rx= 0;y累加器J Ry= 06)当J Rx累加超过3位溢出时,则在x方向分配一进给脉冲-A x,相应在J vy中对x 坐标的修正为减一7)当J Ry累加超过3位溢出时,则在y方向分配一进给脉冲+A y,相应在J vx中对y 坐标的修正为加一(2)列表计算(3)绘制进给脉冲图(略)7、圆弧NR3:起点坐标A (-6, 0),终点坐标E (0, -6)(1)分析1) 圆弧NR3为第三象限逆圆 2) 扁=I-6I=110B ; y 0=0=000B 3) 取积分累加器容量N=3位4) 初始时:x 被积函数寄存器J vx = y 0; y 被积函数寄存器J vy = x 0 5) 初始时:x 累加器J Rx = 0; y 累加器J Ry = 06) 当J Rx 累加超过3位溢出时,则在x 方向分配一进给脉冲+A x ,相应在J vy 中对x 坐标的修正为减一7) 当J Ry 累加超过3位溢出时,则在y 方向分配一进给脉冲-颂,相应在J vx 中对y坐标的修正为加一(2)列表计算_8_ 9 10 11 12 1314(-44) (-4,4) (-5,3) (-5,3)(-3+4=7 7+4=11 (3)停止累加2+4=6 6+4=10(2) 2+5=7 7+5=12(4) 4+6=10(2) 2+6=8(0)停止累加0 1 0 1 1 1 0(3) 绘制进给脉冲图(略)8、圆弧NR4:起点坐标A (0, -7),终点坐标E (7, 0)(1)分析1) 圆弧NR4为第四象限逆圆 8) x 0=0=000B ; j 0=|-7l=111B 9) 取积分累加器容量N=3位10) 初始时:x 被积函数寄存器J vx = y 0; y 被积函数寄存器J vy = x 0 11) 初始时:x 累加器J Rx = 0; y 累加器J Ry = 012) 当J Rx 累加超过3位溢出时,则在x 方向分配一进给脉冲+A x ,相应在J vy 中对 x 坐标的修正为加一2) 当J Ry 累加超过3位溢出时,则在y 方向分配一进给脉冲+A y ,相应在J vx 中对y 坐标的修正为减一(2)列表计算10 11 12 13 14 15(-4,-6) (-3,-6) (-2,-6) (-1,-7+6=13(5) 5+6=11(3) 3+6=9 (1) 1+6=7 7+6=13 (5)停止累加1 1 1 0 1 0停止累加(3)绘制进给脉冲图(略)9、圆弧SR1:起点坐标A (0, 4),终点坐标E (4, 0)(1)分析1) 圆弧SR1为第一象限顺圆 2) x 0=0=000B ; j 0=4=100B 3) 取积分累加器容量N=3位4) 初始时:x 被积函数寄存器J vx = y 0; y 被积函数寄存器J vy = x 0 5) 初始时:x 累加器J Rx = 0; y 累加器J Ry = 06) 当J Rx 累加超过3位溢出时,则在x 方向分配一进给脉冲+A x ,相应在J vy 中对x坐标的修正为加一7) 当J Ry 累加超过3位溢出时,则在y 方向分配一进给脉冲-颂,相应在J vx 中对y坐标的修正为减一(2)列表计算11 12 13 1415(7, -4) (7, - 3) (7, - 2)-6+5=11⑶3+7=10(2) 2+7=9(1) 1+7=8(0) 0+7=7 7+7=14(6)停止累加1 1 0 1 0(3)绘制进给脉冲图(略)10、圆弧SR2:起点坐标A (-5, 0),终点坐标E (0, 5)(1)分析1)圆弧SR2为第二象限顺圆 2) x 0=l-5l=101B ; j 0=0=000B 3) 取积分累加器容量N=3位4) 初始时:x 被积函数寄存器J vx = y 0; y 被积函数寄存器J vy = x 0 5) 初始时:x 累加器J Rx = 0; y 累加器J Ry = 06) 当J Rx 累加超过3位溢出时,则在x 方向分配一进给脉冲+A x ,相应在J vy 中对x 坐标的修正为减一7) 当J Ry 累加超过3位溢出时,则在y 方向分配一进给脉冲+A y ,相应在J vx 中对y 坐标的修正为加一(2)列表计算12 13 1415(4,2)g (41) (4,1) (4,0)3+4=7 7+4=11(3) 3+4=7 7+4=11(3)停止累加1 0 1 0(3)绘制进给脉冲图(略)11、圆弧SR3:起点坐标A (0, -6),终点坐标E (-6, 0)(1)分析1)圆弧SR3为第三象限顺圆 2) x 0=0=000B ; y 0=l-6l=110B 3) 取积分累加器容量N=3位4) 初始时:x 被积函数寄存器J vx = y 0; y 被积函数寄存器J vy = x 0 5) 初始时:x 累加器J Rx = 0; y 累加器J Ry = 06) 当J Rx 累加超过3位溢出时,则在x 方向分配一进给脉冲-A x ,相应在J vy 中对x 坐标的修正为加一7) 当J Ry 累加超过3位溢出时,则在y 方向分配一进给脉冲+A y ,相应在J vx 中对y 坐标的修正为减一(2)列表计算141514(-6,-1)15(-6,0)停止累加0(3)绘制进给脉冲图(略)12、圆弧SR4:起点坐标A (7, 0),终点坐标E (0, -7)(1)分析1)圆弧SR4为第四象限顺圆2)x0=7=111B;j0=0=000B3)取积分累加器容量N=3位4)初始时:x被积函数寄存器J vx= y0;y被积函数寄存器J vy= x05)初始时:x累加器J Rx= 0;y累加器J Ry= 06)当J Rx累加超过3位溢出时,则在x方向分配一进给脉冲-A x,相应在J vy中对x 坐标的修正为减一7)当J Ry累加超过3位溢出时,则在y方向分配一进给脉冲-A y,相应在J vx中对y 坐标的修正为加一(2)列表计算(3)绘制进给脉冲图(略)。
数控机床逐点比较法圆弧插补

第一象限逆圆弧为例,讨论圆弧的插补方法。
如图8-4 所示,设要加工圆弧为第一象限逆圆弧AB ,原点为圆心O ,起点为A (xo ,y 0),终点为B (x e ,y e )半径R ,瞬时加工点为P (x i ,y i ),点P 到圆心距离为Rp<0+△y>0-△x <0+△x <0+△y>0-△x<0-△y <0-△y>0+△x yx图8-2 第一象限直线插补轨迹图 图 8-3第一象限直线插补程序框图图12345X123YF>0p(xi,yi)A(Xi,Yi)F<0开始初始化Xe ,Y e ,JF≥0?+x 走一步F←F -Y e F←F -X e-y 走一步YNJ ←J-1J =0?Y结束若点P 在圆弧内则,则有x i2+y j2=R2p<R2即x i2+y j2-R2 < 0显然,若令F i,j= x i2+y j2-R2(8-4)图8-4 逆圆弧插补则有:(1)F i,j= F i,j=0, 则点P在圆弧上(2)F i,j >0则点P在圆弧外则(3)F i,j<0则点P在圆弧不则常将8-4称为圆弧插补偏差判别式。
当F i,j≥时,为逼近圆弧,应向-x方向进给一步;当F i,j<0时,应向+y 方向走一步。
这样就可以获得逼近圆弧的折线图。
与直线插补偏差计算相似,圆弧插补的偏差的计算也采用递推的方法以简化计算。
若加工点P(x i,y i)在圆弧外或者圆弧上,则有:F i,j=x i2+y j2-R2≥0 为逼近该圆沿-x方向进给一步,移动到新加工点P(x i=1,y i),此时新加工点的坐标值为x i+1=x i-1,y i=y i新加工点的偏差为:F i+1,j=(x i-1)2+y i2-R2=x i2-2x i+1+ y i2-R2= x i2+ y i2-R2+1即F i+1,j= F i,j-2x i+1 (8-5)若加工P(x i,y i)在圆弧内,则有F i,j=x i2+y j2-R2<0若逼近该圆需沿+y方向进给一步,移到新加工点P(x i,y i),此时新加工点的坐标值图8-5 第一象限圆弧插补程序框图为新加工点的偏为:F i,j+1=x i2+(y i+1)2-R2=x i2+ y i2+1 -R2= x i2+ y i2-R2+1+2y iF i,j+1= F i,j-2y i+1 (8-6)从(8-5)和式(8-6)两式可知,递推偏差计算仅为加法(或者减法)运算,大大降低了计算的复杂程度。
(二)逐点比较法圆弧插补PPT课件

同理,对于第一象限顺圆加工时,即B→A,当Fi≥0时, 应向-Y方向进给一步,当Fi<0时,应向+X方向进给 一步。
Y
B(Xe,Ye)
Pi(Xi,Yi)
A(Xo,Yo)
O
X
6
当Fi≥0时,向-Y方向进给一步,动点由Pi(Xi,Yi) 移动到 Pi+1(Xi,Yi +1),则新动点的坐标为 Yi+1=Yi -1
偏差计算
终点判别
0
F0=0,Xo=5,Yo=0 ∑=10
1 F0=0 -X F1=F0-2Xo+1= -9,X1=4,Y1=0∑=9
2 F1=-9 +Y F2=F1+2Y1+1= -8,X2=4,Y2=∑1=8
3 F2=-8 +Y F3=F2+2Y2+1= -5,X3=4,Y3=∑2=7
4 F3= -5 +Y F4=F3 +2Y3+1 =0, X4=4,Y4=3∑=6
2 F1=-5 +Y F2=F1+2Y1+1= -4,X2=2,Y2=∑1=4
3 F2=-4 +Y 4 F3= -1 +Y 5 F4=4 -X
F3=F2+2Y2+1= -1,X3=2,Y3=∑2=3 F4=F3 +2Y3+1 =4, X4=2,Y4=3∑=2 F5=F4-2X4+1 =1, X5=1,Y5=3∑=1
Y
Fi<0
Fi≥0
Fi≥0 Fi<0
Fi<0
O Fi≥0
X
Fi<0 Fi≥0
17
2、圆弧插补的象限处理
前面的圆弧插补(顺圆、逆圆)只限于第一象限,其他 情况如图所示: Y
数控机床DDA数字积分法插补第一象限直线,逐点比较法插补二三象限顺圆弧

3.2 执行计算
在右侧面板中有参数输入区,方式选择区以及执行按钮等操作。
若输入参数和符合要求则出现错误对话框;“参数有误”
若不选择插补对象为‘直线’或‘圆弧’直接按下‘复位’按钮会出现警示对话框提示“请选择插补对象”
注:在直线插补中,对起始点坐标和终点坐标不作要求,但步长必须不能为0;在圆弧插补中,起始点坐标必须为二三象限的点,且终止点必须在起始点下侧,这事保证圆弧为劣弧的条件之一。步长在任何情况下不能为0 。
4.2 主要算法的实现
4.2.1参数声明
起点坐标(sx,sy);终点坐标(ex,ey);
圆心坐标(cx,cy);步长bc;
4.2.2复位操作程序:
functionfw_Callback(hObject, eventdata, handles)
globalsx sy ex ey cx cy bc m vx1 vy1 rx1 ry1
3.2 执行计算……………………………………………………………5
3.3DDA法直线插补实例………………………………………………6
3.4逐点比较法插补第二三象限逆时针圆弧…………………………7
四、主要算法及源程序
4.1 程序设计概述………………………………………………………8
set(gca,'YTick',[-10:1:10]);
axis([-10 10 -10 10]);
axismanual;
ifs_1==0&&s_2==0
warndlg('请选择插补对象');
else
ifget(handles.zx,'value')
m=str2double(get(handles.m,'String'));
2--插补象限、圆弧走向处理以及逐点比较法合成进给速度

于是,X轴方向和Y轴方向的进给速度为
vx 60 f X
v
y
60
fY
刀具的合成进给速度为
v vx2 vy2 60 f X 2 fY 2
当刀具沿着平行于坐标轴的方向进行切削时,其进给速度最大,该速度 称为脉冲源进给速度。
vMF 60 fMF 60 ( f X fY ) vx vy
② |Y|=|Y|-1
② |X|=|X|-1 ② |Y|=|Y|+ 1
② |X|=|X|+1
Y SR3、NR4
N +Y -Y
Y SR2、NR3
N
+X
-X
Y SR2、NR1
N +Y -Y
Y SR1、NR4
N
+X
-X
∑= ∑-1
∑= 0
N
Y
结束
(三)圆弧过象限 直线只可能处于一个象限中,因此不存在过象限问题。但是圆弧有可能 跨越几个象限,这时需要在两象限的交接处做相应的处理,此即圆弧过象限 问题。 当圆弧过象限时,具有如下特点: ① 在过象限前后,动点坐标的符号会发生改变; ② 在过象限后,圆弧的走向不变。 逆圆弧过象限的顺序为:NR1 → NR2 → NR3 → NR4 → NR1 →• • • 顺圆弧过象限的顺序为:SR1 → SR4 → SR3 → SR2 → SR1 →• • • ③ 过象限圆弧与坐标轴必有交点,当动点处在坐标轴上时必有一个坐 标值为零。此点可以作为过象限的标志。 ④ 终点判别不能简单地直接使用前述的三种方法,否则将丢失一部分 圆弧轮廓。
Y (0,5)
(3,4) (4,3)
X (5,0)
第一象限顺圆弧的插补问题可转换为第一象限逆圆弧的插补问题,转换方 法如下。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
此程序是根据《微型计算机控制技术》(第二版)清华大学出版社
第三章数字控制技术——3.2插补原理中的3.2.1逐点比较法的直线插补,3.2.2逐点比较法圆弧插补编写的。
其中的变量定义,原理依据均来源于此,如有疑问,请参考书中的讲解。
尤其是例子,以下两个程序的第一个运行图均与例题中的一致。
一、四象限直线插补程序
分别加工第一、二、三、四象限直线,起点均为(0,0),终点坐标为(NX,NY),进行插补计算。
程序中(NX,NY)为终点坐标;NXY为总步数;XOY=1,2,3,4,分别为第一、二、三、四象限; ZF=1,2,3,4,分别代表+x,-x,+y,-y走步方向;FM为加工点偏差,初值为0。
源程序:
# include "stdio.h"
# include "string.h"
# include "math.h"
void main()
{ int NX,NY,NXY,BS,XOY,ZF;
int FM=0;
char a[10]="+X",b[10]="-X",c[10]="+Y",d[10]="-Y",e[10];
printf("\n\n请输入NX,NY\n");
scanf("%d %d",&NX,&NY);
{if(NX>0)
if(NY>0)
XOY=1;
else
XOY=4;
else
if(NY>0)
XOY=2;
else
XOY=3;}
printf("终点在第%d象限\n",XOY);
printf("\n 步数坐标进给偏差计算终点判断\n\n");
BS=fabs(NX) + fabs(NY);
for(NXY= fabs(NX) + fabs(NY)-1;NXY>=0;NXY--)
{ if(FM>=0)
{if(XOY==1||XOY==4)
{ ZF=1;
strcpy(e,a);}
else
{ ZF=2;
strcpy(e,b);
}
FM=FM-fabs(NY);
printf(" %d %s FM=%d NXY=%d\n\n",BS-NXY,e,
.
FM,NXY);}
else
{if(XOY==1||XOY==2)
{
ZF=3;
strcpy(e,c);
}
else
{ZF=4; strcpy(e,d);}
FM=FM+fabs(NX);
printf(" %d %s FM=%d NXY=%d\n\n",BS-NXY,e, FM,NXY);}}}
图一:插补计算过程
第一象限直线OA,起点为(0,0),终点坐标为A(6,4)
图二:插补计算过程
第二象限直线OA,起点为(0,0),终点坐标为A(-3,2)
图三:插补计算过程
第三象限直线OA,起点为(0,0),终点坐标为A(-2,-3)
图四:插补计算过程
第四象限直线OA,起点为(0,0),终点坐标为A(3,-2)
二.四象限逐点比较法圆弧插补
加工逆圆弧(或顺圆弧)A⌒B,圆弧的圆心在坐标原点,已知起点坐标为(X0,Y0)终点坐标(NX,NY)。
程序中(X0,Y0)为起点坐标;(NX,NY)为终点坐标;NXY为总步数;RNS=1,2,3,4,5,6,7,8,分别为八种圆弧(SR1,SR2,SR3,SR4,NR1,NR2,NR3,NR4,其中SR 表示逆圆弧,NR表示顺圆弧,)第一至第四象限的顺圆弧和逆圆弧; ZF=1,2,3,4,分别代表+x,-x,+y,-y走步方向;FM为加工点偏差,初值为0。
圆弧插补计算公式和进给方向
偏差圆弧种类进给方向偏差计算坐标计算
源程序:
# include "stdio.h"
# include "string.h"
# include "math.h"
void main()
{ int NX,NY,NXY,BS,RNS,ZF,X0=0,Y0=0,XM,YM;
int FM=0;
char a[10]="+X",b[10]="-X",c[10]="+Y",d[10]="-Y",e[10];
printf("请输入X0,Y0,NX,NY\n");
scanf("%d %d %d %d",&X0,&Y0,&NX,&NY); {
if(X0<NX)
if(Y0>NY)
if(X0>0)
RNS=7;
else
RNS=1;
else
if(X0>0)
RNS=8;
else
RNS=2;
else
if(Y0>NY)
if(X0>0)
RNS=4;
else
RNS=6;
else
if(X0>0)
RNS=5;
else
RNS=3;}
printf("该圆弧为%d\n",RNS);
BS=fabs(NX-X0) + fabs(NY-Y0);
XM=X0;
YM=Y0;
for(NXY= fabs(NX-X0) + fabs(NY-Y0)-1;NXY>=0;NXY--) {
if(RNS==1||RNS==3||RNS==6||RNS==8)
{
if(FM>=0)
{
if(RNS==1||RNS==8)
{ ZF=1;
strcpy(e,a);
}
else
{ ZF=2;
strcpy(e,b);}
FM=FM+2*fabs(XM)+1;
XM=XM+1;
printf(" %d %s FM=%d XM=%d,YM=%d NXY=%d\n\n",BS-NXY,e, FM,XM,YM,NXY);
}
else
{
if(RNS==1||RNS==6)
{
ZF=3;
strcpy(e,c);
}
else
{ZF=4;
strcpy(e,d);
}
FM=FM-2*fabs(YM)+1;
YM=YM-1;
printf(" %d %s FM=%d XM=%d,YM=%d
NXY=%d\n\n",BS-NXY,e, FM,XM,YM,NXY);}}
else
if(FM>=0)
{
if(RNS==2||RNS==7)
{ ZF=1;
strcpy(e,a);
}
else
{ ZF=2;
strcpy(e,b);
}
FM=FM-2*fabs(XM)+1;
XM=XM-1;
printf(" %d %s FM=%d XM=%d,YM=%d NXY=%d\n\n",BS-NXY,e, FM,XM,YM,NXY);}
else
{
if(RNS==2||RNS==5)
{ ZF=3;
strcpy(e,c);}
else
{ ZF=4;
strcpy(e,d);}
FM=FM+2*fabs(YM)+1;
YM=YM+1;
printf(" %d %s FM=%d XM=%d,YM=%d NXY=%d\n\n",BS-NXY,e, FM,XM,YM,NXY);}}}
第一象限逆圆弧A⌒B,圆弧的圆心在坐标原点,已知起点坐标为(0,4)终点坐标(4,0)。
圆弧插补计算过程:。