Files
RC_WheelLeg/01_doc/firmware/motor_protocols.md
T

32 KiB
Raw Blame History

灵足时代电机通信协议汇总

本文档汇总了灵足时代(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
    • 说明: bit158为主机CAN_IDbit70为目标电机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]
    • 数据范围:
      • 角度: 065535 对应 (-12.57f12.57f) rad
      • 角速度: 065535 对应 (-50rad/s50rad/s)
      • Kp: 065535 对应 (0.0500.0)
      • Kd: 065535 对应 (0.05.0)
    • 注意: 数据高字节在前,低字节在后
  • 应答帧: 通信类型2(电机反馈数据)

通信类型2:电机反馈数据

  • 功能: 电机状态反馈
  • 发送帧: 电机主动发送
  • 数据格式:
    • Byte01: 当前角度 [065535] 对应 (-12.57f~12.57f) rad
    • Byte23: 当前角速度 [065535] 对应 (-50rad/s~50rad/s)
    • Byte45: 当前力矩 [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模式[运行]
  • 注意: 数据高字节在前,低字节在后

通信类型3:电机使能运行

  • 功能: 使能电机运行
  • 发送帧:
    • ID: 0x3 (Bit28~24=3)
    • 数据: 00 FD 7F 00 00 00 00 00 00 00
    • 说明: bit158为主机CAN_IDbit70为目标电机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语言)
// 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
    • Byte12: 当前角度 [065535] 对应 (-12.57rad~12.57rad)
    • Byte3为高8位,Byte4[7-4](高4位)为低4位: 当前速度 [04096] 对应 (-50rad/s50rad/s)
    • Byte4[3-0](低4位)为高4位,Byte5为低8位: 当前力矩 [04096] 对应 (-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
  • 数据格式:
    • Byte01: 目标角度 [065535] 对应 (-12.57rad~12.57rad)
    • Byte2为高8位,Byte3[7-4](高4位)为低4位: 目标速度 [04096] 对应 (-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位: 目标力矩 [04096] 对应 (-6N.m6N.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: 0x17FBit108=1bit70=目标电机canid
  • 数据格式:
    • Byte0~3: 目标位置,单位rad32位单精度float
    • Byte4~7: 目标速度,单位rad/s32位单精度float
  • 应答帧: 应答指令1

指令11:速度模式控制指令

  • ID: 0x27FBit108=2bit70=目标电机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的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_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 可读写参数列表 中的各型号参数范围差异表。

通用映射规则

数据类型 原始值范围 映射方式 备注
角度(私有协议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 小型号0500,大型号05000
Kd(私有协议16位) 0~65535 线性映射到 KD_MIN~KD_MAX 小型号05,大型号0100
角度(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

数据转换函数

// 浮点数转无符号整数(用于发送)
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