2017年1月12日 星期四

CAN bus (Controller Area Network) - Error Handling(2)

● CAN bus Error Handling - Error States of CAN Node














每一個 CAN node 都有各自獨立的 傳送以及接收錯誤計數器 :
         TEC ( Transmit Error Counter )
         REC ( Receive  Error Counter )
CAN 協定根據Error Counter 的內容將錯誤狀態分為三種 :
         Error Active、Error Passive、Bus-Off
根據 Node 的狀態不同, 控制 CAN Bus 的能力也跟著調整 ( Active > Passive > Bus-Off )
如果到達了 Bus-Off 的狀態條件 (TEC>255), CAN node將自身設定為完全離線狀態
進入Bus-Off狀態的Node ; CAN 定義了Recovery的程序以便使其重回到Active狀態











● Error-Active :
CAN node可以主動地傳送或接收訊息(messages)和Error-Frames(一般正常的工作模式)
偵測到錯誤時,CAN Node 將送出正常 Error Frame( 6 個 Dominate 位元的 Active Error Flag)
的方式將正傳送中的 message 中斷掉
這樣的做法違反了Bit-Stuffing的原則,所以其他的CAN Node也將產生它們自己的Error Frames(稱為錯誤回應旗標 -> Error Echo Flags)。
每當偵測到有錯誤發生, 適當的錯誤計數器,一旦Error Frame 完成後,bus 的活動又回到正常狀態,Message 將會被重新傳送

● Error-Passive :
當TEC或REC計數器超過了127,CAN Node變進入Error-Passive的狀態
Passive Error Flags的Error Frames將不會影響傳送中的 Message
當Error Frame完成後,處於Error-Passive的Node會等到以下條件符合才會被致能傳送
在Dominate位元之後有3個Recessive位元(Intermission)加上8個Recessive位元的時間長(Suspend Transmission)

● CAN bus Error Handling - Passive Error Frame









● CAN bus Error Handling - Suspend Passive Transmission








● Bus-Off :
當TEC計數器值超過 255,控制器將進入Bus-Off狀態
CAN Node將無法傳送或接收任何的Message或錯誤狀態
經過以下的程序,CAN Node可再度回到Error Active的狀態
接收到正確的Bus Recovery程序(11個連續的Recessive位元發生128次)
經由硬體或軟體的重置動作。
將控制器設定成Configuration Mode

● CAN bus Error Handling - Transmit Error Counter














● CAN bus Error Handling - Receive Error Counter














● 錯誤偵測的的重點整理
CAN Nodes可依錯誤的嚴重程度來自動地減少它們對Bus的控制能力
不同Error-States間的差異在於錯誤的Node該如何被限制行為
CAN對錯誤時的能力限制(Fault Confinement)可防止有缺陷的Node使得整個網路當掉
● CAN bus Overload Frame
當一個Node需要較多的時間來處理所接收的資料時,便送出Overload Frame
當間隔位元少於規定值時(最少要 3 個 recessive bits)也會發生
間隔位元(Intermission)使CAN Node有時間做內部資料處理









● Interframe Space
幀間空間包括Intermission、Bus idel
如果是"Error-Passive"的Node要發送報文時,Interframe Space除了Intermission、Bus idel,
還包括Suspend Transmission
不是“錯誤被動”的Node,Interframe Space如下 :









是“錯誤被動”的Node,Interframe Space如下 :










沒有留言:

張貼留言