直线插补数字积分法第三、第四象限汇编

合集下载

第三四象限数字积分法插补计算报告

第三四象限数字积分法插补计算报告

第三四象限直线插补计算1. 引言随着微电子技术,计算机技术的发展,数控机床的性能不断完善,其应用范围也不断增大。

而数控技术作为数控机床的关键技术,越来越得到更多高校的重视。

2.数字积分法直线插补原理设将要加工的直线XOY 平面内第一象限直线OE ,如图.一所示,直线起点在坐标原点,终点为E (Xe ,Ye )。

同样,假设坐标值均为以脉冲当量为单位的整数。

图.一若此时刀具在两坐标轴上的进给速度分量分别是Vx ,Vy ,则刀具在X 轴,Y 轴方向上位移增量分别是△X = Vx △t 式一a△ Y = Vy △t 式一b由图.一 所示的几何关系可得V/OE=Vx/Xe=Vy/Ye=K (常数) 式二将式二中的Vx ,Vy 分别代入式一 可得:△X = KXe △t 式三a△ Y = KYe △t 式三b可见刀具由原点O 走向E 的过程,可以看作式每经过一个单位时间间隔△t ,就分别以增量[KXe],[ KYe]同时在两个坐标轴累加的结果。

也可以这样认为,数字积分法插补实际上就是利用速度分量,进行数字积分来确定刀具在各坐标轴上位置的过程,即XO当取△ti=“1”(一个单位时间间隔)则X = nKXe 式五aY = nKYe 式五b设经过n 次累加后,刀具正好到达终点E(Xe,Ye),则要求式五中常量满足 下式nK=1 式六n 是累加次数必须取整数,所有K 取小数。

为了保证每次分配给坐标轴的进给脉冲不超过一个单位,则△ X=KXe<1 式七a△ Y=KYe<1 式七b上式中Xe ,Ye 的最大允许值受系统中相应寄存器容量的限制。

现假设寄存器 为N 位则容量为2N ,对应存储的最大允许数字量为(2N - 1)将其带入式七得 K<=1/(2N - 1) 式八现不妨取 K =1/2N 式九显然它满足式七,式八的约束条件,再将K 值代入式六可得累加次数为 n =2N 式十如果将n ,K,值代入式五则动点坐标为X = nKXe =Xe 式十一aY = nKYe =Ye 式十一b根据以上分析,在进行直线插补时,先开辟两个被积函数寄存器Jvx ,Jvy 分别存放终点坐标值Xe ,Ye ,还有两个余数寄存器Jrx ,Jry 。

数控机床插补原理

数控机床插补原理
将对应的位置增量数据(如、),再与采样所获得的实际位置反馈值 相比较,求得位置跟踪误差。位置伺服软件就根据当前的位置误差 计算出进给坐标轴的速度给定值,并将其输送给驱动装置,通过电 动机带动丝杠和工作台朝着减少误差的方向运动,以保证整个系统 的加工精度。由于这类算法的插补结果不再是单个脉冲,而是一个 数字量,所以,这类插补算法适用于以直流或交流伺服电动机作为 执行元件的闭环或半闭环数控系统中。
对圆弧,提供起点、终点、顺圆或逆圆、以及圆心相对于起点的位置。为满
足零件几何尺寸精度要求,必须在刀具(或工件)运动过程中实时计算出满足 线形和进给速度要求的若干中间点(在起点和终点之间),这就是数控技术中
插补(Interpolation)的概念。据此可知,插补就是根据给定进给速度和给定
轮廓线形的要求,在轮廓已知点之间,确定一些中间点的方法,这种方法称 为插补方法或插补原理。
Xm+1=Xm+1, Ym+1=Ym
新的偏差为
Fm+1=Ym+1Xe-Xm+1Ye=Fm-Ye
若Fm<0时,为了逼近给定轨迹,应向+Y方向进给一步,走一步后新的坐标值为
Xm+1=Xm, Ym+1=Ym +1
新的偏差为
Fm+1=Fm+Xe
4. 终点判别法
逐点比较法的终点判断有多种方法,下面主要介绍两种:
直到∑为零时,就到了终点。
2.2
不同象限的直线插补计算
上面讨论的为第一象限的直线插补计算方法,其它三个象
限的直线插补计算法,可以用相同的原理获得,表5-1列出了
四个象限的直线插补时的偏差计算公式和进给脉冲方向,计 算时,公式中Xe,Ye均用绝对值。
表1-1 四个象限的直线插补计算

数字积分法(DDA)插补直线参考程序

数字积分法(DDA)插补直线参考程序

数字积分法(DDA)插补直线参考程序Sub 插补X()标志X = 0If 余数X >= Q Then余数X = 余数X Mod Qx动点= x动点+ 1: 标志X = 1 End IfEnd SubSub 插补Y()标志Y = 0If 余数Y >= Q Then余数Y = 余数Y Mod Qy动点= y动点+ 1: 标志Y = 1End IfEnd SubSub 插补Z()标志Z = 0If 余数Z >= Q Then余数Z = 余数Z Mod Qz动点= z动点+ 1: 标志Z = 1 End IfEnd SubSub 插补公共()余数X = 余数X + x终点余数Y = 余数Y + y终点余数Z = 余数Z + z终点插补X插补Y插补Z插补记录= 插补记录+ 1End SubSub 插补()Dim c As Integer插补记录= 0: 余数X = 0: 余数Y = 0: 余数Z = 0: 划轮廓线PSet (z原点, x原点), vbRedSelect Case 象限标志Case 1: '第一象限插补Do Until 插补记录= Q插补公共Line -Step(z步长×标志Z, x步长×标志X), vbRedLoopCase 2: '第二象限插补c = x终点: x终点= z终点: z终点= -cc = x步长: x步长= z步长: z步长= -cDo Until 插补记录= Q插补公共Line -Step(x步长×标志X, z步长×标志Z), vbRed LoopCase 3: '第三象限插补x终点= -x终点: z终点= -z终点x步长= -x步长: z步长= -z步长Do Until 插补记录= Q插补公共Line -Step(z步长×标志Z, x步长×标志X), vbRed LoopCase 4: '第四象限插补c = x终点: x终点= -z终点: z终点= cc = x步长: x步长= -z步长: z步长= cDo Until 插补记录= Q插补公共Line -Step(x步长×标志X, z步长×标志Z), vbRed LoopEnd SelectEnd Sub。

第八讲DDA直线插补

第八讲DDA直线插补

实例: 要加工XY平面内第一象限的直线,直线起点 在坐标原点,终点坐标为 A(8,10),累加器 和寄存器位数为4位。试用数字积分法对该段 直线进行插补。


要加工XY平面内第一象限的直线,直线起点 在坐标原点,终点坐标为 A(10,6),累加器 和寄存器位数为4位。试对该段直线进行DDA 插补。
V X KXe VY KYe V K L
VX
Xe V L
VY Ye V L
X KX e t Y KY e t

X、Y方向的位移
t X 0 KX e dt t Y KY e dt 0
m m X K X e t KX e mt K X e i 1 i 1 m m Y K Y t KY mt K Y e e e i 1 i 1
s Xdt
0
n i1
Xi-1Δt
பைடு நூலகம்
Xi-1
i1
n
函数的积分运算变成了变量的累加运算,如果 δ足够小时,则累加求和运算代替积分运算所 引入的误差可以不超过所允许的误差。
2.DDA 直线插补
X V t X Y VY t L Xe 2 Ye 2
2.4.2数字积分法(DDA)
用数字积分的方法计算刀具沿各坐标轴的位移。 特点: DDA法运算简单,运算速度快,脉冲分配均匀, 易于实现多坐标联动。 缺点: 速度调节不方便,须采用一定的措施来克服,如 果能严格控制速度的变化,可实现无误差插补

1、数字积分原理
函数在[0 ,t ]的定积分,即为函数在该区间的面 积: t
其中,m为累加次数(容量)取为整数, m=0〜2N -1,共2N 次(N为累加器位数)。 令△t =1,mK =1,则K =1/m=1/2N 。

数字积分插补

数字积分插补

ì D x = kxe = k (2 N - 1) < 1 ï ï í ï D y = kye = k (2 N - 1) < 1 ï î
所以
1 k< N 2 - 1
一般取
1 k< N 2
ì ï 2N - 1 ï D x = kxe = <1 ï N ï 2 ï í ï 2N - 1 ï D y = ky = <1 ï e N ï 2 ï î
Y积分器
△X
0 0 0 0 0 0 0 1 0 1 0 1 1 0 1
注 Y终
101 101 100 100 011 010 010 001 001 000 修正Yi 修正Xi 修正Yi 修正Xi 修正Yi 修正Yi 修正Yi 初始
X终
101 101 101 101 101 101 101 100 100 011 011 001 001 001 000
1
011 011
1 1 1
010 001 000
X、Y溢出 y溢出 X,Y溢出
1
011
3) DDA法圆弧插补 DDA法圆弧插补的积分表达式 由 V VX VY
R = Yi = Xi = K
Y B
VX = KYi
VY = KX i
V
Vx
Vy
P A X
令 则
Dt = 1
1 K= N 2
O
R
ì ï 1 m ïX= Yi ï N å ï 2 i= 1 ï í ï 1 m ïY = Xi ï N å ï 2 i= 1 ï î
ì D x = kxeD t ï ï í ï D y = kyeD t ï î
各坐标轴的位移量为 n t ì ï ï x= ï ò0 kxe dt = k å= 1 xeD t ï i ï í n ï ï y = t ky dt = k ï å= 1 yeD t ò0 e ï ï i î

二、数字积分法插补

二、数字积分法插补

例:插补第一象限直线OA,起点为O( 0 , 0 ) ,终点为 A ( 5 , 3 )。取被积函数寄存器分别为JVx, JVy,余数寄存 器分别为JRx 、JRy ,终点计数器为 JE,且都是三位 二进制寄存器。试写出插补计算过程并绘制轨迹。 Y 3 2 1 O 1 2 3 4 5 X A( 5 , 3 )
∆X,∆Y同时溢出 JE=0,插补结束
110 000
加工轨迹如下:
Y 6 5 4 3 2 1 O 1 2
A( 2 , 6 )
X
(三)数字积分圆弧插补 如图所示,设加工半径为R的第一象限逆时针圆弧AB, 坐标原点定在圆心上,A(Xo,Yo)为圆弧起点,B(Xe,Ye) 为圆弧终点,Pi(Xi,Yi)为加工动点。 Y B(Xe,Ye) Pi(Xi,Yi) A(Xo,Yo) O X
插补计算过程如下:
累加 次数 (∆t) X积分器 Y积分器 终点 JVx JRx 溢出 JVy JRy 溢出 计数器 JE ∆X ∆Y
备注
0 1 2 3 4 5 6 7 8
010 000 010 010 010 100 010 110 010 000 1 010 010 010 100 010 110 010 000 1
插补计算过程如下
累加 次数 (∆t) X积分器 Y积分器 终点 JVx JRx 溢出 JVy JRy 溢出 计数器 JE ∆X ∆Y
备注
0 1 2 3 4 5 6 7 8
101 000 101 101 101 010 101 111 101 100 101 001 101 110 101 011
1 1 1 1
O ∆t
t T
若∆t取最小基本单位“1”,则上式可简化为: n-1 S=∑ Yi

数字积分法插补

数字积分法插补

数字积分法插补前面提到过数字积分法插补是脉冲增量插补的一种,它是用数字积分的方法计算刀具沿各坐标轴的移动量,从而使刀具沿着设定的曲线运动。

实现数字积分插补计算的装置称为数字积分器,或数字微分器(Digital Differential Analyzer, DDA),数字积分器可以用软件来实现。

数字积分器具有运算速度快,脉冲分配均匀,可以实现一次、二次曲线的插补和各种函数运算,而且易于实现多坐标联动,但传统的DDA 插补法也有速度调节不方便,插补精度需要采取一定措施才能满足要求的缺点,不过目前CNC 数控系统中多采用软件实现DDA 插补时,可以很容易克服以上缺点,所以DDA 插补是目前使用范围很广的一种插补方法。

它的基本原理可以用图4.1所示的函数积分表示,从微分几何概念来看,从时刻0到时刻t 求函数y=f(t)曲线所包围的面积时,可用积分公式: (4.1)如果将0~t 的时间划分成时间间隔为Δt 的有限区间,当Δt 足够小时,可得近似公式:(4.2)式中y i-1为t=t i-1时f(t)的值,此公式说明:积分可以用数的累加来近似代替,其几何意义就是用一系列小矩形面积之和来近似表示函数f(t)下面的面积,t y d t f S ni i t t ∆==∑⎰=-110)(⎰=t t d t f S 0)(如果在数字运算时,用取Δt 为基本单位“1”,则4.2式可以简化为:∑=-=n i i y S 11(4.3)如果系统的基本单位Δt 设置得足够小,那么就可以满足我们所需要的精度。

一般地,每个坐标方向需要一个被积函数寄存器和一个累加器,它的工作过程可用图4.2表示:图 4.2 一个坐标方向上的积分器示意图Fig 4.2 Sketch of DDA in one coordinate direction图4.1 数字积分原理Fig 4.1 Principle of DDA被积函数寄存器用以存放坐标值f(t),累加器也称余数寄存器用于存放坐标的累加值。

第四章 插补原理

第四章 插补原理

y L2 F0 F<0 F<0 F0 L3
四象限直线偏差符号和进给方向
L1 F0 F<0 x F<0 F0 L4
由图可见,靠近Y轴区域偏差大等于零,靠近X轴区域偏差小于零。F≥0时,进 给都是沿X轴,不管是+X向还是-X向,X的绝对值增大;F<0时,进给都是沿Y轴, 不论+Y向还是-Y向,Y的绝对值增大。
v y 60f y
式中 δ—脉冲当量(mm/脉冲)。合成进给速度为
v v x 2 v y 2 60 f x2 f y2
若fx=0或fy=0时,也就是刀具沿平行于坐标轴的方向切削,这时对 应轴切削速度最大
第四章 插补原理
3.1 数字积分法的基本原理
第 三 节 数 字 积 分 法
F5 F4 2Y4 1 3 F6 F5 2 X 5 1 4
F7 F6 2Y6 1 1
F8 F7 2Y7 1 0
5. 四个象限中圆弧插补 第一象限逆圆弧CD:即Fi≥0时,走—X轴, 动点的偏差函数为
Fi 1=Fi 2 X i 1
第四章 插补原理
2.3 逐点比较法圆弧插补
第 二 节 逐 点 比 较 法
第一象限圆弧插补 流程图
例3 现欲加工第一象限顺圆弧AB,如图所示,起点A(0,4),终点B(4,0), 试用逐点比较法进行插补。
Y 4 3 2 1 B(4,0) O 1 2 3 4 X A(0,4)
表3 圆弧插补过程
步数 起点 偏差判别 坐标进给 偏差计算 坐标计算 终点判别
如图4-14所示,从t=0时
刻到t时刻,函数y=f(t) 曲线所包围的面积可表示
Y
Y=f(t)
YO

数字积分插补法的直线插补误差

数字积分插补法的直线插补误差

数字积分插补法的直线插补误差数字积分插补法是现代数控技术中的重要方法之一。

具体来说,它是通过对给定的曲线信息进行处理,得到一系列机床控制指令,在保证加工精度和效率的同时,实现曲线的准确加工。

然而,在数字积分插补法中,由于其数值计算的本质和机床的机械特性,直线插补误差是无法避免的。

本文将探讨数字积分插补法的直线插补误差,包括其成因、影响因素、解决方法等内容,旨在为制造业相关从业者提供一定的参考和指导。

1.直线插补误差的成因直线插补误差是数字积分插补法中常见的问题之一,其主要成因包括以下几个方面:1)数值计算误差:数字积分插补法是通过对给定的曲线信息进行插值得到指令进行控制,其中涉及到大量的数值计算。

由于计算机计算精度等方面的局限性,数值计算的精度和误差会影响到插补结果的准确性。

2)机床动态特性:机床本身具有一定的刚度、质量以及振动等动态特性,这些特性会导致机床加工时出现一定的误差。

尤其在高速运动和高精度加工时,机床的动态特性和误差更加明显。

3)刀具和工件特性:刀具和工件的特性直接影响到机床加工的准确性,例如刀具磨损、工件变形等都会导致加工误差的发生。

2.直线插补误差的影响因素直线插补误差的大小与许多因素有关,主要包括以下几点:1)直线段的长度和方向:直线段的长度和方向决定了机床加工时所需的时间和加工路线,从而影响插补的起始和终止点以及运动轨迹。

2)机床加工速度和精度:机床加工速度和精度直接决定了加工的渐进过程和目标精度。

对于运动速度和加工精度要求高的工件,直线插补误差影响更大。

3)刀具磨损和工件变形:刀具磨损和工件变形会导致机床加工的实际轮廓和理论轮廓不一致,从而影响插补结果的准确性。

4)数值计算方法和误差分析:数值计算方法和误差分析技术对插补结果的精度和准确性影响很大。

3.直线插补误差的解决方法针对直线插补误差的影响因素,我们可以采取一些解决方法来尽可能地减小误差,这些方法包括以下几个方面:1)数值计算方法的改进:通过提高计算精度和准确度等方式改进数值计算方法,可以减小误差。

数字积分法三、四象限顺圆插补VB源程序

数字积分法三、四象限顺圆插补VB源程序

程序清单Private Sub 建立坐标系_Click()Picture1.ForeColor = vbBlackPicture1.DrawWidth = 2Picture1.Line (500, 1000)-(8500, 1000) '画直线坐标轴Picture1.Line (4500, 1000)-(4500, 5000)Picture1.CurrentX = 230 '当前位置Picture1.CurrentY = 900Picture1.Print "-X" '坐标轴标注Picture1.CurrentX = 4300Picture1.CurrentY = 800Picture1.Print "(0,0)"Picture1.CurrentX = 8650Picture1.CurrentY = 900Picture1.Print "X"Picture1.CurrentX = 4400Picture1.CurrentY = 5100Picture1.Print "-Y"Picture1.Line (500, 1000)-(600, 950) '箭头Picture1.Line (500, 1000)-(600, 1050)Picture1.Line (8500, 1000)-(8400, 950)Picture1.Line (8500, 1000)-(8400, 1050)Picture1.Line (4500, 5000)-(4450, 4900)Picture1.Line (4500, 5000)-(4550, 4900)End SubPrivate Sub 画圆弧_Click()Dim a, b, c, d, n, m As IntegerDim r As Singlea = V al(Text1.Text)b = V al(Text2.Text)c = V al(Text3.Text)d = V al(Text4.Text)n = a * a + b * bm = c * c + d * dr = Sqr(n)Picture1.ForeColor = vbRedPicture1.DrawWidth = 4If Option1.V alue = True ThenConst PI = 3.1415926535Picture1.Circle (4500, 1000), 300 * r, , PI, -3 * -PI / 2End IfIf Option2.V alue = True ThenPicture1.Circle (4500, 1000), 300 * r, , -3 * -PI / 2, 0 * PIEnd IfEnd SubPrivate Sub 清除_Click()Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Option1.V alue = FalseOption2.V alue = FalsePicture1.ClsForm1.ClsEnd SubPrivate Sub 插补计算_Click()If Not (Option1.V alue = True Or Option2.V alue = True) Thenans = MsgBox("出错了,请选择象限", 48, "提示信息")End IfDim a, b, c, d, ni, mi, ai, bi, ci, k, f, g, m, n, l, i, xs, yx, xe, ye, jvx, jvy, xi, yi As Integer Dim r As Singlea = V al(Text1.Text)b = V al(Text2.Text)c = V al(Text3.Text)d = V al(Text4.Text)ni = a * a + b * bmi = c * c + d * dr = Sqr(ni)Form1.Clsci = 2f = 1g = 1k = 0 '正X进给标志1 正向-1负向m = 0 '负Y进给标志 1 正向-1负向n = 0 '累加次数i = CInt(Text5) '寄存器位数赋给il = 2 ^ ixs = CInt(Text1)ys = CInt(Text2)xe = CInt(Text3)ye = CInt(Text4)jvx = Abs(CInt(Text2))jvy = Abs(CInt(Text1))jrx = 0jry = 0xi = Abs(CInt(Text3) - CInt(Text1)) 'X方向总步yi = Abs(CInt(Text4) - CInt(Text2)) 'Y方向总步长ai = xsbi = ysPicture1.ForeColor = vbGreenPicture1.DrawWidth = 3Form1.CurrentX = 200Form1.CurrentY = 200Print " " & " X积分器" & " Y积分器" Form1.CurrentX = 100Form1.CurrentY = 400Print "累加次数n" & " jvx " & "Jrx=Jrx+Jvx" & " △X " & "J∑x" & " Jvy" & " Jry=Jry+Jvy" & " △Y " & " J∑y "Form1.CurrentX = 100Form1.CurrentY = 600Print " 开始" & "" & jvx & " " & jrx & "" & k & " " & xi & " " & jvy & " " & jry & " " & m & " " & yiwz: k = 0 'X方向进给标志1 X正向进给-1负向进给m = 0 'Y方向进给标志 1 Y正向进给-1负向进给If xi > 0 Then 'X方向判断jrx = jrx + jvxIf jrx >= l Then '判断寄存器是否溢出jrx = jrx - l '溢出修正If jrx >= l Then '寄存器位数判断GoTo ww5End Ifk = -1 '负X方向进给xi = xi - 1 'X方向总步长减1End IfEnd IfIf yi > 0 Then 'Y方向判断jry = jry + jvyIf jry >= l Then '判断寄存器是否溢出jry = jry - l '溢出修正If jry >= l Then '寄存器位数判断GoTo ww5End IfIf Option1.V alue = True Then '第三象限m = 1 '正Y方向进给ElseIf Option2.V alue = True Then '第四象限m = -1 '负Y方向进给End Ifyi = yi - 1 'Y方向总步长减1End IfEnd Ifn = n + 1 '累加次数加1Form1.CurrentX = 100Form1.CurrentY = 600 + n * 200If xi = 0 Or yi = 0 ThenIf xi = 0 And yi <> 0 And f = 0 ThenPrint " " & n & " " & jvx & " " & "停止" & " " & "" & " " & "" & " " & jvy & " " & jry & " " & m & " " & yi GoTo wz2End IfIf xi = 0 And yi <> 0 And f < 0 ThenPrint " " & n & " " & jvx & " " & " " & " " & "" & " " & "" & " " & jvy & " " & jry & " " & m & " " & yi GoTo wz2End IfIf xi <> 0 And yi = 0 And g = 0 ThenPrint " " & n & "" & jvx & " " & jrx & "" & k & "" & xi & " " & jvy & " " & "停止"GoTo wz2End IfIf xi <> 0 And yi = 0 And g < 0 ThenPrint " " & n & "" & jvx & " " & jrx & "" & k & "" & xi & " " & jvyGoTo wz2End IfIf xi = 0 And yi = 0 And f = 1 And g < 0 ThenPrint " " & n & "" & jvx & " " & jry & " " & k & "" & xi & " " & jvyGoTo wz2End IfIf xi = 0 And yi = 0 And f < 0 And g = 1 ThenPrint " " & n & " " & jvx & " " & " " & " " & "" & " " & "" & " " & jvy & " " & jry & " " & m & " " & yiGoTo wz2End IfIf xi = 0 And yi = 0 And f = 0 And g = 0 ThenPrint " " & n & " " & jvx & " " & "停止" & " " & "" & " " & "" & " " & jvy & " " & "停止"End IfIf xi = 0 And yi = 0 And f = 0 And g < 0 ThenPrint " " & n & "" & jvx & "" & "停止" & " " & k & " " & xi & " " & jvy & ""GoTo wz2End IfIf xi = 0 And yi = 0 And f < 0 And g = 0 ThenPrint " " & n & " " & jvx & " " & " " & " " & "" & " " & "" & " " & jvy & " " & "停止"GoTo wz2End IfEnd IfPrint " " & n & " " & jvx & "" & jrx & "" & k & " " & xi & " " & jvy & " " & jry & " " & m & " " & yiwz2: If xi = 0 Thenf = f - 1End IfIf yi = 0 Theng = g - 1End IfIf xi = 0 And yi = 0 Thenci = ci - 1If ci = 0 ThenGoTo wz3End IfEnd IfIf Option1.V alue = True ThenIf k = -1 Then '负X方向进给jvy = jvy + 1End IfIf m = 1 Then '正Y方向进给jvx = jvx - 1End IfEnd IfIf Option2.V alue = True ThenIf k = -1 Then '负X方向进给jvy = jvy - 1End IfIf m = -1 Then '负Y方向进给jvx = jvx + 1End IfEnd IfPicture1.Line (4500 + 300 * ai, 1000 - bi * 300)-(4500 + 300 * (ai + k), 1000 - (bi + m) * 300)bi = bi + mGoTo wzww3: Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Text1.SetFocusww5: Form1.Clsans = MsgBox("出错了,寄存器位数偏小,请输入", 48, "提示信息")Text5.Text = ""Text5.SetFocusww4:wz3:End Sub。

菜鸟学四轴控制器之3:数字积分法DDA实现直线插补

菜鸟学四轴控制器之3:数字积分法DDA实现直线插补

菜鸟学四轴控制器之3:数字积分法DDA实现直线插补上⼀篇的逐点⽐较法显然是⽆法画⼀条有倾⾓的直线的。

因为X轴和Y轴永远都不同步,也就是像打台球⼀样,你打⼀个,我打⼀个,如果我进了球,我再接着打⼀个。

也就是说,如果直线为45度,也是没有办法画出来的,只能是锯齿形状。

如何实现X和Y同时动?也就是说,如果要画⼀条45度的线,X和Y同时动不就⾏了么?⽐如起点为0,0,终点为5,5,如果采⽤逐点⽐较法,则需要运动10次,如果两轴同时运动,则5步就可以实现了。

实现的途径如下:初始值为0,0,然后下⼀步,我们每个坐标增加5,则结果为5,5,这样会溢出,也就是说,溢出来出发运动⼀步。

溢出以后清零,下⼀步再加5,⼜溢出,继续同时运动⼀步。

⼀共5步就可以实现了。

等等,当然可以设置寄存器的溢出值为5,这样的寄存器使⽤3位就⾏了,但是如果要移动到(3,7)的坐标呢?显然,我们⽤的寄存器则可以选⽤溢出值为7.这样的话,我们要⽤的寄存器其实需要3个,⼀个是存(3,7)的初始值,⼀个存7这个阀值,⼀个则是累加器。

我们可以直接省掉⼀个阀值的寄存器。

也就是说,直接⽤3位的寄存器,阀值为8.步数X累加X余数X是否溢出Y累加Y余数Y是否溢出000000013007002600146139111351440012415700113161021102175009118801801也就是说,当X轴和Y轴同时溢出的时候,X和Y轴是在同步运动的。

问题来了,⽐如我们要运动从(0,0)运动到(2554,47)这个点,实际需要多少步?也就是说,只要能装的下2554这个的寄存器位数就可以了,也就是说,⽤4096来作为累加器。

移动的速度则是4096*脉冲当量的周期。

实际上,这个时间⽐2554+47慢了很多了。

但是这样做的好处显⽽易见,我们不是每⼀个图形,都是锯齿形了。

我们可以轻松的实现直接的实际⼑路如上⾯的图形从⽽实现了多座标联动,多坐标曲线插补,在轮廓控制⽅⾯得到了⼴泛的应⽤。

数控原理第三象限直线插补(最新整理)

数控原理第三象限直线插补(最新整理)

太原工业学院课程设计任务书系部:机械工程系专业:机电一体化学生姓名:余彦鹏学号:082013239设计题目:数控插补程序设计–第四象项直线插补起迄日期: 2011.06.27—2011.07.01设计地点:指导教师:张焕梅发任务书日期: 2011 年 6 月 28 日目录一.课程设计的目的二.插补意义三.插补算法概述四.脉冲增量插补算法五.数据采样插补算法六.逐点比较法的简介七.直线插补原理八.逐点比较法插补程序九.动态演示十.第四象限逐点插补流程图十一、课程设计小结十二.参考文献课程设计任务书一.课程设计的目的1了解连续轨迹控制数控系统的组成原理。

2 掌握逐点比较法插补的基本原理。

3掌握逐点比较法的软件实现方法。

二.插补意义插补是整个数控系统软件中极其重要的功能模块之一,其算法的选择将直接影响到系统精度、速度及加工能力等。

插补计算就是数控装置根据输入的基本数据,通过计算,把工件轮廓的形状描述出来,边计算边根据计算结果向各坐标发出进给脉冲,对应每个脉冲,机床在响应的坐标方向上移动一个脉冲当量的距离,从而将工件加工出所需要轮廓的形状。

三.插补算法概述随着相关学科特别是计算机领域的迅速发展,插补算法也在不断的完善和更新。

由于插补的速度直接影响到数控系统的速度,而插补的精度又直接影响整个数控系统的精度,因此,人们一直在努力探求一种计算速度快并且精度又高的查补算法。

但不幸的是,插补速度与查补精度是互相制约、互相矛盾的,这时必须进行折衷的选择。

到目前为止,已涌现出了大量的查补算法。

其中主要包括:脉冲增量查补算法和数据采样查补算法。

四.脉冲增量插补算法脉冲增量查补(又称行程标量插补)算法是通过向各个运动轴分配脉冲,控制机床坐标轴相互协调运动,从而加工出一定轮廓形状的算法。

这类插补算法的特点是每次插补的结果仅产生一个单位的行程增量,以单位脉冲的形式输出给步进电机。

因此,这类插补被称为脉冲增量插补。

脉冲增量插补是行程标量插补,每次插补结束产生一个行程增量,以脉冲的方式输出。

数控机床插补计算

数控机床插补计算

新点的偏差为
2.终点判别的方法
一种方法是设置两个减法计数器,在计数器中 分别存入终点坐标值,各坐标方向每进给一步时,就 在相应的计数器中减去1,直到两个计数器中的数都 减为零时,停止插补,到达终点。
另一种方法是设置一个终点计数器,计数器中 存入两坐标进给的步数总和,当x或y坐标进给时均 减1,当减到零时,停止插补,到达终点。
四个象限圆弧插补计算
与直线插补相似,计算用 坐标的绝对值进行,进给方向 另做处理。从图看出SRl、NR2、 SR3、NR4的插补运动趋势都是 使X轴坐标绝对值增加、y轴坐 标绝对值减小。NRl、SR2、 NR3、SR4插补运动趋势都是使 X轴坐标绝对值减小、y轴坐标 绝对值增加。
(二)圆弧插补计算举例 设加工第一象限逆圆AB,已知起点A(4,0),终 点B(o,4)。试进行插补计算并画出走步轨迹。
2.2.2 刀具半径补偿 1.刀具半径补偿概念
刀具半径补偿功能是指改变刀具中心运动轨迹的功能。如图 所示,用铣刀铣工件轮廓时,刀具中心应始终偏离工件表面一个 刀具半径的距离,编程人员则以工件的轮廓表面尺寸进行编程。 当刀具半径确定之后,可以将刀具半径的实测值输入刀具半 径补偿存储器,存储起来,加工时可根据需要用G41或G42进行调 用。G41和G42分别为左刀补和右刀补。如图所示。
2.2
刀具补偿原理
数控系统对刀具的控制是以刀架参考点为基准的,但零件加 工是用刀尖点进行的,所以需要在刀架参考点和刀尖点之间进 行位置偏置(补偿)。
2.1.2
刀具长度补偿
以数控车床为例,P为刀尖,Q为刀架参考点,设刀尖圆 弧半径为零。利用测量装置测出刀尖点相对于刀架参考点的 坐标(xpq ,ypq ),存入刀补内存表中。 编程时以刀尖点P(XP,ZP) 来编程,刀架参考点坐标 Q(Xq,Zq)由下式求出 Xq=XP- xpq P(XP,ZP) xpq Q Zq=ZP- Zpq 刀具长度补偿由G43、G44及 zpq H代码指定。

3-插补运算原理范文.ppt

3-插补运算原理范文.ppt
1. 基本原理
在刀具按要求轨迹运动加工零件轮廓的过程中,不 断比较刀具与被加工零件轮廓之间的相对位置,并根据 比较结果决定下一步的进给方向,使刀具向减小误差的 方向进给。其算法最大偏差不会超过一个脉冲当量δ。
每进给一步需要四个节拍: 偏差判别 坐标进给 新偏差计算
终点比较
26
逐点比较法
一、逐点比较法直线插补 y
插补过程演示
Fi1, j Fi, j 2xi 1
Fi, j1 Fi, j 2 y j 1

二、 脉冲增量插补算法
• 设计一个偏差函数Fm
– Fm>0 表示刀具当前位置在曲线上方
第 三
– Fm=0 表示刀具当前位置在曲线上

– Fm<0 表示刀具当前位置在曲线下方
插 • 根据曲线特征可设计不同的偏差函数
补 运
– 直线
算 原
– 圆弧

– 椭圆、渐开线、抛物线等
21
︵。 ︵
二、 脉冲增量插补算法
加工直线OA,终点坐标xe=5, ye=3, E8=xe+ye=8, F00=0
直线插补过程演示
30
逐点比较法
二、逐点比较法圆弧插补(第Ⅰ 象限逆圆弧)
偏差判别
y
F>0
圆弧上 xi2 y2j x02 y02 (xi2 x02 ) ( y2j y02 ) 0
圆弧外 xi2 y2j x02 y02 圆弧内 xi2 y2j x02 y02
直线
X
出一步 Fm=0 在直线上 + X向输出一步Fm<0 在直线下 方,+Y向输出一步
23
︵。 ︵
二、 脉冲增量插补算法
2. 逐点比较法加工的原理(圆弧)

数字积分法插补原理

数字积分法插补原理
一 基本原理
数字积分法又称数字积分分析法DDA(Digital differential Analyzer), 简称积分器,是在数字积分器的基础上建立起来的一种插补算法。具 有逻辑能力强的特点,可实现一次、两次甚至高次曲线插补,易于实 现多坐标联动。只需输入不多的几个数据,就能加工圆弧等形状较为 复杂的轮廓曲线。直线插补时脉冲较均匀。并具有运算速度快,应用 广泛等特点。
3单元 数字积分法插补原理
二 直线插补
例:设有一直线OA,起点为原点O,终点A坐标为(4,6),试用数字 积分法进行插补计算并画出走步轨迹。
解:选取累加器和寄存器的位数为3位,即n=3,则累加次数
m 23 8
插补前,余数寄存器=0。x被 积函数寄存器=4,y被积函数寄 存器=6。其插补过程如表(下 页)所示。插补轨迹如右图所 示。
3单元 数字积分法插补原理
一 基本原理
如图所示,从时刻到t求函数曲线所包围的面积时,可用积分公式表示,如 果将0~t的时间划分成时间间隔为的有限区间,当足够小时,可得近似公式 :
S
t
0
f
(t )dt
t
0
y(t )dt
n
yi t
i 1
n
若△t 取“1”,上式简化为:S yi
i 1
S
t
0
y(t )dt
三 圆弧插补
DDA逆圆插补框图
3单元 数字积分法插补原理
三 圆弧插补
3单元 数字积分法插补原理
三 圆弧插补
圆弧插补与直线插补比较
(1)直线插补时为常数累加,而圆弧插补时为变量累加。
(2)圆弧插补时,x轴动点坐标值累加的溢出脉冲作为y轴的 进给脉冲,y轴动点坐标值累加溢出脉冲作为x轴的进给脉冲。

数控原理第四象限逐点比较法直线插补程序

数控原理第四象限逐点比较法直线插补程序

Private Sub Command1_Click()Picture1.ForeColor = vbBlackPicture1.DrawWidth = 2Picture1.Line (500, 500)-(500, 5500) '坐标系Picture1.Line (500, 500)-(5500, 500)Picture1.Line (500, 5500)-(460, 5400) '箭头Picture1.Line (500, 5500)-(540, 5400)Picture1.Line (5500, 500)-(5400, 460)Picture1.Line (5500, 500)-(5400, 540)Picture1.Line (5850, 550)-(5750, 450)Picture1.Line (5850, 450)-(5750, 550)Picture1.Line (500, 5800)-(450, 5750)Picture1.Line (500, 5800)-(550, 5750)Picture1.Line (500, 5800)-(500, 5900)Picture1.Line (430, 5800)-(380, 5800)Picture1.ForeColor = vbRedPicture1.DrawWidth = 4Picture1.Line (500, 500)-(500 + 400 * Int(Text3), 500 - 400 * Int(Text4))Command2.Enabled = True100Text1.SetFocusEnd SubPrivate Sub Command2_Click()Form1.ClsDim k, m, j, l, n, F(20) As Integerm = 0l = 0k = 0F(m) = 0Picture1.ForeColor = vbGreenPicture1.DrawWidth = 3j = Abs(Int(Text3)) + Abs(Int(Text4)) '总步数Form1.CurrentX = 200Form1.CurrentY = 200Print "初始:进给方向" & "F(m)=0" & " Xe=" & Int(Text3) & " Ye=" & Int(Text4) & " ∑= " & jFor n = 1 To jIf F(m) >= 0 And j > 0 Then 'X方向进给m = m + 1 '序号l = l + 1 'X方向进给l加1F(m) = F(m - 1) - Abs(Int(Text4))Picture1.Line (500 + 400 * (l - 1), 500 + k * 400)-(500 + 400 * (l), 500 + k * 400)Form1.CurrentX = 200Form1.CurrentY = 200 + m * 300Print "第" & m & "步" & " △x F(" & m & ")= " & F(m) & " " & "x=" & l & " " & "y=-"; k & " ∑=" & j - nElse 'Y方向进给k = k + 1m = m + 1Picture1.Line (500 + 400 * l, 500 + (k - 1) * 400)-(500 + 400 * l, 500 + k * 400)F(m) = F(m - 1) + Abs(Int(Text3))Form1.CurrentX = 200Form1.CurrentY = 200 + m * 300Print "第" & m & "步" & " △y F(" & m & ")= " & F(m) & " " & "x="; l & " " & "y=-"; k & " ∑=" & j - nEnd IfNext nEnd SubPrivate Sub Command3_Click()Text3.Text = ""Text4.Text = ""Picture1.ClsForm1.ClsEnd SubPrivate Sub Command4_Click()EndEnd Sub。

直线插补数字积分法第三、第四象限

直线插补数字积分法第三、第四象限

目录一、课程设计目的 (3)二、课程设计使用的主要仪器及软件设备 (3)三、课程设计题目描述和要求 (3)四、课程设计报告内容 (3)4.1数字积分法直线插补的基本原理 (4)4.1.1从几何角度来看积分运算 (4)4.1.2数字积分法在轮廓插补中的具体应用(数字积分法直线插补) (5)4.2插补终点判别的具体实现 (7)4.3插补器的组成 (7)4.4提高插补精度的措施 (7)4.5减少误差的方法 (7)4.6数字积分法直线插补框图 (7)4.7 数字积分法直线(第三四象限)插补程序 (9)五结论 (13)六实验总结 (13)七程序运行图 (15)一、课程设计目的1)了解连续轨迹控制数控系统的组成原理。

2) 掌握数字积分法(DDA)插补的基本原理。

3)掌握数字积分法(DDA)插补的软件实现方法。

二、课程设计使用的主要仪器及软件设备Pc计算机一台Vb三、课程设计的任务题目描述和要求数字积分法又称数字微分分析法DDA(Digital Differential Analyzer)。

数字积分法具有运算速度快、脉冲分配均匀、易于实现多坐标联动及描绘平面各种函数曲线的特点,应用比较广泛。

其缺点是速度调节不便,插补精度需要采取一定措施才能满足要求。

由于计算机有较强的计算功能和灵活性,采用软件插补时,上述缺点易于克服。

本次课程设计具体要求如下:(1)掌握数字积分插补法基本原理(2)设计出数字积分(DDA)插补法插补软件流程图(3)编写出算法程序清单算法描述(数字积分法算法在VB中的具体实现)(4)要求软件能够实现第一第二象限直线插补计算(5)软件运行仿真效果插补结果要求能够以图形模式进行输出四、课程设计报告内容插补运算就是运用特定的算法对工件加工轨迹进行运算并根据运算结果向相应的坐标发出运动指令的过程。

插补运算可以采用数控系统硬件或数控系统软件来完成。

硬件插补器:速度快,但缺乏柔性,调整和修改都困难。

软件插补器:速度慢,但柔性高,调整和修改都很方便。

DAA法汇编语言四个象限直线插补

DAA法汇编语言四个象限直线插补

DDA法汇编语言四个象限直线插补DDA法汇编语言四个象限直线插补程序流程图如图所示。

四个象限直线插补程序流程图#include <graphics.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>#include <math.h>int xe,ye,jvx,jvy,jrx,jry,xi,yi,jsh,lxy;/* xe、ye终点坐标jvx、jvy被积函数,jrx、jry余数寄存器xi、yi动点坐标,jsh计数长度, ,lxy象限号*/void zxcb1(); //声明第一象限直线插补函数void zxcb2(); //声明第2象限直线插补函数void zxcb3(); //声明第3象限直线插补函数void zxcb4(); //声明第4象限直线插补函数void main() //主函数{ int gd=DETECT,gm; //显示模式变量again: clrscr(); //清屏printf("L1_L4: Please input xe,ye:"); //提示输入终点坐标scanf("%d,%d",&xe,&ye); //等待输入if(xe==0&&ye==0){ printf("input error,enter any continue.");getch();goto again;} //输入错误继续输入if(xe==0&&ye>0)lxy=2; //终点为第2象限if(xe==0&&ye<0)lxy=4; //终点为第4象限if(ye==0&&xe>0)lxy=1; //终点为第一象限if(ye==0&&xe<0)lxy=3; //终点为第3象限if(xe>0&&ye>0)lxy=1; //终点为第一象限if(xe>0&&ye<0)lxy=4; //终点为第4象限if(xe<0&&ye>0)lxy=2; //终点为第2象限if(xe<0&&ye<0)lxy=3; //终点为第3象限xi=320;yi=240; //动点置屏幕中间initgraph(&gd,&gm,""); //图形显示方式jsh=0;jrx=0;jry=0;jvx=abs(xe);jvy=abs(ye);switch(lxy){ case 1: zxcb1();break; //第一象限调用插补程序函数1 case 2: zxcb2();break; //第一象限调用插补程序函数2 case 3: zxcb3();break; //第一象限调用插补程序函数3 case 4: zxcb4();break; //第一象限调用插补程序函数4 }gotoxy(10,24);printf("L%d: xe=%d,ye=%d",lxy,xe,ye); //显示终点坐标 gotoxy(10,25);printf("press any key:"); //提示按任意键 getch(); //等待按键}void zxcb1() //第一象限插补函数1{asm mov cx, xi //显示起点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm int 10hagain: asm mov ax, jvx //X方向积分asm add jrx, axasm jnc next1 //无进位下asm inc xi //下正X方向进给next1: asm mov ax, jvy //Y方向积分asm add jry, axasm jnc next2 //无进位下转asm dec yi //正Y进给next2: asm mov cx, xi //显示动点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm mov dx, 0100h //延时next2a: asm mov cx, 00ffhnext2b: asm dec cxasm jnz next2basm dec dxasm jnz next2aasm inc jsh //计数长度加1asm jnz again //未到终点继续}void zxcb2() //第2象限插补函数1 {asm mov cx, xi //显示起点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm int 10hagain: asm mov ax, jvx //X方向积分asm add jrx, axasm jnc next1 //无进位下asm dec xi //下负X方向进给next1: asm mov ax, jvy //Y方向积分asm add jry, axasm jnc next2 //无进位下转asm dec yi //正Y进给next2: asm mov cx, xi //显示动点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm int 10hasm mov dx, 0100h //延时next2a: asm mov cx, 00ffhnext2b: asm dec cxasm jnz next2basm dec dxasm jnz next2aasm inc jsh //计数长度加1asm jnz again //未到终点继续}void zxcb3() //第3象限插补函数1 {asm mov cx, xi //显示起点asm mov dx, yiasm mov ah, 0chasm int 10hagain: asm mov ax, jvx //X方向积分asm add jrx, axasm jnc next1 //无进位下asm dec xi //下负X方向进给next1: asm mov ax, jvy //Y方向积分asm add jry, axasm jnc next2 //无进位下转asm inc yi //负Y进给next2: asm mov cx, xi //显示动点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm int 10hasm mov dx, 0100h //延时next2a: asm mov cx, 00ffhnext2b: asm dec cxasm jnz next2basm dec dxasm jnz next2aasm inc jsh //计数长度加1asm jnz again //未到终点继续}void zxcb4() //第一象限插补函数1 {asm mov cx, xi //显示起点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm int 10hagain: asm mov ax, jvx //X方向积分asm add jrx, axasm jnc next1 //无进位下asm inc xi //下正X方向进给next1: asm mov ax, jvy //Y方向积分asm add jry, axasm jnc next2 //无进位下转asm inc yi //负Y进给next2: asm mov cx, xi //显示动点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm int 10hasm mov dx, 0100h //延时next2a: asm mov cx, 00ffhnext2b: asm dec cxasm jnz next2basm dec dxasm jnz next2aasm inc jsh //计数长度加1 asm jnz again //未到终点继续}。

四象限直线插补计算程序

四象限直线插补计算程序

四象限直线插补计算程序
四象限直线插补计算程序是一种用于机器人运动控制的算法,通过计算机编程实现。

在机器人控制系统中,直线插补是指将机器人的起始位置和目标位置之间的直线路径划分成一系列离散的插补点,并根据路径上的每个插补点的位置、速度和加速度进行控制,使得机器人能够顺利达到目标位置。

四象限直线插补计算程序的核心思想是将直线路径上的插补点分为
四个象限,每个象限都有不同的速度和加速度控制策略。

具体而言,四象限分别为正加速度、匀速、负加速度和停止。

首先,程序会根据起始位置和目标位置计算出路径的总长度,并根据设定的速度和加速度限制计算出每个象限的长度。

然后,程序会根据象限长度和限制条件计算出每个象限的插补点个数。

接下来,程序会根据插补点个数和限制条件,计算出每个插补点的位置、速度和加速度。

在正加速度象限,插补点的位置和速度会逐渐增加,加速度保持一个固定的正值。

在匀速象限,插补点的位置和速度保持稳定,加速度为零。

在负加速度象限,插补点的位置和速度会逐渐减小,加速度保持一个固定的负值。

在停止象限,插补点的位置和
速度为目标位置和速度,加速度为零。

最后,程序会根据计算出的插补点的位置、速度和加速度,控制机器人按照插补点的顺序依次运动,直到达到目标位置。

这样,通过四象限直线插补计算程序,机器人可以按照设定的速度和加速度限制,平滑地完成直线路径的运动控制,提高运动的精度和稳定性。

除了四象限直线插补计算程序,还有其他的插补算法,如三次样条插补算法和五次多项式插补算法等。

这些算法都有各自的特点和适用范围,在实际应用中可以根据具体的需求选择合适的插补算法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录一、课程设计目的 (3)二、课程设计使用的主要仪器及软件设备 (3)三、课程设计题目描述和要求 (3)四、课程设计报告内容 (3)4.1数字积分法直线插补的基本原理 (4)4.1.1从几何角度来看积分运算 (4)4.1.2数字积分法在轮廓插补中的具体应用(数字积分法直线插补) (5)4.2插补终点判别的具体实现 (7)4.3插补器的组成 (7)4.4提高插补精度的措施 (7)4.5减少误差的方法 (7)4.6数字积分法直线插补框图 (7)4.7 数字积分法直线(第三四象限)插补程序 (9)五结论 (13)六实验总结 (13)七程序运行图 (15)一、课程设计目的1)了解连续轨迹控制数控系统的组成原理。

2) 掌握数字积分法(DDA)插补的基本原理。

3)掌握数字积分法(DDA)插补的软件实现方法。

二、课程设计使用的主要仪器及软件设备Pc计算机一台Vb三、课程设计的任务题目描述和要求数字积分法又称数字微分分析法DDA(Digital Differential Analyzer)。

数字积分法具有运算速度快、脉冲分配均匀、易于实现多坐标联动及描绘平面各种函数曲线的特点,应用比较广泛。

其缺点是速度调节不便,插补精度需要采取一定措施才能满足要求。

由于计算机有较强的计算功能和灵活性,采用软件插补时,上述缺点易于克服。

本次课程设计具体要求如下:(1)掌握数字积分插补法基本原理(2)设计出数字积分(DDA)插补法插补软件流程图(3)编写出算法程序清单算法描述(数字积分法算法在VB中的具体实现)(4)要求软件能够实现第一第二象限直线插补计算(5)软件运行仿真效果插补结果要求能够以图形模式进行输出四、课程设计报告内容插补运算就是运用特定的算法对工件加工轨迹进行运算并根据运算结果向相应的坐标发出运动指令的过程。

插补运算可以采用数控系统硬件或数控系统软件来完成。

硬件插补器:速度快,但缺乏柔性,调整和修改都困难。

软件插补器:速度慢,但柔性高,调整和修改都很方便。

早期硬件数控系统:采用由数字逻辑电路组成的硬件插补器; CNC 系统:采用软件插补器,或软件、硬件相结合的插补方式。

4.1数字积分法直线插补的基本原理数字积分法是利用数字积分的方法,计算刀具沿各坐标轴的位移,使得刀具沿着所加工的轮廓曲线运动利用数字积分原理构成的插补装置称为数字积分器,又称数字微分分析器(Digital Differential Analyzer ),简称DDA 。

数字积分器插补的最大优点在于容易实现多坐标轴的联动插补、能够描述空间直线及平面各种函数曲线等。

因此,数字积分法插补在轮廓数控系统中得到广泛的应用。

4.1.1从几何角度来看积分运算积分运算就是求出函数Y = f (t )曲线与横轴所围成的面积,从t =t0到tn 时刻,函数Y= f (t )的积分值可表述为⎰⎰==n n tt tt dt)t (Ydt S 00f如果进一步将t ∈[t0,tn]Δt 的小区间,当Δt 足够小时,函数Y 的积分可用下式近似表示tY Ydt S n i i tt n ∆∑⎰-=≈=1在几何上就是用一系列的小矩形面积之和来近似表示函数f (t )以下的积分面积。

进一步如果在式中,取Δt 为基本单位“1”,则上式可演化成数字积分器算式:∑-==1n i iY S由此可见,通过假设Δt =“1”,就可将积分运算转化为式所示的求纵坐标值的累加运算。

若再假设累加器容量为一个单位面积值,则在累加过程中超过一个单位面积时立即产生一个溢出脉冲。

这样,累加过程所产生的溢出脉冲总数就等于所求的总面积,即所求的积分值。

下面就以直线和圆弧轨迹为例详细介绍4.1.2数字积分法在轮廓插补中的具体应用(数字积分法直线插补) 设将要加工的直线XOY 平面内第一象限直线OE ,如图.一所示,直线起点在坐标原点,终点为E (Xe ,Ye )。

同样,假设坐标值均为以脉冲当量为单位的整数。

图4.1若此时刀具在两坐标轴上的进给速度分量分别是Vx ,Vy ,则刀具在X 轴,Y 轴方向上位移增量分别是△X = Vx △t 式1-1 △ Y = Vy △t 式1-2由图4.1 所示的几何关系可得V/OE=Vx/Xe=Vy/Ye=K (常数) 式2YXVyVxE (Xe ,Ye )V O将式2中的Vx ,Vy 分别代入式一 可得:△X = KXe △t 式3-1 △ Y = KYe △t 式3-2可见刀具由原点O 走向E 的过程,可以看作式每经过一个单位时间间隔△t ,就分别以增量[KXe],[ KYe]同时在两个坐标轴累加的结果。

也可以这样认为,数字积分法插补实际上就是利用速度分量,进行数字积分来确定刀具在各坐标轴上位置的过程,即当取△ti=“1”(一个单位时间间隔)则X = nKXe 式5-1 Y = nKYe 式5-2设经过n 次累加后,刀具正好到达终点E(Xe,Ye),则要求式五中常量满足 下式nK=1 式6n 是累加次数必须取整数,所有K 取小数。

为了保证每次分配给坐标轴的进给脉冲不超过一个单位,则△ X=KXe<1 式7-1 △ Y=KYe<1 式7-2上式中Xe ,Ye 的最大允许值受系统中相应寄存器容量的限制。

现假设寄存器 为N 位则容量为2N,对应存储的最大允许数字量为(2N- 1)将其带入式七得K<=1/(2N- 1) 式8 现不妨取 K =1/2N 式9显然它满足式七,式八的约束条件,再将K 值代入式六可得累加次数为 n =2N 式10如果将n ,K,值代入式五则动点坐标为X = nKXe =Xe 式11-1 Y = nKYe =Ye 式11-2根据以上分析,在进行直线插补时,先开辟两个被积函数寄存器Jvx ,Jvy 分别存放终点坐标值Xe ,Ye ,还有两个余数寄存器Jrx ,Jry 。

然后,当脉冲源每发送一个控制脉冲信号△t ,X 轴积分器和Y 轴积分器各累加一次。

当累加结果超过余数寄存器容量(2N- 1)时,就产生一个溢出脉冲△x (或△y )。

这样,经过2N次累加后,每个坐标轴溢出脉冲总数就等于该轴被积函数值(Xe 和Ye ),从而控制刀具到达终点E 。

∑ni=1X=△Xi =∑ni=1△Yi =Y=∑ n∑ ni=1 i=1KXe △ti 式4-1KYe △ti 式4-24.2插补终点判别的具体实现直线插补时不论被积函数有多大,对于N位寄存器。

必须累加2N次才能到达终点。

因此可以用一容量为2N的寄存器当计数器,来统计累加的次数。

可以用加1计数器,也可以用减1计数器。

采用加1计数器时,首先将计数器清零,运算过程中每来一个累加脉冲△t就加1。

当计数器满2N时表明运算完成。

采用减1计数器时,运算前把总运算次数2N送入计数器,每运算一次,就减去1。

当计数器减为0时,表明运算完成。

4.3插补器的组成二坐标DDA直线插补器包括X积分器和Y积分器,每个积分器都由被积函数寄存器Jvx(速度存寄器)和累加器Jrx(余数寄存器)组成。

初始时,X被积函数寄存器存Xe(或Xe/2N ),Y被积函数寄存器存Ye(或Ye/2N)。

4.4提高插补精度的措施对于DDA圆弧插补,径向误差可能大于一个脉冲当量,因数字积分器溢出脉冲的频率与被积函数寄存器中的数值成正比,在坐标轴附近进行累加时,一个积分器的被积函数值接近零,而另一个积分器的被积函数接近于最大值,累加时后者连续溢出,前者几乎没有,两个积分器的溢出脉冲频率相差很大,致使插补轨迹偏离给定圆弧距离较大,使圆弧误差增大。

4.5减少误差的方法1、减小脉冲当量,误差减少,但寄存器容量增大,累加次数增加。

而且要获得同样的进给速度,需要提高插补速度。

2、累加器预置数累加器中预置0.5,即被积函数寄存器中的初值增大后,可以提前溢出脉冲。

4.6数字积分法直线插补框图DDA直线插补软件的实现思路也是硬件逻辑关系来完成的。

DDA直线插补软件流程图如图4-2 所示DDA直线插补过程中使用的累加表达式为累加值 = 被积函数寄存器 + 余数寄存器一旦累加结果超过了寄存器的容量时,就会产生溢出,发出一个脉冲信号,并控制相应的坐标轴进给一步。

在软件实现过程中,也可以直观的认为余数寄存器为小数部分寄存器,与进 位位Cy 之间存在一个小数点。

具体表示为图4-2进位位Cy 位(1位)余数寄存器(N 位).小数点4.7数字积分法直线(第三四象限)插补程序Private Sub Command1_Click()xe = CInt(Text1)ye = CInt(Text2)Picture1.ForeColor = vbBlackPicture1.DrawWidth = 2If Option1.Value = True And Option2 = False ThenIf xe <= 0 And ye <= 0 ThenPicture1.Line (5500, 50)-(5500, 5500)Picture1.Line (5500, 5500)-(5530, 5400)Picture1.Line (5500, 5500)-(5470, 5400)Picture1.Line (5500, 50)-(50, 50)Picture1.Line (50, 50)-(150, 20)Picture1.Line (50, 50)-(150, 80)Picture1.CurrentX = 5600Picture1.CurrentY = 40Picture1.Print "(0,0)"Picture1.CurrentX = 100Picture1.CurrentY = 100Picture1.Print "-x"Picture1.CurrentX = 5600Picture1.CurrentY = 5400Picture1.Print "-Y"For i = 1 To -xePicture1.Line (5500 - i * 500, 50)-(5500 - i * 500, 100)Next iFor J = 1 To -yePicture1.Line (5500, 50 + J * 500)-(5400, 50 + J * 500)Next JPicture1.Line (5500, 50)-(5500 + 500 * Int(Text1), 50 - 500 * Int(Text2)) Elseans = MsgBox("出现出错!请检查!", 48, "提示信息")Picture1.ClsText1.Text = ""Text2.Text = ""Text3.Text = ""End IfElseIf Option2.Value = True And Option1 = False ThenIf xe >= 0 And ye <= 0 ThenPicture1.ForeColor = vbBlackPicture1.DrawWidth = 2Picture1.Line (50, 50)-(5500, 50)Picture1.Line (5500, 50)-(5400, 80)Picture1.Line (5500, 50)-(5400, 20)Picture1.Line (50, 50)-(50, 5500)Picture1.Line (50, 5500)-(20, 5400)Picture1.Line (50, 5500)-(80, 5400)Picture1.CurrentX = 60Picture1.CurrentY = 40Picture1.Print "(0,0)"Picture1.CurrentX = 5700Picture1.CurrentY = 100Picture1.Print "x"Picture1.CurrentX = 80Picture1.CurrentY = 5400Picture1.Print "-Y"For i = 1 To xePicture1.Line (50 + i * 500, 50)-(50 + i * 500, 100)Next iPicture1.PrintFor J = 1 To -yePicture1.Line (50, 50 + J * 500)-(100, 50 + J * 500)Next JPicture1.ForeColor = vbBlackPicture1.DrawWidth = 2Picture1.Line (50, 50)-(50 + 500 * Int(Text1), 50 - 500 * Int(Text2)) Elseans = MsgBox("出现出错!请检查", 48, "提示信息")End IfEnd IfEnd SubPrivate Sub Command2_Click()n = Int(Text3)k = 0m = 0xi = 0yi = 0xe = CInt(Text1)ye = CInt(Text2)Jvx = xeJvy = yeJrx = 0Jry = 0H = 2 ^ n - 1Picture1.ForeColor = vbRedPicture1.DrawWidth = 2If xe <= 0 And ye <= 0 ThenIf Option1 = True ThenPrint "累加次数 " & " X 积分器 " & " Y 积分器 " & " 终点判别 "Print " n " & " Jvx " & " Jrx " & "- X " & " Jvy " & " Jry " & "- Y " & " J"For i = 1 To 2 ^ nJrx = Jrx + Abs(Jvx)If Abs(Jrx) >= 2 ^ n ThenJrx = Abs(Jrx) - 2 ^ nk = 1xi = xi + 1End IfJry = Jry + Abs(Jvy)If Abs(Jry) >= 2 ^ n ThenJry = Abs(Jry) - 2 ^ nm = 1yi = yi + 1End IfIf k = 1 And m = 1 ThenPicture1.Line (5500 - 500 * (xi - 1), 50 + ((yi - 1) * 500))-(5500 - 500 * (xi),50 + (yi) * 500)ElseIf k = 1 And m = 0 ThenPicture1.Line (5500 - 500 * (xi - 1), 50 + (yi) * 500)-(5500 - 500 * (xi), 50 + (yi)* 500)ElseIf k = 0 And m = 1 ThenPicture1.Line (5500 - 500 * xi, 50 + (yi - 1) * 500)-(5500 - 500 * xi, 50 + (yi)* 500)End IfForm1.FontSize = 12Print " " & Left(CStr(i) & " ", 3) & " " & Left(CStr(Jvx) & " ", 3) &" " & Left(CStr(Jrx) & " ", 3) & " " & k & " " & Left(CStr(Jvy) & " ", 3) & " " & Left(CStr(Jry) & " ", 3) & " " & m; " " & Left(CStr(H)& " ", 3)k = 0m = 0H = H - 1Next iElse: ans = MsgBox("出现出错!请检查", 48, "提示信息")End IfElseIf xe >= 0 And ye <= 0 ThenIf Option2 = True ThenPrint "累加次数 " & " X 积分器 " & " Y 积分器 " & " 终点判别 "Print " n " & " Jvx " & " Jrx " & "+ X " & " Jvy " & " Jry" & "- Y " & " J"For i = 1 To 2 ^ nJrx = Jrx + JvxIf Jrx >= 2 ^ n ThenJrx = Jrx - 2 ^ nk = 1xi = xi + 1End IfJry = Jry + Abs(Jvy)If Abs(Jry) >= 2 ^ n ThenJry = Abs(Jry) - 2 ^ nm = 1yi = yi + 1End IfIf k = 1 And m = 1 ThenPicture1.Line (50 + 500 * (xi - 1), 50 + ((yi - 1) * 500))-(50 + 500 * (xi), 50 + (yi) * 500)ElseIf k = 1 And m = 0 ThenPicture1.Line (50 + 500 * (xi - 1), 50 + (yi) * 500)-(50 + 500 * (xi), 50 + (yi) * 500)ElseIf k = 0 And m = 1 ThenPicture1.Line (50 + 500 * xi, 50 + (yi - 1) * 500)-(50 + 500 * xi, 50 + (yi) * 500) End IfPrint " " & Left(CStr(i) & " ", 3) & " " & Left(CStr(Jvx) & " ", 3) & " " & Left(CStr(Jrx) & " ", 3) & " " & k & " " & Left(CStr(Jvy) & " ", 3) & " " & Left(CStr(Jry) & " ", 3) & " " & m; " " & Left(CStr(H) & " ", 3)k = 0m = 0H = H - 1Next iElse: ans = MsgBox("出现出错!请检查", 48, "提示信息")End IfEnd IfIf Text3.Text = "" Thenans = MsgBox("出现出错!请检查", 48, "提示信息")ElseIf xe = "" Thenans = MsgBox("出现出错!请检查", 48, "提示信息")ElseIf ye = "" Thenans = MsgBox("出现出错!请检查", 48, "提示信息")End IfEnd SubPrivate Sub Command3_Click()Text1.Text = ""Text2.Text = ""Text3.Text = ""Picture1.ClsOption1 = FalseOption2 = FalseForm1.ClsEnd SubPrivate Sub Command4_Click()EndEnd Sub五结论本次设计运用软件插补程序进行插补控制,调整和修改都很方便,而且数字积分法插补运算速度快,脉冲分配均匀,易于实现多坐标联动及描绘平面各种函数曲线的特点。

相关文档
最新文档