3. EGM系统环境搭建

EGM(Externally Guided Motion)不是把机器人控制器“打开一个端口”那么简单,它是一条从上位机到机器人运动规划器的实时闭环通道。要让这条通道真正跑起来,需要三件事同时成立:控制器侧安装了 EGM 选项并正确授权;控制柜网络与上位机处于同一可达网段且 UDP 端口放行;上位机具备可编译、可发送 EGM 数据帧的开发环境。本节按“控制器 → 网络 → 上位机 → 最小连通性验证”的顺序展开,每一步都给出可观察的判断依据。

一、RobotWare 与 EGM 选项安装

EGM 属于 RobotWare 的可选功能,必须通过 RobotStudio 的“安装管理器”或 FlexPendant 的“系统信息 → 选项”确认。典型 RobotWare 7 系统中,与 EGM 直接相关的选项包括 EGM(Externally Guided Motion)以及可选的 EGM Advanced。安装时需要注意:EGM 选项与 RobotWare 主版本绑定,不能跨大版本混用;若控制器已存在旧系统,建议新建系统而非在原系统上叠加,避免选项冲突。

安装完成后,在示教器“系统信息 → 选项”中应能看到 EGM 条目,且状态为“已启用”。若使用 RobotStudio 离线创建系统,可在“控制器 → 系统 → 选项”中勾选 EGM,再通过 U 盘或网络部署到控制柜。部署后重启控制器,观察事件日志中是否出现 EGM option activated 一类信息,这是选项生效的第一手证据。

二、控制柜网络配置

EGM 使用 UDP 通信,默认端口为 6510(可在 RAPID 的 EGMSetupUC 或 EGMSetupAI 中指定)。控制柜通常有两个网口:管理口(Service)和过程口(Process)。EGM 建议走过程口,避免与管理流量争抢。以常见的 IRC5 或 OmniCore 为例,可在“控制面板 → 网络”中为过程口设置静态 IP,例如:

IP 地址:192.168.10.10
子网掩码:255.255.255.0
网关:192.168.10.1(可留空,视现场而定)

上位机侧对应设置为 192.168.10.100/24,确保两者在同一广播域。若现场存在多网卡,务必确认 EGM 数据从正确网卡发出,否则会出现“能 ping 通但收不到 EGM 帧”的典型问题。配置完成后,用 ping 192.168.10.10 验证链路层可达,再用 netstat -an | findstr 6510(Windows)或 ss -lun | grep 6510(Linux)确认上位机 UDP 端口未被占用。

三、上位机开发环境准备

上位机需要具备 UDP Socket 编程能力。以 C# 为例,可使用 System.Net.Sockets.UdpClient;以 Python 为例,使用 socket.socket(socket.AF_INET, socket.SOCK_DGRAM)。开发环境建议安装 RobotStudio 的 PC SDK 或 EGM 示例工程,以便对照官方数据帧结构。EGM 数据帧由头部(Header)和多个数据段(Data)组成,头部包含 header.version、header.sequenceNumber、header.timestamp 等字段,数据段则承载位置、速度、力等控制量。

一个最小可用的发送端应包含:创建 UDP 套接字、绑定本地端口、构造 EGM 帧、按周期发送、接收反馈帧并解析。发送周期通常为 4 ms(250 Hz)或 8 ms(125 Hz),具体取决于控制器配置的 EGM_SAMPLE_TIME。若周期不匹配,控制器会报“EGM 超时”或“数据帧丢失”。

四、最小连通性测试

在正式编写运动控制逻辑前,先做一次“空跑”测试:上位机只发送不含运动指令的 EGM 帧,观察控制器是否进入 EGM 模式并回传状态。RAPID 侧可写一段最小程序:

MODULE EGM_TEST
  VAR egmident egm_id;
  VAR egmstate egm_state;
  PROC main()
    EGMSetupUC egm_id, 6510, "EGM_TEST", \UC;
    EGMActivate egm_id;
    WHILE egm_state <> EGM_ACTIVE DO
      EGMRunJoint egm_id, EGM_STOP_HOLD, \J1, \J2, \J3, \J4, \J5, \J6;
    ENDWHILE
    EGMEnd egm_id;
  ENDPROC
ENDPROC

上位机发送第一帧后,若控制器返回 EGM_ACTIVE,说明通道已建立。此时可在上位机打印接收到的反馈帧,检查 header.sequenceNumber 是否连续递增、timestamp 是否单调递增。若序列号跳变或时间戳回退,说明网络存在丢包或乱序,需要检查交换机 QoS 或改用直连。

EGM 系统环境搭建与最小连通性验证 机器人控制柜 RobotWare + EGM 选项 过程口 IP: 192.168.10.10 UDP 端口: 6510 上位机 IP: 192.168.10.100/24 UDP Socket 绑定 6510 发送周期 4 ms / 8 ms 工业以太网 / 直连 同一网段 · 无 NAT · 低延迟 EGM 帧 反馈帧 最小连通性验证路径 ① ping 通 192.168.10.10 ② 端口监听 UDP 6510 未占用 ③ 发送首帧 EGMActivate 触发 ④ 状态回读 EGM_ACTIVE + 序列号连续 判断依据:sequenceNumber 递增、timestamp 单调、无 EGM 超时事件 若失败:检查网卡选择、防火墙 UDP 规则、EGM_SAMPLE_TIME 与发送周期是否一致

五、常见问题与判断依据

实际搭建中最容易卡住的不是代码,而是“看起来都通、但 EGM 不激活”。可按以下顺序排查:第一,确认控制器选项列表中 EGM 为“已启用”,而非仅“已安装”;第二,确认上位机发送的目标 IP 是控制柜过程口地址,而非管理口;第三,确认防火墙未拦截 UDP 6510 入站;第四,确认 RAPID 中 EGMSetupUC 的端口与上位机发送端口一致;第五,确认 EGMRunJoint 等运动指令已进入循环,否则控制器不会持续回传状态。

建议在首次联调时把发送周期临时放宽到 8 ms,待通道稳定后再收紧到 4 ms。周期越短,对网络抖动越敏感,但控制平滑性越好。
EGM 激活后机器人可能立即进入受控状态。首次测试务必把机器人置于安全区域,并准备好示教器上的急停。不要在上位机未准备好接收反馈帧的情况下直接激活 EGM。