Main Content

コードの定義とマッピングに関する制限と考慮事項

制限

  • モデル内のデータ要素に名前がない場合 (たとえば、信号にラベルがない、状態に名前がないなど)、C コード生成用に設定するときに、そのデータ要素のコード識別子を指定しなければなりません。ストレージ クラス プロパティ [Identifier] の値を指定することで、コード識別子を設定します。

  • コード マッピングを使用して、ブロック パラメーターとして使用されている MATLAB® 変数を設定することはできません。モデル ワークスペースで変数を Simulink.Parameter オブジェクトに変換します。結果のデータ オブジェクトがモデル パラメーターとしてコード マッピング エディターに表示されます。

  • コード マッピングを使用して構成できるのは、モデル内のブロックごとに 1 つの離散状態のみです。

  • モデルに調整可能な非有限パラメーターが含まれている場合 (たとえば、inf の値をもつ場合など)、コード ジェネレーターは指定された既定のパラメーター マッピングを適用しません。パラメーターが既定のパラメーター データ構造体 rtP のフィールドとして表示されます (リアルタイム モデル データ構造体を参照)。

既定のコード マッピングに関する制約

カテゴリ [External parameters] および [Global data stores] の既定のコード マッピングは、モデル参照階層全体のモデルで同じでなければなりません。

モデルの編集操作と個々のデータ要素のコード マッピング

コーダー アプリのコンテキストでモデルを編集している間、コピー、元に戻す、コード マッピングなど、Simulink® モデルの編集ツール間の関係を認識する必要があります。コーダー アプリのコンテキストでは、モデル内でコピーと貼り付けまたは切り取りと貼り付けの編集操作を実行すると、コーダー アプリによって個々のデータ要素のコード マッピングが保持されます。たとえば、モデル内で、特定のストレージ クラスを使用して構成されている信号のソース ブロックをコピーして貼り付ける場合、貼り付けられた信号端子は同じストレージ クラスを保持します。

モデル データ要素に行った編集アクションに対して元に戻す操作およびやり直し操作を使用できますが、コード マッピングの設定中は使用できません。たとえば、State ブロックを削除してから [元に戻す] をクリックする場合、そのブロックはモデル キャンバスに再表示され、状態のコード構成がコード マッピングに再表示されます。コード マッピング エディターで、状態のストレージ クラス設定を Auto から Model default に変更してから [元に戻す] をクリックする場合、ストレージ クラスは Auto に戻りません。この場合、変更は、モデルのデータ要素ではなくコード マッピングに関連しています。

ストレージ クラスと再呼び出し可能なマルチインスタンス モデルとコンポーネント

モデルまたはコンポーネント (参照モデルまたはサブシステム) から生成したコードは、実行中にアプリケーションでコンポーネントの複数の独立したインスタンスを維持できる場合、"マルチインスタンス コード" となります。たとえば、モデル コンフィギュレーション パラメーター [コード インターフェイスのパッケージ化][再利用可能な関数] に設定して、モデル全体から再呼び出し可能なマルチインスタンス コードを生成できます。マルチインスタンス モデルとコンポーネントの詳細については、コードの再利用を参照してください。

状況によっては、ストレージ クラスの適用により次のことが起こる可能性があります。

  • マルチインスタンス コードの生成ができなくなる。

  • 一部のデータ要素が生成されたコードでシングルトンとして表示される。これにより、モデルまたはコンポーネントの各インスタンスが直接同一の共有グローバル データにアクセスし、インスタンス間での依存関係が作成される。

エラーや予期しない単一インスタンスのコードおよびシングルトン データの生成を回避するため、以下のガイドラインおよび制限を遵守してください。

直接適用されるストレージ クラス

ストレージ クラスをデータ要素に直接適用する場合、次についての考慮が必要です (モデル インターフェイス要素の C コード生成の構成を参照)。

  • マルチインスタンス コードを生成するには、ストレージ クラスを、パラメーター オブジェクト、グローバル データ ストア、共有ローカル データ ストア、ルートレベル I/O のみに適用しなければならない。

  • ストレージ クラスはシングルトン データのみを生成する。

既定で適用されるストレージ クラス

既定のストレージ クラスを適用する場合、次についての考慮が必要です (モデル インターフェイス要素の C コード生成の構成を参照)。

  • 次のデータ カテゴリーについてはシングルトン データのみ生成できる。

    • Model parameters

    • External parameters

    • Global data stores

    • Shared local data stores

  • [内部データ] については、インスタンス固有のデータのみ生成できる。すなわち、モデルまたはコンポーネントの各インスタンスは個別のデータのコピーに対して動作する。これらのカテゴリについては、クイック スタート ツールを使用してコード生成用のモデルを準備すると表示される、組み込みストレージ クラス SignalStruct を使用しなければなりません。あるいは、Embedded Coder ディクショナリを使用して、独自の構造化されたストレージ クラスを使用できます。

詳細については、再呼び出し可能なコードとはおよび生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

サブシステムを参照モデルに変換するときにコード マッピングをコピー

サブシステムを参照モデルに変換するときに、コード マッピングをコピーできます。

参考

|

関連するトピック