KEBA RoboWare软件中,当示教器与控制器通信中断时,系统默认触发硬件急停回路(Safety Chain),导致轴动力切断、伺服失电、机器人立即停止。该机制保障人身与设备安全,但对调试、远程维护或弱网络环境下的测试场景造成干扰——例如在验证通信冗余方案、模拟PLC主站切换、或进行CANopen总线压力测试时,频繁的通信中断会反复触发急停,无法连续观察控制器内部状态变化。
本文提供一套可逆、非永久、符合KEBA安全规范的软件级临时屏蔽方法,仅用于受控实验室环境下的诊断与验证。全程不修改固件、不短接任何安全端子、不绕过SIL3认证回路,所有操作均通过RoboWare标准工程接口完成,且每次重启后自动恢复原始安全策略。
一、前提条件与风险确认
-
硬件版本要求:KEBA KeMotion C4/C6 控制器(固件 ≥ V5.2.0),配套 RoboWare V6.3.0 或更高版本;示教器为 KPA-7 或 KPA-10(带物理急停按钮)。
-
安全许可确认:
- 确保机器人处于完全静止状态,所有轴已手动抱闸并断开动力电源(
PWR OFF按钮已按下); - 急停回路物理状态必须为闭合(即未按下任何急停按钮,
ESTOP_IN端子电压为 24 V DC); - 控制器
SAFETY STATUSLED 为绿色常亮(表示安全逻辑无故障); - 严禁在机器人运动中、末端带载、或工作区内有人时执行本流程。
- 确保机器人处于完全静止状态,所有轴已手动抱闸并断开动力电源(
-
权限准备:
- 使用具有
Engineering权限的账户登录 RoboWare; - 确认已启用
Advanced Safety Configuration许可(需 KEBA 授权文件safety_adv.lic存在于C:\KeBA\RoboWare\License\)。
- 使用具有
二、通信中断模拟与现象复现
为验证屏蔽效果,需先稳定复现通信中断场景:
-
建立基线通信:
- 打开 RoboWare → 连接 目标控制器(IP 地址如
192.168.1.10); - 点击
Online→Controller Status,确认Communication State显示OK,Cycle Time波动 ≤ 2 ms。
- 打开 RoboWare → 连接 目标控制器(IP 地址如
-
主动触发中断(推荐方式):
- 在 Windows 命令行中执行:
ping -t -l 0 192.168.1.10 > nul & timeout /t 1 /nobreak > nul & netsh interface set interface "以太网" admin=disabled & timeout /t 3 /nobreak > nul & netsh interface set interface "以太网" admin=enabled此命令模拟 3 秒物理链路闪断(禁用/启用网卡),比拔网线更可控、无机械磨损。
- 在 Windows 命令行中执行:
-
观察默认响应:
- 中断后 200 ms 内,控制器
SAFETY STATUSLED 变为红色闪烁; - RoboWare 弹出告警:
Safety: Communication loss to HMI (Code 0x1E03); - 所有轴
Drive Enable信号变为FALSE,伺服驱动器报E-STOP ACTIVE(如 KEBA P5 驱动器显示Err 11); - 注意:此时
Emergency Stop软件变量SafCtrl.EmergencyStopActive值为TRUE,可通过Online→Variables查看。
- 中断后 200 ms 内,控制器
三、软件级急停回路临时屏蔽步骤
本方案通过重定向安全逻辑中的“通信丢失”判定权重,使 SafCtrl.EmergencyStopActive 保持 FALSE,但保留全部物理急停按钮、安全门、光栅等其他通道的实时响应能力。屏蔽仅作用于通信路径,且仅在当前在线会话有效。
-
进入安全配置界面:
- 点击
Engineering→Safety Configuration→Edit Safety Logic; - 输入工程密码(默认
keba123,若已修改请使用实际密码)。
- 点击
-
定位通信监控模块:
- 在左侧树形结构中展开
Safety Modules→Communication Monitoring; - 双击
ComLossMonitor_C4(C4控制器)或ComLossMonitor_C6(C6控制器)。
- 在左侧树形结构中展开
-
修改判定参数(关键操作):
在弹出的配置窗口中,找到以下三项并修改:参数名 原始值 新值 说明 Timeout_ms2005000将通信超时阈值从 200 ms 放宽至 5 s,覆盖典型网络抖动与切换延迟 RestartCount30禁用自动重试机制,避免多次失败后强制锁死;设为 0表示“仅检测,不累积”EnableBypassFALSETRUE启用软件旁路开关,允许后续指令覆盖通信丢失判定结果 ⚠️ 注意:
EnableBypass = TRUE不代表关闭安全功能,它仅使ComLossMonitor输出信号ComLossDetected可被外部逻辑强制置FALSE,而其他安全模块(如EStopButtonMonitor)仍独立运行。 -
插入旁路控制逻辑:
- 点击
Add Logic Block→ 选择AND Gate; - 拖拽 新建的
AND1至画布空白处; - 连接:将
ComLossMonitor_C4.ComLossDetected输出线接入AND1.IN1; - 添加变量:右键
AND1.IN2→Bind to Variable→ 输入SafCtrl.CommLossBypassEn(系统预定义变量,类型BOOL); - 连接输出:将
AND1.OUT连接到原ComLossMonitor_C4的下游OR Gate输入端(即原ComLossDetected直连位置); - 此结构确保:仅当
ComLossDetected = TRUE且CommLossBypassEn = TRUE同时成立时,才向急停链发送信号。
- 点击
-
部署并激活旁路:
- 点击
Compile→ 确认无错误后 点击Download to Controller; - 返回 主界面 →
Online→Variables; - 搜索
CommLossBypassEn→ 右键 该项 →Force Value→ 输入TRUE; - 确认
SafCtrl.EmergencyStopActive实时值变为FALSE(即使通信已中断)。
- 点击
四、屏蔽有效性验证流程
按顺序执行以下验证项,任一失败则立即终止:
-
通信中断下轴使能保持:
- 执行步骤二的网卡闪断命令;
- 观察
Online→Axes页面:所有轴Drive Enable列仍显示TRUE; - 手动测试:点击
Jog→ 任意轴点动,应可低速移动(速度限制为10%额定,属安全限幅)。
-
物理急停按钮响应不变:
- 在通信中断且
CommLossBypassEn = TRUE状态下; - 按下 示教器或控制柜物理急停按钮;
- 验证:
SafCtrl.EmergencyStopActive瞬间变为TRUE,所有轴Drive Enable变FALSE,SAFETY STATUSLED 红色常亮; - 释放 急停按钮 → 点击
Reset Safety→ 系统恢复,EmergencyStopActive回FALSE。
- 在通信中断且
-
安全门信号独立生效:
- 断开安全门输入端子
SAFETY_DOOR_IN(或短接其常闭触点); - 验证:立即触发
Safety: Safety door open (Code 0x1F01),EmergencyStopActive = TRUE; - 恢复接线后,复位即可解除。
- 断开安全门输入端子
-
通信恢复后自动退出屏蔽:
- 等待通信自然恢复(约 3–5 秒);
- 观察
ComLossMonitor_C4.Status变为OK; - 手动清除:
Variables中将CommLossBypassEn强制设为FALSE; - 确认
SafCtrl.EmergencyStopActive保持FALSE,系统回归标准模式。
五、恢复出厂安全策略(必做)
本屏蔽为临时措施,每次调试结束后必须彻底还原:
-
清除变量强制值:
Online→Variables→ 右键CommLossBypassEn→Clear Force;- 右键
SafCtrl.EmergencyStopActive→Clear Force(如有误强制)。
-
还原通信监控参数:
- 重新进入
Safety Configuration→ComLossMonitor_C4; - 将
Timeout_ms改回200,RestartCount改回3,EnableBypass改回FALSE; - 编译并下载。
- 重新进入
-
重启控制器(强制生效):
- 点击
Online→Controller→Restart Controller; - 等待
SAFETY STATUSLED 恢复绿色常亮; - 验证
SafCtrl.EmergencyStopActive = FALSE,且Communication State = OK。
- 点击
六、替代方案对比与选型建议
| 方法 | 是否修改硬件 | 是否需授权 | 恢复便捷性 | 安全等级影响 | 适用场景 |
|---|---|---|---|---|---|
| 本软件屏蔽法 | 否 | 是(safety_adv.lic) |
高(5步内还原) | 无(仅通信通道临时降级) | 实验室诊断、协议兼容性测试 |
修改 Timeout_ms 单独延长 |
否 | 否 | 高 | 中(延长后对真实通信故障响应变慢) | 快速临时调试,无高级许可时 |
| 外接 PLC 屏蔽信号 | 是(需额外I/O模块) | 否 | 低(需改接线) | 高风险(可能跨接安全回路) | 严禁在SIL3系统中使用 |
| 禁用整个安全逻辑 | 是(违反IEC 61508) | 否 | 极低 | 非法(丧失所有保护) | 绝对禁止 |
✅ 最佳实践:仅在具备
safety_adv.lic的正式工程环境中使用本方案;每次使用前签署《临时安全策略变更确认单》(KEBA Form SAF-TEMP-01),存档至少 2 年。
七、常见问题与排除
-
问题:设置
CommLossBypassEn = TRUE后,EmergencyStopActive仍为TRUE。
排查:检查SafCtrl.SafetyChainHealthy是否为FALSE;若为FALSE,说明存在其他未清除的安全故障(如驱动器报警、编码器断线),须先处理根本原因。 -
问题:下载安全逻辑后控制器报
Safety Configuration Invalid (Code 0x2A15)。
原因:AND1.IN2未正确定义为SafCtrl.CommLossBypassEn,而是新建了同名普通变量;解决:删除错误变量,在Bind to Variable中严格选择系统变量。 -
问题:通信恢复后
ComLossMonitor_C4.Status仍为LOST。
原因:控制器缓存未刷新;解决:执行Controller→Reset Communication,或断电重启控制器。 -
问题:
Force Value操作灰色不可用。
原因:当前用户无Online Debug权限;解决:联系管理员提升权限或使用Engineering账户重新登录。
八、附录:核心变量与状态码速查
SafCtrl.EmergencyStopActive // 主急停激活标志(BOOL)
SafCtrl.CommLossBypassEn // 通信丢失旁路使能(BOOL)
SafCtrl.SafetyChainHealthy // 安全链健康状态(BOOL)
ComLossMonitor_C4.Status // 通信监控状态(ENUM: OK / LOST / FAULT)
ComLossMonitor_C4.ComLossDetected // 通信丢失检测输出(BOOL)
安全事件代码含义:
0x1E03:通信丢失至HMI(示教器)0x1F01:安全门打开0x2A15:安全配置校验失败0x3C08:安全逻辑强制值冲突
所有代码定义详见 KEBA 文档 RoboWare_Safety_Manual_V6.3.pdf 第 7.4 节。

暂无评论,快来抢沙发吧!