Skip to content

跟随误差&电机过载保护

概述

跟随误差和电机过载保护是机器人运动控制中的关键安全监测机制。本章说明跟随误差的概念、监测参数设置、电机过载保护配置以及速度碰撞检测功能。


跟随误差概念

什么是跟随误差

跟随误差是指控制器下发的指令位置与伺服驱动器反馈的实际位置之间的偏差。它是衡量伺服系统跟踪性能的核心指标。

  • 静态误差:机器人静止时的指令位置与实际位置偏差
  • 动态误差:机器人运动时的指令位置与实际位置偏差

跟随误差过大的原因

原因说明排查方向
负载过重电机输出扭矩不足以驱动负载减轻负载或调整加减速参数
加减速过大指令加速度超过电机能力降低加速度参数
机械卡滞机械传动部分存在阻力检查减速机、导轨等机械部件
伺服参数不当伺服增益等参数设置不合理调整伺服 PID 参数
编码器故障编码器反馈异常检查编码器连接和状态

跟随误差保护机制

当跟随误差超过设定的最大跟随误差上限时,控制器将:

  1. 立即停止当前运动(紧急停止)
  2. 上报跟随误差过大错误(kind=2)
  3. 需要清除错误后才能重新使能

1. 最大跟随误差上限

1.1 上位机设置最大跟随误差参数上限

命令字: 0x3860

参数列表:

参数名类型说明范围
maxDynamicDeviationsint[6]最大动态误差[1, 2×10⁷] ‱°
maxStaticDeviationsint[6]最大静态误差[1, 2×10⁷] ‱°

单位说明: ‱° 表示万分之一度(0.0001°),例如 5000000 表示 500° 的跟随误差阈值。

请求示例:

json
{
  "maxDynamicDeviations": [5000000, 5000000, 5000000, 5000000, 5000000, 5000000],
  "maxStaticDeviations": [5000000, 5000000, 5000000, 5000000, 5000000, 5000000]
}

参数配置建议

  • 动态误差通常设置为静态误差的 2-5 倍,因为运动时允许更大的跟随偏差
  • 对于高精度应用(如激光切割),应设置更小的跟随误差阈值
  • 对于重负载应用,可适当增大阈值以避免频繁触发保护
  • 各轴独立设置,通常 J1-J3 轴负载较大,可设置较大阈值

1.2 上位机查询最大跟随误差参数上限

命令字: 0x3861

参数列表:

参数名类型说明范围
robotint当前机器人号[1, 4]

请求示例:

json
{
  "robot": 1
}

1.3 控制器回复上位机最大跟随误差参数上限

命令字: 0x3862

参数列表:

参数名类型说明范围
maxDynamicDeviationsint[6]最大动态误差[1, 2×10⁷] ‱°
maxStaticDeviationsint[6]最大静态误差[1, 2×10⁷] ‱°
robotint当前机器人号[1, 4]

响应示例:

json
{
  "maxDynamicDeviations": [5000000, 5000000, 5000000, 5000000, 5000000, 5000000],
  "maxStaticDeviations": [5000000, 5000000, 5000000, 5000000, 5000000, 5000000],
  "robot": 1
}

2. 当前跟随误差(监控)

2.1 上位机查询当前跟随误差

命令字: 0x3870

参数列表:

参数名类型说明范围
robotint当前机器人号[1, 4]

请求示例:

json
{
  "robot": 1
}

2.2 控制器回复上位机当前跟随误差

命令字: 0x3871

参数列表:

参数名类型说明维度
curDeviationsdouble[7]当前机器人误差列表单位 ‱°
curExternalDeviationsdouble[5]当前外部轴误差列表单位 ‱°
maxDeviationsdouble[7]最大机器人误差列表单位 ‱°
maxExternalDeviationsdouble[5]最大外部轴误差列表单位 ‱°
robotint当前机器人号[1, 4]

说明: maxDeviations 记录的是历史最大误差值,可用于分析运动过程中的峰值误差。

响应示例:

json
{
  "curDeviations": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
  "curExternalDeviations": [0.0, 0.0, 0.0, 0.0, 0.0],
  "maxDeviations": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
  "maxExternalDeviations": [0.0, 0.0, 0.0, 0.0, 0.0],
  "robot": 1
}

3. 电机过载保护

功能说明

电机过载保护用于监测电机扭矩是否长时间超出安全范围。当电机扭矩持续超过设定的 robotLimit 值超过 minLimiteTime 时间时,触发过载保护。

保护机制

  1. 实时监测各轴电机扭矩
  2. 当扭矩超过 robotLimit 时开始计时
  3. 持续时间超过 minLimiteTime 则触发过载保护
  4. 停止运动并上报过载错误

3.1 上位机设置电机过载保护参数

命令字: 0x3880

参数列表:

参数名类型说明范围
enablebool电机过载保护使能true/false
minLimiteTimeint电机过载保护最小确认时间[10, 9999] ‰
robotLimitint[6]电机扭矩过载值列表[0, 9999) ‰ 或 mNm
robotint当前机器人号[1, 4]

单位说明: minLimiteTime 单位为千分之一秒(‰),如 10 表示 10ms。robotLimit 为相对于电机额定扭矩的千分比。

请求示例:

json
{
  "enable": false,
  "minLimiteTime": 10,
  "robot": 1,
  "robotLimit": [999, 999, 999, 999, 999, 999]
}

3.2 上位机查询电机过载保护参数

命令字: 0x3881

参数列表:

参数名类型说明范围
robotint当前机器人号[1, 4]

请求示例:

json
{
  "robot": 1
}

3.3 控制器回复上位机电机过载保护参数

命令字: 0x3882

参数列表:

参数名类型说明范围
enablebool电机过载保护使能true/false
minLimiteTimeint电机过载保护最小确认时间[10, 9999] ‰
robotLimitint[6]电机扭矩过载值列表[0, 9999) ‰ 或 mNm
robotint当前机器人号[1, 4]

响应示例:

json
{
  "enable": false,
  "minLimiteTime": 10,
  "robot": 1,
  "robotLimit": [999, 999, 999, 999, 999, 999]
}

4. 伺服速度碰撞检测

功能说明

速度碰撞检测通过监测伺服电机的实际速度与指令速度的偏差来判断是否发生碰撞。当实际速度与指令速度的偏差超过允许范围并持续一定时间时,判定为碰撞发生。

工作原理

  • 控制器持续比较指令速度实际速度
  • 计算速度偏差 = |实际速度 - 指令速度|
  • 当速度偏差 > speed_enable_error 且持续时间 > speed_delay_time 时触发碰撞检测

4.1 设置伺服速度碰撞检测参数

命令字: 0x40A0

参数列表:

参数名类型说明
switchbool速度碰撞检测开关
speed_delay_timeint伺服速度延迟时间
speed_enable_errordouble伺服速度允许误差

请求示例:

json
{
  "switch": true,
  "speed_delay_time": 10,
  "speed_enable_error": 10
}

4.2 上位机获取伺服速度碰撞检测参数

命令字: 0x40A1

参数列表:


4.3 控制器回复伺服速度碰撞检测参数

命令字: 0x40A2

参数列表:

参数名类型说明
switchbool速度碰撞检测开关
speed_delay_timeint伺服速度延迟时间
speed_enable_errordouble伺服速度允许误差

响应示例:

json
{
  "switch": true,
  "speed_delay_time": 10,
  "speed_enable_error": 10
}