作者 | 蒹葭小編 | 吃不飽
CAN幀有多種格式,錯(cuò)誤幀作為CAN幀中獨(dú)特的一種,了解其作用,類型與產(chǎn)生原因,對于進(jìn)行測試以及開發(fā)有很大的幫助,本文將對錯(cuò)誤幀的相關(guān)基礎(chǔ)知識以及后續(xù)的分析排查進(jìn)行介紹。
01錯(cuò)誤幀的基礎(chǔ)知識錯(cuò)誤幀的作用錯(cuò)誤幀是CAN總線用于進(jìn)行錯(cuò)誤通知的報(bào)文,可以將任何一個(gè)節(jié)點(diǎn)發(fā)現(xiàn)的錯(cuò)誤通知給其他節(jié)點(diǎn),包括發(fā)送節(jié)點(diǎn);進(jìn)而丟棄錯(cuò)誤的報(bào)文,發(fā)送節(jié)點(diǎn)再進(jìn)行報(bào)文的重新發(fā)送,保證傳遞信息的準(zhǔn)確性。
錯(cuò)誤類型
圖1CAN的分層體系結(jié)構(gòu)
首先,如上圖所示,按照分層的理念,CAN的錯(cuò)誤檢測和錯(cuò)誤信號的發(fā)送都處于二層,即數(shù)據(jù)鏈路層,因此,錯(cuò)誤檢測所檢測的報(bào)文也是檢測數(shù)據(jù)鏈路層的報(bào)文。其次,當(dāng)總線上的幀出現(xiàn)錯(cuò)誤時(shí),節(jié)點(diǎn)就會發(fā)出錯(cuò)誤幀,而錯(cuò)誤也有多種類型:
位錯(cuò)誤
位錯(cuò)誤是發(fā)送節(jié)點(diǎn)在發(fā)送數(shù)據(jù),進(jìn)行回讀,檢測到總線上的數(shù)據(jù)與自身發(fā)出的數(shù)據(jù)不同時(shí),發(fā)出的錯(cuò)誤。由于CAN的仲裁機(jī)制和ACK應(yīng)答機(jī)制,在仲裁場和ACK處發(fā)出隱性位,而回讀到顯性位時(shí)并不會認(rèn)為是位錯(cuò)誤。圖2位檢測
格式錯(cuò)誤
格式錯(cuò)誤是在固定格式的位場處檢測到非法位,例如:ACK界定符固定是一個(gè)隱性位,若檢測到顯性,就認(rèn)為是格式錯(cuò)誤。圖3格式檢測
ACK錯(cuò)誤
發(fā)送節(jié)點(diǎn)在自身發(fā)送的報(bào)文的ACK位檢測到隱性時(shí),會認(rèn)為沒有其他節(jié)點(diǎn)接收到此條報(bào)文,即為ACK錯(cuò)誤。圖4ACK檢測
填充錯(cuò)誤
CAN的填充機(jī)制是每檢測到5個(gè)連續(xù)相同的位時(shí),即填充一個(gè)相反的位,以提供足夠的跳變沿來進(jìn)行同步,當(dāng)在總線上有報(bào)文時(shí),檢測到連續(xù)的6個(gè)相同的位時(shí),即認(rèn)為是填充錯(cuò)誤。圖5填充檢測
CRC錯(cuò)誤
接收節(jié)點(diǎn)接收到的CRC序列與發(fā)送節(jié)點(diǎn)發(fā)送的CRC序列不同時(shí),即識別為CRC錯(cuò)誤。圖6CRC檢測
錯(cuò)誤幀的類型
上文已經(jīng)說了CAN錯(cuò)誤的類型,當(dāng)檢測到錯(cuò)誤時(shí),就會有錯(cuò)誤幀發(fā)出,處于不同錯(cuò)誤狀態(tài)的節(jié)點(diǎn),所發(fā)送的錯(cuò)誤幀格式是不同的。從錯(cuò)誤的角度分析,節(jié)點(diǎn)有三種不同的狀態(tài),分別是主動錯(cuò)誤狀態(tài),被動錯(cuò)誤狀態(tài)和總線關(guān)閉狀態(tài)。并有兩種不同的錯(cuò)誤計(jì)數(shù)器,分別是接收錯(cuò)誤計(jì)數(shù)器REC和發(fā)送錯(cuò)誤計(jì)數(shù)器TEC。當(dāng)節(jié)點(diǎn)檢測到錯(cuò)誤時(shí),會發(fā)出錯(cuò)誤幀,并增加錯(cuò)誤計(jì)數(shù)器的值,根據(jù)錯(cuò)誤計(jì)數(shù)器的值,節(jié)點(diǎn)會進(jìn)入不同的狀態(tài)。具體的計(jì)數(shù)算法參照 ISO 11898-1。圖7節(jié)點(diǎn)狀態(tài)轉(zhuǎn)換圖
當(dāng)TEC和REC的值都小于128時(shí),節(jié)點(diǎn)處于主動錯(cuò)誤狀態(tài)時(shí),節(jié)點(diǎn)發(fā)送的錯(cuò)誤幀由6個(gè)顯性位(主動錯(cuò)誤標(biāo)志)加8個(gè)隱性位(錯(cuò)誤界定符)組成,共14位。一個(gè)節(jié)點(diǎn)發(fā)出錯(cuò)誤幀,其他節(jié)點(diǎn)識別到后會跟著發(fā)出錯(cuò)誤幀,由此機(jī)制,將一個(gè)節(jié)點(diǎn)檢測到的錯(cuò)誤通知給其他節(jié)點(diǎn),也能防止其他節(jié)點(diǎn)接收到錯(cuò)誤的報(bào)文。當(dāng)TEC或REC大于127時(shí),節(jié)點(diǎn)處于被動錯(cuò)誤狀態(tài)時(shí),節(jié)點(diǎn)發(fā)送的錯(cuò)誤幀由6個(gè)隱性位(被動錯(cuò)誤標(biāo)志)加8個(gè)隱性位(錯(cuò)誤界定符)即14個(gè)連續(xù)的隱性位組成,當(dāng)處于被動錯(cuò)誤狀態(tài)的節(jié)點(diǎn)在接收報(bào)文時(shí)檢測到錯(cuò)誤進(jìn)而發(fā)出的錯(cuò)誤幀,一定會被正常的報(bào)文或者其他節(jié)點(diǎn)的錯(cuò)誤幀覆蓋掉。只有當(dāng)處于被動錯(cuò)誤狀態(tài)的節(jié)點(diǎn)在主動發(fā)出報(bào)文,發(fā)出的錯(cuò)誤幀才會被其他節(jié)點(diǎn)正常檢測到并觸發(fā)其他節(jié)點(diǎn)發(fā)出錯(cuò)誤幀。當(dāng)TEC大于255時(shí),節(jié)點(diǎn)處于總線關(guān)閉狀態(tài)(busoff)時(shí),節(jié)點(diǎn)會停止收發(fā)報(bào)文,直到有用戶請求(如:重啟)或總線連續(xù)128次出現(xiàn)11個(gè)連續(xù)的隱性位時(shí),節(jié)點(diǎn)重新恢復(fù)到主動錯(cuò)誤的狀態(tài)。總線關(guān)閉狀態(tài)主要是為了防止一個(gè)節(jié)點(diǎn)出現(xiàn)故障或持續(xù)被干擾時(shí),不斷發(fā)出錯(cuò)誤幀,從而影響其他節(jié)點(diǎn)的正常收發(fā)報(bào)文。
綜上,錯(cuò)誤幀按具體格式分類只有兩類,即6個(gè)顯性0 + 8個(gè)隱性1和6個(gè)隱性1 + 8個(gè)隱性1兩種。當(dāng)一個(gè)節(jié)點(diǎn)連續(xù)檢測到多個(gè)錯(cuò)誤,進(jìn)入到被動錯(cuò)誤模式時(shí),此時(shí)很有可能是此節(jié)點(diǎn)出了問題或者受到干擾,這個(gè)時(shí)候這個(gè)節(jié)點(diǎn)檢測出的錯(cuò)誤可能已經(jīng)不被信任,所以處于被動錯(cuò)誤模式的節(jié)點(diǎn)發(fā)出的錯(cuò)誤幀是14個(gè)隱性位,可以被正常報(bào)文或正常的錯(cuò)誤幀覆蓋掉。
02實(shí)車上出現(xiàn)錯(cuò)誤幀的主要原因
對于實(shí)車而言出現(xiàn)錯(cuò)誤幀主要可能是因?yàn)橐韵聨追N原因:終端電阻不匹配:終端電阻用以匹配電纜的阻抗特性,減少信號的反射,當(dāng)終端電阻與總線的阻抗不匹配時(shí),產(chǎn)生的反射現(xiàn)象就會較為嚴(yán)重,影響結(jié)果。
總線電阻75Ω總線電阻40Ω總線電阻60Ω圖8 不同電阻對波形的影響
電容對波形的影響:電容不匹配會影響電平上升下降沿的時(shí)間,進(jìn)而影響采樣時(shí)的結(jié)果??偩€電容過大,會導(dǎo)致放電時(shí)間增加,下降沿時(shí)間會增加,影響最后采樣的結(jié)果。
圖9 不同電容對波形的影響
支線長度的影響:支線長度過長,會對總線的阻抗匹配產(chǎn)生影響,形成的反射也會更嚴(yán)重,進(jìn)而影響總線上的波形。采樣點(diǎn)不合適的節(jié)點(diǎn)。當(dāng)總線上的節(jié)點(diǎn)的采樣點(diǎn)位置設(shè)置的不一致,有可能會出現(xiàn)錯(cuò)誤幀。電磁干擾比較大的電源,較大的電磁干擾會影響總線的波形,進(jìn)而影響總線上的報(bào)文,出現(xiàn)錯(cuò)誤幀。
總結(jié):實(shí)車上出現(xiàn)錯(cuò)誤幀一般是波形較差,波形的波動,進(jìn)而影響采樣的結(jié)果,出現(xiàn)錯(cuò)誤幀。
03錯(cuò)誤幀的排查方法示例
進(jìn)行錯(cuò)誤幀的原因排查,觀察錯(cuò)誤幀的類型等信息,可借助Vector公司軟件工具CANoe、示波器、萬用表等。在CANoe的Trace窗口中可以看到報(bào)文的詳細(xì)信息,錯(cuò)誤類型等。實(shí)車上出現(xiàn)錯(cuò)誤幀時(shí),綜合出現(xiàn)錯(cuò)誤幀的原因,如下部分典型排查方法可以參考。
先判斷終端節(jié)點(diǎn)是否在線,加載DBC來判斷是否有終端節(jié)點(diǎn)的報(bào)文,或者用萬用表測量終端電阻阻值是否正確。
圖10 判斷節(jié)點(diǎn)是否在線
確認(rèn)錯(cuò)誤幀出現(xiàn)的頻率,是否為周期型或僅在固定的時(shí)間段內(nèi)出現(xiàn)。
排查錯(cuò)誤幀出現(xiàn)時(shí),對應(yīng)的報(bào)文是否有固定的ID,或者是固定的節(jié)點(diǎn)。
根據(jù)錯(cuò)誤幀的信息排查,是否與正常報(bào)文相關(guān);同時(shí)再結(jié)合重傳和報(bào)文的優(yōu)先級綜合分析。
圖11 優(yōu)先級對錯(cuò)誤幀的影響
04結(jié)語
通過上述的介紹,相信讀者對于錯(cuò)誤幀的類型和原因有了一定的了解。對于測試而言,了解錯(cuò)誤幀的類型,進(jìn)而分析錯(cuò)誤出現(xiàn)的原因,對于測試中出現(xiàn)的問題以及對測試結(jié)果的分析,都是可以參考的方法。北匯信息專注于汽車電子網(wǎng)絡(luò)通信、診斷刷寫、邏輯功能測試開發(fā)服務(wù),期待進(jìn)一步溝通交流、共享合作的機(jī)會。
-
CAN
+關(guān)注
關(guān)注
57文章
2663瀏覽量
462433 -
總線
+關(guān)注
關(guān)注
10文章
2817瀏覽量
87698
發(fā)布評論請先 登錄
相關(guān)推薦
評論