基于solidworks平台盘形凸轮的参数化描述与设计.docx
《基于solidworks平台盘形凸轮的参数化描述与设计.docx》由会员分享,可在线阅读,更多相关《基于solidworks平台盘形凸轮的参数化描述与设计.docx(30页珍藏版)》请在冰豆网上搜索。
基于solidworks平台盘形凸轮的参数化描述与设计
2012届本科毕业论文(设计)
论文(设计)题目:
基于solidworks平台
盘形凸轮的参数化描述与设计
学生姓名:
所在院(系):
机电学院
所学专业:
机械设计制造及其自动化
导师姓名:
完成时间:
2012年5月10日
基于solidworks平台盘形凸轮的参数化描述与设计
摘要
本设计通过对某个盘形凸轮零件的参数化描述并生成盘形凸轮基体,使用解析法精确地获得盘形凸轮轮廓曲线变化的坐标参数。
Solidworks软件为本设计提供了大量的API函数,并对API函数的调用,用户可以在自己开发的程序中展示和Solidworks一样的功能。
并利用VB程序设计通过对相关API函数的调用进行Solidworks的二次开发,从而实现设计步骤的简化,提高设计人员对同种盘形凸轮设计的工作效率。
关键词:
盘形凸轮,参数化描述与设计,解析法,轮廓曲线
TaiPanSolidworkscamsperipheriquesfondeesurladescriptionlaparametrage
Abstract
ThisdesignthroughtoadiscCAMpartsofparametricdescriptionandproducediscCAMmatrix,UsinganalyticmethodtoobtainprecisediscCAMcontourcurvecoordinateparameters,SolidworkssoftwareforthisdesignprovidesagreatdealofAPIfunctions,andtheAPIcallstofunctions,theusercanintheirowndevelopmentprogramandSolidworksshowthesamefunction.AndusingVBprogrammingthroughtotherelevantAPIcallsonSolidworksseconddevelopment,soastorealizethesimplifieddesignsteps,andimprovethedesignpersonneltothesamediscCAMdesignworkefficiency.
keywords:
discCAM,Parametricdescriptionanddesign,Analyticmethod,Contourcurve
第一章绪论
1.1.选取课题背景及意义
凸轮机构其最大的优点就在于只要能够适当地设计出盘形凸轮的轮廓曲线,就能够使推杆获得各种预期的运动规律,并且响应速度非常快,机构也简单紧凑,正因如此,凸轮机构是不可能被数字控制、电子控制等装置完全代替。
凸轮机构还兼有传动、导向和控制机构的功能。
在凸轮机构用作为传动机构的时候,可以产生比较复杂的运动规律,比如变速范围大的非等速运动,并能暂时停留或者作各种步进运动;在凸轮机构用于导向机构的时候,能够使工作机构产生非常复杂的运动轨迹曲线。
在凸轮机构用作控制机构的时候,还可以控制执行机构作自动工作的循环或者作为函数的发生器。
在凸轮机构作为机械式运动用来传递信息储存的基本元件的时候,它具有构件少和空间体积小的优点、因此,凸轮机构在工业、农业生产中得到广泛的应用,目前已发展了成千上万种中高效,小型运动精密价格低廉的机械,例如:
内燃机的配气系统、自动化打包机、自动化塑形机、自动化装配机、自动化机床、纺织机械、收割机械、服装加工机械等。
1.2.盘形凸轮机构研究现状
目前Solidworks软件在我国工业领域的广泛使用,在一定程度上提升了我国的工程技术人员的工作效率,对于加快建设小康社会、缩小我国工程领域和西方发达国家之间的差距起到了一定的促进作用。
但是目前solidworks在一些零件的画法上还没有能够达到非常方便的自动出图,不过利用solidworks强大的参数化来完成盘形凸轮的参数化设计,可以很方便地进行凸轮轮廓的廓形设计,精度高,效率高。
随着计算机辅助设计系统的进一步发展,尤其是基于特征方程及参数化技术的三维设计软件的研发,为复杂空间曲面的构造提供了良好的支撑平台。
本设计采用精确的数学模型建立盘形凸轮的实际廓线方程,基于SolidWoks平台,通过对其二次开发的手段精确构造出实际轮廓曲线,完成了盘形凸轮的建模,并通过实践证明了这种方法的优越性和可行性。
Solidworks本身也附带有盘形凸轮的插件TOOBOX,不过通过TOOLBOX设计出来的凸轮模型,它的凸轮轮廓曲线却是不光滑连续的,尤其是运用到高速的场合,就会产生非常大的冲击力。
并且针对凸轮的轮廓曲线的反求,直到目前还没有比较通用的凸轮插件。
1.3.主要研究内容
本设计通过对某个盘形凸轮零件的参数化描述并生成盘形凸轮基体,使用解析法精确地获得盘形凸轮轮廓曲线变化的坐标参数,并利用VB程序设计通过对相关API函数的调用进行Solidworks的二次开发。
第二章某个零件的参数化描述
2.1.凸轮轮廓线设计
根据实际需求设计一对心直动尖顶推杆盘形凸轮。
由于余弦加速度的运动规律存在柔性冲击,只能用于中速轻载的场合;正弦加速度运动的规律既没有刚性冲击又没有柔性冲击,能用于高速的场合。
故设计基圆半径r0=50㎜,p偏距为0,使凸轮以等角速度沿着逆时针方向转动,在凸轮转过120°的时候,推杆按照正弦加速度的运动规律上升50㎜;凸轮再转过60°的时候,推杆则保持不动;盘形凸轮再回转60°的时候,推杆又按照余弦加速度的运动规律下降到起始位置;盘形凸轮在转过一周的其他角度的时候,推杆保持静止不动。
2.2.求凸轮轮廓
凸轮轮廓曲线的设计所采用依据的基本原理为反转法原理。
在根据使用要求和机构的条件选定了凸轮结构的型式、推杆的运动规律、及凸轮的转动方向和凸轮基本尺寸后,就可以进行凸轮的轮廓曲线的设计了。
凸轮的轮廓曲线的设计主要采用解析法,因为采用作图法设计凸轮难以满足对凸轮机构使用精度的要求,另一方面来讲由于计算机和数控车床的大量应用,图解法已经逐渐地被解析法所代替。
不过解析法也有自己的缺点,一般来说解析法多数是采用矢量法求出各个类型平面凸轮机构的算式,由于凸轮机构种类比较繁多,所要设计的参数数量又非常的大,所以公式种类也很多,并且比较复杂。
根据以后的发展趋势来看本设计采用解析法设计凸轮的轮廓曲线。
即为理论轮廓方程式。
推程阶段:
由于推程阶段推杆是按正弦加速度上升50mm,
其运动方程为:
此阶段凸轮转过120°。
其中h=50mm
远休止阶段:
凸轮转过30°而推杆却静止不动,此时轮廓曲线是一段以基圆半径+升程的圆弧。
回程阶段:
回程阶段推杆是按余弦加速度下降至起始位置
其运动方程为:
此阶段凸轮转过60°,h=50mm
近休止阶段:
凸轮经过推程阶段,远休止阶段,回程阶段后的其余角度,推杆均静止不动,此时轮廓曲线是以基圆为半径的一段圆弧。
2.3.具体绘制步骤
2.3.1.启动solidworks2011。
选择菜单命令文件|新建,创建一个新的3D零件。
选择“前视基准面”作为草图的绘制平面。
单击“草图绘制”按钮进入草图绘制状态。
2.3.2.画基圆
单击草图工具中的“中心线”按钮,绘制两条长度过100且过原点的相交中心线。
单击草图工具栏中的圆按钮,以原点为圆心绘制半径50㎜的圆作为基圆,如图1所示
图1绘制基圆
2.3.3.升程曲线的绘制
点击“方程式驱动的曲线”按钮,弹出“方程式驱动的曲线”属性对话框。
根据已知条件计算可得到正弦加速度升程方程
S=50*((3/(2*pi)*t)-(1/(2*pi))*sin(3*t))
X=50*(1+(3/(2*pi)*t)-(1/(2*pi))*sin(3*t))*sin(t)
Y=50*(1+(3/(2*pi)*t)-(1/(2*pi))*sin(3*t))*cos(t)
T1=0
T2=2*pi/3
在“方程式类型”框选择“参数性”弹出方程式输入
xt=50*(1+(3/(2*pi)*t)-(1/(2*pi))*sin(3*t))*sin(t)
Yt=50*(1+(3/(2*pi)*t)-(1/(2*pi))*sin(3*t))*cos(t)
T1=0
T2=2*pi/3
点击“确定”按钮得到图2曲线:
图2生成升程曲线
2.3.4.远休止阶段曲线的绘制
点击“方程式驱动的曲线”按钮,弹出“方程式驱动的曲线”属性对话框。
根据已知条件计算可得到远休止阶段的方程
X=100*sin(t)
Y=100*cos(t)
T1=2*pi/3
T2=pi
在“方程式类型”框选择“参数性”弹出方程式输入
Xt=100*sin(t)
Yt=100*cos(t)
T1=2*pi/3
T2=pi
点击“确定”按钮得到图3曲线:
图3生成远休止曲线
2.3.5.回程阶段曲线的绘制
点击“方程式驱动的曲线”按钮,弹出“方程式驱动的曲线”属性对话框。
根据已知条件计算可得到回程阶段的方程
余弦加速度回程方程
S=25*(1-cos(3*t)
X=(50+25*(1-cos(3*t)))*sin(t)
Y=(50+25*(1-cos(3*t)))*cos(t)
T1=pi
T2=4*pi/3
在“方程式类型”框选择“参数性”弹出方程式输入
Xt=(50+25*(1-cos(3*t)))*sin(t)
Yt=(50+25*(1-cos(3*t)))*cos(t)
T1=pi
T2=4*pi/3
点击“确定”按钮得到图4曲线:
图4生成回程曲线
2.3.6.删除辅助线
删除辅助线,仅保留凸轮的轮廓曲线。
单击“草图”工具栏中“剪裁实体”按钮剪裁多余的圆弧。
效果如图5:
图5删除辅助线
2.3.7.绘制轴孔
点击“草图”工具栏中的圆命令,以原点为圆心,15㎜为半径绘制一个圆。
如图6:
图6绘制轴孔
2.3.8.拉伸实体
执行菜单命令“拉伸凸台/基体”,弹出“凸台-拉伸”属性对话框,设置“终止条件”为“两侧对称”,设置“深度”为20㎜,单击“确定”按钮。
完成了凸轮基体的绘制。
效果如图7:
图7生成凸轮基体
2.3.9.绘制键槽草图
选择“前视基准面”作为草图的绘制平面。
单击“边角矩形”命令绘制如图8的草图。
图8绘制键槽草图
图9开键槽
2.3.10.创建键槽
单击“拉伸切除”按钮,弹出“拉伸-切除”属性对话框,设置“终止条件”为“两侧对称”,“深度”设置为50㎜,单击“确定”按钮,生成键槽特征。
如下图所示:
图10凸轮实体
至此,完成对单个凸轮零件的设计。
第三章用VB实现零件的数字描图方法
3.1.编写程序
3.1.1.运行Solidworks2011
新建一零件点击“录制\暂停宏”按钮
,然后,按照步骤画图,等完成作图后点击“停止宏”按钮
,并保存。
图11保存宏文件
3.1.2.然后再调用录制的源程序
点击编辑按钮
进行solidworks录制程序的查看。
图12查找宏文件
图13复制录制宏
3.1.3.复制录制的程序
得到的程序并不能直接运行,需在VB中进行修改。
复制录制的程序粘贴到VB中进行修改。
3.1.4.新建一个标准EXE工程
在标准下拉菜单中选中“应用”按钮弹出属性对话框,如图点选下面3个选项,点击“确定”按钮。
如图14:
图14引用
3.1.5.建立一个工程
新建一个工程,进入工程代码编写界面。
3.1.6.进入工程代码编写属性
修改从Solidworks中付出出来的源程序。
效果如图15:
图15修改源程序
3.2主要程序段的运行
3.2.1.输入参数
图16输入参数
3.2.2.逐段进行编程
(1)输入程序段为
Part.ClearSelection2True
m0=e/1000'升程起点
n0=Sqr((R0^2)-(e^2))/1000
DimskSegmentAsObject
DimiAsInteger
Fori=1To300
t=i*a1/300
S1=h*(t/(θ1*pi/180)-(1/(2*pi))*Sin(2*pi*t/(θ1*pi/180)))'正弦加速度升程
m1=((S1+Sqr((R0^2)-(e^2)))*Sin(t)+e*Cos(t))/1000'
n1=((S1+Sqr((R0^2)-(e^2)))*Cos(t)-e*Sin(t))/1000'
SetskSegment=Part.SketchManager.CreateLine(m0,n0,0#,m1,n1,0#)
m0=m1
n0=n1
Nexti时,点击链接solidworks控制按钮,调用solidworks程序,在点击执行命令按钮,solidworks自动生成下图18曲线。
图18推程曲线
(2)输入程序段
Part.ClearSelection2True
m1=((S1+Sqr((R0^2)-(e^2)))*Sin(a1)+e*Cos(a1))/1000'远休止起点
n1=((S1+Sqr((R0^2)-(e^2)))*Cos(a1)-e*Sin(a1))/1000Fori=1To300
t=a1+(i*a2/300)
m2=((Sqr((R0^2)-(e^2))+h)*Sin(t)+e*Cos(t))/1000
n2=((Sqr((R0^2)-(e^2))+h)*Cos(t)-e*Sin(t))/1000
SetskSegment=Part.SketchManager.CreateLine(m1,n1,0#,m2,n2,0#)
m1=m2
n1=n2
Nexti
时,点击链接solidworks控制按钮,调用solidworks程序,在点击执行命令按钮,solidworks自动生成下图19曲线。
图19远休止曲线
(3)输入程序段
Part.ClearSelection2True
m2=((h+Sqr((R0^2)-(e^2)))*Sin(a1+a2)+e*Cos(a1+a2))/1000'回程起点
n2=((h+Sqr((R0^2)-(e^2)))*Cos(a1+a2)-e*Sin(a1+a2))/1000'
Fori=1To300
t=(a1+a2)+(i*a3/300)
S2=h/2*(1-Cos(pi*t/a3))'余弦加速度回程
m3=((S2+Sqr((R0^2)-(e^2)))*Sin(t)+e*Cos(t))/1000'
n3=((S2+Sqr((R0^2)-(e^2)))*Cos(t)-e*Sin(t))/1000'
SetskSegment=Part.SketchManager.CreateLine(m2,n2,0#,m3,n3,0#)
m2=m3
n2=n3
Nexti
时,点击链接solidworks控制按钮,调用solidworks程序,在点击执行命令按钮,solidworks自动生成下图20曲线。
图20回程曲线
第四章Vb与solidworks的程序链接
4.1.使用程序调用solidwork软件
在工具栏中双击
按钮,进入调用程序的编写。
如图21输入程序段,
图21调用solidworks命令程序
点击即可与solidworks的程序链接。
4.2运行工程实例
如图输入以下参数,点击“链接solidworks”控制键,然后再点击“启动”键,运行工程,会自动生成如下图的三维盘形凸轮,完成目标要求。
图22控制器
图23生成盘形凸轮
第5章结论
通过对单个盘形凸轮零件的设计,初步展示了基于Solidworks平台对盘形凸轮的参数化表示,利用VB调用大量API函数进行编程,对Solidworks软件进行二次开发,实现盘形凸轮零件的三维参数化设计。
本设计成果应用在Solidworks软件中可实现与软件自带插件相同的效果,极大地解决了对此类零件重复输入一些很复杂的数据二苦恼的难题,提高了设计效率。
不过本设计成果并未解决凸轮高速运动状态下产生冲击的问题,有待进一步完善。
参考文献
[1]孙桓,陈作模,葛文杰.机械原理[M](第七版).北京:
高等教育出版社,2006
[2]叶炜威,余才佳.SolidWorks2006实体建模与二次开发教程[M].北京:
国防工业出版社,2006.9
[3]蓝荣香,高翔,刘文.SolidWorks零件设计技术与实践(2007版)[M].北京:
电子工业出版社2007.2
[4]沈祥玖.VisualBasic程序设计[M].北京:
中国水利水电出版社,2005
[5]赵建敏,郭庆.中文版VisualBasic6.0编程指南[M].北京:
航空工业出版社,1999.8
[6]濮良贵、纪名刚.机械设计[M].8版.高等教育出版社,2004
[7]邹昌平、黄志真、孙翠微、赵建波.基于VISua1C++的Solidworks三维标准件库.现代制造工程,2002.10
[8]江洪编著.Solidworks2OO3二次开发基础与实例教程.电子工业出版社
[9]江洪、魏峥、王涛威等编著.Solidworks二次开发实例解析.机械工业出版社,2004
[10]机械设计手册编委会编著巩云鹏、陈良玉主编.机械设计手册(新版).2004
[11]丛晓霞.机械设计课程设计[M].北京:
高等教育出版社,2010.8
致谢:
本设计在王占奎老师的悉心指导下,进行的非常顺利。
王老师对我们的设计课题非常上心,常常抽出自己的空闲时间来细致地给指导我们,同时查看我们的设计完成状况,督促我们去做设计。
是一位可爱可敬的好老师。
再次诚挚的对王老师说声感谢。
本设计的完成还要感谢马灵克同学、朱文杰同学、李钊同学及卢帅稳同学,我们一起讨论所遇到的问题,想方设法去解决问题,才有了这个设计成果的产生。
业感谢陪伴我四年的同窗,有了这些良师益友般的同窗,才有今天的设计能力。
附录
源程序
DimswAppAsObject
DimPartAsObject
DimboolstatusAsBoolean
DimlongstatusAsLong,longwarningsAsLong
DimFeatureAsObject
DimFeaturedataAsObject
DimR0AsDouble'基圆半径
DimRrAsDouble'滚子半径
DimS1AsDouble'推程曲线方程
DimS2AsDouble'回程曲线方程
DimtAsDouble'转过角度
DimeAsDouble'偏距
DimdAsDouble'凸轮厚度
DimhAsDouble'升程
Dimθ1AsDouble'升程角
Dimθ2AsDouble'远休止角
Dimθ3AsDouble'回程角
Dima1AsDouble
Dima2AsDouble
Dima3AsDouble
DimDDAsDouble'轴孔
Dimt1AsDouble
DimbAsDouble
Constpi=3.14159265358979
PrivateSubCommand1_Click()
SetswApp=CreateObject("SldWorks.Application")
SetPart=swApp.NewPart()
swApp.Visible=True
EndSub
PrivateSubCommand2_Click()
R0=Val(Text1.Text)
Rr=Val(Text2.Text)
e=Val(Text3.Text)
θ1=Val(Text4.Text)
θ2=Val(Text5.Text)
θ3=Val(Text6.Text)
d=Val(Text7.Text)
h=Val(Text8.Text)
DD=Val(Text9.Text)
t1=Val(Text10.Text)
b=Val(Text11.Text)
a1=θ1*pi/180
a2=θ2*pi/180
a3=θ3*pi/180
boolstatus=Part.Extension.SelectByID2("前视基准面","PLANE",0,0,0,False,0,Nothing,0)
boolstatus=Part.Extension.SelectByID2("前视基准面","PLANE",0,0,0,False,0,Nothing,0)
Part.SketchManager.InsertSketchTrue
Part.ClearSelection2True
m0=e/1000'升程起点
n0=Sqr((R0^2)-(e^2))/1000
DimskSegmentAsObject
DimiAsInteger
Fori=1To300
t=i*a1/300
S1=h*(t/a1-(1/(2*pi))*Sin(2*pi*t/a1))'正弦加速度升程
m1=((S1+Sqr((R0^2)-(e^2)))*Sin(t)+e*Cos(t))/1000'
n1=((S1+Sqr((R0^2)-(e^2)))*Cos(t)-e*Sin(t))/1000'
SetskSegment=Part.SketchManager.CreateLine(m0,n0,0#,m1,n1,0#)
m0=m1
n0=n1
Nexti
Part.ClearSelection2True
m1=((S1+Sqr((R0^2)-(e^2)))*Sin(a1)