具有丢包和信道故障的无线消息通信模型
这个例子展示了如何通过使用Simulink®消息、Stateflow®和SimEvents®建模包含丢包和信道故障的无线消息通信。
在这个模型中,有两个发送消息的组件和两个接收消息的组件。消息使用具有传输延迟的共享无线信道传输。Stateflow®图表模拟无线组件中的消息发送逻辑,SimEvents®块模拟无线消息传输、通道故障和包丢失。
有关消息的概述,请参见仿真软件信息概述.
创建发送和接收消息的组件
在模型中,有两个软件组件输出消息,即WirelessSend和WirelessStateflowSend。
在无线发送组件中,正弦波块是信号源。正弦波块产生振幅为的正弦波1
.块样品时间被设置为0.1
.Send块将信号转换为携带信号值数据的消息。WirelessSendComponent连接到发送缓冲区1。
在WirelessStateflowSend组件中,另一个正弦波块生成一个正弦波信号,并用噪声块向信号中注入噪声。噪声块输出一个信号,其值由均值为的高斯分布生成0
和方差的1
.Stateflow®图表代表了一个简单的逻辑,用来过滤信号并决定是否发送消息。StateflowSend组件向发送缓冲区2发送消息。
在模型中,有两个软件组件接收消息,即无线接收和无线监听器。
在WirelessReceive组件中,Receive块接收消息并将消息数据转换为信号值。该组件连接到Receive Buffer 1。
在WirelessListener组件中,有一个Simulink Function块,它运行onOneMessage(数据)
函数。当消息到达接收缓冲区3时,Simulink函数块接受参数数据
,它是来自消息数据的值,作为输入信号。在街区里数据
值乘以2
.块输出新的数据值。
要了解关于创建这些组件的更多信息,请参见与多个发送方和接收方建立共享的沟通渠道.
使用多播建模无线消息通信
WirelessSend和WirelessStateflowSend组件向send Buffer 1和send Buffer 2发送消息,它们是SimEvents®实体组播块,可以无线传输消息。传输缓冲区块是一个SimEvents®多播接收队列,可以接收由发送缓冲区1和发送缓冲区2发送的消息。
为了实现发送缓冲区1、发送缓冲区2和位于无线通道块内部的传输缓冲区块之间的无线通信:
在发送缓冲区1和发送缓冲区2块中,设置多播标记参数
一个
.在传输缓冲区块中,设置多播标记参数
一个
.
的多播标记参数定义从哪个实体组播阻塞接收消息。
模型通道失败
SimEvents®实体门块用于模拟通道故障。该块有两个输入端口。一个输入端口用于从传输缓冲区传入的消息。第二个输入端口是一个控制端口,用于决定何时打开闸门。
设置操作模式参数的值使门
.在这种模式下:
当它接收到一个携带大于的值的实体时,该块打开门并允许消息前进
0
从它的控制端口。这表示一个操作通道。
如果一个实体携带的数据的值小于或等于,则block关闭gate并阻止消息的传递
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
在“丢包概率”区域框中,选中事件动作选项卡,并在产生行动字段包含以下代码:
持续的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|,这迫使输出开关选择%输出|1|转发实体接收组件。实体= 1;其他的实体携带数据|2|,这迫使输出开关选择% output |2|,这表示包丢失。实体= 1;结束
这意味着进入控制端口的实体有一个0.9
被设置为的概率1
,它使块输出消息到无线共享消息块。
模拟模型并审查结果
模拟模型。
打开连接到传输缓冲块顶部的作用域块。该块显示通过共享通道传输的消息总数。
4255
消息通过通道传输。
图中还显示了通道故障。例如,放大第一个One hundred.
秒。观察者认为通道故障发生在之间40
而且49
在此期间,消息传输将被阻塞。
打开数据检查器以可视化控制Gate的实体。实体数据从1
来0
对于每个生成的实体。
要查看丢失消息的数量,打开连接到Packet Loss块的Scope块。
409
消息在传输过程中丢失。这是9.6
消息的百分比。
另请参阅
正弦波|发送|收到|队列|实体终结者(SimEvents)|实体输出开关(SimEvents)|实体门(SimEvents)|实体多播(SimEvents)