广东工业大学数控课程设计报告书.docx

上传人:b****5 文档编号:6810399 上传时间:2023-01-10 格式:DOCX 页数:21 大小:301.68KB
下载 相关 举报
广东工业大学数控课程设计报告书.docx_第1页
第1页 / 共21页
广东工业大学数控课程设计报告书.docx_第2页
第2页 / 共21页
广东工业大学数控课程设计报告书.docx_第3页
第3页 / 共21页
广东工业大学数控课程设计报告书.docx_第4页
第4页 / 共21页
广东工业大学数控课程设计报告书.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

广东工业大学数控课程设计报告书.docx

《广东工业大学数控课程设计报告书.docx》由会员分享,可在线阅读,更多相关《广东工业大学数控课程设计报告书.docx(21页珍藏版)》请在冰豆网上搜索。

广东工业大学数控课程设计报告书.docx

广东工业大学数控课程设计报告书

广东工业大学“数控技术”课程设计任务书

题目名称

针对非圆曲线的CAM软件开发

学生学院

机电工程学院

专业班级

机械设计制造及其自动化/微电子

姓名

学号

一、课程设计的内容

用计算机高级编程语言(如VB,VC++等)来实现非圆曲线的计算机辅助制造(CAM)软件的开发,针对不同的非圆曲线,可任选

(1)直线逼近(如等间距法、等弦长法、等误差法等)、或

(2)圆弧逼近的方法产生节点。

要求在满足允许误差的前提下,使得逼近的直线段或圆弧段的数量最少(即最优解),根据加工曲线轮廓自动生成刀具中心轨迹,自动生成加工NC代码,并能模拟实际加工走刀过程。

二、课程设计的要求与数据

具体的要求如下:

(1)列出一般的直线或圆弧逼近的算法(流程图)。

(2)列出改进的直线或圆弧逼近的算法(流程图)——即优化算法。

比较改进前与改进后的两种算法结果。

(3)针对给定的某一由非圆曲线所构成的平面轮廓,根据指定的走刀方向、起刀点,自动生成CNC代码。

(4)有刀具自动补偿功能,根据给定的补偿量和进给方向自动计算刀具中心轨迹,有过切报警功能。

(5)在屏幕上显示该非圆曲线所构成的平面轮廓。

根据给定的进给速度能模拟加工过程,并在屏幕上留下刀具所走中心轨迹。

一、概述……………………………………………………2

二、凸轮机构的发展概况…………………………………………3

三、课程设计任务………………………………………………3

四、软件设计………………………………………………7

1、程序设计语言的选择……………………………………7

2、程序算法的简述…………………………………………7

3、设计的流程图……………………………………………7

4、设计过程………………………………………………7

5、调试结果和界面…………………………………………15

五、总结……………………………………………………16

附:

参考资料…………………………………………………17

 

一、概述:

首先介绍了凸轮机构的特点和在国内外目前的应用发展情况,介绍了凸轮仿真设计的系统的主要设计任务,包括在编程时所采用的曲线的类型及对函数式的分析情况。

接着,介绍软件程序设计的各个过程,包括算法说明、流程图介绍。

还介绍了软件测试结果。

最后,对这次设计过程的心得体会。

 

SummaryoftheContents:

Introducecamorganizationpresentdevelopmentathomeandabroadatfirst,introducecammaindesigntaskofsystemthatemulationdesign,includingthetypesofthecurvesadoptedandsituationofanalysisonfunctiontypewhileprogramming.Then,introduceeachcoursethatthesoftwaredesignsprogram,includingthealgorithmisstated,flowchartintroduction.Havealsointroducedthetestresultofthesoftware.Finally,thegainsindepthofcomprehensiontothisdesignprocess.

 

二、凸轮机构的发展概况

凸轮机构是一个具有曲线轮廓或凹槽的构件.凸轮通常作等速转动,但也有做往复摆动或移动的.被凸轮直接推动的构件称为推杆.凸轮机构就是又凸轮,推杆和机架三个主要构件所组成的高副机构.凸轮的最大优点是:

只要适当地设计出凸轮的轮廓曲线,就可以使推杆得到各种预期的运动规律,而且机构简单紧凑.

凸轮机构是间歇运动的常用机构之一,广泛用于轻工机械、纺织机械、包装机械、印刷机械、内燃机等各种自动机械中。

凸轮机构之所以能在各种自动机械中获得广泛的应用,除了它的最大优点外,还因为它兼有传动、导引及控制机构的各种功能。

当凸轮机构用于传动机构时,可以产生复杂的运动规律,包括变速范围较大的非等速运动,以及暂时停留或各种步进运动;凸轮机构也适宜于用作导引机构,使工作部件产生复杂的轨迹或平面运动;当凸轮机构用作控制机构时,可以控制执行机构的自动工作循环。

人类对凸轮机构的认识由来已久,但直到十九世纪末,对凸轮机构还未曾有过系统地研究。

随着工业化的发展,对高效的自动机械的需求大大增加,需要改善内燃机配气机构的工作性能,所以直到二十世纪初,凸轮机构的研究才开始受到重视。

在二十世纪四十年代以后,由于内燃机转速增加,引起故障增多,才开始对配气凸轮机构进行深入研究,并从经验设计过渡到有理论根据的运动学与动力学分析。

现代机械日益向高速发展,凸轮机构的运动速度也愈来愈高。

因此,高速凸轮的设计及其动力学问题的研究已引起普通重视,提出了许多适于在高速条件下采用的推杆运动规律,以及一些新型的凸轮机构。

另一方面,随着计算机的发展,凸轮机构的计算机辅助设计和制造已获得普遍地应用,从而提高了设计和加工的速度及质量,这也为凸轮机构的更广泛应用创造了条件。

三、课程设计任务

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

设有凸轮如图1所示。

凸轮转角t与

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

图如图2所示。

要求分析凸轮的曲线规律,设计一个软件

图1

能够用于平面凸轮的参数化绘图和生成数控加工的代码。

即:

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

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

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

弧逼近的方法生成曲线;

3.能够生成数控代码;

图2

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

(2)曲线的类型及函数式的分析

所谓推杆的运动规律,是指推杆在运动时,其位移s速度v和加速度a随时间t的变化的规律.又因为凸轮一般为等速运动,即其转角&与与时间成正比,所以推杆的运动规律更常表示为推杆的运动参数随凸轮转角&变化的规律.例如图2就是推杆位移随凸轮转角变化的运动线图.

下面分析各种设计凸轮的数学表达式:

首先,采用《机械原理》中的一般凸轮设计的几种运动方程式,并对此作了修改:

1、多项式运动规律

(1-1)

式中

为凸轮的转角;s为凸轮从动件位移;

、…为待定系数,可以利用边界条件等来确定。

而常用的有以下几种多项式运动规律。

(1)一次多项式运动规律(速度为常数)

                    

 

设取边界条件为

在起点处

.

在终点处

.

则由式(1-2)可得

,故从动件推程的运动方程为

,回程时h取负值。

(2)二次多项式运动规律(加速度为常数)

等加速运动方程:

等减速运动方程:

由于等加速等减速的曲线图形都是由两部分组成,而为方便曲线的分类,固对其进行修改。

其中原等加等减加速度函数为:

”和“

”。

两段曲线的范围分别为h/2,δo/2,,以h/2,δo/2,代入原式中,即可得到求出单独等加速或等减速的函数式。

由于采用的h值是相对的,所以回程时,只把h取负值即可。

2、三角函数运动规律

(1)余弦加速度运动规律(简谐运动规律)从动件的加速度

余弦规律变化,其运动方程为

(2)正弦加速度运动规律(摆线运动规律)从动件的加速度按正弦规律变化,其运动方程为

其中,等速运动:

极大的冲击;等加速、等减速:

冲击较大;余弦加速度运动:

冲击力较小;正弦加速度运动:

没冲击。

由于凸轮的曲线函数还有很多,如五项式、高次方、谐波等,而且由于凸轮的具体运用场合不同,如对心直推,偏置直动推杆盘状凸轮机构,摆动推杆,平底推杆等。

这些情况不在考虑的范围内,同时也忽略了对设计完成的凸轮的冲击力。

二、软件设计

1、程序设计语言的选择

目前流行的开发工具有C++Builder、VC、VB和Delphi,每一种开发语言都其特点。

在这次程序设计中,我选择了VisualBasic(VB)程序开发工具。

因为其设计语言简单易用,在编程系统中引入了面向对象的机制,提供了一种可视界面的设计方法。

用户可直接使用窗体和控件设计应用程序界面,极大地提高了应用程序开发的效率。

在程序中,我采用了多个应用窗口依次询问的方法,逐步完成凸轮的仿真设计。

每个窗体按照不同的功能而划分为:

登陆界面,基本参数选择界面,主窗体,NC加工窗体,还有帮助界面。

2、程序算法的简述

数控系统一般只有直线和圆弧插补的功能,对于非圆曲线轮廓,只有用直线和圆弧去逼近它,“节点”就是逼近线段与非圆曲线的交点。

一个已知曲线方程的节点数主要取决于所用逼近线段形状、曲线方程的特征以及允许的逼近误差。

在本程序中,由于时间的关系,我采用的逼近方法是直线逼近方法,简单易编程,容易检查出错误。

虽然会在某些线段中会产生较大的误差,但由于每段逼近线段的长度较小,因此,产生的误差都在允许的范围之内。

但是,也由于这个原因,使节点过多,这是无法避免的。

3、设计的流程图

初步构想界面确定确定逼近算法模块编写程序调制

4、设计过程

(1)程序流程图

 

 

(2)主要程序分析

1、初始坐标系绘制

PrivateSubcmdOK_Click()'坐标初始化

Dimc1AsDouble,c2AsDouble,cAsDouble,aAsInteger

IfIsNumeric(TxtRise1.Text)AndIsNumeric(Txtr.Text)AndIsNumeric(TxtNum.Text)Then'判断输入的R,H,N是否是数字

m1=TxtNum.Text:

m2=Txtr.Text:

m3=TxtRise1.Text

TxtNum.Enabled=False:

Txtr.Enabled=False:

TxtRise1.Enabled=False

Form1.Labfun.Caption=""

Ifm1>=1Andm2>0Andm3>=0Then

a=Val(TxtNum):

c1=Val(Txtr):

c2=Val(TxtRise1)

c=1.2*(c1+c2)

Form1.Label15.Caption="Y":

Form1.Label12.Caption="0":

Form1.Lbls.Caption=c2

Form1.Label13.Caption="s":

Form1.Label14.Caption="δ":

Form1.Label11.Caption="X"

Form1.Label3.Caption="90":

Form1.Label4.Caption="0":

Form1.Label8.Caption="180"

Form1.Label9.Caption="270":

Form1.Label10.Caption="360"

'绘制PicView的坐标

Form1.PicView.Scale(-c,c)-(c,-c)

Form1.PicView.Line(0,-1.2*(c1+c2))-(0,1.2*(c1+c2)),RGB(0,0,255)

Form1.PicView.Line(-1.2*(c1+c2),0)-(1.2*(c1+c2),0),RGB(0,0,255)

Fori=1To10

Form1.PicView.Line(0+i*((c1+c2)/10),0)-(0+i*((c1+c2)/10),c/50),RGB(0,0,255)

Form1.PicView.Line(0-i*((c1+c2)/10),0)-(0-i*((c1+c2)/10),c/50),RGB(0,0,255)

Form1.PicView.Line(0,0+i*((c1+c2)/10))-(c/30,0+i*((c1+c2)/10)),RGB(0,0,255)

Form1.PicView.Line(0,0-i*((c1+c2)/10))-(c/30,0-i*((c1+c2)/10)),RGB(0,0,255)

Nexti

'考虑升程和曲线段数的输入值的两种情况

'一,当升程为>0和曲线段数为>1时

Ifc2>0Anda>1Then

Form1.Cmbsel.Enabled=True

Form1.PicView1.ScaleHeight=-1.2*c2

Form1.PicView1.ScaleTop=c2

'绘制PicView1的坐标

Form1.PicView1.Line(0,0)-(360,0),RGB(0,0,0)

Fori=1To4

Form1.PicView1.Line(0,0+i*(c2/4))-(5,0+i*(c2/4)),RGB(0,0,0)

Nexti

Form1.PicView1.Line(0,0)-(0,c2),RGB(0,0,0)

Fori=1To8

Form1.PicView1.Line(0+i*(360/8),0)-(0+i*(360/8),c2/24),RGB(0,0,0)

Nexti

Else

'二,当升程为<0或曲线段数为<1时

Form1.Cmbsel.Text="休程"

Form1.Labfun.Caption="r="&Val(Txtr)

Form1.Cmbsel.Enabled=False:

Form1.CmdOK.Enabled=True

Form1.Numend.Enabled=False:

Form1.Numh.Enabled=False:

Form1.Numstr.Enabled=False

Form1.PicView1.ScaleHeight=-12

Form1.PicView1.ScaleTop=10

Form1.CmdOK.Enabled=False

MsgBox"请检查输入的凸轮参数是否准确"

 

Fori=1To36

Form1.PicView1.Line(0+i*(360/36),0)-(0+i*(360/36),0.3),RGB(0,0,0)

Nexti

EndIf

 

Form1.CountAll.Caption=TxtNum.Text:

Form1.CountNow.Caption=1

cn=1:

tch=0:

sch=Val(TxtRise1):

wide=0:

high=0

Form1.PicView.DrawStyle=2'绘制两个虚线圆

Form1.PicView.Circle(0,0),Val(Txtr),RGB(250,0,255)

Form1.PicView.Circle(0,0),Val(Txtr)+Val(TxtRise1),RGB(250,0,255)

Form1.PicView.DrawStyle=0

CmdOK.Enabled=False

Form1.Numstr.Enabled=False:

Form1.Numend.Enabled=False:

Form1.Numh.Enabled=False

Else

MsgBox("请正确输入正确的参数")

EndIf

Else

MsgBox("请正确输入数字")

EndIf

Form1.Label1.Caption="基圆半径R为:

"&m2

Form1.Label2.Caption="升程H为:

"&m3

Dialog1.Hide

EndSub

PrivateSubEnd_Click()

a=MsgBox("真的退出吗?

",vbOKCancel,"退出")

Ifa=vbOKThenEnd

EndSub

PrivateSubForm_Load()

EndSub

2、凸轮轮廓曲线的主程序:

先判断输入值是否是数字,接着判断曲线的终止角度是否大于起始角度。

当输入最后一段时,系统自动生成最终的参数,并且判断是否在360度之内,自动连接曲线成封闭轮廓曲线。

PrivateSubcmdOK_Click()

IfIsNumeric(Dialog1.Txtr.Text)AndIsNumeric(Dialog1.TxtRise1)AndIsNumeric(Dialog1.TxtNum.Text)_

AndIsNumeric(Numstr)AndIsNumeric(Numend)AndIsNumeric(Numh)Then'检查Text的内容是否为数字

str=Val(Numstr):

end1=Val(Numend):

h=Val(Numh)

a1=Numstr:

a2=Numend:

a3=Numh:

r=Val(Dialog1.Txtr):

IfVal(Numend)>Val(Numstr)AndVal(Numend)<=360AndVal(Numstr)<360Then'检查终止角度(end1)是否大于初

IfVal(Dialog1.TxtRise1)=0OrVal(Dialog1.TxtNum)=1Then

'如果升程H=0或曲线段数N=1

Callforend:

Callcase0:

CmdOK.Enabled=False

Else

IfVal(Numh)<=Val(Dialog1.TxtRise1)AndVal(Numh)>=0Andcn=1And_

Val(Numend)<360Then

Callcaseall

ElseIfhigh+h<=Val(Dialog1.TxtRise1)Andhigh+h>=0Andcn>1And_

Val(Numend)<360AndNumend.Enabled=TrueOrVal(Numend)=360_

AndNumend.Enabled=FalseThen

Callcaseall

ElseIfVal(Numend)=360AndNumend.Enabled=TrueThen

MsgBox"范围出错!

"

Numend.SetFocus

Else

MsgBox"范围出错!

"

Numh.SetFocus

EndIf

EndIf

Else

MsgBox("范围出错!

")

CmdOK.Enabled=True

Numend.SetFocus

EndIf

Else

MsgBox("输入为空或有非法字符,请重新输入!

")

'如果输入的起始角度和终止角度不是数字,则出现警告

Numend.SetFocus

EndIf

EndSub

3、函数式生成曲线的程序:

以正弦曲线为例,先定义数组pcx(low),pcy(low)下标范围,每次取0.1个单位角度,每次在picview上绘制一小段直线,直至结束为止。

并且判断是否为休程,假如为休程时,则生成圆弧的NC加工代码;否则,直接生成直线的NC加工代码。

每次绘制逼近线段时,其开始都是以上一次的逼近线段的终点为起点的,因此能够保证曲线顺利的过度连接。

Subcase3()

low=10*Val(Numstr)

Fori=0To(end1-str)Step0.1

X=i

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

PicView1.PSet(X,Y),RGB(0,0,220)

pcx(low)=(r+(high+Y))*Sin((wide+i)*P/180)

pcy(low)=(r+(high+Y))*Cos((wide+i)*P/180)

PicView.PSet(pcx(low),pcy(low)),RGB(0,0,220)

low=low+1

Nexti

IfVal(Numh)=0Then

CallNCyh

Else

List1.AddItema1&"~"&a2&"h="&a3&""&"正弦加速度运动"

CallNCzx

EndIf

EndSub

4、直线逼近加工代码:

每一段逼近线段的角度为1度,也就是说每一次加工1度的逼近线段,并且判断前一段是否为圆弧。

SubNCzx()

i=str*10+1

List2.AddItem"G01"&"X"&Format$(pcx(str*10+1),"##0.000")&_

"Y"&Format$(pcy(str*10+1),"##0.000")'绝对坐标编程

List3.AddItem"G01"&"X"&Format$(pcx(str*10+1)-_

pcx(str*10),"##0.000")&"Y"&Format$(pcy(str*10+1)-pcy(str*10),"##0.000")'相对坐标编程

j=j+1

Fori=str*10+2Toend1*10-1

List2.AddItem"X"&Format$(pcx(i),"##0.000")&_

"Y"&Format$(pcy(i),"##0.000")

List3.AddItem"X"&Format$(pcx(i)-pcx(i-1),"##0.000")&_

"Y"&Format$(pcy(i)-pcy(i-1),"##0.000")

j=j+1

Nexti

List2.AddItem"X"&Format$((Val(Dialog1.Txtr)+high+h)*_

Cos((90-Val(Numend))*P/180),"##

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

当前位置:首页 > 医药卫生 > 基础医学

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

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