主要内容

输入图表或状态

图表和状态输入发生在:

  • 图表第一次被激活。这被称为图表初始化。

  • 存在到状态的有效转换。看到评估转换

输入图表或状态的工作流程

此流程图显示了Stateflow处理的事件的进程®用于进入图表或状态。在此流程图中,当前状态指的是决策或流程发生时的状态。

显示进入图表或状态的步骤的流程图。

表条目

您的状态流图第一次变为活动状态称为初始化。当您的图表发生初始化时,将进入图表,并且Stateflow执行排他(OR)状态的任何默认转换。如果图表顶层的状态是并行的(AND),则它们根据其订单号变为活动状态。

如果您希望图表在时间之前进行任何默认转换T = 0,在“图表属性”对话框中选择在初始化时执行(输入)图表复选框。此选项导致状态流图与Simulink同时初始化金宝app®初始化。图表的默认转换路径然后在模型初始化阶段执行。

状态进入

当一个状态被标记为条目时,执行该状态的条目操作。一旦图表处于活动状态并完成初始化,顶层状态就会变为活动状态。以下列方式之一标记一个状态以供进入:

  • 传入的转换跨越州边界。

  • 传入的转换在状态边界处结束。

  • 状态是活动状态的并行状态子状态。

输入操作

入口操作以前缀开头条目简而言之,后面跟着必需的冒号(),然后进行一个或多个动作。您可以使用回车、分号(),或逗号().如果未显式地为语句指定状态操作类型,则图表将该语句视为条目行动。

输入一个Stateflow图表

在本例中,图表第一次变为活动状态时,将进行图表初始化。

具有称为StateA和StateB的顶级状态的状态流图。StateA有子状态stata1和stata2。StateB有子状态statb1和statb2。

通过遵循输入图表或状态的工作流程在图表进入睡眠状态之前,图表初始化的步骤顺序如下:

  1. 默认的转换操作被执行,并且X = 0Y = 0,Z = 0

  2. StateA被标记为进入。

  3. StateA不是非活动父级的子状态。执行条目操作StateA.现在X = 1

  4. StateA是最初标记为进入的状态。

  5. StateA不包含任何历史结点。

  6. 有一个到子状态的默认转换,StateA1.转到评估转换流程图。

  7. 通过遵循评估转换流程图,标记StateA1条目.转到退出操作流程图。

  8. 当前的状态,StateA,是目的国的超状态,StateA1.返回到入口操作流程图。

  9. StateA1不是非活动父级的子状态。执行条目操作StateA1.现在X = 3

  10. StateA1是最初标记为进入的状态。

  11. StateA1不包含任何历史结点。

  12. StateA1不包含任何默认转换。

  13. StateA1不包含任何单一的子态。

  14. 图表进入休眠状态。

步骤1到14发生在初始时间步骤中。这就完成了图表初始化过程。

使用历史结点进入状态

如果您希望您的状态流图表能够记住并返回到以前处于活动状态的子状态,而不考虑默认转换,请使用历史连接。在状态中放置历史连接会覆盖默认转换,从而导致排他(OR)子状态。在状态中放置历史连接后,在进入状态时,您的状态流图表会记住并进入先前活动的子状态。历史连接仅适用于它出现的层次结构级别。

在这个例子中,灯可以打开或关闭。这些选项由各州指示Power_onPower_off.这些选项由输入事件控制switch_onswitch_off.灯开着的时候,可以是暗的,也可以是亮的。这些选项由各州指示并且由输入事件控制switch_lowswitch_high

最初,图表处于休眠状态。国家Power_off是活跃的。当国家Power_on最后一次活动,是之前活跃的子状态。事件switch_on发生和状态Power_on被标记为进入。此时此刻P = 0

具有称为Power_off和Power_on的顶级状态的状态流图表。Power_on具有历史结和子状态Low和High。

通过遵循输入图表或状态的工作流程在图表进入睡眠状态之前,执行进入状态的步骤Power_on顺序如下:

  1. Power_on不是非活动父节点的子节点。

  2. 没有条目操作Power_on

  3. Power_on是最初标记为进入的状态。

  4. 这里有历史的连接点Power_on

  5. 是之前活跃的子状态。现在P = 2

  6. 不包含任何历史结点。

  7. 不包含任何默认转换。

  8. 不包含任何单一的子态。

  9. 图表进入休眠状态。

完成条目操作Power_on

使用超转换进入状态

超转换是图表中不同级别之间的转换。超转换可以在顶级图表中的状态与其其中一个子图表中的状态之间,也可以在图表中相同或不同级别的不同子图表中的状态之间。您可以创建跨越图表中任意数量的级别的超过渡。

当通过超转换进入状态时,在执行最终目的地的进入操作之前,必须将其超状态标记为活动状态,并且必须执行它们的进入操作。在这个例子中,StateB1已被标记为从StateA2.此时,X = 5Y = 5,Z = 1

具有称为StateA和StateB的顶级状态的状态流图。StateA有子状态stata1和stata2。StateB有子状态statb1和statb2。

通过遵循输入图表或状态的工作流程在图表进入睡眠状态之前,执行进入状态的步骤StateB1顺序如下:

  1. StateB1是非活动父级的子状态(StateB).

  2. StateB被标记为活动。

  3. StateB不是非活动父级的子状态。

  4. 的输入操作StateB.现在X = 4

  5. StateB不是最初标记为进入的状态。

  6. 的输入操作StateB1.现在X = 3

  7. StateB1是最初标记为进入的状态。

  8. StateB1没有历史连接点。

  9. StateB1不包含任何默认转换。

  10. StateB1不包含任何单一的子态。

  11. 图表进入休眠状态。

完成条目操作StateBStateB1

相关的话题