吳 軍周嘯偉魯 楊
(1.常熟瑞特智能船舶裝備研究院有限公司 常熟215500;2.常熟瑞特電氣股份有限公司 常熟215500)
基于OpenADR規(guī)范的智能船舶數(shù)據(jù)采集與傳輸系統(tǒng)
吳 軍1周嘯偉2魯 楊2
(1.常熟瑞特智能船舶裝備研究院有限公司 常熟215500;2.常熟瑞特電氣股份有限公司 常熟215500)
為使智能船舶的底層數(shù)據(jù)采集和傳輸達到完整和規(guī)范,文章基于物聯(lián)網(wǎng)技術,參考美國OpenADR通訊規(guī)范,以自動需求相應平臺硬件和軟件的開發(fā)設計思路和框架,設計和實現(xiàn)了一套針對智能船舶的數(shù)據(jù)采集和傳輸系統(tǒng),從而為智能船舶上層的應用平臺奠定良好的基礎。
智能船舶;物聯(lián)網(wǎng);數(shù)據(jù)采集與傳輸;數(shù)據(jù)平臺
近年來,物聯(lián)網(wǎng)技術有了突飛猛進的發(fā)展,在飛機、汽車、電力等領域均獲得廣泛應用,但在船舶領域,尤其是在國內(nèi)造船領域,智能船舶似乎遇到了瓶頸。這其中的一個核心問題就是數(shù)據(jù)采集和傳輸?shù)囊?guī)范化。
本文以物聯(lián)網(wǎng)和自動需求相應(OpenADR)規(guī)范為開發(fā)思路和理念,通過具體的實施方案將美國自動需求相應規(guī)范[1]應用于現(xiàn)代智能船舶之中,對智能船舶的理念及實施作些有益的探索。
為了規(guī)范和引領國內(nèi)的智能船舶建設,中國船級社(CCS)《智能船舶規(guī)范》[2]針對智能船舶作如下描述:智能船舶系指利用傳感器、通信、物聯(lián)網(wǎng)、互聯(lián)網(wǎng)等技術手段,自動感知和獲得船舶自身、海洋環(huán)境、物流、港口等方面的信息和數(shù)據(jù),并基于計算機技術、自動控制技術和大數(shù)據(jù)處理和分析技術,在船舶航行、管理、維護保養(yǎng)、貨物運輸?shù)确矫鎸崿F(xiàn)智能化運行的船舶,以使船舶更加安全、更加環(huán)保、更加經(jīng)濟、更加可靠。
現(xiàn)代船舶的自動化設計包括無人機艙和一人橋樓等,僅局限于船舶或系統(tǒng)本身,其借助物聯(lián)網(wǎng)和互聯(lián)網(wǎng)的智能化水平較低。究其原因,是由于目前我國造船還沒有實現(xiàn)標準化設計、采購和生產(chǎn),船舶制造還停留在定制階段;即使同一船東的同一系列船型,制造時的分段劃分、設備和材料的采購、系統(tǒng)原理都不能做到完全相同。由于設備和系統(tǒng)的多樣性和獨立性,其數(shù)據(jù)接口水平不一,在實施數(shù)據(jù)統(tǒng)一采集、處理、顯示和控制時非常困難。
基于以上原因,本文通過參考自動需求相應(OpenADR)規(guī)范實現(xiàn)采集終端與數(shù)據(jù)服務器的連接,期望能使底層數(shù)據(jù)采集和設備控制更加規(guī)范化。
《智能船舶規(guī)范》針對常規(guī)的軸系柴油機推進的運輸商船提出有關智能的六大基本符號,概括為:
i-ship(N) 智能航行/Navigation
i-ship(H) 智能船體/Hull
i-ship(M) 智能機艙/Machinery
i-ship(E) 智能能效/Energy
i-ship(C) 智能貨控/Cargo
i-ship(I) 智能集成平臺/Integration
以智能機艙為例,CCS要求的基本功能為:對機艙內(nèi)的主推進發(fā)動機、輔助發(fā)電用發(fā)動機、軸系的運行狀態(tài)進行監(jiān)測;根據(jù)狀態(tài)監(jiān)測系統(tǒng)收集的數(shù)據(jù),對機械設備的運行狀態(tài)和健康狀況進行分析和評估;根據(jù)分析與評估結果,提出糾正建議,為船舶操作提供決策建議;同時對主機等監(jiān)測點也提出了具體要求。
對照發(fā)現(xiàn),CCS要求的監(jiān)測點大多數(shù)在現(xiàn)有AIS系統(tǒng)里均已包括,只有少量監(jiān)測點需要增加(如內(nèi)燃燒狀態(tài)、溫度和震動等)。我們認為,不能遺漏監(jiān)測點的同時也應該避免數(shù)據(jù)重復采集,在設計和采購之初就應該全盤考慮,例如,要求AIS供應商開放數(shù)據(jù)串口、增加數(shù)據(jù)采集點;機艙智能平臺的數(shù)據(jù)統(tǒng)一從AIS獲得;然后按照統(tǒng)一的元數(shù)據(jù)框架標準上傳數(shù)據(jù)服務器。
智能船舶的應用服務器至少應包括以下幾個層面:
(1)數(shù)據(jù)及模型層
包括數(shù)據(jù)服務器采集到的數(shù)據(jù)和來自外部的數(shù)據(jù),如水文氣象數(shù)據(jù)、碼頭數(shù)據(jù)、航線數(shù)據(jù)等。此外,還應該包括讓所有設備執(zhí)行的指令庫或者指令函數(shù)庫,需要造船工程師、航運工程師、軟件工程師、硬件工程師、設備供應商的通力合作。船舶需要采集的數(shù)據(jù)點,對于需要采集數(shù)據(jù)和執(zhí)行下發(fā)指令的設備,設備供應商必須打開數(shù)據(jù)端口。此外,還需要完善預案庫,即船舶航行時的各種姿態(tài)下設備運行的設定參數(shù),該庫需連接故障診斷系統(tǒng),且能修改保存。
(2)邏輯層
包括算法、專家診斷系統(tǒng)以及視情維護系統(tǒng),不僅需要對大量的數(shù)據(jù)進行計算和邏輯分析,而且也是一個積累的過程。不同的數(shù)據(jù)得出不同的結論,執(zhí)行不同的預案,同時向顯示層傳遞結果。
(3)顯示層
人機互動的層面,可以查看和下載數(shù)據(jù),形成各種報表,同時也應有權限管理。
從以上分析可以看出,由于設備的多樣性和獨立性,數(shù)據(jù)接口水平的參差不齊,使得按照統(tǒng)一的元數(shù)據(jù)框架標準采集和傳輸各類數(shù)據(jù)成為了整個系統(tǒng)成敗的關鍵,這其中涉及到的問題包括:標準化、可靠性、安全性、需求響應等多個方面,OpenADR標準在這方面作了詳細規(guī)范。
2002年,為解決加利福尼亞州的電力危機,勞倫斯·伯克利國家實驗室(LBNL)的需求響應研究中心(DRRC)成立了OpenADR研究項目,嘗試支持基于事件的自動需求響應機制和實時電價,優(yōu)化電力供需雙方關系,提升電網(wǎng)的經(jīng)濟性和可靠性。后來,OpenADR1.0規(guī)范被捐贈給標準組織(OASIS),在OASIS的Energy Interoperation 1.0規(guī)范基礎上形成眾多國家廣泛參與的OpenADR2.0標準。
OpenADR是一個通信數(shù)據(jù)模型,定義了電力服務提供者和消費者之間信息交換的標準和規(guī)范。OpenADR基于已有標準的通信協(xié)議(例如HTTP、XMPP),采用XML方式傳遞需求響應、價格、可靠性等信息。
借鑒OpenADR的概念和標準,我們將其應用于智能船舶中,設計和實現(xiàn)一個數(shù)據(jù)采集和傳輸系統(tǒng)。
按照自動需求相應(OpenADR)規(guī)范,系統(tǒng)從結構上可分為采集終端、數(shù)據(jù)傳輸和數(shù)據(jù)服務器等三大塊。本文并未深入涉及建于數(shù)據(jù)服務器平臺之上的應用層,例如故障診斷和視情維護等。系統(tǒng)的整體框圖見圖1。其中每一個數(shù)據(jù)采集終端都有三種數(shù)據(jù)源接口,終端和服務器(包括數(shù)據(jù)庫服務器及應用服務器)通過網(wǎng)絡相連,信息傳輸則采用HTTP協(xié)議。
3.1 采集終端
采集終端的設計對于整個物聯(lián)網(wǎng)系統(tǒng)來說至關重要,它直接連接傳感器或采集器,把接收到的信號進行處理和存儲,并且生成標準格式的報文,按照服務器的要求定時、加密傳輸?shù)椒掌?;同時還能接受服務器指令,對設備進行一定的操作,例如大型設備的啟、停以及通過串口對一些設備進行軟控制等。由于現(xiàn)在船用設備,例如主機、副機、冷水機組等既有智能裝備的信息接口標準不統(tǒng)一,如果大量的數(shù)據(jù)都直接交給服務器處理,會給服務器帶來巨大的壓力,信息的第三方應用集成與二次開發(fā)相對困難。因此,由采集終端分散處理,以標準的格式傳遞給服務器顯得非常重要。
3.1.1 采集終端硬件
由于采集終端需要進行多線程編程,本文選用4核arm處理器,預裝linux系統(tǒng)的電腦板,用可插拔SD卡作為存儲器,主板帶有IO口和串口,可實現(xiàn)脈高低電平、串口以及USB總線的輸入和輸出用于數(shù)據(jù)的采集和設備的控制。電腦板內(nèi)置有線網(wǎng)卡,可擴展無線網(wǎng)卡以及gprs模塊,可通過光纖、Wi-Fi以及gprs連接服務器。
3.1.2 采集終端軟件
采集終端的編程語言可采用C、JAVA或Python等。由于Python語言的簡潔性、易讀性以及可擴展性,在國外用Python進行科學計算的研究機構日益增多,一些知名大學已經(jīng)采用Python來教授程序設計課程。因此,我們以Python在Linux操作系統(tǒng)下編程為例,對終端的開發(fā)作說明。
終端預裝MySQL數(shù)據(jù)庫,可滾動保存30天的數(shù)據(jù)。配置頁面使用Python的FLASK開源框架,在有線網(wǎng)卡上虛擬一個靜態(tài)IP網(wǎng)口,采集終端實際上就是一個BS構架的微型Web服務器,電腦可以直接通過瀏覽器對采集終端進行配置,如:網(wǎng)絡連接、設備連接以及導入解析函數(shù)、ssl安全證書等的配置。將采集終端設計為WEB服務器,其目的是能夠對采集終端進行初始設置,與路由器的配置頁面類似,當電腦通過網(wǎng)線連接采集終端后,通過瀏覽器訪問采集終端預置的IP地址或域名,便可訪問終端服務器,如圖1所示。登錄后對終端將要連接的服務器IP地址或域名進行配置以及對所采集的數(shù)據(jù)源進行配置,圖2是終端服務器的登陸頁面。圖3為登錄后頁面。
登錄后可以對終端的網(wǎng)絡、目標服務器、脈沖信號源、串口信號源等進行配置,相關信息存入終端內(nèi)置的數(shù)據(jù)庫,后臺程序讀取數(shù)據(jù)庫的配置信息,按照所設置的信息運行程序,啟動相應的線程,完成對數(shù)據(jù)源的采集和傳輸。
3.2 數(shù)據(jù)采集和設備控制
采集終端上共有3種數(shù)據(jù)源的數(shù)據(jù)接口,IO脈沖信號、IO串口輸出信號以及USB Modelbus 485信號。
3.2.1 IO脈沖信號
脈沖信號的輸入可通過終端后臺程序計算出相應的數(shù)據(jù),例如通過接入智能電表的脈沖信號能計算出電表的功率和電能,按此原理同樣可以獲得軸系轉速等數(shù)據(jù)。脈沖信號的輸出可以通過二進制的組合控制輸出針腳的高低電平,例如通過2個針腳可以組合成:00、01、10、11共四種信號,每種信號可以映射不同的預案。
3.2.2 IO串口輸出信號
采集終端通過IO串口輸出,可以連接繼電器,通過一組指令實現(xiàn)對設備的啟、停,也可以連接帶有串口數(shù)據(jù)接口的配電板,在接到服務器平臺的指令后,自動向繼電器或配電板下發(fā)指令,以達到控制的目的。
3.2.3 USB Modelbus 485信號
通過USB Modelbus 485總線,可以向所連接的若干個地址碼發(fā)出不同指令,每個地址碼可以連接采集器或者連接帶有串口接受指令的設備,通過這種方式,可以對設備進行柔性控制,前提是設備供應商必須開放串口以及提供指令庫或指令算法。為了降低干擾,所有報文均進行crc16校驗或者根據(jù)設備商的標準算法進行校驗。考慮到采集器或設備的品牌多樣性,報文的格式也不相同,數(shù)據(jù)解析函數(shù)以及校驗方法也不同,因此在終端可預置常用品牌型號的解析函數(shù),遇到新的品牌型號也可以通過配置頁面導入。這樣可以實現(xiàn)靈活接入不同的設備,并且具有記憶功能,只要導入一次,下次同樣的設備便可自動識別。
3.3 通訊安全和數(shù)據(jù)傳輸
數(shù)據(jù)的傳輸可以通過光纜、Wi-Fi或gprs為載體,分為連接層和應用層兩個層面。連接層即TCP層,應用層即http層。
3.3.1 通訊安全
數(shù)據(jù)傳輸?shù)陌踩允欠浅V匾?,目前比較流行的是http加SSL/TLS,即https。SSL/TLS是指非對稱加密。同時還需要證書雙向認證。具體實現(xiàn)過程如下:
(1)終端生成一個隨機數(shù) random-client,連同自己的證書信息、加密方式等傳到服務器端(Say Hello)。
(2)服務器隨后以權威機構頒發(fā)的CA 數(shù)字證書驗證終端的證書;確認無誤后,服務器端也生成一個新的隨機數(shù) random-server,連同服務器的證書和加密公鑰,一起回饋給終端(I got it)。
(3)終端收到后,同樣先以權威機構頒發(fā)的CA 數(shù)字證書驗證服務器的證書;確認無誤后,再次生成一個隨機數(shù),使用服務器的公鑰加密后形成premaster secret發(fā)給服務器。
(4)服務器收到后使用自己的私鑰解密premaster secret,這樣,終端和服務器都有了3個隨機數(shù)(random-client、random-server、premaster secret),此時安全通道已經(jīng)建立,服務器和終端各自根據(jù)這3個隨機數(shù)以及在以上交流中確定的算法算出相同的會話密碼即 session key。以后的通訊雙方均使用session key進行加密和解密。
3.3.2 數(shù)據(jù)傳輸
雖然上述加密過程有些復雜,但卻可確保通訊安全。連接層加密通道建立后,在應用層上使用http協(xié)議進行數(shù)據(jù)傳輸,其最大優(yōu)點是會話結束后便斷開連接,從而節(jié)省TCP資源,但其也有一個最大缺點,就是及時性差。http連接在一般情況下,服務器是沒有辦法找到終端的,只能由終端去找服務器。在過去的項目中,我們設定終端每隔一段時間便主動請求一下服務器,即輪詢poll。服務器收到輪詢請求后如果沒有新的指令要終端執(zhí)行,則回復一個正常的回復報文response;如果有新的指令需要終端執(zhí)行,則回復一個事件報文Distribute,終端收到后便會根據(jù)具體指令,通過串口或USB總線下發(fā)指令操控所連接的設備。
由此可見,如果服務器想要某個設備執(zhí)行某個無法立刻做到的指令,只能等到終端下次輪詢來了才能下發(fā)指令,這種方式對于同步要求不高的陸用場景適用,但智能船舶上會有很多需要設備立刻動作的場景,因此,http傳輸不一定適用,可以考慮用XMPP服務器。
3.4 數(shù)據(jù)服務器平臺
對于物聯(lián)網(wǎng)數(shù)據(jù)服務器來說,不但要求運行穩(wěn)定,而且更重要的是要解決終端高并發(fā)請求的問題;因此,在之前的物聯(lián)網(wǎng)項目中,我們選用Python一個強大的異步服務器框架TORNADO,同時配MongoDB數(shù)據(jù)庫。為了更進一步加強異步效果,采用NGINX 反向代理TORNADO服務器群,等于同時部署多臺TORNADO服務器,利用NGINX作負載均衡,我們在阿里云上進行了試驗,效果非常不錯。服務器群如圖4所示。
Tornado服務器監(jiān)聽8003端口
用戶可以通過瀏覽器登錄服務器平臺管理終端、設置終端的數(shù)據(jù)報告、下載數(shù)據(jù)以及對終端發(fā)送操作指令。服務器平臺同時提供數(shù)據(jù)庫接口,可以向其他應用服務器提供數(shù)據(jù)。
數(shù)據(jù)信息的完整性即元數(shù)據(jù)的概念。如果采集的數(shù)據(jù)信息不完整,數(shù)據(jù)將變得毫無意義。例如,當你采集到一個溫度的數(shù)值時,這一數(shù)據(jù)必須包含描述其一切屬性(包括單位、時間、設備ID編號、設備名稱、采集頻率和周期等等)。
采集終端存儲在MySQL數(shù)據(jù)表ven_info中的信息如圖5所示。
當采集終端第一次連接服務器時,終端會自動讀取以上信息,并生成注冊請求(oadrCreatePartyRegistration)的XML報文,提交給服務器,請求注冊,生成如圖6所示報文。
服務器收到請求后,將其解析成字典(見圖7)或者JSON格式,并存儲在服務器的數(shù)據(jù)庫內(nèi)。
服務器在處理完以上注冊請求后,會給終端一個相應(oadrCreatedPartyRegistration)報文,格式如圖8所示。
在上述報文中,請求ID(pyld:requested)節(jié)點的值為“4027410604”,與終端請求報文中的同名節(jié)點的值相同,代表是同一次請求。同時在相應報文中增加了注冊ID(ei:registrationID)節(jié)點,注冊ID可以在以后的重新注冊中使用,以及輪詢要求(oadr:oadrRequestedOadrPollFreq),其子節(jié)點“xcal:duration”的值為“PT5M”,代表每五分鐘輪詢一次。
以上是OpenADR注冊請求的2次交互,按照OpenADR規(guī)范的要求,采集終端(VEN)和數(shù)據(jù)服務器(VTN)至少要有8組不同的交互報文,簡述如下:
(1)VEN上電后立即注冊
①VEN發(fā)送oadrCreatePartyRegistration注冊請求;
②VTN發(fā)送oadrCreatedPartyRegistration建立注冊;
③VEN發(fā)送oadrRegisterReport注冊報告;
④VTN發(fā)送oadrRegisteredReport,不請求任何報告。
(2)VEN注冊后,按照服務端指定的輪詢頻率,開始發(fā)送oadrPoll輪詢
(3)VTN向設備請求數(shù)據(jù)報告
①VEN發(fā)送oadrPoll輪詢VTN;
②VTN發(fā)送oadrCreateReport;
③VEN發(fā)送oadrCreatedReport。
(4)VEN向VTN上傳數(shù)據(jù)報告
①VEN發(fā)送oadrUpdateReport上傳數(shù)據(jù);
②VTN發(fā)送oadrUpdatedReport確認。
(5)VTN取消VEN的數(shù)據(jù)報告
①VEN發(fā)送oadrPoll輪詢VTN;
②VTN發(fā)送oadrCancelReport取消報告請求;
③VEN發(fā)送oadrCanceledReport確認取消報告請求。
(6)VTN請求設備重新注冊
①VEN發(fā)送oadrPoll輪詢VTN;
②VTN發(fā)送oadrRequestReregistration;
③VEN發(fā)送oadrResponse;
④VEN發(fā)送oadrCreatePartyRegistration;
⑤VTN發(fā)oadrCreatedPartyRegistration。
(7)VTN取消VEN注冊信息
①VEN發(fā)送oadrPoll輪詢VTN;
②VTN發(fā)送oadrCancelPartyRegistration;
③VEN發(fā)oadrCanceledPartyRegistration
(8)VTN向VEN發(fā)送事件信息
①VEN發(fā)送oadrPoll輪詢VTN;
②VTN發(fā)送oadrDistributeEvent;
③VEN發(fā)送oadrCreatedEvent;
④VTN發(fā)送oadrResponse。
以上每組報文,用戶可根據(jù)自己所需要自行制定,力求做到數(shù)據(jù)信息完整。
在將來智能船舶的元數(shù)據(jù)中,首先需要制定統(tǒng)一的元數(shù)據(jù)框架標準,無論數(shù)據(jù)怎樣變化,對于系統(tǒng)來說其框架都是相同的,變化的只是數(shù)值和屬性。這對于船舶龐大而復雜的系統(tǒng)來說至關重要。
本文首先分析智能船舶的數(shù)據(jù)采集和傳輸所面臨的問題與需求,然后,面對底層數(shù)據(jù)采集和傳輸?shù)耐暾院鸵?guī)范性要求,基于物聯(lián)網(wǎng)技術,參考美國OpenADR通訊規(guī)范,以自動需求相應平臺硬件和軟件的開發(fā)設計思路和框架,設計和實現(xiàn)一套針對智能船舶的數(shù)據(jù)系統(tǒng),包括數(shù)據(jù)采集終端、數(shù)據(jù)傳輸和數(shù)據(jù)服務器等三大內(nèi)容,并論述系統(tǒng)數(shù)據(jù)的信息完整性問題,最終實現(xiàn)規(guī)范化的數(shù)據(jù)采集、傳輸和管理,為智能船舶的上層應用平臺奠定良好的基礎。
[1] OpenADR Alliance. OpenADR 2.0 Profile Specification B Profile[R]. 2013.
[2] 中國船級社.智能船舶規(guī)范[S]. 2015:1-39.
Data collection and transmission system of intelligent ship based on OpenADR specif i cation
WU Jun1ZHOU Xiao-wei2LU Yang2
(1. ChangshuRuite Institute of Intelligent Ship Equipment Co., Ltd., Changshu 215500, China; 2. Changshu Ruite Electric Co., Ltd., Changshu 215500, China)
In order to make the underlying data collection and transmission of the intelligent ship complete and regulatory, this paper designs and implements a data collection and transmission system based on the technology of the internet of things. It is developed through the concept and framework of the hardware and software for the automated demand response platform with reference to the American OpenADR Specif i cation. It could provide a good foundation for the application platform of the intelligent ship.
intelligent ship; Internet of Things; data collection and transmission; data platform
U665.261
A
1001-9855(2017)04-0032-07
10.19423 / j.cnki.31-1561 / u.2017.04.032
2017-05-11;
2017-06-30
吳 軍(1967-),男,工程師。研究方向:造船工程、物聯(lián)網(wǎng)工程。
周嘯偉(1983-),男,工程師。研究方向:信息工程、計算機。
魯 楊(1982-),男,工程師。研究方向:自動化系統(tǒng)集成。