主要内容

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

金宝app仿真软件コンポーネント間の通信のためのCメッセージの生成

金宝app仿真软件環境でモデルコンポーネント間のメッセージベースの通信をサポートするCコードを生成するには,仿真软件消息和事件ライブラリブロック发送および收到を使用します。通信をカスタマイズするには,(同じライブラリの)队列ブロックを使用して,容量,並べ替えポリシー(先进先出,后进先出および優先順位),および上書きポリシー(キューが容量を上回ったときの動作)のパラメーターを設定します。金宝app仿真软件编码器を使用しGRTてベースのシステムターゲットファイル用Cコードを生成したり,嵌入式编码器を使用してERTベースのシステムターゲットファイル用Cコードを生成したりできます。

メッセージは,金宝app模型内でモデル化できる分散された複雑なシステムに効果的な通信方法です。メッセージベースの通信に対する生成コードのサポートについて理解を深めるために、以下の説明を参照してください。

  • 金宝app仿真软件でメッセージベースの通信用にモデルを準備する方法。

  • モデルコンポーネントでメッセージを渡す方法およびコードでこの動作を実装する方法。

  • 特定のモデル例からCコードを生成して調べる方法。

金宝app模拟でメッセージベースの通信用にモデルを準備する方法

金宝app仿真软件で,次の手順を使用して,モデルコンポーネント間でメッセージベースの通信をモデル化できます。

  1. 发送ブロックを含むモデル(参照モデル)を作成します。

  2. 收到ブロックを含むモデル(参照モデル)を作成します。

  3. 2つの模型ブロックを含むモデル(最上位モデル)を作成します。

    • 最初の模型ブロックを发送ブロックを含むモデル(手順1のモデル)に設定します。

    • 2番目の模型ブロックを收到ブロックを含むモデル(手順2のモデル)に設定します。

  4. モデルを実行するときに,メッセージ行の上にある上位モデルにキューが自動的に生成されます。キューによって,明示的または暗黙的に,メッセージの通信を制御します。自動的に生成されたキューを使用するか,最上位モデルに队列ブロックを追加して,通信パラメーターを明示的に指定できます。

モデルコンポーネントでメッセージを渡す方法およびコードでこの動作を実装する方法

概念上,参照モデルは次の方法でメッセージを渡します。

  1. 发送ブロックを含むモデルでは,发送ブロックが信号をメッセージに変換します。

  2. キューを含む最上位モデルが,容量,配信順序,およびその他のサービス品質(QoS)メトリクスを定義するパラメーターに従ってメッセージを管理します。

  3. 接收ブロックを含むモデルでは、接收ブロックがメッセージから信号へ変換を戻します。

生成されたCコードで,最上位モデルは,参照モデルがそれぞれ独自にアクセスできるセットインターフェイスを確立して送信および受信参照モデル間の接続を容易にします。

生成された Cコードでは、メッセージの動作が次のように実装されます。

  1. 各モデル境界にサービスが作成されます。サービスには,参照モデルが最上位モデルにメッセージを渡すために使用する,最上位モデルとエントリポイント関数(サービス関数)への参照が含まれます。

  2. 最上位モデルでは,各サービスを初期化して各参照モデルへの接続を作成します。

  3. 参照モデルは、サービス関数を呼び出して最上位モデルにメッセージを渡します。

これらの手順の実装の詳細を、生成されたコード例に示します。

Cコードの生成例

この例では,ソフトウェアコンポーネント間におけるメッセージ送受信インターフェイスの確立で指定されたモデルからCコードを生成し,確認します。

Cコードの生成:

  1. モデルを開きます。

  2. アプリギャラリーで(嵌入式编码)をクリックします。

  3. モデル(最上位モデルと両方の参照モデル)ごとに,[コンフィギュレーションパラメーター]ダイアログボックスの[コード生成]ペインで,[言語]Cに設定し、モデルを保存します。

  4. コードを生成します。[Cコード]タブで,[ビルド]をクリックします。

  5. 生成されたコードを表示します。[Cコード]タブで,[コードの表示)をクリックします。

Cコードの確認:

  1. 各モデル境界にサービスが作成されます。Cでは、参照モデルでサービスが DWork として表されます。サービスは、最上位モデルのインスタンスへのポインターと、メッセージを渡すために参照モデルが呼び出すサービス関数を提供します。

    1. メッセージを送信するサービスを表示するには、送信参照モデルのヘッダー ファイルmSend.hを開きます。DWork割り当てを表示します。

    2. 送信メッセージ データ型を表示するには、データ型が共有可能な場合 (たとえば、組み込みデータ型、インポートされたバス型、または指定されたデータ型をもつエクスポートされたバス型)、情報は共有ヘッダー ファイルにあります。データ型が共有可能ではない場合、情報はモデル ヘッダー ファイルmSend.hにあります。この例では,共有ヘッダーファイルSendData_real_T.hを開いて共有可能なデータ型を表示します。

    3. メッセージを受信するサービスを表示するには,受信参照モデルのヘッダーファイルmReceive.hを開きます。DWork割り当てを表示します。

    4. 受信したメッセージデータ型を表示するには,データ型が共有可能な場合(たとえば,組み込みデータ型,インポートされたバス型,または指定されたデータ型をもつエクスポートされたデータ型),情報は共有ヘッダーファイル内にあります。データ型が共有可能ではない場合,情報はモデルヘッダーファイルmReceive.hにあります。この例では,共有ヘッダーファイルRecvData_real_T.hを開いて共有可能なデータ型を表示します。

  2. 最上位モデルでは,各サービスを初期化して各参照モデルへの接続を作成します。Cでは,最上位モデルが各参照モデルのDWorkを初期化します。初期化を確認するには,最上位モデルのCファイルMessageSendReceiveDefaultBufferModel.cを開きます。

  3. 参照モデルは、サービス関数を呼び出して最上位モデルにメッセージを渡します。Cでは、参照モデルが、サービス関数のポインターを逆参照し、最上位モデルのインスタンスへのポインターを渡すことでサービス関数を呼び出します。最上位モデルのヘッダー ファイルでサービス関数のプロトタイプを表示し、それらのサービス関数の参照モデル呼び出しを参照モデル Cファイルで表示することができます。

    1. メッセージを送信するサービス関数のプロトタイプを表示するには,最上位モデルのヘッダーファイルMessageSendReceiveDefaultBufferModel.hを開きます。

    2. メッセージを送信するサービス関数の実装を表示するには、最上位モデルの CファイルMessageSendReceiveDefaultBufferModel.cを開きます。

    3. 送信参照モデルがサービス関数を呼び出す方法を表示するには,モデルのCファイルmSend.cを開きます。ステップ関数で,モデルはサービスを呼び出してインスタンスデータとメッセージを最上位モデルに送信し,戻りステータスを受信します。

    4. メッセージを受信するサービス関数のプロトタイプを表示するには,最上位モデルのヘッダーファイルMessageSendReceiveDefaultBufferModel.hを開きます。

    5. メッセージを受信するサービス関数の実装を表示するには、最上位モデルの CファイルMessageSendReceiveDefaultBufferModel.cを開きます。

    6. 受信参照モデルがサービス関数を呼び出す方法を表示するには,モデルのCファイルmReceive.cを開きます。ステップ関数で,モデルはサービスを呼び出してメッセージペイロードと戻りステータスを受信します。

考慮事項と制限

  • 金宝app仿真软件编码器アプリを使用して,GRTベースのシステムターゲットファイルでCコードをサポートできます。

  • 嵌入式编码器アプリを使用して,ERTベースのシステムターゲットファイルでCコードをサポートできます。

  • コードを生成するには,最上位モデルと参照モデルで同じ言語(C)とシステムターゲットファイルを選択しなければなりません。

  • 関数プロトタイプコントロール(FPC)はルートのメッセージ端子をもつ最上位モデルには構成できません。

  • 外部モデルとバリアントモデルはサポートされません。

  • シミュレーションでは,银/公益诉讼はサポートされません。

関連するトピック