2. KUKA机器人系统架构与通信基础
要理解多机协调控制,必须先看清一台 KUKA 机器人内部“谁在指挥、谁在传话、谁在实时同步”。KRC 控制器是整个系统的中枢,它运行 KUKA 机器人语言(KRL)解释器、运动规划、安全逻辑与现场总线协议栈;而多台机器人之间的协调,本质上是在多个 KRC 之间建立确定性的数据交换通道,并让各自的运动规划在同一时间基准下收敛。
KRC 控制器:从运动指令到关节电流
KRC(KUKA Robot Controller)通常以 KRC4、KR C5 等形态出现,其内部可粗略分为三层:上层是运行 KRL 程序与协调逻辑的实时任务层;中层是运动学与轨迹插补层,负责把笛卡尔空间的目标点转换为各轴的角度序列;底层是驱动与安全层,通过 KSD(KUKA Servo Drive)或集成驱动模块输出电流环指令。多机协调时,上层需要交换“目标位姿、使能状态、同步信号”,中层需要交换“轨迹进度、时间戳”,底层则依赖硬件同步信号保证各轴在微秒级对齐。
KRC 对外提供多种通信接口,常见的有:KLI(KUKA Line Interface)、KCB(KUKA Control Bus)、EtherCAT、PROFINET、RSI(Robot Sensor Interface)以及基于 TCP/IP 的以太网通信。它们并非互相替代,而是处在不同层级、承担不同任务。
KLI 与 KCB:控制器的“内务”与“外联”
KLI 是 KRC 面向外部网络的主接口,通常是一个千兆以太网口,用于连接上位机、PLC、视觉系统或另一台 KRC。通过 KLI,可以运行 KRL 中的 EthernetKRL、RSI 或 TCP/IP 通信;它承载的是“非硬实时”或“软实时”的数据流,适合传输坐标、状态字、程序号等。KCB 则是控制器内部的背板总线,连接 KRC 主机、驱动模块、安全模块与扩展卡,负责实时控制数据与安全信号的高速传输。可以这样理解:KCB 是机器人自己的“神经中枢”,KLI 是它与外界对话的“嘴巴和耳朵”。
EtherCAT 与 PROFINET:现场总线的两种角色
EtherCAT 在 KUKA 系统中常用于连接伺服驱动、I/O 模块与安全设备,其特点是“飞读飞写”——数据帧在从站间依次穿过,每个从站只读取属于自己的数据并写入反馈,因此循环周期可以做到 1 ms 甚至更低。在多机协调中,若两台机器人需要共享一个外部轴或同步触发视觉相机,EtherCAT 的分布式时钟(DC)能让各从站的时间偏差控制在微秒级。
PROFINET 则更多用于 KRC 与西门子 PLC、远程 I/O 之间的通信。它基于标准以太网,支持 RT(实时)与 IRT(等时实时)两种模式。在多机工作站中,PLC 常作为“协调主站”,通过 PROFINET 向各 KRC 发送使能、启动、程序选择信号,并接收各机器人的状态与报警。PROFINET 的 IRT 模式可以与 EtherCAT 的 DC 类似,提供确定性周期,但配置复杂度更高。
RSI:让机器人“感知”外部世界
RSI(Robot Sensor Interface)是 KUKA 提供的一种高速传感器接口,通常运行在 KLI 之上,但通过 UDP 或专用协议实现毫秒级的数据交换。RSI 的核心是“校正值”机制:外部传感器(如力控传感器、视觉相机、激光跟踪仪)把测量结果发送给 KRC,KRC 在运动规划中叠加一个修正量,从而让机器人实时跟随外部目标。在多机协调中,RSI 常用于让两台机器人共同夹持一个工件——一台作为“主”,一台作为“从”,从机通过 RSI 接收主机的位姿偏移,实现柔性跟随。
多机数据交互的底层机制
多台 KRC 之间的数据交互,通常有三种典型模式。第一种是“主从广播”:主机通过 KLI 以固定周期(例如 4 ms 或 8 ms)向从机发送目标位姿与状态字,从机在 RSI 或 EthernetKRL 中接收并叠加到自身轨迹上。第二种是“PLC 集中协调”:PLC 通过 PROFINET 同时连接多台 KRC,用全局变量或报文交换“允许启动、同步点到达、急停复位”等信号,各 KRC 只与 PLC 通信,彼此不直接对话。第三种是“分布式时钟同步”:利用 EtherCAT 的 DC 或 PROFINET IRT,让多台 KRC 的驱动层在同一时钟节拍下采样与输出,适合高精度同步搬运或协同焊接。
无论哪种模式,都需要关注三个关键参数:通信周期、时间戳对齐方式、以及数据丢失时的降级策略。例如,若 RSI 通道在 10 ms 内未收到新数据,KRC 通常会保持上一帧校正值或按预设斜率回零,而不是立即停止——这需要在程序中显式配置。多机协调的稳定性,往往不取决于单台机器人的性能,而取决于这些底层通道的确定性与容错设计。
配置示例:两台 KRC 通过 RSI 实现主从跟随
以下示例假设主机 KRC 1 通过 KLI 向从机 KRC 2 发送位姿偏移量,从机在 RSI 中接收并叠加到当前轨迹。参数为教学示例,实际需根据现场网络与负载调整。
; KRC 1 主机发送端(EthernetKRL 示例)
DEF SEND_OFFSET()
DECL EKI_Status_T Status
DECL REAL X_off, Y_off, Z_off, A_off, B_off, C_off
X_off = 0.0 ; 示例偏移量,单位 mm
Y_off = 0.0
Z_off = 5.0
A_off = 0.0
B_off = 0.0
C_off = 0.0
; 将偏移量写入 XML 或二进制报文
EKI_Send("RSI_Sender", "OFFSET", X_off, Y_off, Z_off, A_off, B_off, C_off)
WAIT SEC 0.004 ; 4 ms 周期
END
; KRC 2 从机接收端(RSI 对象配置)
; RSI 对象:RSI_OFFSET
; 输入:X_off, Y_off, Z_off, A_off, B_off, C_off
; 校正类型:Cartesian
; 超时:10 ms,超时后保持最后值
; 在 KRL 中激活:
RSI_ON()
; 运动指令中叠加校正
LIN XP1 WITH $RSI_CORR = RSI_OFFSET
运行后,从机应在 4 ms 周期内跟随主机的偏移量。判断是否正常,可观察从机 RSI 状态字中的“数据有效”位是否持续为 1,以及实际 TCP 位置与主机偏移量的偏差是否在 1 mm 以内。若出现周期抖动,优先检查 KLI 网卡的 QoS 设置与交换机是否支持 IGMP Snooping。