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?