王睿朝,陳思嘉,徐成竹,衛 威,方偉家
(北京福田戴姆勒汽車有限公司,北京 101400)
隨著汽車電子電氣技術的不斷發展,車載總線上的電子控制單元不斷增加,而各電控單元間的信息交互也更加頻繁,這也導致總線錯誤的發生幾率大大提升。為保證整個網絡的穩定運行,主機廠會對所有電控單元的網絡行為作出統一的定義。當檢測到總線錯誤時,所有電控單元都應依據主機廠既定的策略作后續處理。
應答:所有接收方應檢查接收數據幀的一致性,并應對一致的幀進行應答,對不一致的幀進行標記。未被應答的幀已損壞并應被發送節點標記。圖1為CAN數據幀格式。
應答場:應答場為2位,包括應答間隙和應答分隔符。在應答場中,發送節點應發送2個隱性位。如圖2所示。
應答間隙:所有接收到匹配的CRC序列的節點,在應答間隙發送應答 (發送1個顯性位覆蓋發送節點發送的隱性位)。應答間隙電平變化如圖3所示。
圖1 CAN數據幀格式
圖2 應答場
應答分隔符:作為應答場的第2個位,應答分隔符應該是1個隱性位。因此,應答間隙應被2個隱性位包圍 (CRC分隔符,應答分隔符)。
應答錯誤:無論何時只要發送方在應答間隙檢測不到顯性位 (發送方發送的報文沒有被其他任何節點正確接收)都應檢測到應答錯誤。應答錯誤可被任何節點檢測出。
圖3 應答間隙電平變化
只要檢測到一個錯誤,LLC子層都應得知。因此,MAC子層應發起錯誤標志的傳輸。CAN的層結構如圖4所示。
錯誤幀由2個不同的場組成,第1個場為來自2個不同節點的錯誤標志的疊加,后面第2個場為錯誤分隔符。
錯誤標志分為主動錯誤標志和被動錯誤標志。主動錯誤標志由6個連續的顯性位組成,被動錯誤標志由6個連續的隱性位組成,其中的部分或全部可被其他節點的顯性位覆蓋。被動錯誤標志又為由發送方發起的和由接收方發起的。
圖4 CAN的層結構
應答錯誤的錯誤標志是由發送方發起的被動錯誤標志,如圖5所示。
圖5 應答錯誤的錯誤標志
應答錯誤的錯誤計數:當發送方在發送錯誤標志時,發送錯誤計數器應+8。
例外:發送方處于被動錯誤狀態,因沒有檢測到顯性應答且當發送它的被動錯誤標志時沒有檢測到顯性位從而產生應答錯誤。
出現此例外的正常原因:系統啟動期間只有一個節點在線,此節點發送一些報文,無法得到應答,從而檢測到一個錯誤并重復發送這些報文。根據ISO 11898-1,13.1.4.2,c),1),它將進入被動錯誤狀態,但是不會總線關閉。
例外情況下,發送錯誤計數器保持不變。節點狀態轉換如圖6所示。
任何節點在發送主動錯誤標志、被動錯誤標志或過載標志后應能容許多達7個連續顯性位。在主動錯誤標志或過載標志情況之后檢測到第14個連續顯性位或在被動錯誤標志之后檢測到第8個連續的顯性位之后,且在每增加8個連續顯性位之后,每個發送方的發送錯誤計數器+8,每個接收方的接收錯誤計數器+8。幀傳輸成功后 (得到應答,在幀結束完成傳輸前沒有檢測到任何錯誤),發送錯誤計數器-1,除非它已為0。
圖6 節點狀態轉換圖
產生應答錯誤的原因如下。
1)正常原因:系統啟動期間只有1個節點在線,此節點發送一些報文,無法得到應答,從而檢測到一個錯誤并重復發送這些報文。根據ISO 11898-1,13.1.4.2,c),1),它將進入被動錯誤狀態,但是不會總線關閉。
2)硬件錯誤:發送方正確發送置位的ACK Slot,接收方在線,正確接收從SOF至ACK Slot所有信息,但未對發送方進行置位回復;或發送方正確發送置位的ACK Slot,接收方將位置信息誤讀。電控單元通信示意圖如圖7所示。
圖7 電控單元通信示意圖
應答錯誤的檢測:應答錯誤會導致發送錯誤計數器值大于127(錯誤計數功能由CAN芯片內部寄存器實現),從而進入并一直保持被動錯誤狀態,而不會導致總線關閉。這點是應答錯誤區別于其他錯誤的顯著標志,其他幾種錯誤會進一步導致發送方進入總線關閉狀態。目前,CAN芯片無法單獨檢測應答錯誤,而是采用排除法,檢測到發送方持續保持被動錯誤狀態而不進入總線關閉狀態,即認為檢測到應答錯誤。Bosch是通過20ms驗證時間記錄被動錯誤狀態診斷故障代碼來認為發送方持續保持被動錯誤狀態的。
應答錯誤的處理策略 (圖8):CAN相關診斷未開啟時,當發送節點檢測到所發送報文的應答錯誤后,會嘗試重新發送該報文直到發送成功。重復發送該報文過程中,若CAN相關診斷開啟,則從CAN相關診斷開啟時開始計時。若該報文繼續發送TTx_TimeOut時間后,仍處于應答錯誤狀態,則要求發送節點停止發送報文,并等待TTx_Recovery超時 (發送節點在等待TTx_Recovery期間應進行CAN芯片的重新初始化),時間參數見表1。超時后發送節點再次開始發送報文。發送節點處于應答錯誤狀態期間,需保證以下行為。
圖8 應答錯誤處理策略示意圖
表1 時間參數
1)在TTx_Recovery期間,發送節點應做好接收報文的準備。
2)發送節點不會因應答錯誤而進入總線關閉狀態。
3)報文超時監控不受應答錯誤影響。
4)應答錯誤的處理行為只在CAN相關診斷開啟狀態下激活。
應答錯誤的處理行為的實現:應答錯誤的處理行為是通過檢測被動錯誤狀態后觸發中斷實現的。中斷是通過設置中斷使能寄存器 (圖9)、中斷標志寄存器 (圖10)實現的。以MC9S12XE-Family Controller Area Network為例。
圖11為電控單元檢測到應答錯誤后,按照上述策略處理應答錯誤的測試驗證。
圖9 中斷使能寄存器
圖10 中斷標志寄存器
圖11 應答錯誤處理策略的測試驗證