1. 项目背景与问题现象
上周调试一条包装生产线时遇到了诡异现象——传送带在无人操作时突然自行加速,差点造成产品堆积碰撞事故。作为有十年PLC编程经验的工程师,这种低级错误本不该发生,但恰恰是"经验主义"让我栽了跟头。这条产线采用西门子S7-1200 PLC控制,传送带由变频器驱动,通过PROFINET通讯接收速度指令。故障发生时监控画面显示速度设定值保持30Hz不变,但实际转速却飙升到50Hz,操作员紧急拍下急停按钮才避免损失。
关键现象提示:设定值未变但执行机构异常加速,这类问题往往出在信号传输环节或控制逻辑冲突
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 故障排查全流程实录
2.1 第一阶段:基础检查
首先执行标准排查流程:
-
硬件状态确认:
- 检查变频器报警历史(无故障记录)
- 测量模拟量输出端子电压(对应30Hz时应为5.6V,实测8.9V)
- 验证PROFINET通讯连接状态(绿色指示灯正常)
-
软件监控发现异常:
ST复制// 原速度控制逻辑 "Speed_Setpoint" := "HMI_Speed"; // HMI设定值直接赋给输出 "AO1" := "Speed_Setpoint"; // 模拟量输出通道在线监控发现"AO1"值周期性跳变,但源头"HMI_Speed"保持稳定。这指向两个可能:
- 模拟量输出模块硬件故障
- 程序存在隐性地址覆盖
2.2 第二阶段:深入追踪
使用交叉验证法锁定问题源:
-
信号隔离测试:
- 临时断开PLC与变频器连接,改用信号发生器输入4-20mA信号
- 变频器转速稳定,排除变频器自身问题
-
内存地址分析:
发现程序中存在多个对"AO1"的写入操作:ST复制// 手动调速功能块 IF "Manual_Mode" THEN "AO1" := "Manual_Speed"; // 冲突点! END_IF进一步检查发现"Manual_Mode"信号来自一个故障的限位开关(常闭触点氧化导致偶发导通)
2.3 根本原因分析
故障链还原:
code复制限位开关故障 → M
