渐开线齿轮廓线生成动态仿真及其应用
2010-11-05吴瑞明
庞 茂,吴瑞明
(浙江科技学院机械与汽车工程学院,杭州310023)
齿轮机构以传动效率高,功率范围大,工作安全可靠等特点在机械行业被广泛应用。而齿轮的精度对于机构的传动性能、减振降噪都有重要意义,尤其在机床、汽车等行业,齿轮设计生产的精度严重制约着产品的性能。随着CAD/CAM/CAE等技术的发展,优秀的三维CAD软件纷纷涌现,一般机械零件的三维设计对于普通设计人员来说已不再是什么难事[1-3]。但是,对于渐开线齿轮,由于其齿型的复杂性,一般设计者很难精确造型,而影响齿轮精度的一个关键因素就是二维齿轮廓线的生成[4]。另外,由于渐开线的特殊性,对于初次接触渐开线齿轮的学生来说,理解渐开线的形成特性较困难。
为此,本文提出一种采用模拟齿轮切削过程来绘制齿轮廓线的方法,它是基于Visual Basic和AutoCAD ActiveX技术,动态模拟范成法加工齿轮的过程,由刀具与齿轮的相对运动包络出齿廓外形,并由渐开线方程及包络线相结合的方法生成齿轮廓线。齿廓生成过程可形象说明渐开线的特性,可用于相关课程的教学演示,同时,生成的齿廓精度较高,可直接用于三维实体造型。文中以常见的直齿圆柱渐开线齿轮为例,说明该方法的实现过程。
1 相关概念介绍
1.1 范成法原理
范成法原理是指一对啮合传动的齿轮,其齿廓曲线互为包络线的原理。据此原理加工齿轮时,刀具和轮坯以固定角速比传动,同时刀具沿轮坯的轴向作切削运动,从而切制出齿轮的齿廓[5]。
1.2 AutoCAD ActiveX技术
AutoCAD是美国Autodesk公司推出的通用计算机辅助绘图和设计软件包,它具有易于掌握、使用方便、体系结构开放的优点,因而被广泛应用于机械、建筑、电子、航空、造船、纺织等工程设计领域。ActiveX技术是由Microsoft公司提出的一组基于COM(Component object model,部件对象模式)的技术标准。其宗旨是在Windows系统的统一管理下,协调不同应用程序,允许这些应用程序相互传递消息和控制。其中允许其他应用程序对其进行一定操纵的应用程序称为服务程序(server),而操纵服务程序的应用程序称为客户程序(client)。AutoCAD ActiveX技术是AutoCAD R14及以上版本提供的基于ActiveX的自动化对象为其他应用程序访问其内部功能的方法。用支持AutoCAD的编程语言访问AutoCAD对象模型,把AutoCAD功能集成到应用程序中,实现图形的自动生成。本方法正是利用这一技术,用Visual Basic编制程序,在AutoCAD活动文档中进行切削模拟,得到齿轮齿廓。
AutoCAD ActiveX对象模型是由AutoCAD的对象组成的,这些对象按从属关系有层次地组织在一起,每一对象都有其各自的属性、方法和事件。AutoCAD ActiveX中的每一个对象都位于对象模型的某个指定位置,从外部访问AutoCAD对象时,首先必须由应用程序本身的语名或函数引用对象,然后再按对象模型由上及下逐级访问[6]。
1.3 选择集对象
选择集对象是AutoCAD ActiveX中选定的实体的集合,用户通过Select,SelectOnScreen,SelectBy-Polygon等方法选择实体对象并将对象加入选择集,或用AddItem方法向选择集中添加实体对象。选择集对象除了能够通过循环语句对其中的实体进行集体的操作及简化程序代码外,更为重要的是在由VB驱动AutoCAD参数绘图中,由于VB不能进行指针操作,即VB不能以数组或者是自定义类型的数据作为返回值,因此函数只能有一个返回值。而通过将欲返回的实体集加入到一个选择集中,用选择集作为函数的返回值,则可以实现由一个函数返回多个实体的目的。尤其是在图形的模块化拼装时,常常需要对由不同函数生成的图块进行诸如移动、旋转及缩放等操作。而对总图中各个模块中的实体进行操作时,必须通过由图块函数返回的选择集进行引用。因而,选择集在参数化绘图中有着特殊用途。
2 模拟切削的实现
2.1 图形初始化模块
首先由AutoCAD ActiveX方法启动AutoCAD应用程序,启动前要在Visual Basic中引用AutoCAD的类库,AutoCAD启动主要代码如下:
Sub ActivateACAD()
On Error Resume Next
Set acadApp=GetObject(,"AutoCAD.Application")
If Err Then
Err.Clear
Set acad App=CreateObject("AutoCAD.Application")
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
acadApp.Visible=True
Set acadDoc=acadApp.ActiveDocument
Set moSpace=acad Doc.ModelSpace
Set moSpace=acad Doc.ActiveViewport
End Sub然后用户由程序界面输入所要加工的齿轮参数,定义显示图形的视图,程序根据用户输入数据计算齿轮的结构参数、齿条刀具进给量DisMove和轮坯每次旋转角度Angle,将齿轮毛坯(包括分度圆、基圆、齿根圆、齿顶圆)及齿条刀具绘制在定义的视图中,给出初始化工作就绪的信息。其中要将齿轮毛坯和齿条刀具分别定义为2个选择集(CLselectionset和CTselectionset),以便模拟切削时进行整体的旋转和移动操作。图1为程序运行界面。
2.2 模拟切削模块
该模块在初始化模块的基础上运用AutoCAD中的旋转命令(Rotate)对轮坯选择集中所有实体进行旋转,并用移动命令(Move)对齿条选择集中的所有实体进行移动。刀具每前进一个DisMove,轮坯旋转一个Angle角度。同时,运用AutoCAD中Intersectwith命令计算刀具与轮坯齿顶圆的交点,在该处绘制出齿条刀具的轮廓,并将其加入一个名为CTSimulateSet的选择集中。该选择集中所有实体都将随轮坯一起旋转。每次旋转完之后都应当用AutoCAD中的update命令对图形进行更新,以实现动态的显示效果。此外,还应当记录包络成齿轮一个轮齿的刀具轮廓的顶点坐标,将其加入一个名为CKselectionset的选择集,以用于下一步拟合生成齿轮廓线。图2为正在“切削”中的齿轮和切削完成后得到的齿轮廓线,图3为正在“切削”中齿轮的轮齿局部放大图。
图1 齿轮切削模拟程序界面Fig.1 Interface of software for simulating of gear cutting
实现该模块的主要代码如下:
1)初始化:确定轮坯旋转中心、转动角度及刀具进给量
Rotcenter(0)=CenterP.X
Rotcenter(1)=CenterP.Y
Angle=PI/360
DisMove=Angle*(m*z)/2
FromP(0)=CTiniPoit.X
FromP(1)=CTiniPoit.Y
ToP(1)=CTiniPoit.Y
2)开始模拟切削(每循环一次,刀具向前移动DisMove,轮坯旋转Angle角)
For j=0 To NUmLop
ToP(0)=FromP(0)+DisMove
‘齿轮坯旋转
For Each everyobj In Clselectionset everyobj.Rotate Rotcenter,Angle
Next
‘包络轮齿的刀具随轮坯一起旋转
For Each everyobj In CTSimulateSet
everyobj.Rotate Rotcenter,Angle
Next
‘齿条移动
For Each eachobj In CTselectionset
Call eachobj.Move(FromP,ToP)
intpoints=eachobj.Coordinates
For k=0 To 7
RecordingPoint(k)=intpoints(k)
Next
'计算齿条与齿根圆交点
intpointsss=GearCSet.Item(0).IntersectWith(eachobj,acExtendNone)
On Error Resume Next
‘如果有交点,取得交点坐标
If VarType(intpointsss)<>0 Then
For i=LBound(intpointsss)To UBound(intpointsss)
PointA(i)=intpointsss(i)
Next
'在交点处绘制刀具轮廓并将其加入选择集,以便进行下一次旋转和移动
SetGearOutline(0)=acad Doc.ModelSpace.Add LightWeightPolyline(muPLwline)
End If
CTSimulateSet.AddItems GearOutline
Next
‘刷新图形
acadDoc.Application.Update Next
3 齿廓生成模块
从模拟切削模块函数形成的包含齿条顶点坐标的选择集中,顺序连接各顶点坐标拟合出齿轮廓线。将上述所得实体加入一个选择集中。对以上得到的半个齿廓进行镜像处理后生成一个完整的轮齿齿廓,再应用圆形阵列生成所有的齿形,然后删除掉除齿轮廓线和分度圆之外的其他实体,即得到了最终的齿轮廓线。本模块主要程序代码如下:‘求取模拟过程中得到的交点
intpoints=OutlineCT(0).IntersectWith
(GearCSet.Item(3),acExtend ThisEntity)
upline(UBound(upline)-1)=intpoints(0)
upline(UBound(upline))=intpoints(1)
‘顺序连接各顶点坐标得到齿轮廓线
Set OutlineCT(0)=acad Doc.ModelSpace.
Add LightWeightPolyline(upline)
‘将得到的半齿廓进行镜像
Mir.X=CenP.X+(da/2)*Cos(beid+Fi)
Mir.Y=CenP.Y+da*Sin(beid+Fi)/2
MirP(0)=CenP.X+da*Cos(beid+Fi/2)/2
MirP(1)=CenP.Y+da*Sin(beid+Fi/2)/2
Set OutlineCT(2)=OutlineCT(0).Mirror(MirP,pt1)
‘将得到的一个完整齿廓进行圆阵列
For Each anobject In Camset
Call anobject.ArrayPolar(z+1,PI*2,pt1)
Next
运用本方法生成的轮齿廓线直接进行一定厚度的拉伸,再对齿轮坯的结构进行相应的修改,即可得到齿轮的三维造型。图4为由齿廓线生成三维造型的轮齿局部图。
4 结 语
对于普通常用的渐开线齿轮,渐开线及齿根过渡线(当基圆大于齿根圆时)的绘制很繁琐。因为齿根过渡线的变化很大,一般只能采用近似画法;然而,本文提出的运用模拟齿轮加工过程、运用渐开线方程来绘制齿轮廓线的方法,绕开了齿根过渡线的绘制,因此一定程度上提高了绘图精度。齿轮切削模拟的动态模拟形象说明齿廓的形成过程,可用于机械零件课程的教学演示,而由此生成的齿轮廓线可通过三维软件处理生成三维实体模型。
图4 由齿廓线生成的齿轮三维造型Fig.4 Gear 3D-modeling based on involute profile
[1] 王丽娟,黄清世,白冰.刀具齿廓形状的设计对齿根过渡曲线的影响[J].现代机械,2008(1):60-62.
[2] 王雪.基于三次样条曲线的微型齿轮齿廓设计方法研究[D].南京:南京航空航天大学机电学院,2007.
[3] 李娜.渐开线齿廓曲线花键三维仿真设计方法[J].现代计算机,2008(1):115-117.
[4] 代素梅,李允旺,唐兵.渐开线圆柱齿轮精确廓线绘制方法的研究[J].煤矿机械,2004(12):40-42.
[5] 孙桓.机械原理[M].北京:高等教育出版社.1996.
[6] 张国宝.AutoCAD 2000 VBA开发技术[M].北京:清华大学出版社,2000.