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