CAN Bus Heartbeats

Hello everyone,

I’ve got a project that uses 3 odrives, all connected via CAN bus. I’ve slightly modified the SimpleCAN protocol to allow for more commands (reduced the IDs by 1 bit and increased the commands by 1 bit).
In my code I’m checking for heartbeats to make sure everything is connected, particularly because i need 2 of the odrives to move in sync. I’ve noticed that some of the drives don’t seem to be sending heartbeats for ages (sometimes up to 30 seconds or more). this is obviously a problem. I’m fairly new to CAN, but to my knowledge it should prioritise commands by ID, right? But that shouldn’t be the issue, because it’s not always the same ones that aren’t sending regularly. In fact more often than not, It’s the odrive with the higher IDs that are regularly sending heartbeats, not the others.

Am i missing anything?


Yeah something’s wrong. Do you have termination resistance? 60 ohms total between CANH and CANL?