32 KiB
32 KiB
灵足时代电机通信协议汇总
本文档汇总了灵足时代(Robstride)各型号电机的通信协议信息。
支持的电机型号
- EL05: 准直驱6N.M一体化电机模组
- RS00: 准直驱14N.M一体化电机模组
- RS01: 准直驱一体化电机模组
- RS02: 准直驱一体化电机模组
- RS03: 准直驱一体化电机模组
- RS04: 准直驱一体化电机模组
- EL05: 准直驱一体化电机模组
- RS06: 准直驱一体化电机模组
通信接口规范
基本参数
- 通信方式: CAN 2.0
- 波特率: 1Mbps(默认,可通过协议修改)
- 帧格式:
- 私有协议:扩展帧(29位ID)
- CANopen协议:扩展帧(29位ID)
- MIT协议:标准帧(11位ID)
CAN ID结构(私有协议扩展帧)
29位ID结构:
Bit28~bit24: 通信类型
bit23~8: 数据区2(主机CAN_ID等)
bit7~0: 目标地址(电机CAN_ID)
一、私有协议(默认协议)
所有电机型号均支持私有协议,这是默认的通信协议。
1.1 通信类型列表
通信类型0:获取设备ID
- 功能: 获取设备的ID和64位MCU唯一标识符
- 发送帧:
- ID:
0x0(Bit28~24=0) - 数据:
00 FD 7F 00 00 00 00 00 00 00 - 说明: bit15
8为主机CAN_ID,bit70为目标电机CAN_ID
- ID:
- 应答帧:
- ID:
0x0 - 数据:
00 7F FE [64位MCU唯一标识符] - 说明: 返回64位MCU唯一标识符
- ID:
通信类型1:运控模式电机控制指令
- 功能: 运控模式下的电机控制
- 发送帧:
- ID:
0x1(Bit28~24=1) - 数据:
[Byte0~1: 目标角度] [Byte2~3: 目标角速度] [Byte4~5: Kp] [Byte6~7: Kd] - 数据范围:
- 角度: 0
65535 对应 (-12.57f12.57f) rad - 角速度: 0
65535 对应 (-50rad/s50rad/s) - Kp: 0
65535 对应 (0.0500.0) - Kd: 0
65535 对应 (0.05.0)
- 角度: 0
- 注意: 数据高字节在前,低字节在后
- ID:
- 应答帧: 通信类型2(电机反馈数据)
通信类型2:电机反馈数据
- 功能: 电机状态反馈
- 发送帧: 电机主动发送
- 数据格式:
- Byte0
1: 当前角度 [065535] 对应 (-12.57f~12.57f) rad - Byte2
3: 当前角速度 [065535] 对应 (-50rad/s~50rad/s) - Byte4
5: 当前力矩 [065535] 对应 (-6Nm~6Nm) - Byte6~7: 当前温度 Temp(摄氏度)*10
- Bit8~Bit15: 当前电机CAN ID
- Bit16~21: 故障信息(0无 1有)
- bit21: 未标定
- bit20: 堵转过载故障
- bit19: 磁编码故障
- bit18: 过温
- bit17: 三相电流故障
- bit16: 欠压故障
- Bit22~23: 模式状态
- 0: Reset模式[复位]
- 1: Cali模式[标定]
- 2: Motor模式[运行]
- Byte0
- 注意: 数据高字节在前,低字节在后
通信类型3:电机使能运行
- 功能: 使能电机运行
- 发送帧:
- ID:
0x3(Bit28~24=3) - 数据:
00 FD 7F 00 00 00 00 00 00 00 - 说明: bit15
8为主机CAN_ID,bit70为目标电机CAN_ID
- ID:
- 应答帧: 通信类型2(电机反馈数据)
通信类型4:电机停止运行
- 功能: 停止电机运行
- 发送帧:
- ID:
0x4(Bit28~24=4) - 数据:
00 FD 7F 00 00 00 00 00 00 00 - 说明: 正常运行时data区需清0;Byte[0]=1时:清故障
- ID:
- 应答帧: 通信类型2(电机反馈数据)
通信类型6:设置电机机械零位
- 功能: 设置当前位置为零位
- 发送帧:
- ID:
0x6(Bit28~24=6) - 数据:
00 FD 7F 01 00 00 00 00 00 00 - 说明: Byte[0]=1
- ID:
- 应答帧: 通信类型2(电机反馈数据)
- 注意: CSP和运控模式下可以标零,PP模式标零会屏蔽掉
通信类型7:设置电机CAN_ID
- 功能: 更改当前电机CAN_ID,立即生效
- 发送帧:
- ID:
0x7(Bit28~24=7) - 数据:
01 FD 7F [新CAN_ID] 00 00 00 00 00 - 说明: Bit16~23为预设置CAN_ID
- ID:
- 应答帧: 通信类型0(获取设备ID)
通信类型17:单个参数读取
- 功能: 读取电机单个参数
- 发送帧:
- ID:
0x11(Bit28~24=17) - 数据:
00 FD 7F [Byte0~1: index] 00 00 00 00 00 - 说明: index为参数索引,详见可读写参数表,数据低字节在前,高字节在后
- ID:
- 应答帧:
- ID:
0x11 - 数据:
00 7F FD [Byte0~1: index] 00 [Byte4~7: 参数数据] - 说明: Bit23~16: 00为读取成功,01为读取失败
- ID:
通信类型18:单个参数写入(掉电丢失)
- 功能: 写入电机单个参数(需配合类型22保存)
- 发送帧:
- ID:
0x12(Bit28~24=18) - 数据:
00 FD 7F [Byte0~1: index] 00 [Byte4~7: 参数数据] - 说明: 数据低字节在前,高字节在后
- ID:
- 应答帧: 通信类型2(电机反馈数据)
通信类型21:故障反馈帧
- 功能: 故障信息反馈
- 发送帧: 电机主动发送
- 数据格式:
- Byte0~3: fault值(非0:有故障,0:正常)
- Bit16: A相电流采样过流
- Bit14: 堵转过载算法保护
- Bit9: 位置初始化故障
- Bit8: 硬件识别故障
- Bit7: 编码器未标定
- Bit5: C相电流采样过流
- Bit4: B相电流采样过流
- Bit3: 过压故障(超过60V)
- Bit2: 欠压故障(低于12V)
- Bit1: 驱动芯片故障
- Bit0: 电机过温故障(超过145度)
- Byte4~7: warning值
- Bit0: 电机过温预警
- Byte0~3: fault值(非0:有故障,0:正常)
通信类型22:电机数据保存帧
- 功能: 保存当前所有可存储变量
- 发送帧:
- ID:
0x16(Bit28~24=22) - 数据:
00 FD 7F 01 02 03 04 05 06 07 08 - 说明: 保存通过类型18写入的参数
- ID:
- 应答帧: 通信类型2(电机反馈数据)
通信类型23:电机波特率修改帧
- 功能: 修改CAN总线波特率(重新上电生效)
- 发送帧:
- ID:
0x17(Bit28~24=23) - 数据:
00 FD 7F 01 02 03 04 05 06 [F_CMD] 00 - F_CMD说明:
- 01: 1Mbps
- 02: 500Kbps
- 03: 250Kbps
- 04: 125Kbps
- ID:
- 应答帧: 通信类型0(获取设备ID)
通信类型24:电机主动上报帧
- 功能: 开启/关闭电机主动上报(部分型号支持)
- 发送帧:
- ID:
0x18(Bit28~24=24) - 数据:
00 FD 7F 01 02 03 04 05 06 [F_CMD] 00 - F_CMD说明:
- 00: 关闭主动上报(默认)
- 01: 开启主动上报(默认上报间隔10ms)
- ID:
- 应答帧: 通信类型2(电机反馈数据)
- 注意: 上报间隔可通过类型18修改EPScan_time参数来更改
通信类型25:电机协议修改帧
- 功能: 切换电机通信协议(重新上电生效)
- 发送帧:
- ID:
0x19(Bit28~24=25) - 数据:
00 FD 7F 01 02 03 04 05 06 [F_CMD] 00 - F_CMD说明:
- 0: 私有协议(默认)
- 1: CANopen协议
- 2: MIT协议
- ID:
- 应答帧: 通信类型0(获取设备ID)
通信类型26:版本号读取帧
- 功能: 读取电机版本号
- 发送帧:
- ID:
0x1A(Bit28~24=26) - 数据:
00 FD 7F 00 C4 00 00 00 00 00 - 说明: Byte[0]=0x00, Byte[1]=0xC4
- ID:
- 应答帧:
- ID:
0x2 - 数据:
00 7F FD 00 C4 [Byte2~6: 电机版本号] - 说明: 版本号顺序由高到低
- ID:
1.2 可读写参数列表
| 参数index | 参数名称 | 描述 | 类型 | 字节数 | 单位/说明 | R/W |
|---|---|---|---|---|---|---|
| 0X7005 | run_mode | 运行模式 | uint8 | 1 | 0:运控 1:PP 2:速度 3:电流 5:CSP | W/R |
| 0X7006 | iq_ref | 电流模式Iq指令 | float | 4 | 见下表(各型号不同) | W/R |
| 0X700A | spd_ref | 转速模式转速指令 | float | 4 | 见下表(各型号不同) | W/R |
| 0X700B | limit_torque | 转矩限制 | float | 4 | 见下表(各型号不同) | W/R |
| 0X7010 | cur_kp | 电流的Kp | float | 4 | 默认值0.17 | W/R |
| 0X7011 | cur_ki | 电流的Ki | float | 4 | 默认值0.012 | W/R |
| 0X7014 | cur_filt_gain | 电流滤波系数 | float | 4 | 0~1.0,默认值0.1 | W/R |
| 0X7016 | loc_ref | 位置模式角度指令 | float | 4 | rad | W/R |
| 0X7017 | limit_spd | 位置模式(CSP)速度限制 | float | 4 | 见下表(各型号不同) | W/R |
| 0X7018 | limit_cur | 速度位置模式电流限制 | float | 4 | 见下表(各型号不同) | W/R |
| 0x7019 | mechPos | 负载端计圈机械角度 | float | 4 | rad | R |
| 0x701A | iqf | iq滤波值 | float | 4 | 见下表(各型号不同) | R |
| 0x701B | mechVel | 负载端转速 | float | 4 | 见下表(各型号不同) | R |
| 0x701C | VBUS | 母线电压 | float | 4 | V | R |
| 0x701E | loc_kp | 位置的kp | float | 4 | 默认值40 | W/R |
| 0x701F | spd_kp | 速度的kp | float | 4 | 默认值6 | W/R |
| 0x7020 | spd_ki | 速度的ki | float | 4 | 默认值0.02 | W/R |
| 0x7021 | spd_filt_gain | 速度滤波值 | float | 4 | 默认值0.1 | W/R |
| 0x7022 | acc_rad | 速度模式加速度 | float | 4 | 默认值20rad/s^2 | W/R |
| 0x7024 | vel_max | 位置模式(PP)速度 | float | 4 | 默认值10rad/s | W/R |
| 0x7025 | acc_set | 位置模式(PP)加速度 | float | 4 | 默认值10rad/s^2 | W/R |
| 0x7026 | EPScan_time | 上报时间设置 | uint16 | 2 | 1代表10ms,加1递增5ms | W/R |
| 0x7028 | canTimeout | can超时阀值 | uint32 | 4 | 20000代表1s,默认0 | W/R |
| 0x7029 | zero_sta | 零点标志位 | uint8 | 1 | 0代表0-2π,1代表-π-π | W/R |
| 0x702B | add_offset | 零位偏置 | float | 4 | 默认0 | W/R |
各型号参数范围差异表
⚠️ 重要提示: 不同型号电机的参数范围存在显著差异,使用时务必参考对应型号的参数范围!
电机规格参数对照表
| 电机型号 | 额定负载 | 峰值负载 | 减速比 | 额定相电流 | 最大相电流 |
|---|---|---|---|---|---|
| EL05 | 1.8 N.m | 6 N.m | 9:1 | 2.6Apk | 11Apk |
| RS00 | 5 N.m | 14 N.m | 10:1 | 4.7Apk | 15.5Apk |
| RS01 | 6 N.m | 17 N.m | 7.75:1 | 7Apk | 23Apk |
| RS02 | 6 N.m | 17 N.m | 7.75:1 | 7Apk | 23Apk |
| RS03 | 20 N.m | 60 N.m | 9:1 | 13Apk | 27Apk |
| RS04 | 40 N.m | 120 N.m | 9:1 | 27Apk | 45Apk |
| EL05 | 1.6 N.m | 6 N.m | 7.75:1 | 2.4Apk | 10Apk |
| RS06 | 11 N.m | 36 N.m | 9:1 | 14.3Apk | 27Apk |
通信数据映射范围对照表(私有协议)
| 电机型号 | 力矩范围 (T_MIN~T_MAX) | 速度范围 (V_MIN~V_MAX) | 角度范围 (P_MIN~P_MAX) |
|---|---|---|---|
| EL05 | -6Nm ~ 6Nm | -50rad/s ~ 50rad/s | -12.57rad ~ 12.57rad |
| RS00 | -14Nm ~ 14Nm | -33rad/s ~ 33rad/s | -12.57rad ~ 12.57rad |
| RS01 | -17Nm ~ 17Nm | -44rad/s ~ 44rad/s | -12.57rad ~ 12.57rad |
| RS02 | -17Nm ~ 17Nm | -44rad/s ~ 44rad/s | -12.57rad ~ 12.57rad |
| RS03 | -60Nm ~ 60Nm | -20rad/s ~ 20rad/s | -12.57rad ~ 12.57rad |
| RS04 | -120Nm ~ 120Nm | -15rad/s ~ 15rad/s | -12.57rad ~ 12.57rad |
| EL05 | -6Nm ~ 6Nm | -50rad/s ~ 50rad/s | -12.57rad ~ 12.57rad |
| RS06 | -36Nm ~ 36Nm | -50rad/s ~ 50rad/s | -12.57rad ~ 12.57rad |
运控模式Kp/Kd范围对照表
| 电机型号 | Kp范围 (KP_MIN~KP_MAX) | Kd范围 (KD_MIN~KD_MAX) |
|---|---|---|
| EL05 | 0 ~ 500 | 0 ~ 5 |
| RS00 | 0 ~ 500 | 0 ~ 5 |
| RS01 | 0 ~ 500 | 0 ~ 5 |
| RS02 | 0 ~ 500 | 0 ~ 5 |
| RS03 | 0 ~ 5000 | 0 ~ 100 |
| RS04 | 0 ~ 5000 | 0 ~ 100 |
| EL05 | 0 ~ 500 | 0 ~ 5 |
| RS06 | 0 ~ 5000 | 0 ~ 100 |
参数limit_torque范围对照表
| 电机型号 | limit_torque 范围 |
|---|---|
| EL05 | 0 ~ 6 Nm |
| RS00 | 0 ~ 14 Nm |
| RS01 | 0 ~ 17 Nm |
| RS02 | 0 ~ 17 Nm |
| RS03 | 0 ~ 60 Nm |
| RS04 | 0 ~ 120 Nm |
| EL05 | 0 ~ 6 Nm |
| RS06 | 0 ~ 36 Nm |
参数limit_spd/spd_ref范围对照表
| 电机型号 | limit_spd / spd_ref 范围 |
|---|---|
| EL05 | 0 ~ 50 rad/s |
| RS00 | 0 ~ 33 rad/s |
| RS01 | 0 ~ 44 rad/s |
| RS02 | 0 ~ 44 rad/s |
| RS03 | 0 ~ 20 rad/s |
| RS04 | 0 ~ 15 rad/s |
| EL05 | 0 ~ 50 rad/s |
| RS06 | 0 ~ 50 rad/s |
参数limit_cur/iq_ref/iqf范围对照表
| 电机型号 | limit_cur / iq_ref / iqf 范围 |
|---|---|
| EL05 | 0 ~ 11 A |
| RS00 | 0 ~ 15.5 A |
| RS01 | 0 ~ 23 A |
| RS02 | 0 ~ 23 A |
| RS03 | 0 ~ 27 A |
| RS04 | 0 ~ 45 A |
| EL05 | 0 ~ 10 A |
| RS06 | 0 ~ 27 A |
数据映射转换宏定义示例(C语言)
// EL05 / EL05
#define P_MIN -12.57f
#define P_MAX 12.57f
#define V_MIN -50.0f
#define V_MAX 50.0f
#define KP_MIN 0.0f
#define KP_MAX 500.0f
#define KD_MIN 0.0f
#define KD_MAX 5.0f
#define T_MIN -6.0f // EL05: -6
#define T_MAX 6.0f // EL05: 6
// RS00
#define V_MIN -33.0f
#define V_MAX 33.0f
#define T_MIN -14.0f
#define T_MAX 14.0f
// RS01 / RS02
#define V_MIN -44.0f
#define V_MAX 44.0f
#define T_MIN -17.0f
#define T_MAX 17.0f
// RS03
#define V_MIN -20.0f
#define V_MAX 20.0f
#define KP_MAX 5000.0f
#define KD_MAX 100.0f
#define T_MIN -60.0f
#define T_MAX 60.0f
// RS04
#define V_MIN -15.0f
#define V_MAX 15.0f
#define KP_MAX 5000.0f
#define KD_MAX 100.0f
#define T_MIN -120.0f
#define T_MAX 120.0f
// RS06
#define V_MIN -50.0f
#define V_MAX 50.0f
#define KP_MAX 5000.0f
#define KD_MAX 100.0f
#define T_MIN -36.0f
#define T_MAX 36.0f
版本兼容性说明:
- RS00: 固件版本0.0.2.6及之前P_MIN/P_MAX为±12.5,之后为±12.57
- RS01: 固件版本0.1.2.1及之前P_MIN/P_MAX为±12.5,之后为±12.57
- RS02: 固件版本0.2.2.11及之前P_MIN/P_MAX为±12.5,之后为±12.57
- RS03: 固件版本0.3.0.5及之前P_MIN/P_MAX为±12.5,之后为±12.57
- RS04: 固件版本0.4.0.5及之前P_MIN/P_MAX为±12.5,之后为±12.57
1.3 控制模式使用说明
运控模式
- 电机上电后默认处于运控模式
- 发送电机使能运行帧(通信类型3)
- 发送运控模式电机控制指令(通信类型1)
- 收到电机反馈帧(通信类型2)
电流模式
- 发送电机模式参数写入命令(通信类型18)设置runmode参数为3
- 发送电机使能运行帧(通信类型3)
- 发送电机模式参数写入命令(通信类型18)设置iq_ref参数为预设电流指令
速度模式
- 发送电机模式参数写入命令(通信类型18)设置runmode参数为2
- 发送电机使能运行帧(通信类型3)
- 发送电机模式参数写入命令(通信类型18)设置limit_cur参数为预设最大电流指令
- 发送电机模式参数写入命令(通信类型18)设置acc_rad参数为预设加速度指令
- 发送电机模式参数写入命令(通信类型18)设置spd_ref参数为预设速度指令
位置模式(CSP)
- 发送电机模式参数写入命令(通信类型18)设置runmode参数为5
- 发送电机使能运行帧(通信类型3)
- 发送电机模式参数写入命令(通信类型18)设置limit_spd参数为预设最大速度指令
- 发送电机模式参数写入命令(通信类型18)设置loc_ref参数为预设位置指令
位置模式(PP)
- 发送电机模式参数写入命令(通信类型18)设置runmode参数为1
- 发送电机使能运行帧(通信类型3)
- 发送电机模式参数写入命令(通信类型18)设置vel_max参数为预设最大速度指令
- 发送电机模式参数写入命令(通信类型18)设置acc_set参数为预设加速度指令
- 发送电机模式参数写入命令(通信类型18)设置loc_ref参数为预设位置指令
- 注意: 该模式不支持运行过程中改速度和加速度,如想急停可以在过程中将vel_max修改为0
停止运行
发送电机停止运行帧(通信类型4)
二、CANopen通信协议
CANopen是一个基于CAN总线的"高层协议",实现了OSI模型的第七层。
2.1 CANOpen协议报文分类
| 分类 | 作用 |
|---|---|
| NMT 网络管理报文 | 管理网络,切换节点的状态 |
| SDO 服务数据对象报文 | 设置设备参数,关键数据传输 |
| PDO 过程数据对象报文 | 传输设备的过程数据(温度、速度等) |
| EMCY 紧急报文 | 传输设备的故障信息 |
| SYNC 同步报文 | 同步数据,同步从站的TPDO数据 |
| NODE GUARDING 节点保护报文 | 主站请求从站的状态 |
| HeartBeat 心跳报文 | 设备主动发送心跳,表示在线 |
2.2 状态机说明
- SWITCH_ON_DISABLED: 电机初始上电状态
- OPERATION_ENABLE: 运行状态
- 通过修改controlword(6040)为6、7、15过渡到OPERATION_ENABLE状态
- 也可直接修改为15进入OPERATION_ENABLE状态
- 停止电机: 修改controlword(6040)为1,进入SWITCH_ON_DISABLED状态
- 急停: 修改controlword(6040)为11(慎用,易造成浪涌电压)
- 清除错误: 修改controlword(6040)可以清除常规错误
注意: 切换模式需要在失能状态下,请在进入OPERATION_ENABLE之前设置相应模式
2.3 状态反馈参数
| 索引 | 名称 | 属性 | 类型 | 单位 |
|---|---|---|---|---|
| 603F | Error_code | 可读 | UINTEGER16 | / |
| 6041 | Statusword | 可读 | UINTEGER16 | / |
| 6061 | Modes_of_operation_display | 可读 | INTEGER8 | / |
| 6062 | Position_demannd_value | 可读 | INTEGER32 | 脉冲,一圈对应16384脉冲 |
| 6064 | Position_actual_value | 可读 | INTEGER32 | 脉冲,一圈对应16384脉冲 |
| 606B | Velocity_demand_value | 可读 | INTEGER32 | 0.1rpm |
| 606C | Velocity_actual_value | 可读 | INTEGER32 | 0.1rpm |
| 6077 | Torque_actual_value | 可读 | INTEGER16 | 0.1%负载率,1000代表2N.m |
| 6078 | Current_actual_value | 可读 | INTEGER16 | mA |
| 6079 | DC_link_circuit_voltage | 可读 | INTEGER32 | mV |
2.4 归零模式(设置零位)
| 索引 | 名称 | 属性 | 类型 | 单位 |
|---|---|---|---|---|
| 6040 | controlword | 可读写 | UINTEGER16 | / |
| 6060 | Modes of operation | 可读写 | INTEGER8 | / |
标零方式: 电机在失能状态下设置Modes of operation为6,电机即会设置当前位置为零位 零点保持: 修改controlword为15,电机会在零位位置保持
2.5 位置模式(PP)
| 索引 | 名称 | 属性 | 类型 | 单位 |
|---|---|---|---|---|
| 6040 | controlword | 可读写 | UINTEGER16 | / |
| 6060 | Modes of operation | 可读写 | INTEGER8 | / |
| 6067 | Position_window | 可读写 | UINTEGER32 | 脉冲,一圈对应16384脉冲 |
| 6068 | Position_window_time | 可读写 | UINTEGER16 | ms |
| 6071 | Target_torque | 可读写 | INTEGER16 | 0.1%负载率,1000代表2N.m |
| 607A | Target_position | 可读写 | INTEGER32 | 脉冲,一圈对应16384脉冲 |
| 6081 | Profile_velocity | 可读写 | UINTEGER32 | 0.1rpm |
| 6083 | Profile_acceleration | 可读写 | UINTEGER32 | 0.1rpm/s |
步骤:
- 电机在失能状态下设置Modes of operation为1
- 设置Target_torque(位置模式下最大力矩绝对值,必设)
- 设置Profile_velocity(位置模式速度绝对值,必设)
- 设置Profile_acceleration(位置模式加速度绝对值,必设)
- 设置Position_window和Position_window_time(可选)
- 设置controlword为15
- 设置Target_position(绝对位置)即可到达指定位置
2.6 位置模式(CSP)
| 索引 | 名称 | 属性 | 类型 | 单位 |
|---|---|---|---|---|
| 6040 | controlword | 可读写 | UINTEGER16 | / |
| 6060 | Modes of operation | 可读写 | INTEGER8 | / |
| 6067 | Position_window | 可读写 | UINTEGER32 | 脉冲,一圈对应16384脉冲 |
| 6068 | Position_window_time | 可读写 | UINTEGER16 | ms |
| 6071 | Target_torque | 可读写 | INTEGER16 | 0.1%负载率,1000代表2N.m |
| 607A | Target_position | 可读写 | INTEGER32 | 脉冲,一圈对应16384脉冲 |
| 6081 | Profile_velocity | 可读写 | UINTEGER32 | 0.1rpm |
步骤:
- 电机在失能状态下设置Modes of operation为5
- 设置Target_torque(位置模式下最大力矩绝对值,必设)
- 设置Profile_velocity(位置模式速度绝对值,必设)
- 设置Position_window和Position_window_time(可选,0即不启用)
- 设置controlword为15
- 设置Target_position(绝对位置)即可到达指定位置
2.7 速度模式
| 索引 | 名称 | 属性 | 类型 | 单位 |
|---|---|---|---|---|
| 6040 | controlword | 可读写 | UINTEGER16 | / |
| 6060 | Modes of operation | 可读写 | INTEGER8 | / |
| 6071 | Target_torque | 可读写 | INTEGER16 | 0.1%负载率,1000代表2N.m |
| 60FF | Target_velocity | 可读写 | INTEGER32 | 0.1rpm |
步骤:
- 电机在失能状态下设置Modes of operation为3
- 设置Target_torque(位置模式下最大力矩绝对值,必设)
- 设置controlword为15
- 设置Target_velocity即可到达指定速度
2.8 力矩模式
| 索引 | 名称 | 属性 | 类型 | 单位 |
|---|---|---|---|---|
| 6040 | controlword | 可读写 | UINTEGER16 | / |
| 6060 | Modes of operation | 可读写 | INTEGER8 | / |
| 6071 | Target_torque | 可读写 | INTEGER16 | 0.1%负载率,1000代表2N.m |
步骤:
- 电机在失能状态下设置Modes of operation为4
- 设置controlword为15
- 设置Target_torque即可输出指定力矩
2.9 协议切换帧(扩展帧)
切换电机协议,重新上电生效
- ID:
0xFFF - 数据:
01 02 03 04 05 06 [F_CMD] - F_CMD说明:
- 0: 私有协议(默认)
- 1: CANopen协议
- 2: MIT协议
应答帧:
- ID: 电机id(11位标准帧)
- 数据: 64位MCU唯一标识符
三、MIT通信协议
MIT协议采用标准帧格式(11位ID),波特率默认1Mbps。
3.1 CAN ID结构(MIT协议标准帧)
11位ID结构:
Bit10~bit8: 模式类型
bit7~0: id(电机CAN_ID或主机CAN_ID)
3.2 支持的控制模式
- MIT模式: 给定电机运控5个参数
- 速度模式: 给定电机指定的运行速度
- 位置模式: 给定电机指定的位置和速度,电机将以过程速度运行到该指定的位置
3.3 指令列表
应答指令1
- ID:
0xFD(主机id) - 数据格式:
- Byte0: 电机canid
- Byte1
2: 当前角度 [065535] 对应 (-12.57rad~12.57rad) - Byte3为高8位,Byte4[7-4](高4位)为低4位: 当前速度 [0
4096] 对应 (-50rad/s50rad/s) - Byte4[3-0](低4位)为高4位,Byte5为低8位: 当前力矩 [0
4096] 对应 (-6N.m6N.m) - Byte6~7: 绕组温度 Temp(摄氏度)*10,单位度
应答指令2
- ID: 电机id
- 数据: 64位MCU唯一标识符
指令1:电机使能运行
- ID:
0x7F(目标电机canid) - 数据:
FF FF FF FF FF FF FF FC - 应答帧: 应答指令1
指令2:电机停止运行
- ID:
0x7F(目标电机canid) - 数据:
FF FF FF FF FF FF FF FD - 应答帧: 应答指令1
指令3:电机MIT动态参数
- ID:
0x7F(目标电机canid) - 数据格式:
- Byte0
1: 目标角度 [065535] 对应 (-12.57rad~12.57rad) - Byte2为高8位,Byte3[7-4](高4位)为低4位: 目标速度 [0
4096] 对应 (-50rad/s50rad/s) - Byte3[3-0](低4位)为高4位,Byte4为低8位: kp [0~4096] 对应 (0-500)
- Byte5为其高8位,Byte6[7-4](高4位)为其低4位: kd [0~4096] 对应 (0-5)
- Byte6[3-0](低4位)为高4位,Byte7为低8位: 目标力矩 [0
4096] 对应 (-6N.m6N.m)
- Byte0
- 应答帧: 应答指令1
指令4:设置零点(非位置模式)
- ID:
0x7F(目标电机canid) - 数据:
FF FF FF FF FF FF FF FE - 应答帧: 应答指令1
指令5:清除错误及读取异常状态
- ID:
0x7F(目标电机canid) - 数据:
FF FF FF FF FF FF [F_CMD] FB- F_CMD = 0xFF: 消除当前的异常
- F_CMD = 其他值: 在回复中的BYTE1中回传错误值
- 清错应答帧: 应答指令1
- 异常状态应答帧:
- ID:
0xFD(主机id) - Byte0: 电机canid
- Byte1~4: fault值(非0:有故障,0:正常)
- Bit16: A相电流采样过流
- Bit14: 堵转过载算法保护
- Bit9: 位置初始化故障
- Bit8: 硬件识别故障
- Bit7: 编码器未标定
- Bit5: C相电流采样过流
- Bit4: B相电流采样过流
- Bit3: 过压故障(超过60V)
- Bit2: 欠压故障(低于12V)
- Bit1: 驱动芯片故障
- Bit0: 电机过温故障(超过145度)
- ID:
指令6:设置运行模式
- ID:
0x7F(目标电机canid) - 数据:
FF FF FF FF FF FF [F_CMD] FC- F_CMD说明:
- 0: MIT模式(默认)
- 1: 位置模式
- 2: 速度模式
- F_CMD说明:
- 应答帧: 应答指令1
指令7:修改电机CANID
- ID:
0x7F(目标电机canid) - 数据:
FF FF FF FF FF FF [F_CMD] FA- F_CMD: 目标修改的电机id
- 应答帧: 应答指令2
指令8:修改电机协议
切换电机协议,重新上电生效
- ID:
0x7F(目标电机canid) - 数据:
FF FF FF FF FF FF [F_CMD] FD- F_CMD说明:
- 0: 私有协议(默认)
- 1: CANopen协议
- 2: MIT协议
- F_CMD说明:
- 应答帧: 应答指令2
指令9:修改主机canid
- ID:
0x7F(目标电机canid) - 数据:
FF FF FF FF FF FF [F_CMD] 01- F_CMD: 为主机canid
- 应答帧: 应答指令2
指令10:位置模式控制指令
- ID:
0x17F(Bit108=1,bit70=目标电机canid) - 数据格式:
- Byte0~3: 目标位置,单位rad,32位单精度float
- Byte4~7: 目标速度,单位rad/s,32位单精度float
- 应答帧: 应答指令1
指令11:速度模式控制指令
- ID:
0x27F(Bit108=2,bit70=目标电机canid) - 数据格式:
- Byte0~3: 目标速度,单位rad/s,32位单精度float
- Byte4~7: 速度位置模式电流限制,单位A,32位单精度float
- 应答帧: 应答指令1
3.4 控制模式使用说明
运控模式
- 电机上电后默认处于运控模式
- 发送电机使能运行帧(指令1)
- 发送运控模式电机控制指令(指令3)
- 发送电机停止帧(指令2)
速度模式
- 发送电机模式参数写入命令(指令6)设置模式为2
- 发送电机使能运行帧(指令1)
- 发送电机模式参数写入命令(指令11)设置最大电流(绝对值)和预设速度
- 发送电机停止帧(指令2)
位置模式(CSP)
- 发送电机模式参数写入命令(指令6)设置模式为1
- 发送电机使能运行帧(指令1)
- 发送电机模式参数写入命令(指令10)设置最大速度(绝对值)和预设位置
- 发送电机停止帧(指令2)
四、协议切换说明
4.1 切换方法
- 通过上位机修改: 修改protocol_1标志位或发送通信类型25(私有协议)即可切换协议
- 通过CAN盒操作: 切换协议后,需要通过can盒发送相应通信协议的切换协议指令进行切换
- CANopen协议: 发送扩展帧的协议切换帧
- MIT协议: 发送标准帧的指令8
4.2 生效方式
重新上电生效: 协议切换后需要重新上电才能生效
4.3 CAN ID一致性
- CANopen协议: canopen的id与私有协议下的canid保持一致
- MIT协议: 使用标准帧,id为电机CAN_ID
五、故障说明
5.1 故障位定义
故障信息通过通信类型2的Bit1621或通信类型21的Byte03反馈:
| 位 | 故障名称 | 说明 |
|---|---|---|
| Bit0 | 电机过温故障 | 电机热敏电阻温度超过145度 |
| Bit1 | 驱动芯片故障 | 电机驱动芯片报故障 |
| Bit2 | 欠压故障 | 电机电压低于保护电压12V |
| Bit3 | 过压故障 | 电机电压超过保护电压60V |
| Bit4 | B相电流故障 | B相电流采样过流 |
| Bit5 | C相电流故障 | C相电流采样过流 |
| Bit7 | 编码器未标定 | 电机未标定编码器 |
| Bit8 | 硬件识别故障 | 硬件识别故障 |
| Bit9 | 位置初始化故障 | 位置初始化故障 |
| Bit14 | 堵转过载算法保护 | 电机堵转过载算法保护 |
| Bit16 | A相电流故障 | A相电流采样过流 |
5.2 警告位定义
| 位 | 警告名称 | 说明 |
|---|---|---|
| Bit0 | 电机过温预警 | 默认145度 |
六、特殊功能说明
6.1 主动上报
- 默认状态: 关闭
- 开启方式: 通过通信类型24开启上报
- 上报类型: 通信类型2(电机反馈数据)
- 上报间隔: 默认10ms,可通过通信类型18修改EPScan_time参数来更改
- 最小间隔: 10ms
6.2 零点标志位
- 参数: zero_sta(0x7029)
- 说明:
- 0: 上电后默认位置为0-2π(默认)
- 1: 上电后默认位置为-π-π
- 修改方式: 通过上位机或通信类型18修改,通过通信类型18修改需要用通信类型22保存
6.3 类型2变更说明
类型2变更为周期性循环-4π-4π,可通过该方式记圈数。
位置接口变更:
- P_MIN: -12.57f
- P_MAX: 12.57f
6.4 CAN超时保护
- 参数: CAN_TIMEOUT(canTimeout,0x7028)
- 说明:
- 值为0时: 该功能不启用
- 值为非0时: 当电机在一定时间段内没收到can指令时,电机进入reset模式
- 20000代表1s
6.5 标零功能
- 支持模式: CSP和运控模式下可以标零
- 限制: PP模式标零会屏蔽掉
- 说明: 新版本电机在CSP和运控模式下标零,电机期望会马上更新为0,这样电机不会运动
七、数据转换说明
7.1 数据字节序
- 私有协议: 大部分数据高字节在前,低字节在后
- 参数读写: 数据低字节在前,高字节在后
- MIT协议: 按指令说明
7.2 数据范围映射
⚠️ 重要: 各型号电机的数据映射范围不同,详见 1.2 可读写参数列表 中的各型号参数范围差异表。
通用映射规则
| 数据类型 | 原始值范围 | 映射方式 | 备注 |
|---|---|---|---|
| 角度(私有协议16位) | 0~65535 | 线性映射到 P_MIN~P_MAX | 各型号统一为 ±12.57rad |
| 角速度(私有协议16位) | 0~65535 | 线性映射到 V_MIN~V_MAX | 各型号不同,见差异表 |
| 力矩(私有协议16位) | 0~65535 | 线性映射到 T_MIN~T_MAX | 各型号不同,见差异表 |
| Kp(私有协议16位) | 0~65535 | 线性映射到 KP_MIN~KP_MAX | 小型号0 |
| Kd(私有协议16位) | 0~65535 | 线性映射到 KD_MIN~KD_MAX | 小型号0 |
| 角度(MIT协议12位) | 0~65535 | 线性映射到 P_MIN~P_MAX | ±12.57rad |
| 角速度(MIT协议12位) | 0~4096 | 线性映射到 V_MIN~V_MAX | 各型号不同 |
| 力矩(MIT协议12位) | 0~4096 | 线性映射到 T_MIN~T_MAX | 各型号不同 |
| Kp(MIT协议12位) | 0~4096 | 线性映射到 KP_MIN~KP_MAX | 各型号不同 |
| Kd(MIT协议12位) | 0~4096 | 线性映射到 KD_MIN~KD_MAX | 各型号不同 |
各型号数据映射快速参考
| 电机型号 | 力矩范围 | 速度范围 | Kp范围 | Kd范围 |
|---|---|---|---|---|
| EL05 | ±6Nm | ±50rad/s | 0~500 | 0~5 |
| RS00 | ±14Nm | ±33rad/s | 0~500 | 0~5 |
| RS01 | ±17Nm | ±44rad/s | 0~500 | 0~5 |
| RS02 | ±17Nm | ±44rad/s | 0~500 | 0~5 |
| RS03 | ±60Nm | ±20rad/s | 0~5000 | 0~100 |
| RS04 | ±120Nm | ±15rad/s | 0~5000 | 0~100 |
| EL05 | ±6Nm | ±50rad/s | 0~500 | 0~5 |
| RS06 | ±36Nm | ±50rad/s | 0~5000 | 0~100 |
温度映射
- 格式: Temp(摄氏度)*10
- 示例: 温度25.5度 = 255
数据转换函数
// 浮点数转无符号整数(用于发送)
int float_to_uint(float x, float x_min, float x_max, int bits) {
float span = x_max - x_min;
float offset = x_min;
if (x > x_max) x = x_max;
else if (x < x_min) x = x_min;
return (int)((x - offset) * ((float)((1 << bits) - 1)) / span);
}
// 无符号整数转浮点数(用于接收)
float uint_to_float(int x_int, float x_min, float x_max, int bits) {
float span = x_max - x_min;
float offset = x_min;
return ((float)x_int) * span / ((float)((1 << bits) - 1)) + offset;
}
7.3 浮点数格式
- IEEE-754标准: 32位单精度浮点数
- 字节序: 按协议要求(低字节在前或高字节在前)
八、版本说明
本文档基于以下版本说明书整理:
- EL05使用说明书251210
- RS00使用说明书251210
- RS01使用说明书251210
- RS02使用说明书251210
- RS03使用说明书251210
- RS04使用说明书251210
- EL05使用说明书251210
- RS06使用说明书251210
注意: 不同型号的电机在某些细节上可能有差异,具体请参考对应型号的详细说明书。如无某些功能,请访问官网git升级最新版本。
九、参考资料
- 官方网站: https://www.robstride.com/
- 下载中心: www.robstride.com(可下载EDS文件等)
- 技术支持: 请通过官方网站联系技术支持
文档生成日期: 2025年12月29日 文档版本: 1.0