。
この例では,金宝appSimulink®中のメッセージ,Stateflow®,およびSimEvents®を使用してパケット损失およびチャネルエラーを伴うワイヤレスメッセージ通信をモデル化する方法を说明します。
このモデルには,メッセージを送信する2つのコンポーネントとメッセージを受信する2つのコンポーネントがあります。メッセージは伝送遅延を伴う共有ワイヤレスチャネルを使用して伝送されます.Stateflow®チャートはワイヤレスコンポーネントのメッセージ送信ロジックをモデル化し,SimEvents®ブロックはワイヤレスメッセージ送信,チャネルエラー,およびパケット损失をモデル化します。
メッセージの概要については,金宝appSimulink的メッセージの概要を参照してください。
モデルには,メッセージを出力するWirelessSendとWirelessStateflowSendという2つのソフトウェアコンポーネントがあります。
WirelessSendコンポーネントでは,正弦波ブロックは信号ソースです.Sine波ブロックは振幅が1
の正弦波を生成します。このブロックでは,[サンプル时间]は0.1
に设定されています。发送ブロックは信号値のデータを搬送するメッセージに信号を変换します.WirelessSendComponentは发送缓冲区1に接続されます。
WirelessStateflowSendコンポーネントで,别の正弦波ブロックは正弦波信号を生成し,噪声ブロックは信号へのノイズの插入に使用されます.Noiseブロックは,平均が0.
で分散が1
のガウス分布から値が生成される信号を出力します.Stateflow®チャートは信号をフィルター处理し,メッセージを送信するかどうかを决定する単纯なロジックを表します.StateflowSendコンポーネントはメッセージを发送缓冲区2に送信します。
モデルには,メッセージを受信するWirelessReceiveとWirelessListenerという2つのソフトウェアコンポーネントがあります。
WirelessReceiveコンポーネントで,接收ブロックはメッセージを受信してそのメッセージデータを信号値に変换します。コンポーネントは接收缓冲区1に接続されます。
WirelessListenerコンポーネントには,关数onOneMessage(数据)
を実行するS金宝appimulink的功能ブロックがあります。メッセージが接收缓冲器3に到着すると,Simulink的功能ブロックはメッセージデータからの値である引数数据
を入力信号として取ります。このブロックでは,数据
の値が2
で乘算されます。ブロックは新しいデータ値を出力します。
これらのコンポーネントの作成の详细については,复数の送信侧および受信侧をもつ共有通信チャネルのビルドを参照してください。
WirelessSendコンポーネントとWirelessStateflowSendコンポーネントは发送缓冲区1と发送缓冲区2にメッセージを送信します。これらは,ワイヤレスでメッセージを送信できるSimEvents®实体组播ブロックです·发信缓冲区ブロックは,发送缓冲区1と发送缓冲区2によって送信されるメッセージを受信できるSimEvents®マルチキャスト受信キューです。
发送缓冲器1,发送缓冲器2,および无线信道ブロック内の发送缓冲器ブロック间でこのワイヤレス通信を実现するには,次のようにします。
发送缓冲器1ブロックと发送缓冲区2ブロックで,[多播标签]パラメーターを一种
に设定します。
发送缓冲器ブロックで,[多播标签]パラメーターを一种
に设定します。
[多播标签]パラメーターはメッセージがどの实体组播ブロックから受信されるのかを定义します。
SimEvents®实体门ブロックはチャネルエラーのモデル化に使用されます。ブロックには入力端子が2つあります0.1つの入力端子は发送缓冲器からの受信メッセージ用です0.2番目の入力端子はゲートを开くタイミングを决定する制御端子です。
门ブロックの[操作模式]パラメーターを启用门
に设定します。このモードでは以下が行われます。
その制御端子から0.
より大きい値を搬送するエンティティを受信すると,ブロックはゲートを开いてメッセージが进むことを许可します。これは操作可能チャネルを表します。
エンティティが0.
以下の値のデータを搬送すると,ブロックはゲートを闭じてメッセージの受け渡しをブロックします。これはチャネルエラーを表します。
栅极ブロックを制御するために,この例では控制栅というラベルが付いたSimEvents®实体发生器ブロックを使用して,さまざまなデータ値を搬送するエンティティを生成できます。
控制栅ブロックでは,[事件动作]の[产生动作]フィールドで,下のコードを使用して门ブロックを开闭するエンティティを生成します。最初,エンティティデータは1
であり,ゲートは开いていて,チャネルは操作可能状态です。新しいエンティティが生成されると,その値は0.
に変化し,これによってゲートが闭じられます。エンティティが生成されるたびに,ゲートのステータスは开いた状态から闭じた状态,または闭じた状态から开いた状态に変化します。
控制栅ブロックでは,[代际时间动作]フィールドで下のコードを使用し,チャネルの操作可能状态とエラー状态を表します。このコードはチャネルを操作可能として初期化します。生成された各エンティティは门ブロックのステータスを変更するため,DT.
はエンティティの生成间时间であり,チャネルのステータスを変更するために使用されます。
このコードでは,0.
と10.
の间の値を取る一様分布から修复时间が生成されます。エラーの时间间隔は0.
と50.
间の値を取る别の一様分布から生成されます。
パケット损失をモデル化するには,SimEvents®实体输出开关ブロックを使用します。
ブロックには入力端子が2つあります0.1つの入力端子はメッセージを受け入れます。もう1つの入力端子は出力端子の选択を决定するエンティティを受け入れます。エンティティが1
に设定されている场合,ブロックは出力端子1
を选択してメッセージを无线共享信息ブロックに転送します。エンティティが2
に设定されている场合,ブロックはパケット损失を表す实体终结者ブロックに接続されている出力端子2
を选択します。
输出开关ブロックでは次のようになります。
[输出端口数]は2
に设定されます。
选択されている出力を特定するために,[切换判据]は来自控制港口
に设定され,[初始端口选择]は1
に设定されます。
パケット损失の0.1
の确率をモデル化するには,概率丢包ブロックで[事件动作]タブを选択します。[产生动作]フィールドには次のコードが含まれます。
执着的rngInit;如果isempty(rnginit)种子= 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 |并且这力输出切换以选择%输出| 2 |这表示数据包丢失。实体= 1;结尾
つまり,制御端子に入るエンティティには1
に设定される0.9
の确率があり,これによりブロックは无线共享消息ブロックにメッセージを出力します。
モデルをシミュレートします。
发送缓冲器ブロック上部で接続されている范围ブロックを开きます。ブロックには共有チャネルから送信されたメッセージの合计数が表示されます。
4255
メッセージがチャネルを介して送信されます。
プロットにはチャネルエラーも表示されます。たとえば,最初の100.
秒を拡大します。チャネルエラーはメッセージ送信がブロックされた40
と49.
の间に発生していることを确认します。
データインスペクターを开き,门を制御するエンティティを可视化します。生成されたエンティティごとにエンティティデータが1
から0.
に変わります。
损失したメッセージの数を确认するには,丢包ブロックに接続された范围ブロックを开きます。
409.
メッセージは送信中に失われます。これは,メッセージの9.6
パーセントです。
队列|收到|发送|正弦波|实体门(Simevents)|实体组播(Simevents)|实体输出开关(Simevents)|实体终结者(Simevents)