, ,
( 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