
简介这份PDF资料聚焦生产制造领域的设备效率评估面向工厂设备管理、生产运营及精益改善相关人员系统讲解设备稼动率OEE的计算逻辑与落地方法。内容围绕可用率、性能率、质量率三大核心指标展开给出各自的计算公式并说明如何将三者相乘得出OEE同时结合TPM总体生产维护理念介绍从指标计算到结果分析、再到改进建议的完整三步流程。文中还配有具体算例以实际生产时间、生产数量、实际与理论生产速度等数据逐步演示可用率、性能率、质量率的求解过程及最终OEE的得出方式便于读者对照自身产线数据动手复算。资源包为1个PDF文件大小约56KB轻量易读适合作为设备效率核算的入门参考或现场速查手册。目前已有347人学习可帮助读者快速建立稼动率计算框架理解OEE在评估设备效率、定位损失环节与降低生产成本中的实际价值。1. 设备稼动率如何计算从一张 Excel 表到车间看板的落地路径很多工厂每个月都要填一张「设备稼动率」报表但真正到现场问一句「这台机器今天为什么只有 62%」十个人里有八个答不上来。问题不在公式而在口径时间到底怎么切、停机怎么归类、计划停机算不算分子分母。设备稼动率如何计算表面是一道除法题实际是一套数据采集与口径约定的工程问题。它解决的是「设备到底有没有被用起来」这件事适合设备工程师、生产主管、IE 以及刚接手 OEE 报表的人。这篇笔记按「先定口径、再落公式、最后上采集」的顺序讲能让你从一张手工表一路做到车间看板中间那些翻车点我也会一并说清。2. 先把口径定死稼动率、可动率、OEE 到底差在哪2.1 三个指标的分母不是同一个东西新手最容易犯的错是把稼动率、可动率、OEE 当成同一个数换着叫。它们的分母完全不同混用之后报表永远对不上。稼动率Availability Rate也有厂叫时间稼动率关注的是「计划要生产的时间里设备真正在跑的比例」。它的分母是负荷时间也就是计划运行时间减去计划停机午休、交接班、计划保养、无排产。分子是实际运行时间等于负荷时间减去非计划停机故障、换型、缺料、待机。可动率更偏「设备本身能不能动」分母常用日历时间或可用时间衡量的是设备健康度不掺订单因素。OEE 则是稼动率 × 性能率 × 良品率三个因子相乘任何一个拉胯都会把 OEE 拖下去。指标分母分子回答的问题稼动率负荷时间实际运行时间计划时间内设备跑了吗可动率日历/可用时间可运行时间设备本身健康吗OEE负荷时间有效产出时间综合效率高不高口径一旦定死就要写进作业指导书别让不同班次各算各的。我一般会在报表模板第一行就写明「负荷时间 计划运行 − 计划停机」谁改谁签字。2.2 时间分类是整套计算的地基算不准的根本原因往往是时间没有分类。建议按下面这套切法落地简单且不容易扯皮日历时间24 小时 × 天数只做参考不进公式。计划停机午休、交接班、计划保养、无订单排产。这部分要从分母里扣掉。负荷时间日历时间 − 计划停机这是稼动率的分母。非计划停机故障、换型调机、缺料、质量待判、待机。这部分从分子里扣。实际运行时间负荷时间 − 非计划停机这是分子。提示换型时间算不算非计划停机各厂争议最大。我的做法是单列「换型」一类既不算计划停机也不算故障报表里单独看避免和故障混在一起掩盖问题。2.3 一个能直接抄的计算模板把上面的口径写成公式落到 Excel 或脚本里就是几行的事。下面用 Python 演示单台设备单班的计算逻辑# 设备稼动率单班计算 # 所有时间单位统一为分钟避免小时/分钟混算 calendar_time 8 * 60 # 日历时间一个班 480 分钟 planned_stop 30 10 # 计划停机午休30 交接班10 load_time calendar_time - planned_stop # 负荷时间 440 # 非计划停机明细 breakdown 45 # 故障 changeover 25 # 换型 starve 15 # 缺料 unplanned_stop breakdown changeover starve # 合计 85 run_time load_time - unplanned_stop # 实际运行时间 355 availability run_time / load_time # 稼动率 print(f负荷时间{load_time} 运行时间{run_time} 稼动率{availability:.2%}) # 输出负荷时间440 运行时间355 稼动率80.68%逻辑说明先扣计划停机得到分母再扣非计划停机得到分子最后相除。参数说明planned_stop只放可预期的停机unplanned_stop放所有意外停机换型单独累加便于后续分析。如果你们厂把换型算作计划停机就把changeover移到planned_stop里但一定要全厂统一否则跨班组对比就是玄学。3. 从手工表到自动采集稼动率数据怎么落地3.1 数据源决定你能算多准手工填表能算出月度稼动率但算不出「为什么」。要往下走得先解决数据源。常见有三档第一档是人工记录班组长在纸质或 Excel 上填停机起止时间。成本低但漏记、补记、四舍五入是常态适合刚起步的小厂。第二档是设备信号采集从 PLC 取运行/停止信号或者加装电流互感器判断设备是否在转。这一档能拿到秒级状态是大多数工厂的性价比拐点。第三档是完整 OEE 系统把产量、节拍、良品数一起接进来。投入大适合已经有 MES 的厂。我的建议是先把口径和手工表跑顺三个月再上第二档。口径没定就上系统等于把混乱自动化。3.2 用 PLC 信号算稼动率的最小实现假设你从 PLC 拿到了一个布尔量running每秒采一次下面这段逻辑把状态序列转成稼动率# 从秒级状态序列计算稼动率 # states: [(timestamp, running_bool), ...] 按时间升序 def calc_availability(states, planned_stop_intervals): total states[-1][0] - states[0][0] # 总时长秒 planned sum(e - s for s, e in planned_stop_intervals) # 计划停机秒数 load total - planned # 负荷时间 run 0 for i in range(len(states) - 1): ts, running states[i] nxt states[i 1][0] # 落在计划停机区间内的时间不计入运行 if running and not in_planned(ts, planned_stop_intervals): run nxt - ts return run / load if load 0 else 0 def in_planned(ts, intervals): return any(s ts e for s, e in intervals)逻辑说明遍历状态序列只在「设备运行且不在计划停机区间」时累加运行时间。参数说明planned_stop_intervals是计划停机的起止时间列表必须和排产系统对齐采样频率建议 1 秒太稀会漏掉短停机太密则存储压力大。注意状态跳变的那一秒归属工程上一般归给前一个状态避免边界重复计数。3.3 停机原因归类怎么做才不扯皮自动采集能告诉你「停了」但告诉不了「为什么停」。原因归类必须靠人关键是降低填写成本。我的做法是在机台旁放一个带几个大按钮的终端停机时操作工按一下故障、换型、缺料、待机。按一下只要两秒比事后回忆靠谱得多。如果连按钮都不想加可以用「停机时长 班次」做半自动推断超过 30 分钟的停机强制要求填原因短停机先归入待机班末统一复核。这样既不漏大问题也不逼着人频繁操作。注意原因分类不要超过 6 类超过之后操作工记不住数据质量反而下降。故障、换型、缺料、待机、质量、其他够用了。4. 稼动率算出来之后看板、报警与改善闭环4.1 把数字变成车间看得懂的东西算出 80% 只是开始关键是让车间知道这 80% 是怎么来的。看板上不要只放一个大数字要放三样东西实时稼动率、当日累计停机时长、Top3 停机原因。工人看到「故障 45 分钟」比看到「稼动率 80%」更有行动欲。刷新频率建议 1 分钟一次太快没人看太慢失去意义。颜色阈值按你们的历史基线定比如低于 75% 变黄低于 60% 变红别照搬别人的数。4.2 报警要克制否则一定被无视我见过太多厂把报警做成噪音最后操作工直接把喇叭线拔了。报警只设两类一是单次停机超过阈值比如 15 分钟还没恢复二是当班稼动率低于目标且剩余时间已不够追回。其余情况看板显示即可不响铃。4.3 改善闭环从日报到周会稼动率的价值在改善不在考核。日报看异常周会看趋势。周会上只讨论 Top2 停机原因定责任人、定完成时间下周复盘。坚持三个月稼动率通常能涨 5 到 10 个百分点靠的不是新设备而是把老问题一个个消掉。5. 避坑与排查稼动率计算里最容易翻车的五件事5.1 现象两个班组稼动率差 20%设备却是同一台原因口径不一致。A 班把换型算计划停机B 班算非计划停机分母分子都变了。解决把时间分类写进交接班记录模板班组长签字确认月底抽查。5.2 现象自动采集的稼动率比手工表高很多原因采集只看了电机转不转没算「转了但没出活」的待机。设备空转时电流正常系统误判为运行。解决结合产量信号做二次判断有运行无产量超过阈值就归为待机。5.3 现象短停机全部漏掉稼动率虚高原因采样频率太低或者状态跳变被过滤。解决采样提到 1 秒状态变化立即落库别做平滑。短停机累计起来往往占总停机的三成以上。5.4 现象计划停机越填越多稼动率越算越好看原因把非计划停机往计划停机里塞人为美化。解决计划停机必须提前一天在排产系统里锁定事后补录的一律不算这条规矩要硬。5.5 现象OEE 三个因子对不上乘出来和实际差很远原因三个因子的时间基准不同稼动率用负荷时间性能率用运行时间良品率用加工数基准没对齐。解决统一以负荷时间为起点逐层往下扣画一张时间轴三个因子都从同一根轴上取数。6. 进阶技巧用停机帕累托把稼动率真正提上去算稼动率不难难的是让它涨。我一般会做一张停机帕累托图把非计划停机按原因和时长排序前 20% 的原因通常占 70% 以上的停机时间。下面这段代码从停机记录里直接出帕累托数据# 停机原因帕累托分析 from collections import defaultdict # records: [(reason, duration_min), ...] records [(故障, 45), (换型, 25), (缺料, 15), (故障, 30), (待机, 20), (换型, 10)] agg defaultdict(int) for reason, dur in records: agg[reason] dur total sum(agg.values()) # 按停机时长降序 sorted_items sorted(agg.items(), keylambda x: -x[1]) cum 0 for reason, dur in sorted_items: cum dur print(f{reason}: {dur}分钟 占比{dur/total:.1%} 累计{cum/total:.1%}) # 故障: 75分钟 占比51.7% 累计51.7% # 换型: 35分钟 占比24.1% 累计75.9% # 待机: 20分钟 占比13.8% 累计89.7% # 缺料: 15分钟 占比10.3% 累计100.0%逻辑说明按原因聚合停机时长降序排列后算累计占比累计到 80% 左右的原因就是改善重点。参数说明records从采集系统或手工记录导出时长单位统一为分钟。这张表每周更新一次盯着前两项做改善比全面铺开有效得多。改善方向典型手段预期稼动率提升故障点检制度、备件管理3~8 个百分点换型SMED 快速换模2~5 个百分点缺料线边库存、拉动补料1~3 个百分点待机排产优化、多能工1~4 个百分点最后说个我自己的习惯每次算完稼动率我都会问一句「今天停得最久的那次原因填对了吗」。数字本身不会骗人但填数字的人会。把口径守住、把原因填准、把前两项改善盯死稼动率自然就上来了。希望帮到你。本文还有配套的精品资源点击获取