APP下载

基于OpenGL的三维数控铣削仿真系统的研究与开发*

2015-11-03袁红兵赵动动

组合机床与自动化加工技术 2015年1期
关键词:数控铣调用代码

袁红兵,赵动动,谭 鑫

(南京理工大学机械工程学院,南京 210094)

基于OpenGL的三维数控铣削仿真系统的研究与开发*

袁红兵,赵动动,谭 鑫

(南京理工大学机械工程学院,南京 210094)

以数控仿真为研究对象,以Visual Basic 6.0为开发工具,利用VB正则表达式提取并存储NC代码中的刀具运动参数,利用PRO/E绘制机床与工件模型并且存储为STL文件,在VB环境下读取STL文件,并调用OpenGL重绘机床模型,最终通过得到三维数控铣削仿真系统验证了方法的可行性。

OpenGL;NC代码;数控铣削;仿真

0 引言

随着计算机技术的发展,结合计算机仿真技术与数控技术开发的数控仿真系统可以很好地解决上述问题。铣削仿真系统基于Windows平台的开放式环境,在VB开发环境下利用Windows提供的OpenGL三维图形接口函数实现三维数控铣削仿真。但在OpenGL环境下机床和工件模型的建立较为复杂[2-3],因此本文研究并提出采用Pro/E建立机床和工件模型并将它们保存为STL格式的二进制文件,然后通过程序把所保存的二进制文件导入OpenGL中进行重绘,从而提高了系统建模和仿真的效率。

1 三维数控仿真环境的建立

本文在Windows XP环境下以Visual Basic 6.0为开发平台,采用面向对象的编程思想,结合OpenGL图形绘制技术,使用Pro/E软件绘制机床和工件模型,建立三维铣削仿真的系统模型。OpenGL是SGI公司开发的独立于操作系统和硬件环境的2D/3D图形库,它是一个开放的图形程序接口。随着OpenGL成为高性能3D图形显示和交互式视景处理的行业标准,目前几乎所有的3D显卡都支持OpenGL技术。作为目前比较完善和开放的三维图形标准,OpenGL的动态链接库提供了丰富的库函数,使得开发人员可以方便地实现三维建模、仿真、光照方案处理和视景渲染功能。目前OpenGL已广泛应用于实体造型、CAD/CAM、地理信息系统、大气气象模型、广告动画、医学成像、工业勘探和模拟仿真等领域[5-6]。

Visual Basic编程语言虽然操作方便易于使用,却没有提供对OpenGL图形函数的直接调用,但可以通过建立OpenGL类型库(Vobgl1tlb)来实现。Vobgl1tlb库使用前需要先通过XP操作系统的Regsvr32.exe程序进行注册,或者在VB编程环境中选择菜单“工程”—“引用”,然后选择“浏览”找到Vobgl1tlb库的路径后进行注册。通过这些操作就可以在VB中对OpenGL进行调用。为了简化程序和方便不同对象的绘制,首先创建一个OpenGL类模块,用于实现一些诸如OpenGL的初始化、光照、纹理和材质等基本操作进行定义,以便编程时直接调用它们[7-8]。

铣削仿真环境中的机床、刀具、工件等模型采用Pro/E软件绘制并存储为二进制的STL文件,STL文件用于存放由模型外表面离散形成的三角面片的法向量和各顶点的三维坐标值,在三维仿真系统中通过编程将其导入OpenGL中进行重绘。在铣削仿真系统中为方便模型操作须提供模型的平移、缩放和旋转等基本功能,这属于OpenGL的基本模型变换。模型变换本质上是通过模型矩阵来重新放置模型,改变模型的位置、方向和姿态。系统开发中采用VB6.0进行系统界面及程序设计,完成了铣削仿真环境的建立。在Pro/E中建立的数控铣床模型如图1所示。

图1 数控铣床模型

2 系统总体结构设计与实现

根据机床工作特点及仿真功能需要,铣削仿真系统的总体结构如图2所示,包括NC代码编译处理模块、3D建模模块以及铣削仿真模块。

图2 铣削仿真系统总体结构

2.1 NC代码编译处理模块

数控系统的NC代码都有一定的规则,NC代码编译处理模块正是根据这些规则对NC程序代码进行编译处理,并提取和保存其中的运动指令和参数信息。首先建立对Microsoft Vbscript Regular Expressions 5.5的引用,然后通过调用正则表达式的对象和函数实现NC代码编译处理的功能。利用VBscript执行字符串操作时首先应通过初始化一个RegExp对象来建立所需的正则表达式,然后根据所要执行的查找操作设置RegExp对象的属性,并利用正则表达对NC代码以一行为最小单元进行逐步匹配,匹配成功便继续进行查错处理。NC代码的词法检查处理流程如图3所示,其中在NC代码的词法检查部分,通过建立一系列正则表达式对NC代码进行搜索匹配,如匹配成功说明该段代码正确并替换成空格,剩下未被替换的部分便是词法错误部分,最后生成错误报告。语法检查部分用于对NC代码中的一些常见语法错误建立正则表达式,然后对每一行代码进行匹配,匹配成功便记录下来,最后同样生成错误报告。

2.1 川木瓜醇提取物对3T3-L1前脂肪细胞活力的影响 与空白组比较,川木瓜醇提取物能显著降低3T3-L1前脂肪细胞的活力,且随着剂量的增加,作用更为明显,川木瓜醇提取物浓度为25.0 ng/L时,细胞活力为空白组的85.1%;200.0 ng/L时,细胞活力仅为空白组的41.8%,差异均有统计学意义(P<0.01),见表1。

图3 NC代码词法检查处理流程

在词法和语法处理后,NC代码的编译处理流程如图4所示。编译开始时定义字符串数组,数组长度等于程序段数。接下来以程序段为单位,通过定义RegExp对象来建立正则表达式,按不同的NC代码类型对每一个程序段进行搜索匹配,并根据匹配结果对结构体数组元素进行赋值,以提取其中的运动指令和参数信息。

图4 NC代码的编译处理流程

2.2 3D建模模块

由于OpenGL库提供的函数只能绘制点、线、多边形等简单的几何图元,通过调用库函数绘制复杂图形的时候就非常繁琐。通过直接调用OpenGL库函数来绘制机床等3D模型十分繁琐[9-10]。为了降低基于OpenGL开发的软件周期与成本,这里采用Pro/E绘制机床、刀具及工件的3D模型,并保存为STL二进制格式文件。STL文件保存的是由模型表面离散形成的三角面片信息,其中包括每个三角面片的法向量和各顶点的坐标数据。但STL文件并未保存3D模型的颜色、材料、纹理等信息,这些信息可通过在OpenGL环境下重绘时设置和定义。由于STL文件格式简单,所以只需进行简单的字符串操作便可以提取其中顶点的三个坐标数值。在提取STL数据之前定义结构体,由于一个向量或点由三个数值表示,故定义PointInfo结构体来存放点的各参数。而每个面由一个法向量加三个点表示,故定义FaceInfo结构体来存放:

Public Type PointInfo

X As Double

Y As Double

Z As Double

End Type

Public Type FaceInfo

FacetPoint1 As PointInfo

FacetPoint2 As PointInfo

FacetPoint3 As PointInfo

FormNormal As PointInfo

End Type

提取STL文件信息之后,可通过调用OpenGL绘图函数来绘制这些三角面片并“拼接”成3D模型,显示模型时调用相应的显示列表即可。关键程序代码如下:

2.3 铣削仿真显示模块

铣削仿真显示模块为仿真系统的核心部分,实现刀具轨迹仿真、工作台运动仿真、工件加工仿真以及干涉检验。同时显示机床、刀具模型的铣削仿真系统界面界面如图5所示。

图5 显示机床、刀具模型的铣削仿真系统界面

2.3.1 刀具轨迹仿真

NC代码中最为常见的功能为G00、G01、GO2和G03,即直线插补和圆弧插补。由NC代码编译得到插补指令,通过调用OpenGL函数绘制刀具轨迹。例如绘制从点(1.0,2.0,3.0)到点(2.0,3.0,4.0)的线段:

2.3.2 工作台运动仿真

实际铣削加工过程中刀具主要在Z轴方向运动,而X、Y轴方向是由工作平台控制的。本系统采用双缓存机制的动画效果。系统在显示前台缓存内容中的一帧画面时,后台绘制并缓存下一帧画面。当绘制完毕后通过切换前后台缓存,后台缓存内容中的画面显示在屏幕上,前台缓存则转入后台绘制下一帧画面。这样反复循环,屏幕上就能连续显示绘制好的画面,从而实现铣削仿真的动画效果。系统中通过时钟来控制仿真动画的切换速度。由于工作台运动为平移运动,后台缓存将下一帧要显示的画面通过变换在新的位置下绘制出来,时钟触发后进行前后台缓存切换,其代码如下所示:

3 结束语

本文在Windows XP环境下使用面向对象的语言Visual Basic调用OpenGL实现了数控铣削仿真系统的开发,系统具有NC代码编译处理功能、刀具轨迹仿真、工作台运动仿真和干涉检验等功能,并且能实现各种模型变换以方便观察。随着数控技术、计算机图形处理和仿真技术的不断发展,数控仿真技术也将会有更加广阔的发展和应用空间。

[1]刘源.开放式数控系统的构建及其关键技术研究[D].哈尔滨:哈尔滨工业大学,2010.

[2]申张勇,闫迎志.基于VB和OpenGL的数控铣削仿真系统研究[J].现代制造工程,2008(1):51-53.

[3]王红斌,尹长青.OpenGL导入3D模型技术研究[J].科技传播,2011(1):168.

[4]罗生梅,许奇武.OpenGL在数控加工仿真中的应用[J].组合机床与自动化加工技术,2008(4):89-91.

[5]郝明晖,宋芳,郝双晖,等.NC指令解释数控仿真系统的研究[J],机床与液压,2007(10):175-178.

[6]周静,陆宝春.数控仿真系统三维建模技术研究[J].机床与液压,2007(4):14-15.

[7]王志伟.基于PC+运动控制卡的雕铣系统开发及铣削仿真研究[D].南京:南京理工大学2011.

[8]张葆青,闫石,宋海生.开放式数控系统代码解释模块的设计[J].机床与液压,2012,40(4):72-74.

[9]G.Pritschow,Y.Altintas,F.Jovane.Open Controller Architecture-Past,Present and Future.CIRP Annals-Manufacturing Technology.2001,50(2):463-470.

[10]Hee-Sub Lee,Jae Wook Jeon,Joung Youn Choi,A highperformance open architecture motion controller,Industrial Electronics,ISIE 2001,IEEE International Symposium,2001(2):886-890.

(编辑 李秀敏)

The Research and Development of NC milling Simulative System Based on OpenGL

YUAN Hong-bing,ZHAO Dong-dong,TAN Xin
(School of Mechanical Engineering,Nanjing University of Science&Technology,Nanjing 210094,China)

The paper studied NC milling simulation.With Visual Basic 6.0 as development tool,by using VB regular expressions to extract and store tool motion parameters in NC code.Use the PRO-E to draw the model of machine tool and workpiece and store then in STL file,then read STL files,and call OpenGL in VB environment to redraw the machine tool model,Finally through the NC milling Simulative System to verify the feasibility of the method..

OpenGL;NC code;CNC milling;simulation

TH162;TG65

A

1001-2265(2015)01-0110-04 DOI:10.13462/j.cnki.mmtamt.2015.01.031

2014-05-06;

2014-06-10

基于PC与运动控制卡的铣削数控仿真系统的研究与开发,2013年南京理工大学国家级大学生科研训练项目

袁红兵(1967—),男,江苏南通人,南京理工大学副教授,博士,研究方向为机电系统、工业自动化和数控技术的研究与应用开发,(E-mail)hbyuannj@126.com。

猜你喜欢

数控铣调用代码
数控铣床的精准保养技术
数控铣床定位误差诊断及维修
核电项目物项调用管理的应用研究
基于设备因素的数控铣削表面质量研究
系统虚拟化环境下客户机系统调用信息捕获与分析①
创世代码
创世代码
创世代码
创世代码
华中8型数控系统热误差补偿功能在数控铣床上的应用