主要内容

输入图表或状态

图表和状态输入发生在以下情况:

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

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

输入图表或状态的工作流

这个流程图显示了事件的进展状态流®需要进入图表或状态。在这个流程图中,当前状态指的是决策或过程正在发生的状态。

表条目

状态流图第一次活动时称为初始化。当初始化图表时,将输入图表,statflow将执行独占(OR)状态的任何默认转换。如果图表顶层的状态是平行的(AND),那么它们将根据它们的订单号变为活动状态。

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

状态进入

当一个状态被标记为进入时,执行状态的进入操作。一旦您的图表处于活动状态并进行了初始化,顶级状态就会变为活动状态。一个状态被标记为进入的方式有以下几种:

  • 即将到来的过渡跨越了州界。

  • 进入的过渡结束于州边界。

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

输入操作

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

输入一个Stateflow图表

在本例中,当图表第一次变为活动状态时,会发生图表初始化。

按照输入图表或状态的工作流在图表进入休眠状态之前,图表初始化的步骤如下:

  1. 执行默认的转换操作,并且x = 0y = 0,z = 0

  2. StateA标记为进入。

  3. StateA不是不活跃父母的实质状态。执行条目操作StateA.现在x = 1

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

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

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

  7. 按照“评估转换”流程图进行标记StateA1条目.转到退出动作流程图。

  8. 当前状态,StateA,是目标状态的超状态,StateA1.返回到Entry Actions流程图。

  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_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

按照输入图表或状态的工作流直到图表进入睡眠状态,进入状态的执行步骤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

相关的话题