数控课程设计(数字积分法第二象限直线插补程序)
数字积分法直线插补第二象限全部代码.doc
PictureloPicturelo数字积分法直线插补第二象限全部代码私人潜艇 Command 1 Click() xe = CInt (Textl)你们二 CInt(Text2)行(5400、5470)-(5500, 5500) 行(5400、5530)-(5500, 5500)如果xe 二那么就等于0 Picturelo字体颜色二vbBlack PictureloDrawWidth = 2 Picturelo线(5500)-(500) Picturelo行(5500)-(5500, 5500) Picturelo线(500)-(600) Picturelo行(500)-(80, 600) PictureloCurrentX = 10 Picturelo 当前y 坐标二5300Picturelo 当前y 坐标二5200Picturelo 打印"x”Picturelo CurrentX = 100Picturelo 当前y 坐标二100Pictured 打印"Y”i=l 到xePictured 行(50+i 500, 5500)-(50+500, 5450)接下来,我对于j=lPicturelo 行(50, 5500-j 500)-(100, 5500-j 500)下一个我Picturelo字体颜色二vbr业务Picturelo DrawWidth = 2Pictured 行(50, 5500) - (50+500 Int (Textl) ,5500-500 Int (Text2))如果是xe小于等于0,则是0Picturelo DrawWidth = 2Pictured 行(5500、5500)-(5500 年,50) Pictured 行(5500 年,50)-(5530, 150) Pictured 行(5500 年,50) -(5470, 150) Pictured 线(5500、5500)-(5500) Pictured 行(5500)-(150, 5470) Pictured 行(5500)-(150, 5530) Picturelo CurrentX = 5600Picturelo 当前y 坐标二5400 Pictured 打印”(0,0)”Picturel o CurrentX = 100Picturelo 当前y 坐标二5200Picturel o打印”- x”Picturelo 打印"Y”因为i=l到-xePictured 行(5500-500, 5500)-(5500-500, 5450)接下来,我对于j=lPicturelo 行(5500, 5500-j 500)-(5500, 5500-j 500)下一个我Picturelo 字体颜色二vbBlackPicturelo DrawWidth = 2Pictured 行(5500, 5500)-(5500+500 Int(Textl), 5500-500 Int (Text2))如果是xe小于等于0,那么叶小于等于0Pictured 行(5500 年,50)-(5500, 5500)Picturelo 行(5500、5500)-(5530,5400)Picturelo 线(50, 50)-(150 年,20) Pictured 线(50,50)-(150、80)Picturelo CurrentX = 5600Picturelo 当前y 坐标二40Pictured 打印”(0,0)”Picturelo CurrentX = 100Picturelo 当前y 坐标二100Picturelo 打印”- x”Picturelo CurrentX = 5600Picturelo 当前y 坐标二5400Picturelo 打印”- y”因为i=l到-xePictured 行(5500-500, 50)-(5500-500, 100) 接下来,我j=l到一叶Pictured 行(5500, 50+j 500)-(5, 50+j 500)下一个我Picturelo 字体颜色二vbBlackPictured DrawWidth 二 2Pictured 线(550050)-(5500+500 Int(Textl), 50-500 Int(Text2)) 如果是0,那么叶小于等于0Picturelo 字体颜色二vbBlackPicturelo DrawWidth = 2Pictured 行(50, 50)-(5500 年,50)Pictured 行(5500 年,50)-(5400, 80)Picturelo 线(5500 年,50)-(5400 年,20) Pictured 线(50, 50)-(5500)Picturelo 线(5500)-(5400)Picturelo 行(5500)-(80, 5400) Picturelo 当前y 坐标二40Pictured 打印”(0,0)”Picturelo CurrentX = 5700Picturelo 当前y 坐标二100 Picturelo 打印"x”Picturelo CurrentX = 80Picturelo 当前y 坐标二5400 Picturelo 打印”- y”i=l 到xePictured 行(50+500, 50)-(50+500, 100) 接下来,我Picturel. Printj=l至U-叶Pictured 行(50 50+j 500)-(100, 50+j 500)下一个我Picturelo DrawWidth = 2Picturelo 行(50, 50)-(50+500 Int (Textl), 50-500 Int (Text2)) 如果终止子私人潜艇Command2_C 1 ick ()n 二Int (Text5)&二0易建联二0xe 二CInt(Textl)你们二CInt (Text2)jvx 二xejvy二你们jrx 二0 jry 二0如果xe=O,那么就等于0i=l 到 2 njrx=jrx+jvx如果jrx=2 njrx=jrx-2nk = 1xi=xi+1如果杰里如果jry=2 njry-2 nm = 1yi=yi+1如果Picturelo 字体颜色二vbGreen如果k=l和m=lPicturelo 线(50 + 500 *(xi - 1), 5500(500) (yi - 1)*)-(50 + 500 *(xi)500 -(易建联)* 500)如果k= 1和m=0Pictured 行(50+500 (xi-l), 5500-(yi) 500)-(50+500 (xi),5500-(yi)500)如果k=0和m=lPicturel。
数字积分圆弧第一二三四象限顺逆插补计算
数控技术课程设计说明书设计题目:数字积分法圆弧插补计软件设计指导老师:专业:机械设计制造及其自动化班级:机姓名:学号:目录一、课程设计题目 (1)二、课程设计的目的 (1)三、课程设计使用的主要仪器设备 (1)四、课程设计的任务题目描述和要求 (1)五、数字积分法插补原理 (2)5.1从几何角度来看积分运算 (2)5.2数字积分圆弧插补 (3)5.3数字积分法圆弧插补程序流程图 (5)5.4插补实例 (6)六、程序清单 (7)七、软件运行效果仿真 (18)八、课程小节 (21)九、参考文献 (22)一、课程设计题目数字积分法第一、二、三、四象限顺、逆圆插补计算二、课程设计的目的《数控原理与系统》是自动化(数控)专业的一门主要专业课程,安排课程设计的目的是通过课程设计方式使学生进一步掌握和消化数控原理基本内容,了解数控系统的组成,掌握系统控制原理和方法,通过设计与调试,掌握各种功能实的现方法,为今后从事数控领域的工作打下扎实的基础。
1)了解连续轨迹控制数控系统的组成原理。
2) 掌握数字积分法(DDA)插补的基本原理。
3)掌握数字积分法(DDA)插补的软件实现方法。
三、课程设计使用的主要仪器设备1、PC计算机一台2、数控机床实验装置一台3、支持软件若干(选用VB环境)四、课程设计的任务题目描述和要求数字积分法又称数字微分分析法DDA(Digital Differential Analyzer)。
数字积分法具有运算速度快、脉冲分配均匀、易于实现多坐标联动及描绘平面各种函数曲线的特点,应用比较广泛。
其缺点是速度调节不便,插补精度需要采取一定措施才能满足要求。
由于计算机有较强的计算功能和灵活性,采用软件插补时,上述缺点易于克服。
本次课程设计具体要求如下:(1)掌握数字积分插补法基本原理(2)设计出数字积分(DDA)插补法插补软件流程图(3)编写出算法程序清单算法描述(数字积分法算法在VB中的具体实现)(4)要求软件能够实现第一、二、三、四象限顺、逆圆插补计算(5)软件运行仿真效果插补结果要求能够以图形模式进行输出五、数字积分法插补原理数字积分法又称数字积分分析法DDA(Digital differential Analyzer),简称积分器,是在数字积分器的基础上建立起来的一种插补算法。
数字积分法(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。
数字积分插补
ì 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 î
数控插补 补充
提高插补精度的措施 对于DDA圆弧插补,径向误差可能大于一个脉 冲当量,因数字积分器溢出脉冲的频率与被积 函数寄存器中的数值成正比,在坐标轴附近进 行累加时,一个积分器的被积函数值接近零, 而另一个积分器的被积函数接近于最大值,累 加时后者连续溢出,前者几乎没有,两个积分 器的溢出脉冲频率相差很大,致使插补轨迹偏 离给定圆弧距离较大,使圆弧误差增大。 减少误差的方法有:减小脉冲当量,误差减少, 但寄存器容量增大,累加次数增加。而且要获 得同样的进给速度,需要提高插补速度。
(3-32)
由此可以推出(xi,yi)与x、y 的关系式
1 1 X X i l cos Y 2 2 1 1 X Yi Y Yi l sin 2 2 Xi
(3-33)
式(3-33)反映了圆弧上任意相邻两插补点坐标之间 的关系,只要求得 X 和 Y ,就可以计算出新的插补点 B( X i 1 , Yi 1 ) X X X
累加 次数 (Δ t)
X 积分器
Y 积分器
JVX
JRX
ΔX
JEX JVY
JRY
ΔY
JEY
0 1 2 3 4
5 5 5 5 5 4
4 5+4=8+1 5+1=6 5+6=8+3 5+3=8+0
5 1 4 4 1 1 3 2
0
4 0 0+4=4 1 1 1+4=5 1 1+5=6 2 2 2+6=8+0 3
(3)
还可采用余数寄存器预置数法,即在DDA插补之前, 累加器又称余数寄存器JRX,JRY的初值不置零,而是预 置2n/2,若用二进制表示,其最高有效位置“1”,其它 各位置零,若再累加100…000,余数寄存器就可以产 生第一个溢出脉冲,使积分器提前溢出。这种处理方 式称为“半加载”,在被积函数值较小,不能很快产 生溢出脉冲的情况下,可使脉冲提前溢出,改变了溢 出脉冲的时间分布,达到减少插补误差的目的。 例3-5 加工第一象限顺圆AB,如图3-27,起点A(0, 5),终点B(0,5)选用寄存器位数n=3,经过 “半 加载”处理后,试用DDA法进行插补计算。 其插补运算过程见表3-5。
5.数字积分法直线插补
床进给,其效果是一样的。在被寄函数寄存器里可只存Xe, 而省略k。
例如,Xe=100101在一个6位寄存器中存放,若k=1/26, kXe=0.100101也存放在6位寄存器中,数字是一样的,若进
行一次累加,都有溢出,余数数字也相同,只是小数点位置
终点坐标值,每经过一个时间间隔t,将被积函数值向各自的累加器中
累加,当累加结果超出寄存器容量时,就溢出一个脉冲,若寄存器位 数为n,经过2n次累加后,每个坐标轴的溢出脉冲总数就等于该坐标的 被积函数值,从而控制刀具到达终点。
机电工程学院
=k
刀具在X,Y方向移动的微小增量分别为:
X = Vxt = kXet Y = Vyt = kYet
机电工程学院
动点从原点出发走向终点的过程,可以看作是各坐标轴每经过
一个单位时间间隔t,分别以增量kXe及kYe同时累加的结果。
m
m
X = X i = kX eti
i =1
i=1
m
m
Y = Yi = kYeti
有缘学习更多+谓ygd3076或关注桃报:奉献教育(店铺)
如果存放Xe,Ye寄存器的位数是n,对应最大允许数字量
为 2n 1(各位均为1),所以Xe,Ye最大寄存数值为 2n 1
则: k (2n 1,不妨取
k
=
1 2n
代入得:
2
n 2n
1
1
累加次数为: m = 1 = 2n
5. 数字积分法直线插补
如右图所示第一象
限直线OE,起点为坐标 Y
原点O,终点坐标为E (Xe,Ye),直线OE的
长度L为:
Vy V E(Xe,Ye) Vx
数控机床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'));
数控机床其它插补方法介绍
时间分割插补法是典型的数据插补方法。
3、扩展DDA数据采样插补法
扩展DDA算法是在数字积分原理的基础上发展起来的。
课堂总结
1、数字积分插补法及直线插补算法;
2、数据采样插补法的相关知识。
15
5分
3、例题
设有一直线OA,起点为原点O,终点A坐标为(8,10),累加器和寄存器的位数为4位,其最大容量为24=16。试用数字积分法进行插补计算并画出走步轨迹图。
4、习题
(1)设有一直线OA,起点为原点O,终点A坐标为(7,11),累加器和寄存器的位数为4位,其最大容量为24=16。试用数字积分法进行插补计算并画出走步轨迹图。
设加工第一象限逆圆AB,已知起点A(8,0),终点B(0,8)。试进行插补计算并画出走步轨迹图。
讲授新课
一、数字积分插补法
主要采用图解法、讨论法、引导法和演示法。
1、概述
数字积分法又称数字微分分析法(DDA),是在数字积分器的基础上建立起来的一种插补法。
数字积分法具有运算速度快、脉冲分配均匀、易实现多坐标联动等优点。
学生练习习题,巩固所学的知识
6分
10分Biblioteka 8分20分教与学互动设计
教师活动内容
学生活动内容
时间
6、例题
设加工第一象限逆圆弧,其圆心在圆点,起点A坐标为(6,0),终点B(0,6),累加器为三位,试用数字积分法插补计算,并画出走步轨迹图。
二、数据采样插补法
主要采用讲解法、引导法和归纳法。
1、概述
数据采样插补用小段直线来逼近给定轨迹,插补输出的是下一个插补周期内各轴要运动的距离,不需要每走一个脉冲当量插补一次,可达到很高的进给速度。
教案
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)
第一象限顺圆弧的插补问题可转换为第一象限逆圆弧的插补问题,转换方 法如下。
二数字积分法插补
ΔX=VxΔt
Y
ΔY=VyΔt
若动点沿OA匀速移动, V、
Vx、Vy均为常数,则有:
V
=
Vx
Vy =
=K
OA Xe Ye
成立。
O
A(Xe,Ye)
V Vy
Vx
X
因而可以得到坐标微小位移增量为:
ΔX=VxΔt=KXeΔt
ΔY=VyΔt =KYeΔt 所以,可以把动点从原点
走向终点的过程看作X、Y Y 坐标每经过一个单位时间
二、数字积分法插补
数字积分法又称数字微分分析器(Digital Differential Analyzer,简称DDA)。采用该方法进行插补,具有运算 速度快,逻辑功能强,脉冲分配均匀等特点,且只输 入很少的数据,就能加工出直线、圆弧等较复杂的曲 线轨迹,精度也能满足要求。因此,该方法在数控系 统中得到广泛的应用。
如图所示,设加工半径为R的第一象限逆时针圆弧AB, 坐标原点定在圆心上,A(Xo,Yo)为圆弧起点,B(Xe,Ye) 为圆弧终点,Pi(Xi,Yi)为加工动点。
011 ΔX,ΔY同时无溢出
6 010 100 110 100 1 010
ΔY溢出
7 010 110 110 010 1 001
ΔY溢出
ΔX,ΔY同时溢出
8 010 000 1 110 000 1 000 JE=0,插补结束
加工轨迹如下:
Y
6
A( 2 , 6 )
5 4
3
2
1
O 12
X
(三)数字积分圆弧插补
被积函数寄存器
存放Y值
Δt +
ΔY 累加器(余数寄存器)
被积函数寄存器与累加器相加的计算方法:
逐点比较法
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;
数控原理直线插补课程设计
太原工业学院课程设计任务书系部:机械工程系专业:机械设计制造及其自动化学生姓名:学号:设计题目:数控插补程序设计–第×象项直线(圆弧)插补起迄日期:设计地点:指导教师:发任务书日期: 年月日一.实验名称:直线插补(第一象限)二.实验要求:1.了解数控插补的原理;掌握第××象项直线(圆弧)插补算法2.设计流程图,并根据流程图编制程序,学会用软件方法实现插补运算。
3.学会调试程序三.实验内容:算法设计:上图为第一象限直线,其终点坐标为(Xe,Ye),现分析其插补规律。
刀尖点位置不外乎3种情况:轮廓线上方(点A),轮廓线上(B点),轮廓线下方(点C)。
显然,在点A处,为使刀尖点向轮廓直线靠拢,应+X向走一步;C点处,应+Y向走一步;至于B点,看来两个方向均可以,但考虑汇编编程时的方便,现规定往+X向走一步。
A(X,Y)点处有:Y/X e XeY-XYe > 0e XeY-XYe = 0C(X,Y)点处有:Y/X< e XeY-XYe < 0F=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计算要方便。
插补点位于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。
●程序流程图:●源程序设计:#include <stdio.h>#include <math.h>void main(){int x=0,y=0; /*x,y分别为运行过程中各点的横纵坐标值*/int f=0; /*f存偏差判别的值*/int n,i,j,t; /*n为终点横纵坐标绝对值之和,i,j分别为终点横纵坐标*/printf("请输入终点坐标:");scanf("%d,%d",&i,&j);n=abs(i)+abs(j);if(i>=0) /*终点的横坐标大于0,说明在一或四象限中*/{if(j>=0){ /*纵坐标大于0,说明终点在第一象限*/for(t=1;t<=n;t++){if(f>=0){x=x+1;f=f-j;printf("x=%d,y=%d\n",x,y);}else{y=y+1;f=f+i;printf("x=%d,y=%d\n",x,y);}}}}}程序编译与调试:编译环境为TurboC2.0,一次编译通过。
数控机床DDA数字积分法插补第一象限直线,逐点比较法插补二三象限顺圆弧
数控机床DDA数字积分法插补第⼀象限直线,逐点⽐较法插补⼆三象限顺圆弧⽬录⼀、课程设计介绍1.1 任务说明 (3)1.2要求 (3)⼆、程序操作及算法流程图2.1 DDA法插补直线流程 (3)2.2逐点⽐较法插补逆时针圆弧流程 (4)三、⽤户使⽤说明3.1 程序开始运⾏时显⽰介⾯ (5)3.2 执⾏计算 (5)3.3 DDA法直线插补实例 (6)3.4 逐点⽐较法插补第⼆三象限逆时针圆弧 (7)四、主要算法及源程序4.1 程序设计概述 (8)4.2 主要算法的实现 (8)4.2.1 参数声明 (8)4.2.2复位操作 (9)4.2.3单步操作 (11)4.2.4 连续插补 (11)4.2.5 辅助操作 (13)五、本设计的特点 (13)六、课程设计的感想 (13)七、主要参考⽂献 (14)⼀、课程设计介绍1.1、任务说明:(1)直线插补:DL1, DDA 法第⼀象限直线插补。
(2)圆弧插补:PA23,逐点⽐较法⼆三象限顺圆弧插补。
1.2、要求:(1)具有数据输⼊界⾯,如:起点,终点,圆⼼,半径及插补步长。
(2)具有插补过程的动态显⽰功能,如:但单步插补,连续插补,插补步长可调。
本课程设计的题⽬要求是DDA数字积分法插补第⼀象限直线,逐点⽐较法插补⼆三象限顺圆弧。
由于本课设要求只为⼆三象限,故默认为劣弧插补。
此外,对于两种插补对象均可根据需要改变插补步长,以表现不同的插补效果。
在插补显⽰过程中,有两种插补显⽰⽅式,即⼿动单步插补和⾃动连续插补动态显⽰。
⼆、程序操作及算法流程图 2.1 DDA 法插补直线流程初始化sx sy ex ey 步长bc 寄存器vx1 vy1 累加器 rx1 ry1rx1=rx1+vx1 ry1=ry1+vy1ry1是否溢出rx1是否溢出是否到达终点结束 +x ⾛⼀个步长 +y ⾛⼀个步长NY NYNY开始DDA 插补第⼀象限的直线流程图2.2逐点⽐较法插补逆时针圆弧流程逐点⽐较法插补⼆三象限逆圆弧参数说明:sx 、sy 为起点坐标ex 、ey 为终点坐标开始初始化sx ex sy sy bc 弧半径平⽅rY21>=0r>=0r>=0向—y ⾛⼀步向x ⾛⼀步向—y ⾛⼀步向—x ⾛⼀步是否到达终点结束yyynnnn yn为进给总次数cx、cy为圆⼼坐标bc为步长m为寄存器位数s_1表⽰按下直线选项,s_2表⽰按下圆弧按钮三、⽤户使⽤说明——软件运⾏说明及结果显⽰3.1 程序开始运⾏时显⽰介⾯3.2 执⾏计算在右侧⾯板中有参数输⼊区,⽅式选择区以及执⾏按钮等操作。
第八讲 插补算法-直线数字积分
插补过程
Y: 10101010 X: 11011010
插补过程
Y: 10101010 X: 11011010
插补过程
Y: 10101010 X: 11011010
插补过程
Y: 10101010 X: 11011010
插补过程
Y: 10101010 X: 11011010
插补过程
Y: 10101010 X: 11011010
4
坐标轴的进给速度由数控系统发给进给系统的脉冲频率确定,V=kf; Vx = k fx,Vy = k fy; Vx :Vy = fx:fy = Xe :Ye;
直线插补问题可等效为获取定比脉冲的问题。
和尚打水的故事
从前有座山,山上有座庙,庙里有 一个胖和尚和一个瘦和尚,因路途
遥远、每天早上胖和尚和瘦和尚相
直线插补解决了,圆弧呢?
课后思考!
容量为8
010 10
010 10
溢出的过程
5 + 基准脉冲 8+4 7+5 7 4 4 + 4+4 8+0 4 0
Y轴进给系统 X轴进给系统
容量为8
1010 010
1010 010
溢出的过程
5 + 基准脉冲 4+5 8+1 4 1 4 + 0+4 4 0
Y轴进给系统 X轴进给系统
容量为8
11010 1010
01010 1010
溢出的过程
5 + 基准脉冲 1+5 6 1 4 + 4+4 8+0 4 0
Y轴进给系统 X轴进给系统
容量为8
பைடு நூலகம்
数控技术(插补2)
4.1.2 非圆曲线的节点计算
非圆曲线:除直线、与圆外,可用y=f(x)表示的平面 曲线。 节点的数目及其坐标值取决于曲线的特性,逼近 线段的形状及允许的迫近误差δ允。根据这三方面的 条件、可用数学方法求出各节点的坐标。 是用直线还是圆弧作为逼近线段,则应考虑在保 证逼近精度的前提下,使节点数目少,计算简单。 1)曲率半径大的曲线用直线逼近较为有利; 2)曲线某段接近圆弧,用圆弧逼近有利; 常用的逼近线段与节点计算方法有以下几种。
节点的计算依据: 圆弧段与工件轮廓曲线间的误差 ≤δ允。
4.2 三次参数样条曲线
某些零件,如机翼外形、内燃机进排气门的 凸轮曲线等,对外形的光顺性要求较高,曲 线的光顺性就意味着曲线的导数要连续。如 果要求曲线的一阶和二阶导数都是连续的, 这可用三次样条曲线。 样条:最初是在造船业中放样用的一根木料 或塑料做成的弹性长条,放样员利用它通过 型值点画出光滑的曲线,样条曲线便由此而 得名。 下面介绍三次参数样条曲线。
4.1.1 节点的计算
对于自由曲线,一般的数控系统不具备自由
曲线的插补功能,做法是:即将这类轮廓曲线
按编程允差分割成许多小段,用直线或圆弧来
代替(即逼近)这些曲线小段。
节点:逼近直线或圆弧小段与轮廓曲线的交点
或切点称为节点。
数值计算的任务就是求算节点的坐标。
在数控加工方法中所说的空间立体曲 面的行切法加工,实际上是用许多平行的 平面曲线来逼近空间曲面,这时需求出所 有的平面曲线,面且还要计算各平面曲线 上的基点或节点,然后再编写各节点、基 点之间的直线或圆弧加工程序。
第三章轮廓加工的数学基础
在插补过程中,计算机应在规定的插补时 间Δt内给出各坐标方向的增ΔXi﹑ΔZi,因 此实际的刀具位置为:
逐点插补第二象限插补程序
第二象限插补Dim k As Integer '总步数Dim x1 As Integer '终点横坐标Dim y1 As Integer '终点纵坐标Dim f As Integer '偏差Dim x2 As Integer '动点横坐标Dim y2 As Integer '动点纵坐标Dim lidu As Integer '加工精度Dim result As IntegerPrivate Sub Command1_Click() '绘制需要插补的直线,并且开始插补x1 = Abs(Val(Text1.Text))y1 = Val(Text2.Text)lidu = Val(Text3.Text)k = Abs(x1) + y1f = 0x2 = 0y2 = 0Picture1.Line (100, 100)-(100 - x1, 100 - y1)Timer1.Enabled = TrueEnd SubPrivate Sub Command3_Click() '重绘坐标轴draw_xyEnd SubPrivate Sub Command4_Click() '各轴回到原点result = get_status(0, 1, value)If value = 0 Then result = symmetry_absolute_move(0, 1, 0, 1000, 2000, 0.1)result = get_status(0, 2, value)If value = 0 Then result = symmetry_absolute_move(0, 2, 0, 1000, 2000, 0.1)End SubPrivate Sub Form_Load()result = adt8940a1_initialdraw_xyTimer1.Enabled = FalseEnd SubPrivate Sub chabu(f As Integer, x As Integer, y As Integer) '插补函数If f >= 0 Then '偏差大于等于0时,x向进给x = x - liduf = f - y1Do '循环判断运动卡状态result = get_status(0, 1, value) '获取状态If value = 0 Then '当运动卡状态为驱动结束时,value值为0,这时可以再次驱动result = symmetry_relative_move(0, 1, -lidu * 10, 1000, 2000, 0.1) 'x轴运动Picture1.Line (x + lidu + 100, 100 - y)-(x + 100, 100 - y) 'x轴绘制End IfLoop Until value = 0Else '偏差小于0时,y向进给y = y + liduf = f + x1Doresult = get_status(0, 2, value)If value = 0 Thenresult = symmetry_relative_move(0, 2, lidu * 10, 1000, 2000, 0.1)Picture1.Line (x + 100, 100 - (y - lidu))-(x + 100, 100 - y)End IfLoop Until value = 0End IfEnd SubPrivate Sub Timer1_Timer() '当k>0时计时器开始调用插补函数If k > 0 Thenk = k - liduchabu f, x2, y2ElseTimer1.Enabled = FalseEnd IfEnd SubPublic Sub draw_xy() '绘制坐标轴函数Picture1.ClsPicture1.Line (100, 10)-(100, 100)Picture1.Line (100, 10)-(101, 11)Picture1.Line (100, 10)-(99, 11)Picture1.Line (10, 100)-(100, 100)Picture1.Line (10, 100)-(11, 101)Picture1.Line (10, 100)-(11, 99)End Sub第一象限插补Dim k As Integer '总步数Dim x1 As Integer '终点横坐标Dim y1 As Integer '终点纵坐标Dim f As Integer '偏差Dim x2 As Integer '动点横坐标Dim y2 As Integer '动点纵坐标Dim lidu As Integer '加工精度Dim result As IntegerPrivate Sub Command1_Click() '绘制需要插补的直线,并且开始插补x1 = V al(Text1.Text)y1 = Val(Text2.Text)lidu = Val(Text3.Text)k = x1 + y1f = 0x2 = 0y2 = 0Picture1.Line (10, 100)-(10 + x1, 100 - y1)Timer1.Enabled = TrueEnd SubPrivate Sub Command3_Click() '重绘坐标轴draw_xyEnd SubPrivate Sub Command4_Click() '各轴回到原点result = get_status(0, 1, value)If value = 0 Then result = symmetry_absolute_move(0, 1, 0, 1000, 2000, 0.1)result = get_status(0, 2, value)If value = 0 Then result = symmetry_absolute_move(0, 2, 0, 1000, 2000, 0.1)End SubPrivate Sub Form_Load()result = adt8940a1_initialdraw_xyTimer1.Enabled = FalseEnd SubPrivate Sub chabu(f As Integer, x As Integer, y As Integer) '插补函数If f >= 0 Then '偏差大于等于0时,x向进给x = x + liduf = f - y1Do '循环判断运动卡状态result = get_status(0, 1, value) '获取状态If value = 0 Then '当运动卡状态为驱动结束时,value值为0,这时可以再次驱动result = symmetry_relative_move(0, 1, lidu * 10, 1000, 2000, 0.1) 'x轴运动Picture1.Line (x - lidu + 10, 100 - y)-(x + 10, 100 - y) 'x轴绘制End IfLoop Until value = 0Else '偏差小于0时,y向进给y = y + liduf = f + x1Doresult = get_status(0, 2, value)If value = 0 Thenresult = symmetry_relative_move(0, 2, lidu * 10, 1000, 2000, 0.1)Picture1.Line (x + 10, 100 - (y - lidu))-(x + 10, 100 - y)End IfLoop Until value = 0End IfEnd SubPrivate Sub Timer1_Timer() '当k>0时计时器开始调用插补函数If k > 0 Thenk = k - liduchabu f, x2, y2ElseTimer1.Enabled = FalseEnd IfEnd SubPublic Sub draw_xy() '绘制坐标轴函数Picture1.ClsPicture1.Line (10, 10)-(10, 100)Picture1.Line (10, 10)-(11, 11)Picture1.Line (10, 10)-(9, 11)Picture1.Line (10, 100)-(100, 100)Picture1.Line (100, 100)-(99, 101)Picture1.Line (100, 100)-(99, 99)End Sub。
数控技术插补实验 PPT课件
4
直线插补左移规格化
3
直线插补的左移规格化
• 在直线插补时,将被积函数寄存器JVX、JVY中的非 规格化数xe 、ye等同时左移,直到JVX、JVY中有一 个数是规格化数为止,称为左移规格化。
• 左移一位相当于乘2,左移二位相当于乘22,依此类 推,这意味着把各方向的脉冲分配速度扩大同样的 倍数。两者数值之比不变,所以直线斜率也不变
8
半加载
• “半加载”是在DDA插补迭代前,余数寄存器JRX、 JRY的初值不是置零,而是置为1000…000(即 0.5) ;
• 对被积函数较小、迟迟不能产生溢出的情况时,有 很大的实际意义,它改善了溢出脉冲的时间分布, 减小了插补误差 ;
• “半加载”可以使直线插补的误差减小到半个脉冲 当量以内
6
圆弧插补的左移规格化
• 圆弧插补的左移规格化是使坐标值最大的被积函数寄存器的 次高位为1(即保持一个前零),也就是说,在圆弧插补中 将JVX、JVY寄存器中次高位为“1”的数称为规格化数。
• 另外,左移s位,相当于X、Y方向的坐标值扩大了2s倍,亦 即JVX、JVY寄存器的数分别为2syj及2sxi,这样,当Y积分器 有一溢出Δy时,则JVX寄存器中的数应改为2syj→2s(yj+1) =2syj +2s。表明,若规格化过程中左移s位,当JRY中溢出 一个脉冲时,JVX寄存器应该加2s,而不是加1,即JVX寄存器 第s+1位加“l”。同理,若JRX寄存器溢出一个脉冲时,JVY 寄存器应该减小2s,即第s+1位减“l”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字积分法第二象限直线插补程序设计数字积分法是利用数字积分的方法,计算刀具沿各坐标轴的位移,使得刀具沿着所加工的轮廓曲线运动利用数字积分原理构成的插补装置称为数字积分器,又称数字微分分析器(Digital Differential Analyzer),简称DDA。
数字积分器插补的最大优点在于容易实现多坐标轴的联动插补、能够描述空间直线及平面各种函数曲线等。
因此,数字积分法插补在轮廓数控系统中得到广泛的应用。
具体设计内容如以下:……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………目录一、课程设计目的 (1)二、课程设计题目描述和要求 (1)三、课程设计报告内容 (1)数字积分法直线插补的基本原理 (2)从几何角度来看积分运算 (2)数字积分法在轮廓插补中的具体应用(数字积分法直线插补)3 插补终点判别的具体实现 (4)插补器的组成 (5)数字积分法稳速控制 (5)提高插补精度的措施 (6)减少误差的方法 (6)数字积分法直线插补框图 (7)数字积分法直线(第二象限)插补程序流程图 (7)四结论 (8)五结束语 (8)参考书目 (10)附录数字积分法直线插补程序清单(第二象限) (11)一、课程设计目的1)了解连续轨迹控制数控系统的组成原理。
2) 掌握数字积分插补的基本原理。
3)掌握数字积分插补的软件实现方法。
二、课程设计题目描述和要求数字积分法又称数字微分分析法DDA(Digital Differential Analyzer)。
数字积分法具有运算速度快、脉冲分配均匀、易于实现多坐标联动及描绘平面各种函数曲线的特点,应用比较广泛。
其缺点是速度调节不便,插补精度需要采取一定措施才能满足要求。
由于计算机有较强的计算功能和灵活性,采用软件插补时,上述缺点易于克服。
本次课程设计具体要求如下:1)数字积分插补法基本原理2)数字积分插补法插补软件流程图3)算法描述(数字积分法算法在VC++中的具体实现)4)编写算法程序清单5)软件运行仿真效果三、课程设计报告内容插补运算就是运用特定的算法对工件加工轨迹进行运算并根据运算结果向相应的坐标发出运动指令的过程。
插补运算可以采用数控系统硬件或数控系统软件来完成。
硬件插补器:速度快,但缺乏柔性,调整和修改都困难。
软件插补器:速度慢,但柔性高,调整和修改都很方便。
早期硬件数控系统:采用由数字逻辑电路组成的硬件插补器;CNC 系统:采用软件插补器,或软件、硬件相结合的插补方式。
数字积分法直线插补的基本原理数字积分法是利用数字积分的方法,计算刀具沿各坐标轴的位移,使得刀具沿着所加工的轮廓曲线运动利用数字积分原理构成的插补装置称为数字积分器,又称数字微分分析器(Digital Differential Analyzer ),简称DDA 。
数字积分器插补的最大优点在于容易实现多坐标轴的联动插补、能够描述空间直线及平面各种函数曲线等。
因此,数字积分法插补在轮廓数控系统中得到广泛的应用。
3.1.1从几何角度来看积分运算积分运算就是求出函数Y =f (t )曲线与横轴所围成的面积,从t =t0到tn 时刻,函数Y= f(t )的积分值可表述为⎰⎰==n n t t t t dt )t (Ydt S 00f如果进一步将t ∈[t0,tn]的时间区划分为若干个等间隔Δt 的小区间,当Δt 足够小时,函数Y 的积分可用下式近似表示t Y Ydt S n i i t t n ∆∑⎰-=≈=100在几何上就是用一系列的小矩形面积之和来近似表示函数f (t )以下的积分面积。
进一步如果在式中,取Δt 为基本单位“1”,则上式可演化成数字积分器算式: ∑-==10n i i Y S由此可见,通过假设Δt =“1”,就可将积分运算转化为式所示的求纵坐标值的累加运算。
若再假设累加器容量为一个单位面积值,则在累加过程中超过一个单位面积时立即产生一个溢出脉冲。
这样,累加过程所产生的溢出脉冲总数就等于所求的总面积,即所求的积分值。
下面就以直线和圆弧轨迹为例详细介绍3.1.2数字积分法在轮廓插补中的具体应用(数字积分法直线插补)设将要加工的直线为XOY 平面内第2象限直线OE ,直线的起点在坐标原点,终点为E (Xe ,Ye )。
同样,假设坐标值均为以脉冲当量为单位的整数。
若此时刀具在两坐标轴上的进给速度分量分别为Vx 、Vy ,则刀具在X 轴、Y轴方向上位移增量分别为ΔX =Vx Δt ΔY =Vy Δt由几何关系可以看出K Y V X V OE Ve Y e X ===现将式中的Vx 、Vy 分别代入式可得ΔX =KXe Δt ΔY =KYe Δt可见,刀具由原点O 走向终点E的过程,可以看作是每经过一个单位时间间隔Δt ,就分别以增量 [KXe]、[KYe]同时在两个坐标轴累加的结果。
也可以这样认为,数字积分法插补实际上就是利用速度分量,进行数字积分来确定刀具在各坐标轴上位置的过程,即:i n i e n i i t KX X X ∆∆∑∑====11i n i e n i i t KY Y Y ∆∆∑∑====11当取Δt =“1”(一个单位时间间隔),则式将演变为 nKX t KX X i n i e =∆=∑=1e i n i e nKY t KY Y ==∑=∆1设经过n 次累加后,刀具正好到达终点E (Xe ,Ye ),即要求式中常量满足下式:nK=1 或 n=1/K从上式可以看出,比例常数K和累加次数n之间的关系是互为倒数,即两者相互制约,不能独立自由选择。
也就是说只要选定了其中一个,则另一个随之确定了。
由于式中n是累加次数,必须取整数,这样K就必须取小数。
为了保证每次分配给坐标轴的进给脉冲不超过1个单位(一般指1个脉冲当量),则:ΔX=KXe <1 ΔY=KYe <1上式中Xe、Ye的最大允许值受系统中相应寄存器的容量限制。
现假设寄存器为N位,则其容量为2N,对应存储的最大允许数字量为(2N-1),将其代入式中Xe、Ye,则可得到: K <1/(2N-1)现不妨取K=2N,显然它满足式和式的约束条件,再将K值代入式,可得累加次数为: n=1/K=2N ,也就是说,经过n=2N次累加后,动点(刀具)将正好到达终点E。
事实上,如果将n、K值代入式,则动点坐标为:X=KXe·n=(1/2N)Xe2N=Xe Y=KYe·n=(1/2N)Ye2N=Ye根据以上分析,在进行直线插补时,先开辟两个被积函数寄存器Jvx、Jvy 分别存放终点坐标值Xe、Ye,还有两个余数寄存器JRX和JRY。
然后,当脉冲源每发送一个控制脉冲信号Δt,X轴积分器和Y轴积分器各累加一次。
当累加结果超出余数寄存器容量2N-1时,就产生一个溢出脉冲ΔX(或ΔY)。
这样,经过2N次累加后,每个坐标轴溢出脉冲的总数就等于该轴的被积函数值(Xe和Ye),从而控制刀具到达了终点E。
插补终点判别的具体实现直线插补时不论被积函数有多大,对于N位寄存器。
必须累加2N次才能到达终点。
因此可以用一容量为2N的寄存器当计数器,来统计累加的次数。
可以用加1计数器,也可以用减1计数器。
采用加1计数器时,首先将计数器清零,运算过程中每来一个累加脉冲△t 就加1。
当计数器满2N时表明运算完成。
采用减1计数器时,运算前把总运算次数2N送入计数器,每运算一次,就减去1。
当计数器减为0时,表明运算完成。
插补器的组成二坐标DDA直线插补器包括X积分器和Y积分器,每个积分器都由被积函数寄存器J vx(速度存寄器)和累加器J rx(余数寄存器)组成。
初始时,X被积函数寄存器存X e(或Xe/2N),Y被积函数寄存器存Ye(或Ye/2N)。
数字积分法稳速控制⑴直线插补的左移规格化及其解决的问题积分器作直线插补时,不论各段程序的被积函数大小,都必须经过m=2n 次累加运算才能到达终点。
这样各个坐标溢出脉冲的速度受被积函数的大小影响。
被积函数愈大,溢出脉冲速度愈快,因而机床的进给速度也愈快;反之,被积函数愈小,速度愈低,机床的进给速度愈慢。
即加工尺寸大,走刀快,加工尺寸小,走刀慢。
所以各程序段的进给速度是不一致的,这将影响加工的表面质量,特别是行程短的程序段,生产效率低控制积分器的溢出速度的方法——左移规格化寄存器:规格化数累加一次必有一次溢出,而非规格化的数,必须作两次以上累加才有一次溢出。
左移规格化法就是将非规格化数左移使之成为规格化数。
为了使每个程序段积分的溢出速度大致均匀,在直线插补时必须把寄存器中的数Xe、Ye同时左移,直到JVX、JVY中有一个数是规格化数为止。
同时左移,意味着把X、Y两方向的脉冲分配速度扩大同样的倍数,二者数值之比不变,所以直线斜率不变。
因为规格化后每累加运算两次必有一次溢出,溢出速度比较均匀,所以加工的效率,加工质量都大为提高。