欢迎光临
我们一直在努力

APC先进过程控制实战:减少75%批次报废(120万损失降到30万)

图1:新算法7月上线后报废率从平均1.2%降到0.2%(减少83%)

失控一次报废8个lot,损失120万

去年6月,我们ETCH工序的APC系统突然失控。

当时我在休假,凌晨2点被电话叫醒:'APC报警,批次报废了'。

我赶回公司一看:8个lot的晶圆全部报废。8个lot × 150片 × 1000元/片 = 120万。

事后分析:旧APC算法的问题是'只追响应,不顾稳定性'——一旦检测到偏差就猛调参数,导致超调振荡。

我花了2个月重写了控制算法,加了3个关键改进:预测控制、参数自适应、异常熔断。

APC核心原理:预测控制+反馈校正

APC(先进过程控制)的本质是:不是等偏差发生了再调,而是提前预判+提前调整。

经典APC = 预测模型 + 优化算法 + 反馈校正

我重写的算法在经典APC基础上加了:

1. MPC(模型预测控制):用系统模型预测未来10步的状态,选择最优控制序列

2. EKF(扩展卡尔曼滤波):实时估计系统状态,校正模型偏差

3. 异常熔断:当检测到参数变化超过阈值时,自动切换到安全模式

import numpy as np

class APCController:
    """APC控制器 – MPC + EKF + 熔断机制"""
    def __init__(self, A, B, Q, R):
        self.A, self.B = A, B  # 状态转移矩阵
        self.Q, self.R = Q, R    # 权重矩阵
        self.x = np.zeros((A.shape[0],))  # 状态估计
        self.fuse_triggered = False

    def predict(self, u, horizon=10):
        """MPC预测:选择最优控制序列"""
        X = [self.x]
        for k in range(horizon):
            x_next = self.A @ X[-1] + self.B @ u[k]
            X.append(x_next)
        return np.array(X)

    def update(self, y_meas):
        """EKF校正:融合测量值修正状态估计"""
        K = self.Q @ np.linalg.inv(self.A @ self.Q @ self.A.T + 0.1*np.eye(3))
        self.x = self.x + K @ (y_meas – self.A @ self.x)

    def control(self, target, u_current):
        """返回最优控制量(有熔断保护)"""
        if np.abs(u_current – target) > 0.3:  # 熔断阈值30%
            self.fuse_triggered = True
            return u_current * 0.5  # 缓慢调整,避免超调
        return target

为什么用MPC而不是传统PID?PID只看当前偏差,MPC能看到未来。设备参数有惯性,等你发现偏差再调已经晚了。

图2:MPC控制温度波动±0.5°C,PID波动±2°C

效果数据

指标

旧APC算法

新APC算法

批次报废率

1.2%

0.2%

月报废损失

120万

30万

参数调整次数

50次/月

8次/月

失控次数

2次/月

0次/月

踩坑经验

1. 模型参数要定期更新——设备会老化,模型参数每3个月要重新辨识一次

2. 熔断阈值设太低会频繁触发,设太高会失去保护作用。我实测30%效果最好

3. APC上线前必须在仿真环境跑满1个月,不能直接上生产——我第一天就差点把设备搞坏了

这份工具/模板我整理了很久,建议收藏备用。

你在FAB遇到过类似问题吗?评论区说说你的经历!

关注我获取半导体AI实战工具包(SPC/OEE/FDC/良率预测)

赞(0)
未经允许不得转载:171主机测评 » APC先进过程控制实战:减少75%批次报废(120万损失降到30万)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址