3. 指标数据采集与治理

生产运营指标异常分析的第一道关口不是算法,而是数据本身。一个“设备综合效率突然下降 12%”的告警,可能并非产线真的出了问题,而是 MES 的产量数据延迟了 40 分钟、PLC 的停机时长按秒累计而报表按分钟取整、点检系统里当班记录漏填了三台设备。因此,指标数据采集与治理要解决的核心问题是:让来自不同系统、不同频率、不同口径的数据,在进入异常检测之前变成一条时间基准一致、语义明确、质量可判的可信序列。

一、多源异构数据接入:先分清三类源,再定接入方式

生产现场的数据源大致可分三类。第一类是设备与过程数据,来自 PLC、SCADA、传感器网关,典型特征是高频(1s~1min)、点位多、以测点标签(tag)组织,如 LINE3.MOTOR01.Current。第二类是业务系统数据,来自 MES、ERP、WMS、QMS,特征是低频(班次、工单、批次粒度)、结构化强、带业务主键,如工单号、物料号、设备编码。第三类是人工与文档数据,如点检表、交接班记录、维修工单文本,特征是稀疏、非结构化、时间戳常为“某班次”而非精确时刻。

接入方式要与源特征匹配:设备数据优先走 OPC UA、MQTT 或 Modbus 网关,以“采集—缓冲—落库”三段式避免网络抖动丢点;业务系统数据优先走数据库增量抽取(按 update_time 水位线)或 API 拉取,避免全量扫描;人工数据则通过表单结构化落库,强制要求填写“发生时间”和“录入时间”两个字段。接入层必须统一携带三类元数据:源系统标识、采集时间戳、原始主键,否则后续对齐和追溯无从谈起。

二、时序数据对齐:把不同节拍的数据放到同一时间轴

对齐的本质是定义统一的时间基准与聚合口径。常用做法是设定一个基准时间栅格,例如以 1 分钟为最小粒度,所有指标都向该栅格归集。设备高频数据用降采样(均值、最大值、末值)落入栅格;业务低频数据用前向填充(forward fill)落到其生效区间;人工记录按发生时间就近归入栅格。

需要特别注意的是时间语义:设备时间戳通常是“采集时刻”,业务数据时间戳可能是“业务发生时刻”或“入账时刻”,两者可能相差数小时。工程上应统一采用“事件发生时间”作为对齐依据,并保留“入库时间”用于延迟监控。此外,跨时区、夏令时、设备时钟漂移都要在接入时做归一化,否则会出现同一停机事件在两条曲线上错位一分钟的假异常。

多源数据接入 → 时序对齐 → 质量治理 数据流 数据源 设备/过程数据 PLC·SCADA·传感器 1s~1min 业务系统数据 MES·ERP·QMS 班次/工单粒度 人工/文档数据 点检·交接班·维修工单 接入层 OPC UA / MQTT 网关 增量抽取 / API 拉取 表单结构化落库 统一元数据: 源系统·采集时间·主键 缓冲队列防丢点 时序对齐层 基准栅格:1 分钟 高频→降采样(均值/末值) 低频→前向填充 人工→按发生时间归格 统一“事件发生时间” 时区/时钟漂移归一化 质量治理层 缺失值:插补/标记 噪声:3σ/中值滤波 规则引擎校验 完整性·及时性 一致性·有效性 质量分 → 可信序列 数据质量监控规则示例(以 OEE 相关指标为例) 完整性 每分钟应有 1 条记录 缺失率 > 5% 告警 连续缺 3 点标记不可用 及时性 入库延迟 ≤ 5 分钟 延迟 > 15 分钟降级 记录采集与入库时间差 一致性 产量 ≤ 理论产能上限 停机时长 ≤ 班次时长 跨系统同指标偏差 ≤ 2% 有效性 数值落在物理量程内 突变率超阈值判噪声 负值/空值直接拦截

三、缺失值与噪声处理:区分“真缺失”和“假缺失”

缺失值分两种。一种是物理缺失:设备停机、网络中断导致确实没有数据;另一种是逻辑缺失:数据存在但未按栅格落位,例如业务系统只在有工单时才产生记录。处理策略必须区分:物理缺失若时长较短(如 ≤ 3 个栅格),可用线性插值或前向填充,并打上 imputed=true 标记;若缺失较长,应保留为空并标记 unavailable,让异常检测跳过该区间,而不是用插补值制造虚假平稳。

噪声处理要避免“过度平滑”。设备电流、温度等信号常含尖峰,若直接用 3σ 剔除,可能把真实的瞬时过载也删掉。更稳妥的做法是组合使用:先用物理量程做硬边界过滤(如电流不可能为负、温度不超过 200℃),再用中值滤波(窗口 5)抑制孤立尖峰,最后用 3σ 或 IQR 标记离群点但不直接删除,而是写入 outlier_flag 供后续分析判断。这样既保住了真实异常,又抑制了采集噪声。

四、数据质量监控规则设计:让问题在进入分析前暴露

质量规则应围绕四个维度设计,并落到可执行的判断条件上。以下是一份可直接参考的规则配置示例(参数为示例值,需按现场实际调整):

规则ID      维度      对象                判断条件                          动作
DQ-001     完整性    OEE.minute         每分钟记录数 = 0 连续 ≥ 3         告警+标记unavailable
DQ-002     完整性    设备电流.tag        缺失率 > 5% / 小时                告警
DQ-003     及时性    MES.产量            入库时间 - 事件时间 > 15min       降级+告警
DQ-004     一致性    OEE.产量           产量 > 理论产能 × 1.05            拦截+人工复核
DQ-005     一致性    停机时长            停机时长 > 班次时长                拦截
DQ-006     有效性    温度.tag            值 < -20 或 > 200                 标记outlier
DQ-007     有效性    电流.tag            相邻点变化率 > 50%/s              标记outlier
DQ-008     一致性    跨系统产量          MES产量 与 SCADA计数偏差 > 2%     告警+记录偏差值

规则执行后应输出一个数据质量分,例如按完整性 40%、及时性 20%、一致性 25%、有效性 15% 加权,得到 0~100 的分数。当某指标质量分低于 80 时,异常检测结果应附带“数据可信度不足”的提示,避免把数据问题误判为生产问题。这一步是整条链路的价值所在:让分析结论知道自己站在多可靠的数据上。

实践建议:接入层先做“最小可用字段集”约定——每个指标必须明确源系统、事件时间字段、主键、单位、量程。缺少任一项的数据源不进入对齐流程,从源头减少后期返工。
常见误区:用插补后的数据直接计算 OEE 并触发告警。正确做法是插补值必须带标记,异常检测对插补区间降权或跳过,否则会把“数据缺失”误报成“效率下降”。