返回主站|会员中心|保存桌面

再生机器人综合服务商    

二手机器人|二手机器人配件|kuka国产控制柜

联系方式
  • 联系人:方经理
  • 电话:13073017555
新闻分类
  • 暂无分类
首页 > 新闻中心 > Multiprog 软 PLC 如何监控 Modbus TCP 的寄存器读写状态?
新闻中心
Multiprog 软 PLC 如何监控 Modbus TCP 的寄存器读写状态?
发布时间:2026-10-28        浏览次数:3        返回列表

核心:使用埃斯顿官方库 ER_ModbusTcp,包含 RobModbusCnctState、ReadModbusReg、WriteModbusReg 这几个功能块,在线监控功能块引脚 + 变量表,是最标准的方式

一、前期准备

  1. 电脑网线直连 iER 控制器网口,电脑 IP 和控制器同网段

  2. 打开 Multiprog 工程,程序里已经调用 ER_ModbusTcp 库的功能块(主站,对接梅卡曼德 Modbus 从站)

  3. 梅卡曼德侧:Modbus TCP Slave 已经启动、IP / 端口 / 字节序配置好

二、第一步:在线连接控制器,进入在线监控模式

  1. 菜单栏:在线 → 连接,选择机器人控制器 IP,建立连接

  2. 连接成功后,点 启动监控(Debug),程序进入在线模式,所有引脚实时刷新

 必须先把工程下载到控制器,再在线监控;离线模式看不到实时数值

三、监控【TCP 链路连接状态】(RobModbusCnctState)

这个块专门看底层 TCP 是否连上,优先看这个:

  • 输入:Enable → 置 TRUE,持续检测连接

  • 输出:

    • ModbusConcted(BOOL):TRUE=TCP 连接成功;FALSE = 断开

  • 这个只能判断链路通断,不等于寄存器读写正常(连上也可能地址错、功能码报错)

四、监控读 / 写功能块(ReadModbusReg / WriteModbusReg)

引脚含义

  • EnRead / EnWrite:使能,TRUE 才发起读写请求

  • RegIndex:要读写的寄存器编号(梅卡曼德标准:100 状态码、101 指令寄存器)

  • RegValue:读到 / 要写入的寄存器原始值(WORD)

  • Valuevalid(BOOL):TRUE = 本次读写收到有效应答;FALSE = 无应答 / 报错

  • Error(BOOL):异常标志

  • ErrorID(INT):错误码

    • ErrorID=0:读写正常

    • 非 0:超时、非法地址、从站拒绝、SlaveID 错误等

梅卡曼德是 3D 视觉,6 维位姿是32 位浮点数,一个浮点数占用 2 个连续 WORD 寄存器,你要在 Multiprog 里自己做 WORD 拼接转 REAL,这里很容易踩字节序坑

两种监控方式

方式 1:直接在程序界面监控功能块引脚

找到 ReadModbusReg/WriteModbusReg 方块,在线时:

  • 引脚会实时变色:TRUE 绿色、FALSE 灰色

  • 直接看 Valuevalid、Error、ErrorID、RegValue

  • 写指令(给梅卡曼德写 101 启动、206 取位姿):看 Write 块的 Valuevalid 是否变 TRUE,代表梅卡曼德已经收到这条写指令

方式 2:变量表监控

  1. 打开【变量】窗口,把所有接收变量、状态变量添加到监视列表

  2. 可以自定义变量:

    • 状态字:Mech_Status(对应寄存器 100)

    • 指令输出:Mech_Cmd(寄存器 101,写 101/206)

    • X_Word1、X_Word2:拼接成 REAL X 坐标

  3. 在线后,变量表自动刷新;可以添加强制(Force),手动写寄存器给梅卡曼德发测试指令

五、逻辑分析仪

Multiprog 自带逻辑分析仪(Logic Analyzer)

  1. 把 ModbusConcted、Valuevalid、Error、Mech_Status 添加到采集通道

  2. 启动采集,抓取时序:

    • 机器人发 101 指令 → 梅卡曼德处理 → 状态码变成 2100 → 读坐标

    • 适合排查偶发断连、丢应答、旧坐标不刷新

六、结合梅卡曼德日志联合判断

Multiprog 看到:

  1. ModbusConcted=TRUE,但Valuevalid一直FALSE→ TCP 连上了,但是寄存器地址、SlaveID、功能码不对;去梅卡曼德日志看有没有收到请求

  2. Valuevalid=TRUE,读到状态码 = 2100 , 寄存器读写完全成功,视觉匹配 OK,坐标有效

  3. Valuevalid=TRUE,状态码 = 0 或者其他错误码 → 通讯正常,但是视觉没有匹配到工件

  4. 读到浮点数数值乱跳、超大负数 → 字节序不匹配

七、标准握手监控流程

  1. 埃斯顿 Multiprog:WriteModbusReg 写 101 到寄存器 101 → 看 Write 块Valuevalid=1

  2. 轮询 ReadModbusReg 读寄存器 100(状态码)

  3. 读到状态码 = 2100 → 读取 102 开始的 6 个浮点数(XYZ Rx Ry Rz)

  4. 抓取完成,写清除指令,进入下一轮

八、常见错误码速查

  • ErrorID=1:超时

  • ErrorID=2:非法寄存器地址

  • ErrorID=3:从站异常应答

  • ErrorID=0、Valuevalid=TRUE:本次读写交互正常.

收缩
  • QQ咨询

  • 电话咨询

  • 13073017555
  • 添加微信客服