动态建模

本页目录

固定功率下的最终温度可以用代数算出,但“多久达到”“中途怎样变化”需要动态模型。本篇从热量收支建立一个状态,再把同一关系写成连续与离散形式。前置是反馈与控制。

从守恒关系写出导数

温度变化需要能量。热容 表示升高 1 K 所需的能量;若一小段时间 内净入热功率为 ,则 。两边除以时间,再取极限:

这里 是温度变化率,单位 K/s; 是 J/K;、额外入热 的单位为 W; 为 W/K; 无量纲。左边单位是 J/s,与右边相同。正 表示额外加热,负 表示额外移走热量。

本系列基线为 J/K、 W、 W/K。取 、、、,净入热是 W,故 K/s。这个导数描述当前趋势,不表示未来每秒都增加 0.1 K;温度升高后散热也会增加。

状态为什么能概括过去?

在这个集中参数模型里,给定当前温度与后续输入,就能计算后续温度,所以 是状态。状态不是“所有历史记录”,而是模型中预测未来所需的当前信息。

假如容器壁和内部液体温度不同,仅知道液体温度就不够:相同液温、不同壁温会产生不同的后续换热。此时需要至少两个温度状态。模型的维数来自被保留的动态,不来自传感器数量。状态反馈篇会进一步区分状态与可测输出。

时间常数是怎样出现的?

当 恒定时,令导数为零得到

把方程改写成 。偏离最终值越多,回归速度越大;解为

基线 s。从 20 °C、 开始,最终是 40 °C。100 s 后为 °C,完成变化量的 63.2%;300 s 后约 39.00 °C,完成 95.0%。时间常数不是“恰好到达终点所需时间”。

正在呈现知识画面
动态建模 · 实验

从20 °C开始,室温20 °C,固定加热400 W。解析解同时显示温度和净入热;热容改变动态,散热系数还会改变终值。

先把热容加倍,再把散热系数加倍。前者只改变时间常数,后者同时改变时间常数与最终温升。读图时区分“绝对温度较低”和“相对于自身终值收敛较快”。

连续方程怎样变成递推?

最直接的前向 Euler 近似是

是数值计算步长。若这一段时间内输入保持不变,可以直接使用精确解:

例如 s,从 20 °C 开始,Euler 得到 22 °C,精确递推得到 21.903 °C。两者的差别来自近似方法。对于无输入偏差方程,Euler 的离散系数是 ,只有 才渐近稳定;不能把过大步长造成的发散解释成真实对象失稳。数字控制篇再区分仿真步长与真实控制周期。

线性化保留了什么?

选定平衡点 ,用 、 表示偏差。在环境与热负载不变时,得到

本模型本来就是仿射关系,偏差变换后是精确线性方程。若换成辐射散热、温度相关热容或非线性执行器,通常只能在工作点附近用导数近似。对一般 ,局部矩阵来自 、,并不是对所有温度都成立的同一组常数。

RC 电路的 也有储能和泄放,时间常数为 。这种对应帮助迁移数学结构;电压、温度、能量和执行器约束仍有各自单位与物理意义。可回看电容。

自检

只把热容从 2000 增加到 4000 J/K,固定输入下最终温度与 100 s 时温度分别怎样变化?

参考思路

终值不变,时间常数变为200 s。原来的20→40 °C过程在100 s时变为 °C,升温更慢。

两杯液体当前都为 40 °C,但一个容器壁更热。为什么一个温度状态的模型可能预测错误?

参考思路

壁温是被遗漏的储能状态。相同测量值不保证相同内部状态。应增加壁温及换热关系,或说明何种快速平衡近似允许合并两者。

延伸

python-control 的连续到离散转换提供包括零阶保持在内的转换方法。选择方法前,先明确“输入在采样间隔内保持不变”是否符合实际实现。