基于JAVA的网络数控仿真系统研究

时间:2022-07-29 08:30:42

基于JAVA的网络数控仿真系统研究

摘 要

本文介绍了一种基于java的远程方法调用和JOGL技术构建的基于网络数控加工过程仿真系统。该系统将数控系统的核心功能模块均置于服务器端,充分利用服务器资源进行三维图像渲染,并将渲染结果以帧的形式发送到客户端。该系统充分降低的客户端的配置要求,同时,由于JAVA良好的跨平台和面向对象的特性,该系统具有较好的可移植性和可扩展性。该系统是基于云计算的数控仿真系统的原型系统。

【关键词】数控仿真 JAVA 远程方法调用 JOGL

1 引言

近年来,随着网络技术和分布式技术发展和应用的普及,制造业正在发生巨大变革。特别是云计算与物联网技术的发展及其在各行各业中的应用,数控加工技术也正在向着网络化、智能化的方向发展。作为网络数控系统的一个基本组成部分,基于网络的数控加工过程仿真系统的研究与开发也就变得十分的关键。目前,国内外对基于网络的数控加工过程仿真系统的研究仍然处于探索与起步阶段,一部分数控仿真系统在原有的基础上实现了部分网络功能,但是仍然存在着许多问题,如新加坡国立大学、华中科技大学、南京航空航天大学等先后提出了基于Web的数控加工过程仿真系统,这些系统都是基于Java3D和Java Applet技术的。Java3D原本是Sun公司开发的一组三维图形开发的API,但自从Oracle收购了Sun自后,便将该项目交给了开源项目组,此后便更新缓慢。而Java Applet随着Web技术的发展, 也逐渐淡出人们的视线。

本文在对数控加工过程仿真系统进行仔细分析整理后,利用RMI和JOGL技术设计并实现了一种基于网络的三维数控加工过程仿真系统,该系统在服务器端完成主要的加工仿真过程和三维场景渲染,客户端仅进行仿真结果的显示和控制,充分解放了客户端的压力,并且具有较好的可移植性和可扩展性。

2 相关工作

2.1 远程方法调用

远程方法调用(RMI)是Java的RPC机制。从Java1.1开始,RMI是Java分布式对象技术的核心,它使得Java程序之间能够实现灵活的,可扩展的分布式通信。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议。简单地说,RMI使得原先在同一操作系统上的方法调用,变成了不同操作系统之间程序的方法调用。RMI是Java语言在分布式计算上的基本模型,EJB也是建立在RMI的思想上的。

RMI采用客户/服务器通信方式,在服务器上部署了提供各种服务的远程对象,这些远程对象的方法能够被运行在不同主机上的、其它Java虚拟机的方法所调用。当所有参数被传送给远程目标并且被解释,然后将结果返回给调用者时,开发人员会有一个错觉,以为是从本地类文件中调用一个本地方法。RMI框架如图1所示。

RMI框架采用来负责客户端与远程对象之间通过Socket进行通信的细节。RMI框架为远程对象分别生成了客户端和服务器端。位于客户端的类称为存根,位于服务器端的类称为骨架。存根和骨架类通过Socket来通信,开发人员无需手工编写客户端的存根类和服务器端的骨架类,它们由RMI框架创建。

RMI要求远程接口必须直接或间接的继承Remote接口,远程接口中的每个方法必须抛出RemoteException。服务器端的业务类通过实现此接口提供业务功能。然后通过让业务类继承UnicastRemoteObject类或者在业务类的构造函数中显示地调用UnicastRemoteObject.exportObject来将此对象绑定到某端口上(默认端口为1099),最后用JNDI的rebind方法向rmiregistry注册表注册该远程对象,此时会形成一个URL与对象实例的映射关系。在客户端,利用JNDI的lookup方法在此URL上查找该对象的存根,然后即可和调用本地方法一样调用远程接口中的方法。URL的形式入下:

rmi://服务器名字:端口号/对象的注册名字

2.2 OpenGL与JOGL

OpenGL是一个图形硬件接口,是一个三维图形应用程序接口。OpenGL最显著的特点是与硬件的无关性,可以方便的将程序移植另到一个操作系统中。它还能直接面向硬件调用3D处理功能,所以处理3D图形的速度特别快。JOGL则是Java对OpenGL API的绑定,或者说是OpenGL接口的Java实现。JOGL使得Java能够访问OpenGL API来进行三维图形应用程序的开发。

JOGL对OpenGL的核心库和实用库进行了简单的封装,其语法和C语言版本的OpenGL API几乎完全相同,但是添加了面向对象的特性。目前,JOGL的最新版本是JOGL2.0,它几乎提供了对OpenGL API的所有版本的支持。同时,JOGL还集成了AWT、Swing、SWT界面组件,极大的简化的程序的开发。JOGL是目前主流的Java三维图形开发库之一。

3 网络数控仿真系统设计

3.1 系统模块

一个基本的网络数控仿真系统包括客户端和服务器端。网络数控加工过程仿真系统的系统框架图如图2所示。

客户端各模块的功能如下:

(1)设备选择模块:用于数控仿真设备的选择,包括机床选择模块、刀具选择模块、毛坯选择模块;

(2)NC代码选择模块:用于选择NC代码,并上传到服务器端;

(3)流程控制模块:用于仿真动画的控制,如开始暂停、放大、缩小等;

(4)加工过程显示模块:用于实时显示加工过程。

服务器端各模块的功能如下:

(1)设备加载模块:主要功能是读取机床和刀具的STL(STereo Lithography)文件并根据点的坐标信息生成三维图像。

(2)译码和插补模块:主要功能是将NC代码的解释和译码,并根据机床类型进行坐标转换和插补计算,并生成相应译码文件;

(3)实体建模模块:主要功能是根据毛坯的参数利用改进的体素模型进行建模;

(4)切削计算模块:主要功能是利用刀具参数、译码文件以及建模后的毛坯数据计算切削点;

(5)加工面重绘模块:主要利用MC(移动立方体)算法[7]对切削面进行重新绘制;

(6)场景绘制模块:主要功能是利用JOGL将仿真的仿真结果进行绘制,并生成相应帧图片。

3.2 系统设计原理

3.2.1 系统原理及结构

三维仿真中涉及大量的向量和矩阵运算,为了将客户端彻底的从三维图像的渲染中解放出来,本系统的设计原理为,将数控仿真的核心模块均放在服务器端,充分利用服务器资源进行仿真数据的计算和三维场景渲染,并将绘制结果以PNG图片的形式发送到客户端,客户端仅对加工过程进行显示和对仿真过程进行控制。图3显示了基于网络的数控加工仿真系统结构图。

由于RMI规范规定,只有基本数据类型、远程对象及可序列化的对象才可以作为参数和返回值进行传递。其中,远程对象是实现Remote接口的类的实例,可序列化对象为继承了Serializable接口的类的实例。JOGL提供了一个Screenshot类,该类提供了一个静态方法readToBufferedImage,该方法把当前图形缓冲区的数据封装成一个BufferedImage对象,但该对象不满足作为参数和返回值的条件,因此,需要使用ByteArrayOutputStream的write方法将其转换为字节数组才能利用RMI进行传递,在客户端则使用ByteArrayInputStream的read方法将字节数组重新封装成BufferedImage对象,然后可利用Graphics类的drawImage方法将其绘制到Swing组件中。

3.2.2 数控加工仿真的核心流程

一个基本的数控加工过程仿真系统的加工流程如下:

(1)选择机床、刀具并设置机床类型和刀具相关参数,服务器端根据机床和刀具类型加载STL文件并绘制三维图形;

(2)选择毛坯并设置参数,服务器端对毛坯进行离散建模;

(3)选择NC文件并上传到服务器端,服务器端根据不同的机床类型进行译码和插补运算,若译码成功,则并生成相应译码文件;如不成功,重复此步骤;

(4)读取一行译码文件,结合步骤2)的毛坯建模的数据和步骤1)的刀具参数进行切削计算;

(5)对切削后的毛坯进行重新绘制;

(6)重复步骤4)和5)直至达到文件尾,仿真结束。

数控加工过程仿真的核心流程如图4所示。

3.4 系统演示

目前,该数控仿真系统实现了五轴AC双转台的机床,平底刀以及方形毛坯的加工过程仿真的功能。图5,图6,图7分别展示了系统启动界面,客户端界面,以及方形毛坯的加工过程。

4 总结与展望

本文基于RMI和JOGL设计了一种基于网络的数控仿真系统,该系统充分利用现代网络和服务器资源进行仿真数据的计算和三维场景渲染,并将绘制结果以图片的形式发送到客户端进行显示。该方式降低了客户端设备的配置要求。同时,该系统继承了Java良好的跨平台特性,实现了不同的系统平台上移植,同时,在设计的时候,充分考虑系统的可扩展性,为日后开发基于“云平台”的数控仿真系统打好了基础。但目前该系统仅实现了AC双转台机床、平底刀和方形毛坯的完整加工过程仿真的功能,其他的功能尚在完善中。

参考文献

[1]S.K.Ong,L.Jiang,A.Y.C.Nee.An Internet-Based Virtual CNC Milling System[J].The International Journal of Advanced Manufacturing Technology,2002.

[2]邱智明.Web环境下的虚拟数控加工系统研究[D].武汉:华中科技大学,2001.

[3]姜永湖.基于Web的虚拟加工技术研究与实现[D].南京:南京航空航天大学,2003.

[4]刘丹,程晓,候德林.一种基于RMI的分布式架构设计[J].计算机应用与软件,2007,24(09),P206-208.

[5]Jan Graba.An Introduction to Network Programming with Java [M].London: Springer-Verlag,2013,P129-149.

[6]Wang Yan,Gao Jian-ling,3D Solid Modeling and Reveal in CNC Simulation Based on the Improved Voxel Model[C].International Conference on Business Computing and Global Informatization (BCGIN),2011,P404-407.

[7]Willam E.Lorensen,Harvey E,Cline,Marching Cubes:A High Resolution 3D Surface Construction Algoritm[J].Computer Graphics,1987,21(04),P163-169.

作者单位

1.贵州大学 计算机科学与技术学院 贵州省贵阳市 550025

2.贵州大学 网络与信息中心 贵州省贵阳市 550025

上一篇:论中职数学教学中“以学生为主体”教学模式的... 下一篇:网络信息技术在高中教育中的应用