数控非圆曲线加工工艺研究方案Word文件下载.docx
《数控非圆曲线加工工艺研究方案Word文件下载.docx》由会员分享,可在线阅读,更多相关《数控非圆曲线加工工艺研究方案Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
![数控非圆曲线加工工艺研究方案Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-10/23/29a3d2cd-0172-453e-a2f9-6bd29ed20cfe/29a3d2cd-0172-453e-a2f9-6bd29ed20cfe1.gif)
4.3运行分析……………………………………………………………………9
5总结………………………………………………………………………………9
1前言
数控机床是一种依靠数字化的信息来实现自动控制的高度自动化机床,它具有高效率、加工精度高和加工质量稳定等优点,这使得数控机床在机械制造业中得到了日益广泛的应用。
当前我国的经济型数控机床,一般只具有直线插补和圆弧插补功能,并不具备抛物线、椭圆等非圆曲线的插补功能。
因此,当我们需要数控加工非圆曲线的轮廓时,就必须用直线或圆弧段去逼近非圆曲线。
对非圆曲线的逼近有直线逼近、圆弧逼近,分别可由G01、G02、G03完成加工,其中直线逼近较为简单,但逼近节点数多,导致数控程序往往过多,而圆弧逼近具有高效性,但计算过于复杂。
直线逼近的方法有等间距直线逼近、等弦长直线逼近和等误差直线逼近,圆弧逼近的方法有曲率圆法、三点圆法和相切圆法。
对于一个已知曲线,它的节点数主要取决于所用逼近线段的形状(直线段还是圆弧段)、曲线方程的特性和允许的逼近误差。
2非圆曲线逼近的关键
2.1算法的选择
对非圆曲线进行逼近,有不同的实现方法,包括直线逼近和圆弧逼近。
方法不同,最终得到的节点数也有所不同,因此选择好的一个算法对提高加工的效率和降低加工成本有着重要的作用。
在这次课程设计中,我们选择的算法是等间距直线逼近,并用等误差直线逼近作为优化算法。
2.2算法实现的关键
算法实现需要求出曲线的节点,而要求曲线的节点得先求出直线段与所逼近的曲线之间的最大逼近误差,而最大逼近误差的计算点就在曲线上某一点的切线斜率与直线段斜率相等的切点处,故关键问题是求出该切点。
一旦求出了该切点,就可以求出逼近时的最大误差,用于与允许误差作比较。
另外,由于此次课程设计是对任意非圆曲线进行逼近,因此求导数也成了一个关键的问题。
3非圆曲线逼近的算法实现
3.1算法的流程图
N
Y
图1等间距直线逼近的流程
图2等误差直线逼近的流程图
3.2算法的解析
3.2.1等间距直线逼近
等间距直线逼近是最简单的方法,已知椭圆方程,给定第一点(x(0),y(0)),间距步长Δx=0.1,求出,将代入即可求得一系列。
、即为每个线段的终点坐标,并以该坐标值编制直线程序段(图3)。
图3等间距直线逼近
根据M(x(0),y(0))、N(x
(1),y
(1))两节点的坐标可求得如图3所示的逼近误差,方法如下:
MN方程:
y=kx+c,则直线MN的斜率为
(3-1)
将M(x(0),y(0))代入MN方程:
y=kx+c,求得
c=y(0)-kx(0)(3-2)
利用椭圆参数方程x=aCos(i),y=bSin(i),求出椭圆曲线上的切线斜率为k的切点坐标(x
(2),y
(2)),对参数方程进行求导得切点对应的参数弧度为
(3-3)
从而求出(x
(2),y
(2))。
联立式(3-1)、(3-2)、(3-3)求出逼近误差为
(3-4)
如果计算出来的逼近误差w小于或等于输入的允许误差v,则满足误差要求,即可进行直线逼近;
否则令Δx为原来的一半,且返回重新计算逼近误差再次比较,直到满足误差要求为止。
等间距直线逼近的流程图如图1所示,星形线的等间距直线逼近算法与椭圆计算方法相同,参考椭圆计算过程即可。
3.2.2等误差直线逼近
等间距直线逼近虽然计算简单,但由于取定值Δx应保证曲线曲率最大处的逼近误差小于允许值,所以程序可能过多。
因此,在选择优化算法时,我们采用的是等误差直线逼近的节点计算法,而且对于曲率变化较大的曲线,用等误差法求得的节点数最少,从而输出的NC代码也大大减少,等误差算法计算如下:
等误差直线去逼近曲线,就是使所有逼近线段的误差相等,如图4。
图4等误差直线逼近
椭圆参数方程为x=aCos(i),y=bSin(i),A点坐标(x(0),y(0)),T点坐标(x
(1),y
(1)),B点坐标(x
(2),y
(2))。
(1)确定所有逼近线段的误差的圆方程,即以起点A(x(0),y(0))为圆心,为半径作圆;
(2)确定等误差圆与曲线公切线PT的斜率k:
以A点为起点,利用参数方程x=aCos(i),y=bSin(i),增大弧度i从而使横坐标变大。
从而得到下一个点T坐标(x
(1),y
(1)),弧度i增大的步长为Δi=0.001*π。
对椭圆方程进行求导,利用T点坐标求出曲线切线PT斜率k:
(3-5)
PT直线方程为y=kx+c,代入点T求得:
c=y
(1)-kx
(1)(3-6)
联立2式(3-5)、(3-6)和点A(x(0),y(0))求得A点到直线PT距离:
(3-7)
比较距离w与等误差圆半径是否相等,若相等,则直线PT为等误差圆与曲线两者的公切线;
若w<
则返回以上算法令Δi增大一倍重新计算距离w直到w=;
若w>
则返回以上算法令Δi变为原来一半重新计算距离w直到w=。
(3)求B点坐标(x
(2),y
(2))。
使AB弦的斜率为k,即使AB平行PT,设AB的方程为y-y(0)=k(x-x(0)),联立式(3-5)公切线PT的斜率k和椭圆方程可求得:
(3-8)
其中
进而求出y
(2)=k(x
(2)-x(0))+y(0)(3-9)
(5)按以上步骤顺次求得其他各节点坐标。
星形线等误差逼近算法与椭圆相似,参考椭圆计算方法即可求得。
4软件开发与运行
4.1系统界面
本次课程设计使用VisualBasic6.0软件,设计了两个窗口为一体的可执行程序,其中主界面可选择所需加工的非圆曲线函数、走刀方向、刀补、起刀点、NC代码坐标以及相关的加工参数,具有等间距直线逼近和等误差直线逼近两种逼近方法,并且对这两种方法进行比较分析。
通过点击“生成NC代码”按钮,可以进入图6的生成NC代码的窗口,可以对NC代码进行保存,可以返回主界面,也可以退出该程序。
图5主界面
图6生成NC代码窗口
4.2软件运行
以椭圆内轮廓加工、顺时针走刀方向为例说明等间距算法和等误差算法直线逼近非圆曲线的刀具轨迹,并比较两者的节点数和生成NC代码程序的长度,设允许误差为0.01,选择项和输入参数如图7所示。
图7加工参数的选择与输入
单击“绘原图”、“等间距逼近”按钮,运行结果的刀具轨迹如图8所示,等间距逼近所用的线段数为5920,生成的NC代码如图9所示。
图8等间距逼近的刀具轨迹图9等间距逼近的NC代码
单击“绘原图”、“等误差逼近”按钮,运行结果的刀具轨迹如图10所示,等误差逼近所用的线段数为666,生成的NC代码如图11所示。
图10等误差逼近的刀具轨迹图11等误差逼近的NC代码
4.3运行分析
从以上运行结果可以看出,非圆曲线的等间距直线逼近算法虽然简单,但逼近处理后的直线段较多,从经济效益上讲,此方法较差。
而由等误差直线逼近处理后,可以得到相对较少的直线段,经济效益高。
5总结
这次的课程设计,在刚开始做之前,我们组的每个人都感到了压力,因为毕竟这次是要利用VB或VC编程语言结合数控技术课程内容来完成课程设计,而且时间也并不充足。
在刚开始接触题目时候,没有丝毫的头绪,借住前人的成果,理解前人所做的东西,来逐步摸清我们课程设计真正所要做的工作。
课堂上老师讲直线逼近非圆曲线的数学处理时大概讲了三种的方法:
等间距、等弦长和等误差,在我们理解了三种方法之后,确定使用等间距为初步算法,等误差为优化算法,因为等间距计算简单,但程序过多,而等误差计算复杂,但程序和节点数都相对少。
确定算法之后,我们遇到的问题是如何地在VisualBasic6.0编程软件平台去实现直线逼近椭圆和星形线,VB编程语言我们大致都弄懂,但是具体操作还是不明白。
一开始我们使用椭圆和星形线的参数方程进行数学处理,实现过程很容易,而且不用分每一个象限去讨论,但是又遇到了另一个问题,使用参数方程计算出来的逼近误差太大了,远大于日常所要求的加工误差,所以还是以失败告终。
通过查阅高数知识和数控技术课本还有其他的一些参考资料,借住高数知识所提供的数学方法,我们使用标准方程去进行数学处理,虽然要考虑每一个象限,程序也由此变得繁琐,但是最终还是实现了我们之前的设想,计算出来的逼近误差最终可以变到0.01甚至更小。
有了等间距直线逼近的成功基础,在做等误差算法直线逼近的时候,只需理解好等误差数学计算的方法即可完成逼近,也通过比较,等误差法确实比等间距法所走的步数少一倍以上,符合了我们之前的设想。
通过这次的课程设计,把VB语言和数控仿真结合起来,加深了对非圆曲线加工的算法及其实现过程的理解,也提高了我们查阅资料和独自解决问题的能力,在遇到问题时候,我们组成员的互相讨论,迸发出来的学习激情,也提高了我们课程设计的积极性,给我们不仅带来了知识的增长和能力的提高,而且带来了更多的乐趣。
附录VB主要源程序
DimdaoluAsInteger,daobuAsInteger
DimX(5)AsDouble,Y(5)AsDouble
DimqidaoxAsSingle,qidaoyAsSingle,qidaozAsSingle
DimquxianAsInteger,piAsDouble,zuobiaoAsInteger‘定义变量
PrivateSubCommand1_Click()
Picture1.Cls
Text8.Text="
"
Text9.Text="
EndSub‘清屏绘图区域
PrivateSubCommand2_Click()‘绘制坐标系
Picture1.DrawStyle=vbSolid
Picture1.DrawWidth=1
Picture1.Scale(-50,50)-(50,-50)
Picture1.Line(-50,0)-(50,0)
Picture1.Line-(48,2)
Picture1.Line(50,0)-(48,-2)
Picture1.Print"
X"
Picture1.Line(0,-50)-(0,50)
Picture1.Line-(-2,48)
Picture1.Line(0,50)-(2,48)
Y"
Picture1.CurrentX=2
Picture1.Curre