基于XNA的绞吸挖泥船施工模拟器设计
2018-05-03钱丽娜
蒋 爽 倪 雁 钱丽娜
1(河海大学疏浚技术教育部工程研究中心 江苏 常州 213022) 2(河海大学机电工程学院 江苏 常州 213022) 3(中交上海航道勘察设计研究院有限公司 上海 200120)
0 引 言
随着经济的发展,大量港口、航道需要疏浚加深,吹填造陆工程也日益增多[1]。绞吸挖泥船因其适用性广、施工效率高等优点,已成为疏浚工程中最常用的施工装备之一[2]。但由于绞吸挖泥船体积庞大,疏浚作业过程复杂,为了保证疏浚作业过程的安全与施工效率,船员在上船前有必要通过绞吸挖泥船模拟器来进行专门的培训,从而使船员提早熟悉疏浚作业过程,正确掌握操控疏浚设备的技能。
在绞吸挖泥船模拟器研究领域中,王伯勇等[3]利用OpenGL开发了绞吸挖泥船模拟器,仿真环境较为逼真,但是利用OpenGL构建仿真场景时算法量庞大,因此不易开发。胡知斌等[4]利用DirectX来完成模拟器的系统开发,虽然在实现仿真环境中音效、图像时较为方便,但是当系统程序复杂时,会降低运行效率。李俊贤等[5]利用UDK来实现挖泥船的人机交互仿真,但是由于UDK难以实现与PLC的通信,因而很难通过操控台来完成人机交互。
针对以上仿真软件存在的不足,本文在3D Studio MAX软件对船体进行三维建模的基础上,采用基于Visual Studio开发环境的XNA(Xbox Next-generation Architecture)对绞吸挖泥船施工模拟器进行设计。XNA是Microsoft Visual Studio集成开发环境的一个扩展[6],可以利用OPC协议实现与下位机PLC的通信。同时又可以对三维软件所建立的模型进行动作交互,从而通过操作台来实现挖泥船的仿真动作。
1 模拟器总体方案设计
绞吸挖泥船施工模拟系统主要包含以下几个部分:操作平台、通信系统、视景系统。总体方案构成如图1所示。
图1 施工模拟器总体方案构成
操作平台面板与真实绞吸挖泥船的驾驶台基本相同,主要由按钮、手柄、指示灯、仪表等元器件组成,各类操作数据通过西门子PLC进行采集、处理。视景系统为操作人员提供一个与真实工况类似的施工环境,包括挖泥船本体和海洋、天空等自然环境。通信系统包括以太网通信、PROFIBUS DP通信等,用于实现操作平台和视景系统之间数据与信息的交流和共享,从而完成视景系统动作的实时刷新。
2 视景系统设计
2.1 挖泥船本体建模
本文以某条绞吸挖泥船为施工模拟对象,实物照片如图2所示。挖泥船部件众多,装配关系复杂,现仅以该绞吸挖泥船最主要的施工机具绞刀建模为例进行说明。
图2 绞吸挖泥船实物
绞刀主体由大环、刀臂、轮毂三部分组成,刀臂形状和轮廓线较为复杂[7]。因此,首先在3DS MAX中右侧工具面板的“标准基本体”选项栏中选择“管状体”,建立两个管状体模型,分别代表绞刀轮毂与大环,两个模型间预留一定空间以用于刀臂摆放。然后,在轮毂和大环之间拉出刀臂的曲线,通过调整样条线上的控制点,使线的形状与实际刀臂曲线的形状相符。当完成其中一条刀臂的制作后,可用相同方法做出其他刀臂。之后选择侧面的若干面,对这些面沿法线方向进行倒角,对倒角的高度和角度进行适当调整,做出刀齿形状,绞刀建模示意图如图3所示。
图3 绞刀模型
在完成绞刀、桥架、船体及上层建筑、主副桩等模型的建立后,使用移动、旋转、对齐等功能将各零部件摆放在正确位置,从而得到最终挖泥船本体的三维模型如图4所示。
图4 绞吸挖泥船模型
2.2 施工环境建模
挖泥船的施工环境主要包括天气和海洋两大部分。其他仿真软件制作雨景时,往往在软件中预先封装雨景效果代码,从而通过直接调用实现雨景效果,但是这样的雨景效果形式固定,仿真环境较为单调。因此,本文在XNA中利用粒子系统技术构造了雨、雪天气情景。由于雨景和雪景均基于底层代码编写,所以可以通过修改粒子数目等参数模拟多样雨景、雪景,从而使得所建立的施工场景更为丰富灵活[8]。
在编写雨景代码时,为了提高程序的可读性与条理性,将雨景粒子系统封装成了Particle System of Raining类,并将雨景中的雨点粒子封装成了Particle of Raining类。在主程序的Update()方法中实时调用雨景粒子系统类中Update()函数来实时更新雨点粒子系统。最后在主程序的Draw()方法中调用雨景粒子系统类中Draw()函数来进行实时渲染。实现流程如图5所示。
图5 雨景实现流程图
此外,为了提高海洋环境的逼真程度,本文利用HLSL语言编写海洋场景的.fx文件,并且在XNA中通过创建Effect类来处理.fx文件中的代码。再在XNA中利用Draw() 函数来实现海洋场景的渲染。具体的实现过程和最终海洋场景的效果图分别如图6和图7所示。
图6 海洋场景实现流程图
图7 海洋场景图
3 操作平台设计
操作平台主要由左、右操控台,前方疏浚仪表台和PLC控制系统组成。设计操作平台时,首先要对台面的元器件进行选型、安装。元器件选型时主要考虑施工的安全性、便捷性和舒适性,即元器件的颜色是否醒目,位置是否合理,尺寸与形状是否符合人体力学等。最终实体如图8所示。
图8 模拟器操控盘台实物图
由于操作台共有三台独立的柜体组成,因此PLC控制系统采用主-从站模式。即其中一台柜子作为主站柜,装有CPU模块,另外两台柜子分别装有两套子站模块。模拟器运行过程中,主站柜与两个从站通过实时的数据传输,将操作状态和仪表数据统一汇总至主站柜CPU,再由主站柜统一和上位机视景系统进行通信,才能满足整个模拟器系统的运行要求。
主站和从站之间通信网络基于西门子PROFIBUS-DP通信协议进行构建。PROFIBUS协议是一种开放的、不依赖设备生产商的现场总线标准,信号传输速度可在 9.6 kbaud~12 Mbaud之间选择[9]。连接在PROFIBUS网络上的站点按照一定的地址顺序组成一个逻辑拓扑环。逻辑令牌在主站之间传递,主站在拥有逻辑令牌期间可以对任何一个从站发送命令或者读取数据。
为了将模拟器操作台中手柄、按钮、旋钮等物理信息数据上传至XNA中以实现挖泥船动作的仿真,需要将PLC控制系统与OPC服务器进行通信连接[10]。连接的方式是利用PLC主站315-2DP的MPI接口与上位机的CP5611通信卡来实现的,所采用协议为西门子PLC专用的MPI协议。MPI通信需要在PLC组态时进行设置。首先在Station Configuration Editor的一号槽与三号槽中分别添加OPCServer与CP5611,同时设置CP5611的属性。Station Name命名为MPIOC。在STEP7中插入SIMATIC PC Station,要将PC Station的名称改为与Station Configuration Editor中Station Name相同的名称。模拟器PROFIBUS和MPI通信网络的组态如图9所示。
图9 模拟器PROFIBUS和MPI通信网络的组态
4 施工模拟器的人机交互设计
视景系统和操作台的设计完成后,即可在XNA中进行挖泥船的动作仿真。挖泥船的动作大致可以分为平移、旋转以及两者复合运动这三种类型。为了实现挖泥船在XNA中的运动,需要利用世界变换矩阵来完成。世界变换是指三维模型从本地坐标系转换到世界坐标系,这种转换实际上就是三维模型的运动与变形[11]。在使用3DS Max进行挖泥船三维建模时,首先在3DS Max中为模型设定了一个坐标系,也就是本地坐标系。在XNA中为了完成挖泥船的平移和旋转等运动,需要通过XNA中的平移变换矩阵和旋转变换矩阵将其转换到世界坐标系,从而完成相应的运动。
在实现挖泥船动作仿真时,操作人员首先通过操作模拟器面板的按钮、手柄等器件来发出相应的电压量等物理信号,并通过PLC控制系统来进行数据的实时采集。根据挖泥船中运动部件的实际动作量程,在CPU中进行相应的数值转换并通过OPC通信协议将数据传入至XNA中。在XNA中定义相关运动部件的骨骼、初始矩阵以及平移量等初始信息后,根据所获取的部件变量和动作数据的状态,通过改变旋转变换矩阵、平移变换矩阵等实现挖泥船部件的运动。具体流程如图10所示。
图10 挖泥船仿真动作的实现原理流程
最终完成的绞吸挖泥船施工模拟器的总体实物如图11所示。
图11 绞吸式挖泥船仿真总体实物图
5 结 语
本文在通过3DS Max建立绞吸挖泥船模型及其骨骼系统的基础上,利用XNA软件进行了视景系统的开发,虚拟出了雨、雪天气以及海洋场景,并且进行了模拟器操作平台的设计。通过OPC服务器和MPI通信网络,实现了模拟器上、下位机的通信。最后在XNA与STEP7软件中编写了挖泥船动作的相关程序,实现了施工模拟器的人机交互仿真。
本文所研制的模拟器已投入使用,系统运行较为流畅,仿真效果良好。同时也可为耙吸挖泥船施工模拟器的设计提供新思路。
[1] 倪福生,赵立娟.绞吸挖泥船疏浚仿真研究[J].系统仿真学报,2012,24(11):2271-2272.
[2] 崔家泰.绞吸挖泥船节能减排技术的发展与应用[J].中国建材,2017(4):130-131.
[3] 王伯勇,倪福生.OpenGL在挖泥船疏浚仿真中的应用[J].江苏船舶,2005,22(4):10-11.
[4] 胡知斌,薄华.绞吸式挖泥船仿真训练系统的设计及实现[J].上海海事大学学报,2011,32(3):64-67.
[5] 李俊贤,倪福生.基于UDK的绞吸式挖泥船操作仿真[J].计算机与现代化,2014(1):55-57.
[6] Petzold C.Microsoft XNA Framework Edition:Programming for Windows Phone 7[M].Redmond: Microsoft Press,2010.
[7] 宋振浩.绞吸式挖泥船绞刀机构液压系统设计及仿真[D].集美大学,2015.
[8] 薛非,张荣国.基于粒子系统的雪景模拟算法研究与实现[J].计算机与数字工程,2011,39(6):11-14.
[9] 周华.基于CP5611的WINCC与PLC通讯研究[J].自动化与仪器仪表,2012(3):43-44.
[10] 邹益民.基于OPC的MATLAB与组态王实时通讯在过程控制实验装置中应用[J].自动化与仪器仪表,2014(10):34-36.
[11] 杨关胜,栗俊霞.精通XNA图形与游戏程序设计[M].人民邮电出版社,2012:67-70.