Main Content

通过使用状态分解定义互斥和并行模式

每个状态(或图)都有分解,表示该状态(或图)可以包含哪些类型的子状态。父状态的所有子状态必须与父状态分解是同一类型。状态分解可以是互斥 (OR) 形式或并行 (AND) 形式。

互斥 (OR) 状态分解

带有实线边框的子状态表示互斥 (OR) 状态分解。此分解可用于描述互斥工作模式。当状态拥有互斥 (OR) 分解时,一次只能有一个子状态激活。

例如,在此图中,状态 A 或状态 B 可以为激活状态。如果状态 A 已激活,则状态 A1 或状态 A2 可以在给定时间激活。

Chart with two exclusive substates called A and B. State A has two exclusive substates called A1 and A2.

并行 (AND) 状态分解

带有虚线边框的子状态表示并行 (AND) 状态分解。使用此分解可以描述并行工作模式。当状态拥有并行 (AND) 分解时,所有子状态同时激活。

在下例中,当状态 A 激活时,A1A2 两者可以同时激活。

State A with two parallel substates called A1 and A2.

并行状态内的活动本质上独立的,如下例所述。

在下例中,当状态 A 变为激活时,状态 BC 同时变为激活。当状态 C 变为激活时,状态 C1 或状态 C2 中的一个可以激活。

State A with two parallel substates called B and C. State C has two exclusive states called C1 and C2.

指定子状态分解

您可以通过设置父状态的分解来指定该父状态是包含并行 (AND) 状态还是互斥 (OR) 状态。如果一个状态在激活时其子状态均激活,则该状态具有并行 (AND) 分解。如果一个状态在激活时只有一个子状态激活,则该状态具有互斥 (OR) 分解。

要更改状态的分解,请选择该状态,右键点击该状态以显示分解上下文菜单,并从菜单中选择 OR (互斥)AND (并行)

您还可以指定图的状态分解。在本例中,Stateflow® 图将其顶层状态视为子状态。该图创建具有互斥分解的状态。要指定图的分解,请取消选中任何所选对象,右键点击图以显示分解上下文菜单,然后从菜单中选择 OR (互斥)AND (并行)

子状态的外观指示其父状态的分解。互斥子状态有实线边框,并行子状态有虚线边框。并行子状态的右上角还包含一个数字。该数字指示该子状态相对于其同级子状态的激活顺序。

指定并行状态的激活顺序

您可以使用两种方法之一指定激活顺序:显式或隐式排序。

  • 默认情况下,当您创建新的 Stateflow 图时,会应用显式排序。在本例中,您可以基于每个状态指定激活顺序。

  • 您还可以通过让图根据位置对并行状态进行排序来覆盖显式排序。这种模式称为隐式排序

有关详细信息,请参阅并行状态的显式排序并行状态隐式排序

注意

并行状态的激活顺序出现在它的右上角。