3

我有一个面试。面试官问我:

如果两个节点发送两条具有相同标识符(0x100)但数据不同的消息,谁将赢得仲裁?巴士上会显示哪条信息?

如果节点 1 获胜,那么节点 2 的消息呢?节点 2 的消息何时发送?

4

3 回答 3

3

这里有两种情况

  1. 相同的 ID 和相同的 DATA 字段
  2. 具有不同 DATA 字段的相同 ID

CASE 1:当两个节点试图传输相同的 ID 和相同的数据字段时,CAN 会将其视为单个消息,并将其发送到 CAN 总线上。在这里你真的不能说是节点 1 正在发送还是节点 2 正在发送,因为两者具有相同的 ID 和数据。

案例2:这里的数据字段不同。直到仲裁领域都不会有问题。由于两个节点的数据不同,您将收到总线错误。这是因为您的数据字段受CRC保护,并且位填充也会出现。

于 2012-10-01T09:06:42.340 回答
1

在 CAN N/W 中,如果 2 个设备具有相同的节点 ID,则两个设备都不会检测到并且不会发生消息的请求/响应。(什么都行不通……比如位填充、仲裁、错误检测、位监控、ACK、CRC)。

在 N/W 中,如果我们有不同的 ID,那么我们可以传输相同或不同的消息。为了控制 CAN N/W,我们使用仲裁的概念。

于 2016-01-27T14:48:18.937 回答
0

我在Controller Area Network - CAN Information中找到了答案。

不允许网络上的两个节点发送具有相同 ID 的消息。如果两个节点试图同时发送具有相同 ID 的消息,仲裁将不起作用。相反,其中一个发送节点将检测到他的消息在仲裁域之外被扭曲。然后节点将使用 CAN 的错误处理,在这种情况下最终将导致其中一个传输节点被关闭(总线关闭模式)。

于 2012-05-29T12:26:04.643 回答