主要内容

使用状态表示操作模式

一个状态描述无功系统的操作模式。在状态流中®状态用于顺序设计,以创建状态转换图。

状态可以是活动的,也可以是非活动的。状态的活动或不活动可以根据事件和条件而改变。事件的发生通过使状态变为活动或非活动来驱动状态转换图的执行。有关详细信息,请参阅

创建一个状态

可以通过在编辑器中为特定图表(块)绘制状态来创建状态。遵循以下步骤:

  1. 在对象选项板中,单击状态图标

  2. 在图表画布上,单击新状态的位置。

  3. 输入状态的标签,然后单击状态外部。状态的标签指定其所需的名称和可选操作。有关详细信息,请参阅标签州

移动和调整状态

要移动状态,请执行以下操作:

  1. 单击并拖动状态。

  2. 将其释放到新位置。

要调整状态大小,请执行以下操作:

  1. 将指针放在州的某个角落。

    当你的指针在一个角上时,它会显示为一个双端箭头(仅适用于PC;指针的外观因其他平台而异)。

  2. 单击并拖动状态的角以调整状态的大小,然后释放鼠标左键。

创建子状态和超级状态

一个亚州是仅当另一个状态(称为其父状态)处于活动状态时才可以处于活动状态的状态。具有子状态的状态称为超级大国.要创建子状态,单击State工具并将一个新状态拖动到您想要成为超状态的状态中。状态流程图在指定的父状态中创建子状态。您可以以这种方式将状态嵌套到任何深度。若要更改子状态的父状态,请将其从图表中的当前父状态拖拽到新的父状态中。

请注意

父状态的图形大小必须足以容纳其所有子状态。在将新的子状态拖动到父状态之前,可能需要调整其大小。通过将超级状态声明为子状态,可以绕过对大图形大小状态的需要。看见使用子图封装模态逻辑详情请参阅。

集团国家

何时将一个州分组

将状态分组以将状态内的所有图形对象一起移动。对状态进行分组时,图表将状态及其内容视为单个图形单元。此行为简化了图表的编辑。例如,移动分组状态会移动该状态内的所有子状态和函数。

如何将一个国家分组

您可以通过右键单击状态,然后选择组和子组>集团在上下文菜单中。状态显示为灰色阴影,表示它现在已分组。

何时取消对状态的分组

在执行以下操作之前,必须取消对状态的分组:

  • 选择状态中的对象

  • 将其他图形对象移动到状态

    如果试图将状态和图形函数等对象移动到分组状态,则会看到无效的交集错误消息。同样,具有无效交集的对象有一个红色边框。

如何取消状态分组

通过右键单击状态,然后清除,可以将其解组组和子组>集团在关联菜单中。状态的背景不再显示为灰色。

指定亚态分解

通过设置超状态的分解,可以指定超状态是包含并行(AND)状态还是排他(or)状态。当状态处于活动状态时,其所有子状态都处于活动状态的状态具有并行(AND)分解。当一个子状态处于活动状态时,只有一个子状态处于活动状态,这种状态具有互斥(OR)分解。空状态的分解是独占的。

要更改状态的分解,请选择该状态,右键单击以显示该状态的分解分解关联菜单,然后选择或(独家)和(平行)从菜单中。

您还可以指定图表的状态分解。在本例中,状态流图将其顶级状态视为子状态。图表使用排他分解创建状态。要指定图表的分解,取消选择任何选定的对象,右击以显示图表的分解分解关联菜单,然后选择或(独家)和(平行)从菜单中。

子状态的出现表明其超状态的分解。独占子状态具有实心边框、平行子状态和虚线边框。平行子状态的右上角也包含一个数字。该数字表示子状态相对于其同级子状态的激活顺序。

指定并行状态的激活顺序

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

  • 默认情况下,创建新的状态流程图时,显式排序适用。在这种情况下,您可以逐个状态指定激活顺序。

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

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

请注意

并行状态的激活顺序显示在其右上角。

改变状态属性

使用“状态”对话框查看和更改状态的属性。进入“状态”对话框:

  1. 右键单击状态并选择性质

    此时会出现状态属性对话框。有关属性的说明,请参阅可以在“常规”窗格中设置的属性可以在日志窗格中设置的属性

  2. 修改特性设置,然后单击以下按钮之一:

    • 应用保存更改并保持“状态”对话框打开的步骤

    • 取消返回到以前的设置

    • 好啊保存更改并关闭对话框的步骤

    • 帮助在HTML浏览器窗口中显示文档的步骤

可以在“常规”窗格中设置的属性

全体的此时将显示“状态属性”对话框的窗格,如图所示。

属性中可以设置这些属性全体的窗玻璃

所有物

描述

的名字

状态流程图名称;只读;单击此超文本链接将状态置于前台。

执行令

设置并行(AND)状态的执行顺序。此属性不会在独占(或)状态下显示。看见并行状态的执行顺序

创建用于监视的数据

选择此选项可创建状态活动数据。看到通过活动状态数据监视状态活动

函数内联选项

选择以下选项之一以控制生成代码中状态函数的内联:

  • 汽车

    内联基于内部启发式的状态函数。

  • 内联

    始终将状态函数内联到父函数中,只要该函数不是递归的一部分。看到生成代码中的内联状态函数(金宝app仿真软件编码器)

  • 作用

    为每个状态创建单独的静态函数。

标签

状态的标签,包括状态的名称及其相关的操作。看到标签州

可以在日志窗格中设置的属性

登录中此时将显示“状态属性”对话框的窗格,如图所示。

属性中可以设置这些属性登录中窗玻璃

所有物

描述

日志的自我活动

将“自我活动”值保存到MATLAB®模拟期间的工作空间。

测试点

将状态指定为测试点,可以在模型模拟期间用浮动范围监视该状态。您还可以将测试点值记录到MATLAB工作空间对象中。看到监视状态流图中的测试点

日志的名字

指定与记录的自我活动关联的名称。模拟金宝app®软件默认使用信号名称作为其日志记录名称。要指定自定义日志记录名称,请选择风俗从列表框中选择,然后在相邻的编辑字段中输入新名称。

将数据点限制为最后一个

限制记录到最近样本的自我活动。

抽取

通过跳过样本来限制记录的自我活动。例如,抽取因子为2将每隔一个样本保存一次。

可以在“文档”窗格中设置的属性

文档此时将显示“状态属性”对话框的窗格,如图所示。

属性中可以设置这些属性文档窗玻璃

所有物

描述

描述

文字描述或评论。

文档链接

输入URL地址或通用的MATLAB命令。的例子是www.tatmou.commailto:电子邮件地址编辑/spec/data/speed.txt

标签州

状态的标签指定状态所需的名称,以及在状态处于活动状态时输入、退出或接收事件时执行的可选操作。

状态标签具有以下常规格式。

名称/条目:进入行动期间:行动中出口:退出行动绑定:数据事件在…上event_or_message_name关于事件或消息的名称操作

这种格式的斜体条目有以下含义:

关键词

条目

描述

不适用

名称

使用可选斜杠对状态的唯一引用

进入EN

进入行动

作为向特定状态转换的结果而输入特定状态时执行的操作

在期间

行动中

当状态处于活动状态且没有有效的状态转换时接收到事件时执行的操作

出口前任

退出行动

由于从状态转移而退出状态时执行的操作

绑定

数据事件

将指定的数据或事件绑定到此状态。绑定数据只能由该状态或其子状态更改,但可以由其他状态读取。绑定事件只能由该状态或其子级广播。

在…上

event_or_message_name

关于事件名称操作

指定的事件或消息

当状态处于活动状态且指定事件发生或消息出现时执行的操作。

有关详细信息,请参阅通过广播事件同步模型组件通过发送消息与状态流程图通信

输入名称

最初,州的标签为空。状态流程图通过显示?在州的标签位置(左上角)。通过以下步骤输入状态名称,开始标记状态:

  1. 单击状态。

    状态变为高亮颜色,并且在状态的左上角出现一个问号字符。

  2. 点击编辑标签。

    此时会出现一个编辑光标。您现在可以自由键入标签。

    在州标签的第一行输入州名称。名称区分大小写。为避免命名冲突,请不要将相同的名称分配给同级州。但是,可以将相同的名称分配给不共享同一父级的州。

    标记状态后,单击状态外部。否则,继续输入操作。要重新编辑标签,请单击要编辑的字符位置附近的标签文本。

输入操作

在标签中输入状态名称后,可以输入以下任何操作类型的操作:

  • 进入行动-从关键字的新行开始进入EN,后面接冒号,在一行或多行上接一个或多个动作语句。要在同一行中分隔多个动作,请使用逗号或分号。

    您可以在与州名称相同的行上开始进入操作。在这种情况下,以正斜杠开始进入操作(/)而不是entry关键字。

  • 退出行动-从关键字的新行开始出口前任,后面接冒号,在一行或多行上接一个或多个动作语句。要在同一行中分隔多个动作,请使用逗号或分号。

  • 行动中-从关键字的新行开始在期间,后面接冒号,在一行或多行上接一个或多个动作语句。要在同一行中分隔多个动作,请使用逗号或分号。

  • 绑定操作-从关键字的新行开始绑定后跟冒号,在一行或多行上后跟一个或多个数据或事件。要在同一行上分隔多个操作,请使用逗号或分号。

  • 关于行动-从关键字开始在…上,后面接一个空格和事件或消息的名称,后面接一个冒号,在一行或多行上接一个或多个动作语句

    在ev1上:退出();

    要在同一行上分隔多个操作,请使用逗号或分号。如果希望不同的事件触发不同的操作,请输入多个在…上状态标签中的块。每个块指定一个特定事件或消息的操作,例如:

    ev1: action1 ();ev2: action2 ();

为状态输入的操作的执行仅取决于其操作类型,而不取决于在标签中输入操作的顺序。如果你这样做为语句显式指定操作类型,图表将该语句视为入口操作。

提示

您也可以在属性对话框中编辑状态的标签。看到改变状态属性

另见

相关话题