このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
モデル内でバス信号を使用して,複数の信号を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;}