主要内容

模拟无线消息通信与丢包和信道故障

这个例子展示了如何使用Simulink®消息、Stateflow®和SimEvents®来模拟无线消息通信的丢包和信道故障。万博1manbetx

在这个模型中,有两个组件发送消息,两个组件接收消息。这些消息使用具有传输延迟的共享无线信道传输。Stateflow®图表建模无线组件中的消息发送逻辑,SimEvents®块建模无线消息传输、通道故障和数据包丢失。

有关消息的概述,请参见万博1manbetxSimulink消息概述

创建组件来发送和接收消息

在模型中,有两个输出消息的软件组件:WirelessSend和WirelessStateflowSend。

在无线发送组件中,正弦波块是信号源。正弦波块产生振幅为的正弦波1.块样品时间设置为0.1.Send块将信号转换为包含信号值数据的消息。WirelessSendComponent连接到发送缓冲区1。

在WirelessStateflowSend组件中,另一个正弦波块生成一个正弦波信号,一个噪声块用于向信号中注入噪声。噪声块输出一个信号,其值由均值为的高斯分布生成0的方差1.Stateflow®图表表示一个过滤信号并决定是否发送消息的简单逻辑。statflowsend组件将消息发送到Send Buffer 2。

在该模型中,有两个软件组件用于接收消息,即WirelessReceive和WirelessListener。

在WirelessReceive组件中,Receive块接收消息并将消息数据转换为信号值。组件连接到Receive Buffer 1。

在WirelessListener组件中,有一个Simulink Function块用于运行万博1manbetxonOneMessage(数据)函数。当消息到达Receive Buffer 3时,Simulink Function块接受参数万博1manbetx数据,即消息数据的值,作为输入信号。在区块中,数据值乘以2.块输出新的数据值。

要了解有关创建这些组件的详细信息,请参见与多个发送者和接收者建立一个共享的通信通道

使用多播模拟无线消息通信

WirelessSend和WirelessStateflowSend组件将消息发送到send Buffer 1和send Buffer 2,它们是SimEvents®实体组播块,可以无线传输消息。传输缓冲区块是SimEvents®组播接收队列,可以接收发送缓冲区1和发送缓冲区2发送的消息。

要在发送缓冲区1、发送缓冲区2和无线通道块内部的传输缓冲区块之间实现这种无线通信:

  1. 在发送缓冲区1和发送缓冲区2块中,设置多播标记参数一个

  2. 在传输缓冲区块中,设置多播标记参数一个

多播标记参数定义了从哪个实体组播阻止接收消息。

通道故障模型

SimEvents®实体门块用于模拟通道故障。块有两个输入端口。一个输入端口用于从传输缓冲区传入的消息。第二个输入端口是决定何时打开栅极的控制端口。

设置操作模式参数用于Gate块使门.该模式下:

  • 当块接收到携带大于的值的实体时,它会打开门并允许消息前进0从它的控制端口。这表示一个操作通道。

  • 如果一个实体携带的数据值小于或等于,块将关闭门并阻止消息传递0.这表示通道故障。

要控制Gate块,您可以使用SimEvents®Entity Generator块(在本例中标记为control Gate)来生成携带不同数据值的实体。

在控制门方块中,在事件动作,在产生行动字段,下面的代码用于生成实体来打开和关闭Gate块。最初,实体数据是1门是打开的,通道处于运行状态。生成新实体时,其值变为0,这就关上了大门。每个生成的实体都将门的状态从打开更改为关闭或从关闭更改为打开。

在控制门方块中,在代际时间作用字段时,下面的代码用于表示通道的操作状态和失败状态。代码将通道初始化为可操作通道。dt为实体代间时间,用于改变通道状态,因为每个生成的实体都会改变Gate块的状态。

在代码中,修复时间从一个取之间值的均匀分布中生成0而且10.故障之间的时间间隔由另一个均匀分布生成,该分布取之间的值0而且50

丢包

为了模拟数据包丢失,使用SimEvents®实体输出开关块。

块有两个输入端口。一个输入端口接受消息。另一个输入端口接受决定输出端口选择的实体。如果实体设置为1时,块选择输出端口1将消息转发到“无线共享消息”块。如果实体设置为2时,块选择输出端口2,它连接到表示数据包丢失的实体终止符块。

在Output Switch块中:

  • 输出端口数设置为2

  • 控件可确定所选择的输出切换准则设置为从控制口而且初始端口选择设置为1

建模0.1,在“丢包概率”区域,选择事件动作Tab,在产生行动字段包括以下代码:

持续的rngInit;如果isempty(rngInit) seed = 12345;rng(种子);rngInit = true;结束
%模式:均匀分布% m:最小值,m:最大值M = 0;M = 1;x = m + (m - m) * rand;
% x由均匀分布和%取值范围为|0|和|1|。如果X > 0.1%实体携带数据|1|,这将强制输出开关选择% output |1|用于转发实体到接收组件。实体= 1;其他的%实体携带数据|2|,这将强制输出开关选择% output |2|,表示丢包。实体= 1;结束

这意味着进入控制端口的实体具有0.9被设置为的概率1,这使得该块向无线共享消息块输出消息。

模拟模型并检查结果

模拟模型。

  • 打开连接到传输缓冲区块顶部的范围块。该块显示通过共享通道传输的消息总数。

4255消息通过通道传输。

该图还显示了通道故障。例如,放大第一个One hundred.秒。观察者认为通道之间发生故障40而且49在此期间,消息传输被阻断。

打开Data Inspector以可视化控制Gate的实体。实体数据从10对于每个生成的实体。

要查看丢失消息的数量,请打开连接到Packet Loss块的Scope块。

409消息在传输过程中丢失。这是9.6消息的百分比。

另请参阅

||||(SimEvents)|(SimEvents)|(SimEvents)|(SimEvents)

相关的话题