资源描述
基于OpenGL的数控加工教学平台的建模与仿真
摘要:文章以 Windows XP为开发平台,以 开放式图形开发库OpenGL及Visual C++6.0 软件为开发工具,建立了数控加工教学平台中的几何模型和运动模型并论述了其编程原理。
关键词:数控教学平台;建模;数控仿真;OpenGL
Abstract: This paper uses Windows XP as developing platform, uses OpenGL and Visual C++6.0 software as developing tool to build geometry model and movement model of NC Teaching Platform and the principle of program is expounded.
Key words: NC teaching platform; modeling; NC simulation; OpenGL
0 前言
二十一世纪机械制造业的竞争,其实质是数控技术的竞争。近年来,国内外都十分重视数控教学。数控教学大致包括一般数控知识的教学和实际操作技能的培训两部分内容,相应的培训除了必要的理论讲解,大部分工作是在数控设备上的实际操作训练。而数控设备价格昂贵,培训者的误操作还可能会危及机床设备甚至于操作者自身的人身安全。因此,数控先期教学不适合在实际设备上进行。
随着计算机软硬件技术、图形图像处理及虚拟加工技术的发展, 建立一个经济、高效、快捷、通用的数控加工教学平台已经成为可能。在这个数控加工教学平台上,操作者能够在生动、直观的动画环境下,数控编程、手工操作、试切对刀和数控加工,犹如在操作一台真正的数控机床。数控加工教学平台的开发需要专门的三维图形加速引擎及开发接口平台, Windows操作系统下提供了多种这样的平台 ,最常见的有 Direct3D和 OpenGL两种。下面介绍基于OpenGL的数控加工教学平台的建模与仿真。
1 OpenGL建模方法
OpenGL是开放式图形开发库(Open Graphics Library)的缩写,是美国硅谷图像公司用C语言为图形工作站开发的图形软件。 OpenGL是一个图形和硬件的软件接口,它由几百个指令或函数组成,是一个三维的图形和模型库,在CAD/CAM 等需要高级三维对象可视化和图形绘制的领域被广泛应用,OpenGL还提供了诸如基本图元绘制、变换矩阵、着色模式、光照、反走样等方法来控制三维图形的绘制。现在,Windows操作系统全面支持OpenGL,使用户在 PC机上可用它开发图形动画产品,实现虚拟仿真。目前,OpenGL己成为新一代三维图形开发的工业标准。
OpenGL建模的工作流程,如图1所示。
几何顶
点数据
图像象
素数据
运算器
显示列表
逐个顶
点操作
图像操作
光栅化
逐个片
元操作
纹理
映射
帧缓
冲器
图1 OpenGL建模的工作流程
图1中几何顶点数据包括模型的顶点集、线集、多边形集,这些数据经过运算器、逐个顶点操作等;图像象素数据包括象素集、影像集、位图集等,图像象素数据的处理方式与几何顶点数据的处理方式是不同,但它们都经过光栅化,逐个片元 (Fragment)操作,直至把最后的光栅数据写入帧缓冲器。在 OpenGL中的所有数据,包括几何顶点数据和图像数据都可以被存储在显示列表中,或者立即可以得到处理。OpenGL中,显示列表技术是一项重要的技术。OpenGL要求把所有的几何图形单元都用顶点来描述,这样运算器和逐个顶点计算操作都可以针对每个顶点进行计算和操作,然后进行光栅化形成图形碎片;对于图像数据,象素操作结果被存储在纹理组装用的内存中,再与几何顶点操作一样光栅化形成图形片元。整个流程操作的最后,图形片元都要进行一系列的逐个片元操作,这样最后的象素值送入帧缓冲器实现图形的显示。
OpenGL并未提供复杂物体的建模技术,只提供了一些绘制点、线及多边形的基本建模函数,给程序员以巨大的自由发挥空间。通过基本图形的组合、平移、旋转和缩放,可得到任意三维形体。在OpenGL中,通过定义光源的颜色、透明度、位置和照射方向来定义光源。而材质反映了物体的本身特性,它决定了反射光的颜色、特性和强度。材质颜色包括环境反射光、漫反射光、镜面反射光和自身发射光。通过光源和材质的合理设置,能逼真模拟出物体外观。纹理映射是真实感图形制作的一个重要部分。OpenGL提供了一系列完整的操作函数来定义、设置和调用纹理,用户可用它们构造理想的物体表面,将纹理图案用不同方式粘贴到曲面上,使三维场景中的物体更生动、更自然。
2 数控加工教学平台的总体设计
数控加工教学平台的具体设计目标为:
(1)能实现零件装夹、自动换刀、切削成形等过程的仿真。
(2)能通过键盘、鼠标、图形终端等外部设备实现人机交互。
(3)能够进行刀具与夹具、工件的碰撞干涉检查。
(4)能对加工误差进行分析与评价。
根据上述的具体设计目标,结合现有的研究基础,数控加工教学平台的总体框架如图2所示,包括数控机床模型、刀具模型、夹具模型、工件模型,通过逐条读取及编译NC代码来进行切削加工仿真及碰撞干涉检查仿真,最终实现数控加工过程的仿真教学。
数控加工教学平台
加工环境
加工过程
刀具模型
夹具模型
工件模型
程序处理
机床模型
切削加工
干涉检验
图2 数控教学平台的总体结构
3 数控加工教学平台的建模
根据系统总体结构框架图,把系统划分为如下几个模块:加工环境模块、NC代码处理模块、切削加工仿真模块、碰撞干涉检查模块。
3.1 加工环境建模
加工环境模型主要包括机床模型、毛坯模型、刀具模型、夹具模型等, 这些模型在NC代码驱动下相互协同工作,完成加工的仿真。在这里我们需要用OpenGL和Visual C++6.0来建立模型, 从而建立符合功能要求的加工环境仿真模块。基本步骤如下:
(1)根据基本图形单元建立景物模型,并且对所建立的模型进行数学描述(点、线、多边形、图像和位图都看作基本图形单元);
(2)把景物模型放在三维空间中的合适的位置,并且设置视点(ViewPoint);
(3)计算模型中所有物体的色彩, 其中的色彩根据应用要求来确定,同时确定纹理粘贴方式等;
(4)把景物模型的数学描述及其色彩信息转换至计算机屏幕上的象素。
下面是建模的部分程序:
void CRenderView::DrawBase()
{ glPushMatrix(); /压入当前矩阵堆栈/
DrawBoard(); /建立横向溜板、纵向工作台、工件等模块函数/
glColor3f(0.8f,0.8f,0.8f); /设置当前颜色/
glTranslatef(-5.0f,-(2.5f+1.5f*board_ply),0.0f);
/把当前矩阵乘上一个平移矩阵/
auxSolidBox(base_width,5.0f,10.0f); /建立床身底座模型/
glTranslatef(-(base_width/2.0f-5.0f),2.5f+pole_high/2.0f,0.0f);
/把当前矩阵乘上一个平移矩阵/
………
glPopMatrix(); /弹出当前矩阵堆栈/
}
3.2 NC代码处理模块
NC代码是由定义了一定功能的大写字母附上数据后组合而成的,一般每条指令完成一个动作, 若干条指令按一定结构构成一段程序,主要包括准备功能G代码、辅助功能M代码、进给功能F代码、主轴转速功能S代码及刀具功能T代码等。NC代码处理模块用于实现NC代码输入、显示修改及分析解释功能。程序的读取可以采用直接键盘手工输入和程序文件读入两种方式;代码解释和分析主要是分析程序的结构,通过对NC代码的理解、检查代码语法语意的正确性,经过译码、刀补计算、进给速度处理,以得到刀具中心轨迹和其它所需数据,为刀具路径建立数据表,作为仿真的驱动信息,用于模拟加工模块。
NC代码的处理过程主要包括NC程序的读入以及对读入程序的词法、语法检查和解释。目前国内外的数控装置几乎都采用可变程序段“字地址格式”,国际标准化组织制定了字地址程序段格式ISO6983-1-1982标准,形式如下:
N… G… X… Y … Z … I … J … K … M… S… T… F…
根据NC代码的特点,本系统存取、管理这些代码采用单向链表结构来实现。由于本系统数控源代码是以文本格式存储的,所以首先由C ++提供的I/O流操作函数Ofstream,fstream,ifstream来实现对源代码的存取,由类ifstream读入每一程序行,将读入的程序行以字符串的格式存入text_list链表的text成员中,该链表的具体结构为:
struct Pro _text
{
CString text;
int lengh;
Pro text3next;
};
对数控程序代码和数控仿真目的分析可知,我们只需从数控程序中提炼与仿真系统运动部件有关的运动与状态信息,而对于那些与运动轴无关的代码,只要计算机能够识别它们并进行词法的检验就可以了。因此,遍历text_list链表对结构体中成员text进行分析,根据特定的算法,去除注释等不必要的信息,提取有用的代码信息即程序行中的指令值存入dictate _ list链表。同时该过程还完成数控程序的词法和语法的检查,若有错误的信息将其存入指定的文件中。dictate_list链表的结构为:
struct Command
{
intN; /行号
CString G; /G指令
double X; /x坐标
double Z; /z坐标
double R; /圆弧半径值
double I; /圆弧中心坐标
Idouble K; /圆弧中心坐标
Kdouble F; /进给速度值
int S; /S指令
CStringM; /M指令
int T; /刀具号
Command3next; /next指针
}
然后提取有关命令动作和状态信息,通过对已经存入缓冲区的数据结构进行分析扫描,即遍历dictate_list链表,分离出相应的信息,进行刀具轨迹的离散和插补,得到仿真的驱动信息,将其存入一定的数据结构中。
3.3 切削加工仿真模块
切削加工仿真模块是根据NC代码对加工环境模型中各运动部件的运动进行模拟,实现教学系统中刀具和工件之间的相对运动。该模块利用计算机图形技术,让计算机模拟真实的加工过程,通过动画的形式形象、直观的模拟数控加工的切削过程。通过仿真结果的可视化显示,可以发现错误,修改工艺文件,优化加工方案。根据计算机动画原理,每秒显示25幅以上的切削加工场景,整个加工过程的演示就是连续的。用OpenGL 的双缓存(Double Buffering)技术可以方便地实现刀具相对运动过程的动画仿真。双缓存提供两个颜色缓存,在一个缓存中显示帧时,在另一个缓存中绘制帧。在绘图时,数控加工仿真系统根据插补计算得到的刀位轨迹值,在屏幕上实时的显示刀具的变化情况。对于每一个计算出的插值点,刀具就进给一步,系统即刷新一次,此时在后台缓存进行建模及对模型进行变换,在前台缓存显示由后台缓存已计算好的画面,如此反复,最终动态显示切削加工过程。另外还利用OpenGL 的显示列表技术和局部刷新技术防止场景的颤动,增强切削场景的显示效果。
3.4干涉碰撞检验模块
干涉碰撞检验模块主要是检验刀具和主轴相对于非加工部件如夹具、工件的非加工部位、加工工作台的干涉现象,由于加工过程由NC代码驱动,干涉出现位置的NC代码信息可及时反馈提交用户进行检查和修改。
干涉检查结果需进行分析,按以下判据得出结论:
(1)刀具切削部件与加工好的部件有干涉为过切;
(2)刀具非切削部位与物体干涉为碰撞;
(3)进给速度快时的切削为碰撞;
(4)主轴不转时的干涉或切削为碰撞。
我们采用形体求交的方法进行干涉的定性检查。如果两个形体之间存在交集,就认为他们互相干涉,在数控仿真建模过程中采用的体素定义方法不是通常所说的BOX、CYLINDER、CONE、SPHERE、TORUS等等,而是平扫体和旋转体等,它们本身就可能表示很复杂的形状。在本算法中,工件和夹具不是以整体的信息参与求交计算的,而是个别地进行的。在论证这种方法的好处之前,先叙述形体求交算法的基本步骤:
(1)将待计算的刀具和主轴形体的坐标系转换到工件坐标系下,工件的几何信息已经在装夹时计算出;
(2)对任一对求交形体A和B作包围和干涉检查,若不干涉,无需进一步求交,转(4);
(3)将A的所有棱边和B的所有面进行求交计算,若出现交点在面片内,判定为形体相交,退出,否则进入下一步;
(4)取下一对求交形体,转(2)。
大多数情况下,在刀具没有深入工件加工的情况下,仅包围盒的检查就可以排除大多数的相交情况。我们采用让刀具和当前工步已加工好的状态件作干涉计算,若发生干涉,则一定会出现过切。
将工件和夹具的信息分散成交简单的多个BREP描述用于干涉检验中的求交计算,可以提高检验的速度,这是分类枚举和多路思想的体现。简单的信息便于计算和减少不必要的计算,而只要能够判断,立即做出计算,避免出现将刀具和工件的所有面进行求交计算的机会。
需要说明的是,边界描述是用多面体逼近实际的形体的,这一近似性使得在描述孔和曲面时产生一定的误差。增大离散等分数的方法并不明智,因为这使得求交计算的效率大大降低。我们分析到这一问题主要在钻孔、铰孔、镗孔、攻丝和孔的铣削加工中出现,如果适当减小刀具的直径,便可以避免由于离散化误差引起干涉检验的错误报警。图3所示为数控车削加工仿真系统中碰撞干涉检测实例。
图3 数控车削加工仿真系统中碰撞干涉检测实例
4 数控加工教学平台的用户界面
图4所示为数控车削加工仿真系统用户界面,铣削和车削加工系统界面类似。图中数控信息、控制面板和加工仿真三个窗口在屏幕上同时显示,并可以通过菜单栏和工具栏上的相应命令对机床运动和加工仿真进行控制。其中加工仿真窗口是最大的,用于显示机床、刀具运动和材料去除动态过程,可以在二维和三维动画之间切换;数控信息窗口显示NC文件的内容,可通过滚动条来显示全部文件的内容,加工时显示正在加上的NC代码。另外,还添加了仿真系统中特有的功能子菜单,例如NC代码文件读取、编辑、存储、报警清除、重新计数、动态仿真等。
图4 数控教学仿真系统用户界面
5 结束语
本文介绍了一种数控加工教学平台的建模方法, 以OpenGL和VC ++6.0为工具开发出一套数控加工的仿真系统,该系统兼有几何仿真和运动仿真的功能 ,在实际教学中取得了良好的效果。但要真正实现全面 、真实地模拟数控机床切削加工中的振动、 、切削力 、、、、、、、工件材料、刀具磨损等各种因素,还需要进一步的研究 。
参考文献
[1] 唐友明等.数控仿真系统的开发与研究[J].电力机械,2007(1).
[2] 李宏胜等.三维虚拟数控机床的软件开发与研究[J].组合机床与自动化加工技术,2002(11).
[3] 韩铁强等.数控加工仿真技术的研究[J].机械,2005(1).
[4] 贾志刚.精通OpenGL [M].北京:电子工业出版社,1998.
展开阅读全文