PLC故障快速定位技巧:通过自定义日志系统1分钟锁定现场异常点
现场故障最怕“灯亮了但不知道哪一段先错”。原厂诊断缓冲只存系统事件,业务级急停、阀超时、通讯闪断、批次异常要自己建日志。统一模型为“故障码+等级+时间戳+触发条件+相关IO/数据区+确认状态”,PLC写环形缓冲,HMI/上位按时间倒序筛,1分钟可定位到具体工位和软元件。
一、西门子:DB环型报警日志
用UDT定义单条记录,数组做环形队列,RD_SYS_T打时间戳,关键记录放RETAIN或写SD卡。S7-1200/1500 HMI离线也能自存报警,避免只依赖WinCC。
TYPE AlarmRec :
STRUCT
Ts : DTL; // 16字节时间戳
Code : UINT; // E001急停 E002阀超时 E003通讯断
Level : USINT; // 1停机 2预警 3信息
Src : STRING[32]; // 触发条件,如X急停/DB10.DBX3.0
Val : STRING[32]; // 关联值,如实际位置/错误字
Ack : BOOL;
END_STRUCT
END_TYPE
FUNCTION_BLOCK FB_AlarmLog
VAR_IN_OUT Log : ARRAY[1..200] OF AlarmRec; END_VAR
VAR Input Code:UINT; Level:USINT; Src:STRING[32]; Val:STRING[32]; AckIn:BOOL;
VAR Static Idx:INT:=1; Edge:BOOL; END_VAR
IF NOT Edge AND Code>0 THEN
Idx := Idx+1; IF Idx>200 THEN Idx:=1; END_IF;
Log[Idx].Ts:=RD_SYS_T();
Log[Idx].Code:=Code; Log[Idx].Level:=Level;
Log[Idx].Src:=Src; Log[Idx].Val:=Val; Log[Idx].Ack:=FALSE;
END_IF;
Edge := (Code>0);
IF AckIn THEN Log[Idx].Ack:=TRUE; END_IF;
系统级停机再用TIA“在线和诊断—诊断缓冲区”看事件ID、模块、停止原因,可另存txt归档; 自定义业务日志补工艺细节,两者结合最省时间。
二、三菱:特殊寄存器+DM日志
FX3U/5U用错误标志与特殊寄存器:M8004错误标志、D8004主错误码、D8060子码、D8010当前扫描/D8012最大扫描; 自定义报警写保持D区,按“时间5字+故障码+等级+源地址”入环。
// 伪逻辑:急停X0上升沿记日志
IF M8000 AND X0 AND NOT M100 THEN
D1000 := K1; // 写指针区自增由程序管理
D1001 := K001; // 故障码E001
D1002 := K1; // 等级1停机
DMOV D8018 D1003; // 年月日~时分秒按机型拆D
MOV K0X0 D1008; // 源地址/状态字
SET M100; // 防重复写入
END_IF;
IF NOT X0 THEN RST M100; END_IF;
D区保持范围按型号锁Latch/电池备份,避免复位清日志; GX Works在线读D8004/D8060可和自定义DM交叉验证。
三、欧姆龙:错误日志+DM/EM历史
CP/CJ用CX-Programmer看“错误日志”,ERR常亮查致命、闪烁查非致命; C系列可用DM错误历史(如C200H DM0969~0999存最近错误码和时间), 自定义报警写DM数组,结构同西门子但用BCD/十进制按项目约定。
现场通用流程:先看PWR/RUN/ERR/COMM灯,再读软件错误日志,最后按自定义日志的“时间—码—源”反查梯级,比逐点强制快很多。
四、1分钟定位闭环
上位/Python定时拉日志数组,按Level=1停机置顶、时间倒序:
import requests
recs=requests.get("http://edge/api/alarm?dev=LineA").json()["log"]
hit=sorted([r for r in recs if r["level"]<=1], key=lambda x:x["ts"], reverse=True)[:10]
for r in hit: print(r["ts"], r["code"], r["src"], r["val"])
命中急停类:查对应安全输入、复位按钮、安全继电器反馈;命中阀超时:看输出磁开、气压、定时器预设;命中通讯断:看交换机端口、PLC IP、从站诊断缓冲区。
日志只存“已确认发生”的事件,传感器加10~300ms防抖,安全信号用常闭,停机故障不自动复位,必须人工确认。
高频故障导CSV做TOP10,反向改点表、加互锁、调扫描周期;S7可WRIT_DBL写SD、 三菱/欧姆龙定期上装D/DM做月度追溯。
按“品牌原生诊断+自定义环型业务日志+上位倒序筛选”落地,偶发停机、间歇通讯、阀卡滞都能从日志直接看到首次异常时间点与相关软元件,不必等故障复现再蹲点。





