Siemens S7
读取 Siemens S7 PLC 的 I、Q、M 或 DB 区。先向 PLC 工程人员确认 IP、CPU 型号、机架与槽号,以及一个允许读取的地址和类型。
先读一个 DB 变量
以下以 DB1 字节偏移 0 的 Int16 变量为例。DB 块与变量必须已经存在,不能照抄地址后期待 PLC 自动创建它。
- 打开“开发配置 → 采集配置”,新建 TCP 客户端通道,远程地址填
PLC的IP:102并保存。 - 在通道下新增设备,采集插件选择“Siemens S7”。
- “PLC类型”选择实际型号,不要把默认的
S200留给 S1200 或 S1500 使用。 - 填写项目要求的
Rack、Slot;LocalTSAP没有特殊连接要求时先保持默认。执行间隔先用1000毫秒,保存并启用设备。 - 新增变量,名称填
TestValue,寄存器地址填DB1.0,数据类型选Int16,保存并启用。 - 在变量列表查看在线状态和当前值,与 PLC 在线监视值对比。读到正确值后再添加其余地址。
S7-1200/1500 的 PLC 侧还需要允许相应的远程访问,按绝对地址读取的 DB 不能使用优化块访问。请 PLC 工程人员按实际 CPU 和 TIA 版本检查,不要为联调直接关闭所有保护。参见 Siemens 远程访问设置和 DB 访问限制。
常见地址怎么填
| PLC 点位 | 网关地址 | 数据类型 |
|---|---|---|
| DB1 第 0 字节起的有符号 16 位整数 | DB1.0 | Int16 |
| DB1 第 2 字节起的 32 位浮点数 | DB1.2 | Float |
| DB1 第 6 字节第 0 位 | DB1.6.0 | Boolean |
| M 区第 0 字节第 1 位 | M0.1 | Boolean |
地址指定起点,数据类型决定读多少字节。DB1.2 中的 2 是字节偏移,不是“第 2 个变量”。
支持的通道和数据类型
| 通道类型 | 配置前检查 |
|---|---|
| TCP 客户端 | 确认设备 IP、端口和网关到设备的网络可达性。 |
可选数据类型: Boolean、Byte、Int16、UInt16、Int32、UInt32、Int64、UInt64、Float、Double、String、Decimal
插件参数
Siemens S7 只使用 TCP 客户端通道,不填写串口参数。连接超时、重试和并发先保持默认,公共设置见采集配置。
协议参数
| 参数 | 说明 |
|---|---|
| PLC类型 | 选择实际 CPU 型号。默认 S200 不适用于所有 S7 PLC。 |
| Rack | CPU 所在的机架号,默认 0;按 PLC 项目填写。 |
| Slot | CPU 模块所在的槽位号,默认 0;按 PLC 项目填写,不是网口编号。 |
| LocalTSAP | 本地 TSAP 连接标识,默认 0。有专用连接要求时按 PLC 连接资源配置填写。 |
“PLC类型”选项为 S200、S200Smart、S300、S400、S1200 和 S1500。Rack、Slot 和 LocalTSAP 会参与重新建立 S7 会话,修改后需重新启用设备。
地址规则
- S7协议寄存器地址格式
- Txxxxx Timer寄存器,例如T100/T100.1
- Cxxxxx,Counter寄存器,例如C100/C100.1
- AIxxxxx,AI寄存器,例如AI100/AI100.1
- AQxxxxx,AQ寄存器,例如AQ100/AQ100.1
- Ixxxxx,I寄存器,例如I100/I100.1
- Qxxxxx,Q寄存器,例如Q100/Q100.1
- Mxxxxx,M寄存器,例如M100/M100.1
- DBxxxxx,DB寄存器,例如DB100.1/DB100.1.1
- 宽字符串在地址前加
W=true;,例如W=true;DB1.0;不加时按普通字符串解析。
DB 地址中的第一个数字是 DB 块号,后面的数字是字节偏移;最后再写 .0~.7 才表示位号,例如 DB100.1 为 DB100 的第 1 字节,DB100.1.1 为该字节的第 1 位。V 区等价于 DB1。
特殊方法
| 方法 | 用途 | 参数 |
|---|---|---|
ReadWriteDateAsync | 读取或写入 S7 日期值。 | address,可选 value |
ReadWriteDateTimeAsync | 读取或写入 S7 日期时间值。 | address,可选 value |
读取时不填写值;写入时只使用现场允许的安全点位。
设备调试
进入“开发配置 → 采集配置”,选择当前设备后点击“更多功能”并打开“调试”。
| 功能 | 作用 |
|---|---|
| 读写 | 按 S7 地址读取或写入测试值。写入前确认 DB/存储区和现场安全。 |
| 消息 | 查看 S7 会话、请求、响应和错误状态,用于核对机架、插槽、地址和数据长度。 |
读写

- 打开“读写”,填入已确认存在的地址,例如
DB1.0。 - 选择与 PLC 一致的数据类型,本例为
Int16,读取数量填1。 - 点击“读取”,核对返回值;失败时查看错误消息和“消息”页签。
不要点击“写入”来验证读取配置。写入会修改 PLC 数据,必须另行确认地址和现场安全。
消息

查看设备收发消息和协议日志,定位报文格式、连接和解析问题。
没读到正确值时
| 现象 | 先检查 |
|---|---|
| 无法连接 | IP、102 端口、PLC 型号、Rack/Slot 及 PLC 连接资源 |
| 能连接但 DB 读取失败 | DB 是否存在、偏移是否越界、访问权限及优化块设置 |
| 值不正确 | 字节偏移、数据类型和字节序,不要按变量序号填写地址 |
| 宽字符串乱码 | 地址是否带 W=true;,类型、数组长度与 PLC 字符串布局是否一致 |
| 特殊方法失败 | 参数、用户权限及 PLC 是否允许当前操作;不要反复尝试写入或控制 |