单节点CAN网络(CAN协议)

问题描述 投票:0回答:3

我是 CAN 协议的新手,正在阅读 Robert Bosch 的 CAN 规范 ver2.0 B 部分。我无法理解第 63 页上的以下几行

”注意: 启动/唤醒: 如果在启动期间只有一个节点在线,并且该节点传输某些消息,它将得不到确认,检测到错误并重复该消息。由于这个原因,它可能会变成“被动错误”,但不会“总线关闭”。”

据我所知,当发送器检测到错误(如确认错误)时,它会重新发送消息,并将发送错误计数(TEC)增加 8。因此,如果只有一个节点,那么每次它的 TEC 都应该增加 8传输消息,一旦 TEC 超过 255,就应进入“总线关闭”状态。

有人可以解释一下为什么规范说它只能进入“被动错误”而不能进入“总线关闭”吗?

can-bus
3个回答
7
投票

我认为您错过了规范的这一部分:

“例外1:

如果发送器处于“错误被动”状态,并且由于未检测到“显性”ACK 而检测到确认错误,并且在发送其被动错误标志时未检测到“显性”位。 “

在这种情况下,TEC 没有改变!

因此,在您的情况下,当网络中唯一的节点每次都重新传输并且 TEC 变得 >= 128 时,它就变成“被动错误”。那么上面的异常情况就有效了!并且 TEC 不再改变!因此没有“巴士下车”。


0
投票

是的,这是正确的,就像 Tx ECU 没有从 CAN 网络中的任何 ECU 接收到任何 ACK 一样,它将保持错误被动状态。 因为网络协议需要当多个系统在 CAN 网络中可用并且如果网络中没有可用的 ECU 时,则没有意义,因为 ECU 出现问题,因此不应进入 CAN 总线关闭状态,而应保持在 CAN 总线关闭状态错误被动状态。 要了解更多有关CAN错误的信息,您可以点击以下链接:


0
投票

如果具有单节点的CAN网络将传输消息,则TEC错误将增加到255并保持在错误被动状态。 这是 CAN 标准中的特殊情况。

© www.soinside.com 2019 - 2024. All rights reserved.