首页 > 范文大全 > 正文

基于OpenGL的数控车削仿真软件的实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于OpenGL的数控车削仿真软件的实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

【摘要】针对目前数控车削加工的实际特点,研究开发了一种数控车削程序校验软件。该软件是基于Windows开发平台下的Visual C++6.0开发环境和opengl图形设备接口开发的数控车床仿真系统,软件实现了G、M、F、T、S等常用数控代码的仿真功能,并且实现了常用三维软件的各种视图、平移、旋转、放大、缩小、渲染、光照、材质等操作。在教学演示、加工程序校验中具有一定的实际应用价值。

【关键词】数控车削仿真系统;Visual C++6.0;OpenGL;数控代码

1.前言

多品种小批量的生产已经成为现代制造业的主要的生产模式,数控车床正是适应这种生产模式柔性化的生产工具。数控加工过程隐含在数控程序中,数控程序中的错误不容易发现,因此无论是在实际生产中、还是教学的过程中都造成很大的资源、人力、物力的浪费。从教学的角度说,可以提高学生的学习兴趣,使学生可以按照自己的想象力来进行实际练习,又不必担心浪费资源;从企业培训的角度来说,可以减少由于培训过程中实际加工造成的毛胚、刀具的浪费和对机床的损害,同时可以让学员充分了解加工过程;从实际生产的角度来说,可以在产品实际加工之前确定合理的、优化的加工方案,并且可以进行模拟试切加工,不但提高了生产效率, 产品的质量得到了很大保证[1-2]。

国外的数控车床的水平已经很高,然而我国现代制造业的数控车的水平还不是很高主要原因之一就是,现在的企业或者科研单位都不能花费大量的财力和资源来培养数控车的技术人员,而实际的操作是培养这些人员的必经之路,因此开发一套数控车床的加工过程仿真软件是十分必要的。

2.仿真系统的实现方法[3-4]

仿真过程的实质是做出符合实际运动规律的动画,因此核心是计算每一帧工件的轮廓,以往的设计中有使用下面的设计思路:首先把加工的零件离散成空间的点坐标,通过每三个点按照一定的方向科学的生成一个三角面片,只要工件离散的点坐标足够的密,就可以通过OpenGL显示非常逼真的模型。通过计算每一时刻的刀具轨迹来改变组成工件的空间坐标系的点坐标。这样一帧一帧显示就可以模拟工件的连续的被加工的过程。

考虑上述方法的计算量较大,我们采用只改变要加工的一块轴段。可以设计一个显示链表,该链表的初值就是毛胚链表。我们可以通过刀具轨迹判断出要加工哪个轴段,然后对该轴段进行修改。这样我们把注意力放在了被加工的轴段上,可以极大的减少计算量。

3.仿真系统的结构[5-7]

(1)设计毛胚模块

该模块主要是要求用户输入加工零件的毛胚信息。由于轴类零件的毛胚的形状比较规则,本仿真系统只提供了五种类型的轴段类型,即圆柱、左圆台、右圆台、左圆锥、右圆锥。这样就可以描述一般的轴类零件的毛胚,因此首先要求用户输入毛胚的段数,然后设置每段毛胚的几何信息,如图3所示。

(3)数控程序的输入、输出模块

该模块主要是完成用户的数控代码导入、导出、编辑。用户可以导入文本文件也可以在视图中进行手动编辑,并且可以把满足仿真要求的代码导出到文本文件中。

实现该功能可以利用Visial C++6.0 MFC类库中提供的视图类CEditView,可以从该类派生出自己的视图类用来实现数控程序的输入、输出。主要用到了CEditView:: SerializeRaw(CArchive& ar),该函数通过与文本文件关联的CArchive对象方便的实现文本文件的输入、输出。

(b)计算仿真显示链表

用毛胚链表初始化仿真显示链表,通过Status类实例化的对象可以知道加工方式,包括直线差补、圆弧差补、快速走刀;刀的位置信息,包括起始点、下一点坐标信息。这样我们可以知道将要加工的是在哪个轴段上,然后根据Status参数建立新的轴段并且修改原来的轴段,再将新建的轴段插入到显示链表中,然后将加工哪个轴段信息存入到Status中。

(c)开发和封装OpenGL与CView的类库

主要用到了OpenGL的图形绘制、变换操作(缩放、旋转、平移)、光照与材质、动画技术。通过GCamara来封装与OpenGL有关的取景操作,如视图变换、投影变换、视口变换,就像一个照相机的取景过程,需要改变照相机的位置、角度、伸缩镜头。通过COpenGLDC来封装OpenGL渲染环境与窗口的关联、绘图操作、光源的设计、颜色的设置,并且把GCamara定义为COpenGLDC的数据成员完成取景操作。通过CView派生出COpenGLView,将COpenGLDC实例化的类对象定义为COpenGLView的数据成员,并且在COpenGLView的消息函数中完成COpenGLDC与COpenGLView的连接。这样我们在使用COpenGLView时功能就很强大了,它封装了OpenGL的各种功能。使用时只要从COpenGLView派生出自己的视图,然后在相应的消息函数中调用基类的相应的消息函数,就可以很方便的使用了。

(d)显示仿真链表

显示仿者链表主要就是利用Visual C++6.0提供的SetTimer()函数设置几个定时器,然后再在相应的响应函数OnTimer()中修改下一侦的显示数据,这样就可以看到一个连续的仿真加工过程了。主要是修改加工轴段的信息,其他的轴段直接按照显示链表绘制就行。

(5)系统帮助模块

主要用于向使用者提供关于软件的使用说明及相关的技术说明,主要包括仿真的基本步骤、系统说明、设计毛胚、选择刀具、要求的数控代码的格式。

4.结论

本文设计开发的数控车削加工仿真系统具有对形状较复杂的轴类零件进行高效准确的程序校验的功能,并且可以动态地、直观地显示零件的加工过程,实现非实际切削过程中的数控程序检验,有效的解决了复杂轴类零件的数控加工程序的校验问题。本系统简单实用,根据仿真系统规模可以扩展功能,对提高生产效率和减少加工成本有着重要意义。该软件在教学实践中受到广大师生的一致好评,仿真效果真实。

参考文献

[1]王太勇,等.数控车床仿真加工系统开发[J].西南交通大学学报,2003(10).

[2]伍铁军,等.数控仿真的时时真实感图形的显示[J].计算机辅助设计及图形学学报,2000,4.

[3]和平鸽工作室.OpenGL高级编程与可视化系统开发篇[M].中国水利水电出版社,2003.

[4]和平鸽工作室.OpenGL程序设计指南[M].中国水利水电出版社,1999.

[5]Microsoft, Microsoft Developer NetWork, Online Help, 2000.

[6]杨彬.如何使用Visual C++ 6.0[M].机械工业出版社,1999.

[7]薛万鹏,等,译.C++程序设计教程[M].机械工业出版社,2000.

作者简介:李梦梅(1971―),吉林长春人,长春市机械工业学校讲师。