使用并行机制对同步子系统建模
要实现同时运行的多个工作模式,请在 Stateflow® 图中使用并行机制。例如,作为复杂系统设计的一部分,您可以使用并行状态对同时被激活的独立组件或子系统建模。有关详细信息,请参阅对有限状态机建模。
状态分解
Stateflow 图可以组合互斥 (OR) 状态和并行 (AND) 状态:
互斥 (OR) 状态表示互斥的工作模式。在同一层级上不能有两个互斥状态同时被激活或执行。Stateflow 以实心矩形表示每个互斥状态。
并行 (AND) 状态表示独立的工作模式。虽然并行状态会依次执行,但可以有两个或多个并行状态同时处于激活状态。Stateflow 用虚线矩形表示每个并行状态,其中的数字表示其执行顺序。
一个给定层级上的所有状态必须具有相同的类型。父状态(顶层状态的父状态即为图本身)具有 OR(互斥)或 AND(并行)分解。默认的状态分解类型是 OR(互斥)。要更改分解类型,请右键点击父状态并选择分解 > AND (Parallel)。
并行分解的示例
此示例采用并行机制来实现一个空调控制器,该控制器将实际被控对象中的气温保持在 120 度。
控制器使用两个风扇来工作。当气温升至 120 度以上时,启动第一个风扇。当气温升至 150 度以上时,启动第二个风扇以提供额外的冷却。图将这两个风扇建模为并行状态 FAN1
和 FAN2
,在控制器打开时这两个状态都会被激活。除工作阈值不同以外,这两个风扇都具有表示两种风扇工作模式(On
和 Off
)的相同状态和转移配置。
第三个并行状态 SpeedValue
根据每个时间步内循环启动的风扇数来计算输出数据 airflow
的值。当 FAN1
的 On
状态被激活时,布尔表达式 in(FAN1.On)
的值为 1。否则,in(FAN1.On)
等于 0。同样,in(FAN2.On)
的值指示 FAN2
是处于循环打开还是关闭状态。这些表达式的总和表示在每个时间步中打开的风扇的数量。
组合使用互斥 (OR) 状态和并行 (AND) 状态
下表列出了在空调控制器图中使用互斥 (OR) 和并行 (AND) 状态的基本原理。
状态 | 分解 | 有理数 |
---|---|---|
PowerOff 、PowerOn | 互斥 (OR) 状态 | 控制器不能同时处于开启和关闭状态。 |
FAN1 、FAN2 | 并行 (AND) 状态 | 风扇作为独立的组件运行,根据所需冷却量的多少打开或关闭。 |
FAN1.On 、FAN1.Off | 互斥 (OR) 状态 | 风扇 1 不能同时处于打开和关闭状态。 |
FAN2.On 、FAN2.Off | 互斥 (OR) 状态 | 风扇 2 不能同时处于打开和关闭状态。 |
SpeedValue | 并行 (AND) 状态 | SpeedValue 表示独立的子系统,用于监视每个时间步的风扇状态。 |
注意
要为在图层次结构的不同部分具有相同名称的对象赋予唯一标识符,请使用圆点表示法,例如 Fan1.On
和 Fan2.On
。有关详细信息,请参阅使用圆点表示法标识数据。
并行状态的执行顺序
即使 FAN1
、FAN2
和 SpeedValue
同时处于激活状态,这些状态在仿真过程中也是依次执行的。状态右上角的数字指定执行顺序。以下是此执行顺序的基本原理:
FAN1
应首先执行,因为它循环打开的温度低于FAN2
打开的温度。无论FAN2
是打开还是关闭,它都可以打开。FAN2
以第二顺位执行,因为它循环打开的温度高于FAN1
打开的温度。它仅在FAN1
已打开时才能打开。SpeedValue
最后执行,因而可以观测FAN1
和FAN2
的最新状态。
默认情况下,Stateflow 根据图中并行状态的创建顺序来分配其执行顺序。要更改某并行状态的执行顺序,请右键点击该状态并从执行顺序下拉列表中选择值。
探索示例
Stateflow 示例包含 Stateflow 图和 Simulink® 子系统。
根据气温 temp
,Air Controller 图打开风扇并将 airflow
的值传递给 Physical Plant 子系统。此输出值确定冷却活动的量,如下表所示。
airflow 的值 | 描述 | 冷却活动因子 k冷却 |
---|---|---|
0 | 没有风扇在运行。temp 的值不会降低。 | 0 |
1 | 一个风扇在运行。temp 的值根据冷却活动因子降低。 | 0.05 |
2 | 两个风扇在运行。temp 的值根据冷却活动因子降低。 | 0.1 |
Physical Plant 模块根据公式
temp
(0) = TInitial
temp
'(t) = (TAmbient - temp
(t))·(kHeat - kCool),
更新工厂内的气温,其中:
TInitial 是初始温度(默认值 = 70 o)
TAmbient 是环境温度(默认值 = 160 o)
kHeat 是工厂的热传递因子(默认值 = 0.01)
kCool 是对应于
airflow
的冷却活动因子
temp
的新值决定仿真的下一个时间步的冷却量。