整理盘形凸轮轮廓数控编程说明书.docx
《整理盘形凸轮轮廓数控编程说明书.docx》由会员分享,可在线阅读,更多相关《整理盘形凸轮轮廓数控编程说明书.docx(24页珍藏版)》请在冰豆网上搜索。
![整理盘形凸轮轮廓数控编程说明书.docx](https://file1.bdocx.com/fileroot1/2023-2/11/2e90998e-e73b-42d0-b6cc-3165406e7304/2e90998e-e73b-42d0-b6cc-3165406e73041.gif)
整理盘形凸轮轮廓数控编程说明书
引言:
随着计算机的应用日益广泛,在凸轮机构的设计中采用计算机辅助设计的方法已日益普遍。
它不仅使设计工作量大为减少,设计速度大为提高,而且可大大提高凸轮廓线的设计精度,从而更好的满足设计要求。
㈠凸轮的分类:
⒈凸轮按形状分类可以分为:
⑴盘状凸轮(platecam):
具有变化半径盘状体,从动在垂直于凸轮的平面内作移动或摆动。
⑵楔形移动凸轮(wedgecam):
将盘形凸轮一个扇形部分绕在圆锥上---锥形凸轮,即在圆锥体上开有曲线槽,从动件运动与圆柱凸轮相同。
⑶柱状凸轮(cylindricalcam):
移动凸轮绕在圆柱体上→圆柱凸轮。
实际上是在圆柱体上开有曲线槽端面上做成曲面形状,从动件与在凸轮轴同一平面或平行平面内移动,摆动。
⒉按从动件与凸轮的接触形式分类可以分为:
⑴尖底从动件(aknifeedgefollower):
点接触,易磨损,传
力不大。
2.滚子从动件(arollerfollower):
线接触:
磨损小,
传力大
⑵平底从动件(aflat-facefollower):
平面接触,接触处易形成油膜,高速。
⒊按从动件的运动形式分类可以分为:
⑴往复移动凸轮机构(reciprocating)
⑵摆动凸轮机构(oscillating)
⒋按锁合方法分类可以分为:
⑴力封闭(弹簧、重力)
⑵形封闭(槽形、等宽矩形、等径、共轭)
㈡凸轮设计的现状
传统的盘形凸轮设计主要有图解法和解析法。
图解法直观简单,但是手工作图选取的等分数有限、精度差。
以此为基础的手工画线加工表面精度都比较低。
对于从动件运动规律复杂,精度要求高的凸轮,手工操作难以胜任。
随着计算机技术的日益发展,用解析法使绘制从动件运动规律复杂,精度要求高的凸轮成为可能,并得到日益广泛的应用。
本人这次尝试在解析法的基础上,借助VB6.0编制了一个简化的对心滚子从动件盘形凸轮设计软件。
一个凸轮机构的完整设计过程大体包括以下内容:
1.根据使用场合和工作要求,选择凸轮机构的类型
2.根据工作要求选择或设计从动件的运动规律
3.根据机构的具体结构条件,初选凸轮的基圆半径
设计的目标是保证凸轮机构在既满足工作对从动件的运动要求又具有良好的受力状况的前提下,机构的结构尽可能紧凑。
凸轮机构计算机辅助设计在很大程度上弥补了单一CAD系统的不足。
因此,凸轮机构计算机辅助设计的发展空间是十分巨大的。
1数控技术课程设计的目的:
数控技术课程设计是机电专业教学活动的一个重要的实践环节,是对学生所学《数控技术》课程和其它有关课程知识和技能的一次综合性练习,旨在使之巩固,充实,系统化,并得到进一步扩展。
课程设计是培养学生理论联系实际,解决生产实际问题的机会。
通过对数控机床典型部件的结构设计和零件编程的集体问题的解决,使学生对数控机床的结构原理,设计方法以及用编程方法处理实际问题的一般步骤和集体技巧得到训练,提高运用所学专业知识分析问题和解决问题的能力。
2设计任务:
平面凸轮的数控加工程序的编制:
设有凸轮如图1所示。
凸轮转角t与
从动件位移s的关系即凸轮轮廓的展成平面
图如图2所示。
要求分析凸轮的曲线规律,设计一个软件能够用于平面凸轮的参数化绘图和生成数控加工的代码。
即:
1.有一个凸轮设计的友好界面;图1
2.能够按照用户要求生成凸轮的曲线
轮廓,对于非圆几何形状可采用直线或圆
弧逼近的方法生成曲线;
3.能够生成数控代码;图2
凸轮设计中涉及的有关参数可自行设定,或参考图2中的参数。
3设计的主要问题:
(1.如何通过计算机得出用户所需的凸轮图形。
在数控编程的学习中,我们学习过几种非圆曲线逼近的方法:
1)等间距直线逼近法,2)等弦长直线逼近法,3)等误差直线逼近法,4)圆弧逼近法。
鉴于等间距直线逼近法比较简单、易懂,而其余三种方法非常复杂,故本人采用了等间距直线逼近法作曲线的形状。
下面对此方法作简要介绍:
等间距直线逼近法是使每一个
程序段中的某一个坐标的增量相等。
右图表示加工一个凸轮时,x坐标
按等间距分段时结点的分布情况。
将x1~x7的值代入方程y=f(x),可
求得y1~y14的值,从而得到结点
A1~A14的坐标值。
把A1~A2、A2~
A3…A14~A1用直线连起来,即可得到曲线图形。
间距大小一般根据零件加工精度要求凭经验选取。
求出结点坐标后再验算逼近误差是否小于允许值。
等间距法计算简单,但由于取定的间距应保证曲线曲率最大处的逼近误差小于允许值,所以程序可能过多。
因为目前数控机床的精度一般为0.01,故在本软件中,我采用的间距为0.1mm,即x轴每隔0.1mm取一个点,(如图代码,end1是指所画圆弧的开始点,str是终点,step0.1指每0.1个单位画一个点,利用循环语句画出所要求曲线)
(2.如何得到NC加工代码。
要生成NC代码,可以用AutoCAD内嵌的Autolisp进行转化成DXF文件,然后把此文件导入MsterCAM中生成NC代码。
但这样很麻烦!
由于题目的凸轮加工也比较简单,所以我决定用VB直接编写NC代码,以便本软件更加人性化。
当然,编写出来的代码,不能像MasterCAM生成的那样完善。
不过,无论你用哪种方法得到NC代码,其主体部分肯定相同的。
所以,对于自行编写出的NC代码,我们稍加修改也一样可以达到目的。
(见主要程序说明或所附源代码)
4凸轮曲线及输入参数的确定:
凸轮从动件的运动规律所用数学表达式的形式常用的主要有多项式运动规律和三角函数运动规律两大类。
Ⅰ多项式运动规律
(1-1)
式中
为凸轮的转角;s为凸轮从动件位移;
、
、
、…为
待定系数。
而常用的有以下几种多项式运动规律。
(1)一次多项式运动规律(速度为常数)
(1-2)
设取边界条件为
在起点处
,
.
在终点处
,
.
则由式(1-2)可得
,
,故从动件推程的运动方程为
,回程时h取负值。
⑵二次多项式运动规律(加速度为常数)
等加速运动方程:
等减速运动方程:
Ⅱ三角函数运动规律
1余弦加速度运动规律(简谐运动规律)
从动件的加速度余弦规律变化,其运动方程为:
(2)正弦加速度运动规律(摆线运动规律)
从动件的加速度按正弦规律变化,其运动方程为:
其中:
等速运动:
极大的冲击;等加速、等减速:
冲击较大;余弦加速度运动:
冲击力较小;正弦加速度运动:
没冲击。
由于凸轮的曲线函数还有很多,如五项式、高次方、谐波等,在此不作为设计的范围,而对于凸轮的具体运用场合如对心直推,偏置直动推杆盘状凸轮机构,摆动推杆,平底推杆等情况也不予考虑,同时也忽略了对设计完成的凸轮的冲击力情况的讨论。
5设计的思路及步骤:
基于上述观点,在输出DXF文件方面,在此本人用第二种方法,直接编写DXF文件。
而题目要求此软件要有一个友好的界面,VisualBasic语言完全能达到这个要求。
软件实现的功能是接受用户输入,作出平面凸轮图形,输出DXF文件及NC代码。
具体的步骤是
一、设计用户界面。
在VisualBasic6.0中,界面的设计是轻而易举的事情。
在这
就不加以介绍,而我这次设计的“平面凸轮计算机辅助设计”软件界面有两类,一是接受用户输入凸轮的主参数及图形的窗口,二是导出NC代码的数控参数输入窗口。
主界面如下图:
二、接受用户输入,生成凸轮图形。
在软件中,我提供了凸轮设计中所用到的最基本的五条曲线方程
给用户选择,曲线方程的重复无限次。
其中的关键的如何把输入的方程首尾相接,形成凸轮。
而我是从凸轮的展开图入手的。
因为要输入的曲线都有一个共同特征,x=0时,f(x)=0。
所以我编程时使上一次输入曲线的末点坐标成为下一次输入曲线的原点,问题就解决了。
即如下代码:
(NumEnd是指本次输入曲线的终点,area是指后一条曲线的开始点,即把本次的终点作为后段曲线始点)如下图:
然后把展开图的直角坐标系转换为平面图的极坐标系即可得到凸轮真实的图形。
为了下一步输入DXF文件及NC代码,所以我定义了一个全局静态数组把作图时得到的点保存起来。
三、输入DXF图形交换文件及NC加工代码。
有了上面留下来的点的数值,只要编写好接口程序,就可以得到DXF文件,NC代码了。
用VB中以循环的方法可以很容易实现。
如代码:
至于DXF文件的格式请参阅“设计的主要问题”部分。
6流程图:
7使用步骤说明及效果图:
1、输入凸轮各基本参数
2、选择运动曲线类型
3、输入NC加工参数
4、选择NC代码保存路径
5、生成NC代码
8设计心得体会:
在完成数控技术课程设计之际,本人想谈谈自己的一些心得体会。
首先要衷心感谢老师给予的指导,同时由于本人的水平有限,所以大部分的设计是参考师兄的成果。
在此,我要感谢他们。
课程设计的过程中,因为专业基础不好,本人遇到了很多麻烦。
为此,本人翻阅了很多书籍。
譬如说上个学期学的《机械原理》这本书,了解凸轮的机构及其设计。
然后是江志文先生主编的《VisualBasic程序设计教程》。
弄清楚凸轮设计中使用的插补原理的相关程序。
我得到了很多同学的帮助,在此,我衷心的感谢他们!
作为机械工程系的将要毕业的学生,我觉得能做类似的课程设计是十分有意义,而且是十分必要的。
在已度过的大三的时间里我们大多数接触的是专业基础课。
我们在课堂上掌握的仅仅是专业基础课的理论面,如何去锻炼我们的实践面?
我想这个数控技术的课程设计就为我们提供了良好的实践平台,使我们学会综合运用我们学过的专业知识做学问,使我们学会通过查阅资料的方法去解决现实生活中遇到的问题.为了让自己的设计更加完善,更加符合工程标准,一次次翻阅机械设计手册是十分必要的,同时也是必不可少的。
我们是在作设计,但我们不是艺术家。
他们可以抛开实际,尽情在幻想的世界里翱翔,我们是工程师,一切都要有据可依.
这次课程设计大作业让我深刻领会到:
我们平时要认真对待我们的专业课程,要有严谨的学习态度。
譬如说这次作业中,在VB编程中浪费了很多时间,假如当初的VB基础比较好的话,就不至于这样。
所以,我们不但要学号专业知识,而且要多学专业知识,以有利于以后个人的发展!
由于时间较紧,设计难免有许多不足的地方。
譬如画凸轮的函数方程式有限,缺乏具体分析其函数式的组合情况,有时生成的凸轮曲线之间连接处并非圆滑过渡,会带来很大的冲击力,因此要进行后处理才能使用。
在判断输入参数是否合理,和一些出错处理上还不够完善,因此还有很多地方需要改进的。
还请老师批评指正!
9我的意见和建议:
首先,由于关于这方面的课程设计比较陌生,希望老师能够多点抽时间指导我们。
其次,由于课程设计任务较重,如果几个同学组合完成就更好了。
附部分源程序
模块
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
B.环境影响登记表EndSub
(2)区域、流域、海域的建设、开发利用规划。
环境影响篇章或说明
PrivateSubCommand3_Click()
第1页FrmNC.Hide
EndSub
规划编制单位应当在报送审查的环境影响报告书中附具对公众意见采纳与不采纳情况及其理由的说明。
Tuichu窗体
OptionExplicit
PrivateSubCancelButton_Click()
4)按执行性质分。
环境标准按执行性质分为强制性标准和推荐性标准。
环境质量标准和污染物排放标准以及法律、法规规定必须执行的其他标准属于强制性标准,强制性标准必须执行。
强制性标准以外的环境标准属于推荐性标准。
FrmView.Show
(2)环境影响后评价。
EndSub
1.建设项目环境影响报告书的内容PrivateSubOKButton_Click()
End
(3)生产、储存烟花爆竹的建设项目;EndSub
参考文献
(一)安全预评价依据1.廖效果等.数控技术.武汉:
武汉科学技术出版社,2004.
2.张树兵,戴红,陈哲编.VisualBasic6.0中文版入门与提高.北京:
清华大学出版社,2003.
3.王淑仁,王丹主编.计算机辅助机构设计.吉林:
东北大学出社.2001.
(1)内涵资产定价法4.成大先主编.机械设计手册(第4卷).化学工业出版社.2000.