主要内容

动画和理解发送和接收消息

此示例演示如何发送、接收和可视化消息。该示例还展示了如何使用仿真数据检查顺序查看器动画,存储检查员了解消息如何在模型中流动。

模型描述

SimpleMessagesModel包含这些块:

  • 正弦波—信号源。的样品时间参数设置为0.1

  • 发送—转换数据信号并发送消息。的指定值样品时间正弦波块的参数决定了发送块发送消息的速率。因此,Send块每天发送一条消息0.1仿真时间。

  • 队列——存储信息。观察Send块和Queue块之间的消息行。队列的默认容量为16,这意味着Queue块最多可以存储16消息。默认的消息排序行为为后进先出,这意味着传入的消息将基于后进先出策略进行排序。默认情况下,如果队列已满,则覆盖最早的元素复选框。当队列已满时,传入的消息将覆盖队列中最早的消息。有关使用Queue块的更多信息,请参见使用队列块管理消息

  • 收到—接收消息并将其转换为信号数据。块,样品时间参数设置为0.1.Receive块每0.1模拟时间接收一个消息。

  • 范围—可视化接收块接收到的消息。

模拟模型并审核结果

在模型中,为正弦波、发送、队列、接收和范围块之间的信号和消息行启用了数据日志记录。

模拟SimpleMessagesModel并从模拟数据检查器中观察到:

  • 正弦波块产生正弦波信号(绿色)。

  • 每一个0.1在模拟时间,Send块将信号的值转换为消息并将其发送到Queue块。模拟数据检查器将消息显示为茎图。观察显示已发送消息的模拟数据检查器(紫色)。

  • Queue块将消息发送到Receive块(蓝色)。

  • 接收块输出是重构的正弦波信号(橙色)。

使用序列查看器可视化消息

您可以使用顺序查看器工具或序列查看器块来可视化消息、事件和Simulink函数调用。序列查看器显示消息转换事件和消息所携带的数据。在“序列查看器”窗口中,您可以查看与状态流图执行和状态流图之间的消息交换相关的事件数据。

使用序列查看器工具:

  • 要激活日志记录事件,请在Simulink工具条中模拟选项卡,准备部分中,点击日志事件

  • 模拟模型。要打开序列查看器工具,请在模拟选项卡,审查结果部分中,点击顺序查看器

日志事件而且顺序查看器当您的模型具有来自Simulink®消息和事件库、状态流图、函数调用子系统、Simulink函数或SimEvents®块的块时,按钮是可见的。

序列查看器窗口显示在模型执行期间的不同时间创建、发送、转发、接收和销毁消息。序列查看器窗口还显示状态活动、转换和对状态流图形函数、Simulink函数和MATLAB函数的函数调用。

您还可以添加顺序查看器块到您的模型,以可视化消息转换。有关更多信息,请参见使用队列块管理消息

使用动画和存储检查器

您可以使用动画使模型动画化并观察模型组件之间的消息流。你可以指定动画的速度为媒介,或.的选项没有一个禁用模型动画。

在工具条中调试选项卡,找到事件的动画部分。

事件的动画段,设置动画速度为

再次模拟模型。观察突出显示的消息行,这些消息行表示块之间的消息流。

动画根据事件而不是时间突出显示消息行和Simulink函数调用。在一个模拟时间内,可以突出显示多个消息流或Simulink函数调用事件。

暂停动画。在Simulink工具条中,在调试选项卡上,单击暂停.注意,最后一个高亮显示的消息行用紫色高亮显示。

存储检查器允许您可视化队列块中存储的消息的详细信息。当您暂停模拟时,存储检查器放大镜图标将出现在Queue块上。要打开存储检查器,单击放大镜。

存储检查器不显示任何存储的消息,因为到达Queue块的消息在同一模拟时间被Receive块同时接收。

若要创建带有存储消息的场景,请停止模拟并更改样品时间参数的接收块0.5.现在Send块每天发送一条消息0.1但是Receive块每天都接收消息0.5仿真时间。这会导致存储在Queue块中的消息积压。

再次模拟模型,动画速度设置为,并暂停模拟以检查Storage Inspector中的状态。Storage Inspector中的实体表示Queue块中的存储元素,在本例中为消息。存储检查员列出存储在Queue块中的消息及其ID和每个消息所携带的数据值。

将消息有效负载显示为端口值标签

要将消息数据显示为端口值标签,请右键单击从块中出现的消息行并选择显示所选端口的值标签

在下面的示例中,显示连接Send块到Queue块的消息行的端口值。

如果消息作为总线对象携带数据,您还可以选择要显示为端口值的元素。

SimpleMessagesPortValueModel是变化的SimpleMessagesModel其中发送块的输入来自总线创建器块。在本例中,是一个总线对象Data_message由两个元素构成,sinewave而且常数

要打开这个模型,输入:

open_system (“SimpleMessagesPortValueModel”);

右键单击从Send块中出现的消息行,单击显示所选端口的值标签,选择常量。

只有常量信号的值显示为端口值。

如果消息传输在消息线上停止,端口值显示将继续显示最后的消息有效负载值。

另请参阅

|||||

相关的话题

Baidu
map