跳到主要内容
版本:dev

监控西门子 S7 PLC

通过 S7 协议采集并监控西门子 S7 PLC 的变量值和响应时间。

协议:S7

监控前准备​

  1. 确保 HertzBeat 采集器能够通过 S7 TCP 端口访问目标 PLC,默认端口为 102。
  2. 确保 PLC 已启用所需的 S7 通信,并允许读取待监控的变量地址。
  3. 从 PLC 配置或自动化工程师处获取机架号、槽号、控制器类型及可读变量地址。

HertzBeat 使用 Apache PLC4X plc4j-driver-s7 0.12.0 与 PLC 通信,地址文本会原样传递给该驱动,不会进行转换。请按目标 PLC 的变量类型使用 PLC4X S7 地址格式。

配置参数​

参数说明
S7 服务 Host目标 PLC 的 IPv4、IPv6 地址或域名。无需、也不要填写 s7:// 等协议前缀。
端口PLC 的 S7 TCP 端口,模板默认值为 102。
rackId目标 PLC 的机架号,必须为数字,默认值为 0。
slotId目标 PLC CPU 的槽号,必须为数字,默认值为 0。
controllerType传递给 PLC4X S7 驱动的 PLC 控制器类型。模板默认值为 S7_1500;支持 ANY、S7_200、S7_300、S7_400、S7_1200、S7_1500 和 LOGO,应按实际控制器填写。
请求超时时间(ms)单次采集请求允许等待的最长时间。模板默认值为 6000 ms,取值范围为 400 至 200000。该高级参数默认在界面中隐藏。
保持寄存器地址必填。用于读取数值型或其他非布尔型 PLC 变量的地址列表;每一项均需为合法的 PLC4X S7 标签地址。
线圈寄存器地址必填。用于读取布尔型 PLC 变量的地址列表;每一项均需为合法的 PLC4X S7 标签地址。布尔结果会转换为 true=1、false=0。

界面沿用 PLC 采集器的“保持寄存器”和“线圈”名称来组织指标,但两个列表中填写的都是原生 S7 标签地址,而不是 Modbus 地址。

地址示例​

地址应包含 S7 内存位置和数据类型。以下为常见 PLC4X S7 地址示例:

用途地址示例
数据块 1 中的布尔值%DB1.DBX0.0:BOOL
数据块 10 中的 16 位有符号整数%DB10.DBW20:INT
布尔输入%I0.0:BOOL
标志(Marker)内存中的 32 位有符号整数%MD100:DINT

最直接的配置方式是在每个地址列表中填写 4 个单值地址。两个指标集合各自只有 4 个固定输出字段,HertzBeat 会校验每个地址列表产生的读取值数量必须恰好为 4。若某个地址使用模板支持的 [n] 批量读取表示法,则会按 n 个值计数;请确保展开后的总数仍为 4。

采集指标​

指标集合:holding-register​

该指标集合优先级为 0,会最先执行。若它采集失败,本次采集不会继续执行优先级较低的 coil 指标集合。

指标单位说明
responseTimems完成一次 S7 读取请求所需的时间。
address-0无保持寄存器地址列表解析得到的第 1 个值。
address-1无保持寄存器地址列表解析得到的第 2 个值。
address-2无保持寄存器地址列表解析得到的第 3 个值。
address-3无保持寄存器地址列表解析得到的第 4 个值。

指标集合:coil​

指标单位说明
responseTimems完成一次 S7 读取请求所需的时间。
address-0无线圈寄存器地址列表解析得到的第 1 个值;布尔值会转换为 0 或 1。
address-1无线圈寄存器地址列表解析得到的第 2 个值;布尔值会转换为 0 或 1。
address-2无线圈寄存器地址列表解析得到的第 3 个值;布尔值会转换为 0 或 1。
address-3无线圈寄存器地址列表解析得到的第 4 个值;布尔值会转换为 0 或 1。

常见问题排查​

现象排查方法
连接失败或超时检查采集器到目标 Host 和端口的网络连通性,并确认 PLC 已启用 S7 通信。
已建立连接但读取失败检查 rackId、slotId、controllerType,以及 PLC 账户或 PLC 工程中的读取权限。
地址无效或标签读取失败根据 PLC 工程和 PLC4X S7 地址格式检查地址语法与数据类型。
出现别名字段与地址数量不匹配的校验错误确认每个地址列表展开后均恰好得到 4 个值。
仅有 holding-register 指标先处理 holding-register 的采集错误;它是优先级为 0 的可用性指标集合。