2. 温度传感器一阶惯性环节的孪生模型参数辨识
一阶惯性环节的物理含义与辨识目标
温度传感器(如铂电阻、热电偶)的感温元件存在热惯性,其温度响应通常可用一阶惯性环节描述:
其中 T_s 为传感器输出温度,T_0 为初始温度,ΔT 为阶跃幅值,K 为静态增益(理想情况下接近 1),τ 为时间常数。辨识任务就是从阶跃响应实验数据中提取 K 和 τ,使孪生模型输出与实测曲线一致。
阶跃响应实验与数据采集
将传感器从室温环境快速移入恒温水浴(或热源),记录其输出随时间的变化。典型实验条件如下:
| 参数 | 示例值 | 说明 |
|---|---|---|
| 初始温度 T_0 | 25.0 °C | 室温稳定值 |
| 阶跃幅值 ΔT | 50.0 °C | 水浴温度 75.0 °C |
| 采样周期 Ts | 0.5 s | 保证 τ 附近有足够采样点 |
| 记录时长 | 60 s | 覆盖 3~5 倍 τ |
采集到的离散序列记为 {(t_i, T_meas,i)},i = 0,1,…,N。为便于辨识,先做归一化处理:
理想一阶模型归一化后为 y(t) = K · (1 − e^(−t/τ))。
两点法与最小二乘辨识
两点法利用阶跃响应达到 63.2% 和 86.5% 稳态值的时间点快速估算 τ:
- 当 y = 0.632K 时,t = τ;
- 当 y = 0.865K 时,t = 2τ。
取实测数据中首次越过这两个阈值的时间点,可得到两个 τ 估计值并取平均。该方法简单但对噪声敏感。
最小二乘法更稳健。对一阶系统离散化(零阶保持):
其中 a = e^(−Ts/τ),b = K(1 − a),u 为阶跃输入(归一化后 u = 1)。由 a 反解 τ = −Ts / ln(a),再由 b 求 K = b / (1 − a)。
构造回归矩阵:
import numpy as np
# 示例:归一化后的实测阶跃响应(模拟数据,非实测)
Ts = 0.5
t = np.arange(0, 60 + Ts, Ts)
K_true, tau_true = 1.0, 8.0
y_meas = K_true * (1 - np.exp(-t / tau_true))
# 加入小幅测量噪声
rng = np.random.default_rng(42)
y_meas += rng.normal(0, 0.005, size=y_meas.shape)
# 构造回归数据
y_k = y_meas[1:] # y[k]
y_km1 = y_meas[:-1] # y[k-1]
u_km1 = np.ones_like(y_km1) # 阶跃输入归一化为 1
# 最小二乘求解 [a, b]
Phi = np.column_stack([y_km1, u_km1])
theta, *_ = np.linalg.lstsq(Phi, y_k, rcond=None)
a_hat, b_hat = theta
# 反解 tau 和 K
tau_hat = -Ts / np.log(a_hat)
K_hat = b_hat / (1 - a_hat)
print(f"tau_hat = {tau_hat:.3f} s, K_hat = {K_hat:.4f}")
运行上述代码(示例数据)可得到 τ ≈ 8.0 s、K ≈ 1.0 附近的估计值。实际使用时替换为真实采集的 y_meas 即可。
孪生体复现与拟合误差评估
将辨识得到的 K_hat、τ_hat 代入孪生模型,生成仿真曲线并与实测对比。常用评价指标:
- RMSE:均方根误差,反映整体偏差;
- 最大绝对误差:反映最坏情况;
- 拟合优度 R²:越接近 1 越好。
y_sim = K_hat * (1 - np.exp(-t / tau_hat))
rmse = np.sqrt(np.mean((y_meas - y_sim) ** 2))
max_err = np.max(np.abs(y_meas - y_sim))
ss_res = np.sum((y_meas - y_sim) ** 2)
ss_tot = np.sum((y_meas - np.mean(y_meas)) ** 2)
r2 = 1 - ss_res / ss_tot
print(f"RMSE={rmse:.5f}, MaxErr={max_err:.5f}, R2={r2:.5f}")
若 RMSE 明显大于噪声水平,说明一阶模型不足以描述该传感器(可能存在纯滞后或二阶特性),需要扩展模型结构。
辨识结果判读与模型修正
根据示例数据(τ_true = 8.0 s,K_true = 1.0,噪声 σ = 0.005),最小二乘辨识通常可得到 τ_hat 在 7.8~8.2 s、K_hat 在 0.99~1.01 范围内,RMSE 约 0.005~0.008,R² 大于 0.999。若实际数据出现以下情况,需考虑模型修正:
- RMSE 远大于噪声水平:可能存在纯滞后,需在模型中增加 e^(−Ls) 项;
- 初始段拟合差:传感器可能有二阶或分布参数特性;
- 稳态增益偏离 1:检查归一化是否正确或传感器存在系统偏差。