
MB_CLIENT — Modbus TCP 客户端
作为 Modbus TCP 客户端读写伙伴的保持寄存器。
在 TIA 里试一下
选一个示例块,通过 TiaLink 导入当前 TIA 项目:预检、默认不覆盖、不自动保存。示例块不会自动运行;导入后请在 OB1 调用并接变量。
一句话
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 访问伙伴寄存器。

图中 # 前缀表示块内局部变量;实际工程里也可以是全局标签或 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 |

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