气温控制器建模
此示例使用并行分解对一个空调控制器进行建模,该控制器将物理被控对象中的气温保持在 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。此值根据以下规则确定冷却活动因子
:
airflow= 0 - 没有风扇运行。气温不会降低,因为
。airflow= 1 - 一个风扇运行。气温降低,冷却活动因子
。airflow= 2 - 两个风扇运行。气温降低,冷却活动因子
。
Physical Plant 子系统根据以下公式更新工厂内的气温
:


其中:
是初始温度。默认值为 70°。
是环境温度。默认值为 160°。
是被控对象的热传递因子。默认值为 0.01。
是对应于 airflow的冷却活动因子。
新温度决定仿真的下一个时间步的冷却量。