处于消极报错状态的CAN节点在一次本地错之后,由于标准考虑不周,会产生该节点与其他节点在帧启停上的不同步,造成错误的不断延续,在接收节点中产生等同离线状态。本文讨论了在发送节点中产生真正离线的原因,并提出了解决方案。 CAN(Controller Area Network)是一种广泛应用的现场总线技术,尤其在汽车行业中,它作为控制器间通信的主要途径,是分布式嵌入式系统的核心组件。然而,CAN协议存在一个潜在的安全漏洞,可能导致消极报错状态的发送节点变为离线状态,影响网络通信的正常运行。 在CAN协议中,当节点检测到错误时,会进入消极报错状态,此时节点会在报错帧结束后发送6位的消极报错标志。如果报错标志没有得到正确确认,节点会继续发送隐位,直到检测到6个连续相同的位。问题在于,标准并未明确规定在报错帧后的空闲时间长度,这可能导致节点间的帧同步问题。一旦出现本地错误,消极报错节点可能会错过正确同步的机会,进入一种持续错误的状态,无法发送或接收数据,表现为“离线”。 CAN一致性测试标准ISO16845对此进行了规定,但在实际操作中,由于缺乏充分的时间同步机制,即使总线有空闲时间,也无法确保节点之间的正确分布。一旦这种情况发生,其他节点的帧发送会与消极报错节点产生冲突,引发更多错误,形成恶性循环。 此外,标准对消极报错帧分界符的规定也存在隐患。如果分界符期间检测到显位,接收节点会认为是格式错误并开始新的报错帧。若消极报错节点无法在正确时间内结束报错帧,其分界符将与其他节点的帧开始时间错位,导致持续的错误状态,进而影响CAN网络的优先级控制和调度,使得高优先级消息无法正常发送。 当消极报错节点遭遇本地错误,其发送错计数器(TEC)会持续增加,当达到256时,节点将转为离线状态,直到读取到128个连续的隐位后转为主动报错状态。相比之下,接收错计数器(REC)有上限,不会导致离线状态。因此,区分节点是发送还是接收状态至关重要,因为它们在错误处理和状态转换上的规则不同。 解决这个问题的一种方法是调整消极报错帧分界符的长度,但这需要对CAN协议进行修改,同时确保不影响系统的实时性和稳定性。此外,提高硬件的抗干扰能力、优化错误检测算法以及引入更精确的时间同步机制也是可能的解决方案。 CAN消极报错节点变为离线状态的问题源于标准的不完善,这可能导致网络通信的优先级逆转和调度失效,影响系统安全。为防止这种情况,需要深入理解CAN协议,改进错误处理机制,并确保节点之间的同步策略能够有效应对各种异常情况。
- 粉丝: 6
- 资源: 935
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助