终检记录全是"合格",客户端做关键尺寸复测却发现整批贴近规格上限——用着没超差,但工艺窗口已经漂移,下一批必出废品。这就是"合格"和"受控"的区别:检验是事后挑出坏的,SPC 是事前看出要坏。上位机天然握着每一件产品的实时测量值,把这些数据按统计方法用起来,产线在出废品之前自己就会喊停。
一、先分清:规格限是客户给的,控制限是数据长出来的
| 概念 | 来源 | 回答的问题 |
|---|---|---|
| 规格限 USL/LSL | 图纸、客户要求 | 这件产品合不合格(出货判定) |
| 控制限 UCL/LCL | 过程自身数据按 ±3σ 计算,定期评审更新 | 过程稳不稳定(有没有异常因素) |
| 中心线 CL | 子组均值的平均 | 过程当前围绕哪个值波动 |
二、数据怎么分组:合理子组是 SPC 的命门
控制图的基本单位不是单件数据,而是子组(subgroup)。合理子组的原则一句话:组内尽量只有普通原因波动(短时间、同设备、同刀具、同操作),组间才可能暴露特殊原因。
| 做法 | 说明 |
|---|---|
| 子组大小 n | 计量型 Xbar-R 图推荐 n=4~5(现场每 1~2 小时连抽 5 件,或直接取连续 5 件自动数据) |
| 抽样频次 | 先密后疏:量产初期每小时一组,稳定受控后可降到每班两组;换型/换刀/换料后加密重建 |
| 组内不跨条件 | 禁止把两台设备、两个班次、两种原料的数据混进一个子组——那叫"分层没做好",控制限会被撑得虚宽 |
| 数据来源 | 优先用上位机自动采集的测量值(扭矩、压力、尺寸测试值),自动数据要按时间窗自动组子组;人工录入必须扫码绑定量具和时间,防补录造假 |
图型选择上:连续尺寸/扭矩/温度这类计量值用 Xbar-R(均值-极差),n 大(>10)时用 Xbar-S;只有合格/不合格判定用 p 图或 np 图,计缺陷数用 c/u 图。离散制造现场 90% 的需求就是 Xbar-R。
| 数据类型 | 图型 | 典型工位 |
|---|---|---|
| 计量值,n=2~9 | Xbar-R | 机加工尺寸、拧紧扭矩、注液量、压装力 |
| 计量值,n≥10 或自动高频 | Xbar-S | 电池分容、大批量全检数据按盒分组 |
| 单件连续产出,无法组子组 | I-MR(单值-移动极差) | 批次型化工反应、每小时只有一件的慢节拍工序 |
| 计数:合格/不合格,样本量不等 | p | 每班不良率(产量浮动) |
| 计数:单位缺陷数 | u / c | 注塑件外观点数、PCBA 焊点缺陷数 |
三、控制限怎么算:25 组起步,系数查表
新过程量产初期先连续采集至少 25 个子组,确认过程稳定后计算初始控制限:
public class Subgroup { public int No; public double[] Values; public double Mean => Values.Average(); public double Range => Values.Max() - Values.Min(); } public class ControlChart { // n=5 的标准系数;实际应做成按n查表的配置 private const double A2 = 0.577, D3 = 0.0, D4 = 2.114, D2 = 2.326; public (double cl, double ucl, double lcl, double sigma) Build(List<Subgroup> groups) { if (groups.Count < 25) throw new InvalidOperationException("建限至少25组"); double xBarBar = groups.Average(g => g.Mean); double rBar = groups.Average(g => g.Range); return (xBarBar, xBarBar + A2 * rBar, xBarBar - A2 * rBar, rBar / D2); } }
建限之后控制限不是一成不变:换型、设备大修、工艺参数正式变更后重新建限;常规情况下定期(如每月)评审,评审动作和新旧限值都要留版本记录,历史点按当时的控制限判异——这与配方版本管理(120 篇)是同一个思路。
四、控制图长什么样:六个分区和点的语言
子组序号 → 红区=>±3σ(A区) 橙区=2~3σ(B区) 绿区=±1σ(C区)
上半图中红点超出 UCL(规则1报警),而此前连续 6 点单调上升(规则3已经预警)——真实产线往往先出趋势、后出超差,趋势类规则的价值是在废品出现前几个小时就通知工艺员。
五、判异八规则:让上位机自动读"点的语言"
public class RuleEngine { // 每来一个新子组,把最近若干点子组均值丢进来判一次 public List<int> Evaluate(List<double> x, double cl, double sigma) { var hit = new List<int>(); int n = x.Count, i = n - 1; if (Math.Abs(x[i] - cl) > 3 * sigma) hit.Add(1); if (i >= 8 && x.Skip(i - 8).All(v => v > cl) || i >= 8 && x.Skip(i - 8).All(v => v < cl)) hit.Add(2); if (i >= 5) { var seg = x.Skip(i - 5).Take(6).ToList(); bool up = true, down = true; for (int k = 1; k < seg.Count; k++) { up &= seg[k] > seg[k - 1]; down &= seg[k] < seg[k - 1]; } if (up || down) hit.Add(3); } // 规则5:连续3点中2点在同侧2σ外 if (i >= 2) { var seg = x.Skip(i - 2).Take(3).ToList(); if (seg.Count(v => v > cl + 2 * sigma) >= 2 || seg.Count(v => v < cl - 2 * sigma) >= 2) hit.Add(5); } // 规则6:连续5点中4点在同侧1σ外 if (i >= 4) { var seg = x.Skip(i - 4).Take(5).ToList(); if (seg.Count(v => v > cl + sigma) >= 4 || seg.Count(v => v < cl - sigma) >= 4) hit.Add(6); } // 规则7:连续15点全在±1σ内(先警惕量具失分辨力) if (i >= 14 && x.Skip(i - 14).All(v => Math.Abs(v - cl) < sigma)) hit.Add(7); if (i >= 7 && x.Skip(i - 7).All(v => Math.Abs(v - cl) > sigma)) hit.Add(8); return hit; } }
六、过程能力:Cpk 回答"就算现在合格,余量还有多少"
public static (double cp, double cpk, double ppk) Capability( List<double> allValues, double sigmaWithin, double usl, double lsl) { double mean = allValues.Average(); double cp = (usl - lsl) / (6 * sigmaWithin); double cpk = Math.Min(usl - mean, mean - lsl) / (3 * sigmaWithin); double s = Math.Sqrt(allValues.Sum(v => (v - mean) * (v - mean)) / (allValues.Count - 1)); double ppk = Math.Min(usl - mean, mean - lsl) / (3 * s); return (cp, cpk, ppk); } // 判定基准(汽车行业常见要求,具体看客户手册): // Cpk ≥ 1.67 能力充足;1.33~1.67 可接受但需监控;1.0~1.33 不足,必须改进; // <1.0 不可接受——即使现在没出超差,批量一大必然有废品流到客户手里
| Cpk 低的典型原因 | 排查方向 |
|---|---|
| Cp 高、Cpk 低 | 离散不大但整体偏中心——先调对刀/配方目标值,把均值拉回中心,成本最低 |
| Cp、Cpk 都低 | 离散太大——查设备精度、工装重复定位、原料批次一致性、量具GR&R |
| Cpk 高、Ppk 低 | 组内稳定但组间漂移大——查换班、换料、温升、设备间差异(分层) |
七、失控之后怎么办:报警要接处置闭环,否则只是换个地方刷屏
- 自动标记与隔离:判异触发后,从上一个稳定点之后生产的 SN 自动置"待复检",过站系统(121 篇)拦截,未经复检不能入库;
- 推送与升级:工位橙灯 + 看板提示,15 分钟无人确认升级到班组长(复用 117 篇报警通道),报警同时带上控制图截图和可能原因;
- 找特殊原因:5M1E(人机料法环测)——换刀、换料批、设备维修、调参数记录与报警时间点对齐,八成的特殊原因能在时间轴上直接对上;
- 处置与复产:原因消除后首件必检(连续 3~5 组回到受控),工艺或质量双签字复产,处置记录与受影响 SN 清单存档;
- 量具先过关:量具 GR&R 超过 10%、分辨力不足(最小刻度不能小于公差带 1/10)时,控制图数据本身不可信,先做 MSA 再谈 SPC。
八、上线验收清单
- 子组正确:自动采集按时间窗成组,组内不跨设备/班次,抽 10 组核对原始数据;
- 建限合规:用 ≥25 组稳定数据建限,控制限数值与手工 Excel 复算一致,规格限没有被误当控制限;
- 判异验证:灌入造好的越界点、9点同侧、6点上升序列,规则命中与报警文案正确;
- 处置闭环:触发规则1后区间内 SN 被拦截,复检/双签流程走通,受影响清单可导出;
- Cpk 对账:选一个尺寸用第三方软件复算 Cp/Cpk/Ppk,结果一致到小数点后两位;
- 换型重建:换型后控制限重新建立、历史图按型号与版本隔离查询,不串图。
SPC 在产线上真正跑起来的标志,不是墙上多了几张图,而是形成了一个闭环:数据自动成组、异常自动判读、产品自动隔离、原因有人处理、复产有人签字。上位机手里的实时测量值,只有经过合理子组和判异规则的组织,才能从"存在数据库里的数字"变成提前几小时拦下批量事故的能力——合格是对一批产品的交代,受控才是对整条产线的掌控。
