Stateflow快速入门系列(四):使用并行分解对同步子系统建模

要实现并发运行的工作模式,请在 Stateflow 图中使用并行状态。例如,作为复杂系统设计的一部分,您可以使用并行状态对同时被激活的独立组件或子系统建模。

状态分解

图或状态的分解类型指定图或状态包含互斥状态还是并行状态:

  • 互斥状态表示互斥的工作模式。在同一层级上不能有两个互斥状态同时被激活或执行。Stateflow 图用实线矩形表示每个互斥状态。
  • 并行状态表示独立的工作模式。虽然并行状态会依次执行,但可以有两个或多个并行状态同时处于激活状态。Stateflow 图用虚线矩形表示每个并行状态,其中的数字表示其执行顺序。

通过在状态层次结构的不同层级设置状态分解,您可以在 Stateflow 图中组合互斥和并行状态。默认的状态分解类型是 Exclusive (OR)。要将分解类型更改为 AND (Parallel),请右键点击父状态并选择分解 > AND (并行)

气温控制器建模

此示例使用并行分解对一个空调控制器进行建模,该控制器将物理被控对象中的气温保持在 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 是处于循环打开还是关闭状态。这些表达式的总和表示在每个时间步中打开的风扇的数量。

指定并行状态的执行顺序

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

  • FAN1 应首先执行,因为它循环打开的温度低于 FAN2 打开的温度。无论 FAN2 是打开还是关闭,它都可以打开。
  • FAN2 以第二顺位执行,因为它循环打开的温度高于 FAN1 打开的温度。它仅在 FAN1 已打开时才能打开。
  • SpeedValue 最后执行,因而可以观测 FAN1  FAN2 的最新状态。

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

探索示例

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

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

  • airflow = 0 - 没有风扇运行。气温不会降低,因为 Kcool=0
  • airflow = 1 - 一个风扇运行。气温降低,冷却活动因子 Kcool=0.05
  • airflow = 2 - 两个风扇运行。气温降低,冷却活动因子 Kcool=0.1

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

temp(0)=Tinitial

temp'(t)=(Tambient=temp(t))*(Kheat-Kcool),

其中:

  •  Tinitial是初始温度。默认值为 70°。
  • Tambient 是环境温度。默认值为 160°。
  • Kheat 是被控对象的热传递因子。默认值为 0.01。
  • Kcool 是对应于 airflow 的冷却活动因子。

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

  • 37
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_43015338

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值