孙卓晟 彭来湖 倪利明 胡旭东
摘 要:由于目前C/S架构的基于虚拟现实技术的动力环境监控系统模块之间耦合度高,开发调试工作量大。针对这种情况,提出一种基于虚拟现实技术的机房动力环境监控系统设计方案。通过3dsMax进行设备建模,并用Photoshop构建贴图;在Unity3D上导入模型和贴图搭建虚拟机房场景;使用Qt开发客户端与服务器端程序,并通过TCP/IP协议实现虚拟场景与客户端控制界面的交互;最终完成整个系统的开发。经测试表明:设计方案能够降低系统各部分的耦合度,减少开发调试的工作量。为基于虚拟现实技术的动力环境监控系统的开发提供了一些参考。
关键词:C/S架构;虚拟现实技术;动力环境监控系统;Qt
中图分类号:TP311.5 文献标识码:A
Abstract:Due to the high degree of coupling between the modules of the virtual reality technology-based power environment monitoring system of the current C/S architecture,the development and debugging workload is large.Aiming at this situation,a design scheme of the engine room dynamic environment monitoring system based on virtual reality technology is proposed.This paper makes model for devices with 3dsMax and builds textures with Photoshop;imports models and textures on Unity3D to build virtual room scenarios;uses Qt to develop client and server programs,and achieve interaction between virtual client and client control interfaces via TCP/IP protocol.Thus the final development of the entire system was achieved.Tests show that the design scheme can reduce the coupling degree of each part in the system and reduce the workload of development and debugging.This paper provides some references for the development of a dynamic environment monitoring system based on virtual reality technology.
Keywords:C/S architecture;virtual reality technology;power and environment monitoring system;Qt
1 引 言(Introduction)
机房动力环境监控系统是一种对机房动力、环境、消防等设备的数据进行实时集中监控管理的系统。机房工作人员可以通过系统实时查看机房设备的运行情况,同时也能通过短信、语音、邮件等方式告知机房管理人员设备报警情况以达到远程监控的目的。目前,二维机房动力环境监控系统仍然占有主要市场。其设备数据大多是以图表的方式展现给用户。虽然能直观地展现参数趋势,但是发生设备报警或者需要对设备参数进行调整时则很难马上确定设备的具体位置,给机房管理人员带来极大的不便。
虚拟现实通过各种感官作用于用户,使用户产生身临其境的感覺。随着虚拟现实技术的逐渐成熟,二维机房动力环境监控系统纷纷向虚拟现实机房动力环境管理系统转变。虚拟机房场景可以将多源信息融合在一起,直观地向用户展示各种机房设备的实际运行情况,同时交互式的三维动态视景和设备的实体行为系统仿真也能使用户更加高效地对机房设备进行管理[1-4]。文献[4]中指出C/S架构的基于虚拟现实技术的机房动力环境监控系统升级成本较高,过程复杂,需要重新配置整个系统,并且调试工作量较大。因此,本文针对此问题提出了一个设计方案。用于降低虚拟场景界面与客户端、客户端与服务器端之间的耦合度,减少程序的调试量并加快系统的开发速度。
2 系统总体方案设计(System design)
2.1 系统需求分析
机房负责大量的数据储存与处理,并且365(天)×24(小时)不间断运行,所以对于数据中心机房动力与环境设备的监控就显得至关重要。机房动力环境监控系统需要实现的功能有:
(1)动力设备监控(如:UPS、配电柜等);
(2)环境设备监控(如:空调系统、新风系统、温湿度、漏水、新风机等);
(3)消防监控(如:消防控制器、烟感探测器等);
(4)安防监控(如:门禁系统、视频监控系统等);
(5)人员管理。
虚拟现实机房场景需要根据实际机房结构以及设备的具体位置制作。其主要功能有设备的实时数据的显示、当前设备报警的显示,以及一些人机交互的功能(如:视角切换、设备类数据显示切换、自动巡检等)。
2.2 系统架构设计
基于虚拟现实技术的机房动力环境管理系统采用C/S架构(即客户端/服务器端架构),系统具体可分为:用户层、业务逻辑层、数据层,如图1所示。
用户层表现为可交互的虚拟机房场景,通过TCP/IP协议向业务逻辑层传递用户的业务请求,如设备参数修改、历史信息查询等;当接收到业务层返回的数据时,系统将这些数据实时地显示在虚拟机房的实际位置上。
业务逻辑层表现为整个系统的数据处理中枢并且连接着用户层与数据层。业务逻辑层包含了:服务器、系统功能模块、数据采集与处理模块。该层的主要功能是根据用户层返回的业务请求调取数据层中的数据并处理成用户层需要显示的数据形式返回给用户层以实现不同的场景功能(查询历史数据、显示机房设备参数状态等),以及处理数据采集模块采集上来的数据,根据数据层的需要处理后存入到数据层中。
数据层主要包含了机房设备的配置信息、虚拟机房模型信息、用户管理信息、历史数据信息等。数据层采用了流行的MySQL数据库作为数据管理系统。使用MySQL数据库能大大降低开发的难度,提高系统的兼容性,保证系统运行的稳定性[5,6]。数据层通过MySQL数据库驱动与业务逻辑层进行交互。并根据业务层的不同业务请求,返回指定的数据参数。
客户端显示界面和数据采集模块由Qt开发平台(跨平台C++图形用户界面应用程序开发框架)开发,由于Qt拥有直观、强大的API[7],所以对于MySQL数据库的操作便捷,开发方便。虚拟机房场景界面不直接向数据库获取数据,而是通过TCP/IP协议与客户端显示界面交互,通过这种方式减少虚拟机房场景需要获取及处理的设备数据,简化虚拟机房场景界面程序,提高虚拟场景界面的显示效果和操作体验。
2.3 开发流程设计
基于虚拟现实技术的机房动力环境管理系统可分为两部分分别是客户端(虚拟机房场景界面和客户端控制界面)和服务器端(数据采集模块)。具体开发流程如图2所示。
(1)客户端开发流程
①采集各种机房设备的实物图和实际尺寸。
②利用3dsMax建模软件对数据中心机房墙体、机柜、门体、精密空调、温湿度、电量仪等设备进行建模。根据建好的设备模型的UV图,用Photoshop制作模型贴图。
③将制作好的模型导入Unity3D游戏引擎中,贴上制作好的贴图。根据实际的数据中心机房构造搭建虚拟机房场景。
④编写与模型对应的C#脚本以实现界面人机交互、数据显示以及报警信息显示等功能。
⑤根据与虚拟场景之间的通讯,用Qt开发客户端控制界面程序,并测试客户端运行情况。
(2)服务器端程序开发流程
①根据整体系统的功能设计数据库结构。
②根据设备的通讯协议使用Qt开发服务器端程序(数据采集模块)。
最后,测试客户端与服务器端整体系统的运行情况,并完善人机交互与数据显示功能,最终完成基于虚拟现实技术的机房动力环境监控系统的开发,打包发布系统。
3 动力环境监控系统实现(Power environment monitoring system implementation)
3.1 机房场景虚拟实现
(1)机房设备三维建模
机房设备模型的建立使用的是3dsMax建模软件。3dsMax是一种以三维动画技术作为基础的图像渲染和制作软件。当前,虚拟场景建模中3dsMax的使用最为广泛,例如在游戏制作、动漫制作、建筑设计等广泛领域内都得到了广泛的应用[8]。
由于3dsMax中的单位长度与Unity3D中的单位长度不同,所以在用3dsMax搭建机房设备与环境模型时需要注意尺寸转换的比例。这里3dsMax在建模时需要选择厘米(cm)为单位,这样模型在Unity3D中尺寸长度1就为1厘米。考虑到数据中心机房虚拟场景在加载时需要加载的设备和环境的数量,若模型的细节制作的比较细致,那么每个模型的大小会相对比较大,界面加载的时间相应的也会变得很长,同时对系统的CPU和显卡的负担也会比较大,在做界面操作的时候很容易出现卡顿的现象,用户体验就大打折扣。因此,在界面中有动画动作的设备(如:机柜、冷通道移门等),按照实际尺寸用长方体等多面体来表示,尽量减少模型的细节,如图3(a)所示;部分不需要在界面有动画动作的设备(如:UPS、精密空调、服务器、工控机等)按照实际尺寸采用长方体代替表示,同时也尽量减少模型的细节,如图3(b)所示。
(2)机房设备真实化立体呈现
机房设备建模完成以后,模型外表并不美观,同时有些形状類似的模型甚至无法仅从外表做区分。所以机房设备模型贴图的制作就显得很重要。
首先将建立的模型通过UV展开,展开模型时需要注意不破坏模型结构的同时要利于贴图的绘制,还要最大限度利用UV坐标格,尤其注意要在模型隐蔽的地方进行UV接缝的拆分[9]。如图4所示。拆分完之后需要用棋盘格来检测UV缩放比例是否正确,即判断棋盘格的形状是否有太大的扭曲[10]。
然后在Photoshop中根据导出的UV位图绘制设备模型的贴图。在Photoshop中导入UV位图后将实物图片拆分填入,注意接缝处的纹理衔接。贴图绘制如图5所示。
(3)虚拟机房场景搭建
数据中心机房虚拟场景的搭建使用的是Unity3D游戏引擎。Unity3D具有强大的跨平台开发能力与绚丽的3D渲染效果。目前Unity3D已经可以横跨25个主流游戏平台,并且应用领域相当广泛,在建筑、医疗、工业、娱乐、虚拟现实、动画、电影和艺术等行业都可以看到Unity的身影[11]。
搭建虚拟机房场景时,首先Unity3D场景中先根据机房的平面图绘制机房地板和墙体,地板和墙体也同样使用贴图的形式;然后需要将3dsMax导出的FBX文件格式的模型,以及模型对应的贴图导入Unity3D项目中;然后将贴图制作成材质球加载到模型;然后将设置好的模型创建预设,这样就简化了模型的使用;最后根据机房设计图纸将模型放置到相应位置就完成了虚拟机房的场景搭建。如图6所示。
3.2 服务器端设计
服务器端程序主要实现对机房动力设备、环境设备、消防设备、安防设备的数据进行实时采集,根据设备通讯协议解析采集的数据,并保存到数据库中指定的数据表中,等待被客户端程序查询。
服务器端程序的开发方式为主程序加动态链接库的形式。动态链接库的功能是解析各种设备返回的实时数据,并分析处理成所需的数据形式,再存储到数据库中。动态链接库只需根据不同设备协议进行修改就能处理不同设备的数据采集。这样的开发方式加快了程序的开发速度。
3.3 客户端设计
客户端由两部分组成分别是虚拟机房场景和客户端控制界面。客户端控制界面主要实现的功能为用户管理、报警设置、历史数据以及与虚拟场景界面的交互功能。虚拟场景交互的功能主要有场景视角切换、设备数据显示切换、报警显示等。客户端界面如图7所示。
客户端控制界面通过TCP/IP协议与虚拟机房场景做数据通讯。根据用户的选择将需要显示的设备实时数据传输给虚拟机房场景,虚拟机房场景就能根据指令以特定视角展示设备数据。如图8所示客户端控制界面向虚拟机房场景发送了查看温湿度设备数据指令,虚拟场景界面则将接收到的温湿度数据以特定的视角实时显示出来。
同样,虚拟机房场景中对设备进行操作时,虚拟机房场景也能通过TCP/IP协议向客户端控制界面获取相应的设备数据。如图9所示在虚拟机房场景中点击UPS设备并显示设备的实时数据。
4 运行调试分析(Running debug analysis)
运行调试测试了虚拟机房交互功能、客户端控制界面与虚拟机房的通讯,以及设备数据获取情况。
虚拟机房交互功能测试是通过鼠标左键右键调整不同的视角查看机房的各种设备,通过点击设备来查看设备的运行情况;客户端控制界面通讯测试是通过点击客户端控制界面上的功能按钮控制虚拟机房场景显示各种设备的位置、运行状态及实时数据;设备数据获取则是通过比对采集到的数据是否与实际设备的数据相同,并测试数据获取的成功率。
经过测试,基于虚拟现实技术的机房动力环境监控系统符合系统的设计要求。
5 结论(Conclusion)
借助Unity3D游戏引擎、3dsMax、Photoshop构建了虚拟数据中心机房场景。通过TCP/IP协议实现虚拟现实场景与客户端控制界面的数据交互,减少了虚拟机房场景需要处理的数据量。通过模块化的方式开发服务器端程序,加快了程序开发的速度。因此降低了虚拟场景界面与客户端、客户端与服务器端之间的耦合度,减少了系统开发和调试的工作量。这种基于虚拟现实技术的机房动力环境管理系统的设计方案为虚拟现实动力环境管理系统的开发提供了一种参考。
参考文献(References)
[1] 张凤军,戴国忠,彭晓兰.虚拟现实的人机交互综述[J].中国科学:信息科学,2016,46:1711-1736.
[2] 顾君忠.VR、AR和MR-挑战与机遇[J].计算机应用与软件,2018,35(3):1-7;14.
[3] 帅明,杨得耀,敖令攀,等.机房动力环境监控系统研究综述[J].软件导刊,2015(3):4-7.
[4] 华磊.基于B/S架构的IDC机房3D监控管理系统的设计与实现[D].重庆:重庆邮电大学,2017.
[5] 甘长春,孟飞.MySQL数据库管理实战[M].北京:人民邮电出版社,2019.
[6] 王芳.网站开发中数据库的管理者——MySQL[J].电子技术与软件工程,2014(16):214.
[7] (加)布蘭切特,(英)萨默菲尔德.C++GUI Qt4编程:第二版[M].北京:电子工业出版社,2013.
[8] 倪烨.3DSMAX在虚拟场景建模中的应用分析[J].无线互联科技,2016(22):142-143.
[9] 尚冰.3D游戏中法线贴图技术的应用[J].科技传播,2014(14):163-164.
[10] 曹瑜,郭立萍,杜红燕,等.卡通风格3D游戏场景设计制作技术[J].软件,2015(3):22-25.
[11] 宣雨松.Unity 3D游戏开发[M].北京:人民邮电出版社,2018.
作者简介:
孙卓晟(1994-),男,硕士生.研究领域:机械电子工程.
彭来湖(1980-),男,博士,讲师.研究领域:智能装备与嵌入式控制技术,智能传感器与仪器仪表,智能制造与车间信息化技术,工业互联网通信.
倪利明(1995-),男,硕士生.研究领域:机械电子工程.
胡旭东(1959-),男,博士,教授.研究领域:现代纺织装备及控制技术,机电控制及其自动化.