这个例子展示了如何发送、接收和可视化消息。该示例还展示了如何使用模拟数据检查器,顺序查看器,动画,存储检查员了解消息在模型中的流动方式。
的SimpleMessagesModel包含这些块:
正弦波—信号源。的样品时间块参数设置为0.1
.
发送—数据信号转换和消息发送。属性的指定值样品时间正弦波块参数决定了发送块发送消息的速率。因此,Send块每发送一条消息0.1
仿真时间。
收到-接收消息并将其转换为信号数据。在街区里,样品时间参数设置为0.1
.Receive块每0.1次模拟时间接收一条消息。
范围—显示接收块接收到的消息。
在模型中,为正弦波、发送、队列、接收和作用域块之间的信号和消息行启用了数据日志记录。
模拟SimpleMessagesModel并从模拟数据检查器中观察到:
正弦波模块产生正弦波信号(绿色)。
每一个0.1
在模拟时间,Send块将信号的值转换为消息并将其发送到Queue块。模拟数据检查器将消息显示为主干图。观察显示已发送消息(紫色)的模拟数据检查器。
Queue块将消息发送到Receive块(蓝色)。
接收块输出是重构的正弦波信号(橙色)。
您可以使用顺序查看器工具或序列查看器块来可视化消息、事件和Simulink函数调用。金宝appSequence Viewer显示消息转换事件和消息携带的数据。在序列查看器窗口中,您可以查看与状态流图执行和状态流图之间的消息交换相关的事件数据。
使用序列查看器工具:
要激活“Simulink工具条”中的日志记录事件,请在金宝app模拟选项卡,在准备部分中,点击日志事件.
模拟你的模型。要打开序列查看器工具,请在模拟选项卡,在审查结果部分中,点击顺序查看器.
的日志事件而且顺序查看器当您的模型有来自Simulink®消息和事件库、状态流程图、函数调用子系统、Simulink函数或SimEven金宝appts®块的块时,按钮是可见的。
Sequence Viewer窗口显示了在模型执行期间在不同时间创建、发送、转发、接收和销毁消息的过程。序列查看器窗口还显示状态活动、转换以及对statflow图形函数、Simulink函数和MATLAB函数的函数调用。金宝app
您还可以添加顺序查看器块到您的模型,以可视化消息转换。有关更多信息,请参见使用队列块管理消息.
你可以使用动画动画模型并观察模型组件之间的消息流。您可以指定动画的速度为慢
,媒介
,或快
.的选项没有一个
禁用模型动画。
工具条上的调试选项卡,找到事件的动画部分。
从事件的动画节,将动画速度设置为慢
.
再次模拟模型。观察突出显示的消息行,表示块之间的消息流。
动画根据事件而不是时间突出显示消息行和Simulink函数调用。金宝app在一个模拟时间内,可以突出显示多个消息流或Simulink函数调用事件。金宝app
暂停动画。在“Simul金宝appink工具条”中调试选项卡上,单击暂停.注意,最后突出显示的消息行是用紫色突出显示的。
存储检查器允许您在Queue块中可视化存储消息的详细信息。当您暂停模拟时,存储检查器放大镜图标将出现在队列块上。要打开存储检查器,单击放大镜。
存储检查器不显示任何存储的消息,因为到达Queue块的消息同时被Receive块在同一模拟时间接收。
若要创建具有存储消息的场景,请停止模拟并更改样品时间接收块的参数0.5
.现在Send块每天发送一条消息0.1
但是Receive块每次都接收消息0.5
仿真时间。这将导致存储在Queue块中的消息积压。
再次模拟模型,动画速度设置为慢
,并暂停模拟,在“存储检查器”中检查状态。Storage Inspector中的实体表示Queue块中的存储元素,在本例中为消息。存储检查员列出存储在Queue块中的消息及其ID和每个消息携带的数据值。
要将消息数据显示为端口值标签,右键单击从块中出现的消息行并选择显示所选端口的值标签.
在下面的示例中,将显示连接Send块到Queue块的消息行的端口值。
如果消息作为总线对象携带数据,您还可以选择作为端口值显示的元素。
的SimpleMessagesPortValueModel
是变异的SimpleMessagesModel
其中发送块的输入来自总线创建器块。在本例中,是一个总线对象Data_message
由两个元素创建,sinewave
而且常数
.
要打开这个模型,输入:
open_system (“SimpleMessagesPortValueModel”);
右键单击从Send块中出现的消息行,单击显示所选端口的值标签
,并选择常量。
只有常数信号的值显示为端口值。
如果消息传输在消息行上停止,端口值显示将继续显示最后的消息有效负载值。