主要内容

气温控制器建模

R2026b

此示例使用并行分解对一个空调控制器进行建模,该控制器将物理被控对象中的气温保持在 120 度。

在顶层,空调控制器图有两个互斥状态:PowerOff 和 PowerOn。该图使用互斥 (OR) 分解,因为控制器无法同时处于打开和关闭状态。

控制器使用两个风扇来工作。当气温升至 120 度以上时,启动第一个风扇。当气温升至 150 度以上时,启动第二个风扇以提供额外的冷却。图将这些风扇建模为顶层状态 PowerOn 的并行子状态 FAN1 和 FAN2。由于风扇作为独立的组件运行,根据所需冷却量的多少打开或关闭,PowerOn 使用并行 (AND) 分解来确保在控制器打开时两个子状态都被激活。

除工作阈值不同以外,这些风扇由具有相同子状态和转移配置的状态建模,表示两种风扇工作模式 On 和 Off。由于两个风扇都不能同时处于打开和关闭状态,FAN1 和 FAN2 具有互斥 (OR) 分解。

在 PowerOn 中,称为 SpeedValue 的第三个并行状态表示一个独立子系统,它计算在每个时间步内循环启动的风扇数。当 FAN1 的 On 状态被激活时,布尔表达式 in(FAN1.On) 的值为 1。否则,in(FAN1.On) 等于 0。同样,in(FAN2.On) 的值指示 FAN2 是处于循环打开还是关闭状态。这些表达式的总和表示在每个时间步中打开的风扇的数量。

指定并行状态的执行顺序

即使 FAN1、FAN2 和 SpeedValue 同时处于激活状态,这些状态在仿真过程中也是依次执行的。状态右上角的数字指定执行顺序。以下是此执行顺序的基本原理:

  • FAN1 应首先执行,因为它循环打开的温度低于 FAN2 打开的温度。无论 FAN2 是打开还是关闭,它都可以打开。

  • FAN2 以第二顺位执行,因为它循环打开的温度高于 FAN1 打开的温度。它仅在 FAN1 已打开时才能打开。

  • SpeedValue 最后执行,因而可以观测 FAN1 和 FAN2 的最新状态。

默认情况下,Stateflow 根据您将并行状态添加到图的顺序来分配并行状态的执行顺序。要更改某并行状态的执行顺序,请右键点击该状态并从执行顺序下拉列表中选择值。

对物理被控对象进行建模

此示例包含一个名为 Air Controller 的 Stateflow 图和一个名为 Physical Plant 的 Simulink® 子系统。

根据物理被控对象的气温,图打开风扇,并向子系统输出正在运行的风扇的数量 airflow。此值根据以下规则确定冷却活动因子 $k_{\mathrm Cool}$:

  • airflow = 0 - 没有风扇运行。气温不会降低,因为 $k_{\mathrm{Cool}} = 0$。

  • airflow = 1 - 一个风扇运行。气温降低,冷却活动因子 $k_{\mathrm{Cool}} = 0.05$。

  • airflow = 2 - 两个风扇运行。气温降低,冷却活动因子 $k_{\mathrm{Cool}} = 0.1$。

Physical Plant 子系统根据以下公式更新工厂内的气温 $temp$:

$$temp(0) = T_{\mathrm{Initial}}$$

$$temp'(t) = (T_{\mathrm{Ambient}}-temp(t)) \cdot (k_{\mathrm{Heat}}-k_{\mathrm{Cool}}),$$

其中:

  • $T_{\mathrm{Initial}}$ 是初始温度。默认值为 70°。

  • $T_{\mathrm{Ambient}}$ 是环境温度。默认值为 160°。

  • $k_{\mathrm{Heat}}$ 是被控对象的传热因子。默认值为 0.01。

  • $k_{\mathrm{Cool}}$ 是对应于 airflow 的冷却活动因子。

新温度决定仿真的下一个时间步的冷却量。

另请参阅

主题