4. 基于统计过程的故障检测
工业过程通常有几十到上百个测点,变量之间高度相关。若对每个变量单独设阈值报警,既会漏掉“单变量正常但变量关系已破坏”的故障,也会因阈值过密产生大量误报。基于统计过程的方法换了一个思路:先用历史正常运行数据建立变量之间的相关结构模型,再把实时样本投影到该模型上,用两个统计量分别衡量“模型内偏离”和“模型外异常”,最后用贡献图定位是哪些变量把统计量推高了。本节围绕主成分分析(PCA)、偏最小二乘(PLS)、T²与SPE统计量、贡献图诊断,并以田纳西伊士曼过程(TEP)为例说明完整流程。
一、PCA:用主成分描述正常工况的相关结构
设标准化后的训练数据矩阵为 X ∈ R^(n×m),n 为样本数,m 为变量数。PCA 对协方差矩阵做特征分解,取前 k 个最大特征值对应的特征向量组成载荷矩阵 P ∈ R^(m×k),则得分 T = X P,重构 X̂ = T Pᵀ,残差 E = X − X̂。主成分子空间保留过程的主要波动方向,残差子空间承载变量间相关关系被破坏的部分。k 的选取常用累计方差贡献率(如 85%~95%)或交叉验证确定;k 过小会把正常波动误判为故障,k 过大则削弱对相关结构破坏的敏感性。
建模前必须做标准化:X_std = (X − μ) / σ,其中 μ、σ 只能来自正常训练集,并保存下来用于在线样本。若某变量方差接近零,应先剔除或改用其他缩放方式,否则标准化会放大噪声。
二、PLS:当质量变量可测时引入监督信息
PCA 只利用 X 自身结构,属于无监督方法。若过程同时能采集关键质量变量 Y(如产品纯度、收率),PLS 更合适。PLS 在 X 与 Y 之间同时提取潜变量,使潜变量既解释 X 的方差,又与 Y 的协方差最大。其外部关系可写为 X = T Pᵀ + E,Y = U Qᵀ + F,内部关系 U = T B。PLS 的 T² 与 SPE 定义与 PCA 类似,但 SPE 通常基于 X 的残差计算。当 Y 在线可测且滞后不大时,PLS 对与质量相关的故障更敏感;若 Y 不可测或严重滞后,则退回 PCA。
三、T²与SPE:两个统计量各管一段
T² 衡量样本在主成分子空间内偏离正常中心的马氏距离:T² = tᵀ Λ⁻¹ t,其中 Λ 为前 k 个特征值构成的对角阵。SPE(又称 Q 统计量)衡量样本在残差子空间的平方重构误差:SPE = eᵀ e = ‖(I − P Pᵀ) x‖²。控制限可在正态假设下按 F 分布(T²)和 χ² 分布(SPE)计算,也可用核密度估计或经验分位数从正常数据直接取 99% 分位点,后者对非高斯数据更稳健。
两个统计量的故障指向不同:T² 超限通常意味着过程整体工况偏移,或主成分方向上的幅值异常;SPE 超限意味着变量间相关关系被破坏,常见于传感器漂移、阀门卡涩、物料配比变化等。实际中会出现“T² 报警而 SPE 正常”“SPE 报警而 T² 正常”“两者同时报警”三类情况,需结合贡献图进一步判断。
四、贡献图:从“报警”到“定位”
统计量超限只说明“有异常”,贡献图回答“谁造成的”。对 SPE,第 i 个变量的贡献可直接取残差平方 c_i = e_i²;对 T²,常用 c_i = tᵀ Λ⁻¹ p_i x_i,其中 p_i 为载荷矩阵第 i 行。把所有变量贡献按降序排列,贡献显著高于其余变量的几个测点即为嫌疑变量。需要注意三点:一是贡献图是相关性证据而非因果结论,需结合工艺流程确认;二是多个变量同时高贡献可能源于同一根因(如某股进料变化导致下游多个温度、压力同时偏移);三是贡献图对传感器故障和过程故障的区分能力有限,通常要配合历史报警记录和现场检查。
五、田纳西伊士曼过程案例
TEP 是化工过程监控的标准仿真平台,包含反应器、冷凝器、汽提塔、压缩机等单元,共 41 个测量变量和 11 个操纵变量,另有 21 种预设故障(IDV1~IDV21),涵盖阶跃、随机变化、缓慢漂移、阀门粘滞等类型。典型做法是:用 500 个正常样本训练 PCA 模型,取累计方差 90% 对应的主元数(TEP 中常在 20~30 之间),用正常样本的 99% 分位点确定 T² 和 SPE 控制限;再用 960 个测试样本(前 160 个正常、第 161 个起引入故障)在线计算统计量。
以 IDV1(A/C 进料比阶跃变化)为例,故障引入后 SPE 通常迅速超限,T² 也可能升高,贡献图中与进料流量、反应器温度相关的变量贡献突出。以 IDV4(反应器冷却水入口温度阶跃)为例,T² 往往先于 SPE 报警,说明工况整体偏移。以 IDV11(反应器冷却水入口温度随机变化)为例,SPE 波动加剧但均值偏移不明显,需观察统计量的持续超限比例而非单点。这些差异说明:不同故障类型在两个统计量上的响应模式不同,实际诊断时应同时观察 T²、SPE 的时序曲线和贡献图,而不是只看某一时刻是否报警。
六、可直接参考的建模与诊断检查表
| 环节 | 关键动作 | 判断依据 |
|---|---|---|
| 数据准备 | 剔除开停车、异常段,检查缺失与量纲 | 训练集应代表正常工况,样本量建议 ≥ 变量数的 10 倍 |
| 标准化 | 用训练集 μ、σ 处理训练与在线数据 | 在线样本不得重新估计 μ、σ |
| 主元数 k | 累计方差 85%~95% 或交叉验证 | k 过小误报多,k 过大灵敏度低 |
| 控制限 | 99% 分位或 F/χ² 分布 | 用独立正常段验证误报率 |
| 在线监控 | 逐样本计算 T²、SPE 并记录超限时刻 | 关注连续超限而非单点 |
| 贡献图 | 对超限样本计算变量贡献并排序 | 取前 3~5 个变量结合工艺确认 |
| 模型维护 | 工况变更后重新训练或更新控制限 | 误报率持续升高即需更新 |
把上述流程落到 MATLAB 中,核心代码通常只有几十行:[P,~,latent] = pca(X_train) 得到载荷与特征值,T = X_train*P(:,1:k) 得到得分,Lambda = diag(latent(1:k)),在线阶段用 t = P(:,1:k)'*x_new、e = x_new - P(:,1:k)*t 计算两个统计量。真正决定诊断效果的不是代码长度,而是训练数据是否干净、主元数是否合理、控制限是否经过验证,以及贡献图结果是否与工艺知识相互印证。