CKESC UAVCAN Protocol 2.1 by CKESC
2024/10/11
目录
4.4.3. FRAME_MSG_GET_ESC_ID (20013) 9
4.4.8. MSG_EXP2-6(20054-20058) 11
4.4.15. RawCommand_14b(20100) 14
4.4.16. RawCommand_12b(20101) 14
4.4.17. RawCommand_10b(20102) 15
4.4.23. Throttle Select(215) 19
4.4.25. Expand Set Part(222) 20
4.4.26. ESC Information(240) 21
4.4.27. Maintance Information(241) 21
4.4.28. Get Major Configuration(242) 22
1. 适用范围
1 :本文主要描述了电调(ESC)与外部设备通讯的协议。
2 :部分功能只用于配置有相应硬件的ESC 上。
2. 术语
表 2-1 文档术语
术语 | 解释说明 |
---|---|
ESC | electric speed controller 电子调速器 |
CAN | Controller Area Network 控制器局域网络同时是一种通讯协议。 |
3. 参考文档
《CANBUS 规范 v2.0+中文版.pdf》
4. 协议定义
4.1. UAVCAN 协议
UAVCAN 协议基于标准 CANBus 2.0B 协议,基于 29bit 的扩展帧数据帧,SamplePoint 87.5%。
4.1.1. 概念
1 :Message 帧 - 是广播帧,所有的节点都能够接收到此消息。
2 :Service 帧 - 是非广播帧,指定节点 ID ,节点发服务请求的时候要求有服务应答。
4.1.2. ID field
在 UAVCAN 协议中,我们只用到了 CANBus 中定义的数据帧,所有的数据通过数据帧来传输;我们将数据帧
定义成以下格式:
针对于 ESC 的 CAN 总线通讯应用, 目前只用到了 Message frame 和 Service frame ,因此下文不会涉及到 Anonymous message frame 的解释。
位定义名词解释
位定义 | 解释说明 | ||
---|---|---|---|
优先级 | 数值 | ||
Priority | 1 :Priority 表示 CAN 数据帧优先级。2 :优先级数值范围为 0~31。3 :优先级最高为 0 ,最低为 31。4 :HW-UAVCAN 定义优先级如右表格。 | HIGHEST | 0x00 |
HIGH | 0x08 | ||
MEDIUM | 0x10 | ||
LOW | 0x18 | ||
LOWEST | 0x1F | ||
Message type ID | Message type ID 的范围从 0~65535,包含 0 和 65535。 | ||
Service not message | 表示该数据帧的类型 | 0 | 表示数据帧为 Message 帧 |
1 | 表示数据帧为 Service 帧 | ||
Request not response | 表示该数据帧是请求帧或是应答帧 | 0 | 表示该帧是 Response 应答帧 |
1 | 表示该帧是 Request 请求帧 | ||
Node ID | 1 :Node ID 由 7bit 组成,其中 0 是保留 ID ,代表一个未知的节点。2 :Node ID 取值为 1-127 ,包含 1-127 ,其中 126 ,127 是保留 ID。3 :Node ID 分为 Source Node ID 和 Destination Node ID。4 :Source Node ID 表示节点自身的 ID。5 :Destination Node ID 表示对方的节点 ID。6 :只有 Service 帧才会有 Destination Node ID ,需要应答。 |
4.1.3. CAN Payload
CANBus2.0B 规定 CAN 总线传输每一帧数据最多 8Byte,UAVCAN 协议规定,将 8Byte Payload 划分为两部分, 包含 Transfer Payload 与 Tail byte ,如下图所示:
有些数据包有效数据可能会超过 7Byte ,UAVCAN 协议规定,不超过 7Byte 数据帧采用 Single frame Transfer 格式传输,超过 7Byte 数据帧采用 Multi frame Transfer 格式传输(本文协议全部单帧实现,故不对多帧进行详细说 明),以下是对 Single frame Transfer 的定义。
Single frame Transfer:单帧传输用来处理传输的数据不超过 7 个字节的数据流。
名词解释
名词 | 解释说明 |
---|---|
数据帧 | 1 :CAN 单次能够发送的数据流,最多可传输 8 个字节。 |
数据包 | 1 :一包数据可能包含多个数据帧,帧数由传输的数据量决定。 |
Transfer Payload | 1 :每帧数据帧传输的有效数据,0~7 字节。 |
Tail byte | 1 :每帧数据帧中 Payload 最后一个字节,附加的协议层字段信息。 |
Start of transfer | 1 :对于 Single frame transfer ,start of transfer 位永远为 1。2 :对于 Multi frame transfer ,如果当前帧是数据包的首帧,该位为 1 ,否则为 0。 |
End of transfer | 1 :对于 Single frame transfer ,End of transfer 这一 bit 位永远为 1。2 :对于 Multi frame transfer ,如果当前帧是数据包的最后一帧,该位为 1 ,否则为 0。 |
Toggle bit | 1 :对于 Single frame transfer ,Toggle bit 这一位永远为 0。2 :对于 Multi frame transfer ,数据包的首帧该位为 0 ,此后每发一帧该位翻转一次。 |
Transfer ID | 1 :数值范围 0~31。2 :对于相同 Data Type ID 的数据,每发送一包数据,Transfer ID 加 1 ,0~31 循环累加。3 :对于同一包数据中的多个数据帧,该值不变。 |
4.2. CAN 电调工作机制
所有 ESC 用 CAN 总线连接,连接方式常用 T 型拓补与星型拓补;输入油门可以使用 PWM 模拟油门或者 使用 CAN 数字油门,可设值 PWM 油门和 CAN 油门哪个优先使用,如设置 PWM 油门优先,则优先使用 PWM 油门,当 PWM 油门异常但 CAN 油门正常,则自动切换到 CAN 油门。
4.2.1. 功能
l 电调上电自动自检,发送自检查询命令可查询自检状态。
l 支持电调节点 ID 设置。
l 支持 CAN 总线速率设置。
l 数据上报速率可调节。
l 其它功能视具体电调型号而定。
l 模拟数字双油门输入
4.2.2. 总线带宽
UAVCAN 支持多种总线速率设置,可根据实际设备数目情况以及线材设置对应速率,最高 1MHz。
4.3. 数据帧类型列表
4.3.1. ID 域分配
广播帧 ID 值使用 UAVCAN 中定义的供应商使用 ID 区域[20000, 21000)。 服务帧 ID 值使用 UAVCAN 中定义的供应商使用 ID 区域[200, 256)。
4.3.2. 数据帧类型表
广播帧类型列表 | ||||
---|---|---|---|---|
域类型 | 帧类型 | 帧 ID | 优先级 | 数据帧描述说明 |
测试消息[20000, 20010) | Can Test | 0x4E20(20000) | LOWEST | ESC 定时发送到 CAN 总线的累加计数数据帧,默认关闭。 |
电调全局命令 [20010, 20050) | MSGControl | 0x4E2A(20010) | MEDIUM | 电调全体调整命令,临时禁止/恢复数据上报 |
FRAME_MSG_ GET_ESC_ID | 0x4E2D(20013) | MEDIUM | 查询 ESC ID 及油门通道 | |
无刷动力消息 [20050, 20100) | MSG1 | 0x4E52(20050) | LOWEST | ESC 上报当前电调转速、油门、状态数据(可以关闭该上报数据,代之以 MSG_EXP 数据) |
MSG2 | 0x4E53(20051) | LOWEST | ESC 上报当前电调电压、电流、温度数据(可以关闭该上报数据,代之以 MSG_EXP 数据) |
MSG3 | 0x4E54(20052) | LOWEST | ESC 上报当前电调附加数据(温度)(可以关闭该上报数据,代之以 MSG_EXP 数据) | |
---|---|---|---|---|
MSG_EXP1 | 20053 | LOWEST | 电机转速,电源电压,工作电流,MOS 温度 | |
MSG_EXP2 | 20054 | LOWEST | 调试信息 | |
MSG_EXP3 | 20055 | LOWEST | 调试信息 | |
MSG_EXP4 | 20056 | LOWEST | 调试信息 | |
MSG_EXP5 | 20057 | LOWEST | 调试信息 | |
MSG_EXP6 | 20058 | LOWEST | 调试信息 | |
MSG_EXP7 | 20059 | LOWEST | 设置参数信息 | |
MSG_EXP8 | 20060 | LOWEST | ESC 运行信息, 上电次数,启动次数,正常停机次数 | |
MSG_EXP9 | 20061 | LOWEST | ESC 运行信息,累计工作时间,故障码 1 | |
MSG_EXP10 | 20062 | LOWEST | ESC 运行信息,本次工作时间,故障码 2 | |
MSG_EXP11 | 20063 | LOWEST | Mos 温度,MCU 温度,电容温度,电机温度(保留) | |
MSG_EXP12 | 20064 | LOWEST | 温度记录(发送回读记录命令后只上报一次) | |
无刷动力命令 [20100, 20150) | 14bit Throttle Command | 0x4E84(20100) | HIGHEST | 电调 CAN 数字油门命令,四轴单包(不建议采用) |
12bit Throttle Command | 0x4E85(20101) | HIGHEST | 电调 CAN 数字油门命令,多轴单/多包(建议采用) | |
10bit Throttle Command | 0x4E86(20102) | HIGHEST | 电调 CAN 数字油门命令,6 轴单包(Tail 字节扩展协议) |
服务帧类型列表 | ||||
---|---|---|---|---|
域类型 | 帧类型 | 帧 ID | 优先级 | 数据帧描述说明 |
供应商命令 [200, 210) | 保留 | |||
电调配置 [210, 240) | Set ID | 0xD2(210) | MEDIUM | 设置 ESC ID(伪服务帧,ESC上电 120 秒内有效) |
Set Baud | 0xD3(211) | MEDIUM | 设置 CAN 总线速率(ESC上电 120 秒内有效) | |
Set Led | 0xD4(212) | LOW | 设置 LED 灯颜色 | |
Set Rotor Direction | 0xD5(213) | LOW | 设置电机转向 | |
Set Freq | 0xD6(214) | MEDIUM | 设置 MSG1 / MSG2 / MSG3 数据上报频率 | |
Throttle | 0xD7 | MEDIUM | 油门的信号源选择:PWM 油门或 PWM + CAN 油门 |
Select | (215) | |||
---|---|---|---|---|
Self Test | 0xD8(216) | LOWEST | 自检命令 | |
Expand Set cmd | 222 | MEDIUM | 扩展设置 | |
Get Rec cmd | 223 | MEDIUM | 获取温度记录 | |
Clear Rec cmd | 224 | MEDIUM | 清除温度记录(保留功能) | |
电调信息 [240, 250) | ESCInformation | 0xF0(240) | 获取电调版本信息 | |
Maintance Information | 0xF1(241) | 获取运行记录 | ||
Get MajorConfiguration | 0xF2(242) | 读取主要配置信息 | ||
其它[250, 256) | 保留 |
4.4. 数据帧类型说明
4.4.1. CAN Test(20000)
CAN Test 发送帧
CAN frame | Option | Count | Tail byte |
---|---|---|---|
29bit message frame | payload[0] | payload[1~4] | payload[5] |
CAN Test 应答帧
CAN frame | Option | Count | Tail byte |
---|---|---|---|
29bit message frame | payload[0] | payload[1~4] | payload[5] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
Option | uint8 | 0x00:节点 ESC 开启总线测试模式后定时上报使用该值 |
0xAA:开启节点 ESC 总线测试模式 | ||
0x55:关闭节点 ESC 总线测试模式 | ||
Count | uint32 | 发送帧:0x00000000~0xFFFFFFFF 任意值 |
应答帧:从 ESC 当前内部 Count 开始,每发一帧加 1 |
说明:
1 :CAN Test 是总线通讯质量测试命令,广播帧,用户可在此模式下测试实际 CAN 总线通讯质量。
2 :CAN Test 模式开启后,ESC 关闭其它数据的主动上报,单独连续发送 CAN Test 数据帧,数据帧包含 32bit 的累加计数 Count ,0~0xFFFFFFFF ,循环累计。
3 :CAN Test 模式开启后,发送关闭 CAN Test 模式,ESC 恢复开启 CAN Test 模式之前状态。 4 :CAN Test 模式开启后,仅仅本次有效,掉电丢失,ESC 重新上电后默认关闭;
4.4.2. MSG Control(20010)
MSG Control 发送帧
CAN frame | Option | Count | Tail byte |
---|---|---|---|
29bit message frame | payload[0] | payload[1~4] | payload[5] |
MSG Control 应答帧
CAN frame | Option | Count | Tail byte |
---|---|---|---|
29bit message frame | payload[0] | payload[1~4] | payload[5] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
Command(Option=0) | uint32 | 0x00000000: 电调收到命令后的应答包 |
0x55555555:暂时关闭主动数据上报 | ||
0xAAAAAAAA:立即恢复主动数据上报(MSG1,MSG2,MSG3) | ||
0xEEEEEEEEE:立即恢复主动数据上报(MSGEXP1~MSGEXP12) |
说明:
1 : MSG Control 是暂停/恢复主动数据上报指令,广播帧。
2 : 总线上所有电调均响应该指令。
3 : 暂停主动数据上报指令后,设置 led 灯色(Set Led)命令、设置(查询)转向(Set Rotation)命令、 更改参数不生效!只有在恢复主动数据上报指令后,才能进行设置!
4 : 电调收到命令后会进行应答,应答的时间与当前电调自身 ID 有关(ID%32) ,最大应答延迟为 64ms。
4.4.3. FRAME_MSG_GET_ESC_ID (20013)
FRAME_MSG_GET_ESC_ID 发送帧
CAN frame | Option | Tail byte |
---|---|---|
29bit message frame | payload[0] | payload[1] |
MSG Control 应答帧
CAN frame | ESC node id | Throttle channel | Tail byte |
---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] |
数据帧参数解释
Command(Option=0) | uint8 | 0x00:查询 ESC ID 及油门通道 |
---|
说明:
1 : FRAME_MSG_GET_ESC_ID 查询电调 ID 及油门通道命令为广播帧。
2 : 总线上所有电调均响应该指令,所有电调收到该帧后,都将自身的 ESC ID 及油门通道上发。
3 : 应答数据帧 Option 与发送数据帧 Option 相同
4 : 电调收到命令后会进行应答,应答的时间与当前电调自身 ID 有关(ID%32) ,最大应答延迟为 64ms。
4.4.4. MSG1(20050)
MSG1 数据上报格式
CAN frame | Speed_L | Speed_H | PWM_L | PWM_H | Status_L | Status_H | Tail byte |
---|---|---|---|---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] | payload[3] | payload[4] | payload[5] | payload[6] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
Speed | uint16 | 电机转速(RPM) |
PWM | uint16 | 0-2000(油门输出 PWM) |
Status | uint16 | 电调运行状态 |
Status 位域解释
Status | |||||||
---|---|---|---|---|---|---|---|
Bit15 | Bit14 | Bit13 | Bit12 | Bit11 | Bit10 | Bit9 | Bit8 |
方向标志 | 油门信号源 | 通信状态 | 1=欠压 | 1=过压 | 1=过流 | 1=过温 | 运行/停转 |
0 :CW | 0 :CAN 油门 | 0 :通信正 | 0= 停转 | ||||
1 :CCW | 1 :PWM 油 | 常 | 1= 运行 | ||||
门 | 1 :通信异 常 | ||||||
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
1= 自 检 | 1=自检 C 相 | 1=自检 B 相 | 1=自检 A 相 | 1= 自检 COM | 1=自检 C 相 | 1=自检 B 相 | 1=自检 A 相 |
COM 口 输 | 输出低错误 | 输出低错误 | 输出低错误 | 口输入高 | 输出高错误 | 输出高错误 | 输出高错误 |
入低错误 | 错误 |
说明:
1 : MSG1 数据是 ESC 主动上报给主节点的数据,有效数据长度为 6Byte。
2: 方向标志:电调上电会将保存的电机转向上报,请确保三相电机接线和该方向标志位一致,因三相电机 接线会改变电机转向 0 :正转 1 :反转。
3 : 通信状态:CAN 油门情况下,ESC 超过 200ms 没有接收到主机指令,则设置通信异常,在通信异常状态下, 若收到数据并且数据正确,则恢复通信,清除该标志位。
4.4.5. MSG2(20051)
MSG2 数据上报格式
CAN frame | Voltage_L | Voltage_H | Current_L | Current_H | Temperature | Tail byte |
---|---|---|---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] | payload[3] | payload[4] | payload[5] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
Voltage | uint16 | 电调输入电压,两位小数(单位: V) |
Current | uint16 | 母线电流,两位小数(单位:A) |
---|---|---|
Temperature | Uint8 | 功率 MOS 温度(单位: ℃) |
说明:
1 : MSG2 数据是 ESC 主动上报给主节点的数据,有效数据长度为 5Byte。 2: 用户根据具体使用需求通过 Set/Get Freq 调整主动上报速率。
4.4.6. MSG3(20052)
MSG3 数据上报格式
CAN frame | MOS_T | CAP_T | Motor_T | MCU_T | Reserved | Tail byte |
---|---|---|---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] | payload[3] | payload[4,5,6] | payload[7] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
MOS_T | Uint8 | 电调 MOS 温度(单位: ℃) |
CAP_T | Uint8 | 电调电容温度(单位: ℃) |
Motor_T | Uint8 | 电机温度(单位: ℃,需要配置电机测温传感器) |
MCU_T | Uint8 | MCU 温度(单位: ℃) |
说明:
1 : MSG3 数据是 ESC 主动上报给主节点的附加数据。
2: 用户根据具体使用需求通过 Set/Get Freq 调整主动上报速率。
4.4.7. MSG_EXP1(20053)
数据上报格式
CAN frame | Speed_L | Speed_H | Voltage_L | Voltage_H | Current_L | Current_H | Tail byte |
---|---|---|---|---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] | payload[3] | payload[4] | payload[5] | payload[6] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
Speed | Uint16 | 电机转速(RPM) |
Voltage | Uint16 | 电调输入电压,两位小数(单位: V) |
Current | Uint16 | 母线电流,两位小数(单位:A) |
4.4.8. MSG_EXP2-6(20054-20058)
数据上报格式
CAN frame | Test_1 | Test_2 | Test_3 | Test_4 | Test_5 | Test_6 | Tail byte |
---|---|---|---|---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] | payload[3] | payload[4] | payload[5] | payload[6] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
Test_ 1-7 | Uint16 | 调试数据 |
4.4.9. MSG_EXP7(20059)
数据上报格式
CAN frame | Set_0 | Set_1 | Set_2 | Set_3 | Set_4 | Set_5 | Tail byte |
---|---|---|---|---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] | payload[3] | payload[4] | payload[5] | payload[6] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
Set_0 | Uint8 | Bit3..0 电机运行方向 : 1=正转 2=反转 |
Bit7..4 LED 设置 0=全部不亮 1=红色亮 2=绿色亮 3=蓝色亮 | ||
Set_1 | Uint8 | BIT3..0 通信接口 2=PWM_CAN 3=CAN |
BIT7..4 保留 | ||
Set_2 | Uint8 | BIT3..0 主动续流控制 0=关闭 1=开启 |
BIT4..4 保留(进角设置 1) | ||
Set_3 | Uint8 | BIT3..0 保留(进角设置 2) |
BIT4..4 保留(负载类型设置) | ||
Set_4 | Uint8 | BIT3..0 锁浆设置 0=不开启 1=锁浆力弱 2=锁浆力中 3=锁浆力强 |
BIT4..4 启动加速度设置 1-15(值越大启动时间越短) | ||
Set_5 | Uint8 | BIT3..0 丢失信号保护设置 1-15(值越大,丢失信号油门降低越快) |
BIT4..4 保留 |
4.4.10. MSG_EXP8(20060)
数据上报格式
CAN frame | Times1_L | Times1_H | Times2_L | Times2_H | Times3_L | Times3_H | Tail byte |
---|---|---|---|---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] | payload[3] | payload[4] | payload[5] | payload[6] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
Times1 | Uint16 | ESC 上电次数 |
Times2 | Uint16 | ESC 启动次数 |
Times3 | Uint16 | ESC 停机次数 |
4.4.11. MSG_EXP9(20061)
数据上报格式
CAN frame | Time_1 | Time_2 | Time_3 | Time_4 | Test_1 | Test_2 | Tail byte |
---|---|---|---|---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] | payload[3] | payload[4] | payload[5] | payload[6] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
Time4..1 | Uint32 | ESC 累计运行时间 |
Test_2..1 | Uint16 | ESC 自检故障码 1(0=上电自检正常) |
---|
4.4.12. MSG_EXP10(20062)
数据上报格式
CAN frame | Time_1 | Time_2 | Time_3 | Time_4 | Test_1 | Test_2 | Tail byte |
---|---|---|---|---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] | payload[3] | payload[4] | payload[5] | payload[6] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
Time4..1 | Uint32 | ESC 本次运行时间 |
Test_2..1 | Uint16 | ESC 自检故障码 2(0=上电自检正常) |
4.4.13. MSG_EXP11(20063)
数据上报格式
CAN frame | MOS_T | MCU_T | CAP_T | Motor_T | res | res | Tail byte |
---|---|---|---|---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] | payload[3] | payload[4] | payload[5] | payload[6] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
MOS_T | Uint8 | 电调 MOS 温度(单位: ℃) |
MCU_T | Uint8 | MCU 温度(单位: ℃) |
CAP_T | Uint8 | 电调电容温度(单位: ℃) |
Motor_T | Uint8 | 电机温度(单位: ℃,需要配置电机测温传感器) |
res | Uint8 | 保留 |
4.4.14. MSG_EXP12(20064)
数据上报格式
CAN frame | Byte_0 | Byte_1 | Byte_2 | Byte_3 | Byte_4 | Byte_5 | Byte_6 | Byte_7 |
---|---|---|---|---|---|---|---|---|
29bit message frame | T_MAX | TIMES_L | TIMES_H | TIME1 | TIME2 | TIME3 | TIME4 | Tail byte |
数据帧参数解释
参数 | 数据类型 | 描述 | |
---|---|---|---|
T_MAX | Uint8 | 记录温度最大值 | |
TIMES | Uint16 | 记录温度最大值时的运行次数 | |
TIME4..1 | Uint32 | 记录温度最大值时的运行时间 | |
Tail byte | Uint8 | 参数 | 描述 |
0XC1 | 当前帧为 MCU 最高温度记录 | ||
0XC2 | 当前帧为 MOS 最高温度记录 | ||
0XC3 | 当前帧为 CAP 最高温度记录 | ||
0XC4 | 当前帧为 MOTOR 最高温度记录 |
0XC5 | 保留 |
---|
4.4.15. RawCommand_14b(20100)
RawCommand 发送帧(四轴单帧,14*4=56bit=7Byte 有效字节)
CAN frame | Throttle Data[0-6] | Tail byte |
---|---|---|
29bit message frame | payload[0-6] | payload[7] |
说明:
1 : RawCommand_14b 发送油门的命令,为广播帧不需要应答,总线上所有 ESC 同时接收解析。
2 : 每个油门通道占用 14bit ,数值范围 0-16383, 但实际使用油门范围为 0-2000。
3: RawCommand_14b 数据发送格式解析(以四轴为例):
payload[6] | payload[5] | payload[4] | payload[3] | payload[2] | payload[1] | payload[0] |
---|---|---|---|---|---|---|
XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX |
XXXXXXXXXXXX :第 1 通道,XXXXXXXXXXXX :第 2 通道,XXXXXXXXXXXX :第 3 通道,XXXXXXXXXXXX :第 4 通道
a : 假设我们需要向四个通道发送数值为 1000(0x03E8)的数字油门 待发数据(HEX) :{3E8, 3E8, 3E8, 3E8}
内存格式(HEX) :[ E8, 03, E8, 03, E8, 03, E8, 03]
内存格式(BIN) :[ 11101000, 00000011, 11101000, 00000011, 11101000, 00000011, 11101000, 00000011] b : 油门发送时将原 16Bit 转换为 14Bit 的油门数据(去掉原 16bit 数据最高 2bit)
原 16Bit 数据:
HEX:[ 0xE8 0x03 0xE8 0x03 0xE8 0x03 0xE8 0x03 ]
BIN :[ 1110_ 1000_0000_0011_1110_1000_0000_0011_1110_1000_0000_0011_ 1110_1000_0000_0011] 转换为 14Bit 数据(去掉原数据高字节最高 2bit ,如红色标记部分):
HEX:[ 1110_1000_0000_1111_ 1010_0000_0011_ 1110_1000_0000_1111_ 1010_0000_0011]
BIN :[ 0xE8 0x0F 0xA0 0x3E 0x80 0xFA 0x03 ] 发送数字油门数据:
Throttle Data[0-6]={ 0xE8 ,0x0F ,0xA0 ,0x3E ,0x80 ,0xFA ,0x03} 4: 该帧仅适用于四轴,油门通道固定为 1-4, 不建议使用。
4.4.16. RawCommand_12b(20101)
多轴 发送帧(多轴多帧,7Byte 有效字节, 6 字节油门数据+1 字节油门通道组 ID)
CAN frame | Throttle Data[0-5] | Throttle Channel group ID | Tail byte |
---|---|---|---|
29bit message frame | payload[0-5] | payload[6] | payload[7] |
说明:
1 : RawCommand_12b 发送油门的命令,为广播帧不需要应答,总线上所有 ESC 同时接收解析。
2 : 每个油门通道占用 12bit ,数值范围 0-4095, 但实际使用油门范围为 0-2000。
3: 根据油门通道组 ID 选择 实际油门通道。ID 范围 1-5, 可以最多控制 20 个 ESC 油门 ,对应的油门通道 为 ID*4-3,ID*4-2, ID*4-1,ID*4, 例如 ID=1,则输出油门通道为 1,2,3,4, ID=2,则输出油门通道为
5,6,7,8。
4:RawCommand_12b 数据发送格式解析
payload[6] | payload[5] | payload[4] | payload[3] | payload[2] | payload[1] | payload[0] |
---|---|---|---|---|---|---|
组 ID (1-5) | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX |
XXXXXXXXXXXX :第 1 通道,XXXXXXXXXXXX :第 2 通道,XXXXXXXXXXXX :第 3 通道,XXXXXXXXXXXX :第 4 通道
payload[0] : 油门通道组内第 1 个油门通道的油门输出低 8 位。
payload[1] : 油门通道组内第 2 个油门通道的油门输出低 4 位+油门通道组内第 1 个油门通道的油门输出高
4 位。
payload[2] : 油门通道组内第 2 个油门通道的油门输出高 8 位。 payload[3] : 油门通道组内第 3 个油门通道的油门输出低 8 位。
payload[4] : 油门通道组内第 4 个油门通道的油门输出低 4 位+油门通道组内第 3 个油门通道的油门输出高
4 位。
payload[5] : 油门通道组内第 4 个油门通道的油门输出高 8 位。 payload[6] : 油门通道组 ID (1-5)
六轴示范帧 :
payload[6] | payload[5] | payload[4] | payload[3] | payload[2] | payload[1] | payload[0] |
---|---|---|---|---|---|---|
1 | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX |
payload[6] | payload[5] | payload[4] | payload[3] | payload[2] | payload[1] | payload[0] |
---|---|---|---|---|---|---|
2 | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX |
XXXXXXXXXXXX :第 1 通道,XXXXXXXXXXXX :第 2 通道,XXXXXXXXXXXX :第 3 通道,XXXXXXXXXXXX :第 4 通道
XXXXXXXXXXXX :第 5 通道,XXXXXXXXXXXX :第 6 通道
5: 该帧适用于多轴,油门格式简洁, 建议使用。
4.4.17. RawCommand_10b(20102)
六轴 发送帧(六轴单帧,8 Byte 有效字节,Tail字节协议扩展)
CAN frame | Throttle Data[0-7] |
---|---|
29bit message frame | payload[0-7] |
说明:
1 : RawCommand_10b 发送油门的命令,为广播帧不需要应答,总线上所有 ESC 同时接收解析。
2 : 每个油门通道占用 10bit ,数值范围 0-1023, 但实际使用油门范围为 0-1000 ,ESC 接收到后将该油 X2 , 变换为 0-2000 作为实际油门输出。
3: RawCommand_10b 数据发送格式解析(如下表,payload[7]高 4 位无效)
payload[7] | payload[6] | payload[5] | payload[4] | payload[3] | payload[2] | payload[1] | payload[0] |
---|---|---|---|---|---|---|---|
XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX | XXXXXXXX |
XXXXXXXXXXXX :第 1 通道,XXXXXXXXXXXX :第 2 通道,XXXXXXXXXXXX :第 3 通道,XXXXXXXXXXXX :第 4 通道,
XXXXXXXXXXXX :第 5 通道,XXXXXXXXXXXX :第 6 通道
4: 该帧为六轴专用扩展协议帧,可以减少CAN 总线数据量, 油门通道固定为 1-6, 可视情况使用。
4.4.18. Set Id(210)
Set ID 发送帧
CAN frame | ESC node id | Throttle channel | Tail byte |
---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] |
Set ID 应答帧
CAN frame | ESC node id | Throttle channel | Tail byte |
---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
ESC node id | uint8 | 设置 CAN 总线连接电调的 node id(1~0x7D) |
Throttle channel | uint8 | 选择当前 node id 所使用的数字油门通道 |
说明:
1: Set Id 是给 ESC 节点设置 ID 的命令,每个 ESC 对应一个 ID。
2: 利用此命令设置电调 ID 时,总线上同时只能存在一个电调,若连接多个时将被统一设为同一 ID。
3: 发送 Set ID 帧时, 由于不明确待设置电调的 ID,为避免 Destination Node Id 轮询设置,设置 ID 命 令为伪广播帧,设置时 Destination Node Id 将会被忽略,可以为任意值(0~0x7F)。
4: 默认 ID 为 0x7D,ID 设置为 0x7D 时,不会主动上报数据,不为 0x7D,则上电自动上报数据。 5 : ESC node id 设置范围为 1~0x7D(0、0x7E、0x7F 为保留 ID,禁用)。
6: Throttle channel 目前协议最大支持 20 个通道,该参数表示当前节点 ESC 使用 Raw Command 中哪一 个油门通道(数字油门命令 Raw Command 为广播帧,发送多通道油门数据时 CAN 总线所有节点都可 以接收到,节点 ESC 收到数据后根据设定的 Throttle channel 值来选择需要油门值),如:Throttle channel=0x01,则表示当前节点 ESC 使用 Raw Command 通道 1 油门值。
7: 该参数设置后会保存 FLASH 内,掉电不丢失,可以重复设置。 8: 主机 ID 为 0,发送给 ESC 的帧 source node id=0。
4.4.19. Set Baud(211)
Set Baud 发送帧
CAN frame | Baud | Tail byte |
---|---|---|
29bit message frame | payload[0] | payload[1] |
Set Baud 应答帧
CAN frame | Baud | Tail byte |
---|---|---|
29bit message frame | payload[0] | payload[1] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|
Baud | uint8 | CAN 总线速率设置 | 参数 | 描述 |
---|---|---|---|---|
0 | 1Mbps | |||
1 | 500kbps(default) | |||
2 | 250kbps | |||
3 | 200kbps | |||
4 | 125kbps | |||
5 | 100kbps | |||
6 | 50kbps |
说明:
1 : 设置 CAN 总线速率,设置后重新上电生效。
2 : 默认总线速率 500KHz ,其它速率详见参数表。
3: 该参数设置后会保存 FLASH 内,掉电不丢失,可以重复设置。
4.4.20. Set Led(212)
Set Led 发送帧
CAN frame | Option | Color | Blink | Tail byte |
---|---|---|---|---|
29bit message frame | Payload[0] | Payload[1] | Payload[2] | Payload[3] |
Set Led 应答帧
CAN frame | Option | Color | Blink | Tail byte |
---|---|---|---|---|
29bit message frame | Payload[0] | Payload[1] | Payload[2] | Payload[3] |
数据帧参数解释
参数 | 数据类型 | 描述 | ||||
---|---|---|---|---|---|---|
Option | uint8 | 选项位,0 :不保存,1 :保存 | ||||
Color | uint8 | RGB LED 灯颜色Color 的低三 bit 有效。bit [2] :R bit [ 1] :G bit [0] :B | R | G | B | 描述 |
0 | 0 | 0 | RED+GREEN+BLUE OFF | |||
0 | 0 | 1 | BLUE ON | |||
0 | 1 | 0 | GREEN ON | |||
0 | 1 | 1 | GREEN+BLUE ON | |||
1 | 0 | 0 | RED ON | |||
1 | 0 | 1 | RED+BLUE ON | |||
1 | 1 | 0 | RED+GREEN ON | |||
1 | 1 | 1 | RED+GREEN+BLUE ON | |||
Blink | uint8 | 闪烁控制 | 参数 | 描述 | ||
0x00 | 不闪烁(default) | |||||
0x01 | 1Hz 闪烁 | |||||
0x02 | 2Hz 闪烁 | |||||
0x05 | 5Hz 闪烁 | |||||
其他 | 不执行操作,不闪烁。 |
说明:
1 : Set Led Color 是主节点发送给 ESC 设置 Led 灯颜色的命令。
2 : Option 为保存,ESC 收到后将 Color 与 Blink 设置为默认灯色并且保存,立即更新灯色;Option 为不 保存,ESC 收到后立即更新灯色但不保存当前设置参数,掉电恢复原设置。
3 : Color 为需要设置的颜色,低 3Bit 有效,对应 RGB 灯色,默认绿灯,详见参数解释 Color。 4 : Blink 为闪烁控制,默认不闪烁,详见参数解释 Blink。
5: 该参数保存 FLASH 内,掉电不丢失,可以重复设置。
6 : 此命令需要在数据上报恢复(MSG Control 命令)情况下,才能设置,数据上报暂停时,不能设置
7: 此命令仅对有 LED 的 ESC 有效。
4.4.21. Set Rotation(213)
Set Rotation 发送帧
CAN frame | Baud | Tail byte |
---|---|---|
29bit message frame | payload[0] | payload[1] |
Set Rotation 应答帧
CAN frame | Baud | Tail byte |
---|---|---|
29bit message frame | payload[0] | payload[1] |
数据帧参数解释
参数 | 数据类型 | 描述 | ||
---|---|---|---|---|
Rotation | uint8 | ESC 电机旋转方向设 置 | 参数 | 描述 |
0x00 | 正转 | |||
0x01 | 反转 | |||
0xFF | 查询当前电机的旋转方向 |
说明:
1 : Set Rotation 是主节点发送给 ESC 设置电机旋转方向的命令。
2 : 此命令在数据上报开启时,并且电机停转情况下才能设置。
3 : 默认正转,设置参数命令详见参数解释。
4: 该参数设置后会保存 FLASH 内,掉电不丢失,可以重复设置。
4.4.22. Set/Get Freq(214)
Set/Get Freq 发送帧
CAN frame | Option | MSG1_SET | MSG2_SET | MSG3_SET | Tail byte |
---|---|---|---|---|---|
29bit message frame | Payload[0] | Payload[1] | Payload[2] | Payload[3] | Payload[4] |
Set/Get Freq 应答帧
CAN frame | Option | MSG1_SET | MSG2_SET | MSG3_SET | Tail byte |
---|---|---|---|---|---|
29bit message frame | Payload[0] | Payload[1] | Payload[2] | Payload[3] | Payload[4] |
数据帧参数解释
参数 | 数据类型 | 描述 |
---|---|---|
Option | uint8 | 选项位,0 :读取,1 :写入 |
MSG1_SET | uint8 | 数据上报类型 1 上报间隔时间 (10-250)X2 ms |
MSG2_SET | uint8 | 数据上报类型 2 上报间隔时间 (10-250)X2 ms |
MSG3_SET | uint8 | 数据上报类型 3 上报间隔时间 (10-250)X2 ms |
说明:
1: Set Freq 是主节点发送给 ESC 设置数据上报频率(时间间隔)的命令。
2 : Option 为读取时,ESC 忽略发送帧中设置数值,应答帧中设置值为 ESC 当前设定参数。
3 : Option 为写入时,设置值范围为 10-250 ,不合法则设置无效。
4: MSG1_SET 默认为 10 ,MSG2_SET 默认为 50 ,MSG1_SET 默认为 250。
5: 设置过小发送间隔可能引起 ESC 油门响应变慢,若非必要,尽量设置较大发送间隔。
6: 该参数设置后会保存 FLASH 内,掉电不丢失,可以重复设置。
4.4.23. Throttle Select(215)
Throttle select 发送帧
CAN frame | Throttle src | Tail byte |
---|---|---|
29bit message frame | payload[0] | payload[1] |
Throttle select 应答帧
CAN frame | Throttle src | Tail byte |
---|---|---|
29bit message frame | payload[0] | payload[1] |
数据帧参数解释
参数 | 数据类型 | 描述 | ||
---|---|---|---|---|
Throttle src | uint8 | 油门方式选择 | 参数 | 描述 |
0x00 | CAN 数字油门 | |||
0x01 | PWM+CAN |
说明:
1 : Throttle Select 是飞控发送选择油门信号源的命令,支持 PWM +CAN 与 CAN 数字油门。
2 : 默认 CAN 数字油门。,设置参数详见参数解释。
3 : 设置该命令请在零油门下设置。
4: 该参数设置后会保存 FLASH 内,掉电不丢失,可以重复设置。
5 : 油门控制方式设置为 CAN 油门时,有 14bit,12bti,10bit 三种控制命令, 14bit,12bit 油门命令有
效范围为 0-2000, 10bit 油门命令有效范围为 0-1000(ESC 接收到后 X2,变换为 0-2000 作为实际输 出)。
6 : PWM 模拟油门输入为 1ms-2ms(标准值,可以校正),对应 0-2000 的 CAN 数字油门, PWM 模拟油门
与 CAN 数字油门同时输入时,两者油门值要保持一致。
4.4.24. Self Test(216)
Self Test 发送帧
CAN frame | Tail byte |
---|
29bit message frame | payload[0] |
---|
Self Test 应答帧
CAN frame | Status | Tail byte |
---|---|---|
29bit message frame | payload[0] | payload[1] |
数据帧参数解释
参数 | 数据类型 | 描述 | ||
---|---|---|---|---|
Status | uint8 | 自检状态 | 参数 | 描述 |
0x00 | 自检通过 | |||
0x01 | 自检失败 |
说明:
1 : Self Test 是查询电调自检状态的命令。
4.4.25. Expand Set Part(222)
Expand Set Part 发送帧(无应答帧,设置时候电机会发出提示音)
CAN frame | Set_cmd_L | Set_cmd_H | Part | Tail byte |
---|---|---|---|---|
29bit message frame | payload[0] | payload[1] | payload[2] | payload[3] |
数据帧参数解释
Set_cmd | Part | 功能 |
---|---|---|
0xfff0 | 01 | 正转 |
0xfff0 | 02 | 反转 |
0xfff1 | 00 | 关灯 |
0xfff1 | 01 | 红灯亮 |
0xfff1 | 02 | 绿灯亮 |
0xfff1 | 03 | 蓝灯亮 |
0xfff2 | 01 | PWM 控制(保留) |
0xfff2 | 02 | PWM+TCAN 控制 |
0xfff2 | 03 | TCAN 控制 |
0xfff2 | 04 | DSHOT25 控制(保留) |
0xfff2 | 05 | PWM+UAVCAN 控制 |
0xfff2 | 06 | UAVCAN 控制 |
0xfff4 | 00 | 同步续流关闭 |
0xfff4 | 01 | 同步续流打开 |
0xfff5 | 01 | 中低进角 (保留) |
0xfff5 | 02 | 中进角 (保留) |
0xfff5 | 03 | 中高进角 (保留) |
0xfff5 | 04 | 高进角 (保留) |
0xfff6 | 01 | 中低进角 2 (保留) |
0xfff6 | 02 | 中进角 2 (保留) |
0xfff6 | 03 | 中高进角 2 (保留) |
0xfff6 | 04 | 高进角 2 (保留) |
---|---|---|
0xfff7 | 01 | 轻载 (保留) |
0xfff7 | 02 | 标准负载 (保留) |
0xfff7 | 03 | 重载 (保留) |
0xfff7 | 04 | 超重载 (保留) |
0xfff8 | 00 | 锁浆关闭 |
0xfff8 | 01 | 锁浆 弱 |
0xfff8 | 02 | 锁浆 中 |
0xfff8 | 03 | 锁浆 强 |
0xfff9 | 0-15 | 启动加速度(值越大启动时间越短) |
0xfffa | 0-15 | 丢失信号降油门速度(值越大,丢失信号油门降低越快) |
0xfffb | 01 | 读出高温记录 |
0xfffc | 0-6 | 设置CAN通信波特率, 1M(0),500K,250K,200K,125K,100K,50K |
0xfffe | 00 | 恢复出厂设置,未启用 |
0xfffe | 0x10 | 关闭测试模式 |
0xfffe | 0x11 | 打开测试模式,调试用 |
说明:
1 : Expand Set Part 需要在电机停转状态下进行。
2: 可使用常规设置参数命令或该命令对 ESC 进行设置。
4.4.26. ESC Information(240)
ESC Information 发送帧
CAN frame | Option | Tail byte |
---|---|---|
29bit message frame | payload[0]=0 | payload[1] |
ESC Information 应答帧
CAN frame | Info_1 | Info_2 | Info_3 | Info_4 | Info_5 | Info_6 | Info_7 | Tail byte |
---|---|---|---|---|---|---|---|---|
29bit message frame | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
数据帧参数解释
Info_1 : esc 硬件信息字节 1,esc 最高电压 S 数
Info_2 : esc 硬件信息字节 2,esc 最大电流(X10A)
Info_3 : esc 硬件信息字节 3,esc 硬件版本 Info_4 : esc 电调使用的协议文件版本
Info_5 : 固件生成年份 Info_6 : 固件生成月份 Info_7 : 固件生成日
4.4.27. Maintance Information(241)
Maintance Info 发送帧
CAN frame | Option | Tail byte |
---|
29bit message frame | payload[0] | payload[1] |
---|
Get Maintance Info 应答帧
CAN frame | Info_1 | Info_2 | Info_3 | Info_4 | Info_5 | Info_6 | Info_7 | Tail byte |
---|---|---|---|---|---|---|---|---|
29bit message frame | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
数据帧参数解释
Option=0: Info_4 Info_3 Info_2 Info_1 = 累计运行时间(uint32 单位:秒)
Info_5 = MOS 温度最大值(uint8)
Info_6 = 电容温度最大值(uint8)
Option=1: Info_4 Info_3 Info_2 Info_1 = 本次运行时间(uint32 单位:秒)
Info_6 Info_5 = 运行次数(uint16)
Option=2: Info_2 Info_1 = 上电次数(uint16)
Info_4 Info_3 = 停止运行次数(uint16)
Info_6 Info_5 = 上电自检测故障码(uint16 正常上电后为 0) Info_7=Option
4.4.28. Get Major Configuration(242)
Get Major Configuration 发送帧
CAN frame | Option | Tail byte |
---|---|---|
29bit message frame | payload[0] | payload[1] |
Get Major Configuration 应答帧
CAN frame | Configuration | Tail byte |
---|---|---|
29bit message frame | payload[0-6] | payload[7] |
数据帧参数解释
参数 | 数据类型 | 描述 | |
---|---|---|---|
Option | Payload[0] | 固定为 0 | |
Configuration(Option=0) | Payload[0] | Bit [7] | 电机旋转方向(0 :正转,1 :反转) |
Bit [6] | 油门信号源(0 :CAN 数字油门,1 :PWM+CAN 油门) | ||
Bit [5 :0] | 设定的数字油门通道 | ||
Payload[1] | Bit [7 :3] | LED 闪烁状态 | |
Bit [2 :0] | LED 静态灯色 RGB | ||
Payload[2] | Bit [7 :0] | MSG1 数据上报间隔时间(X2 ms) | |
Payload[3] | Bit [7 :0] | MSG2 数据上报间隔时间(X2 ms) | |
Payload[4] | Bit [7 :0] | MSG3 数据上报间隔时间(X2 ms) | |
Payload[5] | Bit [7 :0] | 保留 | |
Payload[6] | Bit [7 :0] | 保留 |
说明:
1 : Get Major Configuration 是主节点快速获取电调主要参数配置信息的数据帧。
2 : Option 表示电调类型。
附: 故障码定义
故障码 1:
0x01 | 电机驱动电路测试时,com 电压偏低 |
---|---|
0x02 | 电机驱动电路测试时,com 电压偏高 |
0x11 | 电机驱动电路测试时,A 相测试电压偏高 |
0x12 | 电机驱动电路测试时,B 相测试电压偏高 |
0x13 | 电机驱动电路测试时,C 相测试电压偏高 |
0x21 | 电机驱动电路测试时,A 相测试电压偏低 |
0x22 | 电机驱动电路测试时,B 相测试电压偏低 |
0x23 | 电机驱动电路测试时,C 相测试电压偏低 |
故障码 2 : 目前未定义。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。