沈 英
(北京海蘭信數(shù)據(jù)科技股份有限公司,北京100095)
船舶智能化已經(jīng)成為市場的發(fā)展趨勢,隨著計算機、網(wǎng)絡(luò)、通信、新能源、物聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等現(xiàn)代科學(xué)技術(shù)的發(fā)展和應(yīng)用,船舶自動控制以及通信導(dǎo)航等電氣系統(tǒng)也正朝著分布型、網(wǎng)絡(luò)型和智能型的方向發(fā)展。隨著船舶智能化水平的快速提升,實現(xiàn)船船和船岸之間可靠、安全、經(jīng)濟的數(shù)據(jù)交互,構(gòu)筑船岸之間通信的紐帶,支持獲取智能船遠程數(shù)據(jù)功能,是智能船發(fā)展的必經(jīng)階段。 船端動態(tài)異構(gòu)數(shù)據(jù)模型化是第一步。
船端動態(tài)數(shù)據(jù)包括各種設(shè)備或傳感器數(shù)據(jù),以及多種應(yīng)用或功能所需的必要信息、指令交互。 分析船端動態(tài)數(shù)據(jù)的類別、設(shè)備來源,可能的數(shù)據(jù)格式大致可分為傳感器數(shù)據(jù)和智能應(yīng)用數(shù)據(jù)兩大類,如圖1 所示。
圖1 動態(tài)數(shù)據(jù)分類
船舶上既有導(dǎo)航和航海傳感器、主輔機設(shè)備監(jiān)測報警,以及其他為船舶航行提供的位置、狀態(tài)、故障、報警等信息,是智能船系統(tǒng)的傳感器輸入信息。對這一類的數(shù)據(jù),需要將從各種接口中獲取原始輸入的數(shù)據(jù),分別按照通信協(xié)議進行解析,獲得格式化的數(shù)據(jù)。
智能船的所有智能應(yīng)用或系統(tǒng)都通過網(wǎng)絡(luò)平臺交互數(shù)據(jù),這些應(yīng)用的接口形式和數(shù)據(jù)通信協(xié)議均需要統(tǒng)一。
數(shù)據(jù)異構(gòu)嚴重制約了船岸信息的共享程度。 船端不同設(shè)備的數(shù)據(jù)格式不同,如表1 所示,不同數(shù)據(jù)格式協(xié)議不同。 為了獲得所有信息,數(shù)據(jù)使用者需要掌握多種協(xié)議的解析方式,所以實現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換勢在必行。 數(shù)據(jù)模型為獲取信息者提供集成的、完整的、統(tǒng)一的數(shù)據(jù)格式,便于數(shù)據(jù)的接收和訂閱。完整性主要指數(shù)據(jù)集成了多種設(shè)備的信息,一致性指把不同語義的數(shù)據(jù)通過數(shù)據(jù)模型轉(zhuǎn)換為統(tǒng)一的表達,這是船端局域網(wǎng)和船岸之間良好的數(shù)據(jù)發(fā)布和交換的前提,同時也可以簡化處理過程,提高效率。
表1 部分異構(gòu)數(shù)據(jù)
研究將船端動態(tài)多層級、多維度異構(gòu)數(shù)據(jù)模型化,抽取模型的特點和特征,并將數(shù)據(jù)按照模型進行變換,這種方法使得實際傳輸?shù)臄?shù)據(jù)與原始數(shù)據(jù)有了不同的意義,既有助于數(shù)據(jù)輕量化技術(shù)的實現(xiàn),也有助于提高信息傳輸?shù)陌踩浴?/p>
實際應(yīng)用中的數(shù)據(jù)模型有多種,比較常用的是JSON 和XML, 比如HTTP 協(xié)議中網(wǎng)絡(luò)數(shù)據(jù)的傳輸?shù)取EcXML 相比,JSON 易讀寫,同時也易于機器解析生成,這些特點使其得到廣泛使用。 自JSON 數(shù)據(jù)格式提出以來,在JSON 和XML 的實用性、傳輸效率、安全性等方面,一致認為JSON 在傳輸效率和瀏覽器解析等方面都比XML 更加實用和高效,因此,數(shù)據(jù)交換格式在很多領(lǐng)域逐漸從XML 轉(zhuǎn)為JSON[1-2]。
JSON 語句是由鍵值對組成的字典,其中的值也可以是一個新的JSON 語句,從而JSON 數(shù)據(jù)模型允許任意級別的嵌套。 JSON 規(guī)范定義了7 種類型的值,分別是字符串、數(shù)字、數(shù)組、對象等。 根據(jù)JSON語句的結(jié)構(gòu), 非時態(tài)的JSON 結(jié)構(gòu)的語句已經(jīng)滿足大多數(shù)產(chǎn)品的需求,但是不能滿足船舶數(shù)據(jù)動態(tài)變化的需求。 采用時態(tài)JSON 語句,在每包數(shù)據(jù)中加入當前的時間,記錄數(shù)據(jù)發(fā)生的時刻,便于數(shù)據(jù)接收方進行歷史數(shù)據(jù)分析、船舶歷史狀態(tài)分析以及獲取當前船舶航行參數(shù)等。 鑒于船舶可航行全球,可能分處全球不同的海域、不同的時區(qū),相互之間存在時差。 為了動態(tài)數(shù)據(jù)時間同步, 以確定數(shù)據(jù)發(fā)生的具體時刻,界定狀態(tài)或指令產(chǎn)生的時間先后關(guān)系,時態(tài)JSON 模型中的時間可采用船舶上GPS 設(shè)備提供的UTC(Universal Time Coordinated)時間作為時鐘同步源。
智能船上的信號點至少有上千個,這些信號包括導(dǎo)航數(shù)據(jù)、智能機艙數(shù)據(jù)、能效數(shù)據(jù)等。 信號清單中的每種信號都是獨一無二的, 鑒于JSON 的結(jié)構(gòu)是鍵值組合的字典,為每一個信號設(shè)計唯一的標識KEY,KEY 對應(yīng)的Value 是經(jīng)過數(shù)據(jù)采集按照既定協(xié)議解析后的數(shù)值或者符號。
依據(jù)船廠的信號清單,對所有信號進行統(tǒng)一規(guī)約。 以本項目中比較典型的3 個主題為例, 如表2所示, 其中在IG11GPS 主題的JSON 語句中,KEY“1101001”對應(yīng)的value“3856.8376”是GPS 發(fā)出的本船的緯度,“1101002” 對應(yīng)的則是本船的經(jīng)度,“1101008”到“1101011”分別表示UTC 時間、日、月和年的信息,“1101022” 表示相對于正北的對地航向,“1101025” 則是對地航速。 這條語句展示的是GPS 的部分信息,使用者可以根據(jù)需求創(chuàng)建主題,也可以包含所有的GPS 信息。
表2 模型化后的JSON 語句
除了GPS 外,智能機艙數(shù)據(jù)、能效數(shù)據(jù)等都采用了這樣的形式。 機艙的原始數(shù)據(jù)大部分遵循Modbus RTU/TCP 協(xié)議。Modbus 協(xié)議本身晦澀難懂,解析麻煩,容易出錯。表2 中IG22AMS1 是關(guān)于機艙的主題, 是根據(jù)實船的Modbus 數(shù)據(jù)模型化后的JSON 語句,其中KEY 從“310410”到“310438”是報警量, 代表了機艙中部分的報警點, 如表3 所示。KEY 從“320001”到“320038”是 機 艙 的 部 分 模 擬量,如表4 所示,每個KEY Value 對應(yīng)1 個機艙點位。
表3 IG22AMS1 報警量清單
表4 IG22AMS1 模擬量清單
在實船上,GPS 語句和機艙數(shù)據(jù)都是遵循標準的數(shù)據(jù)協(xié)議。 除了這些標準協(xié)議外,還有部分數(shù)據(jù)是用戶自定義協(xié)議,對于協(xié)議的本身用戶可以自行填寫, 只要符合需要解析的數(shù)據(jù)格式。 在表2 中IG22MotionTran 是關(guān)于運動傳感器的主題,原始數(shù)據(jù)本身是一串十六進制的數(shù)字, 通過多個字節(jié)組合成整型值或者浮點值等, 這需要用戶在WEB 自行配置。 主題中每個KEY 對應(yīng)幾個字節(jié)組合,其中KEY“M00001” 對應(yīng)船舶橫搖,“M00002” 則表示船舶縱搖,“M00003”對應(yīng)船舶首搖,“M00004”是船舶升沉。
從上面的例子可以看出,這種統(tǒng)一的規(guī)約可以把任何協(xié)議的信號用統(tǒng)一的數(shù)據(jù)模型表示出來。 把每個通道的數(shù)據(jù)完整地組合起來,既可以減少數(shù)據(jù)傳輸?shù)牧髁浚脖阌陂喿x和理解。
數(shù)據(jù)模型傳輸軟件系統(tǒng)是基于編程語言C++開發(fā)的,發(fā)布數(shù)據(jù)的接口如圖2 所示,接口參數(shù)包括發(fā)布主題的名稱、結(jié)構(gòu)體和時間,其中結(jié)構(gòu)體中的指針指向數(shù)據(jù)模型化后的JSON 語句, 結(jié)構(gòu)體中的數(shù)據(jù)長度是JSON 語句的長度,時間是時態(tài)JSON 的UTC時間。
圖2 發(fā)布數(shù)據(jù)接口
數(shù)據(jù)模型化傳輸軟件中數(shù)據(jù)的分發(fā)采用的是DDS 發(fā)布/訂閱體系架構(gòu),DDS 以數(shù)據(jù)為中心, 提供豐富的QoS(Quality of Service)服務(wù)質(zhì)量策略,能保障數(shù)據(jù)進行實時、高效、靈活的分發(fā),可滿足各種分布式實時通信應(yīng)用需求。 DDS 本質(zhì)上是一個通過網(wǎng)絡(luò)交換數(shù)據(jù)的協(xié)議[3],廣泛應(yīng)用于分布式應(yīng)用等。DDS 基于DCPS(Data-Centric Publish-Subscribe,以數(shù)據(jù)為中心的發(fā)布訂閱)模型,構(gòu)建了全局數(shù)據(jù)空間的概念,所有數(shù)據(jù)對象都存在于此空間中,節(jié)點通過簡單的讀寫操作便可以訪問這些數(shù)據(jù)對象。DDS 提供了一個與平臺無關(guān)的數(shù)據(jù)模型,使得實時分布式系統(tǒng)中的數(shù)據(jù)能夠高效、 可靠地發(fā)布和訂閱,主要應(yīng)用在高性能和對資源有效使用的關(guān)鍵任務(wù)領(lǐng)域, 完全符合本文對船舶動態(tài)數(shù)據(jù)傳輸?shù)囊?。時態(tài)JSON 語句是在DDS 提供的接口服務(wù)的基礎(chǔ)上轉(zhuǎn)發(fā)的。
采用時態(tài)JSON 的格式對船端數(shù)據(jù)進行模型化,既解決了動態(tài)數(shù)據(jù)異構(gòu)不易解析的問題,又可以利用JSON 數(shù)據(jù)格式簡單、易于讀寫、占用帶寬小、兼容性高的優(yōu)點,便于DDS 發(fā)布/訂閱架構(gòu)的傳輸,也有利于數(shù)據(jù)使用者獲取完整的、格式統(tǒng)一的船舶數(shù)據(jù)信息。