在CAN總線(xiàn)中存在5種錯誤類(lèi)型,它們互相并不排斥,下面簡(jiǎn)單介紹一下它們的區別、產(chǎn)生的原因及處理方法。 位錯誤:向總線(xiàn)送出一位的某個(gè)節點(diǎn)同時(shí)也在監視總線(xiàn),當監視到總線(xiàn)位的電平與送出的電平不同時(shí)9則在該位時(shí)刻檢測到一個(gè)位錯誤。但是在仲裁區的填充位流期間或應答間隙送出隱性位而檢測到顯性位時(shí),不認為是錯誤位。送出認可錯誤標注的發(fā)送器,在檢測到顯性位時(shí)也不認為是錯誤位。 填充錯誤:在使用位填充方法進(jìn)行編碼的報文中,出現了第6個(gè)連續相同的位電平時(shí),將檢 測出一個(gè)填充錯誤。 CRC錯誤:CRC序列是由發(fā)送器CRC計算的結果組成的。接收器以與發(fā)送器相同的方法計算CRC。如果計算的結果與接收到的CRC序列不同,則檢測出一個(gè)CRC錯誤。 形式錯誤: 當固定形式的位區中出現一個(gè)或多個(gè)非法位時(shí),則檢測到一個(gè)形式錯誤。 應答錯誤:在應答間隙,發(fā)送器未檢測到顯性位時(shí),則由它檢測出一個(gè)應答錯誤。 檢測到出錯條件的節點(diǎn)通過(guò)發(fā)送錯誤標志進(jìn)行標定。當任何節點(diǎn)檢測出位錯誤、填充錯誤、形式錯誤或應答錯誤時(shí),由該節點(diǎn)在下一位開(kāi)始發(fā)送出錯誤標志。 在CAN總線(xiàn)中,任何一個(gè)單元可能處于下列3種故障狀態(tài)之一:錯誤激活狀態(tài)(ErrorActive)、錯誤認可狀態(tài)(Error Pasitive)和總線(xiàn)關(guān)閉狀態(tài)(Bus off)。 錯誤激活單元可以照常參與總線(xiàn)通信,并且當檢測到錯誤時(shí),送出一個(gè)活動(dòng)錯誤標志。錯誤 認可節點(diǎn)可參與總線(xiàn)通信,但是不允許送出活動(dòng)錯誤標志。當其檢測到錯誤時(shí),只能送出認可錯 誤標志,并且發(fā)送后仍為錯誤認可狀態(tài),直到下一次發(fā)送初始化?偩(xiàn)關(guān)閉狀態(tài)不允許單元對總 線(xiàn)有任何影響。 為了界定故障,在每個(gè)總線(xiàn)單元中都設有2個(gè)計數:發(fā)送出錯計數和接收出錯計數。這些 計數按照下列規則進(jìn)行。 (1)接收器檢查出錯誤時(shí),接收器錯誤計數器加1,除非所有檢測錯誤是發(fā)送活動(dòng)錯誤標志或超載標志期間的位錯誤。 (2)接收器在送出錯誤標志后的第一位檢查出顯性位時(shí),錯誤計數器加8。 (3)發(fā)送器送出一個(gè)錯誤標志時(shí),發(fā)送器錯誤計數器加8。有兩種情況例外:其一是如果發(fā) 送器為錯誤認可,由于未檢測到顯性位應答或檢測到應答錯誤,并且在送出其認可錯誤標志時(shí),未檢測到顯性位;另外一種情況是如果仲裁器件產(chǎn)生填充錯誤,發(fā)送器送出一個(gè)隱性位錯誤標志,而檢測到的是顯性位。除以上兩種情況外,發(fā)送器錯誤計數器計數不改變。 (4)發(fā)送器送出一個(gè)活動(dòng)錯誤標志或超載標志時(shí),檢測到位錯誤,則發(fā)送器錯誤計數器加8。 (5)在送出活動(dòng)鐠誤標志、認可錯誤標志或超載錯誤標志后,任何節點(diǎn)都最多允許連續7個(gè)顯性位。在檢測到第11個(gè)連續顯性位后,或緊隨認可錯誤標志檢測到第8個(gè)連續的顯性位,以及附加的8個(gè)連續的顯性位的每個(gè)序列后,每個(gè)發(fā)送器的發(fā)送錯誤計數都加8,并且每個(gè)接收器的接收錯誤計數也加8。 (6)報文成功發(fā)送后,發(fā)送錯誤計數減1,除非計數值已經(jīng)為0。 (7)報文成功發(fā)送后,如果接收錯誤計數處于1~197之間,則其值減1;如果接收錯誤計數為0,則仍保持為0;如果大于127,則將其值記為119~127之間的某個(gè)數值。 (8)當發(fā)送錯誤計數等于或大于128,或接收錯誤汁數等于或大于128時(shí),節點(diǎn)進(jìn)人錯誤認,可狀態(tài),節點(diǎn)送出一個(gè)活動(dòng)錯誤標志。 (9)當發(fā)送錯誤計數器大于或等于256時(shí),節點(diǎn)進(jìn)人總線(xiàn)關(guān)閉狀態(tài)。 (1O)當發(fā)送錯誤計數和接收錯誤計數均小于或等于127時(shí),錯誤認可節點(diǎn)再次變?yōu)殄e誤激活節點(diǎn)。 (11)在檢測到總線(xiàn)上11個(gè)連續的隱性位發(fā)送128次后,總線(xiàn)關(guān)閉節點(diǎn)將變?yōu)?個(gè)錯誤計數器均為0的錯誤激活節點(diǎn)。 (12)當錯誤計數器數值大于96時(shí),說(shuō)明總線(xiàn)被嚴重干擾。 如果系統啟動(dòng)期間僅有1個(gè)節點(diǎn)掛在總線(xiàn)上,此節點(diǎn)發(fā)出報文后,將得不到應答,檢查出錯誤并重復該報文,此時(shí)該節點(diǎn)可以變?yōu)殄e誤認可節點(diǎn),但不會(huì )因此關(guān)閉總線(xiàn)。 |