通过发送消息与 stateflow 图通信
要在 simulink® 模型中的 stateflow® 图内部和各图之间进行通信,请使用消息。消息是 stateflow 对象,用于在局部或图之间进行数据通信。在发送方图中,您可以发送或转发包含数据的消息。在接收方图中,使用队列接收并保留消息,直到图能够计算它。
消息结合了数据和事件的一些功能。像数据一样,消息可以传输数值和文本信息。像事件一样,消息可以触发转移和状态动作。然而:
消息不会触发图唤醒。消息需要排队,直到图被唤醒。当图唤醒时,它可以响应队列中的消息。
如果接收方图无法立即响应,消息不会丢失。
有关详细信息,请参阅。
当图转移或状态动作计算消息时,图会确定队列是否包含任何消息。如果包含,图将从队列中移除该消息。该消息一直有效,直到时间步结束,或者直到图转发或丢弃该消息。当消息有效时,其他转移或动作可以访问消息数据,并且图不会再从队列中移除其他消息。图会在当前时间步结束时销毁所有有效消息。
在图中定义消息
您可以使用符号窗格、stateflow 编辑器菜单或模型资源管理器向 stateflow 图添加消息。
通过“符号”窗格添加消息
在建模选项卡的设计数据下,选择符号窗格。
点击创建消息图标 。
在新消息的行中,点击类型下方的图标并选择:
“
输入消息
”“
局部消息
”“
输出消息
”
编辑消息的名称。
对于输入和输出消息,点击端口字段并选择端口号。
要指定消息的属性,请打开属性检查器。在符号窗格中,右键点击该消息的行并选择浏览。有关详细信息,请参阅。
使用 stateflow 编辑器菜单添加消息
在 stateflow 编辑器中,选择与要添加的消息作用域对应的选项。
作用域 选项 输入 在建模选项卡的设计数据下,选择消息输入。 输出 在建模选项卡的设计数据下,选择消息输出。 局部 在建模选项卡的设计数据下,选择消息。 在“消息”对话框中,指定数据属性。有关详细信息,请参阅。
通过模型资源管理器添加消息
在建模选项卡的设计数据下,选择模型资源管理器。
在模型层次结构窗格中,在 stateflow 层次结构中选择您希望新消息对其可见的对象。所选对象即变为新消息的父级。
在“模型资源管理器”菜单中,选择添加 > 消息。具有默认定义的新消息出现在模型资源管理器的内容窗格中。
在消息窗格中,指定消息的属性。有关详细信息,请参阅。
stateflow 消息的生命周期
stateflow 消息具有有限的生命周期。当您使用 运算符向接收队列发送消息时,生命周期开始。消息将一直保留在队列中,直到转移或状态 on
动作对其进行计算,或者图使用 运算符接收它。
当图计算或接收消息时,消息变为有效。该消息一直有效,直到:
当前时间步的结束,此时图会销毁任何剩余的有效消息。
图使用 运算符将消息转发到另一个队列。消息在新队列中继续其生命周期。
图使用 丢弃消息。
当消息有效时,其他转移和动作可以计算消息和访问其数据。要检查消息是否有效,请使用 运算符。
要查看仿真过程中的消息交换,请将 模块添加到您的 simulink 模型中。sequence viewer 模块显示:
发送的消息
收到的消息
转发的消息
丢失的消息
销毁的消息
丢弃的消息
有关详细信息,请参阅。
消息的限制
您不能在以下各项中使用消息:
moore 图
原子子图
断点条件表达式
在使用 c 语言作为动作语言的图中,消息不支持多字定点数据。
另请参阅
| | | | | (simulink) |