主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

複数の送信側および受信側をもつ共有通信チャネルのビルド

この例では,複数の送信側および受信側をもつ共有チャネルを介した通信を,金宝app仿真软件®のメッセージ,SimEvents®,およびStateflow®を使用してモデル化する方法を説明します。

メッセージの概要については,金宝app仿真软件メッセージの概要を参照してください。

このモデルには,メッセージを送信する2つのソフトウェアコンポーネントとメッセージを受信する2つのコンポーネントがあります。共有チャネルは遅延を加えてメッセージを送信します。SimEvents® ブロックは、メッセージ ラインをマージし、メッセージをコピーして遅延させることにより、カスタム通信動作の作成に使用されます。Stateflow® チャートは、判定ロジックに基づく送信コンポーネントでのメッセージの送信に使用されます。

メッセージを送信するコンポーネントの作成

モデルには,メッセージを出力する发送およびStateflowSendという2つのソフトウェアコンポーネントコンポーネントがあります。

发送コンポーネントでは正弦波ブロックが信号ソースです。このブロックは振幅が1の正弦波信号を生成します。ブロックのサンプル時間は0.1です。发送ブロックは信号値をデータとして搬送するメッセージに信号を変換します。发送コンポーネントはメッセージを Send Buffer 1 に送信します。

StateflowSendコンポーネントでは,別の正弦波ブロックが正弦波信号を生成し,噪音ブロックはノイズを信号に挿入します。噪音ブロックは,平均が0で分散が1のガウス分布から値が生成される信号を出力します。ブロックのサンプル時間は0.1です。

Stateflow®チャートは信号をフィルター処理し,メッセージを送信するかどうかを決定する単純なロジックを表します。0.1より大きい期間に対する信号の値が0.5より大きい場合,チャートは信号値を搬送するメッセージを送信します。信号値が0を下回ると,チャートはReceiveSignalステートに遷移します。Stateflow发送コンポーネントはメッセージを Send Buffer 2 に送信します。

メッセージインターフェイスの作成の詳細については,ソフトウェアコンポーネント間におけるメッセージ送受信インターフェイスの確立を参照してください。

メッセージを受信するコンポーネントの作成

モデルには,メッセージを受信する收到と侦听器という2つのソフトウェアコンポーネントがあります。

收到コンポーネントでは,接收ブロックがメッセージを受信し,そのメッセージデータを信号値に変換します。

侦听器コンポーネントには,仿真软件功能金宝appブロックがあります。このブロックには,関数onOneMessage(数据)がブロック上に表示されます。

メッセージが接收缓冲区2に到着すると,侦听器ブロックに通知され,メッセージデータからの値である引数数据を入力信号として取ります。このブロックでは,数据の値が2で乗算されます。ブロックは新しいデータ値を出力します。

SimEvents®を使用したメッセージのルーティング

共有チャネルでは2つのメッセージ送信コンポーネントから発生するメッセージパスがマージされ,共有通信チャネルを表します。

SimEvents®实体输入开关ブロックはメッセージラインをマージします。ブロックでは次のようになります。

  • [输入端口数]はマージするメッセージラインの数を指定します。2つのメッセージパスのパラメーター値は2です。

  • (活跃端口选择)は,出ていくメッセージにアクティブな端子を選択する方法を指定します。所有を選択すると,ブロックに到着するすべてのメッセージは出力端子からブロックを出ていくことができます。开关を選択すると,出ていくメッセージに対してアクティブな端子を選択するロジックを指定できます。たとえば,パラメーターは所有に設定されます。

SimEvents®实体服务器ブロックは,共有チャネルでメッセージ伝送遅延を表すために使用されます。ブロックでは次のようになります。

  • (能力)1に設定され,これにより一度に処理できるメッセージの数が指定されます。

  • (服务时间价值)1に設定され,これによりメッセージの処理にかかる時間が指定されます。

SimEvents®实体复制因子ブロックは,メッセージの同一コピーの生成に使用されます。ブロックでは次のようになります。

  • (副本离开)は,コピーが,個別の出力端子または元のメッセージと同じ出力端子のどちらからブロックを出るのかを指定します。パラメーターは单独的输出端口に設定されます。

  • (数量的副本)1に設定され,これにより各メッセージに対して生成されるコピーの数が指定されます。

  • [保留原始实体直到所有副本离开]は,そのすべてのコピーがブロックを出るまで,ブロックの元のメッセージを保持します。

SimEvents®实体终结者ブロックは接收缓冲区2のモデル化に使用されます。ブロックでは次のようになります。

  • (事件动作)タブの(条目行动)フィールドで,計算を実行するMATLABコードまたはメッセージがブロックに入ると呼び出される仿真软金宝app件®関数呼び出しを指定できます。この例では,onOneMessage(实体)は侦听器コンポーネントで仿真软件功能ブロ金宝appックの通知に使用されます。関数呼び出しを可視化するには,[デバッグ]タブで(情報のオーバーレイ]を選択してから[関数コネクタ]を選択します。

モデルのシミュレーションと結果の確認

モデルをシミュレートします。モデルを流れるメッセージがアニメーションで強調表示されることを確認します。モデルキャンバスを右クリックして[アニメーション速度)没有一个に設定することにより,アニメーションをオフにできます。

アニメーションを一時停止すると,メッセージを格納するブロックに拡大鏡が表示されます。拡大鏡にカーソルを合わせると,ブロックに格納されているメッセージの数が表示されます。

ブロックに格納されているメッセージを確認するには,拡大鏡をクリックして存储检查员を開きます。たとえば,以下の図は发送缓冲区1に格納されているメッセージを示しています。

アニメーションをオフにして序列观众ブロックを開き,仿真软件関数の呼び出しとモ金宝appデル内のメッセージの流れを確認します。

たとえば,シミュレーション時間0を確認します。この間値0を搬送するメッセージは发送コンポーネントから发送缓冲区1に送信されます。シミュレーション時間0.1から0.5の間、发送コンポーネントはさまざまなデータ値で发送缓冲区1にメッセージを送信し続けます。時間0.5に,StateflowSendコンポーネントはメッセージを发送缓冲区2に送信します。序列观众ブロックの使用の詳細については,序列观众ブロックを使用したメッセージ,イベント,エンティティの可視化を参照してください。

参考

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

関連するトピック