如果你Stateflow®图表包括与图表层次结构高度相关的数据,您可以通过使用简化设计活动状态数据.通过启用活动状态数据,您可以:
避免手动更新反映图表活动的数据。
日志和监视模拟数据检查器中的图表活动。
利用图表活动数据控制其他子系统。
导出图表活动数据到其他Simulink金宝app®块。
有关更多信息,请参阅创建管理系统复杂性的层次结构.
使用活动状态数据输出可以简化某些状态流图的设计。例如,在流量信号的该模型中,所处的状态确定符号的值颜色
.启用活动状态数据时,状态流可以通过跟踪状态活动来提供流量信号的颜色。显式更新颜色
,所以你可以删除这个符号,简化图表的设计。
statflow通过Simulink的输出端口提供活动状态数据,或者将其作为本地数据提供给图表。金宝app该表列出了可用的活动状态数据的不同模式。
活动模式 | 数据类型 | 描述 |
---|---|---|
自我的活动 | 布尔 | 状态是活动的吗? |
孩子的活动 | 枚举 | 哪个儿童国家是活跃的? |
叶国家活动 | 枚举 | 哪个叶状态是活动的? |
要启用活动状态数据,请使用属性检查器。
选择创建输出以进行监控复选框。
从下拉列表中选择活动模式。
输入数据名称对于活动状态数据符号。
(可选)对于Child或Leaf状态活动,输入枚举的名字活动状态数据类型。
默认情况下,statflow将状态活动报告为输出数据。若要将活动状态数据符号的范围更改为本地数据,请使用“符号”窗格。
这个例子使用活动状态数据来为一对交通灯的控制器系统建模。
在交通控制器图中,两个平行的子图管理控制交通灯的逻辑。子图有一个相同的层次结构,由三个子状态组成:红色的
,黄色
, 和绿色
.输出数据Light1
和Light2
对应于子图中的活动子状态。这些信号:
确定动画红绿灯的阶段。
有助于每光等待的汽车数量。
驱动一个安全断言子系统,验证两个交通灯从来都不是同时绿灯。
要查看流量控制器图中的子片,请单击图表左下角的箭头。
每个交通管制员循环通过它的子州,从红色的
来绿色
来黄色
回到红色的
.每个状态对应于交通灯周期中的一个阶段。输出信号Light1
和Light2
指示在任何给定时间哪个状态是活动的。
当。。。的时候红色的
状态变为活动状态,交通灯循环开始。在短暂延迟之后,控制器检查在交叉路口等待的汽车。如果它检测到至少一辆汽车,或者如果经过固定的时间长度,则控制器通过设置请求绿灯Greenlightrequest.
来真的
.发出请求后,控制器将保留在红色的
短时间的状态,直到它检测到其他交通信号是红色。然后控制器将转换为绿色
.
当。。。的时候绿色
状态变为活动状态,控制器通过设置取消其绿灯请求Greenlightrequest.
来假
.控制器集绿色闪光灯
来真的
,防止其他交通信号变成绿色。一段时间后,控制器检查来自另一个控制器的绿灯请求。如果它接收到请求,或者经过了固定的时间长度,那么控制器将转换到黄色
状态。
在过渡之前红色的
状态时,控制器仍处于黄色
状态为固定的时间。当。。。的时候黄色
状态变为非活动状态时,控制器设置绿色闪光灯
来假
,表示其他交通灯可以安全变绿。然后交通灯又开始了。
几个参数定义了交通灯循环的定时。要更改这些参数的值,请双击交通管制员图表并在“块参数”对话框中输入新值。
参数 | 预设值 | 描述 |
---|---|---|
reddelay. |
6秒 | 控制器开始检查交叉路口的汽车的时间长度。此外,在控制器请求绿灯后,在红绿灯可以在绿灯后变为绿色的最小时间长度。 |
maxreddelay. |
360秒 | 在请求绿灯前,控制器检查车辆的最长时间。 |
格雷德莱 |
180秒 | 交通灯保持绿色的最大时间长度。 |
Mingreendelay. |
120秒 | 交通灯保持绿灯的最小时间长度。 |
YELLOWDELAY |
15秒 | 交通灯保持黄色的时间长度。 |
为每个符号启用日志记录。在“符号”窗格中,选择每个符号。在属性检查器中,在日志记录中,选择测井信号数据.
GreenlightRequest
绿色闪光灯
Light1
Light2
在里面模拟选项卡上,单击运行.
在里面模拟选项卡,在审查结果, 点击数据检查员.
在“模拟数据检查器”中,在单独的轴上显示记录的信号。布尔信号GreenlightRequest
和绿色闪光灯
显示为0或1的数值。状态活动信号Light1
和Light2
显示为具有值的枚举数据绿色
,黄色
,红色的
, 和没有任何
.
要在模拟过程中跟踪图表活动,您可以使用仿真数据检查器中的缩放和光标按钮。例如,此表详细说明了在模拟的前300秒内的活动。
时间 | 描述 | 光1 |
Light2 |
GreenlightRequest |
绿色闪光灯 |
---|---|---|---|---|---|
t= 0 | 在仿真开始时,两个交通灯都是红色的。 | 红色的 |
红色的 |
假 |
假 |
t= 6 | 6秒后(reddelay. ),两条街道等有车。两个交通信号灯通过设置请求绿灯GreenlightRequest =真的 . |
红色的 |
红色的 |
真的 |
假 |
t= 12 | 又过了6秒(
|
绿色 |
红色的 |
假 ,然后真的 |
真的 |
t= 132 | 120秒后( |
黄色 |
红色的 |
真的 |
真的 |
t= 147. | 15秒后(
|
红色的 |
绿色 |
假 |
假 ,然后真的 |
t= 153. | 6秒后( |
红色的 |
绿色 |
真的 |
真的 |
t= 267. | Light 2变为黄色120秒( |
红色的 |
黄色 |
真的 |
真的 |
t= 282. | 15秒后(
|
绿色 |
红色的 |
假 |
假 ,然后真的 |
t= 288. | 6秒后( |
绿色 |
红色的 |
真的 |
真的 |
循环重复,直到模拟结束于t= 1000.秒。