, ,
( 1. 大连海事大学 航海学院, 辽宁 大连 116026; 2. 辽宁省航海安全保障重点实验室, 辽宁 大连 116026)
基于B/S的GMDSS仿真系统设计与实现
赵梁滨1,2,杨家轩1,2,尚斯年1,2
( 1.大连海事大学航海学院,辽宁大连116026; 2.辽宁省航海安全保障重点实验室,辽宁大连116026)
为提高全球海上遇险与安全系统(Global Maritime Distress and Safety System, GMDSS)实操培训效率,克服传统C/S的GMDSS模拟器客户端不灵活带来的硬件资源浪费及管理不便等缺陷,提出采用B/S架构开发GMDSS仿真系统。对GMDSS进行模块化的功能需求分析后,在“MEAN”的JavaScript语言框架下完成对GMDSS前端视图逻辑、后台网络通信及实时音频功能的研发,搭建基于B/S的GMDSS模拟仿真平台。通过实践检验,该仿真系统可满足GMDSS实操的教学要求,能突破学生仅能在实验室学习的限制。系统运行可靠、稳定,具备灵活自由的应用模式。
船舶; 水路运输; GMDSS培训; B/S架构; 系统仿真
Abstract: A new B/S-based Global Maritime Distress and Safety System (GMDSS) simulator is developed which uses less hardware and is easier to operate, yet, provides higher performance compared with conventional GMDSS training simulation systems based on C/S. The simulation system is built in a Java Script framework named MEAN. The development is preceded by careful analysis of the functional requirements in a modularized way, and focused on front end, background communication and function of real-time voice. The B/S-based system allows students to practice outside the laboratory where the simulator is located. Training practice proves that the new simulation system can satisfy teaching needs, and has the advantages of high stability and flexibility.
Keywords: ship; waterway transportation; GMDSS training; B/S; system simulation
为提高海上遇险时的搜救效率、提供更为便捷的安全通信,国际海事组织(International Organization Maritime, IMO)于1979年起草《海上搜寻救助公约》,并呼吁发展全球海上遇险与安全系统(Global Maritime Distress and Safety System, GMDSS)。目前,GMDSS已在卫星通信技术和计算机技术的基础上建立成为以卫星搜救系统和地面无线电系统为核心的成熟体系。[1]
《STCW公约》马尼拉修正案中规定,必须对GMDSS无线电操作员进行培训、适任评估和发证,培训过程中所使用的设备既可以是经相关机构认证的真实设备,也可以是相应的GMDSS模拟器。教学实践中,真实的GMDSS设备价格昂贵、维护成本高,且大部分通信功能无法实现,不仅会造成资源浪费,还可能产生误报警等干扰。因此,价格低廉、易于管理、可及时更新的GMDSS模拟器已在世界范围内得到广泛应用。[2]
自20世纪90年代以来,世界各国先后开发出多种不同性能的GMDSS模拟器,如英国TRANSAS公司研制的功能完备的TGS-5000型模拟器及国内大连海事大学研制的V.Dragon型大型操纵模拟器等。目前已有的模拟器主要以局域网为基础,依托多媒体教室PC硬件运行桌面模拟系统实现仿真。但是,碍于C/S架构,传统的模拟器必须将软件与多媒体教室绑定在一起,这限制了用户使用的时间和空间。对此,借鉴“互联网+”思想,以SAILOR 6000系列设备为研究对象,基于B/S架构设计开发GMDSS仿真系统,将程序部署在服务器上,用户可通过网络随时随地进行模拟操作。轻便的客户端概念将模拟器搬出实验室,不仅可以打破时空限制,大大提升教学效率,同时还能将维护的对象数量压缩到仅剩后台服务器,易于管理。[3]该系统采用全Javascript环境的“MEAN”开发框架。
GMDSS船用设备包括INMARSAT-C船站、INMARSAT-F船站、甚高频(Very High Frequency, VHF)、中频/高频(Medium Frequency/High Frequency, MF/HF)、窄带直接印字电报(Narrow Band Direct Printing, NBDP)、航行警告电传(Navigational Telex, NAVTEX)、紧急无线电示位标(Emergency Position Indication Radio Beacon, EPIRB)及搜救雷达应答器(Search and Rescue Radar Transponder, SART)等。[4-5]不同的设备既具有其独特的功能,又具有与其他设备相同的功能。例如,大部分设备均具有报警功能,而NBDP终端则独具实时电传通信功能。为提升开发效率及代码的复用性和稳定性,研究总结各设备功能的区别及共性,并据此整合开发数字选择性呼叫(Digital Selective Calling, DSC)、语音、文本信息交互和NBDP交互等4大模块及具有仿真系统中的地面站、海岸电台和陆地网络协调站等岸基功能的教师端模块。[6]
1.2.1DSC模块
DSC终端是GMDSS地面通信系统中的一个重要终端设备,与MF/HF和VHF相连,主要用于正式通信前的沟通,具有遇险报警、转发和确认功能。
经测试真机设备(SAILOR VHF 6222和SAILOR MFHF DSC 6300),VHF和MF/HF 的遇险报警、转发及常规DSC呼叫发射前需在编辑界面下完成相关内容的设置(见表1)。每种功能都有其独立的逻辑,其中单船呼叫的功能逻辑流程见图1。
1.2.2文本信息交互模块
文本信息交互主要体现在相关数据传输业务及系统基本信息交互机制的实现上。例如,INMARSAT-C站的主要通信业务包括电传、数据和E-mail,不同业务根据对应的目标地址码完成通信交互(如:文本传真的地址码由电话国家码、地区码和用户码构成;而两船通信的地址码则由洋区码和IMN构成)。此外,其他设备之间的非语音交互实际上均是由文本交互模块发送文本消息信号及内容来完成的,如各设备的报警功能、EGC(Enhanced Group Calling)电文的广播及海上安全信息的播发等。
表1 VHF通信设置内容
图1 单船呼叫逻辑流程
根据以上对功能模块的分析构建GMDSS仿真系统模型,以全Javascript环境的“MEAN”( MongoDB,Express.js,AngularJS, NodeJS)为开发框架设计开发基于B/S的GMDSS仿真模拟系统。教练员通过教师地址和端口访问教师页面模拟实现学员控制管理、海岸电台和搜救协调中心的角色扮演;用户利用浏览器,通过学员地址和端口访问学员界面模拟实现其他相关GMDSS终端设备、船舶电台和陆地电传用户的角色扮演。系统不再具有严格的物理划分,所有接入的设备既是教师端也是学生端,只是访问的地址和端口不同。
用户注册进入系统时会得到一套自动分配的数据库内置的船舶信息数据和设备识别码,用来在模拟交互过程中寻址匹配目标用户。数据库内置的船舶信息数据的数量可由教师根据各批次使用人数及使用设备的具体情况在教师界面上调整,使得任何同一使用空间及时间内的各个用户的船舶识别身份信息是唯一的,并与其使用的设备终端绑定。
该系统采用B/S式的星形拓扑结构,具有表示、处理和数据等3层结构布局来支撑Web程序(见图2)。
图2 GMDSS仿真系统网络布局
1) 表示层为浏览器,只承担网页信息的显示及以超文本格式实现信息的浏览和输入,不进行任何业务逻辑的处理。在实际应用中,该层为用户的使用终端(包括PC机、手机等)。
2) 功能层为服务器,负责处理业务逻辑和页面存储,接收客户端的任务请求,并根据程序逻辑执行相应的事务处理命令。
3) 数据层有数据库服务器承担数据处理逻辑,其接收服务器提出的数据操作请求之后完成数据查询、修改等工作,并把数据结果提交给服务器。
在B/S结构中,客户端为轻便的浏览器,这使得该仿真系统也能在局域网无线网络环境下使用。
2.3.1系统前端的仿真实现
虽然整个仿真系统的功能较为繁杂且代码规模庞大,但经逻辑范围切分,可达到模块化处理的效果,且大量公共逻辑对代码的复用性有较高的要求。此外,为了使后期维护方便、功能模块之间不会相互影响,采用AngaularJS框架的模型-视图-控制器(Model View Controller, MVC)前端开发模式,其中:Model指程序中的数据模型;View指向用户展现的界面;Controller指程序应用中的逻辑控制器。三者的代码既能清晰分离,又可根据需求灵活调用。[7-8]
(1) Model作为数据信息储存的容器,能驱动浏览器页面的显示,并随程序逻辑而改变,是整个动态反馈系统的根源载体。整个系统的数据结构由3层数据模型构成,按照层级由高到低分别存储船舶信息数据、用户信息数据及各设备自身的相关数据。
① 船舶信息数据是整个系统的基层数据,包含待分配给用户的船舶经纬度、船名及MMSI等;
② 用户信息数据与系统授权管理有关,包含由用户授权后获得的用户名、密码及班级等;
③ 各设备自身的相关数据包含各种实现功能仿真所需的数据,如设备当前所处的通信状态、需交互的文本信息内容及设备内置的存储单元(通信录、电话本等)等。
(2) View是仿真系统中最前端的部分,能以最直观的方式体现仿真的逼真度。该系统大量运用CSS这种样式设计语言,完成对GMDSS设备外观和操作界面像素级别的样式修饰,还原逼真,效果见图3。
图3 C站的主界面
(3) Controller是仿真系统中业务逻辑的核心部分,与视图及数据模型双向交互,通过充分发挥AngularJS中Controller的特性即可实现GMDSS的模块化开发。
图4为系统模块化实现示意,不同的设备代表不同的视图,各个设备均由不同的控制器控制,赋予逻辑。不同的控制器可根据需要选择不同的数据模型,而若控制器中存在重复性逻辑,则将其抽出写入service中,由需要该逻辑的Controller调用,从而实现复用。由此,通过剥离数据的Model、区域逻辑控制的Controller和公共服务集合service等3个途径即可完成系统前端的模块化编程及仿真。以实现INMARSAT-F站中的E-mail功能为例,代码如下:
图4 系统模块化实现示意
(1) 在router中,将E-mail的html视图界面与相对应的控制器f-emailCtrl绑定。
templateUrl: ' templates/f/email.html',
controller: ' f-emailCtrl'
(2) 在E-mail的html代码中,通过ng-model标识符,将输入框的内容存入INMARSAT-F站的数据模型中。
class="form-control" ng-model="message">
(3) 利用ng-click标识符将send按钮与点击事件函数绑定在一起,而send()函数的逻辑则在控制器中编写。
(4) 利用ng-repeat循环输入指令符将E-mail信息从INMARSAT-F站数据模型导出的数组中全部输入。
(5) 在AngularJS中,控制器利用灵活的$scope来完成编写。$scope既是一个普通的JS对象(Plain Old JavaScript Object),同时还是一个表达式的作用域。
.controller('f-emailCtrl', ['$scope', '$state', 'fDataModel', 'fDataService', 'socketService',function($scope, $state, fDataModel, fDataService,socketService) {
$scope.fData = fDataService.fData;
$scope.globalData =fDataService.globalData;
if($scope.fData.mails == null){
$scope.fData.mails = [];}
$scope.send = function(){
socketService.socket.emit("newMessage",{device:"fs",message:$scope.message,sender:$scope.globalData.email});
alert("发送成功!");}}])
首先,注入控制器中需要使用的对象、数据模型及服务,代码中INMARSAT-F站的E-mail控制器注入了$scope对象、INMARSAT-F站的数据模型及通信交互服务。其次,根据业务逻辑获得E-mail环境下需要的INMARSAT-F站信息及用户邮箱信息。最后,编写该作用域下的send()发射输入框文本信息功能的代码。
2.3.2通信交互的仿真实现
GMDSS中包含大量面向对象的连接通信(例如DSC单船呼叫等),因此该系统选择以面向连接、可靠、有序的方式发送数据的TCP协议作为通信协议实现socket网络通信。实际开发中运用socket开发框架socket.io进行网络编程。
GMDSS的信息交互基本上分为以下2种:
(1) DSC模块中的ALL SHIP呼叫及报警这些广播式的通信;
(2) 有目标地址的单船或单用户通信,如电子邮件、电传等。
该系统的所有交互均采用发送方广播、接收方判定信息并选择性接收显示的机制(见图5)。经测试,该机制可在大规模的网络环境下保持通信畅通、稳定。以下为实现INMARSAT-F站邮件交互功能的代码。
图5 系统通信接收机制
在“2.3.1”节Controller里的send()中完成信息的发射,实际上是利用socket.io封装好的语句建立socket连接发射一个名为“newMessage”的事件,同时还包含一个事件内容对象。
socketService.socket.emit("newMessage",{device:"fs",message:$scope.message,sender:$scope.globalData.email});
而该事件封装在socketService中,以达到广播的目的。
exports.newMessage = function (socket,obj) { socket.broadcast.emit('newDeviceMessage',obj); };
在f-service中,完成对作为INMARSAT-F站接收端的socket通信服务的实现。
socketService.socket.on('newDeviceMessage',function(data)
{if(data.device==' fs'){
if(data.hasOwnProperty("to")){
$if(data.to==self.globalData.email){
$rootScope.$apply(function(){self.fData.mails.push(data);});}}}}
接收端监听“newDeviceMessage”事件,一旦监听到该事件,判断内容信息对象data是否为INMARSAT-F站设备间交互的信息、是否具有目标地址及目标地址是否为本终端的邮箱地址。若符合条件,则推入数据模型中;否则,编辑提示错误信息,再次通过socket回发给服务器。
2.3.3语音功能的仿真实现
仿真系统中涉及语音的部分采用网页实时通信(Web Real-Time Communication, WebRTC)技术实现。WebRTC是一个基于浏览器的实时多媒体通信技术,旨在使Web浏览器具备实时通信能力。这里对该技术封装好的JavaScript API进行开发,为VHF,MF/HF和INMARSAT-F站提供即时通话对讲功能,搭建完备的实时音频Web应用,更加贴近真实设备。
应用层面上,该系统相较于传统的C/S架构模拟器拥有更加灵活、轻便的客户端,可在服务器网络覆盖的范围内自由使用,不受时空限制。若将该系统部署在连接互联网的服务器上,则受训人员可通过互联网随时随地(家、有卫星网络的船上)进行自学,大大缩短培训周期。此外,在培训机构的教学实践中应用该系统时,学员只需接入部署有该系统程序的服务器网络(局域网)即可利用随身设备(笔记本电脑、手机、平板电脑)进行学习,节约了教学成本,扩展了教学能力。图6为模拟系统实物图。
图6 模拟系统实物图
维护层面上,该系统继承了B/S的优点,无论用户的规模有多大,都不会增加维护升级的工作量;整个系统需维护、更新的对象数量被压缩到只有后台服务器一处,易于管理。此外,还可根据需求将服务器与互联网相连进行远程维护、升级和共享,不仅节约了成本,同时也为跟随GMDSS真机设备的更新发展提供了便利。
完成GMDSS功能的模块化分析,设计开发基于B/S架构的仿真模拟系统。该系统已在GMDSS通用操作员的培训中应用,实践证明其可达到教学使用的目的,仿真度高、稳定。未来在优化升级该系统时,将围绕提高B/S程序的安全稳定性、开发更多互联网应用的接口等方面不断进行完善。
[1] 刘伯森,黄耀谅. GMDSS通信设备[M].大连:大连海事大学出版社,2005.
[2] 肖芳兵,尹勇,金一丞.船用窄带直接印字电报系统仿真[J].中国航海,2009, 32(3):10-15.
[3] 董英茹.简谈AngularJS在下一代Web开发中的应用[J].软件工程师,2015,18(5):30-31.
[4] 王应桥.功能完备的航海模拟器中GMDSS模块的研究[D].大连:大连海事大学,2005.
[5] 宋浩然. GMDSS遇险通信模拟系统的研究与设计[D].大连:大连海事大学,2010.
[6] DET NO RSKE VERITAS.Standard for Certification of Maritime Simulator System[R]. DNV Press,2000.
[7] GREEN B, SESHADRI S.用AngularJS开发下一代Web应用[M].北京:电子工业出版社,2013.
[8] CHODOROW K, DIROLF M. MongoDB权威指南[M].北京:人民邮电出版社,2011.
Design and Implementation of GMDSS Simulation System Based on B/S
ZHAOLiangbin1,2,YANGJiaxuan1,2,SHANGSinian1,2
(1. Navigation College,Dalian Maritime University, Dalian 116026, China ;2. The Key Laboratory of Navigation Safety Guarantee Liaoning Province, Dalian 116026, China)
1000-4653(2016)04-0061-05
U676.8
A
2016-04-21
国家高技术研究发展计划(“八六三”计划)课题(2009AA045003);中央高校基本科研业务费专项资金(3132015009)
赵梁滨 (1992—),男,福建厦门人,博士生,从事交通运输工程研究。E-mail:vszlb@126.com