主要内容

使用活动状态数据监视图表活动

如果你的状态流®图表包括与图表层次结构高度相关的数据,您可以通过使用简化设计活动状态数据.通过启用活动状态数据,您可以:

  • 避免手动更新反映图表活动的数据。

  • 在模拟数据检查器中记录和监视图表活动。

  • 使用图表活动数据来控制其他子系统。

  • 将图表活动数据导出到其他Simulink金宝app®块。

有关更多信息,请参见创建层次结构来管理系统复杂性

活动状态数据

使用活动状态数据输出可以简化某些状态流程图的设计。例如,在交通信号的这个模型中,激活状态决定了符号的值颜色.当启用活动状态数据时,Stateflow可以通过跟踪状态活动来提供交通信号的颜色。明确的更新颜色不再需要,因此您可以删除此符号并简化图表的设计。

建模交通信号的图表,状态分别为红、黄、绿。符号颜色的值指示哪个状态是活动的。

状态流通过输出端口向Simulink提供活动状态数据,或将其作为本地数据提供给图表。金宝app该表列出了可用的活动状态数据的不同模式。

活动模式 数据类型 描述
自我的活动 布尔 状态是否活跃?
孩子的活动 枚举 哪个子状态是活动的?
叶态活性 枚举 哪个叶状态是活动的?

要启用活动状态数据,请选择要监视的状态。然后,在属性检查器

  1. 选择创建用于监视的输出复选框。

  2. 在下拉列表框中选择活动方式。

  3. 进入数据名称用于活动状态数据符号。

  4. (可选)对于子或叶状态活动,输入枚举的名字用于活动状态数据类型。

默认情况下,Stateflow将状态活动报告为输出数据。要将活动状态数据符号的范围更改为本地数据,请使用符号窗格。

活动状态数据示例

本例使用活动状态数据为一对交通灯的控制器系统建模。

在Traffic Controller图表中,两个并行子图表管理控制交通灯的逻辑。子图表具有相同的层次结构,由三个子状态组成:红色的黄色的,绿色.输出数据Light1而且Light2对应子图中的活动子状态。这些信号:

  • 确定动画交通灯的相位。

  • 增加在每个红绿灯前等待的车的数量。

  • 驱动一个安全断言子系统,验证两个交通灯永远不会同时绿灯。

若要查看“流量控制器”图表中的子图表,请单击图表左下角的箭头。

交通控制子图的行为

每个交通控制器循环遍历它的子状态,从红色的绿色黄色的回到红色的.每个状态对应红绿灯循环中的一个阶段。输出信号Light1而且Light2指示在任何给定时间哪个状态是活动的。

交通信号的图表建模。该图表使用活动状态数据来指示哪个状态是活动的。

红灯

红色的状态变为活动状态,交通灯循环开始。在短暂的延迟后,控制员检查在十字路口等待的车辆。如果它检测到至少一辆车,或者如果一段固定的时间过去了,那么控制器就会通过设置请求绿灯greenLightRequest真正的.发出请求后,控制器仍然在红色的状态短时间,直到它检测到另一个交通信号是红色。然后控制器转换到绿色

绿灯

绿色状态变为活动状态,控制器通过设置取消绿灯请求greenLightRequest.控制器设置greenLightLocked真正的,使另一个交通灯不能转绿灯。一段时间后,控制器检查来自另一个控制器的绿灯请求。如果它接收到一个请求,或者经过一段固定的时间,那么控制器将转换到黄色的状态。

黄灯

在过渡到红色的状态时,控制器保持在黄色的陈述一段固定的时间。当黄色的State变为inactive,控制器设置greenLightLocked,表示另一个红绿灯可以安全变绿。然后红绿灯循环又开始了。

交通灯的时间

几个参数定义了红绿灯循环的时间。若要更改这些参数的值,请双击流量控制器图表,并在“块参数”对话框中输入新的值。

参数 预设值 描述
REDDELAY 6秒 控制员开始检查十字路口车辆的时间长度。此外,在控制员请求绿灯后,交通灯可以变绿的最短时间。
MAXREDDELAY 360秒 控制器在请求绿灯前检查车辆的最长时间。
GREENDELAY 180秒 交通灯保持绿灯的最长时间。
MINGREENDELAY 120秒 交通灯保持绿灯的最短时间。
YELLOWDELAY 15秒 交通灯保持黄色的时间。

探索实例

  1. 启用日志记录greenLightRequestedgreenLightLockedLight1,Light2.在符号窗格中,选择每个符号。然后,在属性检查器下,日志记录中,选择测井信号数据

  2. 模拟选项卡上,单击运行

  3. 模拟选项卡,在审查结果,点击数据检查

  4. 在模拟数据检查器中,在不同的轴上显示记录的信号。布尔信号greenLightRequested而且greenLightLocked显示为0或1的数值。状态活动信号Light1而且Light2显示为值为绿色黄色的红色的,没有一个

模拟数据检查器显示图表的输出。

若要在模拟期间跟踪图表活动,可以使用模拟数据检查器中的缩放和光标按钮。例如,这个表详细描述了模拟的前300秒内的活动。

时间 描述 光1 Light2 greenLightRequested greenLightLocked
t= 0 在模拟开始时,两个交通灯都是红色的。 红色的 红色的
t= 6 6秒后(REDDELAY)时,两条街上都有汽车在等着。两个交通灯都通过设置要求绿灯greenLightRequested真正的 红色的 红色的 真正的
t= 12

再过6秒(REDDELAY):

  • 1号灯变为绿色,正在设置greenLightLocked真正的而且greenLightRequested

  • 2号灯通过设置请求绿灯greenLightRequested真正的

绿色 红色的 ,然后真正的 真正的
t= 132

120秒后(MINGREENDELAY), 1号灯变为黄色。

黄色的 红色的 真正的 真正的
t= 147

15秒后(YELLOWDELAY):

  • 1号灯变成红色,开始设置greenLightLocked

  • 2号灯变成绿色,开始设置greenLightLocked真正的而且greenLightRequested

红色的 绿色 ,然后真正的
t= 153

6秒后(REDDELAY),灯1通过设置请求绿灯greenLightRequested真正的

红色的 绿色 真正的 真正的
t= 267

2号灯变黄120秒(MINGREENDELAY),然后变成绿色。

红色的 黄色的 真正的 真正的
t= 282

15秒后(YELLOWDELAY):

  • 2号灯变成红色,开始设置greenLightLocked

  • 1号灯变为绿色,正在设置greenLightLocked真正的而且greenLightRequested

绿色 红色的 ,然后真正的
t= 288

6秒后(REDDELAY), 2号灯通过设置请求绿灯greenLightRequested真正的

绿色 红色的 真正的 真正的

循环重复,直到模拟在t= 1000秒。

相关的话题