基于CATIA的五轴自动钻铆定位方法研究
2014-09-12马伟徐岩皱宜勇徐少林
马伟,徐岩,皱宜勇,徐少林
(1.南京航空航天大学 机电学院,江苏南京210016;2.中航工业昌河飞机工业(集团)有限责任公司,江西景德镇333002)
0 引言
加工仿真是虚拟制造的重要组成部分,其方法是通过建模软件建立机床模型,并模拟机床的实际运动,以便事先发现生产过程中出现的错误、干涉等情况,进而提高实际加工过程的安全性和可靠性[1]。随着自动钻铆设备的广泛普及,及加工仿真在自动钻铆技术上的应用,极大的提高了生产效率和产品品质,缩短了产品的生产周期。而加工仿真的实现要靠运动仿真支撑,反映到自动钻铆技术上即如何实现产品的自动定位。对于平板件蒙皮的定位相对简单,只需进行x,y和z向的移动即可完成产品的定位,而对于非平板件,如单曲度和双曲度蒙皮,就无法通过单纯的移动来实现其精确定位了。另外,自动钻铆设备运动机构复杂,加工过程中各运动组件易发生碰撞和干涉;大部分铆接件上有众多铆接点,需要合理规范铆接路径,以减少无效的机构运动和姿态调整[2]。
1 CATIA的二次开发方式概述
CATIA是法国达索(DASSAULT)公司的CAD/CAE/CAM一体化软件,它为用户开放了一定的接口,并提供了完整的一套工具,用来定制用户所需的界面和对数模进行操作等[3]。CATIA二次接口与外部程序通信的方式有两种:进程内应用程序方式和进程外应用程序方式[4-5]。
进程内应用程序方式也称为内嵌机制,是指脚本与程序在同一进程内运行,这种方式主要通过宏(Macro)命令执行,宏命令程序简单易懂,但这种方式的人机交互性较差,不能适应复杂的操作过程,用该方式开发的软件也不够稳定。进程外应用程序被称为外部开发机制,也是软件二次开发者普遍使用的方法,利用该方式并结合CATIA提供的接口,可以实现CATIA中大部分功能,但这种方法操作相对复杂,需要二次开发者熟练掌握CATIA软件并有过硬的编程能力。
通过对上述两种方法的比较,考虑到所要实现功能的复杂性,以及需要保证所开发的软件运行的稳定性,因此采用进程外应用程序方式进行二次开发,即利用组件应用架构CAA(component application architecture)在CATIA原有功能基础上进行二次开发。
2 自动钻铆定位模块的开发
2.1 自动定位模块划分
基于五轴数控托架自动定位方法其大体思路如下:1)建立五轴自动钻铆机床数模,并搭载有双曲度蒙皮的托架;然后拾取制铆点和待铆接点等特征,计算出托架需要沿x和y旋转的角度A和B;2)通过制铆点和待铆接点之间的坐标差值,得到托架在x,y和z方向的位移;3)再利用以上计算的数据完成自动钻铆定位。
自动钻铆自动定位可以划分为以下几个模块:确定曲面待铆接点法式模块、计算待铆接点法式与制铆头轴线夹角模块、计算待铆接点与制铆点距离模块和运动仿真定位模块,如图1所示。
图1 自动定位模块划分
2.2 自动钻铆定位模块实现方法
1)确定曲面待铆接点法式模块
首先应通过相应的代理(CATFeatureImportAgent)选取的蒙皮和其上面的待钻铆点并把所选点和面的相关信息保存在相关链表和变量中;然后通过调用CreatePlaneTangent()函数获待铆接点与蒙皮的切平面,最后再调用Get-Normal()函数获得所需要的法式;实现该模块的部分源代码如下:
CATIGSMPlaneTangent_var iPlane;
iPlane=piGSMFactory->CreatePlaneTangent(_pSurfaceObject,_pPointObject);//创建曲面上某点的切平面
CATISpecObject_variPlaneObject=iPlane;
……
CATPlane*iCATPlane=NULL;
HRESULT rc=iPlaneObject- >QueryInterface(IID_CATPlane,(void**)&iCATPlane);
CATMathVectoriNormal;//蒙皮上待铆接点的法式
CATMathPoint iMathPoint;
iCATPlane- >GetNormal(iMathPoint,iNormal);
……
2)计算待铆接点法式与制铆头轴线夹角模块
在上一模块求出了铆接点的法式,在此模块需要解决如何使得所求法式与制铆头轴线重合问题,因为二者不一定重合,其往往会有一个角度差。如何计算出托架旋转所需的角度,使得铆接点法式和制铆头二者重合是这个模块需要解决的问题。解决这个问题的思路:对铆接点法式进行处理,使得该法式和z向的单位矢量方向相同,这样便于判断旋转的方向;然后调用CATMathVector类下的函数GetAngleTo(),求出两个向量之间的夹角。实现该模块的部分源代码如下:
CATMathVectoriVectorX;//与x旋转有关的向量
double x01,y01,z01,y02,z02,x03,y03,z03;
iNormal.GetCoord(x01,y01,z01);//iNormal蒙皮上待铆接点的法式
if(z01<0)
{
y02=-y01;
z02=fabs(z01);
iNormal.SetCoord(x01,y02,z02);
iNormal.GetCoord(x03,y03,z03);
}
CATMathVectoriRepNormal;//创建方向为Z正方向的参考法式
iRepNormal.SetCoord(0,0,1) ;
iNormal.GetCoord(x01,y01,z01);
iVectorX.SetCoord(0,y01,z01);
AngleX=iVectorX.GetAngleTo(iRepNormal,iRepNormal);//获得沿x方向的转角
//判断x旋转角度的正负
doubleValue_y=ioNormalx.Gety();
if(Value_y>=0)
{
AngleXX=AngleX;//把AngleX赋给全局变量AngleXX
}
else
{
AngleXX=-AngleX;
}
3)计算待铆接点与制铆点距离模块
在确定待铆接点法式和制铆头轴线重合的夹角后,需要计算待铆接点和制铆点之间在x,y和z方向之间的距离,通过移动托架使得两点重合,其大体思路:因为待铆接点和制铆点不在一个坐标系内,所以计算两点在x,y和z方向的距离,需要计算出每个点在世界坐标系中的坐标值,然后对这两点的坐标值做差,即获得所需的数值。实现该模块的核心算法:点在世界坐标系中的坐标值=点所在part的坐标系原点在世界坐标系中的坐标值+点在part坐标系中的坐标值。
4)运动仿真定位模块
通过以上模块的计算,得出托架运动所需的角度和位移,使用接口CATIMovable的SetAbsPosition()函数,实现托架的旋转和运动仿真。
2.3 自动定位模块的应用
1)应用于仿真与干涉检查
自动钻铆定位方法是实现自动钻铆运动仿真的必要条件,同时在运动仿真过程中,利用层次包围盒法、布尔求交方法或空间分解法等可以实现干涉检查。
2)应用于自动编程
自动钻铆仿真的重点并不仅仅是实现干涉检测,更重要的是在完成干涉检测后能够输出应用于数控机床的NC代码,而自动定位方法能够为生成NC代码提供数据来源。
3 功能验证
以双曲度铆接件为例,借以验证定位的准确性。先加载带有双曲度蒙皮的机床数模,然后利用所开发的软件进行定位运动仿真,软件界面如图2(a)、(b)所示。
图2 软件界面
通过对运动后数模待铆接点与制铆头之间距离和角度的验证,其定位距离误差小于0.003mm,角度误差小于0.001°,造成该误差的原因是在数据处理时采取了近似值的原因,但由于误差较小,满足设计的要求。程序的模块化比较清晰,便于更深层次的研究探索。
4 结论
介绍了基于CATIA的自动钻铆定位方法,该方法可以快速准确的实现托架定位,为运动仿真及干涉检测做好铺垫,同时也为NC代码的生成提供了数据来源。自动钻铆定位方法不仅适用于平板件,而且也适用于单曲度和双曲度件,大大缩短了产品设计和加工的周期,达到节约生产成本提高生产效率的目的。
[1]董伊鑫,席平.基于二次开发的五坐标数控机床运动仿真系统[J].机械工程师,2005(3):41-43.
[2]殷俊清,王仲奇,康永刚,等.仿真技术在飞机自动钻铆中的应用[J].航空制造技术,2009(24).
[3]蔡锦达,韩康玮.基于CATIA的数控工作台建模的二次开发[J].微计算机信息,2008(16).
[4]胡挺,吴立军.CATIA二次开发基础[M].北京:电子工业出版社,2006.
[5]廖炎平,刘莉,王嘉博.无人机外形参数化建模及CATIA二次开发[J].弹箭与制导学报,2011(5).