CAN 使用多播时,一个节点是否参与 ACK 过程?

huangapple go评论62阅读模式
英文:

Is a node participating in the ACK process when CAN uses multicasting?

问题

CAN标准ISO 11898-1规定,网络中的所有节点(也称为CAN护盾)在节点传输帧时会在特定位置发送主动的“ACK位”,以指示帧与CRC的一致性。未经确认的帧被视为已损坏。

与此同时,该标准还规定了“多播”(向网络中的多个节点发送)。从硬件角度来看,我只能感知到“广播”(它是向网络中的所有节点发送),这是多播的子集:消息的过滤不是在节点本身上进行的,而是在连接到其CAN护盾接口的设备的软件上进行的。

如果我的总线上有两个节点,而设备B正在过滤一个标识符,而设备A正在传输另一个标识符的帧,那么设备B会确认该帧吗?

根据我的理解,应该会,但我无法进行测试,希望听听您的想法。

英文:

The CAN standard ISO 11898-1 states that all nodes (aka CAN shield) in a network will send a dominant ACK bit at the specific position during the node transmitting a frame to indicate the consistency of the frame w.r.t to the CRC. An unacknowledged frame is seen as corrupted.

At the same time the standard states to be multicasting (sending to multiple nodes in the network). Hardware-wise I only perceived broadcasting (it is sending to all nodes in the network), which is a subset of multicasting: the filtering of messages occurs not in the nodes itself but on the software of the device connected to its CAN shield interface.

If I have two nodes on my bus and device B is filtering for an identifier, while device A is transmitting a frame with another identifier. Will the frame be acknowledged by device B?

From my understanding it should, but I was not able to test this and would like to hear your thoughts.

答案1

得分: 0

在CAN属性中指出:

  • 所有的帧传输都是以广播方式完成的。
  • 多播帧传输通过接收过滤实现。

因此,由于所有(活动的)节点都在接收所有帧,只需两个节点来确认一个带有标识符的消息,设备B会进行过滤。

英文:

In CAN properties it states

  • all frame transfer is done as broadcast
  • multicast frame transfer by acceptance filtering

Therefore, as all (active) nodes are receiving all frames, two nodes are sufficient to acknowledge a message with an identifier device B filters out.

huangapple
  • 本文由 发表于 2023年8月9日 09:19:00
  • 转载请务必保留本文链接:https://go.coder-hub.com/76863991-2.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定