Python自动爬设备报警日志,每天省1小时
2026/6/15 9:38:50 网站建设 项目流程

每天早上到公司第一件事:打开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': cols[0].text.strip(),
'eqp_id': equipment_id,
'alarm_code': cols[1].text.strip(),
'alarm_msg': cols[2].text.strip(),
'severity': cols[3].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自动创建报警工单

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询