此示例显示了如何使用Simulink®消息、Stateflow®和SimEvents®对无线消息通信进行建模,包括数据包丢失和信道故障。金宝app
在此模型中,有两个组件发送消息,两个组件接收消息。消息使用具有传输延迟的共享无线信道传输。Stateflow®图表模拟无线组件中的消息发送逻辑,SimEvents®模块模拟无线消息传输、信道故障和数据包丧失
有关消息的概述,请参见金宝appSimulink消息概述.
在该模型中,有两个输出消息的软件组件:WirelessSend和WirelessStateflowSend。
在WirelessSend组件中,正弦波块是信号源。正弦波块产生振幅为的正弦波1
.街区样品时间设置为0.1
.发送块将信号转换为携带信号值数据的消息。WirelessSendComponent连接到Send Buffer 1。
在WirelessStateflowSend组件中,另一个正弦波块生成正弦波信号,噪声块用于向信号中注入噪声。噪声块输出一个信号,其值由平均值为的高斯分布生成0
和方差1
.statflow®图表示一个简单的逻辑,用于过滤信号并决定是否发送消息。StateflowSend组件向Send Buffer 2发送消息。
在该模型中,有两个接收消息的软件组件:WirelessReceive和WirelessListener。
在WirelessReceive组件中,Receive块接收消息并将消息数据转换为信号值。该组件连接到接收缓冲区1。
在WirelessListener组件中,有一个Simulink Function块运行金宝apponOneMessage(数据)
作用当消息到达接收缓冲区3时,Simulink功能块接受参数金宝app数据
,即来自消息数据的值,作为输入信号。在这个街区数据
值乘以2
.街区outputs the new data value.
要了解有关创建这些组件的更多信息,请参见与多个发送者和接收者建立共享的通信通道.
WirelessSend和WirelessStateflowSend组件将消息发送到发送缓冲区1和发送缓冲区2,这是可以无线传输消息的SimEvents®实体多播块。传输缓冲区块是一个SimEvents®多播接收队列,可以接收发送缓冲区1和发送缓冲区2发送的消息。
为了实现发送缓冲区1、发送缓冲区2和无线信道块中的传输缓冲区块之间的无线通信:
在发送缓冲区1和发送缓冲区2块中,设置多播标记参数一个
.
在传输缓冲区块中,设置多播标记参数一个
.
的多播标记参数定义从哪个实体多播块接收消息。
SimEvents®实体门块用于模拟通道故障。块有两个输入端口。一个输入端口用于接收来自传输缓冲区的消息。第二个输入端口是一个控制端口,用于决定何时打开门。
设置Gate块运行模式参数使门
.在这种模式下:
当块接收到一个值大于的实体时,它打开门并允许消息前进0
从它的控制端口。这表示一个可操作的通道。
如果实体携带的数据值小于或等于,则该块关闭大门并阻止消息传递0
. 这表示通道故障。
要控制门块,您可以使用SimEvents®实体生成器块(在本例中标记为control Gate)生成包含不同数据值的实体。
在控制门区,在事件动作,在产生作用字段,下面的代码用于生成打开和关闭Gate块的实体。最初,实体数据是1
门是打开的,通道处于运行状态。当一个新实体生成时,它的值变为0
,关闭闸门。每个生成的实体都会更改闸门的状态,从打开状态更改为关闭状态,或从关闭状态更改为打开状态。
在控制门区,在代际时间作用字段,下面的代码用于表示通道的操作和故障状态。该代码将通道初始化为可操作。dt
是实体间生成时间,用于更改通道的状态,因为每个生成的实体都会更改门块的状态。
在代码中,修复时间是从一个统一的分布中生成的,该分布接受介于之间的值0
和10
.故障之间的时间间隔是由另一个均匀分布生成的,该分布的值介于两者之间0
和50
.
为模拟数据包丢失,使用SimEvents®实体输出交换块。
块有两个输入端口。一个输入端口接受消息。另一个输入端口接受决定输出端口选择的实体。如果实体设置为1
,块选择输出端口1
将消息转发到“无线共享消息”块。如果实体设置为2
,块选择输出端口2
,它连接到表示丢包的Entity Terminator块。
在输出开关块中:
的输出端口数设置为2
.
要确定选择了哪个输出,请切换准则设置为从控制端口
和初始端口选择设置为1
.
模仿0.1
,在“概率丢包”块中,选择事件动作Tab,并在产生作用字段包括以下代码:
持续的恩吉尼特;如果is空(rngInit)种子= 12345;rng(种子);rngInit = true;结束
式样:均匀分布%m:最小值,m:最大值m = 0;M = 1;x = m + (m - m) * rand;
% x由均匀分布和生成%取介于| 0 |和| 1 |之间的值。如果x > 0.1% Entity携带数据|1|,这将强制选择输出开关% output |1|转发实体以接收组件。实体=1;其他的% Entity携带数据|2|,这将强制选择输出开关% output |2|,这表示丢包。实体=1;结束
这意味着进入控制端口的实体具有0.9
被设置为的概率1
,使块向无线共享消息块输出消息。
模拟模型。
打开连接到传输缓冲块顶部的范围块。该块显示通过共享通道传输的消息总数。
4255
消息通过该通道传输。
该图还显示通道故障。例如,放大第一个窗口One hundred.
秒。观察者发现通道故障发生在40
和49
在此期间,消息传输被阻止。
打开Data Inspector以可视化控制Gate的实体。实体数据的更改1
来0
对于每个生成的实体。
要查看丢失消息的数量,请打开连接到数据包丢失块的作用域块。
409
消息在传输过程中会丢失。这是9.6
邮件的百分比。
正弦波|邮寄|接收|队列|实体终结者(SimEvents)|实体输出开关(SimEvents)|实体门(SimEvents)|实体多播(SimEvents)