当前位置:首页 > 工业控制 > 工业控制
[导读]现场故障最怕“灯亮了但不知道哪一段先错”。原厂诊断缓冲只存系统事件,业务级急停、阀超时、通讯闪断、批次异常要自己建日志。统一模型为“故障码+等级+时间戳+触发条件+相关IO/数据区+确认状态”,PLC写环形缓冲,HMI/上位按时间倒序筛,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做月度追溯。

按“品牌原生诊断+自定义环型业务日志+上位倒序筛选”落地,偶发停机、间歇通讯、阀卡滞都能从日志直接看到首次异常时间点与相关软元件,不必等故障复现再蹲点。



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭