一、引言在数控加工中,为了验证NC代码编制正确性,早期采用试切方法,在实际加工之前,往往 需要多次试切,浪费了大量的人力和物力。随着数控编程技术的发展,人们采用视觉检查NC刀具 轨迹的二维线框图,这种方法主要依赖于程序员对易错区选择的正确性和对该区域复杂的刀具轨迹 线框图的理解程度,一般的用户无法判断其正确性。当今,在NC程序自动检查中,主要研究方向 是生成实体几何仿真图形,由于产生的图形是真实感效果图,能够直接检查NC程序代码的正确性 ,使NC编程人员和机床操作者通过图形显示进行干涉和碰撞检查,校验数控程序。因此,NC代 码几何仿真技术正逐渐成为CAD/CAM集成领域的一项重要技术。由于OpenGL适用于多种硬件平台及操作系统,其图形库能够制作出高质量的三维图形和高质量的动画效果,并且OpenGL与Visual C++ 6.0之间关系紧密,可以使用VC编程控制OpenGL图形,使其能够方便地达到加工仿真的目 的。本文着重讨论怎样在OpenGL环境下建立数控加工环境及实现加工过程的实时仿真。二、 建立数控加工虚拟环境在数控加工几何仿真系统中,首先要建立虚拟加工环境,对数控机床进行造 型。由于机床是由许多零部件组成,结构较为复杂,用OpenGL函数进行造型非常困难,如果 利用现有的软件,如Pro/ENGINEER、UGⅡ等,就比较容易实现数控机床的造型,建 立真实感较好的虚拟加工环境。因此,这里用Pro/ENGINEER进行机床和刀具、夹具等造型,然后将其转化到OpenGL下进行控制,如图1所示。图1用OpenGL控制的数控车床造型 其中的数据结构及函数如下: struct sample_MATERIAL{ GLfloat ambient<3>; GLfloat diffuse<3>; GLfloat specular<3>; GLfloat emission<3>; GLfloat alpha; GLfloat phExp; int texture; };//光照特性 static sample_MATERIAL materials<1>;//定义材质 static BYTE face_indicies
<9>;//定义表面,由三角形面片组成 GLfloat vertices<3>;//定义各点的坐标 static GLfloat textures<2>;//定义材质各点反射特性 static GLfloat normals<3>;//各点法向量 void MyMaterial(GLenum mode,GLfloat *f,GLfloat alpha);//选择材质 Glint Gen3DObjectList(); { ...... }//机床显示列表对整个机床进行显示控制时,可在机床显示列表前加入glTranslate (),glRotate(),glScale()等OpenGL命令,实现机床的平移、旋转、放大和缩小等功能。此外,更主要的是需要对机床的运动部件进行控制,例如,卡盘的旋转、刀盘的旋转和移动、车床门 的开关等。以卡盘旋转为例,其数据结构与机床所用到的数据结构的大致相同,主要区别就是要建立卡盘显示列表: Glint GenChuckList(); { ...... }//卡盘显示列表最后,在卡盘显示列表前加入glRotate()命令实现旋转功能,这里关 键的问题是要使卡盘围绕自身轴旋转。三、数控加工过程仿真的实现(毛坯离散化)车削加工时通 常是棒料毛坯,设其直径为D,长度为L,参见图2。单元体是由三角形面片组成,参见图3,其显示函数为:GenCell(floatD,float d,floath);当R=r时,单元体由台体变成了圆柱体。毛坯则是由单元体组成,例如,将10个单元体沿Z轴方向排列组成毛坯,参见图2。采用X_Map作为数据结构,其结构如下: struct X_Map { float X; } cell<10>;图2 由单元体组成毛坯首先将X值初始化成毛坯的直径D。当车刀在毛坯上加工时,求出车刀切削后对应cell体元的X值,设为X刀 ,然后比较X刀和D的值。if(X刀.X;if(X刀≥D),则cell< >.X保持不变,仍为D。根据数控代码或刀位文件传递的插补形式及坐标,决定哪些体元的X值改 变了,以及改变的数值。当加工一个圆台面外圆时,例如,起点(x0,z0),终点(x1,z 1),首先确定在z0~z1范围内单元体X值变化,如果单元体是圆柱体则在毛坯加工时会出现 棱角,而不是光滑的外圆面。若单元体是圆台,则将z0~z1范围内圆台单元体按照比例大小顺 次排列,就会实现光滑的圆台面的效果,这就是将单元体构造成台体的原因。最后利用OpenGL的双缓存(DoubleBuffer)技术以及定时器技术可获得平滑逼真的动画效果。图3单元体三、 结论(1) 采用Pro/ENGINEER进行造型,然后转化到OpenGL下,可以完成真实感比较强的虚拟加工环境的建立,在这一过程中减少了大量的计算问题。(2) 通过棒料毛坯的离散化,采用X_Map作为数据结构,利用OpenGL的双缓存(Double Buffer)技术以及定时器技术可以动态仿真毛坯的切削过程,检验过切或干涉,并且使加工 结果可视化。本文索引号:78对本文提及的产品感兴趣的读者请拨打:010-68994816基于OpenGL的数控车削几何仿真@许立$大连铁道学院
@孟凡力$大连铁道学院
@葛研军$大连铁道学院