1 CAN總線錯誤類型 為了防止故障節(jié)點干擾甚至阻塞整個CAN網絡系統(tǒng),CAN協議實現了復雜的故障限制機制。為了保證通信的正常,CAN 2.0 總線協議總線中各節(jié)點需要采取以下措施進行錯誤檢測:
CAN協議具有檢測錯誤的能力。但是如果發(fā)生錯誤,它無法糾正錯誤。因此,如果發(fā)生錯誤,檢測到的節(jié)點或ECU將向CAN網絡發(fā)送錯誤幀。與之相對應的CAN 2.0 總線協議定義參與通信的CAN節(jié)點錯誤類型如下:
如果在使用位填充編碼的位流中,出現了第六個連續(xù)相同的位電平,將檢測到一個位填充錯誤;
當一個固定形式的位場含有一個或多個非法位時,將檢測到一個形式錯誤;
在應答間隙(ACK SLOT)所監(jiān)視的位不為“顯性”,則會檢測到一個應答錯誤;
如果接收器的CRC結果和發(fā)送器的CRC結果不同,將檢測到一個CRC錯誤。 2 CAN總線錯誤處理機制每個CAN控制器都有自己的CAN總線錯誤處理程序。為了處理這個問題,每個CAN控制器有兩個計數器寄存器(0 – 255),即:發(fā)送錯誤計數器 (TEC) 和接收錯誤計數器 (REC) 。如果5個錯誤中發(fā)生任何一個發(fā)生錯誤,它將根據錯誤類型增加 TEC 或 REC。Tips:一個特例:如果CAN總線上只有一個節(jié)點,該節(jié)點發(fā)送數據幀后得不到響應(ACK),其發(fā)送計數器TEC最大只能計到128,即該節(jié)點只能進入錯誤被動狀態(tài),而不會進入總線關閉狀態(tài),這就是為什么當您沒有將任何設備連接到網絡時,您的ECU將持續(xù)發(fā)送幀,但不會檢測到總線關閉并保持錯誤被動狀態(tài)。 錯誤計數器的遞增和遞減操作是不對稱的。在成功傳輸或接收消息時,如果相應的錯誤計數器未為零,則相應的錯誤計數器將遞減。在傳輸或接收錯誤的情況下,計數器將遞增,但遞增值大于遞減值。具體錯誤限制管理規(guī)則如下: a) 當接收器檢測到錯誤時,接收錯誤計數器REC+ 1。例外:發(fā)送活動錯誤標志、過載標志期間的位錯誤。 b) 當接收器在發(fā)送錯誤標志后檢測到顯性位作為第一位時,接收錯誤計數器REC+8。 c) 當發(fā)送器發(fā)送錯誤標志時,發(fā)送錯誤計數器REC+8。 1) 例外 1:如果發(fā)送器是錯誤被動狀態(tài),并且由于未檢測到顯性 ACK 而檢測到 ACK 錯誤,并且在發(fā)送其被動錯誤標志時未檢測到顯性位。 d) 如果發(fā)送器在發(fā)送活動錯誤標志或過載標志時檢測到位錯誤,則發(fā)送錯誤計數器TEC+8。 e) 如果接收器在發(fā)送活動錯誤標志或過載標志時檢測到位錯誤,則接收錯誤計數器TEC+8。 f) 在發(fā)送活動錯誤標志、被動錯誤標志或過載標志后,任何節(jié)點都應容忍最多7 個連續(xù)顯性位。在檢測到第14個連續(xù)顯性位后(在活動錯誤標志或過載標志的情況下)或在被動錯誤標志后檢測到第 8 個連續(xù)顯性位之后,并且每當在出現額外的8個連續(xù)顯性位序列之后,REC和TEC都需要+8。 g) 成功傳輸一個幀后(收到 ACK 并且沒有檢測到錯誤,直到 EOF 被檢測到完成),傳輸錯誤計數器應減1,直到為0。 h) 成功接收一個幀后(接收到 ACK 時隙沒有錯誤并且成功ACK 位的發(fā)送),接收錯誤計數器應減 1,如果它介于1和127。如果接收錯誤計數器為0,則應保持為零 (0),如果它大于127,則應將其設置為介于119和127。 3 什么是CAN協議中的故障限制故障限制是一種檢查機制,可以區(qū)分短時干擾(例如電纜的噪聲耦合到傳輸介質)和永久性故障(例如,節(jié)點發(fā)生故障并干擾總線). CAN通信節(jié)點的狀態(tài)分為暫時錯誤(Error active和Error Passive)和永久性故障(Bus Off);
因此,節(jié)點可能處于以下三種可能的錯誤狀態(tài)之一: 錯誤活動狀態(tài)。錯誤被動狀態(tài)。錯誤總線關閉狀態(tài)。 1. CAN協議中的錯誤主動狀態(tài) 當CAN設備通電時,它以錯誤活動狀態(tài)啟動。處于錯誤活動狀態(tài)的設備通??梢詤⑴cCAN通信。它還會在檢測到錯誤時傳輸主動錯誤標志。此主動錯誤標志(表示主導 0 位序列)會導致當前幀傳輸中止,從而導致同一消息的后續(xù)重新傳輸。 其中兩個錯誤計數器(TEC 和 REC)在錯誤活動狀態(tài)下都小于 128。它完全參與總線通信,并通過傳輸活動錯誤幀來發(fā)出錯誤信號。這包括 6 個主導位的序列,后跟 8 個隱性位,所有其他節(jié)點都使用適當的錯誤標志進行響應,以響應違反位填充規(guī)則。 2. CAN協議中的錯誤被動狀態(tài) 如果發(fā)送錯誤計數器或接收錯誤計數器大于127,CAN設備將進入錯誤被動狀態(tài)。處于錯誤被動狀態(tài)的設備仍然可以參與通信,但在檢測到任何錯誤時會傳輸被動錯誤標志。此被動錯誤標志(隱性 1 位序列)通常不會中止其他設備(如錯誤主動幀)傳輸的幀。 此外,錯誤被動節(jié)點必須在消息傳輸后等待額外的時間(Suspend Transmission Field,ITM后的 8 個隱性位),然后才能啟動新數據。 3. CAN協議中的總線關閉狀態(tài) 如果CAN控制器的發(fā)送誤差計數器超過255,則進入總線關閉狀態(tài)。它與總線斷開連接(使用內部邏輯),不再參與總線活動。簡單地說,我們可以說物理上與總線連接和邏輯上斷開連接。為了重新連接協議控制器,必須執(zhí)行Bus Off recovery sequence。這通常涉及主機系統(tǒng)對CAN控制器的重新初始化和配置,之后它將等待(128 * 11)隱性位時間,然后再開始通信。 |
|
來自: yeshuheng > 《CAN、OBD、診斷知識》