广工数控课设凸轮轮廓线数控加工程序设计.doc_第1页
广工数控课设凸轮轮廓线数控加工程序设计.doc_第2页
广工数控课设凸轮轮廓线数控加工程序设计.doc_第3页
广工数控课设凸轮轮廓线数控加工程序设计.doc_第4页
广工数控课设凸轮轮廓线数控加工程序设计.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

平面凸轮计算机辅助设计说明书设计:xxx引言随着计算机的应用日益广泛,在凸轮机构的设计中采用计算机辅助设计的方法已日益普遍。它不仅使设计工作量大为减少,设计速度大为提高,而且可大大提高凸轮廓线的设计精度,从而更好的满足设计要求。 凸轮的分类: 凸轮按形状分类可以分为:盘状凸轮(plate cam):具有变化半径盘状体,从动在垂直于凸轮的平面内作移动或摆动。 楔形移动凸轮(wedge cam):将盘形凸轮一个扇形部分绕在圆锥上-锥形凸轮,即在圆锥体上开有曲线槽,从动件运动与圆柱凸轮相同。柱状凸轮(cylindrical cam):移动凸轮绕在圆柱体上圆柱凸轮。实际上是在圆柱体上开有曲线槽端面上做成曲面形状,从动件与在凸轮轴同一平面或平行平面内移动,摆动。 按从动件与凸轮的接触形式分类可以分为:尖底从动件(a knife edge follower): 点接触,易磨损,传力不大。2.滚子从动件(a roller follower):线接触:磨损小,传力大平底从动件 (a flat-face follower):平面接触,接触处易形成油膜,高速。 按从动件的运动形式分类可以分为:往复移动凸轮机构(reciprocating) 摆动凸轮机构(oscillating) 按锁合方法分类可以分为:力封闭(弹簧 、重力) 形封闭(槽形、等宽矩形、等径、共轭) 凸轮设计的现状传统的盘形凸轮设计主要有图解法和解析法。图解法直观简单,但是手工作图选取的等分数有限、精度差。以此为基础的手工画线加工表面精度都比较低。对于从动件运动规律复杂,精度要求高的凸轮,手工操作难以胜任。随着计算机技术的日益发展,用解析法使绘制从动件运动规律复杂,精度要求高的凸轮成为可能,并得到日益广泛的应用。本人这次尝试在解析法的基础上,借助VB6.0 编制了一个简化的对心滚子从动件盘形凸轮设计软件。一 设计任务:平面凸轮的数控加工程序的编制设有凸轮如图1所示。凸轮转角t与从动件位移s的关系即凸轮轮廓的展成平面图如图2所示。要求分析凸轮的曲线规律,设计一个软件能够用于平面凸轮的参数化绘图和生成数控加工的代码。即: 1.有一个凸轮设计的友好界面; 图12.能够按照用户要求生成凸轮的曲线轮廓,对于非圆几何形状可采用直线或圆弧逼近的方法生成曲线;3.能够生成数控代码; 图2凸轮设计中涉及的有关参数可自行设定,或参考图2中的参数。二 设计的主要问题1. 如何通过计算机生成用户所需的凸轮图形;2. 如何得到NC加工代码。现在就以上二个问题展开论述。一、 如何通过计算机生成用户所需的凸轮图形。在数控编程的学习中,我们学习过几种非圆曲线逼近的方法:(1)等间距直线逼近法,(2)等弦长直线逼近法,(3)等误差直线逼近法,(4)圆弧逼近法。鉴于等间距直线逼近法比较简单、易懂,而其余三种方法非常复杂,故本人采用了等间距直线逼近法作曲线的形状。下面对此方法作简要介绍:等间距直线逼近法是使每一个程序段中的某一个坐标的增量相等。右图表示加工一个凸轮时,x坐标按等间距分段时结点的分布情况。将x1x7的值代入方程y=f(x),可求得y1y14的值,从而得到结点A1A14的坐标值。把A1A2、A2A3A14A1用直线连起来,即可得到曲线图形。间距大小一般根据零件加工精度要求凭经验选取。求出结点坐标后再验算逼近误差是否小于允许值。等间距法计算简单,但由于取定的间距应保证曲线曲率最大处的逼近误差小于允许值,所以程序可能较多。因为目前的数控机床的精度一般为0.1,故在本软件中,我采用的间距为0.1mm,即X轴每隔0.1mm取一个点,(如图代码,end1是指所画的圆弧的开始点,str是终点,step0.1指每0.1个单位画一个点,利用循环语句画出所要求的曲线)For i=0 To (eng1-srt) Step 0.1X=iY=h-h*(end1-str)-i)2/(end1-str)2FrmView.PicView2.PSet(X,Y),RGB(1000,0,0)ptx(low)=(radius+(Gao+Y)*Sin(Huan+i)*PI/180)pty(low)=(radius+(Gao+Y)*Cos(Huan+i)* PI/180)FrmView.PicView.PSet(ptx(low),pty(low),RGB(1000,0,0)二、如何得到NC加工代码。生成NC代码,即要输出*.nc的文本文件。根据NC代码的格式编写文件。由于题目的凸轮加工也比较简单,所以我决定尝试编写NC代码。当然了,编写出来的代码,局限性肯定比较大不能跟MasterCAM那样,想怎样加工就怎样加工。不过,无论你用哪种方法得到NC代码,其主体部分肯定相同的。所以,对于自行编写出的NC代码,我们修改一下代码段的开始部分和结束部分的参数就可以了,这是很容易的事。三 凸轮曲线及输入参数的确定凸轮从动件的运动规律所用数学表达式的形式常用的主要有多项式运动规律和三角函数运动规律两大类。 多项式运动规律 (1-1)式中为凸轮的转角;s为凸轮从动件位移;、为待定系数。而常用的有以下几种多项式运动规律。(1)一次多项式运动规律(速度为常数) (1-2 )设取边界条件为在起点处 ,.在终点处 ,.则由式(1-2)可得,故从动件推程的运动方程为 ,回程时h取负值。二次多项式运动规律(加速度为常数)等加速运动方程:等减速运动方程: 三角函数运动规律1 余弦加速度运动规律(简谐运动规律) 从动件的加速度余弦规律变化,其运动方程为:2 正弦加速度运动规律(摆线运动规律) 从动件的加速度按正弦规律变化,其运动方程为:其中:等速运动:极大的冲击;等加速、等减速:冲击较大;余弦加速度运动:冲击力较小;正弦加速度运动:没冲击。由于凸轮的曲线函数还有很多,如五项式、高次方、谐波等,在此不作为设计的范围,而对于凸轮的具体运用场合如对心直推,偏置直动推杆盘状凸轮机构,摆动推杆,平底推杆等情况也不予考虑,同时也忽略了对设计完成的凸轮的冲击力情况的讨论。四 设计的思路及步骤基于上述观点,在输出DXF文件方面,在此本人用第二种方法,直接编写DXF文件。而题目要求此软件要有一个友好的界面,Visual Basic语言完全能达到这个要求。软件实现的功能是接受用户输入,作出平面凸轮图形,输出DXF文件及NC代码。具体的步骤是一、 设计用户界面。在Visual Basic 6.0中,界面的设计是轻而易举的事情。在这就不加以介绍,而我这次设计的“平面凸轮计算机辅助设计”软件界面有两类,一是接受用户输入凸轮的主参数及图形的窗口,二是导出NC代码的数控参数输入窗口。主界面如下图:二、 接受用户输入,生成凸轮图形。在软件中,我提供了凸轮设计中所用到的最基本的五条曲线方程给用户选择,曲线方程的重复无限次。其中的关键的如何把输入的方程首尾相接,形成凸轮。而我是从凸轮的展开图入手的。因为要输入的曲线都有一个共同特征,x=0时,f(x)=0。所以我编程时使上一次输入曲线的末点坐标成为下一次输入曲线的原点,问题就解决了。本段终点(NumEnd是指本次输入曲线的终点,area是指后一条曲线的开始点,即把本次的终点作为后段曲线始点)如下图: 后段始点然后把展开图的直角坐标系转换为平面图的极坐标系即可得到凸轮真实的图形。为了下一步输入DXF文件及NC代码,所以我定义了一个全局静态数组把作图时得到的点保存起来。三、 输入DXF图形交换文件及NC加工代码。有了上面留下来的点的数值,只要编写好接口程序,就可以得到DXF文件,NC代码了。至于DXF文件的格式请参阅“设计的主要问题”部分。六、使用步骤说明及效果图1、 输入凸轮各基本参数 2、选择运动曲线类型3、输入NC加工参数4、选择NC代码保存路径5、生成NC代码七设计小结在整个课程设计过程中,我体会最深的就是,在遇到困难的时候,要学会查找相关资料,通过对资料的学习,找出解决问题的方法。这样,既可以锻炼自己独立解决问题的能力,又可以提高自己的自学能力。设计的两个重要环节,一是要掌握好凸轮的相关知识, 二是要学会如何在计算机上实现。在设计界面的时候,力求简单,易操作,功能齐全。尽量让初次使用者都能很容易上手使用 。本软件的不足之处很多,其中一个就是有时生成的凸轮曲线之间连接处并非圆滑过渡。会带来很大的冲击力,因此要进行后处理才能使用。在判断输入参数是否合理,和一些出错处理上还不够完善,因此还有很多地方需要改进的。本软件只是作为一次学习,一次尝试,以抛砖引玉,其实际意义还不大。在此期待老师提出更好的建议,以便完善本软件。 附部分源程序模块Option ExplicitPublic ptx(3600) As Double 曲线存储点数组Public pty(3600) As Double 由于存储最终输出的点Public low As Double 数组下标Public countnum As Integer 存储当前为第几段曲线输入的值Public Const PI = 3.14159Public area As Double 存储角度范围的值Public sch As Double 总升程Public tch As Double 输入曲线的推程Public Huan As Double 坐标变换数据Public Gao As DoublePublic a1 As String, a2 As String, a3 As StringPublic b1 As DoublePublic savetime As DoublePublic i As DoubleFrmView 主窗口Option ExplicitDim j%Public bch As String, zbx As String, M As Integer, sd As StringPrivate Sub CmbSlect_Click() 选择曲线类型Select Case CmbSlect.ListIndexCase 0 等加速运动dengjiasu.NumStr.Text = 清空Text文本框dengjiasu.NumEnd.Text = dengjiasu.NumH.Text = dengjiasu.NumStr.Text = area 设定default范围dengjiasu.NumStr.Enabled = Falsedengjiasu.NumEnd.Enabled = True If CountAll.Caption = CountNow.Caption Then 最后一段曲线 dengjiasu.NumEnd.Text = 360 输入时,自动输入 dengjiasu.NumEnd.Enabled = False 默认值 dengjiasu.NumH.Text = -b1 End Ifdengjiasu.Show 1Case 1 等速运动dengsu.NumStr.Text = dengsu.NumEnd.Text = dengsu.NumH.Text = dengsu.NumStr.Text = areadengsu.NumStr.Enabled = Falsedengsu.NumEnd.Enabled = True If CountAll.Caption = CountNow.Caption Then dengsu.NumEnd.Text = 360 dengsu.NumEnd.Enabled = False dengsu.NumH.Text = -b1 End Ifdengsu.Show 1Case 2 正弦加速度运动sinx.NumStr.Text = sinx.NumEnd.Text = sinx.NumH.Text = sinx.NumStr.Text = areasinx.NumStr.Enabled = Falsesinx.NumEnd.Enabled = True If CountAll.Caption = CountNow.Caption Then sinx.NumEnd.Text = 360 sinx.NumEnd.Enabled = False sinx.NumH.Text = -b1 End Ifsinx.Show 1Case 3 余弦加速度运动Cosx.NumStr.Text = Cosx.NumEnd.Text = Cosx.NumH.Text = Cosx.NumStr.Text = areaCosx.NumStr.Enabled = FalseCosx.NumEnd.Enabled = True If CountAll.Caption = CountNow.Caption Then Cosx.NumEnd.Text = 360 Cosx.NumEnd.Enabled = False Cosx.NumH.Text = -b1 End IfCosx.Show 1Case 4 等减速运动dengjiansu.NumStr.Text = dengjiansu.NumEnd.Text = dengjiansu.NumH.Text = dengjiansu.NumStr.Text = areadengjiansu.NumStr.Enabled = Falsedengjiansu.NumEnd.Enabled = True If CountAll.Caption = CountNow.Caption Then dengjiansu.NumEnd.Text = 360 dengjiansu.NumEnd.Enabled = False dengjiansu.NumH.Text = -b1CommonDialog1.InitDir = c:CommonDialog1.FileName = 凸轮代码1.ncCommonDialog1.Filter = nc文件(*.nc)|*.nc|文本(*.txt)|*.txt|所有文件(*.*)|*.*CommonDialog1.DefaultExt = ncCommonDialog1.Action = 2Open CommonDialog1.FileName For Output As #1j = 100绝对坐标编程If Option1.Value = True ThenNC代码的开始部分Print #1, %Print #1, N; LTrim(RTrim(j); G17G40G49G80j = j + 1Print #1, N; LTrim(RTrim(j); M06T01j = j + 1Print #1, N; LTrim(RTrim(j); G00G90G54; bch; _D01X; RTrim(LTrim(Format$(ptx(0), #.#); _Y; RTrim(LTrim(Format$(pty(0), #.#); Z; _LTrim(RTrim(Val(Text6); _S; LTrim(RTrim(Val(Text4); M3j = j + 1Print #1, N; LTrim(RTrim(j); Z2; F; LTrim(RTrim(Val(Text2)sd = Val(Text8)For M = 1 To Val(Text8)j = j + 1Print #1, N; LTrim(RTrim(j); G01Z-; _LTrim(RTrim(Val(Text7); _F; LTrim(RTrim(Text1)j = j + 1主要走刀部分For i = 1 To 3599Print #1, N; LTrim(RTrim(j); G01; _; X; LTrim(RTrim(Format$(ptx(i), #.#); _Y; LTrim(RTrim(Format$(pty(i), #.#)j = j + 1Next isd = sd + Val(Text7)Next MPrint #1, N; LTrim(RTrim(j); G00; G40; _ Z; LTrim(RTrim(Val(Text6)j = j + 1Print #1, N; LTrim(RTrim(j); M05j = j + 1Print #1, N; LTrim(RTrim(j); M02Print #1, %Close #1Else相对坐标编程 If Option2.Value = True ThenPrint #1, %Print #1, N; LTrim(RTrim(j); G17G40G49G80j = j + 1Print #1, N; LTrim(RTrim(j); M06T01j = j + 1Print #1, N; LTrim(RTrim(j); G00G91G54; bch; D01X; RTrim(LTrim(ptx(0); _Y; RTrim(LTrim(pty(0); Z; LTrim(RTrim(Val(Text6); _S; LTrim(RTrim(Val(Text4); M3j = j + 1Print #1, N; LTrim(RTrim(j); Z2; F; LTrim(RTrim(Val(Text2) sd = Val(Text8)For M = 1 To Val(Text8)j = j + 1Print #1, N; LTrim(RTrim(j); G01Z-; LTrim(RTrim(Val(Text7); _F; LTrim(RTrim(Val(T

温馨提示

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

评论

0/150

提交评论