通常,发送远程帧以要求来自另一节点的数据,该节点稍后发送具有相同标识符的相应数据帧。但是当两个节点都在发送数据帧时,如何避免总线冲突?
例如,节点A向节点B发送数据帧,例如,向前移动10mm,然后当运动完成时,节点B将数据帧返回到节点A.这样两条消息都具有相同的数据,并且标识符相同。
更新
目前,节点ID被分配给整个PCB,其中包含多个组件,如传感器和电机。根据Lundin的帖子,我意识到区分这些组件是不可能的。例如,当向消息发送消息时,很可能导致误码,同时从传感器获得响应消息。在这种情况下,仲裁不会生效。那么,以下几点是最佳做法吗?
只要它们不会同时发送,这不是问题。如果你实现了一个像你描述的那样的握手方案,一次只允许一个节点发送数据,它就可以正常工作。
否则,通常使用节点id来区分节点。例如,如果您的数据具有标识符0x100
,则节点A可以发送id 0x100
和节点B id 0x101
。接收器然后可以对它们进行相同的处理。