ESC · V1 草案
PRODUCT BUSINESS COMMANDS / 0x50–0xEF

电调业务协议

PULSE 方波电调与 VECTOR FOC 电调共用本页的 CMD。控制命令统一为 TARGET,由请求中的 Mode 决定目标含义。报文、SEQ、CRC16、Result 和升级命令沿用产品通用协议。

01 继承的报文格式

CMD1字节
SEQ1字节
PAYLOAD0 至 N 字节
CRC162字节

以下只列请求 PAYLOAD 和成功响应 PAYLOAD。响应回显 CMD、SEQ,PAYLOAD 首字节为 Result。多字节整数按小端发送;有符号整数采用二进制补码。实现本协议的设备,其通用 Get Info.MaxPayload 至少为 23 字节。

UART / RS485、BLE 透传、Wi‑Fi TCP 使用 COBS;CAN / CAN FD 使用 ISO-TP。接口改变分帧,不改变电调命令。

02 目标、状态与模式切换

INFO.Technology 返回 PULSE(方波)或 VECTOR(FOC)。带编码器的产品仍属于 VECTOR;具体型号由通用 Get Info.TargetID 识别。TARGET 用一条 CMD 承载下表四种控制方式。

Mode控制方式Value 字节数Value 单位与范围适用驱动技术
1DUTY · 调制比例2单位 0.1%;−100.0% 至 +100.0%PULSE / VECTOR
2CURRENT · 转矩电流2单位 0.1 A;−500.0 A 至 +500.0 A,受 MAX_IQ 限制VECTOR
3SPEED · 电气转速4单位 1 eRPM;−200,000 eRPM 至 +200,000 eRPMPULSE / VECTOR
4POSITION · 多圈机械位置4单位 0.1°;−72,000,000.0° 至 +72,000,000.0°(±200,000 圈)VECTOR + 编码器

DUTY 不等于转速百分比。DUTY、CURRENT、SPEED 的正负号分别表示调制方向、转矩方向和旋转方向;POSITION 的正负号表示零点两侧累计的机械位置,360.0° 为正向一整圈,720.0° 为正向两整圈。POSITION 的 0 是零点目标,不是停机。eRPM = 机械 RPM × 极对数。表中适用驱动技术表示该类别允许实现此 Mode;具体型号未实现时,TARGET 返回 UNSUPPORTED_MODE。Mode 值未知或 Value 长度不符时返回通用 BAD_PAYLOAD。

State含义控制规则
0 LOCKED输出关闭;上电或 LOCK 后尚未确认停稳可读写参数;待设备确认停稳后进入 STOPPED
1 READY已解锁,输出关闭Mode=NONE 时首次选择;否则只能继续原 Mode
2 RUNNING正在驱动或保持位置只能更新原 Mode 的目标
3 FAULT输出关闭,故障锁存原因解除后 CLEAR_FAULT,回到 LOCKED
4 STOPPED输出关闭,设备已确认电机停稳可 UNLOCK 后选择新的 Mode,也可设置位置零点

切换 Mode 的步骤固定为 LOCK → 等待 STATUS.State=STOPPED → UNLOCK → TARGET(新 Mode, Value)。LOCK 清除旧 Mode 和目标,关闭输出;设备确认电机停稳后才报告 STOPPED,主机不得仅凭 LOCK 成功或单次速度读数为 0 判定停稳。未完成上述步骤就改变 Mode,返回 BAD_STATE,旧 Mode 和目标不变。同一 Mode 可在 RUNNING 时更新 Value。

STOPPED 的判据:输出已关闭,且有效转速反馈显示绝对值不超过 100 eRPM,连续达到 STOP_CONFIRM_MS(默认 250 ms);期间转速超限须重新计时。若低速转速反馈不可用,设备须采用可确认旋转已停止的检测方法;无法确认时保持 LOCKED,并在 STATUS 中返回 ERPM=0x80000000,不得仅因等待超时或反馈无效报告 STOPPED。STOPPED 表示设备依据反馈确认的停稳状态,不作为机械安全防护功能。

DUTY、CURRENT、SPEED 的 Value=0 关闭主动驱动并进入 READY,但保留当前 Mode;POSITION 到达目标后继续保持位置,State 保持 RUNNING,需用 LOCK 停止保持。成功响应 OK 表示目标已接受,不表示已达到速度或位置。

03 电调命令 · 0x50–0x5A

0x50

INFO

读取驱动技术
请求 PAYLOAD · 0字节空
成功响应 PAYLOAD · 3字节Result(1) + Version(1) + Technology(1)
字段字节数定义
Result1成功为 OK
Version1电调业务协议版本,固定 1
Technology10 PULSE(方波);1 VECTOR(FOC)。带编码器的产品仍返回 VECTOR
0x51

STATUS

读取控制与测量状态
请求 PAYLOAD · 0字节空
成功响应 PAYLOAD · 23字节Result(1) + State(1) + Mode(1) + Target(4) + Voltage(2) + Current(2) + ERPM(4) + Degree(4) + Temp(2) + MotorTemp(2)
字段字节数定义取值范围
Result1成功为 OK0x00
State10 LOCKED;1 READY;2 RUNNING;3 FAULT;4 STOPPED。故障详情用 GET_FAULT 查询LOCKED / READY / RUNNING / FAULT / STOPPED
Mode10 NONE;1 DUTY;2 CURRENT;3 SPEED;4 POSITION;LOCK 后为 NONENONE / DUTY / CURRENT / SPEED / POSITION
Target4有符号;按 Mode 使用与 TARGET.Value 相同的单位,不压缩或换算;NONE 时为 0NONE:0;DUTY:−100.0% 至 +100.0%;CURRENT:−500.0 A 至 +500.0 A;SPEED:−200,000 eRPM 至 +200,000 eRPM;POSITION:−72,000,000.0° 至 +72,000,000.0°
Voltage2无符号,直流母线电压,单位 0.1 V0.0 V 至 300.0 V;0xFFFF 表示不可用
Current2有符号,单位 0.1 A;PULSE 为母线电流(正值取电、负值回馈),VECTOR 为相线电流的转矩轴分量 Iq(正负为转矩方向)−500.0 A 至 +500.0 A;0x7FFF 表示不可用
ERPM4有符号,实时电气转速,单位 1 eRPM;POSITION 模式下也返回实时转速−200,000 eRPM 至 +200,000 eRPM;0x80000000 表示不可用
Degree4有符号,相对零点累计的多圈机械位置,单位 0.1°;与当前 Mode 无关−72,000,000.0° 至 +72,000,000.0°;未建立零点或不支持位置测量时为 0x80000000
Temp2有符号,电调温度,单位 0.1 °C−50.0 °C 至 250.0 °C;0x7FFF 表示不可用
MotorTemp2有符号,电机温度,单位 0.1 °C−50.0 °C 至 250.0 °C;0x7FFF 表示不可用

不支持电机温度测量的型号返回 MotorTemp=0x7FFF。表中是协议范围,实际允许的工作范围仍由型号规格和保护参数决定。Target 是当前生效的目标:HOST 模式来自 TARGET,外部输入模式来自输入映射;按对应 Mode 的单位和精度返回。Degree 为累计圈数,不对 360° 取模。设备复位后须重新建立零点,不能沿用复位前的累计位置。

0x52

UNLOCK

允许输出
请求 PAYLOAD · 0字节空
成功响应 PAYLOAD · 1字节Result(1)

仅 State=STOPPED 且无故障时接受;成功进入 READY,Mode=NONE、Target=0,不自动驱动。尚未确认停稳时返回 BAD_STATE。INPUT_SOURCE 为外部输入时,解锁前还须连续 INPUT_NEUTRAL_MS(默认 250 ms)收到有效零目标;输入无效或已有非零目标时返回 BAD_STATE,保持 STOPPED。

0x53

LOCK

关闭输出
请求 PAYLOAD · 0字节空
成功响应 PAYLOAD · 1字节Result(1)

任何状态均可请求;清零目标、关闭主动驱动并将 Mode 设为 NONE。无故障时先进入 LOCKED,设备确认电机停稳后进入 STOPPED;故障已锁存时仍为 FAULT。LOCK 成功不代表转子已停稳。

0x54

TARGET

设置控制目标
请求 PAYLOAD · 3或5字节Mode(1) + Value(2或4)
成功响应 PAYLOAD · 1字节Result(1)

仅 INPUT_SOURCE=HOST 时接受;外部输入模式返回 BAD_STATE。Mode 和 Value 的字节数、单位及允许范围见上表。Mode=1/2 时 Value 为有符号 2 字节;Mode=3/4 时为有符号 4 字节。不发送填充字节。Mode 不支持返回 0x80 UNSUPPORTED_MODE;Mode 未定义、长度或取值错误返回 BAD_PAYLOAD。当前 Mode 不为 NONE 且请求改用另一 Mode 时返回 BAD_STATE。失败时原 Mode、目标与输出不变。

HOST 模式运行中,相邻两条当前 Mode 的有效 TARGET 间隔不得超过 TARGET_TIMEOUT_MS(默认 3000 ms);POSITION 保持也需重复目标。STATUS 查询不续约。超时关闭输出并进入 FAULT,不会自动重新解锁。

0x55

GET_PARAM

读取参数
请求 PAYLOAD · 1字节ParamID(1)
成功响应 PAYLOAD · 3+N字节Result(1) + ParamID(1) + Length(1) + Value(N)

ParamID 是 1 至 255 的十进制编号,报文中占 1 字节。仅返回该型号实现的 ParamID;未知、预留或不适用时返回 BAD_PAYLOAD。

0x56

SET_PARAM

修改参数
请求 PAYLOAD · 2+N字节ParamID(1) + Length(1) + Value(N)
成功响应 PAYLOAD · 1字节Result(1)

仅 LOCKED 或 STOPPED 状态接受;INPUT_SOURCE、INPUT_CONTROL_MODE 只允许在 STOPPED 时修改。其余状态返回 BAD_STATE。未知、预留或不适用的 ParamID,以及 Length、取值范围或参数关系不合法时返回 BAD_PAYLOAD。修改仅在 RAM 生效,不能超过型号硬件安全极限。

0x57

SAVE_PARAM

持久化参数
请求 PAYLOAD · 0字节空
成功响应 PAYLOAD · 1字节Result(1)

仅 LOCKED 或 STOPPED 时接受;完成非易失存储写入并校验后回复 OK。不支持持久化的型号返回 BAD_COMMAND。

0x58

CLEAR_FAULT

清除故障
请求 PAYLOAD · 0字节空
成功响应 PAYLOAD · 1字节Result(1)

原因已消失且输出关闭后清除锁存,State 从 FAULT 回到 LOCKED;不会自动解锁。原因仍存在时返回 BAD_STATE。

0x59

SET_POSITION_ZERO

建立位置零点
请求 PAYLOAD · 0字节空
成功响应 PAYLOAD · 1字节Result(1)

仅支持 POSITION 的 VECTOR + 编码器型号实现;STOPPED 且位置传感器可用时,将当前位置设为逻辑零点。主机须确保轴处于预期零点。零点仅在本次上电期间有效,复位后须重新建立。

0x5A

GET_FAULT

查询故障码
请求 PAYLOAD · 0字节空
成功响应 PAYLOAD · 2字节Result(1) + Fault(1)

任何状态均可查询;无故障时 Fault=0。STATUS.State=FAULT 时用此命令读取锁存的原因。

电调专用 Result:0x80 UNSUPPORTED_MODE 仅用于 TARGET,表示 Mode 已定义但本设备未实现。其他结果码沿用通用协议。

04 参数定义

ParamID 使用十进制编号 1 至 255,报文中占 1 字节;0 无效。每个 ParamID 的 Value 长度和数值编码由下表确定;Value 多字节时为小端,有符号值用二进制补码。所有已实现的参数均可通过 GET_PARAM 读取、在 LOCKED 或 STOPPED 状态通过 SET_PARAM 修改;修改后用 SAVE_PARAM 持久化。出厂值与可设上限不得越过型号硬件安全范围。

按用途展开下列参数组。参数名、ParamID 与报文编码不受页面分组影响。

基础与控制 ParamID 1–4、12–13
ParamID参数适用长度单位 / 编码定义
1POLE_PAIRS通用1字节无符号;极对数1 至 100 极对;机械 RPM = eRPM ÷ 极对数
2REVERSE_DIRECTION通用1字节无符号;0 或 1反转电机轴的正方向定义;所有有符号目标与测量的方向一致翻转
3INPUT_SOURCE通用1字节无符号;枚举0 HOST(本协议 TARGET);1 PWM;2 ADC;3 DSHOT。设备不支持的来源返回 BAD_PAYLOAD
4INPUT_CONTROL_MODE通用1字节无符号;Mode外部输入所控制的模式:1 DUTY;2 CURRENT;3 SPEED。仅 INPUT_SOURCE 非 HOST 时使用;模式受设备能力限制
12STOP_CONFIRM_MS通用2字节无符号;1 ms转速满足停稳阈值后须连续保持的时间,100 ms 至 5,000 ms;默认 250 ms
13TARGET_TIMEOUT_MS通用2字节无符号;1 msHOST 模式运行中相邻有效 TARGET 的最大间隔,100 ms 至 10,000 ms;默认 3,000 ms
输入校准 ParamID 5–9、14–16
ParamID参数适用长度单位 / 编码定义
5PWM_MIN_US通用2字节无符号;1 µsPWM 有效输入下限,500 µs 至 2,500 µs;须小于 PWM_MAX_US
6PWM_MAX_US通用2字节无符号;1 µsPWM 有效输入上限,500 µs 至 2,500 µs;须大于 PWM_MIN_US
7ADC_MIN_MV通用2字节无符号;1 mV模拟输入下限,0 mV 至 3,000 mV;须小于 ADC_MAX_MV
8ADC_MAX_MV通用2字节无符号;1 mV模拟输入上限,0 mV 至 3,000 mV;须大于 ADC_MIN_MV
9INPUT_NEUTRAL_MS通用2字节无符号;1 ms外部输入解锁前有效零目标须连续保持的时间,100 ms 至 5,000 ms;默认 250 ms
14PWM_MID_US通用2字节无符号;1 µsPWM 零目标中点,须大于 PWM_MIN_US 且小于 PWM_MAX_US;默认 1,500 µs
15ADC_MID_MV通用2字节无符号;1 mVADC 零目标中点,须大于 ADC_MIN_MV 且小于 ADC_MAX_MV;默认 1,500 mV
16INPUT_DEADBAND通用1字节无符号;0.1% 全量程PWM / ADC 中点两侧各自的零目标死区宽度,0.0% 至 10.0%;默认 2.0%;死区边界须分别落在 MIN 与 MAX 之间
输出限制与保护 ParamID 10–11、17、20–41
ParamID参数适用长度单位 / 编码定义
10MAX_DUTY通用2字节无符号;0.1%调制比例绝对值上限,0.1% 至 100.0%
11MAX_SPEED通用4字节无符号;1 eRPM电气转速目标绝对值上限,1 eRPM 至 200,000 eRPM;不支持 SPEED 的型号可不实现
17DUTY_SLEW_RATE通用1字节无符号;0.1%/msDUTY 模式的实际调制比例最大变化速率,0 表示不另行限制;1 至 100 表示每毫秒最多变化 0.1% 至 10.0%;默认 0。作用于 HOST 与外部输入,跨越零点时同样生效,不改变 STATUS.Target;零目标、LOCK 与故障关断须立即关闭输出,不受此速率限制
20MAX_BUS_CURRENT通用2字节无符号;0.1 A直流母线取电上限,0.1 A 至 500.0 A
21MAX_REGEN_CURRENT通用2字节无符号;0.1 A回馈到母线的电流绝对值上限,0.0 A 至 500.0 A;0 表示不允许主动回馈
30MIN_BUS_VOLTAGE通用2字节无符号;0.1 V欠压保护阈值,0.0 V 至 300.0 V,须小于过压阈值
31MAX_BUS_VOLTAGE通用2字节无符号;0.1 V过压保护阈值,0.0 V 至 300.0 V,须大于欠压阈值
40ESC_TEMP_LIMIT通用2字节有符号;0.1 °C电调过温阈值,不得高于硬件允许值
41MOTOR_TEMP_LIMIT通用2字节有符号;0.1 °C有电机温度传感器时实现;传感器缺失的型号不实现
PULSE 方波专用 ParamID 100–102
ParamID参数适用长度单位 / 编码定义
100COMMUTATION_ADVANCEPULSE2字节无符号;0.1° 电角度方波换相进角:相对理想换相点提前的电角度,0.0° 至 30.0°;默认 15.0°。与常称的 timing 属同一调校概念,本协议直接传实际电角度,不传档位编号
101STARTUP_DUTYPULSE2字节无符号;0.1%起转阶段的调制比例上限,0.1% 至 MAX_DUTY
102STALL_ERPMPULSE4字节无符号;1 eRPM方波失速检测阈值
VECTOR FOC 专用 ParamID 150–153
ParamID参数适用长度单位 / 编码定义
150MAX_IQVECTOR2字节无符号;0.1 AIq 目标绝对值上限,0.1 A 至 500.0 A;仍受硬件电流保护约束
151MOTOR_RVECTOR4字节无符号;0.1 mΩFOC 校准所得电机相电阻;可根据电机实测值修改
152MOTOR_LVECTOR4字节无符号;0.01 µHFOC 校准所得电机相电感;可根据电机实测值修改
153FLUX_LINKAGEVECTOR4字节无符号;1 µWbFOC 校准所得磁链;可根据电机实测值修改
编码器与位置 ParamID 200–201
ParamID参数适用长度单位 / 编码定义
200POSITION_MAX_SPEEDVECTOR + 编码器4字节无符号;1 eRPM位置运动电气转速上限
201POSITION_MAX_ACCELVECTOR + 编码器4字节无符号;1 eRPM/s位置运动电气转速变化率上限

INPUT_SOURCE=HOST 时通过 TARGET 控制。选择 PWM、ADC 或 DSHOT 后,UNLOCK 仍须等待 STOPPED,且输入须连续 INPUT_NEUTRAL_MS 保持有效零目标;解锁后新收到的非零目标才可驱动,按 INPUT_CONTROL_MODE 产生目标,不再用 TARGET 续约。PWM、ADC 的 MIN 对应最大反向目标、MAX 对应最大正向目标;MID 为零目标中点,INPUT_DEADBAND 定义中点两侧各自占全量程的零目标区间,区间两侧分别线性映射到反向和正向目标。DSHOT 的零油门为零目标,有效非零油门映射为正向目标;反向需由具体型号另行定义,不属于本版通用 DSHOT 映射。

外部输入解锁后,PWM / DSHOT 连续 100 ms 未收到有效帧,或 ADC 测量无效、超出型号允许电气范围时,立即关闭输出,进入 FAULT,GET_FAULT 返回 0x08;输入恢复后仍须 CLEAR_FAULT、等待 STOPPED 并重新 UNLOCK,不自动恢复驱动。ADC 无法仅凭位于正常范围的电压识别断线,型号硬件须提供断线检测或确保断线时落在无效区,不得把断线当作非零目标。各型号的引脚、供电、采样和信号电气要求由型号资料给出;不支持的输入来源或控制模式返回 BAD_PAYLOAD。

ParamID 分段:1 至 99 通用(基础与输入、电流、电压、温度);100 至 149 PULSE 专用;150 至 199 VECTOR 专用;200 至 255 其他扩展,当前 200 至 201 用于带编码器的 VECTOR 型号。表中“通用”表示编号可跨驱动技术使用,具体参数仍以型号实现为准。参数不适用或型号未实现时,GET_PARAM / SET_PARAM 返回 BAD_PAYLOAD。

05 故障码

Fault含义
0x00无故障
0x01控制命令超时
0x02过流
0x03母线过压
0x04母线欠压
0x05电调过温
0x06位置或转速反馈丢失
0x07电机过温
0x08外部控制输入丢失或无效
0xFF其他硬件故障

故障发生时关闭主动驱动并进入 FAULT;原因消失后仍保持锁存,CLEAR_FAULT 成功才回到 LOCKED。