这个示例展示了如何发送、接收和可视化消息。该示例还展示了如何使用仿真数据检查,顺序查看器,动画片, 和存储检查员要了解邮件如何流入模型中。
的SimpleMessagesModel包含这些块:
正弦波—信号源。的样品时间块的参数设置为0.1
.
发送—转换数据信号,发送消息。的指定值样品时间正弦波块的参数确定发送块发送消息的速率。因此,发送块每次发送一条消息0.1
模拟时间。
队列——存储信息。观察Send块和Queue块之间的消息行。队列的默认容量为16
,这意味着队列块最多可以存储16
消息。默认消息排序行为是Lifo.
,这意味着输入消息根据上一级拔出策略进行排序。默认情况下,如果队列已满,则覆盖最老的元素复选框被选中。当队列满时,传入的消息将覆盖队列中最老的消息。有关使用Queue块的详细信息,请参见使用队列块来管理消息.
收到—接收消息并转换为信号数据。块,样品时间参数设置为0.1
.Receive块每0.1个模拟时间接收一条消息。
范围- 可视化接收块收到的消息。
在该模型中,为SINE WAVE,发送,队列,接收和范围块中的信号和消息行启用了数据记录。
模拟SimpleMessagesModel并观察到模拟数据检查器:
正弦波块生成正弦波信号(绿色)。
每一个0.1
仿真时间,发送块将信号的值转换为消息并将其发送到队列块。仿真数据检测器将消息显示为干图。观察显示发送消息(紫色)的模拟数据检查器。
队列块向接收块(蓝色)发送消息。
接收块输出是重建的正弦波信号(橙色)。
你可以使用顺序查看器工具或序列查看器块可视化消息,事件和Simulink函数调用。万博1manbetx序列查看器显示消息转换事件和消息携带的数据。在“序列查看器”窗口中,您可以查看与StateFlow Chart执行相关的事件数据以及状态溢图之间的消息交换。
要使用序列查看器工具:
在Simulink ToolStrip中激活日志记录事件,请执行万博1manbetx模拟标签,在准备部分中,点击日志事件.
模拟你的模型。打开序列查看器工具,在模拟标签,在审查结果部分中,点击顺序查看器.
的日志事件和顺序查看器当您的模型具有来自Simulink®消息和事件库的块时,按钮可见,状态溢图,功能呼叫子系统,Simulink功能万博1manbetx或Simevents®块。
序列查看器窗口显示在模型执行期间在不同时间创建,发送,转发,接收和销毁的消息。序列查看器窗口还将状态活动,转换和函数调用显示为StateFlow图形功能,Simulink函数和MATLAB函数。万博1manbetx
你也可以添加顺序查看器块,以可视化消息转换。有关更多信息,请参见使用队列块来管理消息.
您可以使用动画片动画模型并观察模型组件之间的消息流。你可以指定动画的速度为慢
,媒介
,或快
.的选项没有任何
禁用模型动画。
在工具条上,在调试选项卡,找到事件的动画部分。
从事件的动画段,将动画速度设置为慢
.
再次模拟模型。观察表示块之间的消息流的突出显示的消息行。
动画根据事件而不是时间突出显示消息行和Simulink函数调用。万博1manbetx在一个模拟时间内,可以突出显示多个消息流或Simulink函数调用事件。万博1manbetx
暂停动画。在Simuli万博1manbetxnk工具条中,在调试选项卡上,单击暂停.注意,最后一个突出显示的消息行是用紫色突出显示的。
存储检查器允许您可视化Queue块中存储的消息的详细信息。暂停模拟时,存储检查器放大镜图标将出现在Queue块上。要打开存储检查器,单击放大镜。
存储检查器不显示任何存储的消息,因为到达Queue块的消息是在同一模拟时间由Receive块同时接收的。
要创建带有存储消息的场景,请停止模拟并更改样品时间接收块的参数0.5
.现在Send块每发送一条消息0.1
模拟时间,但接收块每次接收消息0.5
模拟时间。这导致存储在队列块中的邮件的积压。
再次模拟模型,动画速度设置为慢
,并暂停模拟以在存储检查器中检查状态。存储检查器中的实体表示Queue块中的存储元素,在本例中是消息。存储检查员列出存储在队列块中的消息,其ID和每个消息携带的数据值。
要将消息数据显示为端口值标签,右键单击从块中出现的消息行并选择显示所选端口的值标签.
在下面的示例中,将显示端口值,用于将发送块连接到队列块的消息行。
如果消息携带数据作为总线对象,则还可以选择要显示为端口值的元素。
的SimpleMessagesPortValueModel
是一个变化SimpleMessagesModel
发送块的输入来自总线创建器块。在此示例中,总线对象Data_message
使用两个元素创建,SineWave.
和持续的
.
要打开此模型,请输入:
Open_System('simpleMessagePortValueModel');
右键单击从发送块中出现的消息行,单击显示所选端口的值标签
,选择常量。
只有常数信号的值显示为端口值。
如果消息传输在消息行上停止,则端口值显示会导致显示最后消息有效载荷值。