1
📡
读取传感器数据历史数据库 SCADA 48 tag sensor
2
🔍
传感器诊断阈值, drift, noise, flatline
3
🛠️
生成健康报告健康 score, kalibrasi, penggantian
import pandas as pd, numpy as np
from datetime import datetime, timedelta
sensors = pd.read_csv('sensor_historian.csv')
faulty = []
for tag, grp in sensors.groupby('tag'):
drift = np.abs(grp['value'].diff()).mean()
flatline = (grp['value'].std() < 0.01).any()
noise = grp['value'].std() / grp['value'].mean()
out_of_range = ((grp['value'] < grp['min']) | (grp['value'] > grp['max'])).any()
health = 'good'
if flatline or out_of_range:
health = 'fault'
faulty.append(tag)
elif drift > 2.0 or noise > 0.15:
health = 'drift'
print(f'Checked {len(sensors)} readings from {sensors["tag"].nunique()} sensors')
print(f'Faulty: {faulty}')