逐点比较法的实现
逐点比较法

对于位于直线上方的Pi’点,有 Fi=YiXe -XiYe>0
对于位于直线上的Pi点,有 Fi=YiXe -XiYe=0 对于位于直线下方的Pi”点,有 Fi=YiXe -XiYe<0 Y Pi’ A (Xe、Ye) Pi (Xi,Yi) o Pi” X
2. 进给控制 当Fi>0时,向+X方向进给一步,使动点接近直线OA; 当Fi<0时,向+Y方向进给一步,使动点接近直线OA; 当Fi=0时,向任意方向进给一步,但通常归于Fi>0 处理;
逐点比较法第一象限的顺圆弧插补算法
当动点Pi(Xi,Yi)位于圆弧上时有 Xi2+Yi2-R2=0
Y B
当Pi点在圆弧外侧时,则OPi大于圆弧半径R,即(Xb,Yb) F<0 Ri 2 2 2 Xi +Yi -R >0 当Pi点在圆弧内侧时,则OPi小于圆弧半径R,即 Xi2+Yi2-R2<0
1 2 3 4 5 6 7 8
F0=0 F1<0 F2<0 F3<0 F4>0 F5<0 F6>0 F7>0
-Y +X +X +X -Y +X -Y -Y
F1 F0 2Y0 1 7
F2 F1 2 X 1 1 6
F3 F2 2 X 2 1 3
F4 F3 2 X 3 1 2
表3-2 圆弧插补过程
步数 起点 偏差判别 坐标进给 偏差计算 坐标计算 终点判别
F0 0
X0=0,Y 0=4 X1=0,Y 1=3 X2=1,Y 2=3 X3=2,Y 3=3 X4=3,Y 4=3 X5=3,Y 5=2 X6=4,Y 6=2 X7=4,Y 7=1 X8=4,Y 8=0
直线逐点比较插补原理的实现

逐点比较插补原理的实现1 数字程序控制基础数字程序控制,就是计算机根据输入的指令和信息,控制生产机械按规定的工作程序、运动轨迹、运动距离和运动速度等规律自动地完成工作的自动控制。
世界上第一台数控机床是1992年由MIT伺服机构实验室开发出来的,主要的目的是为了满足高精度和高效率加工复杂零件的需要一般来说,三维轮廓零件,即使二维轮廓零件的的加工也是很困难的,而数控机床则很容易实现早期的数控(NC)以数字电路技术为基础,现在的数控(CNC)以计算机技术为基础。
数控系统由输入装置、输出装置、控制器、插补器等四部分组成。
随着计算机技术的发展,开环数字程序控制得到了广泛的应用,如各类数控机床、线切割机低速小型数字绘图仪等,它们都是利用开环数字程序控制原理实现控制的设备。
开环数字程序控制的结构如图1.1所示。
图1.1 开环数字程序控制的结构图这种结构没有反馈检测元件,工作台由步进电机驱动。
步进电机接收驱动电路发来的指令作相应的运动,把刀具移动到与指令脉冲相当的位置,至于刀具是否到达了指令脉冲规定的位置,它不作任何检查,因此这种控制的可靠性和精度基本上由步进电机和传动装置来决定。
开环控制结构简单、可靠性高、成本低、易于调整和维护等,应用最为广泛。
2 步进电机控制技术步进电机又叫脉冲电机,它是一种将电脉冲信号转换为角位移的机电式数模转换器。
在开环数字程序控制系统中,输出部分常采用它作为驱动元件。
步进电机接收计算机发来的指令脉冲,控制步进电机作相应的转动,步进电机驱动数控系统的工作台或刀具。
显然,指令脉冲的总数就决定了数控系统的工作台或刀具的总移动量,指令脉冲的频率就决定了移动的速度。
因此,指令脉冲能否被可靠地执行,基本上取决于步进电机的性能。
2.1 步进电机的工作原理步进电机的工作就是步进转动。
在一般的步进电机工作中,电源都是采用单极性的直流电源。
要使步进电机转动,就必须对步进电机定子的各相绕组以适当的时序进行通电。
3.1数控插补原理(2)逐点比较法

开始 初始化 Xe→X,Ye→Y 0→Fi ,N =|Xe|+|Ye|
Y 进给方向:+X
F≥0 N 进给方向: +Y
Fi- Ye → Fi+1
Fi+ Xe → Fi+1
N = N -1
N =0
N
Y 结束
继续
逐点比较法Ⅰ象限直线插补流程图
例题:设欲加工第一象限直线OE,起点为坐标原点,
终点坐标为Xe=4,Ye=3,用逐点比较法插补之,并画出
+Y F6 F5 2Y5 1 4
-X F7 F6 2X6 1 1
8
F7>0
-X
F8 F7 2X7 1 0
坐标计算
X0=4,Y0=0 X1=3,Y1=0 X2=3,Y2=1 X3=3,Y3=2 X4=3,Y4=3 X5=2,Y5=3 X6=2,Y6=4 X7=1,Y7=4
X8=0,Y8=4
Fi 0, 朝 x 增大方向, Fi1 Fi ye Fi 0, 朝 y 增大方向, Fi1 Fi xe
5.2 脉冲增量插补 其它象限插补流程:
3.逐点比较法Ⅰ象限逆圆插补
(1)基本原理
①偏差判别 关键:寻找偏差函数F(x,y)
当动点N(Xi,Yi)位于圆弧上时有下式成立
Y
E(XeYe) Nˊ
X i2 Yi2 Xe2 Ye2 R2
当动点N(Xi,Yi)在圆弧外侧时,有下式成立
X i2 Yi2 Xe2 Ye2 R2
当动点N(Xi,Yi)在圆弧内侧时,有下式成立
O
N(Xi,Yi) R
N〞 S(XSYS)
X
X i2 Yi2 Xe2 Ye2 R2
I象限逆圆与动点之间的关系
逐点比较法

即
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)绘制进给脉冲图(略)。
基于FPGA的逐点比较圆弧插补算法设计

基于FPGA的逐点比较圆弧插补算法设计摘要:随着数字化控制技术的发展,FPGA作为可编程逻辑设备,被广泛应用于了工业控制系统中。
本文通过分析圆弧插补算法的原理和特点,设计了一种基于FPGA的逐点比较圆弧插补算法,并进行了硬件实现。
通过实验验证,该算法可以准确地实现圆弧插补功能,并具有较高的计算速度和运行效率。
关键词:FPGA;圆弧插补;逐点比较算法1.引言在数控系统中,圆弧插补是一种常见的运动控制方式。
圆弧插补可以实现工件在空间中沿着预定的曲线轨迹移动,从而实现复杂的形状加工。
目前,圆弧插补算法主要有计算细分点的数学法和逐点比较法两种。
其中,逐点比较法是一种基于离散点的插值方式,具有较高的计算速度和运行效率。
本文将基于FPGA的逐点比较圆弧插补算法进行设计与实现。
2.圆弧插补算法原理圆弧插补是通过计算圆弧上一系列离散点的坐标,从而实现工件的平滑运动。
在逐点比较法中,圆弧插补算法主要包括以下几个步骤:(1)确定圆弧的起点、终点和中心点,并计算圆弧的半径;(2)根据离散点的间距,计算出圆弧的总点数;(3)计算圆弧上每个离散点的坐标,并保存在一个数据缓存区中;(4)将数据缓存区中的坐标输出。
3.算法设计(1)数据输入模块:接收圆弧的起点、终点和中心点坐标,并计算圆弧的半径;(2)总点数计算模块:根据离散点的间距,计算出圆弧的总点数;(3)坐标计算模块:根据圆弧的起点、终点、中心点和总点数,计算出每个离散点的坐标,并保存在一个数据缓存区中;(4)数据输出模块:将数据缓存区中的坐标输出。
4.硬件实现本文采用Xilinx FPGA作为硬件开发平台,Verilog HDL作为硬件描述语言。
根据设计的算法原理和模块设计,完成了逐点比较圆弧插补算法的硬件实现。
5.实验结果与分析通过对比实验,验证了基于FPGA的逐点比较圆弧插补算法的正确性和有效性。
与传统的数学法相比,该算法具有更高的计算速度和运行效率,适用于高性能的工业控制系统。
(二)逐点比较法圆弧插补

(二)逐点比较法圆弧插补
逐点比较法圆弧插补是数控加工中常用的一种圆弧插补方法,其原理是通过逐点比较给定的圆弧路径与机床实际移动轨迹的差异,不断调整目标点的加工速度和轨迹实现精细的加工。
1.将给定的圆弧路径分割成若干个目标点,通常每隔一定距离取一个目标点。
2.根据目标点之间的距离和已知的转速,计算每个目标点的加工速度。
3.将目标点逐个输入数控系统,根据当前位置和目标点的位置计算运动轨迹和加工速度。
4.在运动过程中不断比较实际轨迹和目标轨迹之间的误差,根据误差大小调整加工速度,保证加工精度。
5.重复步骤3和4,直到完成整个圆弧的加工。
逐点比较法圆弧插补的优点是在加工过程中能够动态地调整加工速度,避免加工误差的累积。
同时,它对系统精度要求不高,能够适应各种数控系统。
不过,逐点比较法圆弧插补的缺点也是比较明显的。
由于每个目标点的加工速度独立计算,导致加工过程中产生了较大的速度变化,容易引起加工表面的纹路和不良的表面质量。
因此,在实际应用中,需要根据加工要求和机床精度选择合适的加工方法,并进行适当的加工优化。
第02章 逐点比较法直线插补原理

xi xi 1
若 Fi,1 则向yYi 轴xe发出(一xi个进1给) y脉e冲,F刀i 具从y该e 点向
+YF方i 向0走一步,到达新加工点,即:
yi1 yi 1
Fi1 ( yi 1)xe xi ye Fi xe
第2章 直线插补原理
由此得出递推公式( ☺重点掌握☺)
① 偏差判别:根据偏差判断应该向哪个坐标方向 进给;
② 坐标进给:根据判别结果,沿相应的坐标方向 进给;
③ 新偏差计算:根据偏差函数,计算进给后的偏 差,作为下次偏差判别的依据;
④ 终点比较:判断是否达到终点,若达到终点则 结束本次插补程序,否则转①继续执行。
第2章 直线插补原理
2.2.3 逐点比较法的特点
逐点比较法的关键是找出容易计算的偏差函数 (直线、圆弧、抛物线、螺旋线等),然后再 比较误差。
逐点比较法运算直观,插补误差不大于一个脉 冲当量。
逐点比较法是我国数控机床中广泛采用的一种 插补方法,它能实现直线、圆弧和非圆二次曲 线的插补,插补精度较高。
第2章 直线插补原理
2.2.3 逐点比较法直线插补原理
——根据给定的信息进行数字计算,在计算过 程中不断向各个坐标发出相互协调的进给脉冲, 使被控机械部件按指定的路线移动。
2.1.3 插补要解决的问题
让单独的坐标分别运动合成理想的轨迹,还是几个坐 标同时进给?
判断往哪一个坐标方向进给,使下一步误差更小? 进给多少?
第2章 直线插补原理
如果同时进给?
偏差函数的递推计算(第一象限为例)
若 Fi 0 ,规定向-X方向走一步:
xi1 xi 1
Fi1
(xi
一种改进型逐点比较圆弧插补算法的FPGA实现

一种改进型逐点比较圆弧插补算法的FPGA实现韩赛飞;施佺;刘炎华;黄新明;孙玲【摘要】逐点比较圆弧插补作为一种常见的插补算法在数控系统中广泛应用.为了进一步提高传统插补算法的速度,通过分析逐点比较法的特点简化了给进判别逻辑,提出一种改进的逐点比较圆弧插补算法实现方案.充分利用Verilog HDL语言特点,通过设计全局变量并使用FPGA丰富的内部逻辑资源实现了算法精度的可调.算法的FPGA硬件验证结果表明该实现方案具有运算速度快、插补精度可调和逻辑资源占用少的优点.%As one of the common interpolation algorithms,the circular interpolation algorithm with point-by-point comparison is widely used in numerical control systems. In order to improve the speed of the traditional interpolation algorithm,the charac-teristics of point-by-point comparison method is analyzed to simplify the feed discrimination logic,and an improved implementa-tion scheme of circular interpolation algorithm with point-by-point comparison is proposed. With the use of feature of Verilog HDL,the global variable is designed and the rich internal logic resources of FPGA are used to realize the precision adjustment of the algorithm. The results of FPGA hardware verification show that the proposed scheme has the advantages of fast computa-tionspeed,adjustable interpolation precision and little logic resource occupation.【期刊名称】《现代电子技术》【年(卷),期】2017(040)019【总页数】4页(P153-155,159)【关键词】圆弧插补;Verilog硬件描述语言;FPGA;逐点比较法【作者】韩赛飞;施佺;刘炎华;黄新明;孙玲【作者单位】南通大学电子信息学院,江苏南通 226019;南通大学电子信息学院,江苏南通 226019;南通大学电子信息学院,江苏南通 226019;南通大学电子信息学院,江苏南通 226019;南通大学电子信息学院,江苏南通 226019【正文语种】中文【中图分类】TN492-34Abstract:As one of the common interpolation algorithms,the circular interpolation algorithm with point⁃by⁃point comparison is widely used in numerical control systems.In order to improve the speed of the traditional interpolation algorithm,the charac⁃teristics of point⁃by⁃point comparison method is analyzed to simplify the feed discrimination logic,and an improved implementa⁃tion scheme of circular interpolation algorithm with point⁃by⁃point comparison is proposed.With the use of feature of Verilog HDL,the global variable is designed and the rich internal logic resources of FPGA are used to realize the precision adjustment of the algorithm.The results of FPGA hardware verification show that the proposed scheme has the advantages of fast computa⁃tion speed,adjustable interpolation precision and little logic resource occupation.Keywords:circular interpolation;Verilog HDL;FPGA;point⁃by⁃point comparison method数控技术是工业制造的基础,数控机床在进行各种工件的轮廓加工时,一般都要用到插补算法[1]。
逐点比较法

else
{
ZF=4;
X=X;
Y=Y-1;
printf("X=%d,Y=%d\n",X,Y);
}
FM=FM+XE;
}
NXY=NXY-1;
}
}
2.5运行结果
3.数字积分直线插补
3.1数字积分法直线插补的基本原理
数字积分法是利用数字积分的方法,计算刀具沿各坐标轴的位移,使得刀具沿着所加工的轮廓曲线运动
利用数字积分原理构成的插补装置称为数字积分器,又称数字微分分析器(Digital Differential Analyzer),简称DDA。数字积分器插补的最大优点在于容易实现多坐标轴的联动插补、能够描述空间直线及平面各种函数曲线等。因此,数字积分法插补在轮廓数控系统中得到广泛的应用。
积分器作直线插补时,不论各段程序的被积函数大小,都必须经过m=2n次累加运算才能到达终点。这样各个坐标溢出脉冲的速度受被积函数的大小影响。被积函数愈大,溢出脉冲速度愈快,因而机床的进给速度也愈快;反之,被积函数愈小,速度愈低,机床的进给速度愈慢。即加工尺寸大,走刀快,加工尺寸小,走刀慢。所以各程序段的进给速度是不一致的,这将影响加工的表面质量,特别是行程短的程序段,生产效率低控制积分器的溢出速度的方法——左移规格化
第四步:终点判别,判断刀具是否到达被加工零件的终点,若到达终点,则结束插补,否则继续插补,如此不断循环以上四个节拍就可加工出所要求的曲线。
2.3直线插补程序流程图
图2直线插补程序流程图
2.4直线插补程序
#include<stdio.h>
main()
{
int X=0,Y=0,XE,YE,XOY,NXY,FM=0,ZF;
逐点比较法插补C语言程序

//该函数在VC++6.0下编译测试通过,可实现直线、圆弧、完整圆的逐点比较法插补;并可将插补函数计算出的数//据点写入xxx.txt文件中//若有任何疑问,欢迎邮件联系,***********************//版权所有,侵权必究。
转载时请注明来自大连理工机械工程学院Deanjiang#include<stdio.h>#include<math.h>#include<stdlib.h>/********************************************************************//* 函数名: InsertPoint *//* 功能:控制机床各轴进给并将进给结果写入文件中*//* 参数:double x, double y 插补点单位:毫米*//* 说明:与机床硬件关联,每产生一个点调用一次*//********************************************************************/void InsertPoint(double xCur,double yCur){extern FILE *fp;char ch=10;printf("xCur=%f,yCur=%f\n",xCur,yCur);fprintf(fp,"%f,%f",xCur,yCur);fputc(ch,fp);}/********************************************************************//* 函数名: Judge_Quadrant *//* 功能:判断参数坐标的所在象限并返回相应象限值*//* 参数:double x mm*//*double y mm*//********************************************************************/unsigned short Judge_Quadrant(double x, double y){unsigned short nDir;if (x>=0){ //象限判断if (y>=0){nDir=1;return 1;}else{nDir=4;return 4;}}else{if (y>=0)return 2;}else{nDir=3;return 3;}}}/********************************************************************/ /* 函数名: PBP_Line */ /* 功能:逐点比较法直线插补*/ /* 参数:double step步长mm*/ /*double XEnd, double YEnd插补终点mm*//********************************************************************/ void PBP_Line(double step, double XEnd, double YEnd){double lDevVal;//偏差值double xCurVal=0,yCurVal=0; //当前点的实际位置long StepMount; //插补总步数long StepCount=0;//插补次数计数器unsigned short nDir;//当前点所在象限nDir=Judge_Quadrant(XEnd,YEnd); //象限判断XEnd=labs(XEnd);YEnd=labs(YEnd);StepMount=(long) (XEnd+YEnd)/step;lDevVal=yCurVal*XEnd-xCurVal*YEnd;while (StepCount<StepMount){//终点判别/////////////////////////////////////////////////////////////if (lDevVal>=0){ //偏差〉=0switch(nDir) {case 1:xCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 2:xCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 3:xCurVal-=step;case 4:xCurVal+=step;InsertPoint(xCurVal,yCurVal);break;}lDevVal-=YEnd;}else{ //偏差<0switch(nDir) {case 1:yCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 2:yCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 3:yCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 4:yCurVal-=step;InsertPoint(xCurVal,yCurVal);break;}lDevVal+=XEnd;}StepCount++;}}/********************************************************************//* 函数名: PBP_Circle *//* 功能:逐点比较法圆弧插补*//* 参数:double step步长mm*//*double XStart,double YStart插补起点mm*//*double XEnd,double YEnd插补终点mm*//*double radius圆弧半径mm*//* bool bIsCW圆弧插补方向0或1*//********************************************************************/void PBP_Circle(double step, double XStart, double YStart, double XEnd,double YEnd, double radius, int bIsCW) {double lDevVal,goallDevVal;//当前误差和与终点的差值double xCurVal=XStart,yCurVal=YStart;//当前坐标unsigned short nDir;//象限goallDevVal=(xCurVal-XEnd)*(xCurVal-XEnd)+(yCurVal-YEnd)*(yCurVal-YEnd); while(goallDevVal>=(step*step)||stepcount==0){if(lDevVal>=0)//误差大于等于零{if(bIsCW==0)//逆圆插补{nDir=Judge_Quadrant(xCurVal,yCurVal);switch(nDir){case 1:xCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 2:yCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 3:xCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 4:yCurVal+=step;InsertPoint(xCurVal,yCurVal);break;}}else//顺圆插补{nDir=Judge_Quadrant(xCurVal,yCurVal);switch(nDir){case 1:yCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 2:xCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 3:yCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 4:xCurVal-=step;else//误差小于零{if(bIsCW==0)//逆圆插补{nDir=Judge_Quadrant(xCurVal,yCurVal);switch(nDir){case 1:yCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 2:xCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 3:yCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 4:xCurVal+=step;InsertPoint(xCurVal,yCurVal);break;}}else//顺圆插补{nDir=Judge_Quadrant(xCurVal,yCurVal);switch(nDir){case 1:xCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 2:yCurVal+=step;InsertPoint(xCurVal,yCurVal);break;case 3:xCurVal-=step;InsertPoint(xCurVal,yCurVal);break;case 4:yCurVal-=step;lDevVal=xCurVal*xCurVal+yCurVal*yCurVal-radius*radius;goallDevVal=(xCurVal-XEnd)*(xCurVal-XEnd)+(yCurVal-YEnd)*(yCurVal-YEnd);stepcount++;}}FILE *fp;//文件指针int main(){double ft=1000.0*10/60/1000;int j,j1,jj;char fn[10];printf("please input filename:\n");//输入要写入数据的文件名,如pbp_circle.txt scanf("%s",fn);if((fp=fopen(fn,"w"))==NULL){printf("can't open file\n");exit(0);}PBP_Circle(1,50,0,50,0,50,1);//输入需要插补的圆弧的起点、终点、步长、方向//PBP_Line(1,50,30);//输入需要插补的直线的终点、步长fclose(fp);return 0;}。
逐点比较法

Y
A(0,4) 4 3
2
1
B(4,0)
O 1 2 34
X
图3-11 圆弧插补实例
18
表3-2 例3-2圆弧插补计算过程
19
四个象限中圆弧插补
第一象限逆圆弧CD的运动趋势是X轴绝对值减少,Y 轴绝对值增大,当动点在圆弧上或圆弧外,即Fi≥0时,X
轴沿负向进给,新动点的偏差函数为: (3-8)
Fi<0时,Y轴沿正向进给,
位移。
22
/10/29
图34动点与直线位置关系1若p1点在直线上方则有xeyxye02若p点在直线上则有xeyxye03若p2点在直线下方则有xeyxye0因此可以构造偏差函数为图34所示第一象限直线oe为给定轨迹其方程为pxy为动点坐标与直线的关系有三种情况f0时表示动点在oe上如点p可向x向进给也可向y向进给可归入f0的情况一同考虑
(1) 当动点P(X,Y)位于圆弧上时有 X 2+Y 2-R 2=0
(2) P点在圆弧外侧时,即 X 2+Y 2-R 2>0
(3) P点在圆弧内侧时,,即 X 2+Y 2-R 2<0 用F表示P点的偏差值,定义圆弧偏差函数判别式为
当动点落在圆弧上时,一般约定将其和F>0一并考虑。 13
a) 顺圆弧
(3)若P2点在直线下方,则有XeY-XYe<0 因此,可以构造偏差函数为
图3-4 动点与直线位置关系
F= XeY-XYe
(3-2)
4
对于第一象限直线,其偏差符号与进给方向的关系为:
(1) F=0时,表示动点在OE上,如点P,可向+X向进给, 也可向+Y向进给,可归入F >0的情况一同考虑。
(2) F >0时,表示动点在OE上方,应向+X向进给。 (3) F <0时,表示动点在OE下方,应向+Y向进给。
逐点比较法1

§2—1逐点比较法逐点比较法是我国数控机床中广泛采用的一种插补方法,它能实现直线、圆弧和非圆二次曲线的插补,插补精度较高。
逐点比较法,顾名思义,就是每走一步都要将加工点的瞬时坐标同规定的图形轨迹相比较,判断其偏差,然后决定下一步的走向,如果加工点走到图形外面去了,那么下一步就要向图形里面走;如果加工点在图形里面,那么下一步就要向图形外面走,以缩小偏差。
这样就能得出一个非常接近规定图形的轨迹,最大偏差不超过一个脉冲当量。
在逐点比较法中,每进给一步都须要进行偏差判别、坐标进给、新偏差计算和终点比较四个节拍。
下面分别介绍逐点比较法直线插补和圆弧插补的原理。
一、逐点比较法直线插补如上所述,偏差计算是逐点比较法关键的一步。
下面以第Ⅰ象限直线为例导出其偏差计算公式。
图2-1 直线插补过程点击进入动画观看逐点比较法直线插补如图2—1所示,假定直线的起点为坐标原点,终点A的坐标为为加工点,若P点正好处在直线上,那么下式成立:若任意点在直线的上方(严格地说,在直线与y轴所成夹角区域内),那么有下述关系成立:亦即:由此可以取偏差判别函数为:由的数值(称为“偏差”)就可以判别出P点与直线的相对位置。
即:当=0时,点正好落在直线上;当>0时,点落在直线的上方;当<0时,点落在直线的下方。
从图2—1看出,对于起点在原点,终点为A()的第Ⅰ象限直线OA来说,当点P 在直线上方(即>0)时,应该向+x方向发一个脉冲,使机床刀具向+x方向前进一步,以接近该直线;当点P在直线下方(即<0)时,应该向+y方向发一个脉冲,使机床刀具向+y方向前进一步,趋向该直线;当点P正好在直线上(即=0)时,既可向+x方向发一脉冲,也可向+y方向发一脉冲。
因此通常将>0和=0归于一类,即≥0。
这样从坐标原点开始,走一步,算一次,判别,再趋向直线,逐点接近直线,步步前进。
当两个方向所走的步数和终点坐标A()值相等时,发出终点到达信号,停止插补。
轮廓插补原理——逐点比较法

第二节 逐点比较法逐点比较法的基本原理是,在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具与被加工零件轮廓之间的相对位置,并根据比较结果决定下一步的进给方向,使刀具沿着坐标轴向减小偏差的方向进给,且只有一个方向的进给。
也就是说,逐点比较法每一步均要比较加工点瞬时坐标与规定零件轮廓之间的距离,依此决定下一步的走向,如果加工点走到轮廓外面去了,则下一步要朝着轮廓内部走;如果加工点处在轮廓的内部, 则下一步要向轮廓外面走,以缩小偏差,周而复始,直至全部结束,从而获得一个非常接近于数控加工程序规定轮廓的刀具中心轨迹。
逐点比较法既可实现直线插补,也可实现圆弧插补。
其特点是运算简单直观,插补过程的最大误差不超过一个脉冲当量,输出脉冲均匀,而且输出脉冲速度变化小,调节方便,但不易实现两坐标以上的联动插补。
因此,在两坐标数控机床中应用较为普遍。
一般来讲,逐点比较法插补过程每一步都要经过如图3-1所示的四个工作节拍:(1)偏差判别 判别刀具当前位置相对于给定轮廓的偏差情况,即通过偏差值符号确定加工点处在理想轮廓的哪一侧,并以此决定刀具进给方向。
(2)坐标进给 根据偏差判别结果,控制相应坐标轴进给一步,使加工点向理想轮廓靠拢,从而减小其间的偏差。
(3)偏差计算 刀具进给一步后,针对新的加工点计算出能反映其偏离理想轮廓的新偏差,为下一步偏差判别提供依据。
(4)终点判别 每进给一步后都要判别刀具是否达到被加工零件轮廓的终点,若到达了则结束插补,否则继续重复上述四个节拍的工作,直至终点为止。
一、逐点比较法I 象限直线插补(一)基本原理设第一象限直线OE ,起点为坐标原点O(0,0),终点为E (X e ,Y e ),另有一个动点为N (X i ,Y i ),如图3-2所示。
其中,各个坐标值均是以脉冲当量为单位的整数,以便于后面的推导与讲解,并且在脉冲增量式插补算法中都是这样约定的。
ee i i X Y X Y = (3-1a ) 即 X e Y i —X i Y e =0 (3-1b ) 当动点N 处于直线OE 的下方N ′处时,直线N O '的斜率小于直线OE 的斜率,从而有ii X Y <e e X Y (3-2a )即 X e Y i —X i Y e <0 (3-2b ) 当动点N 处于直线OE 的上方N ″处时,直线N O ''的斜率大于直线OE 的斜率,从而有ee i i X Y X Y > (3-3a ) 即 X e Y i —X i Y e >0 (3-3b ) 由上述关系可以看出,表达式(X e Y i —X i Y e )的符号就能反映出动点N 相对直线OE 的偏离情况,为此取偏差函数F 为F =X e Y i —X i Y e (3-4)根据上述过程可以概括出如下关系:当F =0时,动点N (X i ,Y i )正好处在直线OE 上;当F >0时,动点N (X i ,Y i )落在直线OE 上方区域;当F <0时,动点N (X i ,Y i )落在直线OE 下方区域。
逐点比较法直线插补原理

偏差判别
F0,0=0 F1,0=-2<0 F1,1=1>0 F2,1=-1<0 F2,2=2>0
坐标进给
+△X +△Y +△X +△Y +△X
偏差计算 F0,0=0 F1,0= F0,0-Ye =-2 F1,1= F1,0+X e =1 F2,1= F1,1-Ye =-1 F2,2= F2,1+X e =2 F3,2= F2,2-Ye =0
4 F3<0 +Y 5 F3>0 +X 6 F5<0 +Y
F4 F3 Xe 2
F5 F6
F4 F5
Ye Xe
1
Y3
7 F6>0 +X
F7 F6 Ye 0 3
2
《数控技术及装
终 点判别
∑=7 ∑=6 ∑=5 ∑=4 ∑=3 ∑=2 ∑=1 ∑=0
E(4,3)
1
O 1 234
X 13
§ 4-1 插 补 原 理 与 程 序 设 计
F≥0
L1 F<0
标值的符号来确定。
➢ 按照以上的插补规律,
可编制出逐点比较法直
F<0
线插补的程序。下面是
编制的演示程序。
L3
O
F≥0 F≥0
x F<0
L4
18
结语
谢谢大家!
一个脉冲当量,输出脉冲均匀,
速度变化小,调节方便。
(2,2) (3,2)
(1,1)
(2,1)
X
(0,0)
(1,0)
7
§ 4-1 插 补 原 理 与 程 序 设 计
1. 逐点比较法直线插补算法
《数控技术及装
逐点比较法直线插补原理的实现

武汉理工大学华夏学院课程设计报告书题目:系名:专业班级:姓名:学号:指导教师:2011 年 6 月 14 日摘要本文主要讨论利用逐点比较法实现第一象限的直线插补。
所谓逐点比较插补,就是刀具或绘图笔每走一步都要和给点轨迹上的坐标值进行比较,看这点在给点轨迹的上方还是下方,从而决定下一步的进给方向。
对于本设计所要求的直线轨迹,如果该点在直线的上方,则控制步进电机向+X方向进给一步,如果该点在直线的下方,那么控制步进电机向+Y 轴方向进给一步。
如此,走一步、看一看,比较一次,决定下一步的走向,以便逼近给定轨迹,即形成逐点比较插补。
插补计算时,每走一步,都要进行以下四个步骤的计算过程,即偏差判别、坐标进给、偏差计算、终点判断。
设计具体算法时,首先根据直线轨迹参数,计算出偏差计算公式及递推公式。
由程序判断出偏差的正负号,从而决定坐标的进给方向,再根据递推公式计算出坐标进给后的偏差,若未到达终点,则返回偏差判别,如此循环。
可以根据起点和终点的坐标位置,计算出总的进给步数Nxy,X或Y的坐标每进给一步,这个值就减一,若Nxy=0,就到达了终点,这就是终点判别的方法。
设计任务及要求设计一个计算机控制步进电机系统,该系统利用PC 机的并口输出控制信号,其信号驱动后控制X 、Y 两个方向的三相步进电机转动,利用逐点比较法插补绘制出各种曲线。
1)设计硬件系统,画出电路原理框图; 2)定义步进电机转动的控制字;3)推导出用逐点比较法插补绘制出下面曲线的算法; 4)编写算法控制程序线; 5)撰写设计说明书。
每人选一个曲线,曲线均为第一象限,屏幕左下角为坐标原点,箭头表示曲线绘制的方向,直线参数为:起点、终点坐标。
圆弧参数为:起点、终点坐标和半径。
直线一: 直线二:直线三 直线四圆弧一 圆弧二X YOXY O X Y OXYOX Y OXY O目录1 设计任务和要求 (1)2 设计步骤 (1)2.1 硬件设计 (1)2.1.1 接口示意图 (1)2.1.2 方案论证 (2)2.1.3 单片机与8255的接口 (3)2.1.4 硬件接线原理图 (3)2.1.5 元件清单 (4)2.2 软件设计 (5)2.2.1 软件设计原理 (5)2.2.2 8255的初始化编程 (6)2.2.3 步进电机走步控制程序 (7)2.2.4 主程序 (8)2.3 运行调试 (9)2.3.1 系统安装调试 (9)2.3.2 结果验证 (9)3 课程设计体会 (10)参考文献 (10)附录一芯片资料 (11)附录二源程序 (12)逐点比较插补原理的实现1 设计任务和要求设计一个微型计算机控制步进电机系统,该系统利用微型机的并口输出控制信号,其信号驱动后控制X 、Y 两个方向的三相步进电机转动,利用逐点比较法插补原理绘制出如下图所示的目标曲线。
逐点比较法(代数运算法、醉步法)图解

逐点比较法(代数运算法、醉步法)图解1、逐点比较法直线插补第Ⅰ象限一加工直线,起点坐标原点O,终点坐标为A(xe,ye),则直线方程可表示为,即令Fi,j=xeyj-yexi为偏差判别函数,则有:(1)当Fi,j≥0时,向+X方向进给一个脉冲当量,到达点Pi+1,j,此时xi+1=xi+1,则点Pi+1,j的偏差判别函数Fi+1,j为(2)当Fi,j<0时,向+Y方向进给一个脉冲当量,到达点Pi,j +1,此时yj+1=yj+1,则点Pi,j+1的偏差判别函数Fi,j+1为可见,新加工点的偏差Fi+1,j或Fi,j+1是由前一个加工点的偏差Fi,j和终点的坐标值递推出来的,假如按前两式计算偏差,则计算大为简化。
终点判别三种方法:(1)判别插补或进给的总步数:N=Xe+Ye;(2)分别判别各坐标轴的进给步数;(3)仅推断进给步数较多的坐标轴的进给步数。
总结:第一拍判别其次拍判别第三拍判别第四拍比较Fij≥0+ΔxFi+1,j= Fi,j-yeEi+j=E终-1Fij0+ΔyFi,j+1= Fi,j+xe第Ⅰ象限直线插补流程图:例5-1 设加工第一象限直线,起点为坐标原点O(0,0),终点A (6,4),用逐点比较法对其进行插补,并画出插补轨迹。
终点判别寄存器E=6+4=10,每进给一步减1,E=0时停止插补。
步数偏差判别坐标进给偏差计算终点判别起点F0,0=0E=101F0,0=0+XF1,0=F0,0-ye=0-4=-4 E=10-1=92F1,0<0+YF1,1= F1,0+xe=-4+6=2 E=9-1=83F1,1>0+XF2,1= F1,1-ye=2-4=-2 E=8-1=74F2,1<0+YF2,2= F2,1+xe=-2+6=4 E=7-1=65F2,2>0+XF3,2= F2,2-ye=4-4=0 E=6-1=56F3,2=0+XF4,2= F3,2-ye=0-4=-4 E=5-1=47F4,2<0+YF4,3= F4,2+xe=-4+6=2 E=4-1=38F4,3>0+XF5,3= F4,3-ye=2-4=-2 E=3-1=29F5,3<0+YF5,4= F5,3+xe=-2+6=4E=2-1=110F5,4>0+XF6,4= F5,4-ye=4-4=0E=1-1=02、其他象限直线插补的方法:1)分别处理法分别建立其他三个象限偏差函数计算公式。
§1.4 逐点比较法——直线插补

电子教案教学程序教学内容及教学双边活动与教学方法导入新课讲授探究总结在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具与被加工零件轮廓之间的相对位置,并根据比较结果决定下一步的进给方向,使刀具向减小误差的方向进给。
其算法最大偏差不会超过一个脉冲当量δ。
§1.4 逐点比较法——直线插补一、概述初称区域判别法,又称代数运算法或醉步式近似法。
这种方法应用广泛,能实现平面直线、圆弧、二次曲线插补,精度高。
每进给一步需要四个节拍:(1)偏差判别:判别加工点对规定图形的偏离位置,决定拖板进给的走向。
(2)坐标进给:控制某个坐标工作台进给一步,向规定的图形靠拢,缩小偏差。
(3)偏差计算:计算新的加工点对规定图形的偏差,作为下一步判别的依据。
(4)终点判断:判断是否到达终点。
若到达则停止插补,若没,再回到第一节拍。
介绍讲授图示分析讲授法理解记忆教学程序教学内容及教学双边活动与教学方法新课讲授探究总结二、直线插补1.偏差计算公式如图所示第一象限直线OA,起点O为坐标原点,编程时,给出直线的终点坐标A ,直线方程为:●偏差判别:(1)动点m在直线上:(2)动点m在直线上方:(3)动点m在直线下方:偏差判别函数●坐标进给(1)动点m在直线上:,可沿+⊿x轴方向,也可沿+⊿y方向;(2)动点m在直线上方:,沿+⊿x方向;(3)动点m在直线下方:,沿+⊿y方向。
举例板图分析总结e e(,)x ym e m ey x x y-=m e m ey x x y-=m e m ey x x y->m e m ey x x y-<m m e m eF y x x y=-mF<mF≥mF=教学程序教学内容及教学双边活动与教学方法探究总结例题讲授●新偏差计算+⊿x轴方向进给+⊿y轴方向进给●终点比较用Xe +Ye 作为计数器,每走一步对计数器进行减1计算,直到计数器为零为止。
2.终点判别法分别计数法双向计数法单向计数法3.插补运算过程插补计算时,每走一步,都要进行以下4个步骤(又称4个节拍)的算术运算或逻辑判断:方向判定:根据偏差值判定进给方向。
逐点比较法的实现

逐点⽐较法的实现逐点⽐较法是我国数控机床中⼴泛采⽤的⼀种插补⽅法,它能实现直线、圆弧和⾮圆⼆次曲线的插补,插补精度较⾼。
逐点⽐较法,顾名思义,就是每⾛⼀步都要将加⼯点的瞬时坐标同规定的图形轨迹相⽐较,判断其偏差,然后决定下⼀步的⾛向,如果加⼯点⾛到图形外⾯去了,那么下⼀步就要向图形⾥⾯⾛;如果加⼯点在图形⾥⾯,那么下⼀步就要向图形外⾯⾛,以缩⼩偏差。
这样就能得出⼀个⾮常接近规定图形的轨迹,最⼤偏差不超过⼀个脉冲当量。
在逐点⽐较法中,每进给⼀步都须要进⾏偏差判别、坐标进给、新偏差计算和终点⽐较四个节拍。
下⾯分别介绍逐点⽐较法直线插补和圆弧插补的原理。
⼀、逐点⽐较法直线插补如上所述,偏差计算是逐点⽐较法关键的⼀步。
下⾯以第Ⅰ象限直线为例导出其偏差计算公式。
如图2—1所⽰,假定直线的起点为坐标原点,终点A的坐标为为加⼯点,若P点正好处在直线上,那么下式成⽴:若任意点在直线的上⽅(严格地说,在直线与y轴所成夹⾓区域内),那么有下述关系成⽴:亦即: 由此可以取偏差判别函数为:由的数值(称为“偏差”)就可以判别出P点与直线的相对位置。
即:当=0时,点正好落在直线上;当>0时,点落在直线的上⽅;当<0时,点落在直线的下⽅。
从图2—1看出,对于起点在原点,终点为A()的第Ⅰ象限直线OA来说,当点P在直线上⽅(即>0)时,应该向+x⽅向发⼀个脉冲,使机床⼑具向+x⽅向前进⼀步,以接近该直线;当点P在直线下⽅(即<0)时,应该向+y⽅向发⼀个脉冲,使机床⼑具向+y⽅向前进⼀步,趋向该直线;当点P正好在直线上(即=0)时,既可向+x⽅向发⼀脉冲,也可向+y⽅向发⼀脉冲。
因此通常将>0和=0归于⼀类,即≥0。
这样从坐标原点开始,⾛⼀步,算⼀次,判别,再趋向直线,逐点接近直线,步步前进。
当两个⽅向所⾛的步数和终点坐标A()值相等时,发出终点到达信号,停⽌插补。
对于图2—1的加⼯直线OA,我们运⽤上述法则,根据偏差判别函数值,就可以获得如图中折线段那样的近似直线。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
逐点比较法是我国数控机床中广泛采用的一种插补方法,它能实现直线、圆弧和非圆二次曲线的插补,插补精度较高。
逐点比较法,顾名思义,就是每走一步都要将加工点的瞬时坐标同规定的图形轨迹相比较,判断其偏差,然后决定下一步的走向,如果加工点走到图形外面去了,那么下一步就要向图形里面走;如果加工点在图形里面,那么下一步就要向图形外面走,以缩小偏差。
这样就能得出一个非常接近规定图形的轨迹,最大偏差不超过一个脉冲当量。
在逐点比较法中,每进给一步都须要进行偏差判别、坐标进给、新偏差计算和终点比较四个节拍。
下面分别介绍逐点比较法直线插补和圆弧插补的原理。
一、逐点比较法直线插补
如上所述,偏差计算是逐点比较法关键的一步。
下面以第Ⅰ象限直线为例导出其偏差计算公式。
如图2—1所示,假定直线的起点为坐标原点,终点A的坐标为为加工点,若P点正好处在直线上,那
么下式成立:
若任意点在直线的上方(严格地说,在直线与y轴所成夹角区域内),那么有下述关系成立:
亦即: 由此可以取偏差判别函数为:
由的数值(称为“偏差”)就可以判别出P点与直线的相对位置。
即:
当=0时,点正好落在直线上;
当>0时,点落在直线的上方;
当<0时,点落在直线的下方。
从图2—1看出,对于起点在原点,终点为A()的第Ⅰ象限直线OA来说,当点P在直线上方(即>0)时,应该向+x方向发一个脉冲,使机床刀具向+x方向前进一步,以接近该直线;当点P在直线下方(即<0)时,应该向+y方向发一个脉冲,使机床刀具向+y方向前进一步,趋向该直线;当点P正好在直线上(即=0)时,既可向+x方向发一脉冲,也可向+y方向发一脉冲。
因此通常将>0和=0归于一类,即≥0。
这样从坐标原点开始,走一步,算一次,判别,再趋向直线,逐点接近直线,步步前进。
当两个方向所走的步数和终点坐标A()值相等时,发出终点到达信号,停止插补。
对于图2—1的加工直线OA,我们运用上述法则,根据偏差判别函数值,就可以获得如图中折线段那样的
近似直线。
但是按照上述法则进行的运算时,要作乘法和减法运算,这对于计算过程以及具体电路实现起来都不很方便。
对于计算机而言,这样会影响速度;对于专用控制机而言,会增加硬件设备。
因此应简化运算,通常采用的是迭代法,或称递推法,即每走一步后新加工点的加工偏差值用前一点的加工偏差递推出来。
下面
推导该递推式:
已经知道,加工点的坐标为()时的偏差为:
若≥0时,则向x轴发出一进给脉冲,刀具从这点即()点向x方向前进一步,到达新加工点P(),
,因此新加工点P()的偏差值为
即: (2-1)
如果某一时刻,加工点P()的<0,则向y轴发出一个进给脉冲,刀具从这一点向y方向前进一步,新
加工点P()的偏差值为
即:
(2-2)
根据式(2—1)及式(2—2)可以看出,新加工点的偏差完全可以用前一加工点的偏差递推出来。
综上所述,逐点比较法的直线插补过程为每走一步要进行以下4个节拍(步骤),即判别、进给、运算、
比较。
(1)判别。
根据偏差值确定刀具位置是在直线的上方(或线上),还是在直线的下方。
(2)进给。
根据判别的结果,决定控制哪个坐标(x或y)移动一步。
(3)运算。
计算出刀具移动后的新偏差,提供给下一步作判别依据。
根据式(2—1)及式(2—2)来计算新加工点的偏差,使运算大大简化。
但是每一新加工点的偏差是由前一点偏差推算出来的,并且一直递推下去,这样就要知道开始加工时那一点的偏差是多少。
当开始加工时,我们是以人工方式将刀具移到加工起点,即所谓“对刀”,这一点当然没有偏差,所以开始加工点的=0。
(4)比较。
在计算偏差的同时,还要进行一次终点比较,以确定是否到达了终点。
若已经到达,就不再
进行运算,并发出停机或转换新程序段的信号。
下面以实例来验证图2—1。
设欲加工直线OA,其终点坐标为=5*, =3*,则终点判别值可取为(终点判别方法详见下述)。
开始时偏差,加工过程的运算节拍如表2—1所示。
图2-2 逐点比较法直线插补过程
表2-1 逐点比较法直线插补运算举例
序号工作节拍
第1拍:判
别
第2拍:进
给
第3拍:运算第4拍:比较
1 F
00=0 +∆x F
10
= F
00
-y
e
=0-3= -3 E
7
= E
8
-1=7
2 F
10(= -3)<0 +∆y F
11
= F
10
+x
e
= -3+5=2E
6
= E
7
-1=6
3 F
11(= 2)>0 +∆x F
21
= F
11
-y
e
=2-3= -1 E
5
= E
6
-1=5
4 F
21
(= -1) <
0 +∆y F
22
= F
21
+x
e
= -1+5=4 E
4
= E
5
-1=4
5 F
22(= 4)>0 +∆x F
32
= F
22
-y
e
=4-3= 1 E
3
= E
4
-1=3
6 F
32(= 1)>0 +∆x F
42
= F
32
-y
e
=1-3= -2 E
2
= E
3
-1=2
7 F
42(= -2)<0 +∆y F
43
= F
42
+x
e
= -2+5=3 E
1
=E
2
-1=1
8 F
43(= 3)>0 +∆x F
53
= F
43
-y
e
=3-3=0 E
=E
1
-1=0
到达终点
二、逐点比较法圆弧插补
加工一个圆弧,很容易联想到把加工点到圆心的距离和该圆的名义半径相比较来反映加工偏差。
这里,我们以第Ⅰ象限逆圆弧为例导出其偏差计算公式。
设要加工图2—3所示第Ⅰ象限逆时针走向的圆弧,半径为R,以原点为圆心,起点坐标为A( ),对于圆弧上任一加工点的坐标设为P( ),P点与圆心的距离的
平方为,现在讨论这一加工点的加工偏差。
图2-3 圆弧插补过程
点击进入动画观看逐点比较法圆弧插补
若点P( )正好落在圆弧上,则下式成立:
若加工点P( )在圆弧外侧,则>R,即:
若加工点P( )在圆弧内侧,则<R,即:
将上面各式分别改写为下列形式:
(加工点在圆弧上)
(加工点在圆弧外侧)
(加工点在圆弧内侧)
取加工偏差判别式为:
运用上述法则,利用偏差判别式,即获得图2—2折线所示的近似圆弧。
若P( )在圆弧外或圆弧上,即满足≥0的条件时,应向x轴发出一个负向运动的进给脉冲(—Δx),即向圆内走一步。
若P( )在圆弧内侧,即满足<0的条件,则向y轴发出一个正向运动的进给脉冲(+Δy),即向圆弧外走一步。
为了简化偏差判别式的运算,仍用递推法来推算下一步新的加工偏差。
设加工点P( )在圆弧外侧或圆弧上,则加工偏差为
x坐标需向负方向进给一步(—Δx),移到新的加工点P( )位置,此时新加工点的x坐标值为,y坐标值
仍为,新加工点P( )的加工偏差为:
经展开并整理,得:(2-3)
设加工点P( )在圆弧的内侧,则:<0
那么,y坐标需向正方向进给一步(+Δy),移到新加工点P( ),此时新加工点的x坐标值仍为,y坐标值
则改为,新加工点P( )的加工偏差为:
,展开上式,并整理得:
综上所述可知:当≥0时,应走—Δx,新偏差为,动点(加工点)坐标为,;当<0时,应走+Δy,新
偏差为,动点坐标为, 。
下面举例说明插补过程。
设欲加工第Ⅰ象限逆时针走向的圆弧(见图2—4),起点A的坐标是,终点E的
坐标是,终点判别值:
图2-4 圆弧实际轨迹
图2-5 逐点比较法圆弧插补过程
加工过程的运算节拍见表2—3,插补后获得的实际轨迹如图2—3折线所示。
可见,圆弧插补偏差计算的递推公式也是比较简单的。
但计算偏差的同时,还要对动点的坐标进行加1、
减1运算,为下一点的偏差计算做好准备。
和直线插补一样,除偏差计算外,还要进行终点判别计算。
每走一步,都要从两坐标方向总步数中减去1,直至总步数被减为零(发终点到达信号)时为止,才终止计算。
表2-3 逐点比较法圆弧插补运算举例
图2-4 直线插补计算流程图图2-5 圆弧插补计算流程图。