Python自动爬设备报警日志,每天省1小时

每天早上到公司第一件事:打开SECS/GEM日志界面,手动抄报警代码到Excel,再分类统计。8台设备抄完刚好1小时。上个月实在受不了了,用Python写了个自动采集脚本,现在5分钟搞定。

一、痛点:手动抄报警有多浪费时间

我们车间的设备报警日志存在SECS日志服务器上,界面是2005年风格的网页,不支持导出。每天要做的事情:打开8台设备的日志页面→手动筛选当天报警→抄录报警代码、时间、设备ID→按类型分类统计→写进日报。整个过程约60分钟,而且经常抄错代码。我有一次把AL-2050抄成AL-2500,查了2个小时找不到这条报警在哪。

二、自动采集方案

核心思路:用requests模拟登录日志服务器,BeautifulSoup解析HTML,pandas自动分类统计,ThreadPoolExecutor并行8台设备。关键代码(55行):

import requests

from bs4 import BeautifulSoup

import pandas as pd

from datetime import datetime

from concurrent.futures import ThreadPoolExecutor

class AlarmCollector:

def init(self, server_url, username, password):

self.session = requests.Session()

self.server = server_url

resp = self.session.post(f'{self.server}/login', data={'user': username, 'pwd': password})

resp.encoding = 'shift-jis' # Japanese equipment page encoding

def fetch_alarms(self, equipment_id, date=None):

date = date or datetime.now().strftime('%Y-%m-%d')

resp = self.session.get(f'{self.server}/alarmlog', params={'eqp': equipment_id, 'date': date})

resp.encoding = 'shift-jis'

soup = BeautifulSoup(resp.text, 'html.parser')

rows = soup.select('table.alarm-table tr')1:

alarms = \[\]

for row in rows:

cols = row.find_all('td')

if len(cols) >= 4:

alarms.append({

'time': cols0.text.strip(),

'eqp_id': equipment_id,

'alarm_code': cols1.text.strip(),

'alarm_msg': cols2.text.strip(),

'severity': cols3.text.strip()

})

return pd.DataFrame(alarms)

def daily_report(self, eqp_list):

with ThreadPoolExecutor(max_workers=8) as executor:

results = list(executor.map(self.fetch_alarms, eqp_list))

df = pd.concat(results, ignore_index=True)

return df, df.groupby('alarm_code').size().sort_values(ascending=False)

collector = AlarmCollector('http://192.168.1.100', 'engineer', 'pwd123')

eqp_list = 'ETCH-01','ETCH-02','ETCH-03','CVD-01','CVD-02','CVD-03','LITHO-01','LITHO-02'

details, summary = collector.daily_report(eqp_list)

print(summary.head(10))

三、效果

图1 ETCH设备报警类型分布

RF功率异常占28%是第一大报警源。第4天和第9天出现异常高峰(22和25次),后来查到是同一批气体纯度不达标导致的。这种趋势以前靠肉眼抄数据根本看不出来。

图2 每日报警趋势(30天)

日均报警14.7次,ThreadPoolExecutor并行采集速度提升8倍(60秒→8秒)。现在每天早上5分钟搞定,剩下55分钟摸鱼。

四、踩坑记录

  1. 日本设备页面编码是shift-jis,必须设置resp.encoding,不然中文全是乱码

  2. session 30分钟过期要加自动重连,否则半夜脚本跑着跑着断了

  3. 有些报警代码是厂商自定义的,标准映射表要自己维护(我从Excel里导了300多条)

  4. 8台设备串行采集太慢,改用ThreadPoolExecutor并行,速度从60秒降到8秒

五、后续优化

  1. 加钉钉自动推送:超过20次/天自动告警到群组

  2. 接入SPC规则:连续3天同类型报警超5次触发预警

  3. 对接MES自动创建报警工单

你们车间的设备报警是手动记录还是有自动采集?评论区分享一下方案

获取报警日志自动采集脚本完整版,私信回复【报警采集】

相关推荐
2601_961963381 小时前
Spring Boot集成电子签章的7个典型问题与解决方案:从入门到生产级实践
大数据·人工智能·spring boot·python·区块链·智能合约
三品吉他手会点灯1 小时前
C语言学习笔记 - 48.流程控制2 - 什么是流程控制
c语言·开发语言·笔记·学习
宸津-代码粉碎机1 小时前
Spring AI 企业级实战|智能记忆摘要+自动遗忘机制落地,彻底解决上下文爆炸与Token冗余
java·大数据·人工智能·后端·python·spring·云计算
糖果店的幽灵1 小时前
软件测试接口测试从入门到精通:Python接口自动化 - requests库
开发语言·软件测试·python·功能测试·自动化·接口测试
如烟花的信页1 小时前
外贸*登录逆向分析
javascript·爬虫·python·js逆向
摸摸芋1 小时前
Django框架(1)
后端·python·django
闵孚龙1 小时前
《PyTorch 深度修炼》优化器:参数到底是怎么被更新的
人工智能·pytorch·python
Yvonne爱编码1 小时前
JAVA EE初阶---DAY 2 计算机网络
java·开发语言·计算机网络·算法·java-ee·php
子豪-中国机器人2 小时前
Python 阶段性综合强化训练(新版)
开发语言·python·语音识别