鄭樹劍,華先亮,高 陽,楊 鑫
(1. 北京海蘭信數(shù)據(jù)科技股份有限公司,北京100095;2. 上海船舶研究設(shè)計(jì)院,上海201203;3. 中船航??萍加邢挢?zé)任公司,北京100070;4. 上海外高橋造船有限公司,上海200137)
船載設(shè)備、傳感器及交互場景多,信息量大,數(shù)據(jù)通信的基礎(chǔ)環(huán)境復(fù)雜。實(shí)現(xiàn)船內(nèi)通信和船岸通信,保證低延時(shí)、高可靠性、高效率的通信協(xié)議成為客戶的迫切需要。 當(dāng)前船舶上的各系統(tǒng)數(shù)據(jù)格式各異,通信協(xié)議不統(tǒng)一,需要制定出統(tǒng)一的通信協(xié)議、數(shù)據(jù)格式以及相應(yīng)的硬件接口標(biāo)準(zhǔn),這樣各種信息才能做到互聯(lián)互通,對船載網(wǎng)絡(luò)的發(fā)展尤其是智能船的發(fā)展來說至關(guān)重要。
目前船舶上的設(shè)備和系統(tǒng)的物理接口形式多樣, 數(shù)據(jù)傳輸?shù)姆绞胶屯ㄐ艆f(xié)議也各有不同。 航行設(shè)備,比如GPS、羅經(jīng)、計(jì)程儀等的數(shù)據(jù)主要通過串口RS422/RS232/RS485 來接入到應(yīng)用系統(tǒng)中,通信協(xié)議主要采用的是NMEA-0183 標(biāo)準(zhǔn)。 NMEA-0183是美國國家海洋電子協(xié)會(huì)(National Marine Electronics Association)為統(tǒng)一海洋導(dǎo)航規(guī)范而制定的標(biāo)準(zhǔn),該標(biāo)準(zhǔn)已經(jīng)成為國際通用的一種格式。 協(xié)議的內(nèi)容在兼容NMEA-0180 和NMEA-0182 的基礎(chǔ)上, 增加了GPS、測深儀、羅經(jīng)方位系統(tǒng)等多種設(shè)備接口和通信協(xié)議定義,同時(shí)還允許一些特定廠商對其設(shè)備通信自定協(xié)議。
機(jī)艙數(shù)據(jù)主要是來自于機(jī)艙監(jiān)測報(bào)警設(shè)備,比如康士伯等廠家的設(shè)備。 監(jiān)測報(bào)警通信協(xié)議主要有3種:MODBUS、CANBUS 和OPC,接口主要通過串口或者RJ45 網(wǎng)口。 MODBUS 協(xié)議應(yīng)用于電子控制器,通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其他設(shè)備之間可以通信。 它已經(jīng)成為一種通用工業(yè)標(biāo)準(zhǔn)。 利用MODBUS,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò)進(jìn)行集中監(jiān)控。 此協(xié)議定義了一種控制器能識(shí)別和使用的消息結(jié)構(gòu),而不管信息是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信的。 它描述了控制器請求訪問其他設(shè)備的過程,如何回應(yīng)來自其他設(shè)備的請求,以及怎樣偵測錯(cuò)誤并記錄。 它制定了消息域格局和內(nèi)容的公共格式。
OPC UA(OPC Unified Architecture)是一個(gè)不依賴任何平臺(tái)的標(biāo)準(zhǔn),借助此標(biāo)準(zhǔn)各種各樣的系統(tǒng)和設(shè)備能在不同的網(wǎng)絡(luò)中以C/S(Client/Server)的模式進(jìn)行通信。 OPC 統(tǒng)一體系結(jié)構(gòu)通過確認(rèn)客戶端和服務(wù)器的身份且自動(dòng)抵御攻擊來支持穩(wěn)定、安全的通信。 OPC 應(yīng)用于工業(yè)領(lǐng)域已有很長的歷史了,不同的OPC 解決方案,提供多種通信協(xié)議以及數(shù)據(jù)庫集成、串口設(shè)備通信、以及與基于網(wǎng)絡(luò)設(shè)備的集成。
IEC 61162-450:2018 通信協(xié)議標(biāo)準(zhǔn)規(guī)定了船上導(dǎo)航和無線電通信設(shè)備之間,以及需要與導(dǎo)航和無線電通信設(shè)備進(jìn)行通信的其他船舶系統(tǒng)之間的高速通信接口要求和試驗(yàn)方法。 IEC 61162-450 介紹了網(wǎng)絡(luò)和設(shè)備的要求,還有對網(wǎng)絡(luò)傳輸層、應(yīng)用層的規(guī)范。IEC 61162-450 支持UDP 和組播協(xié)議,不對協(xié)議進(jìn)行解析, 只是為IEC 61162-1 和IEC 61162-2標(biāo)準(zhǔn)提供了一個(gè)速度更快、容量更大的替代方案,同時(shí)保留了上述標(biāo)準(zhǔn)的基本數(shù)據(jù)格式。
在船舶以太網(wǎng)通信中,有多個(gè)分布的信息源,也分布著多個(gè)對這些信息源的信息感興趣的網(wǎng)絡(luò)節(jié)點(diǎn),構(gòu)成異構(gòu)的分布式網(wǎng)絡(luò)[1]。傳統(tǒng)的數(shù)據(jù)通信解決方案往往不能很好地適用于分布式系統(tǒng),尤其是對數(shù)據(jù)實(shí)時(shí)性要求比較高的系統(tǒng),而發(fā)布/訂閱網(wǎng)絡(luò)模型使得多種分布式系統(tǒng)能在一個(gè)網(wǎng)絡(luò)中高效地共享數(shù)據(jù)。 網(wǎng)絡(luò)節(jié)點(diǎn)只需要訂閱它們想要的數(shù)據(jù),或者發(fā)布它們能提供的信息,而不用關(guān)心數(shù)據(jù)傳輸方式[2]。
船載網(wǎng)絡(luò)數(shù)據(jù)訂閱式通信協(xié)議DSCP(Data Subscription Communication Protocol for Shipborne Network), 總結(jié)了多種傳輸協(xié)議和現(xiàn)有的數(shù)據(jù)類型,借鑒了OPC UA 和對象管理組織(OMG)的DDS(Data Distribution Service)兩種成熟的協(xié)議標(biāo)準(zhǔn),采用OPC UA 標(biāo)準(zhǔn)的對象模型, 使用信息模型的方式封裝數(shù)據(jù)。 協(xié)議本身不僅包含數(shù)據(jù)內(nèi)容同時(shí)包含數(shù)據(jù)描述信息,同時(shí)支持文件、流媒體等非結(jié)構(gòu)化數(shù)據(jù)。通過按此標(biāo)準(zhǔn)制定的一個(gè)包含數(shù)據(jù)描述的通信協(xié)議,各個(gè)船端系統(tǒng)可以利用統(tǒng)一的協(xié)議進(jìn)行數(shù)據(jù)交換,具備高效的信息傳輸效率,滿足信息傳輸?shù)牡脱訒r(shí)、 安全性要求。 協(xié)議同時(shí)支持多種QoS(Quality of Service)策略,實(shí)現(xiàn)在正確的時(shí)間、正確的地點(diǎn)獲得正確的數(shù)據(jù)。 DSCP 與OSI (Open System Interconnection)以太網(wǎng)7 層參考模型對比如圖1 所示。
該圖中間是OSI 的7 層參考模型,右側(cè)是對應(yīng)的TCP/IP 5 層模型,左側(cè)是本協(xié)議在OSI 的每層上實(shí)現(xiàn)的協(xié)議。 左側(cè)的虛框代表DSCP 主要實(shí)現(xiàn)的工作。
DSCP 主要是在傳輸層以上通過多協(xié)議實(shí)現(xiàn):
1) 在網(wǎng)絡(luò)層,構(gòu)建和管理多節(jié)點(diǎn)網(wǎng)絡(luò),包括尋址、路由和流量控制。通過IP 協(xié)議,實(shí)現(xiàn)底層各個(gè)設(shè)備節(jié)點(diǎn)源IP 地址以及目標(biāo)IP 地址的尋址。
2) 在傳輸層,包含基于TCP、UDP 單播和組播的協(xié)議,實(shí)現(xiàn)了TLS1.3 協(xié)議保證數(shù)據(jù)安全。 傳輸層保證在網(wǎng)絡(luò)節(jié)點(diǎn)之間可靠地傳輸數(shù)據(jù),包括分段、確認(rèn)和多路復(fù)用,支持無連接的協(xié)議UDP 以及面向連接的TCP。
圖1 DSCP 與OSI 以太網(wǎng)7 層參考模型對比
3)在會(huì)話層和表示層,實(shí)現(xiàn)了DDSI-RTPS(The Real-time Publish-Subscribe Protocol)協(xié)議,管理通信會(huì)話以及網(wǎng)絡(luò)服務(wù)和應(yīng)用程序之間的數(shù)據(jù)轉(zhuǎn)換,即以兩個(gè)節(jié)點(diǎn)之間的多個(gè)往復(fù)傳輸?shù)男问竭B續(xù)交換信息,包括字符編碼、數(shù)據(jù)壓縮和加密/解密。
4) 在表示層和應(yīng)用層,基于ACE(Adaptive Communication Environment) 組件實(shí)現(xiàn)了自適應(yīng)的通信環(huán)境,包括高并發(fā)、跨平臺(tái)和可移植性。
5) 在應(yīng)用層,設(shè)計(jì)了DSCP 的一套接口,除了支持OMG-DDS 標(biāo)準(zhǔn)規(guī)范, 還加入了對非結(jié)構(gòu)化數(shù)據(jù)、請求/回復(fù)模型的支持,接口按平臺(tái)提供開發(fā)語言,目前包括C++、JAVA、Python 等3 種接口語言。
DSCP 以數(shù)據(jù)為中心的發(fā)布-訂閱模型為所有的分布式節(jié)點(diǎn)之間創(chuàng)建了一個(gè)虛擬共享的全局?jǐn)?shù)據(jù)空間。 對于應(yīng)用來說,DDS 通過發(fā)送消息來更新遠(yuǎn)端節(jié)點(diǎn)的相應(yīng)存儲(chǔ)值, 訪問全局?jǐn)?shù)據(jù)空間與通過API 訪問內(nèi)存一樣[3]。
全局?jǐn)?shù)據(jù)空間由發(fā)布/訂閱登記表、發(fā)布數(shù)據(jù)緩沖區(qū)和接收數(shù)據(jù)緩沖區(qū)等部分構(gòu)成。發(fā)布/訂閱登記表記錄了所有發(fā)布/訂閱消息主題、 發(fā)布者/訂閱者地址以及該類信息的主要特征,如數(shù)據(jù)有效期、消息優(yōu)先級、實(shí)時(shí)/可靠性要求等,所有主機(jī)上的發(fā)布/訂閱主題表保持一致并實(shí)時(shí)更新。 發(fā)布數(shù)據(jù)緩沖區(qū)保存了本主機(jī)發(fā)布且需要保存的發(fā)送數(shù)據(jù),即發(fā)布后仍需要繼續(xù)保留一段時(shí)間,支持訂閱者在這段時(shí)間內(nèi)正確索取的數(shù)據(jù),全局?jǐn)?shù)據(jù)空間根據(jù)數(shù)據(jù)有效期動(dòng)態(tài)刪除或更新數(shù)據(jù)。 接收數(shù)據(jù)緩沖區(qū)是必不可少的,全局?jǐn)?shù)據(jù)空間為每一個(gè)訂閱進(jìn)程分配一個(gè)這樣的隊(duì)列用以緩沖其接收卻未能及時(shí)處理的消息。
每個(gè)DSCP 應(yīng)用僅在本地存儲(chǔ)它需要的數(shù)據(jù),當(dāng)整個(gè)網(wǎng)絡(luò)內(nèi)的任何應(yīng)用需要他們時(shí),通過全局?jǐn)?shù)據(jù)空間提供給對應(yīng)的應(yīng)用。 所有的數(shù)據(jù)分發(fā)工作全部都由DSCP 完成。全局?jǐn)?shù)據(jù)空間是一個(gè)虛擬概念,實(shí)際上是本地存儲(chǔ)的集合。 每個(gè)應(yīng)用,可以用幾乎任何一種語言編寫,運(yùn)行在任何系統(tǒng)上,可以在本地內(nèi)存上讀到最好的數(shù)據(jù)格式顯示的數(shù)據(jù)。 全局?jǐn)?shù)據(jù)空間可以在嵌入式系統(tǒng)、移動(dòng)和云應(yīng)用之間共享數(shù)據(jù),采用任意的傳輸方式,無論語言和系統(tǒng),保證極低的延遲。
DSCP 基本結(jié)構(gòu)是域(domain), 由域號(hào)唯一標(biāo)識(shí)。 domain 將各個(gè)應(yīng)用程序綁定在一起進(jìn)行通信,只有在同一個(gè)域內(nèi)的通信實(shí)體才能通信,不同域內(nèi)的實(shí)體間無任何邏輯關(guān)系。
DSCP 由域、域參與者、主題、數(shù)據(jù)寫者、數(shù)據(jù)讀者組成,如圖2 所示。
1) 域:代表建立一個(gè)鏈接,包含所有加入它的應(yīng)用程序的虛擬網(wǎng)絡(luò)。 只有在同一域中的應(yīng)用程序才能通信。
2) 域參與者:應(yīng)用程序在某個(gè)域內(nèi)交互的入口點(diǎn)。 每個(gè)域參與者可以有一個(gè)或多個(gè)發(fā)布者或訂閱者。
3) 主題:主題是發(fā)布、訂閱應(yīng)用程序之間數(shù)據(jù)交互的根本手段,在一個(gè)域內(nèi),每個(gè)主題有唯一的名字和特定的數(shù)據(jù)類型。 每個(gè)主題數(shù)據(jù)類型可以指定0 個(gè)或多個(gè)字段作為鍵,當(dāng)數(shù)據(jù)發(fā)布時(shí),發(fā)布端需要指定主題,訂閱端通過該主題訂閱數(shù)據(jù)。 主題由主題名、主題類型、一個(gè)或多個(gè)QoS 策略組成。 主題名稱是一個(gè)能在域中唯一標(biāo)識(shí)主題的字符串,主題類型是對主題數(shù)據(jù)的定義,每個(gè)主題都可以關(guān)聯(lián)相應(yīng)的QoS 策略。
圖2 DSCP 的組成
4) 數(shù)據(jù)寫者(datawriter)與數(shù)據(jù)發(fā)布者:每個(gè)數(shù)據(jù)寫者只關(guān)聯(lián)一個(gè)特定的主題,因此只具有一種數(shù)據(jù)類型。 應(yīng)用程序通過數(shù)據(jù)寫者的特定類型接口來發(fā)布所關(guān)聯(lián)主題的數(shù)據(jù)實(shí)例。 數(shù)據(jù)寫者負(fù)責(zé)將數(shù)據(jù)傳遞給發(fā)布者,發(fā)布者來分發(fā)數(shù)據(jù),發(fā)布者會(huì)根據(jù)自身的QoS 以及相應(yīng)的數(shù)據(jù)寫者的QoS 來分發(fā)數(shù)據(jù)。
5)數(shù)據(jù)讀者(datareader)與數(shù)據(jù)訂閱者:數(shù)據(jù)讀者是用來獲取由訂閱者所接收到的數(shù)據(jù),并將數(shù)據(jù)傳遞給應(yīng)用程序的DCPS 實(shí)體, 每個(gè)數(shù)據(jù)讀者被綁定到一個(gè)特定的主題,也就是每個(gè)數(shù)據(jù)讀者只關(guān)心它所感興趣的數(shù)據(jù)類型。 訂閱者負(fù)責(zé)接收來自發(fā)布者的數(shù)據(jù), 然后將收到的數(shù)據(jù)傳給相應(yīng)的數(shù)據(jù)讀者,從而使應(yīng)用程序獲得它所感興趣的數(shù)據(jù)。數(shù)據(jù)讀者可通過實(shí)時(shí)和延遲兩種方式來獲取它所訂閱的數(shù)據(jù)。
DSCP內(nèi)所有的成員都是實(shí)體(entity),DSCP 中任兩個(gè)實(shí)體通信都必須在同一個(gè)域內(nèi)進(jìn)行交互。 域內(nèi)的域參與者domain participant 是服務(wù)的入口點(diǎn),任何DSCP 應(yīng)用都需首先獲取domain participant,然后通過(domain participant)獲取其他服務(wù),如發(fā)布者(publisher),訂閱者(subscriber),主題(topic)等。 域參與者作為數(shù)據(jù)分發(fā)服務(wù)的入口點(diǎn),包含若干發(fā)布者、訂閱者和注冊主題,負(fù)責(zé)創(chuàng)建、刪除和管理這些實(shí)體。 發(fā)布者角色,至少包含一個(gè)數(shù)據(jù)寫者,并負(fù)責(zé)創(chuàng)建、刪除和管理數(shù)據(jù)寫者。 同樣,訂閱者至少與一個(gè)數(shù)據(jù)讀者關(guān)聯(lián)。 數(shù)據(jù)發(fā)布者發(fā)布數(shù)據(jù)是通過發(fā)布者和Qos 綜合控制的。 數(shù)據(jù)讀者負(fù)責(zé)訂閱數(shù)據(jù), 訂閱方式可采用異步方式、 同步方式和非阻塞方式等3種。
每個(gè)主題都有對應(yīng)的數(shù)據(jù)格式,這是在創(chuàng)建主題的時(shí)候就需要確定的。 發(fā)布方將結(jié)構(gòu)化的數(shù)據(jù)通過某種方式轉(zhuǎn)化成創(chuàng)建主題時(shí)所設(shè)置數(shù)據(jù)類型的JSON[4]格式,然后發(fā)布出去。
表1 展示了結(jié)構(gòu)化數(shù)據(jù)包的組成部分,JSON 格式數(shù)據(jù)與數(shù)據(jù)描述是對應(yīng)關(guān)系,用戶應(yīng)用獲取數(shù)據(jù)后,根據(jù)數(shù)據(jù)描述解析數(shù)據(jù)。 數(shù)據(jù)描述是對數(shù)據(jù)的每個(gè)鍵值對進(jìn)行說明,包括鍵值的數(shù)據(jù)類型、名稱、單位、組成形式等[5]。數(shù)據(jù)類型包含基礎(chǔ)數(shù)據(jù)類型以及復(fù)雜數(shù)據(jù)類型,可以是某個(gè)通用協(xié)議名稱,也可以是事先約定好的對象名稱。
表1 結(jié)構(gòu)化數(shù)據(jù)包的數(shù)據(jù)格式
非結(jié)構(gòu)化數(shù)據(jù)是數(shù)據(jù)結(jié)構(gòu)不規(guī)則或不完整、沒有預(yù)定義的數(shù)據(jù)模型,這是不方便用數(shù)據(jù)庫二維邏輯表來表現(xiàn)的數(shù)據(jù)。 非結(jié)構(gòu)化數(shù)據(jù)包括所有格式的辦公文檔、文本、圖片、XML、HTML、報(bào)表、圖像和音頻/視頻信息等等,非結(jié)構(gòu)化數(shù)據(jù)格式見表2。 如果發(fā)布的是幾百M(fèi)B 的大文件數(shù)據(jù), 文件大小可以設(shè)置,通過FTP 中轉(zhuǎn),發(fā)布文件路徑來通知用戶,用戶收到文件路徑變化消息, 自行訪問FTP 下載數(shù)據(jù)。小的數(shù)據(jù)文件,可以通過二進(jìn)制流的方式發(fā)布,用戶需要按照API 接口的要求,把文件序列化為二進(jìn)制數(shù)據(jù)流,再調(diào)用相關(guān)的發(fā)送接口。
DSCP 主要借鑒了OPC UA 規(guī)范的Part 5 Information model 部分,模型部分對于對象的描述主要是數(shù)據(jù)類型的描述。 把模型部分融入到DSCP 之中。 除此之外兩者的區(qū)別示于表3。 DSCP 主要在國際對象組織OMG 的DDS 標(biāo)準(zhǔn)基礎(chǔ)上進(jìn)行了擴(kuò)充,與OMG 的DDS 區(qū)別如表4 所示。
表2 非結(jié)構(gòu)化數(shù)據(jù)包的數(shù)據(jù)格式
表3 DSCP 與OPC UA 協(xié)議的區(qū)別
表4 DSCP 與OMG 的DDS 標(biāo)準(zhǔn)區(qū)別
DSCP協(xié)議提供了發(fā)布訂閱方式通信的API 接口規(guī)格和包含語義的數(shù)據(jù)協(xié)議,能夠提供低延時(shí)、可靠、高效的數(shù)據(jù)交互方案。 該協(xié)議適用于從船舶設(shè)備、傳感器、其他系統(tǒng)獲取數(shù)據(jù),以及船上各個(gè)系統(tǒng)間以安全和高效的方式進(jìn)行數(shù)據(jù)的分享和數(shù)據(jù)的交互,支持結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。 應(yīng)用此協(xié)議,各個(gè)應(yīng)用系統(tǒng)不用再去關(guān)注原始設(shè)備的數(shù)據(jù)協(xié)議,數(shù)據(jù)包包含描述信息,數(shù)據(jù)做到即拿即用,大大減少了各個(gè)業(yè)務(wù)系統(tǒng)解析多家數(shù)據(jù)協(xié)議的繁重工作。DSCP 協(xié)議更能關(guān)注業(yè)務(wù)功能, 可以滿足智能船應(yīng)用發(fā)展的需要。
目前該協(xié)議已經(jīng)在智能船舶1.0 研發(fā)專項(xiàng)的4艘示范船上進(jìn)行示范應(yīng)用,通過統(tǒng)一的數(shù)據(jù)協(xié)議將全船數(shù)據(jù)打通,進(jìn)行全船的數(shù)據(jù)采集和發(fā)布,保證了全船統(tǒng)一的數(shù)據(jù)接口。