谢佳志 ,郑泉 ,黄民峰 ,刘恒
(1.安徽农业大学 工学院,安徽 合肥230036;2.合肥美桥传动系统及底盘有限责任公司,安徽 合肥230000)
机械产品的开发不可避免的会遇到同系列的产品或者其改进型,如果按照常规的研发步骤则需要耗费成倍的人力、物力。近年来,出现了对主流三维CAD软件的二次开发技术,结合VC++和CAD软件的自带二次开发功能可以根据需求设计出一套完整的集参数化设计、自动虚拟装配等的设计系统。在自动装配领域的研究主要集中在如何利用实现自动装配的过程,如参考文献[1-2];其中文献[3]提出了基于零件特征的装配方法;文献[7]则给出了一整套的集参数化设计和自动装配的实现过程。本文以分动器(Power Transfer Unit,以下简称PTU)为设计实例,提出以XML为技术支撑来实现装配约束的信息存储,最终完成PTU的自动装配。
UG是当今主流的CAD软件。UG提供了UG/OPEN API二次开发模块,该模块主要是对模型进行参数化为主,即通过修改模板文件的参数即可得到更新的模型文件[4]。通过VC++创建必须的接口文件与UG/OPEN API对接,就能实现对自动装配过程所需的信息的引用。
XML是一种文档形式的文件格式,正因为如此,XML适合在各种平台环境进行数据的交换[5]。在本文中,XML为数据存储的载体,将自动装配所需的约束信息全部集成在XML文件中,利用VC++创建接口函数对该约束文件进行调用。
自动装配是一种虚拟的装配技术。所谓的虚拟装配指的是在装配过程中它并不是将该模型的所有数据完整地复制过来,而只是建立主动装配部件与被引用的从动部件之间的引用关系[6]。本文实现装配的自动化依靠的是用 VC++、XML和UG/OPEN API等开发出能够自动建立装配部件间的引用关系、约束关系的功能模块。
具体模块开发过程的实现框架原理如图1所示。用UG建立三维模型,规划装配工艺以及手动装配之后修改零件约束面的属性是基础;利用UG/OPEN API和VC++建立接口和调用函数实现对集成装配约束信息的XML文件以及UG三维模型的调用是关键;装配树形结构的排列成型、遍历以及矩阵位置的转换是调用过程中的重点。
在装配的过程中会在实例、事例和原型三者之间建立关系实现引用。实例(Instance)用于指定一个组件在装配体中的放置,对于每个实例,在装配体中都会显示一个对应的事例(Occurrence)。事例是对实际存在的部件原型的一种引用,在PTU装配过程中,对主动齿轮三维模型的引用就是一个事例。对于一个部件事例,原型(Prototype)是一个包含主几何体的零件,组成PTU的任何一个零件的三维实体模型,在本质上就是一个部件原型[6]。PTU主要的零部件原型如表1所示。
图2所示的简要的PTU装配树可以反映其中各个元素之间的关系。其中,图中的每个箭头表示一个实例。
表1 TU的主要零部件
某装配元件Driving_gear从爆炸视图位姿关键点P运动到完成装配的另一个关键点P′,实质上等价于原来的空间位置发生了一个矩阵变换Tmove,到达了新的空间位置[P]′(图 3),即
式中,[T]move是一个 4×4 矩阵。
除此之外,(Mvx,Mvy,Mvz)分别为装配元件沿 3 个坐标轴方向的平移分量,矢量X、Y、Z反映转动因素。实现装配元件从一种位姿到另一种位姿的转变,矩阵[T]move的计算是关键。为此定义了一个11元组定义元件的装配和拆卸运动:
式中:(Xdt,Ydt,Zdt) 为平移方向矢量;Mt为平移位移量;(Xpt,Ypt,Zpt)为转轴上的一点;(Xdr,Ydr,Zdr)为转轴方向矢量(按右手定则);Mr为转动位移量。
以上矩阵与UG组件的转换矩阵存在一个转置关系。所以在得到UG组件的转换矩阵之后需要对其进行转置,才可以代入以上公式进行运算。
2.3.1 XML应用原理
使用XML来编写装配树的约束信息,然后通过UG/OPEN API在VC++里添加代码建立函数调用XML文档信息。在装配过程中调用XML的主要函数有:
1) bool CAsmXMLCtrl:load(constchar*filename,constchar*tree_name,bool bImage)
该语句是XML的入口函数,用于打开XML文件,新建一个装配文件,做一些初始化工作。
2) void CAsmXMLCtrl::MakeAssembly (MSXM L2::IXMLDOMNodePtr&pNode)
语句用于解析XML文件,用递归的方法遍历所有零件节点,读取装配约束后求解、施加约束。
2.3.2 装配约束信息
封装在XML文件里的装配约束信息是通过严格规划手动预装配得来的,该信息是完成整个装配的约束的来源,是最重要的信息。
部分输入轴(Input_axis)的装配的约束信息代码解析如下:
以上只是整个PTU装配约束信息的一部分,其他的约束信息的编写与此类似,但值得注意的是必须规划好各个配合部件之间的主动和被动关系。
图4展示了基于XML和VC++的UG自动装配模块的开发流程。其中手动装配过程是必须的,原因是有了手动装配过程就可以根据这个过程来编写装配约束信息,也就是说XML文件中的自动装配约束信息必须跟手动装配的约束完全一致,这个步骤是实现装配自动化的关键;从手动装配的爆炸图把各个零件逐个导出为parasolid文件,然后将该文件导入为对应的新的零件三维实体模型,这是实现自动装配可视化的一个重要步骤。
新建电脑的环境变量UGII_USER_DIR并将变量值指向含有可动态调用的DLL库文件的文件夹,如:E:UG1application。执行后出现如图5a所示对应零件的厂家编号,加载零件同时弹出如图5b所示的信息对话框;加载零件完毕后是一个完整的爆炸图,见图5c;装配后,所有的有规则排列的爆炸零件就会按照XML约束信息装配得到完整的PTU总成,见图5d。
文献[1]是对装配顺序和装配过程实现自动的初步尝试,文献[3]则侧重与实现基于参数表达式链的装配。基于XML的自动装配系统在小批量的总成装配方面或许体现不出其优势,但是如果放在某些同类型不同型号的特定系列的产品研发过程中可明显提高研发速度和精度。目前,该系统已经开始在安徽某汽车制造企业得到应用。
[1]赵岩,成刚虎,张景霞.基于UG的自动装配模块开发[J].机械研究与应用,2003(4):65-66.
[2]张祥林,徐雁冰.基于自动装配的自行车CAD系统研究[J].现代制造工程,2007(2):48-51.
[3]邵晓东,殷磊,陆源,等.一种基于特征的快速装配方法[J].计算机集成制造系统,2007(11):2217-2223.
[4]郑泉,陈黎卿,何钦章.面向UG的差速器CAD系统开发[J].机械传动,2009(1):38-40.
[5]陈黎卿,郑泉,宋宇.XML在前桥设计分析系统中的应用[J].组合机床与自动化加工技术,2008.
[6] 侯永涛,丁向阳.UG/Open二次开发与实例精解[M].北京:化学工业出版社,2007.
[7]张家启,郑泉,陶奕骁,王社会.面向大规模定制的汽车车桥变型设计方法研究 [J].机械科学与技术,2010(9):1504-1507.