直线插补数字积分法第三第四象限汇编.docx
- 文档编号:26024613
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:18
- 大小:167.21KB
直线插补数字积分法第三第四象限汇编.docx
《直线插补数字积分法第三第四象限汇编.docx》由会员分享,可在线阅读,更多相关《直线插补数字积分法第三第四象限汇编.docx(18页珍藏版)》请在冰豆网上搜索。
直线插补数字积分法第三第四象限汇编
目录
一、课程设计目的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(DigitalDifferentialAnalyzer)。
数字积分法具有运算速度快、脉冲分配均匀、易于实现多坐标联动及描绘平面各种函数曲线的特点,应用比较广泛。
其缺点是速度调节不便,插补精度需要采取一定措施才能满足要求。
由于计算机有较强的计算功能和灵活性,采用软件插补时,上述缺点易于克服。
本次课程设计具体要求如下:
(1)掌握数字积分插补法基本原理
(2)设计出数字积分(DDA)插补法插补软件流程图
(3)编写出算法程序清单算法描述(数字积分法算法在VB中的具体实现)
(4)要求软件能够实现第一第二象限直线插补计算
(5)软件运行仿真效果插补结果要求能够以图形模式进行输出
四、课程设计报告内容
插补运算就是运用特定的算法对工件加工轨迹进行运算并根据运算结果向相应的坐标发出运动指令的过程。
插补运算可以采用数控系统硬件或数控系统软件来完成。
硬件插补器:
速度快,但缺乏柔性,调整和修改都困难。
软件插补器:
速度慢,但柔性高,调整和修改都很方便。
早期硬件数控系统:
采用由数字逻辑电路组成的硬件插补器;
CNC系统:
采用软件插补器,或软件、硬件相结合的插补方式。
4.1数字积分法直线插补的基本原理
数字积分法是利用数字积分的方法,计算刀具沿各坐标轴的位移,使得刀具沿着所加工的轮廓曲线运动
利用数字积分原理构成的插补装置称为数字积分器,又称数字微分分析器(DigitalDifferentialAnalyzer),简称DDA。
数字积分器插补的最大优点在于容易实现多坐标轴的联动插补、能够描述空间直线及平面各种函数曲线等。
因此,数字积分法插补在轮廓数控系统中得到广泛的应用。
4.1.1从几何角度来看积分运算
积分运算就是求出函数Y=f(t)曲线与横轴所围成的面积,从t=t0到tn时刻,函数Y=f(t)的积分值可表述为
如果进一步将t∈[t0,tn]的时间区划分为若干个等间隔Δt的小区间,当Δt足够小时,函数Y的积分可用下式近似表示
在几何上就是用一系列的小矩形面积之和来近似表示函数f(t)以下的积分面积。
进一步如果在式中,取Δt为基本单位“1”,则上式可演化成数字积分器算式:
由此可见,通过假设Δt=“1”,就可将积分运算转化为式所示的求纵坐标值的累加运算。
若再假设累加器容量为一个单位面积值,则在累加过程中超过一个单位面积时立即产生一个溢出脉冲。
这样,累加过程所产生的溢出脉冲总数就等于所求的总面积,即所求的积分值。
下面就以直线和圆弧轨迹为例详细介绍
4.1.2数字积分法在轮廓插补中的具体应用(数字积分法直线插补)
设将要加工的直线XOY平面内第一象限直线OE,如图.一所示,直线起点在坐标原点,终点为E(Xe,Ye)。
同样,假设坐标值均为以脉冲当量为单位的整数。
O
图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(常数)式2
将式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式6
n是累加次数必须取整数,所有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。
4.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
4.7数字积分法直线(第三四象限)插补程序
PrivateSubCommand1_Click()
xe=CInt(Text1)
ye=CInt(Text2)
Picture1.ForeColor=vbBlack
Picture1.DrawWidth=2
IfOption1.Value=TrueAndOption2=FalseThen
Ifxe<=0Andye<=0Then
Picture1.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=5600
Picture1.CurrentY=40
Picture1.Print"(0,0)"
Picture1.CurrentX=100
Picture1.CurrentY=100
Picture1.Print"-x"
Picture1.CurrentX=5600
Picture1.CurrentY=5400
Picture1.Print"-Y"
Fori=1To-xe
Picture1.Line(5500-i*500,50)-(5500-i*500,100)
Nexti
ForJ=1To-ye
Picture1.Line(5500,50+J*500)-(5400,50+J*500)
NextJ
Picture1.Line(5500,50)-(5500+500*Int(Text1),50-500*Int(Text2))
Else
ans=MsgBox("出现出错!
请检查!
",48,"提示信息")
Picture1.Cls
Text1.Text=""
Text2.Text=""
Text3.Text=""
EndIf
ElseIfOption2.Value=TrueAndOption1=FalseThen
Ifxe>=0Andye<=0Then
Picture1.ForeColor=vbBlack
Picture1.DrawWidth=2
Picture1.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=60
Picture1.CurrentY=40
Picture1.Print"(0,0)"
Picture1.CurrentX=5700
Picture1.CurrentY=100
Picture1.Print"x"
Picture1.CurrentX=80
Picture1.CurrentY=5400
Picture1.Print"-Y"
Fori=1Toxe
Picture1.Line(50+i*500,50)-(50+i*500,100)
Nexti
Picture1.Print
ForJ=1To-ye
Picture1.Line(50,50+J*500)-(100,50+J*500)
NextJ
Picture1.ForeColor=vbBlack
Picture1.DrawWidth=2
Picture1.Line(50,50)-(50+500*Int(Text1),50-500*Int(Text2))
Else
ans=MsgBox("出现出错!
请检查",48,"提示信息")
EndIf
EndIf
EndSub
PrivateSubCommand2_Click()
n=Int(Text3)
k=0
m=0
xi=0
yi=0
xe=CInt(Text1)
ye=CInt(Text2)
Jvx=xe
Jvy=ye
Jrx=0
Jry=0
H=2^n-1
Picture1.ForeColor=vbRed
Picture1.DrawWidth=2
Ifxe<=0Andye<=0Then
IfOption1=TrueThen
Print"累加次数"&"X积分器"&"Y积分器"&"终点判别"
Print"n"&"Jvx"&"Jrx"&"-X"&"Jvy"&"Jry"&"-Y"&"J"
Fori=1To2^n
Jrx=Jrx+Abs(Jvx)
IfAbs(Jrx)>=2^nThen
Jrx=Abs(Jrx)-2^n
k=1
xi=xi+1
EndIf
Jry=Jry+Abs(Jvy)
IfAbs(Jry)>=2^nThen
Jry=Abs(Jry)-2^n
m=1
yi=yi+1
EndIf
Ifk=1Andm=1Then
Picture1.Line(5500-500*(xi-1),50+((yi-1)*500))-(5500-500*(xi),50+(yi)*500)
ElseIfk=1Andm=0Then
Picture1.Line(5500-500*(xi-1),50+(yi)*500)-(5500-500*(xi),50+(yi)*500)
ElseIfk=0Andm=1Then
Picture1.Line(5500-500*xi,50+(yi-1)*500)-(5500-500*xi,50+(yi)*500)
EndIf
Form1.FontSize=12
Print""&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=0
m=0
H=H-1
Nexti
Else:
ans=MsgBox("出现出错!
请检查",48,"提示信息")
EndIf
ElseIfxe>=0Andye<=0Then
IfOption2=TrueThen
Print"累加次数"&"X积分器"&"Y积分器"&"终点判别"
Print"n"&"Jvx"&"Jrx"&"+X"&"Jvy"&"Jry"&"-Y"&"J"
Fori=1To2^n
Jrx=Jrx+Jvx
IfJrx>=2^nThen
Jrx=Jrx-2^n
k=1
xi=xi+1
EndIf
Jry=Jry+Abs(Jvy)
IfAbs(Jry)>=2^nThen
Jry=Abs(Jry)-2^n
m=1
yi=yi+1
EndIf
Ifk=1Andm=1Then
Picture1.Line(50+500*(xi-1),50+((yi-1)*500))-(50+500*(xi),50+(yi)*500)
ElseIfk=1Andm=0Then
Picture1.Line(50+500*(xi-1),50+(yi)*500)-(50+500*(xi),50+(yi)*500)
ElseIfk=0Andm=1Then
Picture1.Line(50+500*xi,50+(yi-1)*500)-(50+500*xi,50+(yi)*500)
EndIf
Print""&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=0
m=0
H=H-1
Nexti
Else:
ans=MsgBox("出现出错!
请检查",48,"提示信息")
EndIf
EndIf
IfText3.Text=""Then
ans=MsgBox("出现出错!
请检查",48,"提示信息")
ElseIfxe=""Then
ans=MsgBox("出现出错!
请检查",48,"提示信息")
ElseIfye=""Then
ans=MsgBox("出现出错!
请检查",48,"提示信息")
EndIf
EndSub
PrivateSubCommand3_Click()
Text1.Text=""
Text2.Text=""
Text3.Text=""
Picture1.Cls
Option1=False
Option2=False
Form1.Cls
EndSub
PrivateSubCommand4_Click()
End
EndSub
五结论
本次设计运用软件插补程序进行插补控制,调整和修改都很方便,而且数字积分法插补运算速度快,脉冲分配均匀,易于实现多坐标联动及描绘平面各种函数曲线的特点。
只是软件开发复杂,需对编程具有熟练的运用。
总之,通过课程设计,进一步学习了各方面的知识及其运用,最终完成要求,实现软件的运行,运行程序后按提示输入直线的起点、终点坐标后即可自动进行插补计算并输出各个插补点的坐标值。
六实验总结
一周的课程设计就要结束了,虽然这并不是我第一次做课程设计,但我从中依然学到了很多东西,同时也发现了自己在各个方面的不足之处,获益匪浅。
在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。
更重要的是,在实验课上,我们学会了很多学习的方法。
而这是日后最实用的,真的是受益匪浅。
要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
利用数字积分法原理构成的插补装置称为数字积分器,又称数字微分分析器。
它的最大优点在于容易实现多座标轴的联动插补,能够描述空间直线及平面各种函数曲线等。
因此,数字积分插补在轮廓数控系统中得到广泛应用。
我很幸运能够分到用数字积分法来进行课程设计,在过程中还温习了vb知识。
这份设计我从总体的数控原理软件效果图到数控原理分析,再从数字积分法原理到软件实现,作了一个尽可能详细的解释。
数控原理插补软件的实现,使得我们在数控原理的学习上和理解上更进一步了,他在我们的直观上给我们做了一个很好的模拟。
这主要靠的是程序设计软件VisualBasic它是开发图形用户界面的方法,不需要编写大量的代码去描写界面元素的外观和位置,只要把预先建立的对象拖放到窗口即可。
所以说,对于初学者,这是很适合我们的,为我们节省时间的同时,也更让我们理解。
通过本次设计,让我很好的锻炼了理论联系实际,与具体项目、课题相结合开发的能力。
既让我们懂得了怎样把理论应用于实际,又让我们懂得了在实践中遇到的问题怎样用理论去解决。
通过完成课程设计的过程,我认为重要环节有:
做好设计的预习,认真的研究老师给的题目,老师对题目的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。
在这一周来,也暴露了自己很多问题,第一、不够细心比如由于粗心大意导致编程出现错误,由于对课本理论及VB语言编程的不熟悉带来极大的难度。
第二,是在学习态度上,这次课设也是对我的学习态度的一次检验。
这种体会,只靠平时上课老师的说教是肯定不可能领悟到的。
在本次设计中,我们还需要大量的以前没有学到过的知识,于是图书馆和网络成了我们很好的助手。
在查阅资料的过程中,我们要判断优劣、取舍相关知识,不知不觉中我们查阅资料的能力也得到了很好的锻炼。
我们学习的知识是有限的,在以后的工作中我们肯定会遇到许多未知的领域,这方面的能力便会使我们受益非浅!
七程序运行图
图7.1第三象限直线插补
图7.2第四象限直线插补
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 直线 数字 积分 第三 第四 象限 汇编