張 軍
(上海交通大學(xué)機(jī)械與動(dòng)力工程學(xué)院,上海200030)
CAN總線是德國(guó)BOSCH公司在20世紀(jì)80年代初為解決汽車中眾多的控制與測(cè)試儀器之間的數(shù)據(jù)交換而開發(fā)的一種通訊協(xié)議。由于CAN總線具有突出的可靠性、實(shí)時(shí)性和靈活性,因而得到了業(yè)界的廣泛認(rèn)同和運(yùn)用,并在1993年正式成為國(guó)際標(biāo)準(zhǔn)和行業(yè)標(biāo)準(zhǔn),被譽(yù)為“最有前途的現(xiàn)場(chǎng)總線”之一。以CAN為代表的總線技術(shù)在汽車上的應(yīng)用不但減少了車身線束,也提高了汽車的可靠性。在國(guó)外現(xiàn)代轎車的設(shè)計(jì)中,CAN已經(jīng)成為了必須采用的技術(shù),奔馳、寶馬、大眾、沃爾沃及雷諾等轎車也都將CAN作為控制器聯(lián)網(wǎng)的方式。由于純電動(dòng)汽車動(dòng)力平臺(tái)部件之間通訊較多,若單純使用車身線束,必然導(dǎo)致線束雜亂,給整車布置以及故障診斷帶來(lái)了一定的困難,采用CAN總線網(wǎng)絡(luò)可以很好的解決這些問(wèn)題。
本文研究的對(duì)象是一款純電動(dòng)汽車,該電動(dòng)汽車的CAN總線網(wǎng)絡(luò)架構(gòu)如圖1所示。
圖1 電動(dòng)汽車CAN總線網(wǎng)絡(luò)架構(gòu)Fig.1 Electric vehicle CAN bus network architecture
該款汽車的網(wǎng)絡(luò)架構(gòu)由諸多控制系統(tǒng)組成,考慮到電池管理系統(tǒng)、電機(jī)控制器、組合儀表、電動(dòng)空調(diào)系統(tǒng)及整車控制器等節(jié)點(diǎn)都搭載在同一條CAN總線上,目前采用波特率為250Kbps的高速CAN總線。該總線協(xié)議遵循CAN BUS 2.0B技術(shù)規(guī)范所規(guī)定的擴(kuò)展幀格式(29位標(biāo)識(shí)符)以及SAE J1939的技術(shù)協(xié)議。SAE J1939協(xié)議主要運(yùn)用于載貨車和客車系統(tǒng),它是在CAN BUS 2.0B的基礎(chǔ)上進(jìn)一步擴(kuò)展實(shí)現(xiàn)具體應(yīng)用的,J1939的網(wǎng)絡(luò)通訊報(bào)文標(biāo)識(shí)符結(jié)構(gòu)如圖2所示。
圖2 J1939網(wǎng)絡(luò)通訊報(bào)文標(biāo)識(shí)符結(jié)構(gòu)Fig.2 J1939network communication message ID structure
J1939對(duì)CAN BUS 2.0B規(guī)范中的29位標(biāo)識(shí)符(0~28)做了更為具體的定義。其中優(yōu)先級(jí)P用于總線傳輸時(shí)的報(bào)文優(yōu)先級(jí)別;保留位R作為今后開發(fā)使用,此處必須默認(rèn)為0;數(shù)據(jù)頁(yè)DP用于數(shù)據(jù)頁(yè)位選擇參數(shù)群描述的輔助頁(yè);PDU格式是一個(gè)8位構(gòu)成的域,用于確定數(shù)據(jù)域?qū)?yīng)的參數(shù)群編號(hào);特定PDU是一個(gè)8位域,他的定義取決于PDU格式;源地址SA是一個(gè)8位的域,網(wǎng)絡(luò)中一個(gè)特定的源地址只能匹配一個(gè)設(shè)備或系統(tǒng)。
CANoe是德國(guó)VECTOR公司開發(fā)的功能強(qiáng)大的仿真及測(cè)試軟件,使用時(shí)需要借助其它硬件測(cè)試工具配合使用,常使用的硬件包括CANcaseXL,CANScope,CANStress等。
該測(cè)試系統(tǒng)具備三大功能:
第一,在線實(shí)時(shí)監(jiān)測(cè)。在實(shí)車運(yùn)行過(guò)程中,該系統(tǒng)可以實(shí)時(shí)監(jiān)測(cè)各個(gè)部件的運(yùn)行參數(shù)情況。并根據(jù)在網(wǎng)絡(luò)上傳輸?shù)膱?bào)文中所涉及的故障信息進(jìn)行分析,判斷車輛可能存在的故障信息。
第二,離線分析功能。CANoe采集大量實(shí)時(shí)的報(bào)文信息并存儲(chǔ)于電腦硬盤中,通過(guò)回放功能重現(xiàn)采集時(shí)的數(shù)據(jù)信息,以便后期分析驗(yàn)證。
第三,系統(tǒng)模擬仿真。當(dāng)網(wǎng)絡(luò)中的某個(gè)或某些節(jié)點(diǎn)掉線或出現(xiàn)異常時(shí),CANoe的仿真功能可以實(shí)現(xiàn)在仿真環(huán)境下對(duì)正常的節(jié)點(diǎn)進(jìn)行功能測(cè)試。
采用CANoe搭建測(cè)試系統(tǒng)平臺(tái)需要完成幾項(xiàng)工作,包括建立數(shù)據(jù)庫(kù),編寫CAPL語(yǔ)言程序,編輯面板編輯器以及調(diào)試運(yùn)行等。
3.2.1 創(chuàng)建CANdb++數(shù)據(jù)庫(kù)
CANdb++是集成在CANoe中的數(shù)據(jù)庫(kù)編輯軟件,由它創(chuàng)建的CAN網(wǎng)絡(luò)數(shù)據(jù)庫(kù)文件又稱為DBC文件。在創(chuàng)建DBC文件時(shí),需要將網(wǎng)絡(luò)應(yīng)用層所定義的參數(shù)按照從高到低的層次依次輸入數(shù)據(jù)庫(kù)中,即從創(chuàng)建網(wǎng)絡(luò)節(jié)點(diǎn)開始,根據(jù)網(wǎng)絡(luò)應(yīng)用層定義的節(jié)點(diǎn)信息創(chuàng)建各節(jié)點(diǎn),再在各個(gè)節(jié)點(diǎn)下創(chuàng)建屬于該節(jié)點(diǎn)的報(bào)文,同時(shí)明確該節(jié)點(diǎn)需要接收的報(bào)文和信號(hào);最后在每條報(bào)文下創(chuàng)建屬于該報(bào)文的信號(hào)內(nèi)容、編碼格式和換算公式——根據(jù)換算公式,可將實(shí)際的物理值信號(hào)換算成適于計(jì)算機(jī)辨認(rèn)和發(fā)送的十六進(jìn)制值信號(hào)值,便于網(wǎng)絡(luò)間的傳輸。
另外,還需定義與各節(jié)點(diǎn)相關(guān)的環(huán)境變量,將其作為該節(jié)點(diǎn)的信號(hào)輸入設(shè)備或信號(hào)輸出設(shè)備。信號(hào)輸入設(shè)備例如傳感器,開關(guān),按鈕等,信號(hào)輸出設(shè)備例如執(zhí)行器、燈光、顯示屏等。
數(shù)據(jù)庫(kù)建完后將其添加到CANoe軟件中,實(shí)現(xiàn)CANoe網(wǎng)絡(luò)架構(gòu)的搭建,如圖3所示。
3.2.2 編寫CAPL語(yǔ)言程序
對(duì)于控制系統(tǒng)的仿真功能,需要通過(guò)CAPL語(yǔ)言編程實(shí)現(xiàn)。CAPL全稱為CAN Access Programming Language,它是一種和C語(yǔ)言類似的編程語(yǔ)言,用它可以對(duì)每一個(gè)虛擬的控制系統(tǒng)進(jìn)行編程。CAPL語(yǔ)言程序是基于事件觸發(fā)的程序,可由總線事件,鍵盤事件或時(shí)間事件實(shí)現(xiàn)觸發(fā)功能。
3.2.3 編輯面板編輯器
CANoe軟件集成了人性化的面板編輯器(Panel)窗口,并且預(yù)先存入了諸如開關(guān)、車窗、儀表盤、點(diǎn)火開關(guān)、門鎖和按鈕等大量的圖片組件。利用環(huán)境變量為媒介,將這些圖片與對(duì)應(yīng)的信號(hào)一一鏈接,就實(shí)現(xiàn)了形象化的圖形界面,部分的Panel窗口如圖4所示。
圖3 CANoe軟件搭建電動(dòng)汽車CAN總線網(wǎng)絡(luò)架構(gòu)圖Fig.3 The CAN bus network architecture of the electric vehicle build by CANoe
圖4 部分測(cè)試系統(tǒng)的Panel窗口界面Fig.4 Part of the test system on Panel window
3.2.4 CAN網(wǎng)絡(luò)的仿真和測(cè)試
完成上述步驟后,可以實(shí)現(xiàn)CANoe的仿真和測(cè)試功能。需要強(qiáng)調(diào)的是,當(dāng)進(jìn)行仿真調(diào)試時(shí),需要激活虛擬節(jié)點(diǎn);而當(dāng)進(jìn)行實(shí)車測(cè)試時(shí),則要屏蔽這些虛擬節(jié)點(diǎn)。
(1)網(wǎng)絡(luò)仿真
評(píng)價(jià)網(wǎng)絡(luò)性能的技術(shù)指標(biāo)一般包括網(wǎng)絡(luò)傳輸速率、報(bào)文平均發(fā)送頻次、網(wǎng)絡(luò)負(fù)載率,信號(hào)延遲時(shí)間(網(wǎng)絡(luò)響應(yīng)時(shí)間)、報(bào)文周期等因素。網(wǎng)絡(luò)仿真時(shí)需要對(duì)這些因素進(jìn)行逐一的分析,了解其對(duì)于網(wǎng)絡(luò)性能的影響程度并根據(jù)設(shè)計(jì)要求進(jìn)行調(diào)整,這對(duì)于前期進(jìn)行網(wǎng)絡(luò)設(shè)計(jì)和開發(fā)時(shí)起到了一定的借鑒作用,CAN總線仿真界面如圖5所示。
圖5 CANoe的仿真界面圖Fig.5 The simulation interface figure of CANoe
為改善網(wǎng)絡(luò)負(fù)載率,需要對(duì)報(bào)文平均發(fā)送頻次、網(wǎng)絡(luò)負(fù)載率,信號(hào)延遲時(shí)間(網(wǎng)絡(luò)響應(yīng)時(shí)間)和報(bào)文周期等進(jìn)行合理的調(diào)整。一般情況下,經(jīng)過(guò)調(diào)整后的網(wǎng)絡(luò)負(fù)載率建議是在30%左右,可有效地防止出現(xiàn)網(wǎng)絡(luò)擁堵的情況。
(2)網(wǎng)絡(luò)測(cè)試
為了保證CAN總線網(wǎng)絡(luò)的正確性和魯棒性,需要對(duì)其進(jìn)行網(wǎng)絡(luò)性能測(cè)試和實(shí)車診斷測(cè)試,主要包括以下幾個(gè)方面:
a.物理層測(cè)試
由于信號(hào)傳輸波形的質(zhì)量決定了CAN總線數(shù)據(jù)傳輸?shù)目煽啃?,所以需要?duì)物理層進(jìn)行測(cè)試評(píng)價(jià),確保各節(jié)點(diǎn)或系統(tǒng)在電路設(shè)計(jì)、物理電平特性等方面的性能,也是保證節(jié)點(diǎn)能夠正確連接入總線的基礎(chǔ)。測(cè)試主要包括了節(jié)點(diǎn)的電阻電容特性、總線終端電阻、CAN線上的物理電平特性、工作電壓范圍及節(jié)點(diǎn)掉電測(cè)試等。
b.數(shù)據(jù)鏈路層測(cè)試
數(shù)據(jù)鏈路層測(cè)試包括網(wǎng)絡(luò)實(shí)時(shí)性測(cè)試、位定時(shí)測(cè)試、采樣點(diǎn)測(cè)試、SJW測(cè)試等內(nèi)容。其中最重要的是網(wǎng)絡(luò)實(shí)時(shí)性測(cè)試。由于影響CAN總線網(wǎng)絡(luò)實(shí)時(shí)性的主要因素是總線傳輸速率、總線負(fù)載率、消息傳輸延遲等,所以雖然在理論設(shè)計(jì)時(shí)進(jìn)行了仿真驗(yàn)證,在測(cè)試階段還是需對(duì)其進(jìn)行測(cè)試分析。
c.應(yīng)用層測(cè)試
應(yīng)用層測(cè)試包括了上層應(yīng)用層協(xié)議的測(cè)試、網(wǎng)絡(luò)管理功能的測(cè)試以及故障診斷測(cè)試等方面的內(nèi)容。其包括的內(nèi)容可以是:數(shù)據(jù)庫(kù)使用正確性測(cè)試、通訊周期準(zhǔn)確性測(cè)試、節(jié)點(diǎn)休眠喚醒功能測(cè)試、網(wǎng)絡(luò)管理功能測(cè)試、電壓影響測(cè)試、總線物理故障測(cè)試、節(jié)點(diǎn)故障自恢復(fù)能力測(cè)試等內(nèi)容。由于CAN總線使用背景的不同,其應(yīng)用層的內(nèi)容也有很大差別,因此應(yīng)用層測(cè)試的內(nèi)容也存在較大差異,需要根據(jù)項(xiàng)目的設(shè)計(jì)需求以及設(shè)計(jì)文檔仔細(xì)制定應(yīng)用層測(cè)試的內(nèi)容。值得注意的是,對(duì)于CAN總線網(wǎng)絡(luò)測(cè)試,其應(yīng)用層測(cè)試一般不涉及功能測(cè)試的范圍,功能測(cè)試一般屬于模塊測(cè)試的范疇。
在測(cè)試過(guò)程中還需要注意整車的實(shí)驗(yàn)環(huán)境及車艙內(nèi)的布置環(huán)境對(duì)過(guò)程的影響,例如電磁干擾、過(guò)熱、噪聲或震動(dòng)等都可能影響網(wǎng)絡(luò)的正常通訊功能及測(cè)試的結(jié)果,嚴(yán)重時(shí)還可能造成電子控制模塊的損壞。
在任一階段的測(cè)試出現(xiàn)異常情況時(shí),排故流程基本如下:
1.先檢查通訊線路是否出現(xiàn)故障,例如對(duì)地短路,對(duì)電壓短路或開路故障;
2.再考慮電子控制模塊內(nèi)部可能出現(xiàn)的短路故障;
3.最后考慮實(shí)車環(huán)境的影響,可通過(guò)更改線路走向或增加屏蔽措施等改善實(shí)車環(huán)境。
d.實(shí)車診斷測(cè)試
實(shí)車診斷測(cè)試是對(duì)圖4的實(shí)時(shí)監(jiān)測(cè)測(cè)試系統(tǒng)的應(yīng)用,該測(cè)試系統(tǒng)通過(guò)捕獲整車網(wǎng)絡(luò)中傳輸?shù)膱?bào)文并從中解析出信號(hào)內(nèi)容,將其換算成實(shí)際的信號(hào)值顯示在該系統(tǒng)中,同時(shí)該測(cè)試系統(tǒng)會(huì)對(duì)較為重要的信號(hào)進(jìn)行實(shí)時(shí)監(jiān)測(cè),判斷其是否在正常范圍內(nèi),如果參數(shù)出現(xiàn)異常,則在測(cè)試系統(tǒng)的“故障信息”一欄中相應(yīng)警告燈會(huì)點(diǎn)亮,提示測(cè)試人員可能是由于對(duì)應(yīng)的硬件系統(tǒng)或設(shè)備存在故障,需要進(jìn)行診斷排故。
同時(shí)該系統(tǒng)還能實(shí)現(xiàn)實(shí)時(shí)的數(shù)據(jù)采集,便于測(cè)試人員進(jìn)行離線分析。
3.2.5 CAN總線網(wǎng)絡(luò)分析
在整車正常通訊的情況下,通過(guò)CANoe軟件還可以實(shí)時(shí)監(jiān)測(cè)網(wǎng)絡(luò)的性能參數(shù),包括網(wǎng)絡(luò)報(bào)文每秒鐘的平均發(fā)送頻次、總線通訊情況和總線負(fù)載率等,如圖6,圖7及圖8所示。
圖6 報(bào)文每秒鐘的平均發(fā)送頻次Fig.6 The average delivery frequency of message per second
本文通過(guò)CANoe軟件完成了電動(dòng)汽車總線測(cè)試系統(tǒng)的程序開發(fā),實(shí)現(xiàn)了對(duì)電動(dòng)汽車CAN總線的節(jié)點(diǎn)仿真功能;通過(guò)網(wǎng)絡(luò)測(cè)試,實(shí)現(xiàn)了對(duì)整車網(wǎng)絡(luò)性能的確認(rèn);利用Panel窗口的編輯,實(shí)現(xiàn)了良好的人機(jī)交互功能;借助CANcaseXL板卡的配合,實(shí)現(xiàn)了數(shù)據(jù)的實(shí)時(shí)顯示、采集及離線分析功能。
圖7 總線實(shí)際通訊情況Fig.7 CAN bus actual communication situation
圖8 總線負(fù)載率情況Fig.8 CAN bus loading rate
[1] 饒?jiān)茲?現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[2] 張新波等.使用CANoe對(duì)車身控制器局域網(wǎng)絡(luò)仿真的研究[J].江蘇:江蘇大學(xué)學(xué)報(bào)(自然科學(xué)版),2003.
[3] 王立萍,汽車CAN網(wǎng)絡(luò)控制系統(tǒng)的設(shè)計(jì)研究[D].廣東工業(yè)大學(xué),2008.
[4] 魏雄武,CAN與汽車網(wǎng)絡(luò)技術(shù)[J].上海汽車,2005(7):35-38.
[5] 姜開,基于CAN總線的測(cè)試系統(tǒng)研究與設(shè)計(jì)[D].南京航空航天大學(xué),2004.
[6] 陸孟雄,汽車舒適系統(tǒng)的CAN總線性能分析與仿真[D].南京農(nóng)業(yè)大學(xué),2004.
[7] BOSCH.CAN Specification Version 2.0[Z].Germany:Robert Bosch GmbH,1991.
[8] SAE.Recommended Practice for a Serial Control and Communication Vehicle Network SAE J1939Issued 2000[Z].America:Society of Automotive Engineers,2000.
[9] Vector,CANoe_M(jìn)anual_EN(Version 7.2)[M].Germany:Vector Informatik GmbH.
[10] Vector,CANdb++_M(jìn)anual_EN(Version 7.2)[M].Germany:Vector Informatik GmbH.