APP下载

基于Pro/E二次开发的自动装配技术及应用研究

2016-11-23朱晓慧夏公川

关键词:二次开发模块化元件

黄 康, 陈 祥, 朱晓慧, 夏公川

(合肥工业大学 机械与汽车工程学院,安徽 合肥 230009)



基于Pro/E二次开发的自动装配技术及应用研究

黄 康, 陈 祥, 朱晓慧, 夏公川

(合肥工业大学 机械与汽车工程学院,安徽 合肥 230009)

为了提高在Pro/E中装配建模的效率,文章对其自动装配技术进行研究。从手工装配与自动装配对比的角度,研究自动装配的整体技术框架;在获取装配路径的基础上,用Pro/Toolkit函数描述基于Pro/E二次开发进行自动装配的基本步骤;融合模块化产品特点到自动装配技术中,形成模块化产品自动装配系统的框架;并以某雷达模块化结构为例,开发了其模块化自动装配系统,验证了该方法的有效性与实用性。

Pro/E软件;自动装配;二次开发;Pro/Toolkit函数;模块化

随着定制产品的不断发展,客户个性化定制需求对企业响应速度的要求越来越高[1],因此系列化、模块化的产品设计方法正逐步得到推广和应用[2-4]。模块组合的装配设计效率难以满足客户定制需求的速度等问题也随之产生,提高装配设计效率显得十分迫切,很多学者针对在三维软件中实现自动装配并应用到某些特定产品的装配上进行了研究。文献[5]通过2个零件全约束的方式研究了在Pro/E中进行自动装配的方法;文献[6]基于参数化的思想在UG软件中开发了参数化零件族系统;文献[7]研究了基于CATIA V5软件二次开发的自动装配,提出了采用坐标轴系统重合的约束方法;文献[8]在Solidworks中通过采用模型空间位置变换与特征装配相结合的方法实现装配体各组成模块之间的自动装配;文献[9]在CAXA软件中通过研究智能定位和智能尺寸驱动技术,描述了基于模块化产品族的智能装配设计。

上述研究描述了在三维软件中进行自动装配的一般方法,但仍存在以下问题:① 仅从软件的角度来描述自动装配技术具有局限性,各种建模软件由于架构原理的不同,在技术移植上一般不具有通用性;② 对形成一对装配组件的原理研究形式过于单一,缺少整体性描述;③ 缺少对特定产品(如模块化、系列化产品)特点的融合。

针对上述问题,本文分析了在一般建模软件中进行手工装配与自动装配的关系,构建不依赖于具体软件的自动装配技术框架;在技术框架的支持下,采用Pro/E二次开发的方式研究具体实现的方法;以某雷达模块化结构为例,通过开发其自动装配系统进行实例验证。

1 自动装配整体技术框架

自动装配是将设计者进行手工装配时的一系列活动用逻辑程序来表达。这种活动既包括设计者在各种建模软件中的操作,也包括要产生操作的思考过程。设计者进行手工装配时(假设初始装配环境为空,调入匹配组件之前的装配环境称为已存在组件)一般步骤如下:

(1) 将第1组件调入空装配环境。

(2) 判断已存在组件是否存在能够与之匹配的匹配组件,若存在,则执行步骤(3),否则执行步骤(9)。

(3) 调入与已存在组件匹配的匹配组件。

(4) 选取已存在组件中的某个基准和匹配组件中的某个基准,形成基准对。

(5) 对形成的基准对选取一定的约束类型,对匹配组件施加约束。

(6) 判断匹配组件的约束状态,若为全约束则执行步骤(7),否则执行步骤(4)。

(7) 匹配组件融入当前装配环境,已存在组件更新。

(8) 继续执行步骤(2)。

(9) 结束。

2 基于Pro/E的自动装配技术实现

2.1 Pro/E二次开发技术简介

Pro/Toolkit是PTC提供的专门用于对Pro/E进行二次开发的函数库,基于其可实现对Pro/E的同步或者异步模式的开发。Pro/Toolkit采用面向对象的设计风格,其中最重要的概念是对象和动作。Pro/Toolkit应用程序一般包含头文件、主程序和自定义函数3个部分。每个Pro/Toolkit应用程序都必须包含Pro/Toolkit.h头文件。主程序不同于一般的C程序,无需包含main函数,但必须包含User-initialize和User-terminate函数。User-initialize函数是程序的入口,完成加载自定义菜单、创建图形窗口等所有的初始化工作;User-terminate是终止函数,在应用程序与Pro/E会话结束时被调用。自定义函数是与特定功能对应的函数段,本文中主要指装配函数,一般通过VC++软件开发平台(或者与Pro/E软件版本对应的升级版)开发exe文件形式的可执行程序,或者dll文件形式的动态链接库作为最终的应用程序。

2.2 模型树的装配路径图解析

自动装配的结果在Pro/E中的表现形式是模型树,其形成原理用装配路径图表示,已存在组件与匹配组件的装配过程如图1所示。

图1 已存在组件与匹配组件的装配过程

由图1可知,已存在组件与匹配组件之间的装配形式有2种,统一用(1)式表示,即

已存在组件(目标元件):匹配组件(匹配元件)

(1)

当匹配组件的形式为零件时(形式1),匹配组件即为匹配元件,而为部件时(形式2),匹配元件是构成匹配组件的1个零件。目标元件是已存在组件中的某一个零件。装配路径Path用来表达构成匹配组件的匹配元件或者已存在组件中的目标元件在各自部件环境中的位置信息,用结构体表示如下。

Struct Path

{ProAssembly owner;

int tab-num;

ProIdTable comp-id-tab;

}。

其中,owner为节点所属组件;tab-num为某节点所在的层级;comp-id-tab为组件中某层级上某节点的id,它与tab-num有直接关系。上述3个参数构成了组件中某节点的唯一装配路径。图1已存在组件中目标元件B的装配路径表示为:

Path(B)={owner,tab-num,comp-id-tab[tab-num]}。

其中,owner为已存在组件;tab-num=3;comp-id-tab[0]=7,comp-id-tab[1]=6,comp-id-tab[2]=5,数组comp-id-tab可以描述在任意层级任意节点的id值,从而确定完整的装配路径信息。匹配组件中Path(C)=-1,表示匹配组件仅为1个零件,装配路径对匹配组件不适用,匹配元件即为匹配组件本身;Path(D)的表达方式同Path(B)。

2.3 装配路径获取

已存在组件中目标元件装配路径的获取和匹配组件中匹配元件装配路径的获取,可以通过Pro/Toolkit函数库中的ProSolidFeatVisit()函数来实现,该函数称为遍历函数。其函数原型如下:ProSolidFeatVisit(遍历对象,动作函数,过滤函数,节点路径)。其中,遍历对象为要遍历的组件,如已存在组件或者匹配组件;动作函数为要执行的遍历动作,一般将获得的节点所对应模型的名称和类型与特定值相比较作为遍历动作,如果两者相匹配,则返回获得的节点路径信息Path;过滤函数为遍历函数继续执行的条件,满足一定条件则依次获得模型树的各个节点,否则退出遍历函数;节点路径为每遍历到一个节点所获得的节点路径信息。从参数的解释来看,遍历函数是一个回调函数,通过它能够获得模型树中某一特定节点的装配路径。获得节点装配路径的流程如图2所示,其中节点、父节点、子节点的描述表示节点之间的父子关系。

遍历函数的动作函数参数中关键函数段如下。

ProMdlCurrentGet(当前节点)

if (当前节点类型==零件) {ProMdlNameGet(当前节点名称)

if (当前节点名称==特定值)

{for(inti=0;itable-num;i++)

{c-id-table[i]=data->comp-id-table[i];

c-id-table[data->table-num]=p-feat->id;

ProAsmcomppathInit(当前节点的路径信息)}

}else

{ProMdlCurrentGet(下一节点)}

}else

{data->comp-id-table[data->table-num]=p-feat->id

data->comp-id-table[data->table-num+1]=-1;

data->table-num++;

ProSolidFeatVisit();

data->table-num--;

data->comp-id-table[data->table-num]=-1;

}

图2 装配路径获取流程

2.4 Pro/E二次开发进行自动装配的基本步骤

用程序实现自动装配的步骤如下。

(1) 获取已存在组件的句柄CurrentMdl,通过函数ProMdlCurrentGet()实现。

(2) 获取已存在组件中目标元件的装配路径Path(Target),通过函数ProSolidFeatVisit()按照图2所示流程实现。

(3) 获取已存在组件中目标元件的句柄Targetmdl,通过函数ProAsmcomppathMdlGet(Path(Target)),Targetmdl)实现。

(4) 获取目标元件中某一个目标基准项TargetItem,通过函数ProModelitemByNameInit(Targetmdl,基准类型,基准名称,TargetItem)实现。

(5) 获取匹配组件的句柄Matchmdls,判断匹配组件的类型,若为部件,则执行步骤(6),否则执行步骤(7)。

(6) 获取匹配组件中匹配元件的装配路径Path(Match),通过函数ProSolidFeatVisit()按照图2所示流程实现;获取匹配组件中匹配元件的句柄Matchmdl,通过ProAsmcomppathMdlGet(Path(Match,Matchmdl)实现。

(7) 直接获取匹配组件(即匹配元件)的句柄Matchmdl(此时Matchmdls=Matchmdl),通过函数ProMdlRetrieve()实现。

(8) 获取匹配元件中某一个匹配基准项MatchItem,通过函数ProModelitemByNameInit(Matchmdl,基准类型,基准名称,MatchItem)实现。

(9) 设置约束函数,施加约束,约束函数的引用如下:ConstraintFunction(CurrentMdl,Matchmdls,Target Item,MatchItem)。

(10) 判断匹配组件的约束状态,若为全约束,则装配完成;否则,重复执行步骤(4)、步骤(8)、步骤(9)。

其中步骤(9)中约束函数ConstraintFunction的定义如下:

ConstraintFunction(CurrentMdl,Matchmdls,TargetItem,MatchItem)

{

ProAsmcompAssemble(CurrentMdl,Matchmdls,identit y-matrix,asmcomp);

ProSelectionAlloc(Path(Target),TargetItem,TargetItem Sel);

If(匹配组件类型==部件)

{ProSelectionAlloc(Path(Match),MatchItem,Matc hItemSel)}else

{ProSelectionAlloc(NULL,MatchItem,MatchItem Sel)}

ProAsmcompconstraintAlloc(p_constraint);

ProAsmcompconstraintTypeSet(p_constraint,Type);

ProAsmcompconstraintCompreferenceSet(p_constraint,MatchItemSel,ReferenceOrient);

ProAsmcompConstraintsSet(NULL,asmcomp,p_constraint);

}

当初始装配环境为空时,第1个调入装配环境的组件不采用上述流程,而是直接对其施加默认约束;步骤(9)中施加的约束函数根据实际约束类型的不同需要进行分类设置;步骤(4)、步骤(8)中基准项需要根据基准类型和基准名称来获取,因此,需要在程序运行之前对相应零件的基准项进行人工标记,使程序能够搜索到基准项。从上述步骤可以看出,已存在组件中的节点装配路径是必须要获取的,而匹配组件则要根据其类型判断是否需要获取节点装配路径。

3 与模块化产品的融合应用

3.1 模块化装配与自动装配过程的对应关系

模块化产品的装配是一种重复性较强的模块组合过程,它与自动装配过程的对应关系见表1所列。

表1 模块化装配与自动装配过程的对应关系

表1中已存在模块、匹配模块不能人为设定,需要根据模块化产品的特点由各种设计规则驱动,形成规则库;接口与基准项对应,体现的是模块之间的连接关系,直接依附于目标主零件和匹配主零件,形成接口库。

3.2 模块化产品自动装配的系统框架

根据表1所形成的模块化产品自动装配系统的框架如图3所示。

图3 模块化产品自动装配系统框架

图3中的任务库存放不同设计者的设计任务,实现模块化产品设计小组中不同设计者之间的协同设计;接口检测的目的是判断装配之前各模块是否已完整定义了基准项,避免前处理不当导致装配设计任务无法执行。

4 应用实例

以某雷达模块化结构为例,主要包含汇流盘、隔离环、绝缘环3个模块,每种模块有若干种不同的结构形式,汇流盘A种、隔离环B种、绝缘环C种,最多的组合形式有A×B×C种。模块组合的特点为:每种汇流盘对应特定的通道数,总体结构为汇流盘-隔离环-绝缘环的多层组合(组合顺序可变),层数由设计者提出的总通道数决定,总体是输入、输出对称结构。假设设计者提出总通道数要求为50,从A种汇流盘中选定其中一种的通道数为46,则总层数为(50/46+1)×2=4层。其总体结构为一种轴向线性结构,各模块按照一定顺序依次累加。采用Pro/E的Pro/Toolkit二次开发方法开发的雷达模块化自动装配系统(radar modular automatic assembly system,RMAAS)如图4所示。

图4a为数据库连接界面,各设计人员连接到共享数据库中共享数据;图4b为接口定义界面,通过显示区来显示自定义的接口名称及所属零件信息;图4c为任务管理界面,设计者在右侧的功能区中定义新型模块入库,在左侧的功能区中选择库中的模块;图4d为装配处理界面,设计者首先在顶部选取一个设计任务,在左下角功能区中进行辅助排序,然后进行右侧功能区的接口检测,检测无误即可进行自动装配。

装配完成后的若干种模块化结构形式如图5所示。与手工装配对比,该系统可将一个定制的模块组合任务的装配设计时间缩短60%以上,设计者的工作重心已从繁琐的重复性装配活动转移到装配前期的规则接口的定义以及相应零部件库的管理方面,有效地提高了个性化定制任务模块组合的装配设计效率,开发的RMAAS系统也已投入某雷达企业中使用。

图4 雷达模块化自动装配系统(RMAAS)

图5 装配完成的若干种模块化结构形式

5 结 论

本文从手工装配与自动装配对比的角度分析了进行自动装配的技术框架,详细描述了装配路径获取的关键技术,在获取装配路径的基础上用Pro/Toolkit函数描述了实现自动装配的基本步骤,通过模块化产品特点与自动装配技术的融合,形成了模块化产品自动装配系统的框架,并基于该框架采用Pro/E二次开发的方式开发了某雷达模块化结构的自动装配系统。结果表明,基于该系统能够提高模块化产品装配设计的效率,验证了本文方法的有效性与实用性。

[1] 祁国宁,杨青海.大批量定制生产模式综述[J].中国机械工程,2004,15(14):1240-1245.

[2] PARALIKAS J,FYSIKOPOULOS A,PANDREMENOS J,et al.Product modularity and assembly systems: an automotive use case[J].CIRP Annals-Manufacturing Technology,2011,60(1):165-168.

[3] SALONITIS K.Modular design for increasing assembly automation[J].CIRP Annals-Manufacturing Technology,2014,63(1):189-192.

[4] LAI X,GERSHENSON J K.Representation of similarity and dependency for assembly modularity[J].International Journal of Advanced Manufacturing Technology,2008,37(7):803-827.

[5] 谢敏理,和丽,许纪倩.Pro/E二次开发实现自动装配的一种方法[J].现代机械,2006(1):46-48.

[6] 赵韩,朱可,张炳力,等.基于UG二次开发的参数化零件族系统[J].合肥工业大学学报(自然科学版),2006,29(8):929-932.

[7] 李维学,王仲奇,康永刚,等.基于CATIA V5 二次开发的产品自动装配[J].机械制造,2010,48(1):40-43.

[8] 田源,王欣,许滨,等.基于SolidWorks二次开发的自动装配技术研究与应用[J].机械科学与技术,2012,31(5):703-707.

[9] 单泉,雷毅,闫光荣.基于模块化产品族的智能装配设计[J].工程图学学报,2009(1):1-5.

(责任编辑 胡亚敏)

Research on automatic assembly technology and application based on Pro/E secondary development

HUANG Kang, CHEN Xiang, ZHU Xiaohui, XIA Gongchuan

(School of Machinery and Automobile Engineering, Hefei University of Technology, Hefei 230009, China)

In order to improve the efficiency of assembly modeling in Pro/E, the research on the automatic assembly technology is carried out. Firstly, the automatic assembly overall technology framework is studied from the perspective of the comparison between manual assembly and automatic assembly. Then, on the basis of assembly path, the basic steps of automatic assembly based on Pro/E secondary development are described by using the Pro/Toolkit functions. Finally, the modular product features are fused into the automatic assembly technology, and the modular product automatic assembly system framework is formed. The modular automatic assembly system of a radar modular structure is developed in order to verify the validity and practicality of the method.

Pro/E software; automatic assembly; secondary development; Pro/Toolkit function; modularization

constraintAsm

et(p_constraint,TargetItemSel,ReferenceOrient);

2015-03-28;

2015-04-29

国家科技支撑计划资助项目(2012KJZC0789)

黄 康(1968-),男,安徽合肥人,博士,合肥工业大学教授,博士生导师.

10.3969/j.issn.1003-5060.2016.09.001

TP391.7

A

1003-5060(2016)09-1153-06

猜你喜欢

二次开发模块化元件
模块化自主水下机器人开发与应用
承压类特种设备受压元件壁厚测定问题的探讨
模块化住宅
马勒推出新型模块化混动系统
西门子Operate高级编程的旋转坐标系二次开发
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
中核北方核燃料元件有限公司
ACP100模块化小型堆研发进展
QFN元件的返工指南