3. RSI 工程环境搭建

RSI(Robot Sensor Interface)不是一段可以单独运行的 KRL 程序,它是一套“KRL 侧 + 控制器侧”协同工作的实时运动控制机制。要让 RSI 真正跑起来,工程环境必须满足四个条件:WorkVisual 工程中正确挂载了 RSI 软件包、控制器上安装了匹配版本的 RSI 运行组件、KRL 程序按 RSI 框架组织、以及运行时按正确顺序启动与停止。本节围绕这四件事展开,重点讲清楚每一步“实际做什么、看什么、怎么判断成功”。

一、WorkVisual 工程配置:把 RSI 挂进工程

WorkVisual 是 KUKA 的工程配置工具,RSI 的配置入口在“项目结构”树中。典型流程是:打开或新建一个与现场控制器版本匹配的 WorkVisual 项目,在“Controller”节点下确认控制器型号与 KSS 版本;然后在“Software(软件)”或“Option(选项)”区域检查是否已存在 RSI 条目。若没有,需要通过“安装软件包”把 RSI 的 .kop 包导入。

这里有一个容易被忽略的关键点:RSI 软件包版本必须与控制器 KSS 版本、WorkVisual 版本三者匹配。例如 KSS 8.6 的控制器通常对应 RSI 4.x 系列,若把为 KSS 8.5 准备的 RSI 包挂到 8.6 控制器上,WorkVisual 可能不报错,但下载后控制器会拒绝激活或运行时报“版本不兼容”。因此导入前应先确认控制器实际 KSS 版本(示教器“帮助 → 信息”可查),再选择对应 RSI 包。

导入成功后,在项目树中应能看到 RSI 对象,并可在“RSI 配置”中查看默认的 RSI_Ethernet 或 RSI_RS232 等通信对象。此时不要急着下载,先做一次“项目一致性检查”,确认没有红色错误标记,再执行“下载到控制器”。下载完成后,控制器重启,RSI 才真正进入可调用状态。

二、RSI 软件包安装与版本核对

RSI 软件包安装分两步:WorkVisual 侧导入 .kop,控制器侧通过“安装附加软件”完成激活。控制器侧安装通常在示教器“投入运行 → 附加软件”中执行,选择 U 盘中的 RSI 包,按提示重启。安装完成后,在“附加软件”列表中应能看到 RSI 及其版本号。

版本核对建议做成一张对照表,避免现场反复试错:

检查项查看位置合格判据
KSS 版本示教器 帮助 → 信息如 8.6.x
RSI 版本投入运行 → 附加软件与 KSS 匹配,如 RSI 4.0
WorkVisual 版本WorkVisual 关于能打开对应 KSS 项目
通信对象WorkVisual RSI 配置存在 Ethernet/RS232 对象

如果“附加软件”里没有 RSI,或版本号与预期不符,后续 KRL 中调用 RSI_ON() 会直接报错,因此这一步必须确认到位。

三、KRL 程序框架:RSI 的“骨架”

RSI 的 KRL 程序不是从零写运动指令,而是围绕“初始化 → 启动 → 周期交互 → 停止”组织。一个最小可运行框架通常包含以下要素:

DEF RSI_Demo( )
  ; 1. 声明 RSI 相关变量
  DECL RSI_ETHERNET_T rsiComm
  DECL RSI_ON_T rsiOn
  ; 2. 初始化通信与对象
  RSI_INIT(rsiComm, "192.168.0.10", 49152)
  ; 3. 配置 RSI 对象(传感器、校正、运动)
  ;    此处由 WorkVisual 生成的配置或手动赋值
  ; 4. 启动 RSI
  RSI_ON(rsiOn)
  ; 5. 周期交互:在 RSI 上下文中执行运动
  ;    通常由 RSI 运动指令或后台任务驱动
  ; 6. 停止 RSI
  RSI_OFF( )
END

实际工程中,RSI_INIT 负责建立与上位机(如视觉、力控 PC)的通信通道;RSI_ON 使能 RSI 实时通道;RSI_OFF 安全退出。注意:RSI_ON 之后,机器人运动不再由普通 KRL 运动指令直接决定,而是由 RSI 周期数据流驱动。因此框架中必须明确“谁在周期里写数据、谁在周期里读状态”。

常见错误是把 RSI 当成普通子程序,在 RSI_ON 后继续写 PTP 或 LIN,这会导致运动冲突或 RSI 被强制关闭。正确做法是:RSI 启动后,运动由 RSI 的校正/偏移对象接管,KRL 只负责状态监控和异常处理。

四、RSI 运行时启动与停止流程

RSI 的启动不是“按一下开始”,而是一个有顺序的状态迁移。下面这张图把启动、运行、停止三个阶段的关键对象、信号方向和判断条件放在一起,便于对照现场操作。

RSI 运行时启动与停止状态迁移 启动阶段 运行阶段 停止阶段 ① 控制器上电,RSI 组件加载 附加软件列表可见 RSI ② 调用 RSI_INIT 建立通信通道,绑定 IP/端口 ③ 调用 RSI_ON 使能实时通道,进入周期 ④ 检查 RSI 状态字 确认无错误、通道已激活 上位机周期发送数据 如视觉偏移、力控修正量 RSI 校正对象计算 叠加到机器人运动 机器人执行实时运动 周期约 4ms/12ms KRL 监控状态与异常 超时、丢包、越限 触发停止条件 任务完成 / 急停 / 错误 调用 RSI_OFF 关闭实时通道 机器人回到普通 KRL 控制 可继续执行 PTP/LIN 确认状态字复位 无残留错误 激活成功 停止条件 异常/超时 → 立即 RSI_OFF 并报警 判断依据:状态字无错误、周期数据持续更新、机器人运动平滑无跳变

启动阶段的关键判断是:RSI_ON 返回后,状态字中“激活位”应为真,且上位机开始收到周期请求。若状态字一直不激活,优先检查通信 IP/端口是否与上位机一致、防火墙是否放行、以及 RSI 包是否真正安装。

运行阶段要观察三件事:周期是否稳定(常见 4ms 或 12ms)、数据是否持续更新、机器人运动是否平滑。如果出现“机器人不动”或“运动跳变”,通常是上位机没有按时发数据,或校正量超出允许范围。此时 RSI 可能自动关闭,KRL 侧应捕获错误并调用 RSI_OFF。

停止阶段必须遵循“先停数据、再关通道、后复位”的顺序。直接断电或强行终止程序,可能导致 RSI 通道残留,下次启动时报“通道被占用”。正确做法是:上位机停止发送数据 → KRL 调用 RSI_OFF → 确认状态字复位 → 再执行后续普通运动指令。

常见排障顺序:① 附加软件中 RSI 是否存在且版本匹配;② WorkVisual 下载是否成功、控制器是否重启;③ KRL 中 RSI_INIT 的 IP/端口是否与上位机一致;④ RSI_ON 后状态字是否激活;⑤ 上位机是否按周期发送数据;⑥ 停止时是否先 RSI_OFF 再退出。

把以上四步串起来,RSI 工程环境才算真正搭好:WorkVisual 负责“配置正确”,软件包安装负责“组件可用”,KRL 框架负责“程序结构正确”,启动停止流程负责“运行时可控”。现场调试时,建议先用一个最小示例(仅通信 + 状态监控,不接实际传感器)验证通道能正常启停,再逐步接入视觉或力控数据,这样能把问题定位在环境层还是应用层。