首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CKESC UAVCAN Protocol 2.1

CKESC UAVCAN Protocol 2.1

原创
作者头像
CKESC南昌长空科技
发布2024-11-11 16:39:10
发布2024-11-11 16:39:10
3280
举报

CKESC UAVCAN Protocol 2.1 by CKESC

2024/10/11

目录

1. 适用范围 3

2. 术语 3

3. 参考文档 3

4. 协议定义 3

4.1. UAVCAN 协议 3

4.1.1. 概念 3

4.1.2. ID field 3

4.1.3. CAN Payload 5

4.2. CAN 电调工作机制 6

4.2.1. 功能 6

4.2.2. 总线带宽 6

4.3. 数据帧类型列表 6

4.3.1. ID 域分配 6

4.3.2. 数据帧类型表 6

4.4. 数据帧类型说明 8

4.4.1. CANTest(20000) 8

4.4.2. MSGControl(20010) 9

4.4.3. FRAME_MSG_GET_ESC_ID (20013) 9

4.4.4. MSG1(20050) 9

4.4.5. MSG2(20051) 10

4.4.6. MSG3(20052) 11

4.4.7. MSG_EXP1(20053) 11

4.4.8. MSG_EXP2-6(20054-20058) 11

4.4.9. MSG_EXP7(20059) 12

4.4.10. MSG_EXP8(20060) 12

4.4.11. MSG_EXP9(20061) 12

4.4.12. MSG_EXP10(20062) 13

4.4.13. MSG_EXP11(20063) 13

4.4.14. MSG_EXP12(20064) 13

4.4.15. RawCommand_14b(20100) 14

4.4.16. RawCommand_12b(20101) 14

4.4.17. RawCommand_10b(20102) 15

4.4.18. Set Id(210) 16

4.4.19. Set Baud(211) 16

4.4.20. Set Led(212) 17

4.4.21. Set Rotation(213) 18

4.4.22. Set/Get Freq(214) 18

4.4.23. Throttle Select(215) 19

4.4.24. Self Test(216) 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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档