更新记录
1.0.0(2026-11-04)
首个版本:Cp/Cpk/CPU/CPL/Pp/Ppk 全套能力指数(单值 MR̄/1.128 与子组 R̄/d2 两种 σ组内口径)、中心偏移百分比、理论不良 ppm(Φ 换算,上下侧分开)、Cpk 六档等级与处理建议、I-MR 与 Xbar-R 控制图(常数表 n=2..10)、Nelson 八条判异规则(相邻区间合并)、等宽直方图并标出 USL/LSL 落柱位置、三列文本明细解析(中英文表头别名/无表头按位置/单列数值)、一张测量表按特性分组批量出结论并挑出最差特性、16 列 CSV 导出(带 BOM、零存储权限)。UTS→Kotlin 编译通过(index.kt 2059 行与 classes.dex 87144 字节已生成),207 项回归测试全部通过;真机未执行(adb devices 为空),市场截图为 H5 渲染并标注示例数据。
平台兼容性
uni-app
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| × | √ | × | × | √ | × | √ | × | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
过程能力与SPC判异
给品质工程师和工艺工程师:把一串测量值变成「这张过程到底行不行、哪几个点出了问题」。
算 Cp / Cpk / Pp / Ppk、中心偏移、理论不良 ppm,再按 Nelson 八条规则逐条判异,指出是哪一段点、属于哪类异常(超限 / 同侧偏移 / 趋势 / 两批混算)。支持 I-MR 与 Xbar-R 两种控制图、能力直方图、一张测量明细按特性分组批量出结论。
纯本地计算,不联网、不上传。仅支持 Android。
购买前必读
适合你,如果:
- 客户要 PPAP / 首件报告,需要按特性报 Cp、Cpk、Pp、Ppk 和不良率;
- 车间每天有巡检数据,想知道「哪台机床开始飘了」,而不是等超差了才发现;
- 手上是手机或平板,不想为了看一眼 Cpk 专门打开电脑、导 Excel、装 Minitab;
- 要一次性把一张表里十几个特性都过一遍,挑出最该先动的那个。
不适合你,如果:
- 需要 Gage R&R、DOE、回归、方差分析 —— 本插件只做 SPC 这一段;
- 需要把控制图实时挂在 MES 大屏上 —— 本插件是「调一次算一次」的库,不做常驻采集;
- 数据在云端数据库里 —— 本插件不做数据源连接,测量值由你的代码传进来;
- 用 iOS —— 当前只有 Android 实现。
解决什么问题
三件在车间反复发生的事:
-
Cpk 写着 1.33,客户来审说过程不受控。 因为 Cpk 只看分布宽度和位置,不看顺序。本插件把控制图一起算出来:29 个点里没有一个超 3σ,但从第 12 点起连续 9 点压在中心线下方 —— 规则 2 会直接报「中心已经偏移」。这类问题单看 Cpk 永远发现不了。
-
不知道该调中心还是该降波动。 Cp 和 Cpk 差多少,就说明中心偏了多少。Cp 1.86 / Cpk 1.54 表示波动够小、纯粹是中心站歪了,调机床位置比改工艺便宜得多;Cp 0.72 则是波动本身就宽过公差带,调中心没有意义。
-
一张表几十个特性,不知道先动哪个。 批量模式按特性分组,逐组算能力与控制图,按 Cpk 从低到高排,最差的那个排在最前面。
与同类的边界
与本店已上线的插件不重叠:
| 已有插件 | 它做什么 | 本插件的区别 |
|---|---|---|
| szhzy-xlsx-import / xlsx-export | Excel 表格的读写 | 本插件不解析 xlsx,吃的是「测量值数组」或三列文本明细 |
| szhzy-sheet-diff | 两版表格比差异 | 本插件比的是「同一特性随时间的变化」,不是两份表 |
| szhzy-docx-report | 生成 Word 报告 | 本插件输出的是能力指数与判异结论,落盘为 CSV |
| szhzy-tolerance-chain | 按公差链算装配间隙 | 本插件反过来:已有实测数据,评估过程能不能守住公差 |
与市场同类产品的差异:
- Minitab / JMP:桌面软件,$1,700+/用户/年,要导数据进电脑。本插件在 App 内直接出结论。
- QI Macros / SPC for Excel:Excel 加载项,$349–379 一次性,只能在 Windows + Excel 里跑。
- InfinityQS Enact / WinSPC:MES 级 SPC 系统,$167/月起、实施周期以月计。本插件是一段代码,接进你自己的 App。
- 各类免费在线 Cpk 计算器:只能算单特性、不判异、不给控制图,也没法批量。
本插件不做数据采集、不做权限、不做报表模板 —— 只把「测量值 → 能力 + 判异结论」这一段做对。
快速上手
1. 装插件
把 szhzy-spc-capability 放到工程的 uni_modules/ 下,重新编译自定义基座(UTS 插件在标准基座里不生效)。
2. 算一次能力
import { spcCapability } from '@/uni_modules/szhzy-spc-capability'
// 示例就是下面「手算一遍」用的那 29 个数,复制可直接跑出同一组结果
const r = spcCapability({
values: [
10.01, 9.992, 10.003, 10.007, 9.996, 10.001, 10.004, 9.995, 10.002, 9.999,
10.006, 9.998, 10.003, 10.001, 9.994, 10.005, 10.0, 9.997, 10.004, 10.002,
10.012, 10.015, 10.011, 10.016, 10.013, 10.018, 10.014, 10.017, 10.012
],
usl: 10.03,
lsl: 9.97,
target: 10
})
if (r.ok) {
console.log(r.capability.cp, r.capability.cpk) // 1.858 1.544
console.log(r.capability.levelText) // 良(常规受控)
console.log(r.chart.ucl, r.chart.lcl) // 控制限一起给
console.log(r.chart.violations.length) // 判异条数
} else {
console.log(r.code, r.message)
}
3. 判异与导出
import { spcChart, spcBatch, spcExport } from '@/uni_modules/szhzy-spc-capability'
// 只看控制图(子组 5 个一组走 Xbar-R,不传或传 1 走 I-MR)
const ch = spcChart({ values: values, subgroup: 5 })
// 一张测量明细按特性分组
const b = spcBatch({
csv: '特性,样本,测量值\n外径,1,10.01\n外径,1,9.992\n壁厚,1,2.012',
specs: [
{ feature: '外径', usl: 10.03, lsl: 9.97 },
{ feature: '壁厚', usl: 2.05, lsl: 1.95 }
]
})
console.log(b.rows[0].cpk, b.worstFeature, b.csv)
// 落盘(默认写应用外部私有目录,不需要存储权限)
const w = spcExport({ csv: 同一份明细, specs: specs, fileName: '过程能力.csv' })
console.log(w.ok, w.path)
数据怎么给
三种给法,任选一种:
① 纯数值数组(最常用)
spcCapability({ values: [10.01, 9.992, 10.003], usl: 10.03, lsl: 9.97 })
② 结构化明细(要按特性分组时)
spcBatch({
items: [
{ feature: '外径', sample: '1', value: 10.01 },
{ feature: '壁厚', sample: '1', value: 2.012 }
],
specs: [{ feature: '外径', usl: 10.03, lsl: 9.97 }]
})
③ 三列文本(用户粘进来的,或文件读出来的)
特性,样本,测量值
外径 φ10,1,10.01
外径 φ10,1,9.992
壁厚 2.0,1,2.012
表头认这些别名(大小写不敏感):
| 字段 | 认的表头 |
|---|---|
| 特性 | 特性、特性名、项目、检验项目、feature、ctq |
| 样本 | 样本、子组、组号、批号、sample、group |
| 测量值 | 测量值、实测值、数值、尺寸、value、data |
没有表头也行:按「特性, 样本, 测量值」的位置读;只有一列数字时全部归到一个特性里。分隔符自动认逗号、制表符、分号、竖线。
口径与公式(可手算核对)
能力指数
σ组内(I-MR) = MR̄ / 1.128 MR̄ 是相邻点差值的均值,1.128 是 n=2 的 d2
σ组内(子组) = R̄ / d2(n) 子组大小 2–10,d2 查表
σ总体 = 样本标准差(除以 n−1)
Cp = (USL − LSL) / (6·σ组内)
CPU = (USL − x̄) / (3·σ组内)
CPL = (x̄ − LSL) / (3·σ组内)
Cpk = min(CPU, CPL)
Pp = (USL − LSL) / (6·σ总体)
Ppk = min((USL − x̄), (x̄ − LSL)) / (3·σ总体)
为什么能力用 σ组内、不良率用 σ总体: 能力指数回答「过程本身稳不稳」,要把组间漂移剔除,所以用组内 σ;不良率回答「照现在这样干下去会流出多少」,要包含换批换班的漂移,所以用总体 σ。两个口径一起报,客户和车间都认。
理论不良 ppm
z上 = (USL − x̄) / σ总体 上侧不良 = Φ(−z上)
z下 = (x̄ − LSL) / σ总体 下侧不良 = Φ(−z下)
ppm = (上侧 + 下侧) × 1,000,000
Φ 用 Abramowitz–Stegun 7.1.26 近似(误差 < 1.5×10⁻⁷)。
中心偏移
shift = |x̄ − 规格中点| / ((USL − LSL) / 2) × 100%
规格中点取 (USL + LSL) / 2。target 只用于展示(比如画目标线),不参与偏移计算 —— 非对称公差带要按自己认定的中点判断偏移时,直接用 capability.mean 自己算更清楚。
控制限
I-MR:中心 = x̄,UCL = x̄ + 2.66·MR̄,LCL = x̄ − 2.66·MR̄
MR 图:中心 = MR̄,UCL = 3.267·MR̄(极差没有下界)
Xbar-R:中心 = 各组均值的均值,UCL/LCL = 中心 ± A2·R̄
R 图:中心 = R̄,UCL = D4·R̄,LCL = D3·R̄
D2 / D3 / D4 / A2 / B3 / B4 / A3 / C4 按子组大小 2–10 内置查表。
手算一遍(演示数据)
29 个外径测量值,USL 10.030、LSL 9.970、目标 10.000:
x̄ = 10.0051
MR̄ = 0.0061
σ组内 = 0.0061 / 1.128 = 0.005382
σ总体 = 0.007435
Cp = 0.060 / (6 × 0.005382) = 1.858
CPU = (10.030 − 10.0051) / (3 × 0.005382) = 0.024931 / 0.016146 = 1.544
CPL = (10.0051 − 9.970) / (3 × 0.005382) = 0.035069 / 0.016146 = 2.172
Cpk = min(1.544, 2.172) = 1.544
Pp = 0.060 / (6 × 0.007435) = 1.345
Ppk = 0.024931 / (3 × 0.007435) = 0.024931 / 0.022305 = 1.118
shift = 0.005069 / 0.030 = 16.9%
UCL = 10.0051 + 2.66 × 0.0061 = 10.0212
LCL = 10.0051 − 2.66 × 0.0061 = 9.9889
z上 = 0.024931 / 0.007435 = 3.35 → 上侧 400 ppm
z下 = 0.035069 / 0.007435 = 4.72 → 下侧 1 ppm
插件输出:Cp 1.858 / Cpk 1.544 / Pp 1.345 / Ppk 1.118 / 401 ppm / 偏移 16.9%。逐项对得上。
八条判异规则
| # | 规则 | 通常在说什么 |
|---|---|---|
| 1 | 1 点超出 3σ | 先查这一个点的测量与来料,别急着改工艺 |
| 2 | 连续 9 点在中心线同侧 | 中心已经偏移,调机床/模具位置 |
| 3 | 连续 6 点单调上升或下降 | 刀具磨损、温度漂移等随时间变化的因素 |
| 4 | 连续 14 点上下交替 | 两台设备或两批料混在一起了 |
| 5 | 连续 3 点中 2 点超出 2σ(同侧) | 波动开始变大,查刚换的料/刀/人 |
| 6 | 连续 5 点中 4 点超出 1σ(同侧) | 中心在往一边走,还没到失控但趋势明确 |
| 7 | 连续 15 点都在 1σ 内 | 标准差被高估,或数据被修过 |
| 8 | 连续 8 点都在 1σ 外(两侧) | 多半是两批不同分布的数据混算 |
同一条规则在相邻区间重复触发时会合并成一条(给整段区间),不会每个点报一次。
API
| 方法 | 入参 | 返回 |
|---|---|---|
spcCapability(options) |
values、usl、lsl、target、subgroup |
capability(能力指数全套)、chart(I-MR)、text(文字摘要) |
spcChart(options) |
values、subgroup(0/1 走 I-MR,2–10 走 Xbar-R) |
chart、pointsCsv |
spcHistogram(options) |
values、bins、usl、lsl |
bins、mids、counts、binWidth、uslBin、lslBin |
spcBatch(options) |
items 或 csv 或 path,加 specs |
rows、total、passCount、failCount、worstFeature、worstCpk、csv |
spcExport(options) |
同上,加 fileName、dir、bom |
ok、path、bytes |
spcDefaults() |
— | 八条规则文案、默认输出目录、minCpk 门限 |
所有方法返回统一信封:{ ok, code, message, version },不抛异常。
specs 里没给规范限的特性只出控制图,code = "NO_SPEC";只给了一侧限制(比如同心度只有上限)时 Cp / Pp 为 null、只出与单侧对应的 Cpk / Ppk。
导出的 CSV 列(16 列)
特性、样本数、均值、标准差、Cp、Cpk、Pp、Ppk、理论不良 ppm、等级、中心、UCL、LCL、超限点数、判异条数、说明
带 UTF-8 BOM,Excel 双击直接开,不用管编码。
错误码
| code | 什么时候出现 | 怎么办 |
|---|---|---|
TOO_FEW |
数据少于 2 个 | 补数据;SPC 用 2 个点也算不出能力 |
NO_SPEC |
没给规范限 | 给 usl / lsl,或确认只想要控制图 |
BAD_SPEC |
同时给了上下限但 usl <= lsl |
检查上下限是不是写反了 |
NO_VARIATION |
所有值完全一样,σ = 0 | 确认是不是读成了一列常数(表头读错位最常见) |
BAD_SUBGROUP |
subgroup 不在 2–10 |
子组大小按 2–10 给,更大的请先用 Xbar 分组汇总 |
TOO_FEW_GROUP |
按子组切完不足 2 组 | 数据点数至少要 2×子组大小 |
能力边界与已知限制
- 不做数据采集。 插件只算你给的数。活数据从哪来(设备、扫码枪、手工录入)是你的 App 的事。
- 不做 Gage R&R / DOE / 回归 / 方差分析。 只做 SPC 这一段。
- 子组只能等长、按时间顺序切分。 传
subgroup: 5表示「每 5 个连续点一组」,不支持不等长子组。 - Xbar-R 只支持子组 2–10。 更大的子组请先自行汇总成均值与极差。
- 单特性最多按 60 个分组提示。 超过会给出体检提示,建议按产品线拆表分批算(不是硬限制)。
values里的非法值会被跳过,不报错;需要严格校验请先自己过滤。- iOS 未实现。 只有 Android 平台入口。
验证状态
- 纯逻辑层(
core.uts)在 Node 下跑 207 项回归测试,全部通过,含与独立朴素实现的交叉验证、Φ(z) 对照标准正态表、控制图常数对照 GB/T 4091 表值、八条规则触发与不触发的边界用例。 - Android 侧
cli launch app-android --compile true编译通过,产物index.kt2059 行、classes.dex87,144 字节。 - 真机链路未验证:当前环境无可用 Android 设备(
adb devices为空),调用链路与真机渲染未跑过。用前请在自己的工程里跑一遍「最低可用示例」。
授权
普通授权与源码授权两种,购买后可用于商业项目。源码授权可修改、可二次分发,不可单独转售插件本身。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 13
赞赏 0
下载 12739115
赞赏 1959
赞赏
京公网安备:11010802035340号