席志成,李 海,張文亮
(武漢船用機械有限責任公司,武漢 430084)
針對安裝于遠洋船舶的無人值守艙室中的設備,設計了一種基于B/S(Browser/Server)架構的設備遠程健康監(jiān)測系統(tǒng)。此系統(tǒng)依托設置在艙內的攝像機為使用者提供實時視頻圖像監(jiān)控功能,依托設置在設備內部的健康信息傳感器提供健康數(shù)據(jù)采集監(jiān)控功能,以滿足駕駛臺船員和設備服務商遠程掌握艙室現(xiàn)場實時狀態(tài)的需求。
C/S(Client/Server)架構在軟件解決方案中應用較廣,其特點是客戶機前端作為用戶人機交互界面,在用戶界面接收指令后直接向服務器后端發(fā)出請求,服務器作為后端負責數(shù)據(jù)的存儲、管理、查詢,負責根據(jù)前端的要求返回指令結果,系統(tǒng)整體呈上述兩層結構。
在遠洋船舶設備領域,船員和設備商通常來自不同國家,如果采用C/S系統(tǒng)架構,客戶機直接與服務器通信對話,則必須為每一個相關方安裝定制客戶端,必然面臨客戶端對安裝載體在硬件、操作系統(tǒng)兩個方面的適應困難。本系統(tǒng)采用B/S架構,利用其無需安裝定制客戶端的優(yōu)勢,為用戶帶來了最大的自由度,只要用戶擁有一臺能夠接入Internet的計算機,同時計算機上安裝有Firefox、Opera和Safari等任何一種常規(guī)瀏覽器,就能夠將其作為本系統(tǒng)的客戶端,實現(xiàn)遠程監(jiān)控艙室設備狀態(tài)的目的。
用戶端的web瀏覽器部分設置為兩層結構,共4個頁面。第一層用于安全控制,設計為登錄頁面;第二層用于功能實現(xiàn),設計為平行切換功能,包括實時健康數(shù)據(jù)監(jiān)測、實時視頻監(jiān)控及歷史數(shù)據(jù)查詢共3個平行切換的功能頁面。每臺被設定為監(jiān)控對象的設備都在其對面的艙室壁上安裝一個專屬攝像頭,數(shù)據(jù)庫中預先保存了每臺設備及其專屬于攝像頭的的IP地址、端口信息等相關數(shù)據(jù),根據(jù)實際需要,用戶在相應的前端頁面手動選擇和切換攝像頭。
根據(jù)需求,本系統(tǒng)總體框架設計為3個相對獨立的功能模塊,如圖1所示。
圖1 系統(tǒng)總體框架圖Fig.1 Overall framework diagram of the system
賬戶管理模塊。根據(jù)登入系統(tǒng)的用戶類別為其分配合適權限,并針對賬號清單依據(jù)用戶身份和權限進行分組管理。在用戶入口設置注冊、登錄認證界面,將登入用戶按照預設的類別分配不同的訪問權限。
視頻監(jiān)控模塊。實現(xiàn)攝像頭輸入的視頻信號上傳、顯示功能。允許網(wǎng)頁端選擇需要顯示的設備編號,網(wǎng)頁嵌入ActiveX控件,根據(jù)用戶指令確定對應訪問攝像機的IP地址和端口,調用相應攝像機的視頻信號并將其傳輸至Web服務器。
健康監(jiān)控模塊。設備運行健康狀態(tài)數(shù)據(jù)的實時采集、顯示和存儲,該數(shù)據(jù)來源為設備自帶的傳感器,實現(xiàn)對設備健康狀態(tài)包括電壓、電流、溫度、濕度等需監(jiān)控的數(shù)據(jù),并對匯總的數(shù)據(jù)進行簡單的圖像化處理。例如:將選取時間段的歷史數(shù)據(jù)匯總后,在直角坐標系中以折線、柱狀等不同的圖像形式在客戶端顯示。
系統(tǒng)工作結構如圖2所示,本系統(tǒng)軟件構件模式采用MVC(Model-View -Controller)開發(fā),將后端管理部分與用戶交互界面實現(xiàn)各自代碼獨立,系統(tǒng)架構選擇JavaBean+Hibernate +Struts2+Spring +Jsp。在數(shù)據(jù)庫錄入攝像頭的IP和端口實現(xiàn)視頻信號通道的切換,在用戶Web端上實現(xiàn)監(jiān)控視頻的實時顯示,采集的數(shù)據(jù)能夠實時地動態(tài)顯示在用戶Web端。系統(tǒng)在正常登陸的用戶賬戶下,能夠通過用戶Web端查看歷史數(shù)據(jù),并選擇輸出歷史數(shù)據(jù)的圖形形式,如柱狀圖、曲線圖等,以便更好地分析健康狀態(tài)變化趨勢。
圖2 信息流結構框圖Fig.2 Block diagram of information flow structure
作為Browser/Server架構,Web用戶需要在非特定的客戶機上采用瀏覽器訪問Web服務器。本系統(tǒng)中,采用SSL數(shù)字證書機制引導用戶加載瀏覽器前端的ActiveX控件。當用戶采用Firefox、Opera和Safari等任何一種常規(guī)瀏覽器第一次訪問服務器時,在SSL通信過程中,由于檢測到包含ActiveX控件的嵌入代碼,用戶端瀏覽器將提示需下載安裝CA(Certificate Authority)根證書,當用戶確認后,瀏覽器將自動下載并安裝系統(tǒng)前端部分的ActiveX控件。
成功安裝ActiveX控件后,系統(tǒng)前端與服務器建立通信,系統(tǒng)功能被激活。當用戶更換另一臺計算機后,只需再次訪問服務器并下載安裝相應控件,則可在新的工作位置使用本系統(tǒng)。
通常情況下,針對攝像頭視頻數(shù)據(jù)的采集需求可以采用與HTTP協(xié)議類似的RTSP(Real Time Streaming Protocol)協(xié)議獲取視頻碼流,或使用Open CV中的VideoCapture讀取視頻,通過TCP傳輸協(xié)議上承載RTSP以提高穩(wěn)定性即可。本系統(tǒng)中使用的攝像頭為國內某品牌的貨架標準產品設備,型號產品配置的SDK包內已配置有成熟的接口函數(shù),在AetiveX控件中直接調用即可獲取所需的視頻數(shù)據(jù)流。SDK包調用的執(zhí)行流程如圖3所示。
圖3 SDK調用流程圖Fig.3 SDK transfer flow chart
當用戶端第一次激活視頻監(jiān)控頁面時,頁面嵌入內置的ActiveX控件代碼將觸發(fā)前端瀏覽器的安全規(guī)則,隨后用戶端瀏覽器將發(fā)送消息提示下載控件,從而引導用戶進入控件安裝流程。
數(shù)據(jù)庫服務器系統(tǒng)采用最常用的MySQL作為數(shù)據(jù)庫服務器,經比較選用Hibernate作為數(shù)據(jù)庫訪問工具。與另一常用的訪問工具MyBatis相比,MyBatis采用SQL與Entity映射,而Hibernate采用數(shù)據(jù)庫與Entity映射,能夠自動生成SQL,開發(fā)工作更加高效。
通過對系統(tǒng)功能需求的細化分析,本系統(tǒng)配置的監(jiān)控系統(tǒng)數(shù)據(jù)庫為視頻監(jiān)控和健康數(shù)據(jù)監(jiān)控分別制定了規(guī)范格式的數(shù)據(jù)表頭,即Cam數(shù)據(jù)表(視頻)和Hel數(shù)據(jù)表(健康數(shù)據(jù))。
Cam數(shù)據(jù)表(視頻)中設置有ad(地址)、port(端口)、clit(用戶)、pasd(權限密碼)、id(位置編號)5個字段作為該設備的標識,每一條數(shù)據(jù)對應一臺攝像機,用戶Web端通過查詢Cam數(shù)據(jù)表中的IP地址和端口信息實現(xiàn)不同攝像頭的查詢和選擇,Cam數(shù)據(jù)表表頭設置如圖4所示。
圖4Cam數(shù)據(jù)表頭
Fig.4Camdataheader
Hel數(shù)據(jù)表(健康數(shù)據(jù))用于按固定時間間隔依序存儲從設備傳感器獲取的數(shù)據(jù)。本系統(tǒng)中,每隔5 min采集一次健康信息數(shù)據(jù)并在MySQL數(shù)據(jù)庫服務器中依時間順序存儲歸檔。Hel數(shù)據(jù)表設置一個獨立的字段“time”來記錄數(shù)據(jù)的采集時間,以滿足用戶查詢歷史數(shù)據(jù)的需求,Hel數(shù)據(jù)表表頭設置如圖5所示。
圖5 Hel數(shù)據(jù)表頭Fig.5 Hel data header
用戶端瀏覽器是本系統(tǒng)為用戶提供的唯一人機交互界面,用戶端在瀏覽器上下達指令和接收響應,瀏覽器與Web服務器之間設置有Ajax引擎作為中間層,所有請求與響應均通過Ajax引擎完成。用戶訪問與相應的流程如圖6所示。
應用Ajax作為中間層,能夠在不刷新整個頁面的前提下與服務器通信維護數(shù)據(jù),這使得Web端能夠更為迅捷地響應用戶交互,減少了未變化數(shù)據(jù)的無效通信,減少用戶等待時間。所有請求與響應均通過Ajax引擎完成,Ajax與服務器之間特有的異步通信機制,能夠為提供多線程并行工作效果,在用戶操作層上不會產生中斷影響,提升了用戶體驗。而減少了未變化數(shù)據(jù)的無效數(shù)據(jù)傳輸,對于通信帶寬的要求進一步降低,特別適用于航運中的船舶類應用場景。
圖6 用戶端Web訪問流程圖Fig.6 User side Web visit flow chart
設計并實現(xiàn)了基于B/S架構的船舶遠程監(jiān)控系統(tǒng)。系統(tǒng)采用Spring、Hinernate、Struts2三大框架搭建整體系統(tǒng),并使用MySQL承擔數(shù)據(jù)庫功能,使用通用型瀏覽器承擔人機交互功能?;贐/S架構本身的特點,系統(tǒng)的交互性較強,維護方便,但是允許用戶通過廣域網(wǎng)訪問設備在帶來便利的同時,也對系統(tǒng)、設備的安全性提出了更高的要求。目前,該技術僅適用于民用船舶的輔機設備,如要將其應用于更加敏感的設備領域,還有待于從安全性角度對該技術開展更深一步的研究。