监控西门子 S7 PLC
通过 S7 协议采集并监控西门子 S7 PLC 的变量值和响应时间。
协议:S7
监控前准备
- 确保 HertzBeat 采集器能够通过 S7 TCP 端口访问目标 PLC,默认端口为
102。 - 确保 PLC 已启用所需的 S7 通信,并允许读取待监控的变量地址。
- 从 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 指标集合。
| 指标 | 单位 | 说明 |
|---|---|---|
| responseTime | ms | 完成一次 S7 读取请求所需的时间。 |
| address-0 | 无 | 保持寄存器地址列表解析得到的第 1 个值。 |
| address-1 | 无 | 保持寄存器地址列表解析得到的第 2 个值。 |
| address-2 | 无 | 保持寄存器地址列表解析得到的第 3 个值。 |
| address-3 | 无 | 保持寄存器地址列表解析得到的第 4 个值。 |
指标集合:coil
| 指标 | 单位 | 说明 |
|---|---|---|
| responseTime | ms | 完成一次 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 的可用性指标集合。 |