刘红军,李 帅,周 鸣
(沈阳理工大学 机械工程学院,沈阳 110168)
UG(Unigraphics)是美国EDS公司推出的当今世界上最先进的CAD/CAM/CAE高端软件平台之一,广泛应用于航空、航天、机械、汽车、船舶、模具和家用电器领域,不仅具有强大的实体造型、曲面造型、参数化造型、装配和工程图创建等功能,还提供了功能强大的二次开发工具UG/OPEN。用户或第三方可以使用该开发工具,开发出基于UG系统的应用程序,实现与UG系统与人无缝集成,从而满足用户的特殊需求。
当今,不同型号和不同规格的电器元件手工装配是非常繁杂的过程,工作量巨大,电器元件的型号种类繁多,而一个完整的PCB电路板需要电器元件相互作用和连接才能启到预期的作用,细微的疏忽可能导致电路系统的失效。本实例利用UG的二次开发工具UG/OPEN API对PCB电路板实现自动装配,装配后可通过相关软件对其进行仿真和分析,能有效及时的发现错误,修改相关方案,达到预期效果为止,避免可能出现的错误,从而大大减少工作时间,提高了工作的效率。
UG装配是以树形的结构组织相关部件的,一个装配体仅有一棵装配树,一个根节点。图1为PCB电路板的装配树。
图1 PCB板装配树
图中5是总装配体即一个完整的PCB板,1是电路板(没有安装电器元件) 2、3、4分别代表了集成芯片、电阻和三极管等电器元件。
1)OCC为部件事件:是在装配环境下对实际存在的部件模型的一种引用,部件事件也可以理解为指向部件原型的指针。
2)PRO为部件原型:是真实存在的部件模型,它记录了模型所需的所有数据。
3)Ins为部件实例:是装配节点的每个事件的标识,且是唯一的,用来记录子节点和父节点之间的装配关系的,能清晰的划分出实例之间的层次关系,部件实例也可以理解为一种指针,有下级部件事件指向上级部件事件,不同的装配节点可能具有相同的装配关系。
本实例采用的是UG/OPEN API作为开发工具的,UG/OPEN API是UG最常用的开发工具,几乎能实现UG系统的所有功能。它是UG与外部应用程序之间的接口,是UG/OPEN提供一系列函数的过程的集合。
根据程序的运行环境的不同,UG/OPEN API程序可分为两种模式。
2.1.1 外部程序模式
UG/OPEN API程序的运行于UG环境无关,只能在UG坏境外运行程序,在操作系统下单独运行,它是一个独立的执行程序,即:一个“exe”文件,不能与UG图形界面进行交互。在调用它的函数前要先打开prt文件(UG部件后缀)。
2.1.2 内部程序模式
UG/OPEN API程序的运行于UG环境有关,只能在UG中运行程序,可以通过编程软件如VC++等对其进行编译、连接后形成“dll”文件,可以在UG菜单中显示,可以与用户进行相互交互,方便快捷。
本实例所采用的模式为内部模式,需要配合UG自定义菜单和程序配套进行使用。
2.2.1 装配信息的提取
这是进行自动装配的第一步,目的是读取PCB板上所有电器元件的相关数据和坐标位置。步骤如下:
1)用UG/OPEN API实现电路板的自动生成,得到一个有关PCB板的brd文件。
2)用VC++ 6.0对参数文件进行数据分析处理和提取,形成一个“dll”文件,要有标准元器件库,里面包含装配所需所有电器元件,便于装配过程中对元器件的调用。
3)编写UG自定义菜单文件,用于调用VC++6.0对于PCB板所解析的数据,即调出“dll”文件。
2.2.2 坐标系
在UG/OPEN API 中,坐标系矩阵和变换矩阵决定了装配件之间的位置。函数UF_ASSEM_ask_transform_of_occ( )和UF_ASSEM_ask_component_data( )用于获取组件的装配空间。本实例中,每一个电器元件在PCB板上的位置对应一个坐标矩阵,通过坐标系矩阵的变换可以用来改变电器元件相对于电路板的坐标位置。
坐标系矩阵包括6个实数,组件的坐标原点包括3个实数。在向PCB板上增加电器元件的时候需要使用坐标系矩阵,以指定组件的X轴和Y轴向量。Z轴向量可以利用X轴和Y轴向量叉乘得到。
2.2.3 部件的载入
一个完整的装配体是由若干部件装配在一起形成的。
部件的载入主要由函数UF_ASSEM_add_part_to_assembly( )来实现。本实例主要应用是在PCB板中加入电子元器件。
语法如下:
载入的效果可以参考图2。
2.2.4 装配配合的创建和编辑
装配中各部件的配合是由部件之间的约束决定的,不同的约束条件决定不同的配合关系。UG提供的装配约束关系包括Mate(配对)、Align(对齐)、Angle(角度)、Center(中心)、Distance(距离)、Parallel(平行)和Tangent(相切)等。本实例主要运用的是贴合约束。
装配配合创建的一般步骤为:
1)定义约束关系:利用函数UF_ASSEM_constraint_s填充配合条件。
这里主要填充是结构体UF_ASSEM_constraint_t中的成员变量。
本实例中要把电器元件装到PCB板上,所以板为主动件,电器元件为被动件。
2)求解约束:利用函数UF_ASSEM_solve_mc( )求解。
在结构体UF_ASSEM_ constraint_t填充完所需要的数据后利用该函数对配合条件进行求解。
求解的结果可能是:
(1)有解(UF_ASSEM_mc_solved);
(2)无解(UF_ASSEM_mc_not_solved);
(3)输入约束错误(UF_ASSEM_mc_no_mating_specifi ed);
(4)参考的部件未被加载(UF_ASSEM_mc_data_unloaded)。
3)应用约束:利用函数UF_ASSEM_apply_mc_data( )。
把创建好的配合约束应用到所需模型中去,从而实现模型的重新定位。
4)更新模型:利用函数UF_MODL_update( )。
把约束装在到部件中,使模型产生相应的变化,从而达到用户的要求。加载后的元器件的位置可能与理想的位置有差距,通过应用约束能改变主动件与被动件的位置关系。
本例中我们以电子元器件的装配来演示,所用软件为UG NX6.0。
图2 未加入约束装配
如图2所示,自动加载后的装配体由于未加入约束条件位置位于PCB板外侧。主要应用函数UF_ASSEM_add_part_to_assembly( )把集成芯片和PCB板分别载入到UG界面中。
图3为使用自动装配后元器件的位置产生变化达到预期的效果。其主要是通过函数UF_ASSEM_solve_mc( )对其求解,找到解,返回将主动件变换到满足配合条件的空间位置所需要的变换矩阵,使集成芯片的位置发生改变。
图3 加入约束装配
图4 总装配封装图
图4为总的PCB电路板装配的封装图,其中部件的全部加载和装配就是复制图2和图3的过程。
本文利用UG NX6.0的二次开发引入了UG/OPEN API函数的使用,实现了电子元器件的自动装配,电器元件还可以通过参数化的方法改变产品尺寸的大小,有利于产品的系列化。该技术直观、方便、操作简单。在现实中可以大大提高工作效率,减少工作时间并且降低了错误率。
[1] 黄翔,李迎光.UG应用开发教程与实例精解[M].清华大学出版社,2005.
[2] 侯永涛,丁向阳.UG/OPEN二次开发与实例精解[M].化学工业出版社,2007.
[3] 芮岳峰,井维峰.基于UG自动化虚拟装配系统的研究与开发[J].机械制造与自动化,2007,36(5):18-20.
[4] 李福海,刘毅.二次开发UG实现飞机操纵系统零件参数化设计与虚拟装配自动化[J].机械科学与技术,2003,22增刊:242-244.
[5] Zou X J,Gu B J,Sun J,et al.Web2based product development and simulation with virtual reality [J].J Comput Inf Sys,2006,2(1):161-166.