云犀 Gloria-M 系列电机通信协议
反馈帧
反馈帧 ID 由调试助手设置(Master ID),默认为 0,主要反馈电机的位置、速度和扭矩信息,其帧格式定义为:
| 反馈报文 | D[0] | D[1] | D[2] | D[3] | D[4] | D[5] | D[6] | D[7] |
|---|---|---|---|---|---|---|---|---|
| MST_ID | ID|ERR<<4 | POS[15:8] | POS[7:0] | VEL[11:4] | VEL[3:0]|T[11:8] | T[7:0] | T_MOS | T_Rotor |
其中:
- ID 表示控制器的 ID,取 CAN_ID 的低 8 位
- ERR 表示状态,对应状态类型为:
- 0——失能
- 1——使能
- 8——超压
- 9——欠压
- A——过电流
- B——MOS 过温
- C——电机线圈过温
- D——通讯丢失
- E——过载
- POS 表示电机的位置信息
- VEL 表示电机的速度信息
- T 表示电机的扭矩信息
- T_MOS 表示驱动上 MOS 的平均温度,单位℃
- T_Rotor 表示电机内部线圈的平均温度,单位℃
位置、速度和扭矩采用线性映射的关系将浮点数据类型转换成有符号的定点数据,其中位置采用 16 位数据,速度和扭矩均使用 12 位,以速度为例说明映射关系。
如电机当前速度为 25.0 rad/s,设置的速度范围 VMAX = 45 rad/s,则发送的数据报为:
最高转速
最高转速由多种因素限制,包括电源电压(V_BUS)、KV 值,以及减速比(GR),通常可由下式计算出一个上限:
式中 是极对数, 表示转子磁链。
MIT 模式
MIT 模式兼容原版 MIT 控制协议,通过位置、速度、扭矩三个维度的加权组合实现灵活的阻抗控制。用户可自由设定控制范围(P_MAX 最大位置、V_MAX 最大速度、T_MAX 最大扭矩),驱动器将 CAN 数据转化为控制变量,经运算后输出扭矩电流给定值。其控制示意框图如下:
图注: p_des — 位置给定;v_des — 速度给定;t_ff — 前馈扭矩给定;θ_m — 电机实际位置(反馈);dθ_m — 电机实际速度(反馈);kp — 位置比例系数;kd — 位置微分系数;T_ref — 扭矩参考值;1/KT_OUT — 扭矩系数倒数(将扭矩转换为电流);iqref — q 轴电流给定;idref — d 轴电流给定(恒为 0)。
根据 MIT 模式可以衍生出多种控制模式,如 kp=0,kd 不为 0 时,给定 v_des 即可实现匀速转动;kp=0,kd=0,给定 t_ff 即可实现给定扭矩输出。
对位置进行控制时,kd 不能赋 0,否则会造成电机震荡,甚至失控。
MIT 模式下控制帧
| 控制报文 | D[0] | D[1] | D[2] | D[3] | D[4] | D[5] | D[6] | D[7] |
|---|---|---|---|---|---|---|---|---|
| ID | p_des[15:8] | p_des[7:0] | v_des[11:4] | v_des[3:0]|Kp[11:8] | Kp[7:0] | Kd[11:4] | Kd[3:0]|t_ff[11:8] | t_ff[7:0] |
- 帧 ID 等于设定的 CAN ID 值
- P_des:位置给定
- V_des:速度给定
- Kp:位置比例系数
- Kd:位置微分系数
- T_ff:转矩给定值
各参数符合上一节的映射关系,其中 p_des、v_des、t_ff 的范围可由调试助手进行设定,Kp 的范围为 [0, 500],Kd 的范围为 [0, 5]。
标准 CAN 数据一帧只有 8 个字节,MIT 的控制命令格式将 Position、Velocity、Kp、Kd、Torque 五个参数按位组合在 8 个字节中,其中:Position 占用 16 位,Velocity、Kp、Kd、Torque 各占用 12 位,合计 64 位(8 字节)。
位置速度模式
位置速度模式采用位置环→速度环→电流环三环串联控制,通过给定目标位置和最大速度实现平滑精确的位置运动,适用于对轨迹精度和柔顺性有要求的场景。其控制示意框图见下图:
图注: p_des — 目标位置给定;v_des — 速度给定(限定最大绝对速度);θ_m — 电机实际位置(反馈);dθ_m — 电机实际速度(反馈);PI — PI 控制器;iqref — q 轴电流给定;idref — d 轴电流给定(恒为 0)。
- p_des 为控制的目标位置,v_des 用于限定运动过程中的最大绝对速度
- 使用调试助手推荐的控制参数可获得较好的控制精度,过程相对柔顺但响应时间较长。可配置的参数除 v_des 外,还包括加速度和减速度;若控制过程中出现额外震荡,可适当提高加/减速度值
p_des、v_des 单位分别为 rad 和 rad/s,数据类型为 float,阻尼因子必须设置为非 0 的正数,可参考速度模式的注意事项。
位置速度模式下控制帧
| 控制报文 | D[0] ~ D[3] | D[4] ~ D[7] |
|---|---|---|
| 0x100+ID | p_des(float, 小端序) | v_des(float, 小端序) |
- 帧 ID 为设定的 CAN ID 值加上 0x100 的偏移
- P_des:位置给定,浮点型,低位在前,高位在后
- V_des:速度给定,浮点型,低位在前,高位在后
此处发送命令的 CAN ID 为 0x100+ID,速度给定为梯形加减速运行时匀速段的速度值。
使能
上电自检完毕后需发送"使能"命令才可以进行控制。"使能"帧属于控制帧,帧 ID 如前所述,不同的是数据段,无论处于哪种模式,"使能"的数据段定义是相同的,如下:
| D[0] | D[1] | D[2] | D[3] | D[4] | D[5] | D[6] | D[7] |
|---|---|---|---|---|---|---|---|
| 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFC |
失能
失能为电机上电默认状态,此时电机三相端子电压波形相同,均为电源电压的 50% 调制波。"失能"帧属于控制帧,帧 ID 如前所述,数据段定义如下:
| D[0] | D[1] | D[2] | D[3] | D[4] | D[5] | D[6] | D[7] |
|---|---|---|---|---|---|---|---|
| 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFD |
保存位置零点
"保存位置零点"帧属于控制帧,帧 ID 如前所述,数据段定义如下:
| D[0] | D[1] | D[2] | D[3] | D[4] | D[5] | D[6] | D[7] |
|---|---|---|---|---|---|---|---|
| 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFE |
清除错误
电机出现过热等错误时,发送"清除"命令可以清除错误。"清除"帧属于控制帧,帧 ID 如前所述,数据段定义如下:
| D[0] | D[1] | D[2] | D[3] | D[4] | D[5] | D[6] | D[7] |
|---|---|---|---|---|---|---|---|
| 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFB |
电机寄存器操作
读取命令格式
| 报文ID | 属性 | data[0] | data[1] | data[2] | data[3] |
|---|---|---|---|---|---|
| 0x7FF | STD | CAND_L | CAND_H | 0x33 | RID |
读取成功后,会返回该寄存器的数据,帧格式如下:
| 报文ID | 属性 | data[0] | data[1] | data[2] | data[3] | data[4] | data[5] | data[6] | data[7] |
|---|---|---|---|---|---|---|---|---|---|
| MST_ID | STD | CAND_L | CAND_H | 0x33 | RID | 数据0 | 数据1 | 数据2 | 数据3 |
返回的数据低位在前,高位在后。
写入命令格式
| 报文ID | 属性 | data[0] | data[1] | data[2] | data[3] | data[4] | data[5] | data[6] | data[7] |
|---|---|---|---|---|---|---|---|---|---|
| 0x7FF | STD | CAND_L | CAND_H | 0x55 | RID | 数据0 | 数据1 | 数据2 | 数据3 |
写入成功后,会返回写入的数据,帧格式与发送的相同:
| 报文ID | 属性 | data[0] | data[1] | data[2] | data[3] | data[4] | data[5] | data[6] | data[7] |
|---|---|---|---|---|---|---|---|---|---|
| MST_ID | STD | CAND_L | CAND_H | 0x55 | RID | 数据0 | 数据1 | 数据2 | 数据3 |
数据低位在前,高位在后。
存储命令格式
| 报文ID | 属性 | data[0] | data[1] | data[2] | data[3] |
|---|---|---|---|---|---|
| 0x7FF | STD | CAND_L | CAND_H | 0xAA | RID |
存储成功后,返回格式为:
| 报文ID | 属性 | data[0] | data[1] | data[2] | data[3] |
|---|---|---|---|---|---|
| MST_ID | STD | CAND_L | CAND_H | 0xAA | 0x01 |
寄存器表
RID 为寄存器,详细的寄存器条目可以参照控制协议文档,这里只罗列其中一个寄存器变量做示例:
| 寄存器地址 | 变量 | 描述 | 读写 | 区间 | 数据类型 |
|---|---|---|---|---|---|
| 10 (0x0A) | CTRL_MODE | 控制模式 | RW | [1, 4] | uint32_t |
参数说明
电机参数
| 参数 | 说明 |
|---|---|
| 相电阻(R) | 相与相之间的电阻值,单位为 mΩ |
| 相电感(L) | 相与相之间的电感值,单位为 μH |
| 磁链(λ) | 永磁体磁场磁链值,单位为 Wb |
| 粘滞系数 | 电机的粘滞系数,仅供参考使用,未使用到,单位为 N·m·s/rad |
| 转动惯量 | 电机的转动惯量,辨识时尽量保持空载,单位为 kg·m² |
驱动参数
| 参数 | 说明 |
|---|---|
| 极对数 | 电机转子的极对数,可手动写入,也可通过校准自动计算出来 |
| 减速比 | 外接齿轮的减速比,表明电机经过多少的减速进行输出 |
| CAN ID | 用于 CAN 通讯的电机标识 ID,最终发送使用的电报格式模式加偏移值 |
| Master ID | 电机通过 CAN 通讯所使用的 CAN StdID |
| 欠压 | 欠压保护阈值,单位 V |
| 过压 | 过压保护阈值,单位 V |
| 过温 | 电机过温保护阈值,单位℃ |
| CAN Timeout | CAN 通讯超时周期数设置,计量单位为 50μs |
| 加速度 | 电机加速度设定值,单位 Krad/s² |
| 减速度 | 电机减速度设定,单位 Krad/s²,尽量与加速度值一致 |
| 限速 | 电机的理论最大速度,为系统计算值,如有减速箱,此值为减速前的值,单位 rad/s |
| 过流 | 电机相电流峰值的过流裁定百分比值 |
控制幅值
| 参数 | 说明 |
|---|---|
| PMAX | 在 MIT 模式发送命令的最大位置值,以及所有模式下位置反馈所采用的最大值,单位为 rad |
| VMAX | 在 MIT 模式发送命令的最大速度值,以及所有模式下速度反馈所采用的最大值,单位为 rad/s |
| TMAX | 在 MIT 模式发送命令的最大扭矩值,以及所有模式下扭矩反馈所采用的最大值,单位为 Nm |
| KT_OUT | 驱动板使用的输出扭矩系数值,如采用 0.0,则默认使用系统理论计算值,单位为 Nm/A |
| 齿轮系数 | 齿轮力矩传递效率值,默认为 1 |
| 阻尼因子 | 速度环阻尼因子设定值,默认 4.0,建议范围为 2.5~20 之间。过小会引起超调,过大会影响上升时间 |
控制设置
| 参数 | 说明 |
|---|---|
| 控制模式 | 包括 3 种模式,即 MIT 模式、位置速度模式(PV)和纯速度模式 |
| 电流带宽 | 电流环的控制带宽,根据实际需求调整 |
| 速度 KP | 速度环的比例参数,可手动设置,设置完成后点击写参数即可永久保存 |
| 速度 KI | 速度环的积分系数,可手动设置,设置完成后点击写参数即可永久保存 |
| 位置 KP | 位置环的比例参数,在位置速度模式时生效,可点击"计算 KP"自动计算 |
| 位置 KI | 位置环的积分系数,建议设定为 0.0 |