このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,複数の送信側および受信側をもつ共有チャネルを介した通信を,金宝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
で乗算されます。ブロックは新しいデータ値を出力します。
共有チャネルでは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)