1
\$\begingroup\$

Let's say we have a CAN bus network of 3 nodes: nodeA nodeB nodeC

nodeA broadcasts an important frame that nodeC needs but it gets corrupted on the way to nodeC(CRC check failed @ nodeC) but nodeB receives it just fine and sets ACK dominant bit.

Does it mean that nodeA is not going to attempt to repeat the frame and nodeC missed it completely?

\$\endgroup\$
2
  • 1
    \$\begingroup\$ yes, a single node setting the ack is enough \$\endgroup\$
    – BeB00
    Jul 6, 2023 at 2:02
  • \$\begingroup\$ read your question ... it has a typo \$\endgroup\$
    – jsotola
    Jul 6, 2023 at 4:47

1 Answer 1

1
\$\begingroup\$

Whenever a CAN message is acknowledged by any node, this only means that the message was physically transmitted correctly. Not that the intended recipient (nodeC) has received the message correctly. nodeA won't retransmit the message.

nodeC, having detected a CRC error, will increment its REC (receive error counter). If REC exceeds 127, nodeC will go into passive error mode.

If you use the CANopen application layer, you can implement a combination of EMCY, PDO and HEARTBEAT protocols to ensure that nodeC enters a defined safe state if the CAN bus is disturbed.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.