本文導讀
你瞭解CAN匯流排嗎?你知道匯流排中有哪些錯誤嗎?你想瞭解匯流排中的錯誤是如何校驗以及錯誤之間的關係嗎?下文為大家揭開它神秘的面紗。
CAN匯流排是ISO國際標準化的串列通信協定。在汽車產業中,出於對安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制系統被開發了出來。由於這些系統之間通信所用的資料類型及對可靠性的要求不盡相同,由多條匯流排構成的情況很多,線束的數量也隨之增加。為適應“減少線束的數量”、“通過多個LAN,進行大量資料的高速通信”的需要,CAN匯流排應運而生,圖1為CAN匯流排在汽車中的應用圖。
圖1 汽車中CAN匯流排的應用
CAN的高性能和可靠性已被認同,並被廣泛地應用於工業自動化、船舶、醫療設備、工業設備等方面。現場匯流排是當今自動化領域技術發展的熱點之一,被譽為自動化領域的電腦局域網。圖2為CAN匯流排網路圖,它的出現為分散式控制系統實現各節點之間即時、可靠的資料通信提供了強而有力的技術支援。
圖2 CAN匯流排網路圖
CAN匯流排作為可靠性非常高的匯流排,出錯概率非常小,這也是它被廣泛應用的原因之一。在CAN匯流排的實際研發中,相較於CAN匯流排的正確幀,工程師更關注CAN匯流排的錯誤幀,下面將為大家展現CANscope波形常見的幾類錯誤,圖3為干擾導致的CAN通訊錯誤。
圖3 錯誤波形圖
圖4為終端電阻並聯過多,差分電平幅值太小導致接收節點識別失敗的錯誤。
圖4 錯誤波形圖
圖5為匯流排支線過長,電平下降沿臺階過高,導致位元寬度失調的錯誤。
圖5 錯誤波形圖
圖6為卡車打開/關閉大燈時,耦合到CAN匯流排上的干擾,導致的錯誤。
圖6 錯誤波形圖
圖7為串列傳輸速率異常(位寬度從2us突然變成1.6us),導致位元錯誤。
圖7 錯誤波形圖
CAN匯流排的錯誤都有哪些形式,相互之間有什麼樣的關係,以及匯流排的檢測與校驗的原理是什麼?
CAN匯流排的錯誤幀可分為位元錯誤、位元填充錯誤、CRC錯誤、格式錯誤、應答錯誤五大類,每類錯誤的具體解釋如圖8所示,此圖簡潔明瞭的展現了各種錯誤。
圖8 CAN匯流排錯誤類型
CAN報文傳輸過程中出現通訊錯誤,會發送錯誤幀,以上所述的錯誤框架類型中根據其錯誤識別字不同,可分為“主動錯誤”和“被動錯誤”。
- 主動錯誤:檢測錯誤主動報錯,發出錯誤識別字(連續6個顯性位元)和錯誤界定符(連續8個隱形位);目的在於“主動”通知錯誤,即使別的節點沒有發現此錯誤;
- 被動錯誤:檢測錯誤,被動等待其他節點報錯後發送錯誤識別字(連續6個隱形位元)和錯誤識別字(連續8個隱形位);目的在於識別錯誤,回應主動錯誤。
匯流排關閉:節點不參與匯流排通訊。
為了避免某個設備因為自身原因(例如硬體損壞)導致無法正常收發資料而不斷地破壞資料幀,從而影響其他正常節點通訊,CAN-bus規範中規定每個CAN控制器都有一個發送錯誤計數器和一個接收錯誤計數器。根據計數值不同CAN節點會處於不同的設備狀態,狀態之間的轉換關係如圖9所示。
圖9 錯誤轉換圖
接收、發送錯誤計數器對應的變動條件及數值變動情況:
- 接收單元檢測出錯誤時,檢測到錯誤識別字或超載標誌的“位元錯誤”除外,此時REC+1、TEC不變;
- 接收單元在發送完錯誤標誌後檢測到第一位為顯性電平,此時REC+8、TEC不變;
- 發送單元輸出錯誤標誌,此時REC不變、TEC+8;
- 發送單元發送主動錯誤標誌或超載標誌,檢測出位元錯誤,REC不變、TEC+8;
- 接收單元發送主動錯誤標誌或超載標誌,檢測出位元錯誤,REC+8、TEC不變;
- 各單元從主動錯誤標誌、超載標誌的開始檢測出連續14個顯性位,之後每檢測出連續8個顯性位,發送時REC+8、接收時TEC+8;
- 檢測出被動錯誤標誌後追加連續8個位的顯性位,發送時REC+8、接收時TEC+8;
- 發送單元正常接收資料結束時(返回ACK且到幀結束位元檢測到錯誤),REC不變、TEC-1;
- 接收單元正常接收資料結束時(到CRC未檢測出錯誤且正常返回ACK),REC<127時,REC-1,REC>127時,REC=127;TEC不變;
- 處於匯流排關閉的單元,檢測到128次連續11個位的隱形位元,錯誤計數器歸零,REC、TEC=0;
CAN匯流排錯誤處理功能屬於是鏈路層功能,此功能由CAN控制器決定,圖10為CAN控制介紹圖,其中詳細介紹與錯誤處理有關的部分:位元流處理器、位元邏輯控制、錯誤管理邏輯。
- 位流處理器(BSP)是一個控制發送緩衝器、接收FIFO和CAN匯流排之間資料流程的程式裝置,它還執行匯流排上的錯誤檢測、仲載、匯流排填充和錯誤處理。
- 位元時序邏輯(BTL)監視串列的CAN匯流排和位元時序,它在資訊開頭“弱勢支配”的匯流排傳輸時,同步CAN匯流排位元流(硬同步),接收報文時再次同步下一次傳送(軟同步)。
- 錯誤管理邏輯(EML)負責限制傳輸層模組的錯誤,它接收來自位元流處理器的出錯報告,然後把有關錯誤統計告訴位元流處理器和介面管理邏輯(IML)。
圖10 CAN控制器
CAN控制器的信號從CAN收發器的TXD發送到匯流排,同時被RXD收回進行檢測,以此達到即時的接收錯誤檢測、發送錯誤檢測與ID仲裁功能。CAN匯流排是如何保證資料傳輸可靠性的,以下介紹CAN匯流排獨有的檢測機制:位流檢測和CRC校驗。
-
位流檢測:即位檢測,如圖11所示節點在發送過程中,同時會監測自身發送的位數值,假如檢測到位與自身送出的位數值不同,則會提示位元錯誤;
圖11 位檢測
-
CRC校驗:即迴圈冗餘校驗碼是資料通訊領域中最常用的一種差錯校驗碼,其資訊欄位和校驗欄位的長度可任意選定;CRC校驗過程是通過迴圈計算冗餘校驗碼的方式實現的,CAN控制器內部CRC的實現是基於多項式發生器和一個15位元寄存器;其意義在於保證傳輸資料的正確性,未經CRC校驗檢測出的錯誤低於10負九次方。
CANscope匯流排分析儀是一款綜合性的CAN匯流排開發與測試的專業工具,集海量存儲示波器、網路分析儀、誤碼率分析儀、協定分析儀及可靠性測試工具於一身,並把各種儀器有機的整合和關聯,如圖12所示CANscope的軟體介面圖;重新定義CAN匯流排的開發測試方法,可對CAN網路通訊正確性、可靠性、合理性進行多角度全方位的評估;説明使用者快速定位故障節點,解決CAN匯流排應用的各種問題,是CAN匯流排開發測試的終極工具。
圖12 CANscope軟體介面