can-bus

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


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.


Solution

  • From my understanding, since it was indicated in ISO 11898-1 8.3.1 that the "frame acceptance filtering" is provided at the LLC sub-layer, and the "acknowledgement" is provided at the MAC sub-layer, the "acknowledgement" process will be completed before the "frame acceptance filtering". So all nodes on the bus will participate in the ACK process even some nodes are filtering for this identifier.