版本: v1.0 修改日期: 2026-05-29
本 SOP 规范自动化设备在通讯离线、写入失败、数据异常等故障场景下的排查流程,建立标准化的排查方法论与工具使用规范,确保故障能够高效定位与恢复,减少设备停机时间。适用于所有采用 S7 协议、Modbus 协议及其他工业通讯协议的自动化设备现场及远程运维排障。
1 排查总体思路
故障排查遵循”从外到内、从物理到逻辑、从通用到专用”的原则,按照下列四个层面逐级排查:
- 物理层:线缆、接口、供电、指示灯
- 网络层:IP、端口、路由、防火墙
- 协议层:协议参数、通讯方式、超时设置
- 应用层:寄存器/数据区、读写权限、数据类型、业务逻辑
2 离线故障排查通用流程
步骤1:物理层与网络层验证
2.1.1 检查物理连接
- 确认设备电源、网线/串口线连接牢靠。
- 观察PLC通讯模块指示灯(Link/Activity/Error)状态。
- 确认近期网络拓扑、交换机配置是否有变动。
2.1.2 网络连通性测试
工具1:ping 命令 —— 验证IP层连通性
# Windows / Linux 通用
ping 192.168.1.100
# 持续ping观察丢包率
ping -t 192.168.1.100 # Windows
ping 192.168.1.100 # Linux(默认持续)
# 指定包大小,排查MTU问题
ping -l 1400 192.168.1.100 # Windows
ping -s 1400 192.168.1.100 # Linux判读要点:
- 全部超时 → 物理断开、IP不可达、防火墙阻断
- 间歇性丢包 → 线缆质量差、电磁干扰、网络拥塞
- 延迟高(>100ms) → 网络质量差,可能影响通讯稳定性
2.1.3 端口连通性测试
工具2:curl / telnet —— 验证TCP端口可达性
# 方式一:curl(推荐,Windows/Linux通用)
curl -v telnet://192.168.1.100:102 # S7默认端口
curl -v telnet://192.168.1.100:502 # Modbus TCP默认端口
# 方式二:telnet
telnet 192.168.1.100 502
# 方式三:PowerShell(Windows)
Test-NetConnection -ComputerName 192.168.1.100 -Port 502
# 方式四:nc / ncat(Linux)
nc -zv 192.168.1.100 502判读要点:
Connected/Succeeded→ 端口可达,协议层以下无问题Connection refused→ 目标主机在线但端口未开放(服务未启动)Connection timed out→ 被防火墙阻断或主机不可达
2.1.4 本地端口占用检查
当 PLC 作为 Server、而本地作为 Client 却无法建立连接时:
# Windows:查看端口占用
netstat -ano | findstr ":502"
netstat -ano | findstr ":102"
# Linux
ss -tlnp | grep 502
lsof -i :5022.1.5 防火墙与安全软件检查
- 临时关闭本地防火墙/杀毒软件测试通讯是否恢复。
- 确认是否有安全软件(如部分工控安全网关)过滤了S7/Modbus协议报文。
步骤2:协议层验证
2.2.1 抓包分析
工具3:Wireshark —— 终极诊断工具
# 常用过滤表达式
tcp.port == 102 # S7协议
tcp.port == 502 # Modbus TCP
s7comm # S7协议解析
mbtcp # Modbus TCP协议解析
ip.addr == 192.168.1.100 # 特定IP流量
mbtcp.func_code == 3 # Modbus功能码03判读要点:
- 只有 SYN 无 SYN-ACK → 对端未响应(端口未开或被阻断)
- 有 TCP 三次握手,无应用层数据 → 协议参数不匹配
- 有异常响应码 → 直接定位到应用层问题(见各协议专项文档)
2.2.2 协议调试工具
工具4:协议专用调试工具
- Modbus:Modbus Poll(主站模拟)、Modbus Slave(从站模拟)、ModScan
- S7:S7-PLCSIM、NetToPLCsim、Snap7 Demo Client
- 通用:KEPServerEX、Wireshark
使用第三方工具独立连接,可快速判定问题出在主站侧还是从站侧:
- 第三方工具能连通 → 主站(上位机/SCADA/组态软件)配置有误
- 第三方工具也连不通 → 从站(PLC/设备)侧或网络问题
步骤3:应用层验证
- 确认主站读写地址在设备支持范围内。
- 核对数据类型、字节序、字序设置一致。
- 核对读写权限、访问控制列表配置。
详细应用层问题请参考对应协议的专项文档:
- 《S7常见问题排查》:8012-S7-协议常见问题排查.md
- 《Modbus常见问题排查》:8011-Modbus-协议常见问题排查.md
3 排查工具清单
| 工具 | 用途 | 适用场景 |
|---|---|---|
ping | IP层连通性 | 第一步基础检查 |
curl / telnet | TCP端口可达性 | 确认服务是否监听 |
netstat / ss | 本地端口占用 | 排查端口冲突 |
tracert / traceroute | 路由路径 | 跨网段通讯问题 |
| Wireshark | 报文抓取与协议解析 | 协议层深度分析 |
| Modbus Poll / Slave | Modbus主从站模拟 | 隔离主/从站问题 |
| S7-PLCSIM / Snap7 | S7协议模拟与调试 | 隔离主/从站问题 |
4 排查记录模板
为便于故障复盘,排查过程建议记录以下信息:
故障时间:YYYY-MM-DD HH:MM
设备信息:品牌/型号/固件版本
协议类型:S7 / Modbus TCP / Modbus RTU
故障现象:[离线 / 写入失败 / 数据异常 / 其他]
排查步骤:
1. ping 测试结果:
2. 端口连通性:
3. 抓包分析:
4. 参数核对:
根因:
解决方案:
遗留问题:5 注意事项
- 设备数据及参数变更后须做好记录,避免信息丢失或误操作。
- 排查过程建议逐步验证,先简单后复杂。
- 写入操作具有一定风险,建议在设备停机或非关键时段执行,并提前备份原始参数。
- 多主站同时访问同一从站时,应规划好读写时序与权限分配,避免数据竞争。
- 抓包/调试工具的使用需遵守现场安全规范,严禁在生产高峰期进行可能影响通讯的操作。
Last updated on