Main Content

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

モデル ブロックで使用される信号用のストレージ クラス

Model ブロックを含むモデルはストレージ クラス [Auto] の信号を制約なしに使用することができます。しかし信号をグローバルで宣言する場合は、信号データが処理される方法に留意しなければなりません。

グローバル信号は [Auto] 以外の、以下のストレージ クラスを使用する信号です。

  • ExportedGlobal

  • ImportedExtern

  • ImportedExternPointer

  • カスタム

上記は、コード マッピング エディターで対応するデータ カテゴリの既定のストレージ クラスを Default に設定するときにストレージ クラス Model default を使用し、[Auto] ストレージ クラスを使用するテスト ポイントとして扱われる信号とは異なります。

グローバル信号は以下のように宣言し、定義し、使用します。

  • extern 宣言は特定のグローバル信号を使用するモデル用に生成されます。

    その結果、信号が Model ブロック境界を通過すると、最上位モデルと参照モデル両方がその信号の extern 宣言を生成します。

  • エクスポートされた信号に対しては、最上位モデルがその信号を使用するかどうかにはかかわらず、最上位モデルがその信号の定義 (メモリの割り当て) を行います。

  • 参照モデルが使用するグローバル信号は、グローバル メモリとして直接アクセスされます。それらは参照モデル用に生成された関数に、引数として渡されません。

カスタム ストレージ クラスも上記のルールに従います。しかし特定のストレージ クラスには、現在モデル参照との使用をサポートしていないものもあります。詳細については、ストレージ クラスの制限を参照してください。

モデル ブロックで使用されるパラメーター用のストレージ クラス

ストレージ クラスはシミュレーションおよびコード生成用にサポートされています。[Auto] を除いて、ストレージ クラスは調整可能です。サポートされているストレージ クラスには、以下のものがあります。

  • Model default

  • ExportedGlobal

  • ImportedExtern

  • ImportedExternPointer

  • カスタム

参照モデルのパラメーターには次の制約があることに注意してください。

  • 調整可能なパラメーターは、インラインでない S-Function ではサポートされません。

  • [モデル パラメーター設定] ダイアログ ボックスを使用して設定された調整可能なパラメーターは無視されます。

ターゲット用に生成されたコードでの、調整可能なグローバル パラメーターの宣言方法、定義方法、使用方法に関する下記の事項に注意してください。

  • 調整可能なグローバル パラメーターは、[Auto] 以外のストレージ クラスを使用するベース ワークスペースでのパラメーターです。

  • extern 宣言は特定のパラメーターを使用するモデル用に生成されます。

  • パラメーターがエクスポートされる場合は、(最上位モデルがそのパラメーターを使用するかどうかにはかかわらず) 最上位モデルがそのパラメーターの定義 (メモリの割り当て) を行います。

  • グローバル パラメーターは、グローバル メモリとして直接アクセスされます。それらは参照モデル用に生成された関数に、引数として渡されません。

  • コード マッピング エディターでパラメーター データのカテゴリに対する既定のストレージ クラスを Default に設定している参照モデルでは、[Model default] パラメーター用の記号は、model_P 構造体に書き込まれるのではなく、構造体ではない変数 (rtP_xxx) を使用して生成されます。これは各参照モデルを個別にコンパイルできるようにするためです。

パラメーター用の特定のストレージ クラスには、現在モデル参照をサポートしていないものもあります。詳細については、ストレージ クラスの制限を参照してください。

Model ブロックの引数として使用されるパラメーターは、参照モデルのワークスペースで定義されなければなりません。詳細については、再利用可能な参照モデルのインスタンスのパラメーター化を参照してください。

モデル参照の境界間での信号名の不一致

親モデル内で Model ブロックに入出力される信号の名前とストレージ クラスが、その参照モデル内のルートの入力端子または出力端子に入出力する信号のものと一致しない場合があります。参照モデルは親モデルとは無関係に個別にコンパイルされるため、親モデルでの信号の名前と保存方法の違いを参照モデルに適合することはできません。

コード ジェネレーターは、参照モデルの入力信号と出力信号が [Auto] ストレージ クラスをもつ場合に受け入れます。そのような信号がテスト ポイントやグローバルの場合、上述のように制約があります。親モデルと参照モデルでの信号のラベルとストレージ クラスの不一致がどのように処理されるかを次の表で説明します。

参照モデルの境界間での信号とストレージ クラスの関係

参照モデル

親モデル

信号の引き渡し方法

信号の不一致チェック

Auto

ストレージ クラス

関数の引数

なし

Model default (コード マッピング エディターで Default ストレージ クラスを指定する場合) または信号オブジェクトに解決される

ストレージ クラス

関数の引数

信号ラベルの不一致

Global

Auto または Model default (コード マッピング エディターで Default ストレージ クラスを指定している場合)

グローバル変数

信号ラベルの不一致

Global

Global

グローバル変数

名前とストレージ クラスは一致しなければならない (それ以外はエラー)

まとめると、コード生成には次の信号関連付けルールが適用されます。

  • 参照モデルのルートの入力信号や出力信号のストレージ クラスが [Auto] (またはコード マッピング エディターで対応するデータ カテゴリのストレージ クラスを Default に設定している場合は Model default) の場合、信号は関数の引数として渡されます。

    • そのような信号が Model default であるか、Simulink.Signal オブジェクトに解決される場合、[信号ラベルの不一致] 診断が適用されます。

  • 参照モデルのルートの入力信号や出力信号がグローバルの場合、直接メモリ アクセス (グローバル変数) を使用して伝達されます。さらに、

    • 親モデルの対応する信号もグローバルの場合、両者の名前とストレージ クラスは完全に一致しなければなりません。

    • 親モデルの対応する信号がグローバルでない場合、[信号ラベルの不一致] 診断が適用されます。

[コンフィギュレーション パラメーター] ダイアログ ボックスの [診断]、[接続性] ペインで、[信号ラベルの不一致] 診断を [エラー][警告] または [なし] に設定できます。

関連するトピック