4

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

" 注意:启动/唤醒:如果在启动过程中只有一个节点在线,并且如果该节点发送了一些消息,它将没有得到确认,检测到错误并重复消息。它可以变成'错误被动'但不是'由于这个原因,公共汽车关闭。”

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

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

4

2 回答 2

7

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

“例外一:

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

在这种情况下,TEC 不会改变!

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

于 2014-04-14T05:16:42.490 回答
0

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

于 2019-08-10T17:22:10.240 回答