主要内容

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

バス信号の効率的なコードの生成

モデル内でバス信号を使用して,複数の信号を1つの信号線にパッケージします。バーチャルまたは非バーチャルのバス信号を作成できます。生成コード内での表現は次の内容に依存します。

  • バーチャルバスの場合,生成コードではバスが存在しないかのように見えます。

  • 生成された非バーチャルバスのコードでは,バスデータを構造体で表します。モデルとコードの対応を追跡する際に,生成されたコードの構造体を使用すると便利です。非バーチャルバス信号を使用して構造体を生成する方法については,生成されたコードにおける構造体へのデータの整理を参照してください。

バスの一般的な情報については,合成信号のタイプを参照してください。

バス信号を含むモデルから効率的なコードを生成するためには,モデルを構築するときにベストプラクティスに従って不必要なデータコピーを排除します。

バス信号のコードの効率性

コード生成を行うモデルでバスを使用する場合,次の点に注意します。

  • バス診断コンフィギュレーションパラメーターを設定することで,モデルの開発が容易になる場合があります。

  • バスの実装手法と,非バーチャルバスまたはバーチャルバスの選択が,生成コードの速度,サイズ,明確性に影響する場合があります。

  • 一部の有用なバスの実装手法は,一見明らかではありません。

バスについて作業するときには,これらのガイドラインが結果の改善に役立ちます。ガイドラインでは次の手法について説明しています。

  • モデルのレイアウトの簡略化。

  • 生成コードの効率性の向上。

  • 関数(サブシステム)インターフェイスのデータ構造の定義。

  • 外部Cコードの既存のデータ構造と一致するデータ構造の定義。

速度,サイズ,明確性の間にはいくつかのトレードオフがあります。たとえば,非バーチャルバスはコード内に構造体として現れるため,非バーチャルバスのコードは読みやすくなりますが,バーチャルバスは信号データのコピーを必要としないため,バーチャルバスのコードはより速くなります。アプリケーション開発プロセスのどの段階にいるかに基づいて,ガイドラインをいくつか適用してください。

バス診断の設定

金宝app®はバス使用の最適化に使用できる診断機能を提供しています。[コンフィギュレーションパラメーター][診断][接続性]ペインで次の値を設定します。

バーチャルバスと非バーチャルバスの最適化

バーチャルバスは生成コードに影響しない便宜的なグラフィックス表記です。結果としてコード生成エンジンはバス内の信号を十分に最適化できます。可能な場合は非バーチャルバスよりもバーチャルバスを使用します。信号转换ブロックを使用して,バーチャルバスと非バーチャルバスの間で変換できます。必要な場合,金宝app仿真软件によって自動的にバーチャルバスが非バーチャルバスに変換されることもあります。たとえば,Stateflowチャートでは,入力バーチャルバスが非バーチャルバスに変換されます。

関数呼び出し信号をまとめるためには,バーチャルバスを使用しなければなりません。

次の場合は非バーチャルバスを使用しなければなりません。

  • 非自動ストレージクラス

  • バスからの専用の構造体の生成

  • 混在するデータ型をバスがもつ場合の,ルートレベルの尺寸ブロックまたは外港ブロック

非バーチャルバスでの非ローカルな入れ子にされたバスの回避

バスは下位のバスを含むことができます。効率的なコードを生成するには,下位のバスのストレージクラスを汽车に設定します。ストレージクラスを汽车に設定すると,次を排除することができます。

  • 下位のバス信号と親のバス信号の冗長なメモリの割り当て

  • 追加のコピー命令(データを下位のバスにコピーし,次に下位のバスから最後のバスにコピーする)

このモデルには非バーチャルバス信号が含まれています。下位のバス信号Sub_Bus_1およびSub_Bus_2は,ストレージクラス汽车を使用します。

生成されたコードアルゴリズムでは,入力信号データをバス信号に効率的に代入しています。

void ex_nonvirtual_buses_step(void) {Nonvirtual_In_One.SimpleBus_1。A1 = A1;Nonvirtual_In_One.SimpleBus_1。A2 = A2;Nonvirtual_In_One.SimpleBus_2。A3 = A3;Nonvirtual_In_One.SimpleBus_2。A4 = A4;Nonvirtual_In_One。A5 = A5;}

参考

関連するトピック