更新记录

1.0.0(2026-11-05)

首个版本:时间开动率 A / 性能开动率 P / 合格品率 Q / OEE / TEEP 全套,85%、70%、60% 三档等级与主因判断;损失分解把停机、换型、降速、废品、计划停机统一折成分钟,五项之和可加回班次时长;帕累托给排名、占比与累计占比并标 80% 线;多机台按有效产出时间加权(示例 66.8% vs 简单平均 64.3%);性能超 100% 提示节拍填小、零产出提示未录入、停机超计划生产时间直接拒算;18 列汇总 CSV 与损失明细 CSV 导出(带 BOM、零存储权限)。UTS→Kotlin 编译通过(index.kt 1026 行与 classes.dex 50088 字节已生成),107 项回归测试全部通过;真机未执行(设备 adb 状态 unauthorized),市场截图为 H5 渲染并标注示例数据。


平台兼容性

uni-app

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× √ × × √ × √ × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

设备综合效率与停机损失

给车间主任与设备主管:一台机今天到底损失在哪,别再只看一个 OEE 数字。

按班次记录算时间开动率 A、性能开动率 P、合格品率 Q 与 OEE、TEEP,把非计划停机、换型调整、小停降速、废品返工都折算成分钟做帕累托,直接告诉你先动哪一条;多台机按「计划生产时间」加权汇总,避免简单平均把半班机台算成整班。

纯本地计算,不联网、不上传。仅支持 Android。


购买前必读

适合你,如果:

  • 车间有停机记录与班产量,但 OEE 只存于 Excel,算完没人知道该先修哪台;
  • 客户或集团要周报,需要按机台、按班次给出一致的口径,而不是每人一个算法;
  • 想知道「换型时间」到底吃掉了多少产能,好决定要不要做快速换模;
  • 设备很多、班次很杂,需要一条能嵌进自己 App 的计算,而不是买一套 MES。

不适合你,如果:

  • 需要直接采机床信号、PLC 点位或电表 —— 本插件不做数据采集,产量与停机时长由你的代码传进来;
  • 需要实时看板、报警推送与历史趋势库 —— 本插件是「调一次算一次」的算法库,不做常驻服务;
  • 需要按工单、按批次追加工序级细账 —— 本插件到机台×班次这一层,不做工序分解;
  • 用 iOS —— 当前只有 Android 实现。

解决什么问题

  1. OEE 65%,然后呢? 单看一个数没有动作。本插件把损失拆成停机、换型、降速、废品四类,折成分钟排队,前两条通常就占了八成的损失。

  2. 换型到底值不值得改。 换型 38 分钟、故障 84 分钟,两者在报表里都叫「停机」,但一个该做 SMED、一个该做预防性维修。分桶之后结论才不打架。

  3. 多机台汇总算错了。 五台机里有一台只排了半个班,简单平均会把车间 OEE 算高几个点。本插件按有效产出时间加权,与产量口径一致。


与同类的边界

与本店已上线的插件不重叠:

已有插件 它做什么 本插件的区别
szhzy-process-schedule 按交期倒排工序开工日 它排「什么时候做」,本插件算「做完效率如何」,一个事前一个事后
szhzy-spc-capability 按测量值算过程能力 它管尺寸质量分布,本插件管时间与产出效率,输入输出都不同
szhzy-stock-replenish 算安全库存与补货 它管物料什么时候下单,本插件管设备产能利用率
szhzy-quote-cost 报价与成本核算 它算单价,本插件算工时损失,不涉及价格

与市场同类产品的差异:

  • Evocon:按机台订阅,$189–219/台/月(年付),要装 IIoT 采集盒;本插件不碰硬件,一段代码装进你自己的 App。
  • Vorne XL:$4,490 一次性买硬件终端,绑定单线;本插件零硬件。
  • MachineMetrics / Factbird:面向有一定自动化基础的产线,报价按线或按站点,实施以周计。
  • 各类 Excel 模板:能算 OEE,但停机原因分类、加权汇总、损失折分钟都要人手工搭,一改公式就错。

本插件不做采集、不做大屏、不做多工厂权限 —— 只把「班次记录 → 三率一值 + 损失帕累托」这一段做对,且每一项都能手算复核。


快速上手

1. 单台算一次

import { oeeCompute } from '@/uni_modules/szhzy-oee-loss'

const r = oeeCompute({
  machine: '注塑 3 号机',
  shift: '白班',
  calendarMin: 480,      // 班次 8 小时
  plannedStopMin: 30,    // 计划停机(保养、休息)
  setupMin: 38,          // 换型调整
  downMin: 84,           // 非计划停机
  idealCycleSec: 28,     // 理想节拍
  totalCount: 680,
  goodCount: 660,
  stops: [
    { reason: '设备故障', minutes: 58, kind: 'down' },
    { reason: '缺料待料', minutes: 26, kind: 'down' },
    { reason: '换型调机', minutes: 38, kind: 'setup' }
  ]
})

r.oee            // 68.4
r.availability   // 72.9  时间开动率
r.performance    // 96.7  性能开动率
r.quality        // 97.1  合格品率
r.topLoss        // 设备故障 58 分钟
r.losses         // 帕累托:排名、占比、累计占比
r.hint           // 主因判断与建议

2. 多机台汇总

const b = oeeBatch({ items: [机台1, 机台2, 机台3] })
b.oee          // 66.8  按计划生产时间加权
b.avgOee       // 64.3  简单平均(对照用)
b.worstMachine // 注塑 5 号机
b.overCount    // 达到 85% 的台数

3. 导出

oeeExport({ items, kind: 'rows', fileName: 'OEE汇总.csv' })
oeeExport({ items, kind: 'loss', fileName: '损失明细.csv' })

默认落应用外部私有目录,不需要任何存储权限;CSV 带 UTF-8 BOM,Excel 双击不乱码。


口径与公式(可手算核对)

  • 计划生产时间 = 班次时长 − 计划停机
  • 运行时间 = 计划生产时间 − 换型调整 − 非计划停机
  • A = 运行时间 / 计划生产时间
  • P = 理想节拍 × 总产出 / 运行时间(秒)
  • Q = 良品数 / 总产出
  • OEE = A × P × Q
  • TEEP = OEE × 计划生产时间 / 班次时长

损失折算:

损失 折算方式
非计划停机 记录分钟直接计入
换型调整 记录分钟直接计入
计划停机 记录分钟直接计入(不计入 OEE,但要进损失账)
小停与降速 (运行时间 × 60 − 理想节拍 × 总产出)/ 60,下限 0
废品与返工 废品数 × 理想节拍 / 60

手算一遍(演示数据)

班次 480、计划停机 30 → 计划生产时间 450;换型 38 + 停机 84 → 运行时间 328。

  • A = 328 / 450 = 72.9%
  • P = 28 × 680 / (328 × 60) = 19040 / 19680 = 96.7%
  • Q = 660 / 680 = 97.1%
  • OEE = 0.729 × 0.967 × 0.971 = 68.4%,等级「一般」
  • 速度损失 = (19680 − 19040) / 60 = 10.7 分钟;质量损失 = 20 × 28 / 60 = 9.3 分钟
  • 有效产出 = 660 × 28 / 60 = 308 分钟;总损失 = 480 − 308 = 172 分钟
  • 校验:84 + 38 + 30 + 10.7 + 9.3 = 172 ✓

API

方法 用途 关键参数
oeeCompute(options) 单台计算 calendarMin, plannedStopMin, setupMin, downMin, idealCycleSec, totalCount, goodCount, stops
oeeBatch(options) 多机台汇总 items(与单台同结构)
oeeParse(options) 只解析停机记录 text 或 path, charset
oeeExport(options) 导出 CSV kind(rows / loss), fileName, dir
oeeDefaults() 默认算例 无

所有方法返回 { ok, code, message, ... },不抛异常。三率与 OEE 在返回值里已经是百分数(68.4 即 68.4%)。


导出的 CSV 列

机台汇总:机台、班次、班次时长、计划停机、计划生产时间、换型调整、非计划停机、运行时间、时间开动率%、性能开动率%、合格品率%、OEE%、TEEP%、总产出、良品、废品、等级、主要损失。

损失明细:机台、班次、排名、损失原因、类型、分钟、占比%、累计占比%。


错误码

code 含义
BAD_CALENDAR 班次时长不是正数
BAD_CYCLE 理想节拍不是正数
GOOD_OVER_TOTAL 良品数大于总产出
NO_PLANNED_TIME 计划停机把生产时间扣光了
STOP_OVER_PLANNED 换型与停机之和超过计划生产时间
NO_ROWS / NO_VALID_ROWS 汇总时没有记录 / 全都有错误
FILE_NOT_FOUND / READ_FAILED 文件不存在或读失败
WRITE_FAILED / NO_OUTPUT_DIR 写文件失败或拿不到输出目录

能力边界与已知限制

  • 到「机台 × 班次」这一层,不做工单、批次、工序级分解;
  • 不做数据采集,不连 PLC、OPC-UA、Modbus,也不读电表;
  • 不做趋势库与大屏,历史对比请把每次结果自行入库;
  • 换型时间需要你明确归到 setup,如果混在「停机」里,帕累托会把它算成故障,结论就会跑偏;
  • 理想节拍填得过于乐观时性能开动率会超过 100%,插件会给出告警,但不会替你修正。

验证状态

项目 状态
纯逻辑回归测试 107 项全部通过(含手算算例、200 组随机数据的 OEE 恒等式、损失分钟回加、帕累托与解析边界)
UTS → Kotlin 编译 通过,产物 index.kt 与 classes.dex 已生成(见发布清单)
真机运行 未执行:测试机 adb devices 显示 unauthorized,无法安装自定义基座,也未做真机截图
市场截图 H5 渲染,页面已标注「示例数据」,不是真机截图
iOS / 鸿蒙 不支持

授权

普通授权与源码授权的范围见 license.md。购买前请确认上面的「能力边界」与「验证状态」,本插件按现状提供。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无系统权限。读取调用方用系统文件选择器交过来的文件(路径或 content:// 授权),写出走应用外部私有目录。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集、不上传任何数据,不访问网络,不写日志。产量与停机记录只在内存中计算;报表由调用方决定是否落盘,默认写应用外部私有目录。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。