跳到主要内容

S3 · 采样、聚合与 OEE

挑战:这台机器的效率到底是多少?用 OEE 回答,并说明这个数字有多可靠。你会拿到同一段运行的两份日志,一份 10 Hz,一份 1 Hz,它们算出来的结果并不一样。

你拿到什么​

  • 同一段运行的两份日志:10 Hz 和 1 Hz,30 分钟,数据已经干净。
  • 下文的 OEE 口径和额定产能。
  • 你在 S1、S2 写的 skill。

OEE 的口径​

OEE = 可用率 × 性能 × 质量。三个因子分别回答:机器有多少时间在运转?运转时有多快?做出来的有多少是对的?

算出来是多少,取决于几条约定。本课程统一使用下面的口径:

项目本课程的约定
计划时间日志覆盖的时长
额定产能每分钟 21.47 个球,已包含正常的满管排料
停机(计入可用率损失)两臂都停在原位、且不是满管停机,持续 30 秒以上
短停(计入性能损失)同上,但不足 30 秒
满管停机正常节拍的一部分,不单独扣除;比额定时长慢的部分,自然体现为性能损失
质量日志看不到球最终进了哪个收集仓,记为 100%,并在报告中注明

由此:

  • 可用率 = (计划时间 − 停机时间) ÷ 计划时间
  • 性能 = 实际球数 ÷ (额定产能 × 运转时间)
  • OEE = 可用率 × 性能 × 质量

步骤​

1. 从日志里定义事件​

OEE 需要的不是一行一行的状态,而是事件:每次满管停机、每次两臂停在原位,各自从哪一刻开始、到哪一刻结束。

把这些事件的定义写进 machine.yaml,用你的代码从日志中提取出来,存成一张事件表。时长一律用时间戳计算。

2. 比较两种采样率​

用同一份代码处理 10 Hz 和 1 Hz 两份日志,比较:

  • 满管停机的次数、总时长、中位时长;
  • 两臂停在原位的次数和总时长;
  • 球数。

哪些数字两者一致,哪些不一致?差异来自哪里?1 Hz 时,一段持续时间的起点和终点各有多大的误差?

3. 选择聚合层级​

聚合的四个层级原始数据、事件、分钟汇总、班次 KPI 四层,每层由下一层计算得出,聚合不可逆;OEE 来自事件层。L4班次 KPIOEE 与三个因子能回答:跨班次、跨周对比30 分钟约 1 行L3分钟汇总每分钟球数、停机秒数能回答:班内的波动30 分钟约 30 行L2事件每次停机、补料、周期能回答:OEE、停机来源、趋势30 分钟约 数百行L1原始数据10 Hz,每行一个状态能回答:行程时间、逐行核查30 分钟约 18 000 行聚合不可逆每一层都由下一层计算得出;只保留上层时,下层无法复原。蓝色是 OEE 所在的层。
每往上聚合一层,数据量少一个数量级,能回答的问题也跟着变少。聚合是不可逆的。

OEE 用的是事件层:它需要每次停机的起止时间,但不需要逐行的数据。

再想一想,如果你只拿到每分钟的汇总(每分钟分拣了几个球),哪些问题还能回答,哪些不能?示范页有一个具体的例子。

4. 按口径计算 OEE​

按上面的口径,用 10 Hz 的事件表算出可用率、性能、OEE,以及每一项损失折合多少个球。再用 1 Hz 算一遍。

5. 写报告​

报告给出 OEE 和三个因子,每个数字都带误差范围,并说明误差从哪里来:采样率、事件定义里的阈值、质量无法观测。

交付​

  • kpi-report skill:输入日志和 machine.yaml,输出事件表和 OEE 报告。
  • 两种采样率的结果对照,以及对差异的解释。
  • OEE 报告,每个数字都带误差范围。

验收​

  • 10 Hz 的 OEE 和各因子与参考值的差距在给定容差以内。
  • 正确指出 1 Hz 下哪些数字不可靠,以及原因。
  • 每个数字都附有误差范围和来源。
  • 在另一份日志上,你的 skill 不改代码就能跑通。

示范:两种采样率和一次 OEE 计算