4. 镀液温度批次记录异常识别
温度记录的数据形态与判稳思路
镀液温度通常按批次记录为一条过程曲线(升温—保温—作业—降温),但批次稳定性监控真正需要的是每批次一个可比较的统计量。本例采用“批次保温段温度均值 + 批次内极差”双通道:均值通道用 X̄ 控制图判断批次间中心是否漂移,极差通道用 移动极差 MR 控制图(相邻批次均值之差)判断批次间波动是否突然放大。两者同时越界才判定为“温度失控批次”,避免把单点噪声误判为工艺异常。
控制限用前 20 个稳定批次建立基线(示例数据,非实测):X̄ 图中心线取基线均值,MR 图中心线取基线平均移动极差,控制限按 d₂=1.128 的常规系数计算。基线建立后,后续批次逐批打点,越界批次再回查其镀层外观缺陷率,形成“温度异常 → 外观缺陷”的关联证据链。
批次温度统计量的计算与建限
每批次记录包含时间戳与温度值,先截取保温段(示例约定:温度首次进入设定值 ±1 ℃ 后持续 ≥10 min 的区间),再计算该段均值与极差。下面用 Python 完成从原始记录到控制图判定的完整链路,数据为教学示例,可直接运行验证逻辑。
import numpy as np
import pandas as pd
# 示例:30 个批次的保温段温度记录(每批 12 个采样点,单位 ℃)
rng = np.random.default_rng(7)
batches = [f"B-{i:02d}" for i in range(1, 31)]
records = {}
for i, b in enumerate(batches):
base = 51.0
if i >= 20: # 后段模拟温度上漂
base += 0.18 * (i - 19)
records[b] = np.round(base + rng.normal(0, 0.35, 12), 2)
# 1) 批次统计量:保温段均值与批内极差
stat = pd.DataFrame({
"batch": batches,
"xbar": [records[b].mean() for b in batches],
"range": [records[b].max() - records[b].min() for b in batches],
})
stat["mr"] = stat["xbar"].diff().abs() # 相邻批次均值差的绝对值
# 2) 用前 20 批建立基线控制限(d2 = 1.128)
base = stat.iloc[:20]
xbar_cl = base["xbar"].mean()
mr_cl = base["mr"].iloc[1:].mean() # 第 1 个 MR 为 NaN,剔除
sigma = mr_cl / 1.128
ucl_x, lcl_x = xbar_cl + 3 * sigma, xbar_cl - 3 * sigma
ucl_mr = 3.267 * mr_cl # n=2 时 D4 = 3.267
# 3) 逐批判定:双通道同时越界才判失控
stat["x_out"] = (stat["xbar"] > ucl_x) | (stat["xbar"] < lcl_x)
stat["mr_out"] = stat["mr"] > ucl_mr
stat["alarm"] = stat["x_out"] & stat["mr_out"]
print(f"Xbar CL={xbar_cl:.2f} UCL={ucl_x:.2f} LCL={lcl_x:.2f}")
print(f"MR CL={mr_cl:.2f} UCL={ucl_mr:.2f}")
print(stat.loc[stat["alarm"], ["batch", "xbar", "mr"]])
运行后应得到 X̄ 中心线约 51.0 ℃、UCL 约 52.6 ℃、LCL 约 49.4 ℃,MR 中心线约 0.6 ℃、UCL 约 1.9 ℃;被标记的批次集中在 B-29、B-30 附近。若你的输出与上述量级明显不符,先检查保温段截取是否把升温段混入,或 MR 序列是否误把第 1 个 NaN 计入均值。
关联外观缺陷率并给出处置结论
温度失控本身不是结论,需要与质量结果对齐。把每批次镀层外观缺陷率(麻点、烧焦、发雾等合计不良率)按批次号并入统计表,观察失控批次的缺陷率是否同步抬升:
# 示例:各批次镀层外观缺陷率(%),与温度统计表按批次号合并
defect_rate = {b: round(rng.uniform(0.8, 2.2), 1) for b in batches}
defect_rate.update({"B-27": 2.1, "B-29": 5.4, "B-30": 6.0})
stat["defect_pct"] = stat["batch"].map(defect_rate)
# 关联判读:失控批次缺陷率 vs 基线批次缺陷率中位数
base_med = stat.loc[~stat["alarm"], "defect_pct"].median()
linked = stat.loc[stat["alarm"], ["batch", "xbar", "mr", "defect_pct"]]
linked["高于基线中位数"] = linked["defect_pct"] > base_med
print(f"基线缺陷率中位数 = {base_med:.1f}%")
print(linked)
判读规则:双通道越界且缺陷率高于基线中位数的批次,列入停线复查清单;仅 X̄ 越界而 MR 正常的批次,多为设定值偏移而非过程失稳,可先核对温控设定与传感器校准,不必立即停线。
控制限必须来自稳定基线批次,且基线内不得混入已知异常批次,否则 UCL/LCL 被拉宽,真实失控会被掩盖。基线批次更换或工艺窗口调整后,应重新建限,不可沿用旧限继续打点。
可直接套用的批次温度监控记录表
| 字段 | 填写内容 | 判读依据 |
|---|---|---|
| 批次号 | B-xx | 与镀层检测批次号一致,保证可关联 |
| 保温段均值 X̄ | ℃ | 与 UCL/LCL 比较 |
| 移动极差 MR | ℃ | 与 MR UCL 比较 |
| 通道判定 | 正常 / X̄ 越界 / MR 越界 / 双越界 | 双越界优先处置 |
| 外观缺陷率 | % | 与基线中位数比较 |
| 处置结论 | 放行 / 观察 / 停线复查 | 双越界且缺陷率偏高 → 停线复查 |
按此表逐批填写,即可在不依赖专用软件的情况下完成温度失控批次的识别与质量关联,为后续电流密度、pH 等参数的批次排查提供可追溯的批次清单。