モデルに対する複数のコード マッピングの管理
コード マッピングは、コード生成の構成をモデル設計から切り離します。この分離により、プラットフォームに依存せず、さまざまなターゲット プラットフォーム環境に展開できるように準備されたモデルを設計できます。必要な製品にアクセスできる場合、モデルを複数の異なるプラットフォームのコード マッピングに関連付けることができます。
プラットフォーム | システム ターゲット ファイル | プログラミング言語 | 必要な製品 |
---|---|---|---|
C ラピッド プロトタイピング | GRT ベース | C | Simulink® Coder™ |
C 製品 | ERT ベース | C | Embedded Coder® |
C++ 製品 | ERT ベース | C++ | Embedded Coder |
AUTOSAR Classic | AUTOSAR | C | AUTOSAR Blockset、Embedded Coder (コード生成用) |
AUTOSAR Adaptive | AUTOSAR Adaptive | C++ | AUTOSAR Blockset、Embedded Coder (コード生成用) |
さまざまなプラットフォームのコードをモデルまたはモデルの階層構造から生成できます。モデルの階層構造に含まれるモデルは同じプラットフォームに関連付けます。
Simulink では、次のいずれかを行うと既存のコード マッピングがアクティブになります。
Simulink エディターで、モデルの Coder アプリを開き、コード マッピングをサポートする出力タイプを指定する。
コード マッピング API を使用してコード マッピングを作成する。
コード マッピング エディターおよびコード マッピング プログラミング インターフェイスにアクティブなコード マッピングが表示されて操作できます。
コンフィギュレーション セットを使用した代替コード マッピングの構成
複数のモデル コンフィギュレーション セットを作成し、アクティブなコンフィギュレーション セットを切り替えることで、モデルに対して代替コード マッピングを構成できます。Simulink では、次のモデル コンフィギュレーション パラメーターの設定に基づいて、モデルのコード マッピングを作成するか既存のコード マッピングを開きます。
システム ターゲット ファイル
言語
コード インターフェイスのパッケージ化
モデルのコードを生成するプラットフォームごとにコンフィギュレーション セットを作成します。コード マッピングは、次のパラメーター設定の組み合わせでサポートされます。
プラットフォーム | システム ターゲット ファイル | 言語 | コード インターフェイスのパッケージ化 |
---|---|---|---|
C/C++ ラピッド プロトタイピング | grt.tlc または grt.tlc の導関数 | C/C++ | Nonreusable function または Reusable function |
C/C++ 製品 | ert.tlc または ert.tlc の導関数 | C/C++ | Nonreusable function または Reusable function |
C++ 製品 | ert.tlc または ert.tlc の導関数 | C++ | C++ class |
AUTOSAR Classic | autosar.tlc | C | Nonreusable function または Reusable function |
AUTOSAR Adaptive | autosar_adaptive.tlc | C++ | C++ class |
C++ プラットフォームについては、再利用可能な関数と再利用できない関数で C コード マッピングが使用されます。
目的のコンフィギュレーション セットをアクティブにします。その後、対応するコード マッピングを Simulink エディター (Simulink エディターでのコード マッピングのアクティブ化) またはコード マッピング API (プログラムによるコード マッピングの作成とアクティブ化) で開きます。
Simulink エディターでのコード マッピングのアクティブ化
Simulink エディターでモデルを開くと、次のモデル コンフィギュレーション パラメーターの設定に基づいて、モデルの既存のコード マッピングが Simulink でアクティブになります。
システム ターゲット ファイル
言語
コード インターフェイスのパッケージ化
次のいずれかの Coder アプリを開くと、アクティブなコンフィギュレーション セットのシステム ターゲット ファイル設定が Coder アプリの選択と整合しているかどうかが Simulink でチェックされます。
Simulink Coder (GRT ベースのシステム ターゲット ファイル)
Embedded Coder (ERT ベースのシステム ターゲット ファイル)
AUTOSAR Component Designer (AUTOSAR システム ターゲット ファイル)
Simulink で不整合が検出されると、現在のシステム ターゲット ファイル設定を記載したメッセージがエディターに表示され、その設定を変更するか、あるいは選択した Coder アプリを開くかが確認されます。操作をキャンセルして現在のシステム ターゲット ファイル設定と整合するアプリを開くか、システム ターゲット ファイルを変更して選択したアプリをそのまま開くことができます。
現在のシステム ターゲット ファイルが Coder アプリの選択と整合している場合は、Simulink で Coder アプリが開き、エディターのツールストリップにコードのタブ (たとえば [C コード] や [AUTOSAR]) が追加されます。
Coder アプリが開いた後、ツールストリップの [出力] で C または C++ コード設定を選択するか、AUTOSAR の場合はいずれかの AUTOSAR プラットフォームを選択します。その後、[コード インターフェイス] メニューを使用してコード マッピング エディターを開きます。
プログラムによるコード マッピングの作成とアクティブ化
GRT ベースと ERT ベースのモデルのプラットフォームについて、コード マッピング関数 coder.mapping.utils.create
および coder.mapping.api.get
を使用してコード マッピングを作成およびアクティブ化できます。
モデルに対して複数のモデル コンフィギュレーション セット オブジェクト (
Simulink.ConfigSet
) を設定します。たとえば、GRT と ERT の C コード構成を設定したり、再利用可能な関数の生成用と再利用できない関数のコード生成用に 2 つの ERT コード構成を設定したりできます。コンフィギュレーション セットに名前を付け、それらをモデルに付加します。grtConfigObj = Simulink.ConfigSet; set_param(grtConfigObj,'Name','grtConfig'); attachConfigSet('myModel',grtConfigObj); ertConfigObj = Simulink.ConfigSet; set_param(ertConfigObj,'Name','ertConfig'); attachConfigSet('myModel',ertConfigObj);
setActiveConfigSet
およびcoder.mapping.utils.create
を呼び出して、一方のコンフィギュレーション セットのコード マッピングをアクティブ化および作成します。setActiveConfigSet('myModel','grtConfig'); grt_cm = coder.mapping.utils.create('myModel');
2 つ目のコンフィギュレーション セットのコード マッピングをアクティブ化および作成します。
setActiveConfigSet('myModel','ertConfig') ert_cm = coder.mapping.utils.create('myModel');
コード マッピング タイプ
SimulinkCoderC
またはEmbeddedCoderC
を指定したcoder.mapping.api.get
の呼び出しを使用して、モデル コード マッピングをアクティブにします。grt_cm = coder.mapping.api.get('myModel','SimulinkCoderC'); . . . # Configure model data elements . . .. ert_cm = coder.mapping.api.get('myModel','EmbeddedCoderC');
コード マッピングと Embedded Coder ディクショナリ
Embedded Coder がある場合は、Embedded Coder ディクショナリを使用して、複数のモデルから標準化されたコードを生成できます。Embedded Coder ディクショナリのモデルの定義はモデル要素とは別になっているため、Embedded Coder ディクショナリをモデルの外部の Simulink データ ディクショナリに格納して定義を共有できます。Separate C Code Interface Configuration Definition from Model-Specific Configurationsを参照してください。
参考
コード マッピング エディター – C | コード マッピング – C++ エディター | Simulink.ConfigSet
| setActiveConfigSet
| coder.mapping.api.CodeMapping