第四章:PLC故障诊断——CPU、I/O模块与通信故障实战解析
大家好,我是老张。干自动化这行十几年,PLC故障诊断这块,说实话,是咱们工程师最头疼也最绕不开的坎。今天咱们就聊聊PLC最常见的三类故障:CPU罢工、I/O模块抽风、通信断联。我会结合我自己的实战经验,把诊断思路和工具用法掰开揉碎了讲。
4.1 CPU故障:核心“大脑”的异常行为
CPU故障,说白了就是PLC的“大脑”不干活了。我遇到过最夸张的一次,整条产线突然停机,所有指示灯乱闪,最后发现是CPU内部时钟晶振坏了。嗯,这种硬件故障其实不多见,更多是软件层面的问题。
4.1.1 常见CPU故障现象
- RUN灯不亮或闪烁:程序跑飞或硬件自检失败。
- ERR/ALARM灯常亮:系统检测到致命错误,比如看门狗超时。
- CPU停止运行(STOP模式):程序逻辑错误或内存溢出。
- 系统死机,无法响应:电源干扰或固件Bug。
核心诊断思路:先看指示灯,再查事件日志。别一上来就拆机,那是最后一步。
4.1.2 我的实战诊断流程
- 观察面板指示灯:三菱FX系列,ERR灯闪两下停一下,基本是电池电压低。西门子S7-1200,SF灯常亮,大概率是程序块调用错误。
- 强制复位:断电30秒再上电。我习惯先做这一步,能解决60%的假死问题。
- 连接编程软件:用博途或GX Works读取诊断缓冲区。这里能看到具体错误代码。
- 检查程序逻辑:比如死循环、除零错误、数组越界。我曾经被一个“FOR循环里嵌套了无限等待”坑过,CPU直接看门狗复位。
避坑指南:我曾经遇到一个案例,CPU频繁进入STOP模式,查了三天日志,最后发现是某个DB块数据被意外写成了非法值,导致系统调用异常。所以,养成给关键数据做范围检查的习惯,能省很多事。
4.2 I/O模块故障:现场信号的“神经末梢”
I/O模块故障,说白了就是传感器信号进不来,或者执行器指令出不去。这类故障占产线问题的70%以上。你想想看,一个接近开关坏了,整条线都得停。
4.2.1 输入模块故障诊断
输入模块坏,通常表现为信号“卡死”在0或1。我个人的诊断方法很简单:
- 万用表测电压:输入端对COM端,有24V但PLC读不到,说明模块通道烧了。
- 强制输入点:在软件里强制给一个信号,如果模块指示灯亮但程序没反应,那就是模块坏了。
- 检查公共端:很多故障其实是公共端保险丝熔断。嗯,这里要注意,别一上来就换模块。
4.2.2 输出模块故障诊断
输出模块故障更直观——该亮的灯不亮,该转的电机不转。我遇到过继电器输出模块触点粘连,导致电磁阀一直得电,差点把气缸顶坏。
| 故障现象 | 可能原因 | 我的处理方式 |
|---|---|---|
| 输出点指示灯亮,但负载不动作 | 输出晶体管击穿开路,或外部电源缺失 | 先测输出端电压,再查负载回路 |
| 输出点指示灯不亮,但负载有电 | 输出点短路,或模块内部漏电 | 断开负载,单独测模块输出 |
| 多个输出点同时失效 | 公共端保险丝烧断,或模块电源故障 | 检查模块供电保险,更换即可 |
警告:更换I/O模块时,务必先断电!我见过有人带电插拔,结果把背板总线烧了,整个机架报废。切记,断电操作是铁律。
4.3 通信故障:数据“高速公路”的拥堵与中断
通信故障,说白了就是PLC和触摸屏、变频器、上位机之间“失联”了。这类故障最难查,因为问题可能出在任何环节。
4.3.1 常见通信协议故障
- PROFINET/以太网:IP地址冲突、网线断、交换机端口故障。
- PROFIBUS/RS485:终端电阻没拨、通信速率不匹配、接地环路干扰。
- Modbus RTU:从站地址重复、CRC校验错误、波特率不一致。
4.3.2 我的通信故障排查三步法
- 物理层检查:先看网口指示灯,Link灯不亮就是物理断线。RS485的话,测A/B线之间的电压,正常应在1.5-5V之间。
- 软件层验证:用Ping命令测试IP连通性。我习惯在PLC里写一段通信状态监测程序,把通信错误次数记录到DB块里。
- 抓包分析:用Wireshark或专用诊断工具抓取报文。比如PROFINET丢包,基本就是网络负荷太大或硬件故障。
实战案例:我记得有一次,产线PROFIBUS网络频繁中断,换了所有接头都没用。最后用示波器看波形,发现是某段电缆屏蔽层接地不良,引入了共模干扰。重新做接地后,问题彻底解决。
4.4 PLC诊断工具与日志分析
工具用得好,故障跑不了。我手边常备三样东西:编程软件、诊断工具、万用表。下面说说怎么用它们看日志。
4.4.1 编程软件诊断功能
以西门子博途为例:
// 在OB1中调用诊断指令
"ReadDiagnostics"(
LADDR := 256, // 模块起始地址
RET_VAL := #ErrorCode, // 错误代码
INFO := #DiagInfo // 诊断信息
);
// 将ErrorCode和DiagInfo传到HMI显示
这段代码能实时读取模块状态。我习惯把错误代码显示在触摸屏上,操作工一看就知道哪个模块出问题了。
4.4.2 日志分析要点
- 时间戳:记录故障发生的确切时间,方便和产线日志对照。
- 错误代码:比如西门子的16#80A1代表“模块不存在”,三菱的4101代表“看门狗错误”。
- 事件顺序:看故障是同时发生还是先后触发。我遇到过变频器报故障导致PLC通信中断,但日志显示PLC先报错,变频器后报错,最后发现是PLC电源波动引起的连锁反应。
小技巧:养成定期导出诊断日志的习惯。我每周一早上第一件事,就是导出上周的PLC诊断缓冲区,存到服务器上。这样出问题时,有历史数据可以对比分析。
4.5 知识体系框架图
下面这张图,是我自己总结的PLC故障诊断核心逻辑。你把它记在脑子里,遇到问题就不会慌。
这张图把故障分类、诊断方法、恢复策略和预防措施串起来了。你照着这个框架去排查,效率至少提升一倍。
公众号:蓝海资料掘金营,微信deep3321