逐点比较法第一二象限的顺圆插补_第1页
逐点比较法第一二象限的顺圆插补_第2页
逐点比较法第一二象限的顺圆插补_第3页
逐点比较法第一二象限的顺圆插补_第4页
逐点比较法第一二象限的顺圆插补_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE1****学院课程设计说明书设计题目: 逐点比较法第一二象限的顺圆插补系部:机电工程系专业:自动化(数控技术)班级:姓名:学号:指导老师:起止时间:年月日至年月日共周年月日目录一、课程设计的目的3二、课程设计的任务3三、逐点比较法基本原理4四、逐点比较法插补软件流程图8五、算法描述(在VB中的具体实现)9六、编写算法程序清单9七、软件运行仿真效果12八、参考文献15九、设计小结15逐点比较法第一二象限的顺圆插补一、课程设计的目的1)了解连续轨迹控制数控系统的组成原理。2)掌握逐点比较法插补的基本原理。3)掌握逐点比较法插补的软件实现方法。二、课程设计的任务逐点比较法插补是最简单的脉冲增量式插补算法之一,其过程清晰,速度平稳,但一般只用于一个平面内两个坐标轴的插补运算。其基本原理是在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具与被加工零件轮廓之间的相对位置,并根据比较结果决定下一步的进给方向,使刀具向减小偏差的方向进给,且只有一个方向的进给。也就是说,逐点比较法每一步均要比较加工点瞬时坐标与规定零件轮廓之间的距离,依此决定下一步的走向。如果加工点走到轮廓外面去了,则下一步要朝着轮廓内部走;如果加工点处在轮廓的内部,则下一步要向轮廓外面走,以缩小偏差,这样周而复始,直至全部结束,从而获得一个非常接近于数控加工程序规定轮廓的轨迹。逐点比较法插补过程中的每进给一步都要经过偏差判别、坐标进给、偏差计算和终点判别四个节拍的处理,其工作流程图如图所示。三、基本原理(1)逐点比较法I象限顺圆插补基本原理在加工圆弧过程中,人们很容易联想到使用动点到圆心的距离与该圆弧的名义半径进行比较来反映加工偏差。假设被加工零件的轮廓为第Ⅰ象限顺走向圆弧SE,,圆心在O(0,0),半径为R,起点为S(XS,YS),终点为E(Xe,Ye),圆弧上任意加工动点为N(Xi,Yi)。当比较该加工动点到圆心的距离与圆弧半径R的大小时,可获得刀具与圆弧轮廓之间的相对位置关系。当动点N(Xi,Yi)正好落在圆弧上时,则有下式成立当动点N(Xi,Yi)落在圆弧外侧时,则有下式成立当动点N(Xi,Yi)落在圆弧内侧时,则有下式成立 由此可见,取逐点比较法圆弧插补的偏差函数表达式为 当动点落在圆外时,为了减小加工误差,应向圆内进给,即向(-X)轴方向走一步;当动点落在圆内时,应向圆外进给,即向(+Y)轴方向走一步。当动点正好落在圆弧上且尚未到达终点时,为了使加工继续下去,理论上向(+Y)轴或(-X)轴方向进给均可以,但一般情况下约定向(-X)轴方向进给。 综上所述,现将逐点比较法第Ⅰ象限顺圆插补规则概括如下: 当F>0时,即>0,动点落在圆外,则向(-Y)轴方向进给一步; 当F=0时,即=0,动点正好落在圆上,约定向(-Y)轴方向进给一步; 当F<0时,即<0,动点落在圆内,则向(+X)轴方向进给一步。 由偏差函数表达式可知,计算偏差F值,就必须进行动点坐标、圆弧半径的平方运算。显然,在用硬件或汇编语言实现时不太方便。为了简化这些计算,按逐点比较法直线插补的思路,也可以推导出逐点比较法圆弧插补过程中偏差函数计算的递推公式。 假设第i次插补后,动点坐标为N(Xi,Yi),其对应偏差函数为 当Fi≥0,向(-Y)轴方向进给一步,则新的动点坐标值为Xi+1=Xi,Yi+1=Yi-1 因此,新的偏差函数为Fi+1=Xi+1^2+Yi+1^2-R^2=Xi^2+(Yi-1)^2∴ Fi+1=Fi-2Yi+1 同理,当Fi<0,则向(+Y)轴方向进给一步,则新的动点坐标值为Xi+1=Xi+1,Yi+1=Yi因此,可求得新的偏差函数为Fi+1=Xi+1^2+Yi+1^2-R^2=(Xi+1)^2+Yi^2∴ Fi+1=Fi+2Xi+1 将上式进行比较,可以看出两点不同:第一,递推形式的偏差计算公式中仅有加/减法以及乘2运算,而乘2可等效成该二进制数左移一位,这显然比平方运算来得简单。第二,进给后新的偏差函数值与前一点的偏差值以及动点坐标N(Xi,Yi)均有关系。由于动点坐标值随着插补过程的进行而不断变化,因此,每插补一次,动点坐标就必须修正一次,以便为下一步的偏差计算作好准备。至此,将第Ⅰ象限顺圆弧插补的规则和计算公式汇总,见表(表2-1)第Ⅰ象限顺圆弧插补计算公式偏差函数动点位置进给方向新偏差计算动点坐标修正Fi≥0在圆上或圆外-YFi+1=Fi-2Yi+1Xi+1=Xi,Yi+1=Y-1iFi<0在圆内+XFi+1=Fi+2Xi+1Xi+1=Xi+1,Yi+1=Yi表2-1和直线插补一样,圆弧插补过程也有终点判别问题。当圆弧轮廓仅在一个象限区域内,其终点判别仍可借用直线终点判别的三种方法进行,只是计算公式略不同。Σ=|Xe-Xs|+|Ye-Ys| Σ=max{|Xe-Xs|,|Ye-Ys|}Σ1=|Xe-Xs|,Σ2=|Ye-Ys|式中XS、Ys——被插补圆弧轮廓的起点坐标;Xe、Ye——被插补圆弧轮廓的终点坐标。b、插补象限和圆弧走向前面所讨论的逐点比较法直线和圆弧插补,均是针对第一象限直线和顺圆插补这种特定情况进行的。然而,任何数控机床都应具备处理不同象限、不同走向曲线的能力。(2)四个象限中圆弧插补圆弧插补情况比较复杂,不仅有象限问题,而且还有圆弧走向问题。现以第Ⅰ象限顺圆SR1插补为例,介绍圆弧插补的特性。假设圆弧SE起点为S(XS,YS),终点为E(Xe,Ye),圆心在坐标原点上。与顺圆插补相似,当某一时刻动点N(Xi,Yi)在圆弧的外侧时,有F≥0成立,应向-Y)轴方向进给一步,以减小误差;若动点N(Xi,Yi)在圆弧内侧,则应向+X)轴方向进给一步。由此可推导出第Ⅰ象限顺圆插补偏差函数的递推公式如下:当Fi≥0时,向-Y)轴方向进给一步,则新的动点坐标为Xi+1=Xi,Yi+1=Yi-1新动点的偏差函数为∴ Fi+1=Fi-2Yi+1当Fi<0时,向+X)轴方向进给一步,则新的动点坐标为Xi+1=Xi+1,Yi+1=Yi新动点的偏差函数为∴ Fi+1=Fi+2Xi+1现将上式比较,可以看出它们有两点不同: 1)当Fi≥0或Fi<0时,对应的进给方向不同; 2)插补计算公式中动点坐标的修正也不同,以至于偏差计算公式也不相同。 进一步还可根据上述方法推导出其他象限不同走向圆弧的插补公式。现将各种相应偏差计算见表(表2-2)四个象限圆弧插补偏差计算与进给方向线型F≥0F<0偏差计算坐标进给偏差计算坐标进给SR1NR2SR3NR4F-2|Y|+1→F|Y|-1→|Y|-ΔY-ΔY+ΔY+ΔYF+2|X|+1→F|X|+1→|X|+ΔX-ΔX-ΔX+ΔXNR1SR2NR3SR4F-2|X|+1→F|X|-1→|X|-ΔX+ΔX+ΔX-ΔXF+2|Y|+1→F|Y|+1→|Y|+ΔY+ΔY-ΔY-ΔY表2-2从表可以看出,当按第Ⅰ象限顺圆NR1进行插补运算时,现若有意将X轴进给反向,则可以走出第Ⅱ象限顺圆SR2来;或者若将Y轴进给反向,则可以走出SR4来;或者将X轴和Y轴的进给均反向,则可以走出NR3来;并且这四种线型(NR1、SR2、NR3、SR4)使用的偏差计算公式都相同,无须改变。 进一步还可以看出,当按第Ⅰ象限顺圆NR1线型插补时,现若将计算公式坐标X与Y对调,即把X当作Y,把Y当作X,那么就可得到SR1的走向。类似地通过改变进给方向,利用SR1的公式就可获得其余三种线型(NR2、SR3、NR4)的走向。下面,我们对圆弧逐点比较法作一个简要的介绍。四、逐点比较法插补软件流程图开始开始初始化|Xe|给Jx,|Ye|给Jy,0给JF∑=|Xe-Xs|+|Ye-Ys|=JεJF≥0+ΔX结束J∑=0?JF-2JX+1JFJY-1JYSR3,NR4?-ΔX+ΔY-ΔYSR1NR2SR3NR4?SR2,NR3?SR2,NR3?SR1NR2SR3NR4?SR2,NR3?JF-2JY+1JFJY-1JY+ΔY-ΔY+ΔX-ΔXJF+2JY+1JFJY+1JYJF+2JX+1JFJX+1JXJΣ-1JΣ五、算法描述(逐点比较法在VB中的具体实现)根据上述基本原理,我们可以知道逐点比较法圆弧插补需要设置两个终点计数器J∑X=|Xe–Xs|和J∑Y=|Ye-Ys|,分别对X轴和Y轴进行终点监控。每当X轴或Y轴产生一个溢出脉冲,相应的终点计数器就作减1修正,直到为零,表明该坐标已到终点,并停止其坐标的累加运算。只有当两个坐标轴均到达终点时,圆弧插补才结束。六、编写算法程序清单第一二象限的逐点比较法顺圆插补PrivateSubCommand1_Click()DimrAsSingle,XAsInteger,YAsInteger,aAsInteger,bAsInteger,cAsSingle,dAsSingle,piAsSingle,mAsInteger,nAsIntegerX=Int(Text1)Y=Int(Text2)a=Int(Text3)b=Int(Text4)c=Atn(Abs(Y/X))d=Atn(Abs(b/a))pi=3.14159265m=X*X+Y*Yn=a*a+b*bPicture1.ForeColor=vbBlackPicture1.DrawWidth=2IfOption1.Value=TrueThenIfX<=0OrY<0Ora<=0Orb<0Orm<>norX>aThenPrintMsgBox("错误!",48,"提示信息")ElsePicture1.Line(500,500)-(500,6500)Picture1.Line(500,6500)-(5500,6500)Picture1.Line(5450,6450)-(5500,6500)Picture1.Line(5450,6550)-(5500,6500)Picture1.Line(550,550)-(500,500)Picture1.Line(450,550)-(500,500)Picture1.ForeColor=vbRedPicture1.DrawWidth=5r=Sqr(X*X+Y*Y)*700Picture1.Circle(500,6500),r,,d,cEndIfElseIfOption2.Value=TrueThenIfX>=0OrY<0Ora>=0Orb<0Orm<>norX>aThenPrintMsgBox("错误!",48,"提示信息")ElsePicture1.Line(5500,500)-(5500,6500)Picture1.Line(500,6500)-(5500,6500)Picture1.Line(560,6530)-(500,6500)Picture1.Line(560,6470)-(500,6500)Picture1.Line(5530,600)-(5500,500)Picture1.Line(5470,600)-(5500,500)Picture1.ForeColor=vbRedPicture1.DrawWidth=5r=Sqr(X*X+Y*Y)*700Picture1.Circle(5500,6500),r,,pi-d,pi-cEndIfEndIfEndSubPrivateSubCommand2_Click()Dimk,m,j,l,n,F(30),X(30),Y(30)AsInteger,aAsInteger,bAsInteger,cAsInteger,dAsIntegera=Int(Text1)b=Int(Text2)c=Int(Text3)d=Int(Text4)m=0l=0k=0F(m)=0X(m)=aY(m)=bPicture1.ForeColor=vbGreenPicture1.DrawWidth=3j=Abs(Abs(a)-Abs(c))+Abs(Abs(b)-Abs(d))Form1.CurrentX=200Form1.CurrentY=200Print"初始","进给方向","F(0)=0","X(0)="&Int(Text1),"Y(0)="&Int(Text2),"Xe="&Int(Text4),"Ye="&Int(Text3),"∑="&jIfOption1.Value=TrueThenForn=1TojIfF(m)>=0Andj>0Thenm=m+1k=k+1F(m)=F(m-1)-2*Abs(Y(m-1))+1X(m)=X(m-1)Y(m)=Y(m-1)-1Picture1.Line(500+700*(a+l),6500-700*(b-k+1))-(500+700*(a+l),6500-700*(b-k))Form1.CurrentX=200Form1.CurrentY=200+m*300Print"第"&m&"步","-△Y","F("&m&")="&F(m),"X("&m&")="&X(m),"Y("&m&")="&Y(m),"Xe="&Int(Text4),"Ye="&Int(Text3),"∑="&j-nElsel=l+1m=m+1F(m)=F(m-1)+2*Abs(X(m-1))+1Y(m)=Y(m-1)X(m)=X(m-1)+1Picture1.Line(500+700*(a+l),6500-700*(b-k))-(500+700*(a+l-1),6500-700*(b-k))Form1.CurrentX=200Form1.CurrentY=200+m*300Print"第"&m&"步","+△X","F("&m&")="&F(m),"X("&m&")="&X(m),"Y("&m&")="&Y(m),"Xe="&Int(Text4),"Ye="&Int(Text3),"∑="&j-n;""EndIfNextnElseIfOption2.Value=TrueThenForn=1TojIfF(m)>=0Andj>0Thenm=m+1l=l+1F(m)=F(m-1)-2*Abs(X(m-1))+1X(m)=X(m-1)+1Y(m)=Y(m-1)Picture1.Line(5500+700*(a+l),6500-700*(b+k))-(5500+700*(a+l-1),6500-700*(b+k))Form1.CurrentX=200Form1.CurrentY=200+m*300Print"第"&m&"步","+△Y","F("&m&")="&F(m),"X("&m&")="&X(m),"Y("&m&")="&Y(m),"Xe="&Int(Text4),"Ye="&Int(Text3),"∑="&j-nElsek=k+1m=m+1F(m)=F(m-1)+2*Abs(Y(m-1))+1Y(m)=Y(m-1)+1X(m)=X(m-1)Picture1.Line(5500+700*(a+l),6500-700*(b+k))-(5500+700*(a+l),6500-700*(b+k-1))Form1.CurrentX=200Form1.CurrentY=200+m*300Print"第"&m&"步","+△X","F("&m&")="&F(m),"X("&m&")="&X(m),"Y("&m&")="&Y(m),"Xe="&Int(Text4),"Ye="&Int(Text3),"∑="&j-nEndIfNextnEndIfEndSubPrivateSubCommand3_Click()Text1.Text=""Text2.Text=""Text3.Text=""Text4.Text=""Picture1.ClsForm1.ClsEndSub七、软件运行仿真效果八、参考文献《宿迁学院课程设计指导书》《数控原理与系统》《计算机编程VB》九、设计小结在本次设计中,我们重点分析了逐点比较法的基本原理,这是实现软件插补的基础,有了这个基础,我们可以画出逐点比较法插补软件的流程图,然后根据流程图再对逐点比较法在软件中的插补算法进行描述,由此找出其中的规律,最后在VB软件中设计出一个小巧的软件,并在其中添加插补算法程序,最后导出软件。这次课程设计,帮我们回顾了以前所学的知识,加深了和巩固了对这些知识的印象,对于这次的设计来说,很多东西都具有难度,但在我们不懈的努力下,虽然辛苦,但最终还是完成了,同时我们也在这次设计中掌握了许多平时已经淡忘了的东西,感觉很有成就感,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论