Main Content

使用并行机制对同步子系统建模

要实现同时运行的多个工作模式,请在 Stateflow® 图中使用并行机制。例如,作为复杂系统设计的一部分,您可以使用并行状态对同时被激活的独立组件或子系统建模。有关详细信息,请参阅对有限状态机建模

状态分解

Stateflow 图可以组合互斥 (OR) 状态和并行 (AND) 状态:

  • 互斥 (OR) 状态表示互斥的工作模式。在同一层级上不能有两个互斥状态同时被激活或执行。Stateflow 以实心矩形表示每个互斥状态。

    Stateflow chart with two exclusive (OR) states.

  • 并行 (AND) 状态表示独立的工作模式。虽然并行状态会依次执行,但可以有两个或多个并行状态同时处于激活状态。Stateflow 用虚线矩形表示每个并行状态,其中的数字表示其执行顺序。

    Stateflow chart with two parallel (AND) states.

一个给定层级上的所有状态必须具有相同的类型。父状态(顶层状态的父状态即为图本身)具有 OR(互斥)或 AND(并行)分解。默认的状态分解类型是 OR(互斥)。要更改分解类型,请右键点击父状态并选择分解 > AND (Parallel)

并行分解的示例

此示例采用并行机制来实现一个空调控制器,该控制器将实际被控对象中的气温保持在 120 度。

控制器使用两个风扇来工作。当气温升至 120 度以上时,启动第一个风扇。当气温升至 150 度以上时,启动第二个风扇以提供额外的冷却。图将这两个风扇建模为并行状态 FAN1FAN2,在控制器打开时这两个状态都会被激活。除工作阈值不同以外,这两个风扇都具有表示两种风扇工作模式(OnOff)的相同状态和转移配置。

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

组合使用互斥 (OR) 状态和并行 (AND) 状态

下表列出了在空调控制器图中使用互斥 (OR) 和并行 (AND) 状态的基本原理。

状态分解有理数
PowerOffPowerOn互斥 (OR) 状态控制器不能同时处于开启和关闭状态。
FAN1FAN2并行 (AND) 状态风扇作为独立的组件运行,根据所需冷却量的多少打开或关闭。
FAN1.OnFAN1.Off互斥 (OR) 状态风扇 1 不能同时处于打开和关闭状态。
FAN2.OnFAN2.Off互斥 (OR) 状态风扇 2 不能同时处于打开和关闭状态。
SpeedValue并行 (AND) 状态SpeedValue 表示独立的子系统,用于监视每个时间步的风扇状态。

注意

要为在图层次结构的不同部分具有相同名称的对象赋予唯一标识符,请使用圆点表示法,例如 Fan1.OnFan2.On。有关详细信息,请参阅使用圆点表示法标识数据

并行状态的执行顺序

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

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

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

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

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

探索示例

Stateflow 示例包含 Stateflow 图和 Simulink® 子系统。

Simulink model that simulates an air controller system.

根据气温 tempAir 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 的新值决定仿真的下一个时间步的冷却量。

相关主题