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 不激活”。可按以下顺序排查:第一,确认控制器选项列表中 EGM 为“已启用”,而非仅“已安装”;第二,确认上位机发送的目标 IP 是控制柜过程口地址,而非管理口;第三,确认防火墙未拦截 UDP 6510 入站;第四,确认 RAPID 中 EGMSetupUC 的端口与上位机发送端口一致;第五,确认 EGMRunJoint 等运动指令已进入循环,否则控制器不会持续回传状态。