架构:埃斯顿 = ModbusTCP 主站,梅卡曼德 Mech-Center=ModbusTCP 从站(Slave)分 4 个渠道:梅卡曼德日志、埃斯顿示教器通讯状态、机器人变量监视、Multiprog 软 PLC 监控
一、先在梅卡曼德 Mech-Center 看
打开【机器人与接口配置】→ Modbus TCP Slave,启动接口服务
右侧通讯日志重点看:
Client connected:出现埃斯顿机器人 IP → TCP 链路已经连上收到
101(启动工程)、206(获取位姿)指令、收到写寄存器请求 = 机器人写寄存器动作已经发出去日志输出应答、状态码 100 地址刷新(2100 = 取位姿成功)= 视觉侧正常返回数据
无日志:机器人根本没发报文;报错非法地址:寄存器地址写错
辅助验证:电脑开 Modbus Poll 连梅卡曼德,直接读寄存器(100 状态码、X/Y/Z/Rx/Ry/Rz),电脑能读通 = 梅卡曼德侧参数没问题,问题在埃斯顿。
梅卡曼德标准寄存器:
100:状态码(2100 成功,其余为错误码)
101:写指令寄存器(101 启动工程,206 获取位姿)
102 开始:6 维位姿(6 个浮点数,每个占 2 个寄存器)
二、埃斯顿示教器查看 Modbus 连接状态
路径:设置 → 通讯设置 → ModbusTCP
先看设备列表:新增梅卡曼德从站(IP、端口、Slave ID、超时)
状态显示【已连接】:TCP 握手成功
状态【超时 / 断开】:IP、端口、防火墙、梅卡曼德服务没开
埃斯顿示教器原生界面不能直接在线看寄存器实时数值,只能看链路通断,寄存器数值必须靠【程序变量监视】
程序里用 Modbus 读写指令,自带错误返回码(核心判断依据)
MODBUS_READ(从站号,起始寄存器,读取数量,存放数组,超时,ERR)
MODBUS_WRITE(从站号,起始寄存器,写入数量,写入数组,超时,ERR)
ERR=0:读写指令正常收到从站应答
ERR=1:超时无应答
ERR=2:非法地址(最常见,寄存器起始地址错)
ERR=3:非法功能码、从站拒绝
示教器打开【变量监视】,监控 ERR 变量、接收数组(D 实数变量) 比如读取梅卡曼德 100 号状态码到 D100,D100=2100 代表取位姿成功
三、iER 新款机型
iER 系列是 Multiprog 软 PLC 做 Modbus 主站库:ER_ModbusTcp 库,指令:ReadModbusReg / WriteModbusReg,还有连接状态变量 RobModbusCnctStatewebsite-bu...
电脑打开 Multiprog 软件,在线连接控制器
找到 Modbus 功能块,在线监控:
RobModbusCnctState:1 = 连接成功,0 = 断开
指令的
Error、ErrorID:错误 ID 对应 Modbus 异常码直接监控接收寄存器数组,实时看到 100 状态码、XYZ 姿态数值
这个是唯一可以直接看寄存器数据流的方式,调试 3D 视觉首选
四、4 层判断标准
链路层成功:梅卡曼德日志显示机器人 IP 接入 + 埃斯顿 Modbus 状态 = 已连接 → 仅 TCP 连上,不代表寄存器读写没问题
寄存器读写交互成功:
埃斯顿写 101 到梅卡曼德 101 寄存器,梅卡曼德日志收到 101
埃斯顿读 100 寄存器,读到 2100 → ERR=0,状态码正常,说明寄存器读写这条链路没问题
数据有效(应用层):读到 X/Y/Z/Rx/Ry/Rz 是合理毫米值,字节序匹配
数值乱跳、超大负数:字节序不匹配(埃斯顿默认大端 ABCD,梅卡曼德切换 ABCD/DCBA)
姿态翻转:不是 Modbus 通讯问题,是梅卡曼德欧拉角 / 坐标轴方向
五、标准握手调试流程
埃斯顿写寄存器 101=101(启动工程)→ 梅卡曼德日志收到 101
埃斯顿轮询读寄存器 100
读到 2100:视觉匹配完成,6 维位姿寄存器已经刷新
埃斯顿读取 102 开始的 6 个浮点数(XYZRxRyRz)
抓取完成,埃斯顿写 999 清除寄存器,进入下一轮
禁止一直循环读寄存器,必须用状态码联锁,否则读到旧坐标
六、高频坑
显示已连接,但读出来一直是 0:寄存器起始地址是逻辑 0 起始,梅卡曼德文档注意 40001 偏移
Modbus Poll 电脑能读,机器人读不到:埃斯顿 Modbus 主站授权没开、指令里从站号写错
偶发读到旧坐标:没有状态码联锁,视觉不会主动清零刷新
字节序:埃斯顿大端 ABCD,梅卡曼德 Modbus 参数里切换 ABCD/DCBA
七、快速排查对照表
表格
| 现象 | 结论 |
|---|---|
| 梅卡曼德日志无 Client 连接 | TCP 没连上,IP / 端口 / 防火墙 / 服务没启动 |
| 已连接,ERR 持续 = 2 | 寄存器起始地址写错(梅卡曼德地址偏移坑) |
| ERR=0,D 变量数值乱跳 | 字节序不匹配 |
| ERR=0,D100 一直是 0 | 指令发出去了,但是视觉没有完成匹配,状态码没刷新 |
| D100=2100,姿态翻转 | 坐标系 / 欧拉角设置问题,通讯没问题 |

