如何在发送具有相同帧ID的数据帧时避免CAN总线上的冲突?

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

通常,发送远程帧以要求来自另一节点的数据,该节点稍后发送具有相同标识符的相应数据帧。但是当两个节点都在发送数据帧时,如何避免总线冲突?

例如,节点A向节点B发送数据帧,例如,向前移动10mm,然后当运动完成时,节点B将数据帧返回到节点A.这样两条消息都具有相同的数据,并且标识符相同。

更新

目前,节点ID被分配给整个PCB,其中包含多个组件,如传感器和电机。根据Lundin的帖子,我意识到区分这些组件是不可能的。例如,当向消息发送消息时,很可能导致误码,同时从传感器获得响应消息。在这种情况下,仲裁不会生效。那么,以下几点是最佳做法吗?

  1. 应将每个传感器或电机定义为具有唯一标识符的节点。但是,在不同PCB之间移动组件似乎不方便,因为每次都应更新相应PCB的滤波器。
  2. 每个PCB应定义更多过滤器以接受其上节点的所有标识符。
  3. 仅使用远程框架来要求来自传感器的数据。
can-bus
1个回答
1
投票

只要它们不会同时发送,这不是问题。如果你实现了一个像你描述的那样的握手方案,一次只允许一个节点发送数据,它就可以正常工作。

否则,通常使用节点id来区分节点。例如,如果您的数据具有标识符0x100,则节点A可以发送id 0x100和节点B id 0x101。接收器然后可以对它们进行相同的处理。

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