主要内容gydF4y2Ba

平行州的执行命令gydF4y2Ba

并行状态的排序gydF4y2Ba

尽管同一图表中的多个并行(AND)状态同时执行,但是状态流gydF4y2Ba®gydF4y2Ba图表必须确定在模拟过程中何时激活每一个。这种顺序决定了每个并行状态何时执行贯穿所有执行阶段的操作。gydF4y2Ba

与排他(OR)状态不同,并行状态通常不使用转换。相反,执行顺序取决于:gydF4y2Ba

并行状态根据执行顺序分配优先级。数字越低,优先级越高。每个状态的优先级编号显示在右上角。gydF4y2Ba

因为执行顺序是一个图表属性,所以图表中的所有并行状态都继承该属性设置。您不能在同一个状态流程图中混合显式和隐式排序。但是,您可以在同一个Simulink中混合具有不同排序模式的图表金宝appgydF4y2Ba®gydF4y2Ba模型。gydF4y2Ba

在从包含并行状态的状态流程图生成的代码中,每个状态都根据其顺序执行。gydF4y2Ba

并行状态的显式排序gydF4y2Ba

默认情况下,状态流图根据您设置的执行优先级显式地对并行状态进行排序。gydF4y2Ba

显式排序如何工作gydF4y2Ba

当您打开一个新的statflow图表(或一个还不包含任何并行状态的图表)时,图表会按照您创建并行状态的顺序自动将优先级编号分配给它们。编号从父容器中的下一个可用编号开始。gydF4y2Ba

在包含隐式排序并行状态的图表中启用显式排序时,将为现有并行状态保留隐式优先级。当您添加新的并行状态时,执行顺序的分配方式与新状态流程图相同——按照创建的顺序。gydF4y2Ba

您可以在任何时候逐个州重置执行顺序分配,如中所述gydF4y2Ba单独设置并行状态的执行顺序gydF4y2Ba.当您更改并行状态的执行顺序时,Stateflow图会自动对其他并行状态重新编号,以保留它们的相对执行顺序。详细信息请参见gydF4y2Ba并行状态的秩序维护gydF4y2Ba.gydF4y2Ba

显式排序并行状态gydF4y2Ba

要对并行状态使用显式排序,请执行以下任务:gydF4y2Ba

在图表级别启用显式排序。gydF4y2Ba要启用并行状态的显式排序,请遵循以下步骤:gydF4y2Ba

  1. 在图表的顶层内右键单击并选择gydF4y2Ba属性gydF4y2Ba从上下文菜单。gydF4y2Ba

    出现“图表属性”对话框。gydF4y2Ba

  2. 选择gydF4y2Ba用户指定的状态/转换执行顺序gydF4y2Ba复选框。gydF4y2Ba

  3. 点击gydF4y2Ba好吧gydF4y2Ba.gydF4y2Ba

    如果您的图表已经包含隐式排序的并行状态,则保留现有的优先级,直到显式更改它们。在显式模式下添加新的并行状态时,图表将根据创建顺序自动分配优先级(请参阅gydF4y2Ba显式排序如何工作gydF4y2Ba).但是,您现在可以显式地逐个州更改执行顺序,如中所述gydF4y2Ba单独设置并行状态的执行顺序gydF4y2Ba.gydF4y2Ba

单独设置并行状态的执行顺序。gydF4y2Ba在显式排序模式下,您可以更改各个并行状态的执行顺序。对象中右键单击感兴趣的并行状态并选择新的优先级gydF4y2Ba执行顺序gydF4y2Ba菜单。gydF4y2Ba

平行状态的隐式排序gydF4y2Ba

平行状态的隐式排序规则gydF4y2Ba

在隐式排序模式中,状态流图根据位置隐式地对并行状态进行排序。优先级从上到下,然后从左到右,基于以下规则:gydF4y2Ba

  • 并行状态在图表中的垂直位置越高,该状态的执行优先级就越高。gydF4y2Ba

  • 在垂直位置相同的平行状态中,最左边的状态优先级最高。gydF4y2Ba

下面的示例显示这些规则如何应用于顶级并行状态和并行子状态。gydF4y2Ba

请注意gydF4y2Ba

隐式排序创建了设计布局和执行优先级之间的依赖关系。当您在图表中重新排列并行状态时,可能会意外地更改执行顺序并影响模拟结果。为了更好地控制您的设计,请使用默认的显式排序模式来设置执行优先级。gydF4y2Ba

隐式排序并行状态gydF4y2Ba

要对并行状态使用隐式排序,请遵循以下步骤:gydF4y2Ba

  1. 在图表的顶层内右键单击并选择gydF4y2Ba属性gydF4y2Ba从上下文菜单。gydF4y2Ba

  2. 在“图表属性”对话框中,清除gydF4y2Ba用户指定的状态/转换执行顺序gydF4y2Ba复选框。gydF4y2Ba

  3. 点击gydF4y2Ba好吧gydF4y2Ba.gydF4y2Ba

并行状态的秩序维护gydF4y2Ba

无论您使用显式排序还是隐式排序,当您删除、重新编号或添加并行状态时,图表都会尝试协调执行优先级。在这些情况下,图表将并行状态重新排序为:gydF4y2Ba

  • 填充序列中的空白,使顺序连续gydF4y2Ba

  • 确保没有两个状态具有相同的优先级gydF4y2Ba

  • 保留执行的预期相对优先级gydF4y2Ba

图表如何在显式模式下保持相对优先级gydF4y2Ba

对于显式排序,图表保留用户指定的优先级。考虑以下显式排序的例子:gydF4y2Ba

由于显式排序,每个状态和子状态的优先级与图表中的创建顺序匹配。当你执行这些操作时,图表会重新调整并行状态和次状态的优先级:gydF4y2Ba

  1. 更改顶级状态的优先级gydF4y2BabgydF4y2Ba来gydF4y2Ba3.gydF4y2Ba.gydF4y2Ba

  2. 添加顶级状态gydF4y2BaggydF4y2Ba.gydF4y2Ba

  3. 删除亚态gydF4y2BaegydF4y2Ba.gydF4y2Ba

图表为顶级状态显式地保留优先级集gydF4y2BabgydF4y2Ba,但将所有其他平行状态重新编号,以保持它们先前的相对顺序。gydF4y2Ba

图表如何在隐式模式下保持相对优先级gydF4y2Ba

对于隐式排序,图表根据几何形状保留预期的相对优先级。考虑以下隐式排序的例子:gydF4y2Ba

如果您删除顶级状态gydF4y2BabgydF4y2Ba和亚态gydF4y2BaegydF4y2Ba,图表自动重新排序剩余的并行状态和次状态,以保持隐含的几何顺序:gydF4y2Ba

恢复状态下的执行优先级gydF4y2Ba

在某些情况下,您需要在从状态流程图中删除并行状态后恢复它。在隐式排序模式下,图表将根据恢复状态的位置重新分配执行优先级。如果将状态返回到图表中的原始位置,则恢复其原始优先级。gydF4y2Ba

但是,在显式排序模式中,图表不能总是将原始执行优先级恢复到已恢复的状态。这取决于gydF4y2Ba如何gydF4y2Ba你恢复了状态。gydF4y2Ba

如果你通过…gydF4y2Ba 并通过…gydF4y2Ba 优先级是什么?gydF4y2Ba
删除、剪切、拖放到父状态的边界之外,或者拖放到父状态的边界重叠gydF4y2Ba 使用undo命令gydF4y2Ba 恢复原来的优先级。gydF4y2Ba
将父状态的边界拖到父状态的边界之外,使其边界与父状态重叠gydF4y2Ba而且gydF4y2Ba松开鼠标按钮gydF4y2Ba 将它拖回父状态gydF4y2Ba 原有的优先级丢失。状态流图将恢复的状态视为最后创建的状态,并为其分配最低的执行优先级。gydF4y2Ba
将父状态的边界拖到父状态的边界之外,使其边界与父状态重叠gydF4y2Ba没有gydF4y2Ba松开鼠标按钮gydF4y2Ba 将它拖回父状态gydF4y2Ba 恢复原来的优先级。gydF4y2Ba
拖动使其边界重叠一个或多个兄弟状态gydF4y2Ba 将其拖到同一父状态内没有重叠边界的位置gydF4y2Ba 恢复原来的优先级。gydF4y2Ba
切割gydF4y2Ba 粘贴gydF4y2Ba 原有的优先级丢失。状态流图将恢复的状态视为最后创建的状态,并为其分配最低的执行优先级。gydF4y2Ba

在显式和隐式排序之间切换gydF4y2Ba

如果在显式排序并行状态后切换到隐式模式,statflow图将重置执行顺序以遵循隐式几何规则。但是,如果从隐式模式切换到显式模式,图表将不会恢复原来的显式执行顺序。gydF4y2Ba

框和子图中并行状态的执行顺序gydF4y2Ba

当您将并行状态分组到一个框中时,这些状态将保留它们的相对执行顺序。此外,Stateflow图根据应用的显式或隐式排序规则为框分配自己的优先级。这个优先级决定了图表何时激活框内的并行状态。gydF4y2Ba

当您将具有并行分解的状态转换为子图时,其子状态将根据当前的显式或隐式规则保留其相对执行顺序。gydF4y2Ba