局部錯誤, 全域通知是CAN匯流排錯誤類型中較為典型的一種, 如何通過錯誤報文及波形快速定位錯誤原因呢?本文結合現場實測案例簡要分析。
一、CAN匯流排錯誤簡介
在CAN匯流排中存在5種錯誤類型, 如圖1所示:它們互相並不排斥, 下面簡單介紹一下它們的區別、產生的原因。
圖1 5種錯誤類型
位元錯誤:向匯流排送出一位元的某個節點同時也在監視匯流排, 當監視到匯流排位元的電平和送出的電平不同時,則在該位時刻檢測到一個位錯誤。 但是在仲裁區的填充位流期間或應答間隙送出隱性位而檢測到顯性位時,
填充錯誤:在使用位元填充方法進行編碼的報文中(幀起始到CR序列), 出現了第6個連續相同的位電平時, 將檢 測出一個填充錯誤。
CRC錯誤:CRC序列是由發送器CRC計算的結果組成的。 接收器以和發送器相同的方法計算CRC。 如果計算的結果和接收到的CRC序列不同, 則檢測出一個CRC錯誤。
格式錯誤: 當固定格式的位區中(如CRC認可位、ACK認可位、幀結束位)出現一個或多個非法位時, 則檢測到一個形式錯誤。
應答錯誤:在應答間隙, 每一個接收端都會向匯流排回一個顯性位元, 如果發送端在ACK場檢測不到顯性位應答, 將產生應答錯誤。
當出現5種錯誤類型之一時, 發送或接收節點將發送錯誤幀。 其中錯誤幀 又分主動錯誤幀和被動錯誤幀。
主動錯誤幀由處於主動錯誤狀態的節點發送 , 框架格式由主動錯誤標誌(6個連續顯性位元)+錯誤標誌疊加(0~6個連續顯性位元)+錯誤界定符(8個連續的隱性位)組成。 主動錯誤框架格式如圖2所示:
圖2 主動錯誤框架格式
被動錯誤幀由被動錯誤狀態的節點發送, 框架格式由被動錯誤標誌(6個連續隱性位元)+錯誤標誌疊加(0~6個連續顯性位元)+錯誤界定符(8個連續的隱性位)組成。 被動錯誤標誌能夠部分或全部被其它節點的顯性位覆蓋。 如下:
圖3被動錯誤框架格式
二、什麼是局部錯誤?
在整個CAN網路中, 由於干擾等原因引起匯流排局部錯誤(即某一個CAN節點出錯, 其他節點正常), CAN匯流排上的主動報錯網站首先檢測到錯誤,
圖4 錯誤幀的發送(局部錯誤)
檢測錯誤---發送錯誤幀---通知報文錯誤:首先, 發送節點檢測到匯流排錯誤, 發出錯誤標識——六個連續的顯性電平位元, 匯流排接收到錯誤標識後進行全域通知——0~6個連續的顯性電平位+8個連續的隱性電平位元, 告知其他節點匯流排錯誤。
三、局部錯誤, 全域通知案例分析
某純電動公車, 在啟動車輛未啟動電機時, 匯流排報文成功率很高, 基本沒有錯誤幀, 但在啟動電機後, 特別是踩氣泵刹車時, 每踩一次踩氣泵就會湧現出較多的錯誤幀。 整車的簡單拓撲如圖5所示:
圖5 整車通信簡易拓撲
使用ZLG致遠電子匯流排分析儀CANscope連接方向盤下的OBD介面測試,
圖6 錯誤幀的波形圖
從藍色標記可以看到, ACK應答後, 先有一個低臺階, 再二次抬高的錯誤幀。
圖7 錯誤標誌分析
CAN網路串列傳輸速率為250 Kbps, 即每個位為4us,由圖7知, 錯誤標誌為7個顯性位元(主動錯誤標誌+錯誤標誌疊加)組成, 二次抬高的6個連續顯性電平, 是局部錯誤後全域通知, 各節點錯誤標誌疊加造成的。 也就是說車網路上有某一CAN節點較容易受到干擾, 出現局部錯誤。
如何快速分析局部錯誤, 定位干擾源呢?
由於是局部錯誤, 干擾源在不同的測試點幅值是不同的, 使用致遠電子CANScope接入車前端的OBD介面和車尾部的電機控制器分別測試,
圖8 共模干擾對比
由上圖所示, 在OBD介面測試的共模幅值為700多mV,在電機控制器節點測試的共模幅值為1.3V左右, 同時可看到週期性的干擾脈衝。 通過對異常共模信號做FFT頻譜分析, 快速定位共模干擾頻率, 測試結果如圖9所示:
圖9 共模干擾分析
測試出的干擾頻率與電機驅動器頻率吻合, 推斷為驅動器逆變產生的巨大電流形成強干擾, 串擾到CAN匯流排上, 導致距離其較近的節點出現局部錯誤。
局部錯誤, 全域通知是一種常見的錯誤類型, 如何快速定位到錯誤報文及其對應的波形是分析問題的關鍵, 通過CANScope匯流排分析儀的報文接收和示波器, 可將每一幀報文與波形做一一對應, 快速分析報文及波形情況, 實現CAN匯流排的快速故障定位和干擾排除。
實現CAN匯流排的快速故障定位和干擾排除。