1. 引言
在当今汽车工业中,冲压、焊接、涂装、总装被认为是汽车制造过程中的四大工艺 [1] 。其中焊装是汽车生产中的关键工艺。典型的小型乘用车是由400多个冲压件,50多个分总成,通过70~90套焊接夹具按照特定的组合工序装配而成 [2] 。通过焊接,冲压成型得到钣金件可以形成白车身。如果焊接质量出现问题则会导致钣金变形开裂而产生异响,影响到整个汽车加工质量,严重者可造成安全危害 [3] 。焊接夹具焊接生产线的核心,在实际汽车制造中可以1) 提升装配精度,确保产品质量;2) 提升焊接效率,降低制造成本;3) 焊接产品的模块化显著提升,便于互换;4) 降低制造难度便于工人操作等,对于车身质量具有重要的影响 [4] 。
目前,有关于白车身夹具二次开发的相关研究较多,但基于CATIA的夹具二次开发研究较少。如果通过人工方式在CATIA中进行夹具零件的适配操作以及标准件、企业件、数据库的建立,不仅工作量大、效率低、易出错,而且需要基于不同的客户指定不同的方案。本文通过综合应用C#开发语言,结合CATIA Automation二次开发技术,实现夹具零件的属性赋值、工装信息提取、装配体的参数化设计功能 [5] 。
2. 汽车夹具管理系统的体系结构
依据系统的总体设计,对系统的各个功能模块进行了详细设计,其功能架构如图1所示。
系统具备的内容为:1) 系统管理模块。用于管理夹具管理系统站内用户。管理员可以对用户权限进行添加、删除以及更改操作;2) 夹具元件管理模块。用于管理组合夹具原件,主要包括导入元件入库、元件出入库信息查询、元件信息更新等功能;3) 工装智能辅助设计模块。系统提供了数个辅助工具帮助设计者提高工作效率,如夹具的参数化设计,工装结构信息提取等功能;4) 设计/组装模块。该模块提供零件的三维图生成、导出以及插入装配体等功能。用户通过该模块根据工艺需求设计组合夹具,并进行组合夹具的进一步组装。
Figure 1. System functional architecture
图1. 系统功能架构
2.1. 汽车车身焊装夹具的结构分析
车身夹具单元的种类和类型较为复杂,但是依据总的用途可以进行大致的分类 [6] :支撑单元(Support Unit)作为焊装夹具的基本原件,对工件平面和表面粗糙度要求较高,因为其精度直接决定了定位单元的精确性;定位销单元(RPS_PIN Unit)的主要作用是进行车身件的定位,由运动方式可具体分类为固定RPS销单元,伸缩RPS销单元和翻转RPS销单元,RPS (德语Referenz Punkt Systematik)是应用于单件或总成件在产品设计、制造、检测及批量装车所有阶段中的基准点系统,可使零件设计基准点、工艺定位基准点、测量基准点相统一,实现零件精确定位;压紧单元(Clamp Unit)作用于焊装件的夹紧定位;空压单元(Hollow Clamp Unit)与压紧单元相似,但没有压紧单元的支撑部分。对于以上任意一种结构的单元,可以依据调整的方式更深入地分类,具体可以分为Z、ZX、ZY、ZYX向调整单元。图2展示了汽车夹具的各个单元体及其在开发过程中的尺寸定义。根据规格的不同,主参数为A1,假设变化量为Δ,则与A1具备约束关系的尺寸为A3,则A3的变化量应为Δ。由此可得A1,A3具备正向的尺寸关系,同理,A4、C2和H也具备正向的尺寸关系。
Figure 2. Example diagram of fixture unit
图2. 夹具单元实例图
2.2. CATIA二次开发技术
CATIA是由法国达索公司研发的CAD/CAE/CAM一体化软件,在全球范围内处于领先地位 [7] 。其作为强大的工程软件可以进行丰富功能定制,使其更好为用户所用,从而提高工作质量,其出色的开发性能使其成为整个车身焊接夹具行业中使用最广泛的软件。CATIA为用户提供了两种编程接口,分别为自动化编程(V5 Automation)和开放的基于构件的应用编程接口(CAA) [8] 。CAA稳定性好,功能强大,更适用于专业深层次的二次开发需求。然而,由于CAA需要专业编程软件工具,对开发人员的要求较高。相对应的,基于COM技术的V5 Automation涵盖了CATIA二次开发编程对象架构,其帮助文档描述了各个接口中不同对象的方法属性以及使用案例教程,在汽车夹具管理系统开发中,需求和代码开发功能对应,可借此优化多种工装辅助设计功能,实现系统与CATIA的充分连结。开发周期短且稳定易用,能够满足大多数工程应用开发需求。
本文在V5 Automation建立的开发环境中调试编译,调用其中的相关接口,针对重复劳动效率低的问题,综合运用CATIA多个模块,实现了交互选择、属性赋值、工装结构信息提取、参数化设计等功能。
CATIA API与开发对象
CATIA API (Application Programming Interface)属于接口函数,即面向对象编程语言中特有的,仅指定函数成员而不实现成员的函数。所有的数据通过继承、聚合的方法形成树状结构,并用API封装成对象。通过CATIAAPI的使用,可使开发者通过编写代码的方式,生成可重复利用的代码模块,达到在程序内部调用CATIA内部功能的目的。
Application为整个结构的根对象,系统中CATIA进程内部的所有对象都凭该对象的对应方法返回。以CATIA进程已经启动为前提,使用参数含“CATIA.Application”字符串的函数Get Active Object以获得Application对象的运行实例,将其赋给一个INFITF.Application类型变量CATIA = (INFITF. Application) System. Runtime. InteropServices. Marshal. GetActiveObject (“CATIA.Application”)。若程序运行时CATIA尚未启动,则使用参数含“CATIA. Application”字符串的函数Get Type From Prog ID获取程序标识符后,将获得的程序标识符代入函数Create Instance,并把其赋给变量CATIA = (INFITF. Application) Activator. CreateInstance (oType)。最终,通过属性Visible = true,即可实现CATIA程序的显示 [9] 。
Application派生出Collection (集合)和Object类型。其中Collection含Printers、Documents、Windows,Object含System Service、File System。其中多种对象可能对应着同一种方法或属性,例如控制几何元素的方法Add( )、Item( ),获取Document的路径属性如Path。
3. 汽车夹具管理系统关键技术实现与测试
3.1. 基于交互选择的属性赋值技术
在汽车夹具的设计过程中,装配体和零件内有许多需要人工额外编辑的自定义属性。由于零件类型和数量庞大,人工添加的效率和质量都较低。通过CATIA中宏的录制获取属性赋值的接口和方法,以便后续BOM表的导出。
3.1.1. 人机交互选择夹具部件
CATIA的系统交互功能是二次开发中重要的一环。开发者通过V5 Automation自带的Document Object-Selection对象,完成用户在屏幕上零件或装配体的选择,而不是通过代码选择结构树集合元素,避免用户直接接触代码,提高了选择的效率和安全性。Select Element2或Select Element3函数分别代表选择一个物体或选择一个或多个物体。为了过滤掉不必要的元素,使选择更加便捷,以上的交互选择命令都包含一个过滤器参数CAT Selection Filter,该参数为下限为0的字符串数组,通过添加相应的字符串元素实现功能。例如输入过滤器Input Object Type (0) = “TriDim”,即可完成三维元素的过滤,用户在当前函数运行过程中只能在屏幕内选择三维元素,如凸台(Pad)。
3.1.2. 零件属性赋值功能
该功能主要实现自定义属性参数Parameters获取和赋值功能。上文提到通过Selection对象选择的Product对象,此处可利用其属性User Ref Properties来得到该产品参数的集合,以实现对零件属性的增、删、改、查功能。开发过程中在Form中添加SelectElement2方法,实现在文件中通过人工交互选择零件,再给零件“Type”属性赋予文本控件字符串内容的功能。以夹具支撑单元为例,功能实现流程图如图3所示。
Figure 3. Diagram of property assignment check implementation
图3. 属性赋值检查实现流程图
3.2. 工装结构信息提取技术
工装结构信息是指在机械加工过程中机加设备的类型、名称、以及相互之间的关系。工装信息结构的提取有利于在实际生产中了解并管理整个工装结构,在夹具的智能化设计过程中完成对工装结构的总览和零件继承关系的概括。本功能主要实现的是装配体文件中的结构树遍历。相关的零件文件在建立之初就已经添加了自定义属性,引入到装配体文件中。通常会在根装配体节点下方建立若干子装配体节点,将零件文件通过装配过程分类到各子装配体节点中。更进一步,子装配体节点下方可继续建立子装配体节点,对其中的零件进行装配分类。
3.2.1. 终端节点的判断方法
零件的属性都在终端节点中被定义。终端节点是对零件内部元素的包装,该节点内部不包含子节点。本文中构造了判断装配体集合内部是否具有装配体子节点的IsLeaf函数。通过使用装配体集合Products内部的Count属性,确定交互选择的装配体内装配体集合内部元件的数量。如果元素数量大于0,则该函数返回布尔值true,否则返回false。该函数将在下文中的显示工装信息的方法中发挥作用。
3.2.2. 基于递归访问策略的结构树信息提取技术
该技术构造了一个Show Structure Information函数。当遍历到某一层级的节点时,先用IsLeaf函数判断其是否为终端节点。若是终端节点,则该子节点内为零件,将product. get_PartNumber ( )获取到的零件名称在其父装配体下部显示。若是中间节点,则获取其名称后,利用Show Structure Information方法进行深度递归循环遍历,从而判断整个工装的结构树信息,直到循环至终端节点。
通过递归访问结构树方法,工装信息的提取得以实现,并使用树视图(TreeView)实现信息的展示。树视图是一种可通过节点的折叠和展开以实现层次结构信息展示的窗口控件,它内部的节点集合(Nodes)属性可进行节点(TreeNode)的编辑操作。
以下代码实现了在树视图控件内部添加了一个节点,该节点Text属性为当前遍历元素名称。
Tree Node tmpNd = new TreeNode ();
Tmp Nd.Text = product. get_PartNumber ();
Tree View1. Nodes. Add (tmpNd);
实现流程图如下所示,图4展示了该方法提取工装信息运行结果,图5展示了在实际操作中的效果。
Figure 4. Diagram of the extraction process of the workwear information structure
图4. 工装信息结构提取流程图
Figure 5. Diagram of the extraction of the workwear information structure
图5. 工装信息结构提取效果图
3.3. 汽车夹具的参数化设计
参数化设计是智能化、集成化的CAD系统的核心技术,通过修改参数,以实现模型的修改和联动。可以减少软件模块的重复利用,简化数据库冗余零件。一般作用于形状和结构比较确定的零件,通过一组参数约定尺寸关系,以达到参数与设计元件的控制尺寸相对应 [10] 。在以往的参数化设计中,夹具设计往往采用尺寸驱动法,在CATIA内部人工定义对应的参数,操作效率低,重复率高。本文中使用程序驱动法的参数设计,通过代码选择结构树中的约束及其对应参数,达到同一模板批量生成不同尺寸夹具单元的目的。
3.3.1. 参数化设计的方法
在CATIA内部进行参数化设计有两种方法:尺寸驱动法和程序驱动法。在实际使用过程中可以根据两者利弊进行取舍或混合使用。
尺寸驱动法是指,通过创建Parameters (参数集)内部的单个Parameter (参数),并与零件结构树的特定尺寸或约束进行绑定的方法。当需要不同尺寸的同类型零件时,设计人员可根据给定的约束修改相应参数值,使其几何元素或特征的几何拓扑信息发生变化,就能实现在模板零件基本结构不变的前提下,生成一组结构相同但尺寸不同的零件系列。该方法主要通过用户在屏幕内进行点击操作,适用于个别产品的修改和调用。当需求零件数量过大时,就会暴露出操作繁琐、易出错等问题。
程序驱动法利用CATIA API接口函数,在代码编写阶段控制参数和几何表达式的生成,完成相应的建模设计。通过Winform中的控件,设计者仅需要在窗口输入所需的参数名和参数值即可直接修改原模板零件。程序驱动法运行高效、快速,适用于大批量生成零件文档。但由于代码量较多,前期编写的难度较大,时间较长。
3.3.2. 参数化建模流程和界面设计
Figure 6. Parameter value modification process
图6. 参数值修改流程图
在以往的夹具数据库管理系统中,夹具单元作为其中的重要一部分,不需要针对单个零件进行参数化设计,而是在完整的单元装配体模式下进行参数定义。在开发生产的设计、工艺、生产、制造、财务、采购等各个业务系统中,基础数据比较薄弱,存在着元件数据协同不一致,数据利用率低等问题 [11] 。为了解决数据冗余、减少夹具数据库的占用空间,在此处以夹具单元为例。在开发过程中需要找出各个关联尺寸,建立尺寸链管理,形成基于尺寸的约束模型 [12] 。
调用API函数修改结构树中Parameters项中的变量值,将源文件的参数通过公式赋予自定义参数,即可实现通过控制自定义参数修改模板零件约束的效果。图6展示了汽车夹具系统中支撑件参数集内的参数值各个修改过程,以此创建的三维模型的参数变量在结构树中的结果如图7所示。
Figure 7. Parametric design results for automotive fixture supports
图7. 汽车夹具支撑件参数化设计结果
4. 结束语
本文介绍了在C#环境下基于CATIA二次开发进行汽车夹具管理系统的研究。针对设计过程中建模复杂、耗时长、设计效率低的问题,综合开发了系统管理模块、夹具元件管理模块、工装智能辅助设计模块、设计/组装成模块,针对属性赋值,工装结构信息提取以及参数化设计的功能进行关键技术研究,缩短了夹具设计周期。这样设计者可以在结构设计方面投放更多精力,以提高产品质量,同时为汽车夹具管理系统优化提供了一种思路。