Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

メッセージの可用性に基づいて実行されるメッセージ受信インターフェイスのモデル化

この例では、メッセージベースのシステムでデータの入手に実行を同期させる方法を説明します。イベントとアクションを使用してこの動作をモデル化する方法を示します。この例は、2 つのソフトウェア コンポーネントがメッセージを使用して通信する別の例、ソフトウェア コンポーネント間におけるメッセージ送受信インターフェイスの確立に基づいています。

前の例と同様に、Send Component と Receive Component にコード生成プロセスを適用する必要があります。Message Storage は、ミドルウェアをモデル化するとともに、ミドルウェアによって提供されるデータ通知イベントをモデル化します。

以下は、2 つの Model ブロックを使用して作成された、Send Component と Receive Component を含むコンポジション モデルです。これらの 2 つの Model ブロックは、Queue ブロックを通してメッセージ ラインで接続されています。

メッセージが Queue ブロックの入力端子に到着すると、その entry アクションが呼び出されます。[Event action] タブの [Entry] フィールドで、このブロックは Simulink 関数 onMessageAvailable() を呼び出します。これは、ReceiveComponent でエントリポイント関数としてモデル化されます。イベント アクションの詳細については、Event Action Languages and Random Number Generation (SimEvents)を参照してください。

以下の図は、ReceiveComponent の内容を示しています。

その結果、SendComponent から送信されたメッセージにより、ReceiveComponent 内の実行がトリガーされます。この動作を観察するため、Sequence Viewerブロックを使用します。

たとえば、シミュレーション時間 0 を観察します。

  1. Send ブロックから Queue ブロックへの矢印は、データ値 0 のメッセージが送信されたことを表しています。

  2. Queue ブロックから Simulink Function ブロックへの矢印は、関数 onMessageAvailable() の呼び出しを示しています。

  3. Queue ブロックからの矢印は、この関数呼び出し内でデータ値 0 のメッセージが Receive ブロックによって受信されたことを示しています。

  4. Simulink Function ブロックから Queue ブロックへの水平の破線矢印は、関数 onMessageAvailable() のリターンを示しています。

Sequence Viewer ブロックの詳細については、Sequence Viewer ブロックを使用したメッセージ、イベント、エンティティの可視化を参照してください。

参考

| | |

関連するトピック