跳转到主要内容

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