汽車CAN總線關(guān)閉故障的診斷與恢復(fù)
從改革開放到現(xiàn)在,汽車產(chǎn)業(yè)對(duì)我國經(jīng)濟(jì)發(fā)展產(chǎn)生巨大的推動(dòng),對(duì)社會(huì)進(jìn)步產(chǎn)生了深遠(yuǎn)的影響,逐漸成為了我國的支柱行業(yè)。近幾年來,隨著科技發(fā)展的日新月異,汽車上電子控制裝置越來越多,汽車音響,電子儀表,空調(diào)控制器,電噴發(fā)動(dòng)機(jī),BCM,ABS等等ECU在車內(nèi)形成了巨大的網(wǎng)絡(luò)系統(tǒng),按照傳統(tǒng)的布線模式,電線的錯(cuò)綜復(fù)雜對(duì)汽車的電氣控制及系統(tǒng)實(shí)時(shí)網(wǎng)絡(luò)通信帶來重重困難,CAN總線網(wǎng)絡(luò)的出現(xiàn),大大簡化了綜合布線,很好的解決了系統(tǒng)間的信息交互與共享,在汽車電子技術(shù)的普及應(yīng)用取得了重大進(jìn)步。
Can-Bus總線技術(shù)是“控制器局域網(wǎng)總線技術(shù)(Controller Area Network-BUS)”的簡稱,它具有極強(qiáng)的抗干擾和糾錯(cuò)能力,最早被用于飛機(jī)、坦克等武器電子系統(tǒng)的通訊聯(lián)絡(luò)上。
雖然CAN總線有著非常高的穩(wěn)定性,然而,一旦出現(xiàn)錯(cuò)誤尤其是CAN總線關(guān)閉,對(duì)于汽車的整體功能甚至安全性都造成極大影響。為此,在汽車行業(yè)高速發(fā)展,電子與通信技術(shù)廣泛應(yīng)用的今天,如何檢測汽車網(wǎng)絡(luò)故障的發(fā)生,如何修復(fù)故障,使我們能夠保證穩(wěn)定和安全的應(yīng)用CAN網(wǎng)絡(luò)技術(shù)服務(wù)于汽車產(chǎn)業(yè),形成了本文研究的背景和意義。
2 汽車CAN總線網(wǎng)絡(luò)技術(shù)的概述
2.1 CAN總線網(wǎng)絡(luò)簡介
在八十年代,CAN總線是由德國博世公司研究開發(fā)而成一種串行通信協(xié)議,而今形成了CAN技術(shù)規(guī)范2.0,包括支持11位地址標(biāo)準(zhǔn)幀的2.0A版本,和支持11位地址標(biāo)準(zhǔn)幀與29位地址擴(kuò)展幀的2.0B版本。它的出現(xiàn)解決了汽車內(nèi)部多個(gè)微控制器進(jìn)行實(shí)時(shí)數(shù)據(jù)交互的問題。在物理層上,通信介質(zhì)一般是雙絞線,也可以使同軸電纜或光纖。CAN總線的技術(shù)有以下特點(diǎn)。
1)是多主系統(tǒng)。
2)最高波特率達(dá)到1 Mbit/sec。
3)是短幀結(jié)構(gòu)(每條報(bào)文最多8字節(jié)數(shù)據(jù))。
4)有錯(cuò)誤檢測與處理機(jī)制。
5)有數(shù)據(jù)校驗(yàn),幀內(nèi)應(yīng)答。
6)是總線型拓?fù)浣Y(jié)構(gòu)。
7)是廣播發(fā)送。
8)具有基于優(yōu)先級(jí)的總線仲裁機(jī)制。
2.2 車內(nèi)CAN總線網(wǎng)絡(luò)拓?fù)?/strong>示例圖
車內(nèi)CAN總線網(wǎng)絡(luò)拓?fù)涫纠龍D見圖1。
2.3 CAN(高速)總線通信物理電平信號(hào)
CAN總線采用CAN_H與CAN_L的差分信號(hào)進(jìn)行通信,顯性位為邏輯0,隱性位為邏輯1,并通過“線與”的機(jī)制決定總線電平。
2.4 CAN幀類型
CAN總線的幀類型包括:數(shù)據(jù)幀,遠(yuǎn)程幀,幀間空間,錯(cuò)誤幀,超載幀。其中總線關(guān)閉的故障就是由錯(cuò)誤幀引起的。
2.5 CAN總線可檢測的錯(cuò)誤類型
1)位錯(cuò)誤:節(jié)點(diǎn)檢測到的位與自身送出的位數(shù)值不同。在仲裁或ACK位期間送出“隱性”位,而檢測到“顯性”位不導(dǎo)致位錯(cuò)誤。
2)填充錯(cuò)誤:在使用位填充編碼的幀場(幀起始至CRC序列)中,不允許出現(xiàn)六個(gè)連續(xù)相同的電平位。
3)CRC錯(cuò)誤:節(jié)點(diǎn)計(jì)算的CRC序列與接收到的CRC序列不同。
4)格式錯(cuò)誤:固定格式位場(如CRC界定符、ACK界定符、幀結(jié)束等)含有一個(gè)或更多非法位。
5)ACK錯(cuò)誤:發(fā)送節(jié)點(diǎn)在ACK位期間未檢測到“顯性”位。
其中發(fā)送節(jié)點(diǎn)能檢測到的錯(cuò)誤有位錯(cuò)誤、格式錯(cuò)誤、ACK錯(cuò)誤。而接收節(jié)點(diǎn)能檢測到的錯(cuò)誤有填充錯(cuò)誤、格式錯(cuò)誤、CRC錯(cuò)誤。CAN控制器與收發(fā)器在檢測到錯(cuò)誤時(shí),會(huì)發(fā)出錯(cuò)誤幀,通報(bào)到總線上發(fā)送或接收報(bào)文錯(cuò)誤。
由于CAN總線有著極高的穩(wěn)定性,所以網(wǎng)絡(luò)出現(xiàn)錯(cuò)誤而又不被檢測到的機(jī)會(huì)極低。假如一個(gè)高速CAN以500kbps的速率進(jìn)行通信,總線的負(fù)載為25%,每年按照2000小時(shí)來算,那么至少要1000年才會(huì)漏檢一個(gè)錯(cuò)誤。
3 汽車CAN總線關(guān)閉問題的成因分析
3.1 CAN總線關(guān)閉
CAN控制器可以判斷出錯(cuò)誤的類型是總線上暫時(shí)的數(shù)據(jù)錯(cuò)誤(如外部干擾等)還是持續(xù)的數(shù)據(jù)錯(cuò)誤(如單元內(nèi)部故障、驅(qū)動(dòng)器故障、斷線、短路等)。由此,當(dāng)總線上發(fā)生持續(xù)數(shù)據(jù)錯(cuò)誤時(shí),CAN控制器內(nèi)部的錯(cuò)誤計(jì)數(shù)器累積到總線關(guān)閉的閥值,可將引起此故障單元從總線上隔離出去,不參與跟總線其他節(jié)點(diǎn)的網(wǎng)絡(luò)通信。
3.2 CAN(高速)總線常見物理故障分析
對(duì)于CAN總線常見的物理故障,主要是CAN線路產(chǎn)生的。其中包括:
1)CAN_H開路。
2)CAN_L開路。
3)CAN_H對(duì)VBAT短路。
4)CAN_L對(duì)GND短路。
5)CAN_H對(duì)GND短路。
6)CAN_L對(duì)VBAT短路。
7)CAN_H對(duì)CAN_L短路。
8)CAN_H和CAN_L開路。
9)終端電阻開路。如圖4。
但是根據(jù)ISO11898標(biāo)準(zhǔn),CAN收發(fā)器具有一定的容錯(cuò)性能。因此,并不是每一種CAN線路的故障都會(huì)導(dǎo)致CAN總線關(guān)閉問題的發(fā)生。以上述高速CAN網(wǎng)絡(luò)為例,除了4)CAN_L對(duì)GND短路和9)終端電阻開路是可以自身容錯(cuò)外,其他線路故障都會(huì)存在引發(fā)CAN總線關(guān)閉問題的可能性。 造成CAN總線關(guān)閉的物理層因素,除了CAN線路的故障,還有可能是CAN控制器或收發(fā)器等元器件出現(xiàn)了故障,導(dǎo)致該CAN節(jié)點(diǎn)無法通信。另外,也有可能因?yàn)镃AN總線信號(hào)的干擾,使得CAN信號(hào)的收發(fā)不能正確,尤其是不能正常發(fā)送報(bào)文,容易導(dǎo)致CAN總線關(guān)閉。
3.3 CAN總線軟件錯(cuò)誤計(jì)數(shù)分析
CAN網(wǎng)絡(luò)上每個(gè)節(jié)點(diǎn)都含有REC(接收錯(cuò)誤計(jì)數(shù)器)和TEC(發(fā)送錯(cuò)誤計(jì)數(shù)器)。當(dāng)接收錯(cuò)誤產(chǎn)生時(shí),REC增加;正確接收到數(shù)據(jù)幀,REC減少;當(dāng)發(fā)送錯(cuò)誤產(chǎn)生時(shí),TEC增加;正確發(fā)送一幀數(shù)據(jù)幀,TEC減少;REC、TEC的數(shù)值會(huì)引發(fā)節(jié)點(diǎn)狀態(tài)改變。
CAN網(wǎng)絡(luò)節(jié)點(diǎn)存在三種狀態(tài):
1)主動(dòng)錯(cuò)誤,能正常的進(jìn)行總線通信,錯(cuò)誤產(chǎn)生時(shí),發(fā)送主動(dòng)錯(cuò)誤幀。
2)被動(dòng)錯(cuò)誤,能夠進(jìn)行總線通信,錯(cuò)誤產(chǎn)生時(shí),發(fā)送被動(dòng)錯(cuò)誤幀。
3)總線關(guān)閉,不能收發(fā)任何報(bào)文。
特殊案例:如果總線上只有一個(gè)節(jié)點(diǎn),該節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀后得不到應(yīng)答,TEC最大只能計(jì)到128,即節(jié)點(diǎn)只會(huì)進(jìn)入被動(dòng)錯(cuò)誤狀態(tài)而不會(huì)進(jìn)入總線關(guān)閉狀態(tài)。
4 汽車CAN總線關(guān)閉的故障記錄與恢復(fù)建議
4.1 CAN總線關(guān)閉的故障診斷與記錄
診斷規(guī)范描述了一系列的診斷服務(wù),定義ECU與診斷儀之間的請求響應(yīng)規(guī)則、ECU對(duì)于請求報(bào)文的處理行為以及請求、響應(yīng)報(bào)文信息含義。常用的診斷規(guī)范包括有UDS,KWP2000以及ISO15765等協(xié)議。其中記錄和讀取診斷故障碼(DTC)就是診斷的一項(xiàng)重要工作,網(wǎng)絡(luò)節(jié)點(diǎn)單元把曾經(jīng)或現(xiàn)在發(fā)生的相關(guān)故障碼都保存在非易失性存儲(chǔ)器(NVM)中,隨時(shí)方便于汽車工程師檢查故障記錄。
我們對(duì)于CAN總線關(guān)閉故障的診斷流程是,CAN控制器在錯(cuò)誤中斷里或者在周期性的查詢里,檢查BUS OFF寄存器的值,如果CAN控制器發(fā)生了BUS OFF,這個(gè)寄存器的值就會(huì)被賦真值。此時(shí),CAN診斷模塊會(huì)把BUS OFF的DTC狀態(tài)中的Test Failed位給置上,表示當(dāng)前檢查CAN總線關(guān)閉故障是存在的,即CAN網(wǎng)絡(luò)通信處在失效模式,同時(shí)把BUS OFF的記錄次數(shù)加1。當(dāng)BUS OFF的記錄次數(shù)達(dá)到整車廠規(guī)定的閥值時(shí),CAN診斷模塊會(huì)DTC狀態(tài)中的Confirmed位給置上,同時(shí)把CAN總線關(guān)閉的DTC記錄到非易失性存儲(chǔ)器中。
4.2 CAN總線關(guān)閉的恢復(fù)建議
我們的CAN診斷模塊在錯(cuò)誤中斷或周期性查詢中發(fā)現(xiàn)總線關(guān)閉故障時(shí),應(yīng)該立即對(duì)CAN控制器的驅(qū)動(dòng)及相關(guān)寄存器進(jìn)行初始化操作,這樣,在初始化完成后,CAN總線關(guān)閉的故障能夠立即被解除。但是,該CAN節(jié)點(diǎn)在解除總線關(guān)閉故障后,會(huì)繼續(xù)對(duì)外發(fā)送報(bào)文,如果此時(shí)產(chǎn)生總線關(guān)閉的真正外部因素沒有解除,該CAN節(jié)點(diǎn)仍有機(jī)會(huì)再次發(fā)生總線關(guān)閉的故障。
為了避免該節(jié)點(diǎn)在CAN網(wǎng)絡(luò)中頻繁發(fā)生總線關(guān)閉的問題,防止影響到網(wǎng)絡(luò)資源的消耗和對(duì)其他節(jié)點(diǎn)的不必要干擾,我們建議在CAN初始化完成后,不要立即對(duì)外發(fā)送CAN報(bào)文,應(yīng)該等待一定時(shí)間段后再嘗試發(fā)送報(bào)文是否成功。
5 結(jié)論
汽車CAN總線關(guān)閉故障發(fā)生時(shí),應(yīng)分析物理層包括CAN線路、CAN控制器及收發(fā)器、CAN信號(hào)干擾等外在因素,同時(shí)分析CAN寄存器及軟件處理,重新初始化CAN驅(qū)動(dòng)和恢復(fù)正常后,定時(shí)嘗試往外發(fā)送報(bào)文。CAN總線關(guān)閉嚴(yán)重影響到整車的功能與安全性,我們通過對(duì)故障的成因分析,提出合理的完善建議,希望能對(duì)汽車電子技術(shù)的健康發(fā)展起到一定的作用。
參考文獻(xiàn)
[1]恒潤科技,CAN規(guī)范2.0.2007.
[2]國際標(biāo)準(zhǔn)化組織,ISO14229.2006.
[3]國際標(biāo)準(zhǔn)化組織,ISO11898.2006.
評(píng)論