Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

通过发送消息与 Stateflow 图通信

要在 Simulink® 模型中的 Stateflow® 图内部和各图之间进行通信,请使用消息。消息是 Stateflow 对象,用于在本地或图之间进行数据通信。在发送方图中,您可以发送或转发包含数据的消息。在接收方图中,使用队列接收并保留消息,直到图能够计算它。

消息结合了数据和事件的一些功能。像数据一样,消息可以传输数值和文本信息。像事件一样,消息可以触发转移和状态动作。然而:

  • 消息不会触发图唤醒。消息需要排队,直到图被唤醒。当图唤醒时,它可以响应队列中的消息。

  • 如果接收方图无法立即响应,消息不会丢失。

有关详细信息,请参阅View Differences Between Stateflow Messages, Events, and Data

当图转移或状态动作计算消息时,图会确定队列是否包含任何消息。如果包含,图将从队列中移除该消息。该消息一直有效,直到时间步结束,或者直到图转发或丢弃该消息。当消息有效时,其他转移或动作可以访问消息数据,并且图不会再从队列中移除其他消息。图会在当前时间步结束时销毁所有有效消息。

在图中定义消息

您可以使用 Symbols 窗格、Stateflow Editor 菜单或 Model Explorer 向 Stateflow 图添加消息。

通过 Symbols 窗格添加消息

  1. Modeling 选项卡中的 Design Data 下,选择 Symbols Pane

  2. 点击 Create Message 图标

  3. 在新消息行中,点击 TYPE 下方的图标并选择:

    • Input Message

    • Local Message

    • Output Message

  4. 编辑消息的名称。

  5. 对于输入和输出消息,点击 PORT 字段并选择端口号。

  6. 要指定消息的属性,请打开 Property Inspector。在 Symbols 窗格中,右键点击该消息的行并选择 Explore。有关详细信息,请参阅Set Properties for a Message

使用 Stateflow Editor 菜单添加消息

  1. 在 Stateflow Editor 中,选择与要添加的消息作用域对应的选项。

    作用域选项
    InputModeling 选项卡中的 Design Data 下,选择 Message Input
    OutputModeling 选项卡中的 Design Data 下,选择 Message Output
    LocalModeling 选项卡中的 Design Data 下,选择 Message

  2. 在 Message 对话框中,指定数据属性。有关详细信息,请参阅Set Properties for a Message

通过 Model Explorer 添加消息

  1. Modeling 选项卡中的 Design Data 下,选择 Model Explorer

  2. Model Hierarchy 窗格中,在 Stateflow 层次结构中选择您希望新消息对其可见的对象。所选对象即变为新消息的父级。

  3. 在 Model Explorer 菜单中,选择 Add > Message。具有默认定义的新消息出现在 Model Explorer 的 Contents 窗格中。

  4. Message 窗格中,指定消息的属性。有关详细信息,请参阅Set Properties for a Message

Stateflow 消息的生命周期

Stateflow 消息具有有限的生命周期。当您使用 send 运算符向接收队列发送消息时,生命周期开始。消息将一直保留在队列中,直到转移或状态 on 动作对其进行计算,或者图使用 receive 运算符接收它。

当图计算或接收消息时,消息变为有效。该消息一直有效,直到:

  • 当前时间步的结束,此时图会销毁任何剩余的有效消息。

  • 图使用 forward 运算符将消息转发到另一个队列。消息在新队列中继续其生命周期。

  • 图使用 discard 丢弃消息。

当消息有效时,其他转移和动作可以计算消息和访问其数据。要检查消息是否有效,请使用 isvalid 运算符。

要查看仿真过程中的消息交换,请将 Sequence Viewer 模块添加到您的 Simulink 模型中。Sequence Viewer 模块显示:

  • 发送的消息

  • 收到的消息

  • 转发的消息

  • 丢失的消息

  • 销毁的消息

  • 丢弃的消息

有关详细信息,请参阅Use the Sequence Viewer to Visualize Messages, Events, and Entities

消息的限制

您不能在以下各项中使用消息:

  • Moore 图

  • 原子子图

  • 断点条件表达式

在使用 C 语言作为动作语言的图中,消息不支持多字定点数据。

另请参阅

| | | | | (Simulink) |

相关主题