主要内容

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

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

模型描述

SimpleMessagesModel.包含这些块:

  • 正弦波- 信号源。这采样时间块的参数设置为0.1

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

  • 队列- 存储消息。观察发送块和队列块之间的消息行。队列的默认容量是16.,这意味着Queue块最多可以存储16.消息。默认的消息排序行为是后进先出,这意味着输入的消息将根据后进先出的策略进行排序。默认情况下,如果队列已满,则覆盖最旧的元素复选框是选中的。当队列已满时,传入消息会覆盖队列中最旧的消息。有关使用队列块的更多信息,请参阅使用队列块来管理消息

  • 收到- 接收消息并将它们转换为信号数据。在街区,采样时间参数设置为0.1。接收块每0.1仿真时间接收消息。

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

模拟模型并评审结果

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

模拟这一点SimpleMessagesModel.并从模拟数据检查器中观察到:

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

  • 每一个0.1仿真时间,发送块将信号的值转换为消息并将其发送到队列块。仿真数据检测器将消息显示为干图。观察显示发送消息(紫色)的模拟数据检查器。

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

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

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

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

使用序列查看器工具:

  • 控件上的Simulink Toolstrip中激活日志记录事件金宝app模拟选项卡,准备部分,点击日志事件

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

日志事件序列观看者当您的模型有来自Simulink®Messages & Events库的块、状态流程图、函数调用子系统、Simu金宝applink Function或SimEvents®块时,按钮是可见的。

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

您也可以添加序列观看者块到您的模型可视化消息转换。有关更多信息,请参阅使用队列块来管理消息

使用动画和存储检查员

您可以使用动画为模型设置动画并观察模型组件之间的消息流。您可以指定动画的速度减缓中等的, 或者快速地。选项没有一个禁用模型动画。

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

来自事件动画部分,将动画速度设置为减缓

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

动画突出显示基于事件而不是时间传递的消息行和Simulink函数调用。金宝app在一个模拟时间内,可以突出显示多个消息流或Simulink函数调用事件。金宝app

暂停动画。在Simuli金宝appnk ToolStrip中,在调试选项卡,单击暂停。观察到最后一个突出显示的消息线在紫罗兰中突出显示。

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

存储检查器未显示任何存储的消息,因为在相同的模拟时间上由接收块同时接收到达队列块的消息。

若要创建具有存储消息的场景,请停止模拟并更改采样时间的参数0.5。现在发送块每条留言0.1但是Receive块每次都接收消息0.5仿真时间。这将导致存储在Queue块中的消息积压。

使用动画速度设置为模拟模型减缓,并暂停模拟以检查存储检查器中的状态。存储检查器中的实体表示队列块中的存储元素,在这种情况下,消息消息。存储检查员列出存储在Queue块中的消息及其ID和每个消息携带的数据值。

显示消息有效载荷作为端口值标签

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

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

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

SimpleMessageSportValueModel.是the的变体吗SimpleMessagesModel.其中发送块的输入来自总线创建器块。在本例中,是一个总线对象data_message.由两个元素组成,SineWave.常数

要打开这个模型,输入:

open_system (“SimpleMessagesPortValueModel”);

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

只有恒定信号的值显示为端口值。

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

也可以看看

|||||

相关的话题