跳到正文
Learn-LAD
梯形图示例库/LAD 指令手册/MB_CLIENT — Modbus TCP 客户端

MB_CLIENT — Modbus TCP 客户端

作为 Modbus TCP 客户端读写伙伴的保持寄存器。

通信 S7-1200/1500 TIA V19 别名:Modbus TCP 客户端 / MB_CLIENT

在 TIA 里试一下

选一个示例块,通过 TiaLink 导入当前 TIA 项目:预检、默认不覆盖、不自动保存。示例块不会自动运行;导入后请在 OB1 调用并接变量。

TiaLink 设置

默认 http://localhost:8080。也可以在本页地址后加 ?tialink= 临时指定。

TiaLink 启动时若设置了 --api-token,这里要填相同的值;只保存在本机浏览器 localStorage,不会上传。

一句话

MB_CLIENT 作为 Modbus TCP 客户端,读写伙伴的保持寄存器。

符号与引脚

分类:通信 需要实例 模板值:无
引脚方向说明
en流输入使能输入
REQ输入请求
DISCONNECT输入断开连接
MB_MODE输入读写模式
MB_DATA_ADDR输入起始寄存器地址
MB_DATA_LEN输入寄存器数量
MB_DATA_PTR输入数据区
CONNECT输入连接参数
RD_MB_DATA_ADDR输入读起始地址(双区模式)
RD_MB_DATA_LEN输入读数量(双区模式)
WR_MB_DATA_ADDR输入写起始地址(双区模式)
WR_MB_DATA_LEN输入写数量(双区模式)
RD_MB_DATA_PTR输入读数据区(双区模式)
WR_MB_DATA_PTR输入写数据区(双区模式)
DONE输出完成
BUSY输出忙
ERROR输出错误
STATUS输出状态码

符号见下面的最小示例;引脚名与方向来自 lad-ir 指令目录,说明为本站补充。

最小示例

Enable=1 时每扫描调用;REQ 触发一次请求,按 MB_MODE/MB_DATA_ADDR/MB_DATA_LEN 访问伙伴寄存器。

MB_CLIENT_Example:Network 1 — 读取保持寄存器

图中 # 前缀表示块内局部变量;实际工程里也可以是全局标签或 DB 变量。

怎么工作

  • MB_CLIENT 是 FB,需要静态实例和 TCON_IP_v4 连接参数。
  • MB_MODE 选择读/写(示例用 0 读保持寄存器);MB_DATA_ADDR 起始地址,MB_DATA_LEN 寄存器数,MB_DATA_PTR 数据区。
  • DISCONNECT=TRUE 断开连接;正常运行时保持 FALSE。
  • DONE/BUSY/ERROR/STATUS 给出执行状态。
  • 这是 Modbus TCP(以太网),默认端口 502;实际通信要配伙伴 IP。

常用场景

1. 读取保持寄存器

同上面的最小示例。

2. 读取 4 个寄存器

从伙伴地址 100 开始读 4 个保持寄存器到 Data[0..3]。

参数 示例值
Enable TRUE
REQ 0 → 1 → 0
MB_MODE 0(读)
MB_DATA_ADDR 100
MB_DATA_LEN 4
Data Array[0..3] of Word
Conn 伙伴 192.168.0.10:502
MB_CLIENT_ReadHolding:Network 1 — 读取保持寄存器

常见坑

  • 没配连接:CONNECT 的 IP/端口/角色要正确;导入只保证编译。
  • 地址/数量:Modbus 地址和 PLC 地址偏移不同,按伙伴手册确认。
  • REQ 一直为 1:用上升沿触发,避免重复请求。
  • 缓冲区类型:MB_DATA_PTR 的类型/长度要和 MB_DATA_LEN 匹配。
  • 多客户端:同一伙伴端口不要被多个客户端同时占用。

← 返回 LAD 指令手册