[release] 发布8DOF串联足中期检查版本

This commit is contained in:
2026-07-21 12:18:00 +08:00
commit 0b91dfffe6
265 changed files with 170023 additions and 0 deletions
+880
View File
@@ -0,0 +1,880 @@
# 灵足时代电机通信协议汇总
本文档汇总了灵足时代(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_IDbit7~0为目标电机CAN_ID
- **应答帧**:
- ID: `0x0`
- 数据: `00 7F FE [64位MCU唯一标识符]`
- 说明: 返回64位MCU唯一标识符
#### 通信类型1:运控模式电机控制指令
- **功能**: 运控模式下的电机控制
- **发送帧**:
- ID: `0x1` (Bit28~24=1)
- 数据: `[Byte0~1: 目标角度] [Byte2~3: 目标角速度] [Byte4~5: Kp] [Byte6~7: Kd]`
- 数据范围:
- 角度: 0~65535 对应 (-12.57f~12.57f) rad
- 角速度: 0~65535 对应 (-50rad/s~50rad/s)
- Kp: 0~65535 对应 (0.0~500.0)
- Kd: 0~65535 对应 (0.0~5.0)
- 注意: 数据高字节在前,低字节在后
- **应答帧**: 通信类型2(电机反馈数据)
#### 通信类型2:电机反馈数据
- **功能**: 电机状态反馈
- **发送帧**: 电机主动发送
- **数据格式**:
- Byte0~1: 当前角度 [0~65535] 对应 (-12.57f~12.57f) rad
- Byte2~3: 当前角速度 [0~65535] 对应 (-50rad/s~50rad/s)
- Byte4~5: 当前力矩 [0~65535] 对应 (-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模式[运行]
- **注意**: 数据高字节在前,低字节在后
#### 通信类型3:电机使能运行
- **功能**: 使能电机运行
- **发送帧**:
- ID: `0x3` (Bit28~24=3)
- 数据: `00 FD 7F 00 00 00 00 00 00 00`
- 说明: bit15~8为主机CAN_IDbit7~0为目标电机CAN_ID
- **应答帧**: 通信类型2(电机反馈数据)
#### 通信类型4:电机停止运行
- **功能**: 停止电机运行
- **发送帧**:
- ID: `0x4` (Bit28~24=4)
- 数据: `00 FD 7F 00 00 00 00 00 00 00`
- 说明: 正常运行时data区需清0;Byte[0]=1时:清故障
- **应答帧**: 通信类型2(电机反馈数据)
#### 通信类型6:设置电机机械零位
- **功能**: 设置当前位置为零位
- **发送帧**:
- ID: `0x6` (Bit28~24=6)
- 数据: `00 FD 7F 01 00 00 00 00 00 00`
- 说明: Byte[0]=1
- **应答帧**: 通信类型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
- **应答帧**: 通信类型0(获取设备ID)
#### 通信类型17:单个参数读取
- **功能**: 读取电机单个参数
- **发送帧**:
- ID: `0x11` (Bit28~24=17)
- 数据: `00 FD 7F [Byte0~1: index] 00 00 00 00 00`
- 说明: index为参数索引,详见可读写参数表,数据低字节在前,高字节在后
- **应答帧**:
- ID: `0x11`
- 数据: `00 7F FD [Byte0~1: index] 00 [Byte4~7: 参数数据]`
- 说明: Bit23~16: 00为读取成功,01为读取失败
#### 通信类型18:单个参数写入(掉电丢失)
- **功能**: 写入电机单个参数(需配合类型22保存)
- **发送帧**:
- ID: `0x12` (Bit28~24=18)
- 数据: `00 FD 7F [Byte0~1: index] 00 [Byte4~7: 参数数据]`
- 说明: 数据低字节在前,高字节在后
- **应答帧**: 通信类型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: 电机过温预警
#### 通信类型22:电机数据保存帧
- **功能**: 保存当前所有可存储变量
- **发送帧**:
- ID: `0x16` (Bit28~24=22)
- 数据: `00 FD 7F 01 02 03 04 05 06 07 08`
- 说明: 保存通过类型18写入的参数
- **应答帧**: 通信类型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
- **应答帧**: 通信类型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)
- **应答帧**: 通信类型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协议
- **应答帧**: 通信类型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: `0x2`
- 数据: `00 7F FD 00 C4 [Byte2~6: 电机版本号]`
- 说明: 版本号顺序由高到低
### 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语言)
```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 控制模式使用说明
#### 运控模式
1. 电机上电后默认处于运控模式
2. 发送电机使能运行帧(通信类型3
3. 发送运控模式电机控制指令(通信类型1)
4. 收到电机反馈帧(通信类型2
#### 电流模式
1. 发送电机模式参数写入命令(通信类型18)设置runmode参数为3
2. 发送电机使能运行帧(通信类型3
3. 发送电机模式参数写入命令(通信类型18)设置iq_ref参数为预设电流指令
#### 速度模式
1. 发送电机模式参数写入命令(通信类型18)设置runmode参数为2
2. 发送电机使能运行帧(通信类型3
3. 发送电机模式参数写入命令(通信类型18)设置limit_cur参数为预设最大电流指令
4. 发送电机模式参数写入命令(通信类型18)设置acc_rad参数为预设加速度指令
5. 发送电机模式参数写入命令(通信类型18)设置spd_ref参数为预设速度指令
#### 位置模式(CSP
1. 发送电机模式参数写入命令(通信类型18)设置runmode参数为5
2. 发送电机使能运行帧(通信类型3
3. 发送电机模式参数写入命令(通信类型18)设置limit_spd参数为预设最大速度指令
4. 发送电机模式参数写入命令(通信类型18)设置loc_ref参数为预设位置指令
#### 位置模式(PP
1. 发送电机模式参数写入命令(通信类型18)设置runmode参数为1
2. 发送电机使能运行帧(通信类型3
3. 发送电机模式参数写入命令(通信类型18)设置vel_max参数为预设最大速度指令
4. 发送电机模式参数写入命令(通信类型18)设置acc_set参数为预设加速度指令
5. 发送电机模式参数写入命令(通信类型18)设置loc_ref参数为预设位置指令
6. **注意**: 该模式不支持运行过程中改速度和加速度,如想急停可以在过程中将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**: 运行状态
- 通过修改controlword6040)为6、7、15过渡到OPERATION_ENABLE状态
- 也可直接修改为15进入OPERATION_ENABLE状态
- **停止电机**: 修改controlword6040)为1,进入SWITCH_ON_DISABLED状态
- **急停**: 修改controlword6040)为11(慎用,易造成浪涌电压)
- **清除错误**: 修改controlword6040)可以清除常规错误
**注意**: 切换模式需要在失能状态下,请在进入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 |
**步骤**:
1. 电机在失能状态下设置Modes of operation为1
2. 设置Target_torque(位置模式下最大力矩绝对值,必设)
3. 设置Profile_velocity(位置模式速度绝对值,必设)
4. 设置Profile_acceleration(位置模式加速度绝对值,必设)
5. 设置Position_window和Position_window_time(可选)
6. 设置controlword为15
7. 设置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 |
**步骤**:
1. 电机在失能状态下设置Modes of operation为5
2. 设置Target_torque(位置模式下最大力矩绝对值,必设)
3. 设置Profile_velocity(位置模式速度绝对值,必设)
4. 设置Position_window和Position_window_time(可选,0即不启用)
5. 设置controlword为15
6. 设置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 |
**步骤**:
1. 电机在失能状态下设置Modes of operation为3
2. 设置Target_torque(位置模式下最大力矩绝对值,必设)
3. 设置controlword为15
4. 设置Target_velocity即可到达指定速度
### 2.8 力矩模式
| 索引 | 名称 | 属性 | 类型 | 单位 |
|------|------|------|------|------|
| 6040 | controlword | 可读写 | UINTEGER16 | / |
| 6060 | Modes of operation | 可读写 | INTEGER8 | / |
| 6071 | Target_torque | 可读写 | INTEGER16 | 0.1%负载率,1000代表2N.m |
**步骤**:
1. 电机在失能状态下设置Modes of operation为4
2. 设置controlword为15
3. 设置Target_torque即可输出指定力矩
### 2.9 协议切换帧(扩展帧)
切换电机协议,重新上电生效
- **ID**: `0xFFF`
- **数据**: `01 02 03 04 05 06 [F_CMD]`
- **F_CMD说明**:
- 0: 私有协议(默认)
- 1: CANopen协议
- 2: MIT协议
**应答帧**:
- **ID**: 电机id11位标准帧)
- **数据**: 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: 当前角度 [0~65535] 对应 (-12.57rad~12.57rad)
- Byte3为高8位,Byte4[7-4](高4位)为低4位: 当前速度 [0~4096] 对应 (-50rad/s~50rad/s)
- Byte4[3-0](低4位)为高4位,Byte5为低8位: 当前力矩 [0~4096] 对应 (-6N.m~6N.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: 目标角度 [0~65535] 对应 (-12.57rad~12.57rad)
- Byte2为高8位,Byte3[7-4](高4位)为低4位: 目标速度 [0~4096] 对应 (-50rad/s~50rad/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.m~6N.m)
- **应答帧**: 应答指令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度)
#### 指令6:设置运行模式
- **ID**: `0x7F`(目标电机canid
- **数据**: `FF FF FF FF FF FF [F_CMD] FC`
- F_CMD说明:
- 0: MIT模式(默认)
- 1: 位置模式
- 2: 速度模式
- **应答帧**: 应答指令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协议
- **应答帧**: 应答指令2
#### 指令9:修改主机canid
- **ID**: `0x7F`(目标电机canid
- **数据**: `FF FF FF FF FF FF [F_CMD] 01`
- F_CMD: 为主机canid
- **应答帧**: 应答指令2
#### 指令10:位置模式控制指令
- **ID**: `0x17F`Bit10~8=1bit7~0=目标电机canid
- **数据格式**:
- Byte0~3: 目标位置,单位rad32位单精度float
- Byte4~7: 目标速度,单位rad/s32位单精度float
- **应答帧**: 应答指令1
#### 指令11:速度模式控制指令
- **ID**: `0x27F`Bit10~8=2bit7~0=目标电机canid
- **数据格式**:
- Byte0~3: 目标速度,单位rad/s32位单精度float
- Byte4~7: 速度位置模式电流限制,单位A,32位单精度float
- **应答帧**: 应答指令1
### 3.4 控制模式使用说明
#### 运控模式
1. 电机上电后默认处于运控模式
2. 发送电机使能运行帧(指令1
3. 发送运控模式电机控制指令(指令3
4. 发送电机停止帧(指令2
#### 速度模式
1. 发送电机模式参数写入命令(指令6)设置模式为2
2. 发送电机使能运行帧(指令1
3. 发送电机模式参数写入命令(指令11)设置最大电流(绝对值)和预设速度
4. 发送电机停止帧(指令2
#### 位置模式(CSP
1. 发送电机模式参数写入命令(指令6)设置模式为1
2. 发送电机使能运行帧(指令1
3. 发送电机模式参数写入命令(指令10)设置最大速度(绝对值)和预设位置
4. 发送电机停止帧(指令2
## 四、协议切换说明
### 4.1 切换方法
1. **通过上位机修改**: 修改protocol_1标志位或发送通信类型25(私有协议)即可切换协议
2. **通过CAN盒操作**: 切换协议后,需要通过can盒发送相应通信协议的切换协议指令进行切换
- CANopen协议: 发送扩展帧的协议切换帧
- MIT协议: 发送标准帧的指令8
### 4.2 生效方式
**重新上电生效**: 协议切换后需要重新上电才能生效
### 4.3 CAN ID一致性
- **CANopen协议**: canopen的id与私有协议下的canid保持一致
- **MIT协议**: 使用标准帧,id为电机CAN_ID
## 五、故障说明
### 5.1 故障位定义
故障信息通过通信类型2的Bit16~21或通信类型21的Byte0~3反馈:
| 位 | 故障名称 | 说明 |
|----|----------|------|
| 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_sta0x7029
- **说明**:
- 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_TIMEOUTcanTimeout0x7028
- **说明**:
- 值为0时: 该功能不启用
- 值为非0时: 当电机在一定时间段内没收到can指令时,电机进入reset模式
- 20000代表1s
### 6.5 标零功能
- **支持模式**: CSP和运控模式下可以标零
- **限制**: PP模式标零会屏蔽掉
- **说明**: 新版本电机在CSP和运控模式下标零,电机期望会马上更新为0,这样电机不会运动
## 七、数据转换说明
### 7.1 数据字节序
- **私有协议**: 大部分数据高字节在前,低字节在后
- **参数读写**: 数据低字节在前,高字节在后
- **MIT协议**: 按指令说明
### 7.2 数据范围映射
**⚠️ 重要**: 各型号电机的数据映射范围不同,详见 [1.2 可读写参数列表](#12-可读写参数列表) 中的各型号参数范围差异表。
#### 通用映射规则
| 数据类型 | 原始值范围 | 映射方式 | 备注 |
|----------|------------|----------|------|
| 角度(私有协议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~500,大型号0~5000 |
| Kd(私有协议16位) | 0~65535 | 线性映射到 KD_MIN~KD_MAX | 小型号0~5,大型号0~100 |
| 角度(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 | 各型号不同 |
| KpMIT协议12位) | 0~4096 | 线性映射到 KP_MIN~KP_MAX | 各型号不同 |
| KdMIT协议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
#### 数据转换函数
```c
// 浮点数转无符号整数(用于发送)
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