通过使用状态分解定义互斥和并行模式
每个状态(或图)都有分解,表示该状态(或图)可以包含哪些类型的子状态。父状态的所有子状态必须与父状态分解是同一类型。状态分解可以是互斥 (OR) 形式或并行 (AND) 形式。
互斥 (OR) 状态分解
带有实线边框的子状态表示互斥 (OR) 状态分解。此分解可用于描述互斥工作模式。当状态拥有互斥 (OR) 分解时,一次只能有一个子状态激活。
例如,在此图中,状态 A
或状态 B
可以为激活状态。如果状态 A
已激活,则状态 A1
或状态 A2
可以在给定时间激活。
并行 (AND) 状态分解
带有虚线边框的子状态表示并行 (AND) 状态分解。使用此分解可以描述并行工作模式。当状态拥有并行 (AND) 分解时,所有子状态同时激活。
在下例中,当状态 A
激活时,A1
和 A2
两者可以同时激活。
并行状态内的活动本质上独立的,如下例所述。
在下例中,当状态 A
变为激活时,状态 B
和 C
同时变为激活。当状态 C
变为激活时,状态 C1
或状态 C2
中的一个可以激活。
指定子状态分解
您可以通过设置父状态的分解来指定该父状态是包含并行 (AND) 状态还是互斥 (OR) 状态。如果一个状态在激活时其子状态均激活,则该状态具有并行 (AND) 分解。如果一个状态在激活时只有一个子状态激活,则该状态具有互斥 (OR) 分解。
要更改状态的分解,请选择该状态,右键点击该状态以显示分解上下文菜单,并从菜单中选择 OR (互斥) 或 AND (并行)。
您还可以指定图的状态分解。在本例中,Stateflow® 图将其顶层状态视为子状态。该图创建具有互斥分解的状态。要指定图的分解,请取消选中任何所选对象,右键点击图以显示分解上下文菜单,然后从菜单中选择 OR (互斥) 或 AND (并行)。
子状态的外观指示其父状态的分解。互斥子状态有实线边框,并行子状态有虚线边框。并行子状态的右上角还包含一个数字。该数字指示该子状态相对于其同级子状态的激活顺序。