孫似海,胡攀攀,唐曉新
?。ê戏蕠幐呖苿恿δ茉从邢薰?,安徽 合肥 230012)
摘要:為了提高電池的實時監(jiān)控能力,并確保其安全運行,電動汽車遠程監(jiān)控系統(tǒng)逐漸成為各個廠家積極研究的重要課題。著重介紹了一種標準化電動汽車遠程監(jiān)控系統(tǒng)的設計思路、關鍵技術分析以及具體實現(xiàn)手段。通過將車載終端連接到電池管理系統(tǒng)的內(nèi)部CAN網(wǎng)絡中,設計出一套標準化的內(nèi)部CAN通信協(xié)議,標準化的電池管理系統(tǒng)主機軟件、遠程監(jiān)控車載終端軟件及其上位機配置軟件,解決了整車廠通信協(xié)議差異導致的各種問題,并在多種車輛上實際驗證了系統(tǒng)的正確性,達到了預期效果。
關鍵詞:遠程監(jiān)控;內(nèi)部CAN;車載監(jiān)控終端;標準化
0引言
電動汽車具有節(jié)能、環(huán)保的優(yōu)點,是未來汽車行業(yè)發(fā)展的一大趨勢。關注電動汽車最多的一點就是其安全性,非常有必要對電動汽車的位置信息、行駛狀態(tài)信息和動力電池組信息進行監(jiān)測和分析,實現(xiàn)車輛的遠程調度和提前預警[1]。遠程監(jiān)控終端是指通過GPS設備對被監(jiān)控車輛實現(xiàn)衛(wèi)星定位,將被監(jiān)控車輛的經(jīng)緯度、速度、衛(wèi)星時間、動力電池組狀態(tài)等數(shù)據(jù)進行處理后,通過GSM/GPRS模塊實時上傳至中心監(jiān)控服務器,再由服務器對數(shù)據(jù)進行處理,便可得到被監(jiān)控車輛所在的精確位置信息及其電池組信息[23]。
基于內(nèi)網(wǎng)的遠程監(jiān)控車載終端標準化的目的在于:(1)提高產(chǎn)品通用性,減少因客戶不同帶來二次開發(fā);(2)提高產(chǎn)品穩(wěn)定性,避免臨時設計帶來不確定性;(3)提高快速響應能力,降低遠程監(jiān)控終端出差調測頻率。本文實現(xiàn)了內(nèi)網(wǎng)批量數(shù)據(jù)的接收、分析及處理,遠端批量數(shù)據(jù)實時上傳,系統(tǒng)重要參數(shù)存儲等功能,使得標準化遠程監(jiān)控終端模塊靈活捕捉電池管理系統(tǒng)INCAN報文信息,不再受限于客戶CAN線協(xié)議,并且上位機軟件設計靈活配置終端模塊重要關聯(lián)參數(shù)。
1遠程監(jiān)控系統(tǒng)設計
圖1遠程監(jiān)控系統(tǒng)結構系統(tǒng)組織架構如圖1所示,可以看出,整個遠程監(jiān)控系統(tǒng)架構可分為前端、后端兩個部分,前端部分安裝在整車上,包括電池管理系統(tǒng)(BMS)的主、從機模塊和車載遠程監(jiān)控終端;后端部分是在遠程監(jiān)控中心,運行在PC上,包括服務器和客戶端平臺。下面具體介紹各模塊的設計。
1.1BMU(電池管理系統(tǒng)從機)
BMU采用英飛凌XC886系列8位單片機,實時采集電池各個單體電壓及溫度信息并通過內(nèi)部CAN發(fā)送給BMS主機,一般每個BMS主機模塊上都對應連接數(shù)個BMU從機模塊,這主要由電動汽車擁有的動力電池組數(shù)量和安裝方式?jīng)Q定。
1.2CCU(電池管理系統(tǒng)主機)
CCU采用英飛凌XC2267M系列16位單片機,實時采集電池組的總電流,并通過內(nèi)部CAN接收各個BMU發(fā)送的電壓、溫度信息;同時經(jīng)過程序運算處理,獲取當前電池組的總電壓、荷電狀態(tài)(State of Charge,SoC),以及電池組的單體最高電壓、最低電壓、最高溫度、最低溫度、絕緣阻值等,然后根據(jù)不同車輛的控制策略,判斷當前電池組運行狀況是否正常。CCU通過CAN總線將以上所有信息傳輸給車載遠程監(jiān)控終端。
1.3遠程車載終端
遠程車載終端采用ARM CortexM3作為處理器,主要用來接收CCU上傳的電池組數(shù)據(jù)信息以及故障信息然后把接收的相關信息經(jīng)過處理,按照一定的協(xié)議格式,通過GPRS網(wǎng)絡傳輸給監(jiān)控中心服務器。
1.4上位機終端配置
根據(jù)不同車輛信息,統(tǒng)一配置車載遠程終端設備的具體參數(shù),如電池組的從機個數(shù)、各個電池組的單體個數(shù)等。
1.5遠程監(jiān)控中心
遠程監(jiān)控中心主要包括PC端的遠程監(jiān)控服務器和客戶端,服務器用于接收和存儲車載遠程監(jiān)控終端上傳的實時電池信息,客戶端用于實時顯示各個監(jiān)控終端上報的設備信息以及故障狀態(tài)、報警信息、地理位置等。目前應用服務器的標配時可以同時接收幾千個GPRS模塊上報的數(shù)據(jù)信息。
考慮到車載遠程監(jiān)控系統(tǒng)的標準化目的,主要研究的是前端部分的設計與實現(xiàn),即電池管理系統(tǒng)主機模塊CCU、從機模塊BMU、車載遠程終端模塊之間的通信方式以及相關協(xié)議。至于后端部分,即從車載遠程終端到服務器以及服務器到客戶端之間的通信方式和實現(xiàn)方式,主要是網(wǎng)絡協(xié)議和數(shù)據(jù)庫操作相關內(nèi)容,處理方式相對比較固定,并且在PC上運行處理,不在此文的研究之中。
2關鍵技術研究
本項目中,為了兼容各個電動汽車廠家的通信協(xié)議,基于內(nèi)部CAN網(wǎng)絡,研究設計一種新型的標準化遠程監(jiān)控系統(tǒng),形成一種內(nèi)網(wǎng)協(xié)議標準化、內(nèi)網(wǎng)各模塊軟件功能標準化以及車載遠程監(jiān)控終端模塊上位機配置標準化的標準化遠程監(jiān)控系統(tǒng),如圖2所示。
2.1遠程監(jiān)控系統(tǒng)內(nèi)網(wǎng)協(xié)議標準化
CAN總線采用了多主競爭式總線結構,具有多主站運行和分散仲裁的串行總線以及廣播通信的特點[4]。CAN總線上任意節(jié)點可在任意時刻主動地向網(wǎng)絡上其他節(jié)點發(fā)送信息而不分主次,因此可在各節(jié)點之間實現(xiàn)自由通信[5]。
本項目中,參考CAN2.0B和SAE J1939的相關規(guī)定,內(nèi)網(wǎng)傳輸應用CAN總線通信的方式,并開發(fā)設計內(nèi)網(wǎng)協(xié)議。車載遠程監(jiān)控終端一方面循環(huán)接收電池管理系統(tǒng)各從機模塊發(fā)送的各個電池單體電壓、溫度信息,另一方面接收電池管理系統(tǒng)主機發(fā)送的經(jīng)過運算處理后的電池信息。為了完成上述功能,需要重新開發(fā)設計基于內(nèi)部CAN總線的通信協(xié)議,實現(xiàn)內(nèi)網(wǎng)協(xié)議標準化、統(tǒng)一化。設計后的協(xié)議主要內(nèi)容如下。
(1) 電池組總信息報文BMU_INFO_ TOTAL。此報文ID為0x18014201,用于BMS主機傳輸從機個數(shù)、電池組總電壓、總電流、SOC等值給遠程監(jiān)控終端。
(2) 電池組極值電壓報文BMU_INFO _VOLTAGE。此報文ID為0x18014202,用于BMS主機將電池組的極值電壓值及其地址傳輸給遠程監(jiān)控終端。
(3) 電池組極值溫度報文BMU_INFO _TEMP。此報文ID為0x18014203,用于BMS主機將電池組的極值溫度值及其地址值傳輸給遠程監(jiān)控終端。
(4) 每個從機監(jiān)控的電池單體個數(shù)配置報文BMU_INFO_CELL_COUNT。此報文ID為0x18014204和0x18014105,每條報文可以表示8個從機模塊各自監(jiān)控的電池單體個數(shù),總計可以監(jiān)控16個從機模塊各自監(jiān)控的電池單體個數(shù)。
2.2遠程監(jiān)控內(nèi)網(wǎng)各模塊軟件標準化
考慮到電池管理系統(tǒng)從機模塊軟件比較穩(wěn)定,且從機模塊往往安裝在電池箱內(nèi)部,所以盡量不去修改它,重點是重新開發(fā)CCU和車載終端部分的軟件。CCU和車載終端的程序代碼均是用C語言編寫,在Keil uVision4環(huán)境中編譯生成燒寫文件。
(1)BMS主機程序按照協(xié)議規(guī)定,以CAN報文的方式將相關電池信息發(fā)送到內(nèi)網(wǎng)中。下面以發(fā)送電池組極值電壓信息為例說明。
首先在頭文件中定義:
#define CAN_BMUCRGP_VOLTAG E_TXID0x18014202// 獲取極值電壓信息
#define CAN_BMUCRGP_VOLTAG E_TXMOB102
#define CAN_BMUCRGP_VOLTAG E_TXMOB_MOAR (CAN_MOB_PRICAN_MOB_IDE | CAN_BMUCRGP_ VOLTAGE_ TXID)
然后在源文件中進行CAN報文的組包并調用發(fā)送函數(shù)。
FrameObj.ubMOCfg=0x78;//IDE,(DIR=TX)DATA Frame,8Data Length code
FrameObj.ulID=CAN_BMUCRGP_VOLTAGE_TXID;
FrameObj.ulMask=CAN_BMURX_MASK ;
FrameObj.ubData[0]=(INT8U)(MaxCellVolt );// 最高電壓低字節(jié)
FrameObj.ubData[1]=(INT8U)(MaxCellVolt >> 8);// 最高電壓高字節(jié)
FrameObj.ubData[2]=(INT8U)(MinCellVolt );// 最低電壓低字節(jié)
FrameObj.ubData[3]=(INT8U)(MinCellVolt>>8);// 最低電壓高字節(jié)
FrameObj.ubData[4]=(INT8U)(((MaxCellVolt No & 0xF00) >> 8 ));// 最高電壓箱號
CAN_vConfigMsgObj(CAN_BMUCRGP_VOLTAGE_TXMOB,&FrameObj);
CAN_vTransmit(CAN_BMUCRGP_VOLTAGE_TXMOB);
(2) 編寫車載遠程監(jiān)控終端程序代碼,從內(nèi)網(wǎng)中接收各個從機模塊傳輸?shù)母鱾€單體電壓信息和溫度信息,同時接收BMS主機傳輸?shù)碾姵乜傮w信息和極值信息,然后將以上所有信息通過GPRS模塊上傳到遠程服務器。下面分別以接收BMU從機模塊單體電壓信息和接收BMS主機模塊的極值電壓信息為例說明。
?、佘囕d遠程監(jiān)控終端循環(huán)接收各BMU從機模塊的單體電壓信息,代碼如下。
if((MessageCAN0.CANID&0xFFF0FF00) == 0x18004100)// 過濾從機報文ID
{
SA=(unsignedshort)(MessageCAN0.CANID & 0x000000FF)-1;// 從機編號
volIndex=(unsignedchar)(((Message CAN0.CANID&0x000F0000) >>16)) - 1;//電池序號
for (mesID = 0; mesID < 8; mesID++)
{if(MessageCAN0.DATA[mesID+1] > 0)
{g_sCellInfo.CellVtg[bmu_cell_num_start[SA]+volIndex*8+mesID]=MessageCAN0.DATA[mesID+1];// 獲取電池單體電壓
}
}
}
FrameObj.ubData[6]=(INT8U)(((MinCellVoltNo & 0xF00) >> 8));//最低電壓箱號
FrameObj.ubData[7]=(INT8U)MinCellVoltNo;// 最低電壓節(jié)號
FrameObj.ubData[5]=(INT8U)MaxCellVoltNo;// 最高電壓節(jié)號
while((!(CAN_ubRequestMsgObj(CAN_BMUCRGP_VOLTAGE_TXMOB))) && (uitemp ++ < 1000)){;}
?、谲囕d遠程監(jiān)控終端接收BMS主機模塊的極值電壓代碼如下。
if(MessageCAN0.CANID==0x18014202)// 獲取極值電壓信息值
{
index=(MessageCAN0.DATA[3]* 256+MessageCAN0.DATA[2]);// 單體最高電壓
g_sExtremInfo.MinVtgCell[2]=(unsigned char)(index >> 8);
g_sExtremInfo.MinVtgCell[3]=(unsigned char)index;
index=(MessageCAN0.DATA[1] * 256 + MessageCAN0.DATA[0]);// 單體最低電壓
g_sExtremInfo.MaxVtgCell[2]=(unsigned char)(index >> 8);
g_sExtremInfo.MaxVtgCell[3]=(unsigned char)index;
g_sExtremInfo.MaxVtgCell[0]=MessageCAN0.DATA[4];// 最高電壓箱號
g_sExtremInfo.MaxVtgCell[1]=
MessageCAN0.DATA[5];// 最高電壓節(jié)號
g_sExtremInfo.MinVtgCell[0]=MessageCAN0.DATA[6];// 最低電壓箱號
g_sExtremInfo.MinVtgCell[1]=MessageCAN0.DATA[7];// 最低電壓節(jié)號
}
(3)車載遠程監(jiān)控終端模塊上位機配置標準化
標準化的車載遠程終端模塊,除了修改底層通信模塊程序以外,還需要根據(jù)實際電池組信息,配置車載遠程終端模塊的運行參數(shù),達到兼容各種不同電動汽車、不同電池組的目的。為此開發(fā)了一款運行在PC上的上位機軟件,用于配置具體參數(shù)。
此款上位機軟件基于Qt平臺開發(fā)而成。Qt是1991年奇趣科技開發(fā)的一個跨平臺的C++圖形用戶界面應用程序框架[6],開發(fā)起來簡單易學,并提供給應用程序開發(fā)者建立藝術級的圖形用戶界面所需的所有功能[7]。
終端配置上位機界面如圖3所示,可以看出,界面左半部分為串口信息和相關操作,右半部分是具體的參數(shù)值,如當前車載遠程監(jiān)控終端需要配置的參數(shù)為:車輛ID20151202,電池總串數(shù)168,BMS從機個數(shù)4,每個從機監(jiān)控的電池單體串數(shù)是42,當這些值設置好之后,點擊“參數(shù)配置”按鈕,車載遠程監(jiān)控終端會通過RS232串口接收這些配置參數(shù),并保存到Flash中。另外,可以將設置好的參數(shù)以文件的形式存儲到PC的硬盤里,使用時,直接讀取參數(shù)即可。
?。?)各模塊軟件開發(fā)調試完成后,通過CAN截取的內(nèi)網(wǎng)報文如圖4所示。
3應用狀況
此項目自開發(fā)結束后,已應用在多個公司項目多輛車上,包括電動大巴車和商務車等,功能良好。通過車載遠程監(jiān)控終端,在PC上的客戶端中可以實時觀察車輛運行狀況,并且服務器每天都會將數(shù)據(jù)存儲到數(shù)據(jù)庫中,方便后續(xù)追蹤了解電池的健康狀態(tài),最終達到提升電池生產(chǎn)工藝和品質的目的。圖5是應用標準化車載遠程監(jiān)控系統(tǒng)的車輛監(jiān)控數(shù)據(jù)界面。
4結論
基于內(nèi)網(wǎng)的標準化車載遠程監(jiān)控系統(tǒng),解決了不同整車廠商差異導致的通信協(xié)議不兼容的問題。只要動力電池系統(tǒng)內(nèi)網(wǎng)協(xié)議一致,該系統(tǒng)基本上可以應用在所有電動汽車上,實時監(jiān)控動力電池組和整車的運行狀況。從目前我公司的應用情況來看,實際效果也確實如此,既減少售后人員的現(xiàn)場出差頻率,又能快速響應新產(chǎn)品的應用,提高開發(fā)效率,無論是實用效益還是經(jīng)濟效益都能很好地滿足。
參考文獻
?。?] 陳清泉,孫逢春,祝嘉光.現(xiàn)代電動汽車技術[M]. 北京:北京理工大學出版社, 2002.
[2] 徐海霞.燃運車輛GPS監(jiān)控系統(tǒng)的分析與設計[J].微型機與應用,2014,33(11):1215.
?。?] 方仁桂. 基于GPRS的遠程監(jiān)控系統(tǒng)的研究與設計[D]. 廈門:廈門大學,2009.
?。?] 王任重.基于CAN總線的車載網(wǎng)絡控制系統(tǒng)研究與設計[D]. 上海:上海工程技術大學 2015.
?。?] 郭海濤.集成CAN/GPS/GSM的嵌入式電動車車載終端的研究與設計[D]. 北京:北京交通大學, 2007.
[6] 王浩,陳邦瓊,浦錄敏,等. 嵌入式Qt開發(fā)項目教程[M]. 北京:中國水利水電出版社,2014.
[7] 陸文周. Qt開發(fā)及實例[M].北京:電子工業(yè)出版社,2014.