核心架构:爱普生 = Modbus TCP 主站(Client),梅卡曼德 Mech-Center=Modbus TCP 从站(Slave)
爱普生 RC700 / RC90 / RC700E 都支持 Modbus TCP 主站;梅卡曼德标准接口里选 Modbus TCP Slave,不要搞反主从
一、网络基础
三者同网段、子网掩码一致(例:192.168.1.xx,255.255.255.0)
独立千兆交换机,屏蔽网线,工控机防火墙关闭
双向 ping 通:爱普生 ↔ 梅卡曼德工控机
梅卡曼德端口:推荐 50000(避开默认 502,防止冲突),不要用 502 和其他设备抢端口
二、梅卡曼德 Mech-Center / Mech-Vision 设置
打开【机器人与接口配置】→ 接口类型:标准接口 → 协议:Modbus TCP Slave
参数:
从站 IP:本机工控机 IP
端口:
50000(推荐)Slave ID:1(默认)
字节顺序(Byte order):DCBA(爱普生是大端 Big-Endian,DCBA 对应标准大端)
勾选:打开方案时自动启动接口服务
高级设置:单次发送位姿最大数量、超时时间(一般 2~3s)
应用 → 启动接口服务
梅卡曼德寄存器映射(标准 6 维位姿 + 状态,Holding Register,4x 功能码读保持寄存器)
每个 32 位浮点数占用 2 个 16bit 寄存器
X(mm):0,1
Y(mm):2,3
Z(mm):4,5
Rx(°):6,7
Ry(°):8,9
Rz(°):10,11
状态码 Flag:12(int,0=NG,1=OK,其他为错误码)
梅卡曼德输出姿态:XYZ 欧拉角, extrinsic,右手坐标系,和爱普生姿态定义对齐,这里是 3D 视觉最容易翻车点
三、爱普生 RC+ 软件设置(Modbus TCP Master)
路径:Setup → System Configuration → Fieldbus → Modbus TCP
启用 Modbus TCP,角色:Master(主站)
从站参数:
Slave IP:梅卡曼德工控机 IP
Port:
50000(和梅卡曼德一致)Slave ID:
1超时 Timeout:1000~2000ms(不要 0,0 是无限等待,容易撞机)
寄存器读取配置(爱普生读保持寄存器 00 起始)
功能码:03(Read Holding Registers)
起始地址:0
读取长度:13 个寄存器(6 个浮点数 12 个 + 1 个状态)
爱普生变量映射:
浮点数存到
Real变量(R 变量)Flag 存到
Integer变量(I 变量)
爱普生 RC+ Modbus 浮点数:大端,和梅卡曼德 DCBA 匹配;如果数值乱跳,先核对这个字节序
四、握手逻辑
标准流程:
爱普生在等待位 → 写触发寄存器
梅卡曼德拍照 + ICP 匹配
匹配 OK:Flag=1,寄存器刷新为有效 XYZRxRyRz
爱普生读到 Flag=1,读取 6 维位姿,执行抓取
抓取完成,爱普生回复 ACK,清零触发,进入下一轮
Flag=0(NG):机器人不使用坐标,报警,不抓取
梅卡曼德标准接口自带这套指令映射(101 启动工程、102 获取位姿),不需要自己写寄存器握手,直接调用标准接口即可,比自定义寄存器稳定很多
五、常见坑 & 排查
连不上:主从搞反、端口不一致、防火墙、IP 跨网段、没启动梅卡曼德接口服务
数值超大 / 乱跳:字节序不对!梅卡曼德改成 ABCD 再试;或者爱普生侧交换高低字
坐标正常、姿态翻转:不是通讯问题,是欧拉角顺序 / 坐标轴方向,在 Mech-Vision 里用【翻转坐标轴】步骤修正
偶发断连:网线非屏蔽、接地不良、超时设 0、轮询太快
能读到但是一直是旧坐标:没有握手,视觉不会主动刷新,必须触发 + 标志位联锁
六、调试顺序
网络:ping 通,端口测试(Modbus 模拟器 / Modbus Slave 软件先模拟梅卡曼德)
梅卡曼德:启动 Modbus Slave 服务,看日志是否收到主站请求
爱普生 RC + 在线监控寄存器,看能不能读到稳定数值
单步测试:触发拍照 → Flag=1 → 读取坐标 → 机器人走点验证
手眼标定验证,确认姿态方向正确。

