1. EKI通信入门

EKI(Ethernet KRL Interface,以太网 KRL 接口)是 KUKA 机器人控制器中用于在 KRL 程序与外部以太网设备之间交换数据的通信接口。它不是一个独立的硬件模块,而是集成在 KUKA 控制器(如 KR C4、KR C5)中的软件功能,通过机器人控制器的以太网端口与上位机、视觉系统、PLC、测量设备等建立 TCP/IP 或 UDP 连接。理解 EKI 的关键在于:它让机器人程序能够像"读写变量"一样,直接收发网络数据,而不需要经过现场总线映射或额外的网关设备。

在 KUKA 机器人系统的通信版图中,EKI 处于"应用层通信"的位置。底层是控制器操作系统与网络协议栈,中间是 KUKA 提供的通信接口层,上层则是用户的 KRL 程序。与 EKI 并列的还有 RSI(Robot Sensor Interface)和 Fieldbus(现场总线)两类通信方式,它们各自解决不同层面的问题。EKI 的定位可以概括为:面向"点对点、结构化、可编程"的以太网数据交换,适合与一台或少数几台外部设备进行灵活的数据交互。

KUKA 机器人系统通信层次与 EKI 定位 外部设备层 上位机 / PC 视觉相机 PLC / 网关 测量仪器 其他 KUKA 控制器通信接口层 EKI 以太网 KRL 接口 TCP/IP · UDP · XML RSI 机器人传感器接口 实时 · 周期 · 运动修正 Fieldbus 现场总线 PROFINET · EtherCAT KUKA 控制器(KR C4 / KR C5) KRL 解释器 · 运动规划 · 网络协议栈 · 实时内核 KRL 用户程序 EKI_Init / EKI_Open / EKI_Send / EKI_Receive EKI 特点 非实时 · 灵活 · 易编程 典型场景 视觉引导 · 数据采集

以太网通信的基本概念

在深入 EKI 之前,需要先建立几个以太网通信的基础概念。首先是 IP 地址与端口:每台设备在网络中需要一个唯一的 IP 地址,端口号则用于区分同一台设备上的不同服务。EKI 通信中,机器人控制器作为客户端或服务端,需要与外部设备约定好 IP 和端口。例如,机器人作为客户端连接上位机的 59152 端口,或者机器人作为服务端监听 54600 端口等待连接。

其次是 TCP 与 UDP 的区别。TCP 是面向连接的可靠传输,数据按顺序到达,适合对完整性要求高的场景,如发送坐标数据、接收指令。UDP 是无连接的快速传输,不保证到达顺序,适合对实时性要求高但能容忍少量丢包的场景。EKI 同时支持这两种协议,用户根据实际需求选择。

第三是 数据格式。EKI 支持两种主要的数据组织方式:一种是纯字符串/字节流,用户自行定义分隔符和解析规则;另一种是 XML 格式,EKI 内置了 XML 解析能力,可以通过元素名称直接读取字段值。XML 方式在结构化数据交换中更为清晰,例如视觉系统发送的坐标、角度、置信度等字段。

EKI 与 RSI、Fieldbus 的差异

这三者常被混淆,但它们的定位截然不同。RSI 是实时传感器接口,主要用于需要高频周期修正机器人运动的场景,如力控、视觉伺服。RSI 的数据更新周期通常在 4ms 到 12ms 之间,直接参与运动插补,对实时性要求极高。Fieldbus(如 PROFINET、EtherCAT)是工业现场总线,用于连接 PLC、远程 IO、伺服驱动器等,强调确定性、周期性和设备互操作性,配置通常依赖硬件组态工具。EKI 则是应用层的以太网通信接口,不参与运动实时控制,而是让 KRL 程序能够灵活地与外部系统交换数据。它的优势在于编程简单、协议开放、无需额外硬件,适合非实时或软实时的数据交互。

对比维度 EKI RSI Fieldbus
通信层次 应用层(KRL 可编程) 运动控制层(实时) 现场设备层
实时性 非实时 / 软实时 硬实时(4~12ms) 确定性周期
典型协议 TCP/IP、UDP 专用以太网协议 PROFINET、EtherCAT
编程方式 KRL 函数调用 RSI 对象配置 硬件组态 + PLC 编程
典型用途 视觉引导、数据采集、MES 交互 力控、视觉伺服、动态修正 IO 控制、驱动器通信

典型应用场景

EKI 在实际工程中应用广泛。最常见的场景是视觉引导抓取:相机拍摄工件后,通过以太网将坐标和角度发送给机器人,机器人 KRL 程序用 EKI_Receive 读取数据,解析后修正抓取点。另一个场景是与上位机 MES 系统交互:机器人完成一个工件后,通过 EKI 发送完成信号和工件序列号,MES 返回下一个任务指令。此外,EKI 还常用于测量数据回传、远程监控、多机器人协同等场景。这些场景的共同特点是:数据交换不是硬实时运动控制,但需要灵活、可编程、易于集成的通信方式。

EKI 的通信周期通常在几十毫秒到几百毫秒量级,具体取决于网络负载和程序结构。如果应用需要毫秒级闭环控制,应优先考虑 RSI 而非 EKI。

学习路线建议

掌握 EKI 通信工程,建议按以下路径推进:第一步,理解以太网基础,包括 IP、端口、TCP/UDP 差异,能够用网络调试工具(如 TCP 调试助手)手动收发数据。第二步,熟悉 EKI 的 KRL 函数体系,包括 EKI_Init、EKI_Open、EKI_Send、EKI_Receive、EKI_Close 等,理解每个函数的参数含义和调用时机。第三步,从纯字符串通信入手,完成一个简单的"发送-接收"闭环,例如机器人发送 "Hello" 给上位机,上位机回复 "OK"。第四步,进阶到 XML 格式通信,定义结构化的数据字段,实现视觉坐标的解析。第五步,结合真实项目,处理异常情况,如连接断开、数据超时、格式错误等,并设计重连机制。第六步,优化通信性能,调整缓冲区大小、超时参数,评估通信周期对节拍的影响。

在整个学习过程中,建议始终配合实际控制器或仿真环境进行验证。KUKA 的 OfficeLite 仿真软件可以运行 KRL 程序,配合本机网络回环测试,能够在不依赖真实机器人的情况下完成大部分 EKI 逻辑的开发和调试。当程序在仿真中稳定运行后,再部署到真实控制器上,可以显著降低调试风险。

学习 EKI 的核心不是记住函数名称,而是建立"数据从哪来、到哪去、怎么解析、异常怎么办"的完整通信思维。每一行 KRL 通信代码背后,都应该有明确的协议约定和异常处理策略。