为了更好地管理CAN网络,增强网络可靠性,CAN协议规定网络内的每个节点有三种工作状态,且这三种工作状态在满足条件的情况下可以互相转化。本文就来分析一下这三种工作状态的定义、动作权限和转化条件,以帮助大家更好地理解CAN总线网络。
CAN协议规定网络中的每个节点可以处于三种工作状态:主动错误状态、被动错误状态和总线关闭状态。下图所示为三种工作状态之间的关系。
(1)REC:接收错误计数器。当节点检测到接收错误时,REC值增加;当节点正确接收数据帧时,REC值减少。
(2)TEC:发送错误计数器。当节点检测到发送错误时,TEC值增加;当节点正确发送数据帧时,TEC值减少。
(3)REC、TEC的数值会引起节点工作状态的改变。节点复位时两者的值均清零。
1. 主动错误状态
节点初始化后首先进入主动错误状态,此时REC和TEC的值都是零。
当节点的REC计数值≤127并且TEC计数值≤127时,节点处于主动错误状态。
处于主动错误状态的节点能够正常参与总线通信。当检测到错误时将发送主动错误标志,错误标志由6个连续的显性位组成,以此来通知其它节点总线上出现错误。
当节点的REC计数值大于127或者TEC的计数值大于127时,节点进入被动错误状态。
2. 被动错误状态
当节点REC计数值大于127或者TEC的计数值大于127时,节点处于被动错误状态。
处于被动错误状态的节点能够正常参与总线通信。当检测到错误时将发送被动错误标志,错误标志由6个连续的隐性位组成。当发送结束后,处于被动错误状态的节点在下一次发送之前需要等待一些额外时间。
当节点的REC计数值≤127并且TEC计数值≤127时,节点进入主动错误状态;当TEC的计数值大于255时,节点进入关闭状态。
3. 关闭状态
当节点TEC计数值大于255,节点进入关闭状态,不能发送或接收。
处于关闭状态的节点不允许对总线产生任何影响,此时节点既不会发送任何报文也不会发送ACK应答、错误帧、过载帧等,节点处于离线状态,保证错误节点不会影响其它节点之间的通信。
当节点复位或者连续检测到128次11位连续隐性位时,节点进入主动错误状态。
4. 特例
最后为大家介绍一个特例。如果CAN总线上只有1个节点,该节点发送数据帧后得不到应答,那么节点TEC最大只能计数到128,即节点只能进入被动错误状态而不会进入关闭状态。
总结
以上介绍了CAN网络节点的三种工作状态,包括每种状态的定义、节点的工作权限以及三种状态之间的转化条件,最后介绍了CAN总线上只有1个节点情况下的节点状态。希望通过本文的介绍,能帮助您更好地理解CAN节点的工作状态以及CAN网络的管理机制,设计出更加可靠的CAN总线网络。