
GET — S7 通信读取
通过 S7 连接读取伙伴 PLC 的数据区。
在 TIA 里试一下
选一个示例块,通过 TiaLink 导入当前 TIA 项目:预检、默认不覆盖、不自动保存。示例块不会自动运行;导入后请在 OB1 调用并接变量。
一句话
GET 通过 S7 连接读取伙伴 PLC 的数据区。
符号与引脚
分类:通信
需要实例
模板值:remote_type, local_type
| 引脚 | 方向 | 说明 |
|---|---|---|
en | 流输入 | 使能输入 |
REQ | 输入 | 读请求 |
ID | 输入 | S7 连接 ID |
ADDR_1 | 输入 | 远程地址 1 |
ADDR_2 | 输入 | 远程地址 2 |
ADDR_3 | 输入 | 远程地址 3 |
ADDR_4 | 输入 | 远程地址 4 |
RD_1 | 输入 | 本地读取区 1 |
RD_2 | 输入 | 本地读取区 2 |
RD_3 | 输入 | 本地读取区 3 |
RD_4 | 输入 | 本地读取区 4 |
NDR | 输出 | 新数据就绪 |
ERROR | 输出 | 错误 |
STATUS | 输出 | 状态码 |
符号见下面的最小示例;引脚名与方向来自 lad-ir 指令目录,说明为本站补充。
最小示例
Enable=1 时每个扫描调用;REQ 触发读取,按 ID 指定的 S7 连接从 Remote 读到 Local;NDR=1 表示新数据就绪。

图中 # 前缀表示块内局部变量;实际工程里也可以是全局标签或 DB 变量。
怎么工作
GET是 FB,需要静态实例(本页Inst_GET)。ID是 S7 连接 ID;ADDR_1用Remote类型描述远程地址,RD_1是本地读取区(Variant)。- 模板
remote_type=Remote、local_type=Variant。 NDR/ERROR/STATUS给出执行状态;它是 terminal,rung 在它这里结束。- 导入只保证块能编译;实际通信还需要在 TIA 中配置 S7 连接和伙伴地址。
常用场景
1. 读取一块数据
同上面的最小示例。
2. 读取远程数据区
把伙伴 PLC 的 DB/区读到本地工作数组。
| 输入 | 示例值 | 说明 |
|---|---|---|
Enable |
TRUE |
每个扫描调用 FB |
REQ |
0 → 1 → 0 |
触发一次读取 |
ID |
1(图中常量) |
S7 连接 ID,和 TIA 连接组态一致 |
Remote |
伙伴 DB1.DBX0.0 BYTE 16 |
远程地址,按实际项目填写 |
Local |
本地 Array[0..15] of Byte |
读取目标区 |
ID 已写成常量;Remote/Local 是地址和数据区,不能直接写常量,按实际项目绑定。

常见坑
- 没配 S7 连接:
ID要和 TIA 里的连接一致;导入不会自动建连接。 - 地址不匹配:
Remote/Local的类型和长度要一致。 - 同时多个作业:同一连接不要并发多个 GET/PUT。
- 权限:伙伴 PLC 要允许 PUT/GET 访问。
- STATUS:出错先看
STATUS。