(合肥工業(yè)大學(xué) 電氣與自動(dòng)化工程學(xué)院,安徽 合肥 230009)
根據(jù)國(guó)家新能源汽車發(fā)展政策的要求,新生產(chǎn)的新能源汽車必須通過遠(yuǎn)程監(jiān)控平臺(tái)對(duì)整車及電池等關(guān)鍵系統(tǒng)運(yùn)行狀態(tài)進(jìn)行監(jiān)測(cè)和管理[1]。電動(dòng)汽車作為新能源汽車的一種,是未來(lái)汽車產(chǎn)業(yè)發(fā)展的主流方向。對(duì)電動(dòng)汽車進(jìn)行實(shí)時(shí)監(jiān)控,有助于掌握車輛的運(yùn)行狀況和故障信息,確保車輛的安全運(yùn)行。
文獻(xiàn)[2]與文獻(xiàn)[3]提出一種基于CAN總線和GPRS無(wú)線通信網(wǎng)絡(luò)的電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng),實(shí)現(xiàn)了對(duì)電動(dòng)汽車運(yùn)行數(shù)據(jù)的采集。文獻(xiàn)[4]提出了一種基于Telematics的電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng),實(shí)現(xiàn)了車輛終端與服務(wù)終端的數(shù)據(jù)實(shí)時(shí)雙向傳輸。文獻(xiàn)[5]提出基于數(shù)據(jù)采集和無(wú)線遠(yuǎn)程傳輸?shù)碾妱?dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)方案,利用MySQL實(shí)現(xiàn)對(duì)實(shí)時(shí)上傳數(shù)據(jù)的存儲(chǔ)。文獻(xiàn)[6]與文獻(xiàn)[7]提出了基于Matlab和MySQL的電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng)方案,實(shí)現(xiàn)了電動(dòng)汽車運(yùn)行數(shù)據(jù)的存儲(chǔ)和分析。
本文通過對(duì)電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng)的功能進(jìn)行分析,結(jié)合HBase和MySQL的優(yōu)點(diǎn)[8~9],提出了基于MySQL和HBase的數(shù)據(jù)中心解決方案,設(shè)計(jì)了一種電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng)。該系統(tǒng)實(shí)現(xiàn)了電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng)的數(shù)據(jù)采集、存儲(chǔ)和顯示功能,具有對(duì)大量數(shù)據(jù)查詢效率高的特點(diǎn)。
電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng)通過對(duì)車輛運(yùn)行數(shù)據(jù)的采集與分析,可提高車輛運(yùn)行的安全性。為了實(shí)現(xiàn)對(duì)電動(dòng)汽車的遠(yuǎn)程監(jiān)控,遠(yuǎn)程監(jiān)控系統(tǒng)應(yīng)具備以下功能:
① 數(shù)據(jù)的采集與遠(yuǎn)程傳輸功能。系統(tǒng)能夠遠(yuǎn)程獲取車輛的運(yùn)行數(shù)據(jù),并通過無(wú)線通信網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)車輛軟件的遠(yuǎn)程升級(jí)。系統(tǒng)實(shí)現(xiàn)車輛數(shù)據(jù)采集和遠(yuǎn)程升級(jí)功能的前提是數(shù)據(jù)安全可靠的傳輸。
② 數(shù)據(jù)存儲(chǔ)與分析功能。系統(tǒng)需要實(shí)現(xiàn)對(duì)車輛運(yùn)行數(shù)據(jù)的存儲(chǔ)和分析。由于每輛車每年產(chǎn)生的數(shù)據(jù)量有3億多條[10],所以系統(tǒng)應(yīng)具有對(duì)大量歷史數(shù)據(jù)進(jìn)行存儲(chǔ)和分析的能力。同時(shí),隨著電動(dòng)汽車數(shù)量的增多,電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng)對(duì)數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)分析的需求也越來(lái)越大,因此系統(tǒng)需要具備可擴(kuò)展性。
③ 數(shù)據(jù)顯示功能。系統(tǒng)應(yīng)具有對(duì)存儲(chǔ)數(shù)據(jù)的顯示功能,可以為用戶提供車輛運(yùn)行數(shù)據(jù)查詢的可視化界面。
根據(jù)電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng)的功能,將遠(yuǎn)程監(jiān)控系統(tǒng)分為車載終端、數(shù)據(jù)中心和遠(yuǎn)程客戶端三部分,系統(tǒng)總體結(jié)構(gòu)如圖1所示。車載終端實(shí)時(shí)采集車輛位置數(shù)據(jù)、電池管理系統(tǒng)數(shù)據(jù)、動(dòng)力系統(tǒng)數(shù)據(jù)、整車控制系統(tǒng)數(shù)據(jù)等,并將獲取的數(shù)據(jù)上傳到數(shù)據(jù)中心;數(shù)據(jù)中心接收并存儲(chǔ)車載終端上傳的數(shù)據(jù);遠(yuǎn)程客戶端通過與數(shù)據(jù)中心的交互,將獲取的車輛數(shù)據(jù)在客戶端中顯示。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
車載終端是遠(yuǎn)程監(jiān)控系統(tǒng)中的重要組成部分,應(yīng)具有采集車輛的運(yùn)行數(shù)據(jù)和執(zhí)行遠(yuǎn)程控制指令的功能。車載終端采用模塊化設(shè)計(jì),具體包括微處理器模塊、CAN通信模塊、北斗/GPS模塊和無(wú)線傳輸模塊等,基本結(jié)構(gòu)如圖2所示。
圖2 數(shù)據(jù)中心結(jié)構(gòu)框圖
微處理器模塊通過CAN總線獲取動(dòng)力電池信息、電機(jī)信息、整車信息、故障信息等,通過RS232獲取北斗/GPS模塊解析的車輛位置信息和無(wú)線通信模塊接收的控制命令信息,實(shí)現(xiàn)數(shù)據(jù)的采集和控制命令的解析。無(wú)線通信模塊通過RS232接收微處理器模塊的數(shù)據(jù),并利用無(wú)線通信網(wǎng)絡(luò)上傳到數(shù)據(jù)中心;無(wú)線通信模塊通過無(wú)線通信網(wǎng)絡(luò)接收數(shù)據(jù)中心的控制命令并傳遞給微處理器模塊。
為了保障車載終端與數(shù)據(jù)中心之間數(shù)據(jù)交互的安全可靠性,參照國(guó)家標(biāo)準(zhǔn)《電動(dòng)汽車遠(yuǎn)程服務(wù)與管理系統(tǒng)技術(shù)規(guī)范 第3部分 通信協(xié)議及數(shù)據(jù)格式》(GB/T 32960.3-2016)制定基于數(shù)據(jù)包的通信協(xié)議,數(shù)據(jù)包結(jié)構(gòu)定義如表1所示。
表1 數(shù)據(jù)包結(jié)構(gòu)定義
車載終端與數(shù)據(jù)中心進(jìn)行交互的過程中,利用校驗(yàn)機(jī)制、應(yīng)答機(jī)制、心跳機(jī)制和數(shù)據(jù)補(bǔ)發(fā)機(jī)制保障數(shù)據(jù)包的可靠性,采用AES128加密算法對(duì)數(shù)據(jù)單元進(jìn)行加密,保障數(shù)據(jù)的安全性。數(shù)據(jù)包的命令標(biāo)志位主要包括車輛登入(0x01)、實(shí)時(shí)信息上報(bào)(0x02)、補(bǔ)發(fā)信息上報(bào)(0x03)、車輛登出(0x04)、故障模式(0x07)遠(yuǎn)程升級(jí)(0x83)等。其中,實(shí)時(shí)信息上報(bào)的數(shù)據(jù)幀由信息采集時(shí)間信息采集的時(shí)間(BYTE[6])、信息類型標(biāo)志(BYTE[1])和信息體(根據(jù)信息類型的不同,長(zhǎng)度和數(shù)據(jù)類型不同)。信息類型包括整車數(shù)據(jù)、動(dòng)力電機(jī)數(shù)據(jù)、車輛位置數(shù)據(jù)、極值數(shù)據(jù)等。以整車數(shù)據(jù)為例,整車數(shù)據(jù)包括車輛狀態(tài)(BYTE[1])、充電狀態(tài)(BYTE[1])、累計(jì)里程(WORD[4])、車速(WORD[2])、總電壓(WORD[2])、總電流(WORD[2])、SOC(BYTE[1])、DC-DC狀態(tài)(BYTE[1])。
車載終端的工作模式可分為3種[11]:正常模式、故障模式和遠(yuǎn)程升級(jí)模式。正常模式下,數(shù)據(jù)包的命令標(biāo)識(shí)為0x02,數(shù)據(jù)上傳的時(shí)間周期為30 s;當(dāng)發(fā)生故障時(shí),數(shù)據(jù)包的命令標(biāo)識(shí)為0x07,車載終端進(jìn)入故障模式,數(shù)據(jù)上傳的時(shí)間周期調(diào)整為1 s;當(dāng)數(shù)據(jù)中心對(duì)車載終端的軟件進(jìn)行升級(jí)時(shí),數(shù)據(jù)包的命令標(biāo)識(shí)為0x83,車載終端在用戶允許的情況下進(jìn)入遠(yuǎn)程升級(jí)模式,此時(shí)車載終端下載可執(zhí)行性文件并存儲(chǔ),文件下載完畢后軟件自動(dòng)升級(jí)。
利用Hadoop分布式處理架構(gòu)和云服務(wù)器搭建數(shù)據(jù)中心,數(shù)據(jù)庫(kù)選用HBase和MySQL。Hadoop、HBase和云服務(wù)器均具有擴(kuò)展性強(qiáng)、便于維護(hù)的優(yōu)點(diǎn)[12],有助于解決遠(yuǎn)電動(dòng)汽車運(yùn)行過程中產(chǎn)生的大量歷史數(shù)據(jù)難以存儲(chǔ)的問題。同時(shí),HBase具有可隨時(shí)讀寫大規(guī)模數(shù)據(jù)的優(yōu)點(diǎn),滿足遠(yuǎn)程監(jiān)控系統(tǒng)高效查詢大量數(shù)據(jù)的需求。MySQL具有面向磁盤存儲(chǔ)、帶有索引結(jié)構(gòu)的特點(diǎn),滿足遠(yuǎn)程監(jiān)控系統(tǒng)數(shù)據(jù)實(shí)時(shí)顯示對(duì)存儲(chǔ)數(shù)據(jù)庫(kù)性能的需求。
數(shù)據(jù)中心包括數(shù)據(jù)接收模塊(具體包括車載終端數(shù)據(jù)接收子模塊和遠(yuǎn)程客戶端數(shù)據(jù)接收子模塊)、數(shù)據(jù)存儲(chǔ)模塊和數(shù)據(jù)分析模塊。實(shí)現(xiàn)數(shù)據(jù)中心與車載終端交互、對(duì)車輛運(yùn)行數(shù)據(jù)存儲(chǔ)分析和與遠(yuǎn)程客戶端交互的功能。數(shù)據(jù)中心結(jié)構(gòu)如圖3所示。
圖3 數(shù)據(jù)中心結(jié)構(gòu)框圖
車載終端數(shù)據(jù)接收子模塊與車載終端建立穩(wěn)定的TCP連接,利用多線程技術(shù)對(duì)車載終端上傳的數(shù)據(jù)包進(jìn)行BCC校驗(yàn)和解密處理并將數(shù)據(jù)存入緩存隊(duì)列中,調(diào)用JDBC接口,將經(jīng)過處理后的緩存隊(duì)列中的數(shù)據(jù)存入數(shù)據(jù)庫(kù)。其中針對(duì)軌跡數(shù)據(jù)中存在大量冗余數(shù)據(jù)的問題,采用基于閾值結(jié)合的軌跡壓縮算法[13]。
遠(yuǎn)程客戶端數(shù)據(jù)接收子模塊采用ThinkPHP3.2框架;通過監(jiān)聽80端口接收HTTP協(xié)議數(shù)據(jù)并解析,查詢數(shù)據(jù)庫(kù)中相關(guān)數(shù)據(jù)并封裝成JSON格式回傳給遠(yuǎn)程客戶端,從而實(shí)現(xiàn)與遠(yuǎn)程客戶端的交互。
數(shù)據(jù)存儲(chǔ)模塊包括關(guān)系型數(shù)據(jù)庫(kù)MySQL和非關(guān)系型數(shù)據(jù)庫(kù)HBase。MySQL是基于表格結(jié)構(gòu)和行模式存儲(chǔ)的數(shù)據(jù)庫(kù),可以利用SQL語(yǔ)句方便地查詢非常復(fù)雜的數(shù)據(jù),適用于數(shù)量較小的數(shù)據(jù)存儲(chǔ),但是可擴(kuò)展性較差,無(wú)法完成數(shù)據(jù)量較大的數(shù)據(jù)存儲(chǔ)。HBase是基于列存儲(chǔ)的數(shù)據(jù)庫(kù),雖然只能表示簡(jiǎn)單的鍵-數(shù)據(jù)關(guān)系,但是可擴(kuò)展性較強(qiáng)、安全性高[14],適用于數(shù)量較大的數(shù)據(jù)存儲(chǔ)。車輛運(yùn)行的近期數(shù)據(jù)數(shù)量小,且主要是車輛的實(shí)時(shí)數(shù)據(jù),用于遠(yuǎn)程客戶端對(duì)車輛實(shí)時(shí)運(yùn)行狀況的查詢;車輛運(yùn)行的歷史數(shù)據(jù)主要是車輛運(yùn)行過程中關(guān)鍵系統(tǒng)的運(yùn)行狀態(tài)數(shù)據(jù),隨著時(shí)間的增加,數(shù)量巨大。因此,選用MySQL作為電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng)近期數(shù)據(jù)的存儲(chǔ)數(shù)據(jù)庫(kù);采用HBase作為大量歷史數(shù)據(jù)的存儲(chǔ)數(shù)據(jù)庫(kù)。MySQL中保存的數(shù)據(jù)用于遠(yuǎn)程客戶端實(shí)時(shí)顯示,系統(tǒng)通過Sqoop定期把MySQL中的數(shù)據(jù)遷移至HBase中保存,HBase中保存的數(shù)據(jù)用于為電動(dòng)汽車實(shí)際道路工況下的車輛性能考核和整車控制策略優(yōu)化提供數(shù)據(jù)支持。
遠(yuǎn)程客戶端數(shù)據(jù)分析模塊采用MapReduce框架,實(shí)現(xiàn)對(duì)車輛運(yùn)行數(shù)據(jù)的分析。數(shù)據(jù)分析模塊通過對(duì)動(dòng)力電池?cái)?shù)據(jù)和動(dòng)力電機(jī)數(shù)據(jù)進(jìn)行分析,為優(yōu)化電池管理系統(tǒng)的控制策略和整車控制策略提供科學(xué)的依據(jù);通過對(duì)位置數(shù)據(jù)進(jìn)行處理,得到當(dāng)前位置和用戶的駕駛行為特征,實(shí)現(xiàn)充電導(dǎo)航和駕駛習(xí)慣分析;通過對(duì)故障信息和相關(guān)部件故障前后的數(shù)據(jù)進(jìn)行分析,實(shí)現(xiàn)故障預(yù)警和故障處理效率的提高。
遠(yuǎn)程客戶端是采用HTML5+CSS3+JavaScript技術(shù)進(jìn)行設(shè)計(jì)的Web客戶端。當(dāng)用戶登錄遠(yuǎn)程客戶端查詢車輛運(yùn)行數(shù)據(jù)時(shí),客戶端利用頁(yè)面的JavaScript腳本調(diào)用XMLHttpRequest對(duì)象向數(shù)據(jù)中心發(fā)送異步請(qǐng)求,并將返回的JSON數(shù)據(jù)利用百度地圖和EChart圖表化顯示。
遠(yuǎn)程客戶端界面包括個(gè)人中心車輛信息、充電導(dǎo)航和位置信息4個(gè)菜單欄(如圖4所示):
① 個(gè)人中心包括密碼修改和個(gè)人基本信息展示;
② 車輛信息包括動(dòng)力電池?cái)?shù)據(jù)查詢、動(dòng)力電機(jī)數(shù)據(jù)查詢和故障診斷數(shù)據(jù)查詢;
③ 充電導(dǎo)航尋找可達(dá)充電樁并推薦相應(yīng)的行駛路徑;
④ 位置信息包括當(dāng)前位置信息查詢和歷史軌跡信息查詢。
圖4 遠(yuǎn)程客戶端運(yùn)行界面
本文測(cè)試環(huán)境使用5臺(tái)云服務(wù)器,構(gòu)建一主四從的Hadoop集群。每臺(tái)服務(wù)器上的軟件版本如表2所示。
表2 軟件版本對(duì)應(yīng)表
用戶登錄遠(yuǎn)程客戶端,可以查詢車輛的運(yùn)行狀態(tài)信息,包括動(dòng)力電池電流、動(dòng)力電池電壓、動(dòng)力電機(jī)轉(zhuǎn)速等。以動(dòng)力電池?cái)?shù)據(jù)的查詢?yōu)槔?,?dāng)用戶查詢動(dòng)力電池?cái)?shù)據(jù)時(shí),動(dòng)力電池電流和電壓數(shù)據(jù)會(huì)在客戶端中顯示,如圖5所示。
下面將從數(shù)據(jù)庫(kù)中查詢相同數(shù)量的數(shù)據(jù)所消耗的時(shí)間長(zhǎng)短作為衡量數(shù)據(jù)庫(kù)查詢效率高低的標(biāo)準(zhǔn)。在測(cè)試環(huán)境下,從MySQL和HBase中分別查詢相同數(shù)量的動(dòng)力電池電流數(shù)據(jù),記錄每次查詢所消耗的時(shí)間,將記錄的數(shù)據(jù)繪制成曲線如圖6所示。
由圖6可以看出,隨著動(dòng)力電池?cái)?shù)據(jù)查詢數(shù)量的增加,兩種數(shù)據(jù)庫(kù)的查詢所消耗時(shí)間都相應(yīng)增加。當(dāng)查詢數(shù)據(jù)量較小時(shí),HBase查詢所消耗的時(shí)間比MySQL多;當(dāng)查詢數(shù)據(jù)量較大時(shí),HBase查詢所消耗的時(shí)間比MySQL少,并且隨著數(shù)據(jù)量的增加,兩者查詢所消耗的時(shí)間差越來(lái)越大,當(dāng)所查詢的數(shù)據(jù)量達(dá)到100000條時(shí),MySQL的查詢耗時(shí)是HBase的7倍。因此,選用MySQL作為電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng)近期數(shù)據(jù)的存儲(chǔ)數(shù)據(jù)庫(kù),實(shí)現(xiàn)遠(yuǎn)程客戶端與數(shù)據(jù)中心的實(shí)時(shí)交互功能;選用HBase作為歷史數(shù)據(jù)的存儲(chǔ)數(shù)據(jù)庫(kù),提高數(shù)據(jù)查詢效率。
圖5 動(dòng)力電池電流和電壓曲線
圖6 MySQL和HBase查詢耗時(shí)對(duì)比圖
通過分析電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng)的功能,設(shè)計(jì)了一種的電動(dòng)汽車遠(yuǎn)程監(jiān)控系統(tǒng),其中,利用北斗/GPS模塊、CAN總線模塊和無(wú)線通信模塊設(shè)計(jì)了車載終端,實(shí)現(xiàn)了車輛運(yùn)行數(shù)據(jù)的采集和遠(yuǎn)程傳輸;通過利用Hadoop分布式處理架構(gòu)和云服務(wù)器搭建了數(shù)據(jù)中心,實(shí)現(xiàn)了數(shù)據(jù)的存儲(chǔ)和分析;利用HTML+CSS+JavaScript開發(fā)了Web遠(yuǎn)程客戶端,實(shí)現(xiàn)了數(shù)據(jù)分析結(jié)果的顯示。最后,通過對(duì)比分析了從HBase和MySQL中查詢相同數(shù)量的數(shù)據(jù)所消耗的時(shí)間,結(jié)果表明本文所設(shè)計(jì)的系統(tǒng)在對(duì)大量歷史數(shù)據(jù)進(jìn)行查詢時(shí)具有效率高的優(yōu)點(diǎn)。所設(shè)計(jì)的系統(tǒng)不僅可實(shí)現(xiàn)對(duì)電動(dòng)汽車的遠(yuǎn)程監(jiān)控,而且能夠?yàn)殡妱?dòng)汽車的進(jìn)一步優(yōu)化研究提供數(shù)據(jù)分析平臺(tái),有利于推動(dòng)電動(dòng)汽車產(chǎn)業(yè)的發(fā)展。