广工数控课设凸轮轮廓线数控加工程序设计创新.docx

上传人:b****5 文档编号:12280439 上传时间:2023-04-17 格式:DOCX 页数:22 大小:595.26KB
下载 相关 举报
广工数控课设凸轮轮廓线数控加工程序设计创新.docx_第1页
第1页 / 共22页
广工数控课设凸轮轮廓线数控加工程序设计创新.docx_第2页
第2页 / 共22页
广工数控课设凸轮轮廓线数控加工程序设计创新.docx_第3页
第3页 / 共22页
广工数控课设凸轮轮廓线数控加工程序设计创新.docx_第4页
第4页 / 共22页
广工数控课设凸轮轮廓线数控加工程序设计创新.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

广工数控课设凸轮轮廓线数控加工程序设计创新.docx

《广工数控课设凸轮轮廓线数控加工程序设计创新.docx》由会员分享,可在线阅读,更多相关《广工数控课设凸轮轮廓线数控加工程序设计创新.docx(22页珍藏版)》请在冰豆网上搜索。

广工数控课设凸轮轮廓线数控加工程序设计创新.docx

广工数控课设凸轮轮廓线数控加工程序设计创新

引言

随着计算机的应用日益广泛,在凸轮机构的设计中采用计算机辅助设计的方法已日益普遍。

它不仅使设计工作量大为减少,设计速度大为提高,而且可大大提高凸轮廓线的设计精度,从而更好的满足设计要求。

㈠凸轮的分类:

⒈凸轮按形状分类可以分为:

⑴盘状凸轮(platecam):

具有变化半径盘状体,从动在垂直于凸轮的平面内作移动或摆动。

⑵楔形移动凸轮(wedgecam):

将盘形凸轮一个扇形部分绕在圆锥上---锥形凸轮,即在圆锥体上开有曲线槽,从动件运动与圆柱凸轮相同。

⑶柱状凸轮(cylindricalcam):

移动凸轮绕在圆柱体上→圆柱凸轮。

实际上是在圆柱体上开有曲线槽端面上做成曲面形状,从动件与在凸轮轴同一平面或平行平面内移动,摆动。

⒉按从动件与凸轮的接触形式分类可以分为:

⑴尖底从动件(aknifeedgefollower):

点接触,易磨损,传

力不大。

2.滚子从动件(arollerfollower):

线接触:

磨损小,

传力大

⑵平底从动件(aflat-facefollower):

平面接触,接触处易形成油膜,高速。

⒊按从动件的运动形式分类可以分为:

⑴往复移动凸轮机构(reciprocating)

⑵摆动凸轮机构(oscillating)

⒋按锁合方法分类可以分为:

⑴力封闭(弹簧、重力)

⑵形封闭(槽形、等宽矩形、等径、共轭)

㈡凸轮设计的现状

传统的盘形凸轮设计主要有图解法和解析法。

图解法直观简单,但是手工作图选取的等分数有限、精度差。

以此为基础的手工画线加工表面精度都比较低。

对于从动件运动规律复杂,精度要求高的凸轮,手工操作难以胜任。

随着计算机技术的日益发展,用解析法使绘制从动件运动规律复杂,精度要求高的凸轮成为可能,并得到日益广泛的应用。

本人这次尝试在解析法的基础上,借助VB6.0编制了一个简化的对心滚子从动件盘形凸轮设计软件。

 

一设计任务:

平面凸轮的数控加工程序的编制

设有凸轮如图1所示。

凸轮转角t与

从动件位移s的关系即凸轮轮廓的展成平面

图如图2所示。

要求分析凸轮的曲线规律,设计一个软件能够用于平面凸轮的参数化绘图和生成数控加工的代码。

即:

1.有一个凸轮设计的友好界面;图1

2.能够按照用户要求生成凸轮的曲线

轮廓,对于非圆几何形状可采用直线或圆

弧逼近的方法生成曲线;

3.能够生成数控代码;图2

凸轮设计中涉及的有关参数可自行设定,或参考图2中的参数。

 

二设计的主要问题

1.如何通过计算机生成用户所需的凸轮图形;

2.如何得到NC加工代码。

现在就以上二个问题展开论述。

一、如何通过计算机生成用户所需的凸轮图形。

在数控编程的学习中,我们学习过几种非圆曲线逼近的方法:

(1)等间距直线逼近法,

(2)等弦长直线逼近法,(3)等误差直线逼近法,(4)圆弧逼近法。

鉴于等间距直线逼近法比较简单、易懂,而其余三种方法非常复杂,故本人采用了等间距直线逼近法作曲线的形状。

下面对此方法作简要介绍:

等间距直线逼近法是使每一个

程序段中的某一个坐标的增量相等。

右图表示加工一个凸轮时,x坐标

按等间距分段时结点的分布情况。

将x1~x7的值代入方程y=f(x),可

求得y1~y14的值,从而得到结点

A1~A14的坐标值。

把A1~A2、A2~

A3…A14~A1用直线连起来,即可得到曲线图形。

间距大小一般根据零件加工精度要求凭经验选取。

求出结点坐标后再验算逼近误差是否小于允许值。

等间距法计算简单,但由于取定的间距应保证曲线曲率最大处的逼近误差小于允许值,所以程序可能较多。

因为目前的数控机床的精度一般为0.1,故在本软件中,我采用的间距为0.1mm,即X轴每隔0.1mm取一个点,(如图代码,end1是指所画的圆弧的开始点,str是终点,step0.1指每0.1个单位画一个点,利用循环语句画出所要求的曲线)

Fori=0To(eng1-srt)Step0.1

X=i

Y=h-h*((end1-str)-i)^2/(end1-str)^2

FrmView.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文件。

而题目要求此软件要有一个友好的界面,VisualBasic语言完全能达到这个要求。

软件实现的功能是接受用户输入,作出平面凸轮图形,输出DXF文件及NC代码。

具体的步骤是

一、设计用户界面。

在VisualBasic6.0中,界面的设计是轻而易举的事情。

在这

就不加以介绍,而我这次设计的“平面凸轮计算机辅助设计”软件界面有两类,一是接受用户输入凸轮的主参数及图形的窗口,二是导出NC代码的数控参数输入窗口。

主界面如下图:

二、接受用户输入,生成凸轮图形。

在软件中,我提供了凸轮设计中所用到的最基本的五条曲线方程

给用户选择,曲线方程的重复无限次。

其中的关键的如何把输入的方程首尾相接,形成凸轮。

而我是从凸轮的展开图入手的。

因为要输入的曲线都有一个共同特征,x=0时,f(x)=0。

所以我编程时使上一次输入曲线的末点坐标成为下一次输入曲线的原点,问题就解决了。

(NumEnd是指本次输入曲线的终点,area是指后一条曲线的开始点,即把

本次的终点作为后段曲线始点)如下图:

然后把展开图的直角坐标系转换为平面图的极坐标系即可得到凸轮真实的图形。

为了下一步输入DXF文件及NC代码,所以我定义了一个全局静态数组把作图时得到的点保存起来。

三、输入DXF图形交换文件及NC加工代码。

有了上面留下来的点的数值,只要编写好接口程序,就可以得到DXF文件,NC代码了。

至于DXF文件的格式请参阅“设计的主要问题”部分。

 

 

六、使用步骤说明及效果图

1、输入凸轮各基本参数

2、选择运动曲线类型

3、输入NC加工参数

4、选择NC代码保存路径

5、生成NC代码

 

七.设计小结

在整个课程设计过程中,我体会最深的就是,在遇到困难的时候,要学会查找相关资料,通过对资料的学习,找出解决问题的方法。

这样,既可以锻炼自己独立解决问题的能力,又可以提高自己的自学能力。

设计的两个重要环节,一是要掌握好凸轮的相关知识,二是要学会如何在计算机上实现。

在设计界面的时候,力求简单,易操作,功能齐全。

尽量让初次使用者都能很容易上手使用。

本软件的不足之处很多,其中一个就是有时生成的凸轮曲线之间连接处并非圆滑过渡。

会带来很大的冲击力,因此要进行后处理才能使用。

在判断输入参数是否合理,和一些出错处理上还不够完善,因此还有很多地方需要改进的。

本软件只是作为一次学习,一次尝试,以抛砖引玉,其实际意义还不大。

在此期待老师提出更好的建议,以便完善本软件。

 

附部分源程序

模块

OptionExplicit

Publicptx(3600)AsDouble'曲线存储点数组

Publicpty(3600)AsDouble'由于存储最终输出的点

PubliclowAsDouble'数组下标

PubliccountnumAsInteger'存储当前为第几段曲线输入的值

PublicConstPI=3.14159

PublicareaAsDouble'存储角度范围的值

PublicschAsDouble'总升程

PublictchAsDouble'输入曲线的推程

PublicHuanAsDouble'坐标变换数据

PublicGaoAsDouble

Publica1AsString,a2AsString,a3AsString

Publicb1AsDouble

PublicsavetimeAsDouble

PubliciAsDouble

FrmView主窗口

OptionExplicit

Dimj%

PublicbchAsString,zbxAsString,MAsInteger,sdAsString

PrivateSubCmbSlect_Click()'选择曲线类型

SelectCaseCmbSlect.ListIndex

Case0'等加速运动

dengjiasu.NumStr.Text=""'清空Text文本框

dengjiasu.NumEnd.Text=""

dengjiasu.NumH.Text=""

dengjiasu.NumStr.Text=area'设定default范围

dengjiasu.NumStr.Enabled=False

dengjiasu.NumEnd.Enabled=True

IfCountAll.Caption=CountNow.CaptionThen'最后一段曲线

dengjiasu.NumEnd.Text="360"'输入时,自动输入

dengjiasu.NumEnd.Enabled=False'默认值

dengjiasu.NumH.Text=-b1

EndIf

dengjiasu.Show1

Case1'等速运动

dengsu.NumStr.Text=""

dengsu.NumEnd.Text=""

dengsu.NumH.Text=""

dengsu.NumStr.Text=area

dengsu.NumStr.Enabled=False

dengsu.NumEnd.Enabled=True

IfCountAll.Caption=CountNow.CaptionThen

dengsu.NumEnd.Text="360"

dengsu.NumEnd.Enabled=False

dengsu.NumH.Text=-b1

EndIf

dengsu.Show1

Case2'正弦加速度运动

sinx.NumStr.Text=""

sinx.NumEnd.Text=""

sinx.NumH.Text=""

sinx.NumStr.Text=area

sinx.NumStr.Enabled=False

sinx.NumEnd.Enabled=True

IfCountAll.Caption=CountNow.CaptionThen

sinx.NumEnd.Text="360"

sinx.NumEnd.Enabled=False

sinx.NumH.Text=-b1

EndIf

sinx.Show1

Case3'余弦加速度运动

Cosx.NumStr.Text=""

Cosx.NumEnd.Text=""

Cosx.NumH.Text=""

Cosx.NumStr.Text=area

Cosx.NumStr.Enabled=False

Cosx.NumEnd.Enabled=True

IfCountAll.Caption=CountNow.CaptionThen

Cosx.NumEnd.Text="360"

Cosx.NumEnd.Enabled=False

Cosx.NumH.Text=-b1

EndIf

Cosx.Show1

Case4'等减速运动

dengjiansu.NumStr.Text=""

dengjiansu.NumEnd.Text=""

dengjiansu.NumH.Text=""

dengjiansu.NumStr.Text=area

dengjiansu.NumStr.Enabled=False

dengjiansu.NumEnd.Enabled=True

IfCountAll.Caption=CountNow.CaptionThen

dengjiansu.NumEnd.Text="360"

dengjiansu.NumEnd.Enabled=False

dengjiansu.NumH.Text=-b1

CommonDialog1.InitDir="c:

\"

CommonDialog1.FileName="凸轮代码1.nc"

CommonDialog1.Filter="nc文件(*.nc)|*.nc|文本(*.txt)|*.txt|所有文件(*.*)|*.*"

CommonDialog1.DefaultExt="nc"

CommonDialog1.Action=2

OpenCommonDialog1.FileNameForOutputAs#1

j=100

'绝对坐标编程

IfOption1.Value=TrueThen

'NC代码的开始部分

Print#1,"%"

Print#1,"N";LTrim(RTrim(j));"G17G40G49G80"

j=j+1

Print#1,"N";LTrim(RTrim(j));"M06T01"

j=j+1

Print#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)));"M3"

j=j+1

Print#1,"N";LTrim(RTrim(j));"Z2";"F";LTrim(RTrim(Val(Text2)))

sd=Val(Text8)

ForM=1ToVal(Text8)

j=j+1

Print#1,"N";LTrim(RTrim(j));"G01Z-";_

LTrim(RTrim(Val(Text7)));_

"F";LTrim(RTrim(Text1))

j=j+1

'主要走刀部分

Fori=1To3599

Print#1,"N";LTrim(RTrim(j));"G01";_

;"X";LTrim(RTrim(Format$(ptx(i),"###.###")));_

"Y";LTrim(RTrim(Format$(pty(i),"###.###")))

j=j+1

Nexti

sd=sd+Val(Text7)

NextM

Print#1,"N";LTrim(RTrim(j));"G00";"G40";_

"Z";LTrim(RTrim(Val(Text6)))

j=j+1

Print#1,"N";LTrim(RTrim(j));"M05"

j=j+1

Print#1,"N";LTrim(RTrim(j));"M02"

Print#1,"%"

Close#1

Else

'相对坐标编程

IfOption2.Value=TrueThen

Print#1,"%"

Print#1,"N";LTrim(RTrim(j));"G17G40G49G80"

j=j+1

Print#1,"N";LTrim(RTrim(j));"M06T01"

j=j+1

Print#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)));"M3"

j=j+1

Print#1,"N";LTrim(RTrim(j));"Z2";"F";LTrim(RTrim(Val(Text2)))

sd=Val(Text8)

ForM=1ToVal(Text8)

j=j+1

Print#1,"N";LTrim(RTrim(j));"G01Z-";LTrim(RTrim(Val(Text7)));_

"F";LTrim(RTrim(Val(Text1)))

j=j+1

Fori=1To3599

Print#1,"N";LTrim(RTrim(j));"G01";"X";LTrim(RTrim(Format((ptx(i)-ptx(i-1)),"###.###")));_

"Y";LTrim(RTrim(Format$((pty(i)-pty(i-1)),"###.###")))

j=j+1

Nexti

sd=sd+Val(Text7)

NextM

Print#1,"N";LTrim(RTrim(j));"G00";"G40";"Z";LTrim(RTrim(Val(Text6)))

j=j+1

Print#1,"N";LTrim(RTrim(j));"M05"

j=j+1

Print#1,"N";LTrim(RTrim(j));"M02"

Print#1,"%"

Close#1

EndIf

EndIf

Else

MsgBox("有非法字符或其它错误,请检查")

EndIf

EndSub

PrivateSubCommand3_Click()

FrmNC.Hide

EndSub

Tuichu窗体

OptionExplicit

PrivateSubCancelButton_Click()

FrmView.Show

EndSub

PrivateSubOKButton_Click()

End

EndSub

 

参考文献

1.廖效果等.数控技术.武汉:

湖北科学技术出版社,2004.

2.廖效果,朱启逑等.数字控制机床.武汉:

华中科技大学出版社,2003.

3.刘子建,黄红武,黄素华.计算机图形处理原理与CAD应用技术.湖南:

湖南科学技术出版社,2002.

4.江志文.VisualBasic程序设计教程.广州:

中山大学出社,2003.

5.王淑仁,王丹主编.计算机辅助机构设计.吉林:

东北大学出社,2001.

6.孙桓,陈作模.机械原理.北京:

高等教育出版社,2001.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1