CAN communication frequency (position control)


I’d like to know how fast CAN communication can realistically be for controlling position of 4 motors, having 2 ODrives and an external master (please assume this is not the bottleneck) in the CAN bus.

The only messages going through the bus would be the 4 position setpoint updates at each cycle.

Would it be possible to reach 1 kHz update rate of position setpoints?


PS: A small attempt to answer myself:

For each cycle, for each motor, I have to send the following CAN message

CAN address + message ID (0x00C) + position seetpoint + velocity FF + current FF
8 bits (first 6 used + 00) + 8 bits (000 + last 5 used) + 32 + 16 + 16 = 80 bits

I have 4 motors, so 80*4 = 320 bits per cycle.

I set the CAN baud rate to 1000 kbit/s.

That gives me (without any stop between a message and the other) a potential of
baudrate / traffic per cycle = 1e6 / 320 = 3125 Hz

What I miss here is:

  • Is there any need of ‘waiting’ between one message and the other? How much?
  • Are there any other messages needed to keep CAN alive?