3. 生产数据采集与治理

生产成本与效率联动分析的第一道门槛,不是模型算法,而是数据本身是否可信。工时、产量、物料、能耗、质量、停机这六类数据分别来自不同系统、不同岗位、不同时间粒度,如果直接拿来做成本归集和效率对比,很容易出现“同一批产品,产量对得上、工时对不上、能耗又对不上”的情况。本节围绕这六类数据的来源、采集方式、清洗规则和质量校验展开,目标是让读者能够搭建一条从现场到分析口径的可信数据链。

一、六类数据的来源与采集方式

工时数据通常有两个来源:一是MES或报工系统中的工单报工记录,包含工单号、工序、设备、人员、开始时间、结束时间;二是设备PLC或SCADA采集的运行/停机状态,用于反推设备实际运行时长。前者反映“人报的工时”,后者反映“设备真实运行时长”,两者必须能相互校验。产量数据主要来自产线计数器、称重设备、MES完工确认或ERP入库记录,采集方式包括PLC脉冲计数、条码/RFID扫描、人工录入。物料数据来自WMS领料/退料记录、BOM标准用量、ERP投料单,以及关键工位的称重或流量计。能耗数据来自电表、气表、水表,通过Modbus、OPC UA或能源管理平台按分钟或小时采集。质量数据来自QMS检验记录、在线检测设备(如视觉、光谱)和不良品登记。停机数据来自设备状态信号、Andon呼叫记录和人工停机原因填报。

采集方式可以归纳为三类:自动采集(PLC、传感器、仪表、扫码)、半自动采集(系统间接口、批量导入)、人工录入(报工、检验、停机原因)。自动采集实时性好、粒度细,但需要处理信号抖动和时钟偏差;人工录入灵活但滞后、易漏填。工程上通常采用“自动为主、人工补录、交叉校验”的组合策略。

生产数据采集与治理链路 数据源层(现场与系统) 工时 报工/MES/PLC 产量 计数器/扫码/ERP 物料 WMS/BOM/称重 能耗 电表/气表/OPC UA 质量 QMS/在线检测 停机 状态信号/Andon 采集方式层 自动采集:PLC / 传感器 / 仪表 / 扫码 半自动:系统接口 / 批量导入 人工录入:报工 / 检验 / 停机原因 清洗与治理层 去重与补全 重复报工、缺失字段 异常值处理 超量程、负值、跳变 口径统一 单位、班次、工单对齐 关联映射 工单-设备-工序-批次 数据质量校验层 完整性校验 一致性校验 及时性校验 合理性校验 异常告警

二、清洗规则:把“原始记录”变成“可用数据”

清洗不是简单删数据,而是按业务规则做可追溯的修正。以下规则可直接作为清洗脚本的配置依据。

  • 去重规则:同一工单、同一工序、同一设备在5分钟内出现多条报工记录,只保留最早一条,其余标记为重复。设备状态信号连续相同状态超过阈值(如运行状态持续超过24小时)视为信号卡死,需人工确认。
  • 缺失处理:工时缺失时,优先用设备运行时长补全;产量缺失时,用前后班次均值或标准节拍反推,并打上“估算”标记;能耗缺失超过15分钟,按同设备同时段历史均值插补。
  • 异常值处理:产量为负、工时超过24小时、能耗超过设备额定功率×时长×1.2倍,均判为异常。异常值不直接删除,而是置为NULL并记录异常原因,避免污染统计。
  • 口径统一:时间统一到同一时区,班次按工厂日历划分(如早班08:00–16:00),单位统一为“分钟、件、千克、千瓦时”,工单号、设备号、物料号统一编码。
  • 关联映射:建立工单—设备—工序—批次—班次的映射表,确保六类数据能按同一主键关联。例如,能耗表按“设备号+时间戳”关联到工单,质量表按“批次号”关联到产量。

三、数据质量校验:用规则发现不可信数据

清洗完成后,需要用校验规则判断数据是否达到分析要求。校验分为四类:完整性、一致性、及时性、合理性。完整性检查必填字段是否为空,如工单号、设备号、班次;一致性检查跨系统数据是否匹配,如MES产量与ERP入库量差异是否超过2%;及时性检查数据是否在约定时间内到达,如能耗数据延迟超过30分钟告警;合理性检查数值是否在业务合理区间,如单位产品能耗是否落在历史P5–P95区间内。

校验结果应输出一张数据质量报告,包含:校验项、通过率、异常记录数、异常样例、责任系统。例如,某日工时数据完整性通过率98.2%,异常12条,主要原因是夜班报工漏填;能耗及时性通过率91%,异常集中在2号车间电表通信中断。这些信息直接指向需要修复的环节。

建议将清洗规则和校验规则配置为可维护的规则表,而不是硬编码在脚本中。规则表字段可包括:规则编号、适用数据类型、规则表达式、阈值、处理动作(修正/置空/告警)、生效时间。这样当业务口径变化时,只需调整规则表,无需修改采集程序。

四、一个可执行的数据质量校验示例

以下是一段伪代码,展示如何对工时和产量做一致性校验。示例参数为教学假设,实际阈值需根据工厂历史数据确定。

# 输入:工单工时表 work_hours、工单产量表 output
# 关联键:work_order_id
# 校验规则:单件工时 = 总工时 / 合格产量,合理区间 [0.5, 5.0] 分钟/件

for wo in work_hours:
    total_min = wo.end_time - wo.start_time   # 单位:分钟
    qty = output[wo.work_order_id].good_qty   # 合格产量
    if qty == 0:
        flag(wo, "产量为零,无法计算单件工时")
        continue
    unit_time = total_min / qty
    if unit_time < 0.5 or unit_time > 5.0:
        flag(wo, "单件工时异常: %.2f 分钟/件" % unit_time)
    else:
        pass(wo)

运行后,若某工单单件工时为0.2分钟/件,低于下限,可能原因包括:产量重复计数、工时漏报、或该工单实际为返工工单。此时不应直接删除,而应回查原始报工记录和计数器日志,确认后再决定修正方式。

五、治理后的数据如何支撑成本与效率联动

当六类数据完成清洗和校验后,就可以按“工单—设备—班次”三个维度做联动分析。例如,计算某设备某班的单位产品能耗 = 该班能耗 / 该班合格产量,再与标准能耗对比;计算设备综合效率OEE = 时间开动率 × 性能开动率 × 合格品率,其中时间开动率来自工时和停机数据,性能开动率来自产量和标准节拍,合格品率来自质量数据。如果数据质量不过关,OEE会虚高或虚低,成本归集也会失真。因此,数据治理不是一次性工作,而是需要持续监控规则命中率、异常率和修复闭环的日常工程。

常见误区:把“数据清洗”等同于“删除异常值”。正确做法是保留原始记录、标记异常、记录处理动作,确保任何一条被修正的数据都能追溯到原始值和修正原因。否则后续审计或复盘时无法解释成本差异。

总结来说,本节的核心是建立一条“来源可查、采集可控、清洗有则、校验有据”的数据链。工时、产量、物料、能耗、质量、停机六类数据各有来源和采集方式,清洗规则要覆盖去重、缺失、异常、口径和关联,质量校验要从完整性、一致性、及时性、合理性四个角度设置阈值并输出报告。只有这条链可信,后续的成本与效率联动分析才有意义。