APP下载

基于Unity3D的三维远程监视系统中的通信方法研究和实现

2015-12-23李文赫陆剑峰刘艳娇

制造业自动化 2015年24期
关键词:监视系统接收端脚本

李文赫,陆剑峰,刘艳娇

LI Wen-he, LU Jian-feng, LIU Yan-jiao

(同济大学CIMS研究中心,上海 201804)

0 引言

企业在进行生产制造时,往往需要通过软件系统实时监控。一些情况下,现场数据需要进行后续分析、生产场景重现。随着计算机技术的发展,远程监视技术在制造领域中得到了越来越普遍的应用,最终通过仿真分析得到与预期的生产更为接近的实验结果,及时调整决策,实现效益最大化。

目前,远程监视系统的实现有三种方式[1]:

1)采用C/S(客户端/服务器)结构

2)采用B/S(浏览器/服务器)结构

3)C/S结构与B/S结构的混合模式

用户通过系统客户端或者浏览器的方式从计算机等终端完成对现场的监视。在监视系统的数据展示方面,采用三维模式则提供了更直观、形象的用户体验,极大的方便了对工厂生产场景的分析与处理。由于三维可视化的形象性和实时监视技术的必要性,二者的结合越来越广泛[2]。目前三维监视系统多基于专业的开发平台如地球信息领域的GIS平台,或结合三维建模软件、仿真软件和相关编程语言进行开发[3,4]。

本文使用新兴的三维软件Unity3D技术,通过一个实际B/S三维远程监视系统,提出了一种其在生产监视系统中的通信方法。

1 Unity3D监视系统通信方法研究

Unity3D是Unity Technologies开发的一款跨平台的专业游戏引擎,用户可以用它轻松的实现各种游戏创意和三维图形开发。Unity3D具有多平台、通用性强的特点,拥有高度整合且可扩展的编辑器、逼真的物理引擎和动画引擎、低廉的授权成本,诸多特性使其受到广泛的欢迎,它对DirectX和OpenGL进行了高度的优化,其NVDIA、PhysX物理引擎带来逼真的互动体验。在严肃领域方面,NASA推出了基于Unity3D引擎的火星探测模拟;美国海洋暨大气总署采用Unity3D引擎开发了跨平台的数据三维可视化分析工具。Unity3D也越来越多的应用于生产制造的研究中,其出色的三维图形特性方便了生产过程的展示。其中,作为监视系统工具的Unity3D如何通信则是一个重要的环节。

2 Unity3D网络通信方案研究现状

Unity3D有两种成熟的网络通信方案,分别是授权服务器和非授权服务器这两种方案都依赖于在连接着的客户端和服务器之间的数据传递,客户端之间并不会进行实际的连接[5]。

其网络通信有两种重要的方式:远程函数调用与状态同步。远程过程调用是用来调用远程计算机上某个函数的方法。它包括了两个方向,一方面它可以从客户端调用服务器上的某个函数,一方面也可以从服务器调取所有害户端的某个函数或特定害户端的函数。状态同步则被用于在各个客户端中同步不断改变的数据。

目前对于应用Unity3D软件实现三维远程监视系统,尚缺少文献有针对性的论述其通信实现。文献[6]研究了基于Unity3D的手机网络游戏,对游戏客户端与服务器通信场景定义Protocol Buffers游戏协议。文献[7]进行了Unity3D与数据库通信方法的研究,对Unity3D在连接数据库过程中出现的一些问题提出了具体可行的解决方案。文献[8]讨论了Unity3D与HLA通信的中间件技术。采用Unity3D技术实现其通信功能,在不同的应用场景下应有相应适合的方法。对于常用的Unity3D客户端服务器等模式,在实际中并不能将现场端作为一个虚拟且模式化的Unity3D服务器或者是客户端,固有的面向游戏的参数设置也限制了这种方法应用于生产场景以及复杂多样的现场数据传输。本文尝试通过Unity3D软件所支持的C#语言编程结合XML文档和现场OPC软件,成功的设定并传输了复杂多样的现场数据参数,实现了一种Unity3D三维远程监视系统可行的通信方案。

3 基于Unity3D的生产监视系统

系统以实验室的加工生产线为实际模型,该生产线主要器件由待加工物件、加工中心、机械臂、车床、传送装置、货架构成,完成物件的选取、加工、摆放。

使用3DSMAX绘制系统的三维模型,利用其FBX插件将模型资源导入Unity3D,并设置位置信息等属性。使用C#语言编写模型各器件的脚本,将其挂载到相应的器件上,用以控制它们在仿真时的运动。模型的运动信息来自于现场生产线中机械臂等的运动信息,以sqlite数据库形式保存,最后驱动模型运动实现生产线运作的重现。

图1 现场与监视系统联系

4 生产监视系统通信的实现

数据的发送端使用现场计算机与生产线数据总线相联,采用生产线专有的OPC软件采集并保存机械臂等的运动信息数据为sqlite数据库文件,通过软件的数据库模式读取数据库文件并采用UDP协议发送传输。接收端计算机安装有配置好模型和脚本的Unity3D软件,通过网络与发送端计算机联接,一些数据参数则需要相应配置。

4.1 发送端配置

将发送端配置信息写入发送端OPC软件默认路径upconfig.xml文件,包括接收时间、发送时间、OPC变量名、变量类型、变量长度、变量类型、默认值,最后配置好接收端IP地址、端口号。为了将数据跨主机传送到接收端,需要将Unity3D目录下的sockpol.exe文件复制到发送端主机并运行。最后启动OPC程序,等待接收端接收。

图3 OPC软件运行状态

4.2 接收端配置

与发送端类似,设置默认目录下的upconfig.xml文件,包括接收时间、发送时间、OPC变量名、变量类型、变量长度、变量类型、默认值,最后配置好对应的发送端端IP地址、端口号。配置好的xml文件将被Unity3D中的C#脚本DataProvider.cs读取并用来处理接收的数据。

4.3 接收端脚本实现

图4 监视程序主要脚本

Unity3D中的脚本用来控制模型运动和实现数据传输等功能,在编写Unity3D软件的时候,脚本文件被拖拽到对应的模型对象上挂载,当软件运行时实现相关功能。主脚本CControl.cs挂载到Unity3D主摄像机下,在监视界面显示启动连接的开关。DataProvider.cs脚本包括stopcollect、startcollect、thpReceiveUdpData等方法。启动开关置为开调用startcollect方法并启动thpReceiveUdpData从发送端收集数据并根据3.1节中的xml的变量配置将数据赋予DicReceiveVariableValue,在Unity3D运行的每次刷新中被机械臂挂载的脚本RobotA.cs读取,驱动模型运动到对应的位置。

4.4 软件的运行状态

软件运行时,监视界面于左侧显示数据连接开关,选中时即为开状态;右侧指示连接状态、画面帧数以及连接信息。随着数据的读取,监视模型中的机械臂会随之运动,实现现场场景的重现。

图5 监视系统运行状态

5 结束语

三维远程监视作为一个研究热点,其实现离不开基础的通信模块。本文结合项目实际,基于Unity3D构建了三维远程监视系统,利用软件所支持的C#语言灵活的配置了复杂多样的数据传输,尝试并实现了现场和客户端的通信,使系统较为逼真的展现生产线运行状态,为现场数据的后续分析和重现提供了可行的办法。

[1]何岩.基于AJAX/SVG的EMS Web监视系统的研究[D].西南交通大学,2008.

[2]李勤,佟巍.三维可视化技术在实时监视系统中的应用[J].西安工程大学学报,2008,22(1):64-66.

[3]王飞,赵建华.国家海域动态监视监测三维展示系统的设计与实现[J].辽宁师范大学学报:自然科学版,2014,37(4):578-584.

[4]章勇华,杨志强,李平,等.基于SIMULINK和VR技术的三维监视软件开发[J].系统仿真学报,2009(18):5713-5715.

[5]Unity Technologies.Unity 4.X从入门到精通[M].中国铁道出版社,2013.

[6]陈俊锋.基于Unity3D的跨平台手机网络游戏的研究与实现[D].中山大学,2013.

[7]张利利,李仁义,李晓京,等.Unity3D与数据库通信方法的研究[J].计算机技术与发展,2014,24(3):229-232.

[8]张毅.基于HLA和Unity3D的视景仿真技术研究与应用[D].西安电子科技大学,2014.

猜你喜欢

监视系统接收端脚本
酒驾
基于扰动观察法的光通信接收端优化策略
基于多接收线圈的无线电能传输系统优化研究
安奇奇与小cool 龙(第二回)
北极监视系统
视频监视系统新型终端设备接入方案
手机无线充电收发设计
创新的摄像监视系统取代车外和车内后视镜
被动成像广域空中监视系统综述
电视电子节目指南的原理及实现方法