李祥,馮拔,葉標,劉凱
(長沙中車智馭新能源科技有限公司網聯(lián)應用技術部,湖南 長沙 410006)
在政策和技術進步的共同推動下,全球電動客車市場迅速發(fā)展,今年由于新冠肺炎疫情的影響,增速有所放緩,但對于出行交通的安全化、舒適化要求卻越來越高,因此整車廠在生產車輛的同時,也必須開發(fā)相應的網聯(lián)化平臺,電動客車遠程控制平臺正是在此背景下應運而生的[1-2]。
現(xiàn)有的GB/T 32960-2016《電動汽車遠程服務與管理系統(tǒng)技術規(guī)范》,規(guī)定了車載終端上傳到國家監(jiān)控平臺的數(shù)據(jù)格式及內容,而電動客車遠程控制平臺在此基礎上,進行了自定義的拓展。電動客車遠程控制平臺在實際開發(fā)過程中,調試人員需要對照電動客車遠程控制協(xié)議進行人工比對解析,導致耗費大量的時間且容易出錯。
針對上述存在的問題,本文結合電動客車遠程控制協(xié)議,設計并開發(fā)了電動客車遠程控制協(xié)議解析系統(tǒng)。該系統(tǒng)包括系統(tǒng)架構設計、系統(tǒng)功能設計、系統(tǒng)數(shù)據(jù)庫設計以及系統(tǒng)主要功能實現(xiàn)。在實際的解析過程中,此系統(tǒng)完美地解決了數(shù)據(jù)報文解析,提高了工作效率。
電動客車遠程控制協(xié)議用來規(guī)范車載遠程監(jiān)控終端與電動客車遠程控制平臺端間通信數(shù)據(jù)格式[3],操作移動手機端進行車況查看、車輛部件控制、一鍵診斷等。其中,數(shù)據(jù)單元部分內容為:第三鏈路狀態(tài)查詢數(shù)據(jù)單元、第三鏈路狀態(tài)設置數(shù)據(jù)單元、遠程車輛控制數(shù)據(jù)單元、車輛部件控制狀態(tài)反饋數(shù)據(jù)單元、車輛部件狀態(tài)數(shù)據(jù)單元、一鍵診斷數(shù)據(jù)單元。電動客車遠程控制協(xié)議的數(shù)據(jù)包結構及定義如表1所示。

表1 數(shù)據(jù)包結構及定義
電動客車遠程控制協(xié)議解析系統(tǒng)除了對車載遠程監(jiān)控終端與電動客車遠程控制平臺通信的數(shù)據(jù)報文進行解析,還包括對十六進制轉換為文本字符串、十六進制轉換為日期、十六進制轉換為十進制等功能。調試人員通過CAN網絡采集電動客車遠程控制協(xié)議報文后,將數(shù)據(jù)包報文在WEB端電動客車遠程控制協(xié)議解析系統(tǒng)進行解析,待解析完后將報文結果可視化展示。
電動客車遠程控制協(xié)議解析系統(tǒng)軟件架構采用三層體系結構[4],包括數(shù)據(jù)展示層、數(shù)據(jù)處理層、數(shù)據(jù)存儲層,體系結構如圖1所示。

圖1 體系結構
數(shù)據(jù)展示層:用戶將采集數(shù)據(jù)輸入到前臺頁面的文本域,點擊提交按鈕提交請求到服務端的后臺,后臺處理完后把結果返回給前臺數(shù)據(jù)頁面。數(shù)據(jù)展示層運用HTML、CSS、BootStrap、JavaScript等技術,將后臺的處理結果渲染到前臺頁面。
數(shù)據(jù)處理層:服務端接受前臺傳遞過來的報文數(shù)據(jù),根據(jù)電動客車遠程控制協(xié)議,識別命令指令,包括第三鏈路狀態(tài)查詢、第三鏈路狀態(tài)設置、遠程車輛控制、車輛部件控制狀態(tài)反饋、車輛部件狀態(tài)等指令,從而進行數(shù)據(jù)處理。
數(shù)據(jù)存儲層:在數(shù)據(jù)處理的過程中,既包括原始報文數(shù)據(jù)的持久化到MYSQL數(shù)據(jù)中,又包括實際業(yè)務數(shù)據(jù)的持久化,將數(shù)據(jù)持久化到磁盤中,避免數(shù)據(jù)的丟失。
電動客車遠程控制協(xié)議解析系統(tǒng)主要是幫助開發(fā)與調試人員快速解析遠程控制報文,其主要功能包括第三鏈路狀態(tài)查詢報文解析、第三鏈路狀態(tài)設置報文解析、遠程車輛控制報文解析、車輛部件控制狀態(tài)反饋報文解析、車輛部件狀態(tài)報文解析、一鍵診斷報文解析以及進制轉換功能,功能設計如圖2所示。

圖2 功能設計
第三鏈路狀態(tài)查詢包括參數(shù)設置時間、參數(shù)總數(shù)、參數(shù)項列表,第三鏈路狀態(tài)設置也包括參數(shù)設置時間、參數(shù)總數(shù)、參數(shù)項列表。
遠程車輛控制報文解析包括時間、命令ID、命令參數(shù),其中命令參數(shù)包括車輛啟動、車輛熄火、車前門開、車前門關、車后門開、車后門關、車中門開、車中門關、空調開、空調關、小燈開、小燈關、近光開、近光關、遠光開、遠光關、鎖車、解鎖、電加熱開啟、電加熱關閉、喇叭開啟、喇叭關閉、駕駛模式、限制車速、限制驅動功率、車輛蠕行開啟、車輛蠕行關閉、雙閃開啟、雙閃關閉、開始一鍵診斷、停止一鍵診斷。
車輛(部件)控制狀態(tài)反饋內容包括控制指令下發(fā)時間、命令ID、控制響應狀態(tài)、命令狀態(tài)描述,其中控制響應狀態(tài)包括響應控制指令成功、響應控制指令失敗、遠程控制校驗成功、遠程控制校驗失敗、車身控制器未響應控制請求。
車輛(部件)狀態(tài)包括數(shù)據(jù)采集時間、信息類型標志(1)、信息體(1)、信息類型標志(n)、信息體(n)。部件運行狀態(tài)包括:模式、鎖車、空調、電池加熱、小燈、前大燈(近光)、前大燈、(遠光)、前門、中門、后門、喇叭、駕駛模式、車速、驅動電機功率、車輛蠕行、車輛溜車制動百分比、車輛電制動響應速率、雙閃、車輛驅動響應速率、啟動熄火。
車輛診斷數(shù)據(jù)包括數(shù)據(jù)采集時間、診斷數(shù)據(jù)。其中診斷數(shù)據(jù)有燈光系統(tǒng)診斷狀態(tài)、門控系統(tǒng)診斷狀態(tài)、驅動散熱系統(tǒng)診斷、驅動系統(tǒng)診斷、儲能散熱系統(tǒng)診斷、轉向診斷、泵氣系統(tǒng)診斷、空調診斷、燈光系統(tǒng)故障代碼、門控系統(tǒng)故障代碼、驅動散熱系統(tǒng)故障代碼、儲能散熱系統(tǒng)故障代碼、驅動系統(tǒng)故障代碼、儲能系統(tǒng)故障代碼、轉向系統(tǒng)故障代碼、泵氣系統(tǒng)故障代碼、空調系統(tǒng)故障代碼、總體診斷狀態(tài)。
電動客車遠程控制協(xié)議解析系統(tǒng)數(shù)據(jù)庫設計即數(shù)據(jù)表的設計,本系統(tǒng)主要涉及的表為:原始碼流信息表(origin_data)、狀態(tài)查詢信息表(state_search)、狀態(tài)設置信息表(state_setup)、遠程車輛控制信息表(remote_control)、車輛部件控制狀態(tài)反饋信息表(remote_control_feedback)、車輛部件狀態(tài)信息表(vehicle_state)、一鍵診斷信息表(oneclick_diagnosis)。
電動客車遠程控制平臺的數(shù)據(jù)報文有兩個流向:上行和下行。上行是指車載終端到電動客車遠程控制平臺的通信,下行是指電動客車遠控平臺到車載終端的通信。無論是上行還是下行,對于電動客車遠程控制協(xié)議解析系統(tǒng)來說,并無本質上的區(qū)別,用戶在CAN網絡采集到的數(shù)據(jù)報文,放到電動客車遠程控制平臺進行解析,流程如圖3所示。

圖3 流程設計
本系統(tǒng)的具體實現(xiàn)過程中,選用Java語言作為開發(fā)語言,Idea作為開發(fā)工具,Maven作為Jar包管理工具,采用流行的SpringBoot、Mybatis等框架技術。本文對遠程車輛控制報文解析、一鍵診斷功能進行詳細的實現(xiàn)描述[5]。
遠程車輛控制報文解析功能的實現(xiàn),其主要流程為:采集報文、持久化報文、解析報文、展示結果。其中,采集報文的步驟為:首先通過CAN網絡進行數(shù)據(jù)的采集,然后將采集到數(shù)據(jù)報文在WEB端的電動客車遠程控制協(xié)議解析系統(tǒng)發(fā)起請求,請求到達RemoteControlController類上,進行原始報文數(shù)據(jù)的持久化、解析報文,最后將處理的結果返回給客戶端。遠程車輛控制報文解析功能實現(xiàn)如圖4所示。

圖4 車輛遠程控制功能實現(xiàn)
對于一鍵診斷功能,將采集的數(shù)據(jù)報文放到電動客車遠程控制協(xié)議解析系統(tǒng)文本輸入框,點擊解析按鈕發(fā)送Ajax請求到后臺,請求體中包含用戶請求的參數(shù)(即數(shù)據(jù)報文),在后臺的DiagnoseStatusController程序類及getFrontMsg(String orginData)方法上,貼上@RequestMapping注解用來處理請求地址映射,而后在方法里面進行實際的業(yè)務邏輯處理,處理完后將處理結果封裝DiagnoseStatus對象中去,再借助Gson工具類把DiagnoseStatus對象轉成json字符串,將結果返回給前臺頁面進行結果的渲染,如圖5為一鍵診斷的具體實現(xiàn)。

圖5 一鍵診斷功能實現(xiàn)
本文在電動客車遠程控制協(xié)議的基礎上,對電動客車遠程控制協(xié)議解析系統(tǒng)進行設計,包括架構設計、功能設計、數(shù)據(jù)庫設計,并采用Java語言對功能進行了實現(xiàn)。目前,電動客車遠程控制協(xié)議解析系統(tǒng)在實際的運用過程中,調試人員采集數(shù)據(jù)報文后將報文放到電動客車遠程控制協(xié)議解析系統(tǒng),能夠很好地解析出協(xié)議的內容,滿足實際的調試需求,提高了工作效率;同樣,也對其他系統(tǒng)的設計與實現(xiàn)有很好的借鑒意義。