这篇继续将信号处理相关的内容。
曲线是如何“变直”的?—— 线性化处理
物理世界通常是不完美的。 比尔 - 朗伯定律 告诉我们,光吸收和浓度是指数关系,不是线性关系。$$I = I_0 \cdot e^{-kc}$$ 但是,DCS 和环保局只要线性的 4-20mA(对应 0-1000 ppm)。 如果在屏幕上画出来,信号是一条弯曲的弧线。我们需要把它“掰直”**。
1. 多项式拟合 (Polynomial Fitting)
这是最常用的手段。我们在做标定(Calibration)时,通入 0%, 20%, 40%, 60%, 80%, 100% 的标气。CPU 采集到 6 个电压值,然后用数学方法算出一个公式:$$C = aV^4 + bV^3 + cV^2 + dV + e$$
- a, b, c, d, e 就是存在存储器里的线性化系数。
- 只要系数算得准,再弯的线也能拟合成直线。
2. 查表法 —— 针对“奇葩”传感器
对于氧化锆(ZrO2)这种对数关系的传感器,或者极度非线性的传感器,公式太复杂了。我们就用最笨的办法:查字典。
- 内存里存一张表:
- 10mV -> 0.1 ppm
- 12mV -> 0.15 ppm
- …
- 如果测到了 11mV 怎么办?线性插值 算中间值。
气体打架怎么办?—— 交叉干扰补偿
这是 CEMS 最头疼的问题。
- 场景: 你要测 $\text{SO}_2$。
- 现实: 烟气里有大量的水 ($\text{H}_2\text{O}$) 和 $\text{CO}_2$。
- 麻烦: 虽然我们选了滤光片,但水和 $\text{CO}_2$ 在 $\text{SO}_2$ 的波段上可能还有 0.1% 的微弱吸收。
- 后果: 哪怕没 $\text{SO}_2$,水气也能骗过仪器,产生一个几十 ppm 的假读数。
解决方案:矩阵解耦 (Matrix Decoupling)
既然躲不掉,我们就不仅测 $\text{SO}_2$,顺便把干扰气体也测了。
- 硬件准备: 在切光轮上多加一个滤光片,专门测水的浓度(虽然我们不报告水,但我们要用它)。
- 数学模型:
$$C_{\text{real}} = C_{\text{meas}} - (K_{\text{H2O}} \times C_{\text{H2O}}) - (K_{\text{CO2}} \times C_{\text{CO2}})$$
- $C_{\text{real}}$:真实的 $\text{SO}_2$ 浓度**(我们最终想要的)。
- $C_{\text{meas}}$:仪器测量到的总读数(这是个混合值,包含了 $\text{SO}_2$ 的信号 + 干扰气体的伪信号)。
- $C_{\text{H2O}}$:当前测量到的水含量(比如 10%)。
- $K_{\text{H2O}}$:水对 $\text{SO}_2$ 的干扰系数**(Interference Coefficient)。
- 物理意义:每 1% 的水,会让仪器误以为有 $K$ ppm 的 $\text{SO}_2$。这个系数是厂家出厂时测定并写在内存里的。
- $C_{\text{CO2}}$ / $K_{\text{CO2}}$:同理,这是二氧化碳的浓度和它的干扰系数。
这就是为什么高端分析仪一定要测 $\text{H}_2\text{O}$ 和 $\text{CO}_2$。不是为了看,而是为了扣除背景干扰。如果你的仪器没有这个补偿功能,一下雨(湿度大),你的 $\text{SO}_2$ 数据就会莫名其妙飘高。
卡尔曼滤波 (Kalman Filter) —— 预测未来
这是现在最前沿的信号处理技术,主要用于 TDLAS 激光分析仪或高端质谱仪。普通的滤波是“事后诸葛亮”(求平均值)。卡尔曼滤波是“预言家”**。
- 原理:
它包含两个模型:
- 物理模型: 根据上一秒的浓度和流速,预测下一秒应该是多少。
- 测量模型: 此时此刻传感器实测到了多少。
- 融合:
- 如果实测值和预测值差不多 $\to$ 相信实测值。
- 如果实测值突然跳变(噪声),但物理模型说“不可能变这么快” $\to$ 更多地相信预测值,忽略实测值。
效果: 它能把响应时间(T90)缩短到极致,同时还能把噪声压得极低。这在需要毫秒级响应的工业过程控制中非常重要。