主要内容

通过合并激活状态输出来简化 Stateflow 图

此示例说明激活状态数据如何简化某些 Stateflow® 图的设计,因为您不必维护与图层次结构高度相关的数据。当您启用激活状态数据时,Stateflow 通过输出端口向 Simulink® 报告状态活动,或将其作为图中的局部数据来报告。此示例说明如何通过添加激活状态输出数据来简化 Stateflow 图的设计。有关详细信息,请参阅Monitor State Activity Through Active State Data

在旧模型 old_sf_car 中,Stateflow 图 shift_logic 通过更新输出数据 gear 的值来跟踪 gear_state 中的子状态活动。

通过合并激活状态数据,模型 sf_car 可避免反映图活动的手动数据更新。相反,图通过激活状态输出挡位自动输出子状态活动。

修改模型

为了简化 old_sf_car 模型的设计,请消除与图层次结构高度相关的数据,并启用对 gear_state 中子状态活动的自动监控。

步骤 1:消除状态活动的手动跟踪

  1. 在模型 old_sf_car 中,打开图 shift_logic

  2. 要打开符号窗格,请在建模选项卡中,选择符号窗格

  3. gear_state 的每个子状态中,删除为输出数据变量 gear 赋值的 entry 动作。

  4. 符号窗格中,右键点击输出变量 gear 并选择 Delete

步骤 2:启用激活状态输出

  1. 打开属性检查器。在建模选项卡中,选择属性检查器

  2. 在 Stateflow 编辑器中,选择状态 gear_state

  3. 属性检查器中,选中创建监控输出复选框并选择 Child activity

  4. 数据名称字段中,输入激活状态数据的名称 gear

  5. 枚举名称字段中,输入激活状态数据的枚举数据类型的名称 gearType

步骤 3:将信号连接到 Simulink 模块

  1. 在 Simulink 模型中,添加 Cast To Double 模块。此模块将 Stateflow 图的枚举输出转换为 double 类型的信号。有关详细信息,请参阅Data Type Conversion (Simulink)

  2. 将来自 shift_logic 图的输出信号 gear 连接到 Cast To Double 模块。

  3. 将来自 Cast To Double 模块的输出信号连接到 Transmission 子系统。

  4. 添加一个 Memory (Simulink) 模块。此模块可防止 Stateflow 图和 Threshold Calculation 子系统之间出现代数环。

  5. 再次从 Cast To Double 模块的输出信号连接到 Memory 模块。

  6. 将 Memory 模块的输出连接到 Threshold Calculation 子系统。

查看仿真结果

输出信号 gear 是由 Stateflow 管理的枚举类型。您可以通过将图连接到 Scope 模块来在仿真期间查看激活状态输出信号挡位。枚举值的名称与 gear_state 中的子状态名称匹配。额外的枚举值 None 表示没有子级被激活的时间步。

另请参阅

(Simulink) | (Simulink)

主题