CAN Protocol (Chassis) Reset Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX00 XX: driver id, can be 1 or 2 or 3 8 / data function data type description byte[0] / uint8 Fixed value 0x55 byte[1] / uint8 Fixed value 0x55 byte[2] / uint8 Fixed value 0x55 byte[3] / uint8 Fixed value 0x55 byte[4] / uint8 Fixed value 0x55 byte[5] / uint8 Fixed value 0x55 byte[6] / uint8 Fixed value 0x55 byte[7] / uint8 Fixed value 0x55   Driver mode switch Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX01 XX: driver ID. Can be 1 or 2 or 3 8 / data function data type description byte[0] mode uint8 2-open loop mode 3-velocity loop mode 4-position velocity loop mode 5-current loop mode 6-velocity current loop mode 7-position velocity current loop mode Note: typically the velocity current loop mode should be used. If you want to switch mode, you need to send reset first byte[1] / uint8 Fixed value 0x55 byte[2] / uint8 Fixed value 0x55 byte[3] / uint8 Fixed value 0x55 byte[4] / uint8 Fixed value 0x55 byte[5] / uint8 Fixed value 0x55 byte[6] / uint8 Fixed value 0x55 byte[7] / uint8 Fixed value 0x55   Open loop mode control Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX02 XX: driver ID. Can be 1 or 2 or 3 8 10ms data function data type description byte[0] pwm_duty [15:8] int16 range [-3000,3000] byte[1] pwm_duty [7:0] byte[2] / uint8 Fixed value 0x55 byte[3] / uint8 Fixed value 0x55 byte[4] / uint8 Fixed value 0x55 byte[5] / uint8 Fixed value 0x55 byte[6] / uint8 Fixed value 0x55 byte[7] / uint8 Fixed value 0x55   Velocity mode control Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX03 XX: driver ID. Can be 1 or 2 or 3 8 10ms data function data type description byte[0] pwm_duty [15:8] int16 range [-3000,3000] byte[1] pwm_duty [7:0] byte[2] velocity [15:8] int16 unit: rpm, range [-500,500] byte[3] velocity [7:0] byte[4] / uint8 Fixed value 0x55 byte[5] / uint8 Fixed value 0x55 byte[6] / uint8 Fixed value 0x55 byte[7] / uint8 Fixed value 0x55   Position velocity mode control Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX04 XX: driver ID. Can be 1 or 2 or 3 8 10ms data function data type description byte[0] pwm_duty [15:8] int16 range [-3000,3000] byte[1] pwm_duty [8:0] byte[2] velocity [15:8] int16 unit: rpm, range [-500,500] byte[3] velocity [8:0] byte[4] position[31:24] int32 range [-4096,4096] byte[5] position[23:16] byte[6] position[15:8] byte[7] position[7:0]   Current loop mode control Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX05 XX: driver ID. Can be 1 or 2 or 3 8 10ms data function data type description byte[0] current [15:8] int16 unit: 10mA, range [-7000,7000] byte[1] current [7:0] byte[2] / uint8 Fixed value 0x55 byte[3] / uint8 Fixed value 0x55 byte[4] / uint8 Fixed value 0x55 byte[5] / uint8 Fixed value 0x55 byte[6] / uint8 Fixed value 0x55 byte[7] / uint8 Fixed value 0x55   Velocity current mode control Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX06 XX: driver ID. Can be 1 or 2 or 3 8 10ms data function data type description byte[0] current [15:8] int16 unit: 10mA, range [-7000,7000] byte[1] current [7:0] byte[2] velocity [15:8] int16 unit: rpm, range [-500,500] byte[3] velocity [7:0] byte[4] / uint8 Fixed value 0x55 byte[5] / uint8 Fixed value 0x55 byte[6] / uint8 Fixed value 0x55 byte[7] / uint8 Fixed value 0x55   Position velocity current mode control Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX07 XX: driver ID. Can be 1 or 2 or 3 8 10ms data function data type description byte[0] current [15:8] int16 unit: 10mA, range [-7000,7000] byte[1] current [8:0] byte[2] velocity [15:8] int16 unit: rpm, range [-500,500] byte[3] velocity [8:0] byte[4] position[31:24] int32 range [-4096,4096] byte[5] position[23:16] byte[6] position[15:8] byte[7] position[7:0]   Set motor acceleration or deceleration Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX30 XX: driver ID. Can be 1 or 2 or 3 8 / data function data type description byte[0] open loop acc [15:8] uint16 if you set 1000,it means that the PWM duty cycle value takes 1 second to go from 0 to 1000 byte[1] open loop acc [7:0] byte[2] open loop dec [15:8] uint16 if you set 1000,it means that the PWM duty cycle value takes 1 second to go from 1000 to 0 byte[3] open loop dec [7:0] byte[4] velocity loop acc[15:8] uint16 if you set 100,it means that the rpm value takes 10 second to go from 0 rpm to 1000 rpm byte[5] velocity loop acc [7:0] byte[6] velocity loop dec[15:8] uint16 if you set 100,it means that the rpm value takes 10 second to go from 1000 rpm to 0 rpm byte[7] velocity loop dec [7:0]   set velocity loop(without current loop)PID param cmd Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX40 XX: driver ID. Can be 1 or 2 or 3 8 The driver has default parameters that are sent when they need to be modified data function data type description byte[0] P [31:24] float Proportion param byte[1] P[23:16] byte[2] P[15:8] byte[3] P[7:0] byte[4] I [31:24] float Integral param byte[5] I[23:16] byte[6] I[15:8] byte[7] I[7:0]   set position loop(without current loop)PID cmd Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX41 XX: driver ID. Can be 1 or 2 or 3 8 The driver has default parameters that are sent when they need to be modified data function data type description byte[0] P [31:24] float proportion param byte[1] P[23:16] byte[2] P[15:8] byte[3] P[7:0] byte[4] D [31:24] float differential param byte[5] D[23:16] byte[6] D[15:8] byte[7] D[7:0]   set current loop PID cmd Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX42 XX: driver ID. Can be 1 or 2 or 3 8 The driver has default parameters that are sent when they need to be modified data function data type description byte[0] P [31:24] float proportion param byte[1] P[23:16] byte[2] P[15:8] byte[3] P[7:0] byte[4] I [31:24] float Integral param byte[5] I[23:16] byte[6] I[15:8] byte[7] I[7:0]   set velocity loop(with current loop)PID cmd Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX43 XX: driver ID. Can be 1 or 2 or 3 8 The driver has default parameters that are sent when they need to be modified data function data type description byte[0] P [31:24] float proportion param byte[1] P[23:16] byte[2] P[15:8] byte[3] P[7:0] byte[4] I [31:24] float Integral param byte[5] I[23:16] byte[6] I[15:8] byte[7] I[7:0]   set position loop(with current loop)PID cmd Sender Receiver CAN ID DLC Period(ms) Controller Motor driver 0x0505XX44 XX: driver ID. Can be 1 or 2 or 3 8 The driver has default parameters that are sent when they need to be modified data function data type description byte[0] P [31:24] float proportion param byte[1] P[23:16] byte[2] P[15:8] byte[3] P[7:0] byte[4] D [31:24] float differential param byte[5] D[23:16] byte[6] D[15:8] byte[7] D[7:0]   motor position velocity current feedback Sender Receiver CAN ID DLC Period(ms) Motor driver Controller 0x0505XXB1 XX: driver ID. Can be 1 or 2 or 3 8 10ms data function data type description byte[0] current [15:8] int16 unit: 10mA byte[1] current [8:0] byte[2] velocity [15:8] int16 unit: rpm byte[3] velocity [8:0] byte[4] position[31:24] int32 unit: qc byte[5] position[23:16] byte[6] position[15:8] byte[7] position[7:0]   Driver status feedback Sender Receiver CAN ID DLC Period(ms) Motor driver Controller 0x0505XXB2 XX: driver ID. Can be 1 or 2 or 3 8 100ms data function data type description byte[0] pwm duty [15:8] int16   byte[1] pwm duty [8:0] byte[2] voltage [15:8] uint16 unit: 0.01V byte[3] voltage [8:0] byte[4] MOSFET temperature uint8 unit: ℃ byte[5] motor temperature uint8 unit: ℃ byte[6] error uint8 0-normal 1-voltage over low 2-voltage over high 3-mosfet overtemperature 4-motor overtemperature 5-motor over current 6-encoder disconnect 7-encoder feedback direction is incorrect 8-encoder leads are not secure 9- hall sensor is abnormal byte[7] warning uint8 bit0-can watchdog timeout bit1-there is a gap in the Hall sensor   vcu error feedback Sender Receiver CAN ID DLC Period(ms) VCU Controller 0x011101BA 8 100ms data function data type description byte[0] reverse uint8 0 byte[1] reverse uint8 0 byte[2] reverse uint8 0 byte[3] error uint8 bit0-Low battery warm bit1-Low battery error bit2-reverse bit3-emergency stop byte[4] reverse uint8 0 byte[5] reverse uint8 0 byte[6] reverse uint8 0 byte[7] reverse uint8 0   VCU ctrl mode switch Sender Receiver CAN ID DLC Period(ms) VCU Controller 0x01110111 8 / data function data type description byte[0] VCU mode uint8 0-standby 1-reverse 2-VCU CAN mode 3-free mode 4-passthrough mode Note: After powering on, it is in passthrough mode by default byte[1] reverse uint8 0 byte[2] reverse uint8 0 byte[3] error uint8 0 byte[4] reverse uint8 0 byte[5] reverse uint8 0 byte[6] reverse uint8 0 byte[7] reverse uint8 0           Velocity current mode example 1. Switch to velocity current mode CAN ID: 0x05050101, Data: 06 55 55 55 55 55 55 55 2. Set target velocity to 500 rpm, current to 30000mA CAN ID: 0x05050106, Data: 0B B8 01 F4 55 55 55 55