Main Content

AUTOSAR データ型のモデル化

AUTOSAR 規格は AUTOSAR ソフトウェア コンポーネントで使用するプラットフォーム データ型を定義します。Simulink® では、データ要素、オペレーション引数、キャリブレーション パラメーター、測定変数、インターランナブル変数などのさまざまな要素で使用される AUTOSAR データ型をモデル化できます。ARXML ファイルから AUTOSAR コンポーネントをインポートすると、Embedded Coder® では AUTOSAR データ型がインポートされ、必要な対応する Simulink データ型が作成されます。コード生成中に、Embedded Coder はコンポーネント モデルで使用されるデータ型の ARXML 記述をエクスポートし、AUTOSAR データ型を C コードで生成します。

AUTOSAR データ型について

AUTOSAR は以下に適用されるデータ型を指定します。

  • 送信側/受信側インターフェイスのデータ要素

  • クライアント/サーバー インターフェイスのオペレーション引数

  • キャリブレーション パラメーター

  • 測定変数

  • インターランナブル変数

これらのデータ型は 2 つのカテゴリに分類されます。

  • C 固有タイプに直接マッピングできるプラットフォーム データ型。

  • C 配列と構造体にマッピングする複合データ型。

AUTOSAR プラットフォーム データ型をモデル化するには、対応する Simulink データ型を使用します。AUTOSAR ディクショナリの [XML オプション] でプラットフォーム型名を設定できます。詳細については、AUTOSAR プラットフォーム型を参照してください。

AUTOSAR 3.x プラットフォーム名は、将来のリリースで削除される予定です。

Simulink データ型AUTOSAR 3.x プラットフォーム型AUTOSAR 4.x プラットフォーム型
booleanBooleanboolean
singleFloatfloat32
doubleDoublefloat64
int8SInt8sint8
int16SInt16sint16
int32SInt32sint32
int64SInt64sint64
uint8UInt8uint8
uint16UInt16uint16
uint32UInt32uint32
uint64UInt64uint64

AUTOSAR 複合データ型は、Simulink で幅広い信号およびバス オブジェクトによって、個別に表現される配列とレコードです。Inport ブロックまたは Outport ブロックを使用して幅の広い信号またはバス オブジェクトを設定するには、モデル データ エディターを使用します。[モデル化] タブで [モデル データ エディター] をクリックし、[入力端子/出力端子] タブを選択します。[設計] ビューを選択します。入力端子と出力端子のリストから、設定するソース ブロックを選択します。

次の図では、AUTOSAR 複合配列に幅広い信号を指定する方法を示します。

次の図に、AUTOSAR 複合レコードに対応するバス オブジェクトの指定方法を示します。

データ要素のデータ型とオペレーションのプロトタイプの引数を指定するには、[データ型] 列でドロップダウン リストを使用します。[boolean][single][int8] などの Simulink 組み込みデータ型を指定することも、データ型のエイリアスを入力することもできます。例として、次の図に、[データ型] 列で AUTOSAR データ型に対応するエイリアス [sint8] を示します。

データ型を指定する際のその他のガイダンスとして、Inport または Outport ブロック パラメーター ダイアログ ボックスまたはプロパティ インスペクターで [信号属性] ペインの [データ型アシスタント] を使用できます。

列挙データ型

AUTOSAR は列挙データ型をサポートしています。インポート プロセスでは、対応する Simulink 列挙データ型がある場合、ソフトウェアはデータ型を使用します。ソフトウェアは 2 つのデータ型の整合性を確認します。ただし、対応する Simulink データ型が見つからない場合は、Simulink.defineIntEnumType クラスを使用して自動的に列挙データ型が作成されます。データ型の自動作成は、多数の列挙データ型をインポートする場合に便利です。

次の例を考えます。

<SHORT-NAME>BasicColors</SHORT-NAME>
  <COMPU-INTERNAL-TO-PHYS>
  <COMPU-SCALES>
     <COMPU-SCALE>
        <LOWER-LIMIT>0</LOWER-LIMIT>
        <UPPER-LIMIT>0</UPPER-LIMIT>
        <COMPU-CONST>
           <VT>Red</VT>

ソフトウェアは以下を使用して、列挙データ型を作成します。

Simulink.defineIntEnumType( "BasicColors", ...
     {"Red", "Green", "Blue"}, ...
     [0;1;2], ...
     "Description", "Type definition of BasicColors.", ...
     "HeaderFile", "Rte_Type.h", ...
     "AddClassNameToEnumNames", false);

構造体パラメーター

AUTOSAR ソフトウェア コンポーネントをエクスポートする前に、構造体パラメーターのデータ型を Simulink.Bus オブジェクトに指定します。パラメーター オブジェクトの作成によるフィールドのデータ型と特性の制御を参照してください。そうしない場合、以下の動作が表示されます。

  • AUTOSAR 構成を検証すると、警告が表示されます。

  • モデルを構築すると、各データ型を "無名" struct として定義し、データ型にランダムで説明的ではない名前を生成します。

AUTOSAR ソフトウェア コンポーネントをインポートする場合、無名の struct に対応するデータ型の名前がパラメーター構造体内に含まれると、そのデータ型は struct に設定されます。ただし、この無名 struct データ型を参照するデータ要素がコンポーネントにある場合、ソフトウェアはエラーを生成します。

データ型

AUTOSAR 規格では、基本データ型が実装データ型とアプリケーション データ型にマッピングされる、AUTOSAR データ型のアプローチを定義しています。アプリケーション データ型と実装データ型は、アプリケーションレベルの物理属性を実装レベルの属性と分離します。アプリケーションレベルの物理属性の例には、実際値の範囲、データ構造、物理セマンティクスがあります。実装レベルの属性の例には、格納される整数の最小値と最大値や AUTOSAR プラットフォーム型の指定 (整数、論理値、実数など) があります。

Simulink で作成されたトップダウンのラウンドトリップ ワークフローで AUTOSAR データ型がサポートされます。

  • Simulink で作成された AUTOSAR コンポーネントに対しては、AUTOSAR アプリケーション データ型、実装データ型、および基本データ型が生成され、Simulink のデータ型に含まれている情報が保持されます。

    Simulink で作成されたコンポーネント用に作成された AUTOSAR パッケージ構造では次のようになります。

    • アプリケーションのデータ型、ソフトウェアの基本データ型、データ型マッピング セット、システム定数、単位などのデータ型に関連する要素を集約するために別のパッケージを指定できます。

    • 実装データ型はメイン データ型パッケージに集約されます。

    詳細については、AUTOSAR パッケージの構成を参照してください。

  • MATLAB® 以外で作成された AUTOSAR コンポーネントを含むトップダウンのラウンドトリップ ワークフローでは、ARXML インポーターおよびエクスポーターによって、インポートされた AUTOSAR データ型ごとにそのデータ型マッピング セット内にデータ型とマッピングの情報が保持されます。

AUTOSAR アプリケーション データ型と Simulink データ型間のマッピング値の制約については、アプリケーション データ型の物理制約マッピングを参照してください。

AUTOSAR データ型が Simulink で作成されている場合、データ型のエクスポートの一部を制御することができます。たとえば、アプリケーション データ型が生成されるタイミングや、AUTOSAR データ型マッピング セットにエクスポートされる AUTOSAR パッケージと省略名を指定できます。

詳細については、AUTOSAR データ型のエクスポートの設定を参照してください。

Simulink で作成されたワークフローの AUTOSAR データ型

Simulink で作成されたワークフロー (ボトムアップ) では、Simulink モデルを作成し、AUTOSAR ソフトウェア コンポーネントとしてエクスポートできます。

ソフトウェアはアプリケーション データ型、実装データ型、基本データ型を生成し、Simulink データ型に含まれる情報を保存します。

  • Simulink データ型には、実装データ型が生成されます。

  • 実装データ型だけでなく、COMPU-METHOD-REF 要素によってそれぞれの固定小数点型にアプリケーション データ型が生成され、スケールとバイアス情報が保存されます。このアプリケーション データ型は実装データ型にマッピングされます。

  • それぞれの Simulink.ValueType オブジェクトに対して、Simulink.ValueType オブジェクトで指定されている次元、最小値、最大値などのプロパティを反映したアプリケーション データ型が生成されます。このアプリケーション データ型は実装データ型にマッピングされます。

メモ

参照モデルからのアプリケーション データ型はサポートされません。

Simulink データ型AUTOSAR XML
実装型アプリケーション型

myInt16 などのプリミティブ (固定小数点を除く)

論理値、整数、実数が含まれる

myInt16 = Simulink.AliasType;
myInt16.BaseType = "int16";
<IMPLEMENTATION-DATA-TYPE>
<SHORT-NAME>myInt16</SHORT-NAME>
<CATEGORY>VALUE</CATEGORY>
…
生成されない

myFixPt などのプリミティブ (固定小数点)

myFixPt = Simulink.NumericType;
myFixPt.DataTypeMode = …;
myFixPt.IsAlias = true;
<IMPLEMENTATION-DATA-TYPE>
<SHORT-NAME>myFixPt</SHORT-NAME>
<CATEGORY>VALUE</CATEGORY>
…
<APPLICATION-PRIMITIVE-DATA-TYPE>
<SHORT-NAME>myFixPt</SHORT-NAME>
<COMPU-METHOD-REF>…

myEnum などの列挙型

Simulink.defineIntEnumType("myEnum",...
 {"Red","Green","Blue"},...
 [1;2;3],…);
<IMPLEMENTATION-DATA-TYPE>
<SHORT-NAME>myEnum</SHORT-NAME>
<CATEGORY>VALUE</CATEGORY>
<COMPU-METHOD>…
生成されない

myRecord などのレコード

myRecord = Simulink.Bus;
<IMPLEMENTATION-DATA-TYPE>
<SHORT-NAME>myRecord</SHORT-NAME>
<CATEGORY>STRUCT</CATEGORY>
…
生成されない

EngSpeed などの値の型

EngSpeed = Simulink.ValueType;
EngSpeed.Min = 0;
EngSpeed.Max = 65535;
EngSpeed.DataType = "uint32";
<IMPLEMENTATION-DATA-TYPE>
<SHORT-NAME>uint32</SHORT-NAME>
<CATEGORY>VALUE</CATEGORY>
…
<APPLICATION-PRIMITIVE-DATA-TYPE>
<SHORT-NAME>EngSpeed</SHORT-NAME>
<COMPU-METHOD-REF>…
<DATA-CONSTR-REF>…
…

ラウンドトリップ ワークフローの AUTOSAR データ型

ラウンドトリップ ワークフローでは、まず AUTOSAR オーサリング ツールで生成された XML 記述を使用して、AUTOSAR ソフトウェア コンポーネントをモデルにインポートします。詳細については、Simulink への AUTOSAR XML 記述のインポートを参照してください。その後、モデルから AUTOSAR C および XML コードを生成できます。

データ プロトタイプがアプリケーション データ型を参照する場合、アプリケーションはモデル内の実装データ型マッピングに保存され、作成される Simulink データ型をアプリケーション データ型の名前を使用して定義します。

たとえば、次の表の省略名 myFixPt のプリミティブ アプリケーション データ型について考えてみます。これは固定小数点データ型であるため、プリミティブ アプリケーション データ型の省略名と一致する myFixPt という名前の Simulink.NumericType オブジェクトが Simulink で生成されます。

AUTOSAR XMLSimulink データ型
アプリケーション型実装型
<APPLICATION-PRIMITIVE-DATA-TYPE>
<SHORT-NAME>myFixPt</SHORT-NAME>
<COMPU-METHOD-REF>…
<IMPLEMENTATION-DATA-TYPE>
<SHORT-NAME>uint32</SHORT-NAME>
…
myFixPt = Simulink.NumericType;
myFixPt.DataTypeMode = …;
myFixPt.IsAlias = true;

複合データ型に含まれる AUTOSAR データ型については、インポート時に明示的なデータ型マッピングから暗黙的なデータ型マッピングが導出されます。単一のソフトウェア コンポーネントのスコープ内で、アプリケーション データ型はいずれも 1 つの実装データ型にのみマッピングできます。

データ プロトタイプが実装データ型を参照する場合、マッピング情報は保存されず、実装データ型の名前を使用して Simulink データ型を定義します。

シミュレーションではアプリケーション データ型が、コード生成では実装データ型が使用されます。AUTOSAR ソフトウェア コンポーネントを再エクスポートすると、保存された情報を使用して、エクスポートされたアプリケーションおよび実装データ型に同じマッピングを提供します。ソフトウェアによって作成された暗黙的なデータ型マッピングは生成コードには含まれません。

AUTOSAR データ型のインポート時、対応する Simulink データ型がインポーターによって作成されます。

  • プリミティブ AUTOSAR データ型に対しては Simulink.AliasType オブジェクトが作成されます。ただし、ルックアップ テーブルと組み込みデータ型 (整数と浮動小数点) に対応しない AUTOSAR データ型は除きます。

  • 標準以外の語長をもつ固定小数点型または整数型を表す AUTOSAR データ型に対しては Simulink.NumericType オブジェクトが作成されます。語長と符号属性はデータ型制約および基本データ型から継承されます。

  • 複合データ型に対しては Simulink.Bus オブジェクト (structs) が作成されます。

アプリケーション データ型の物理制約マッピング

AUTOSAR に設定されたモデルでは、ソフトウェアは Simulink データの最小値と最大値を AUTOSAR アプリケーション データ型に対応する物理制約値にマッピングします。

  • ARXML ファイルをインポートする場合、ARXML ファイル内のアプリケーション データ型の PhysConstr 値は、対応する Simulink データ オブジェクトの Min および Max 値とルートレベル I/O 信号にインポートされます。

  • ARXML ファイルをモデルからエクスポートする場合、Simulink データ オブジェクトに指定された Min および Max 値とルートレベル I/O 信号は ARXML ファイル内の対応するアプリケーション データ型の PhysConstr にエクスポートされます。

  • Min および Max が指定されていない Simulink データ型は、全範囲の制約をもつ AUTOSAR アプリケーション データ型に対応します。次に例を示します。

    • インポート時に、アプリケーション データ型の PhysConstr 値が関連する実装データ型の InternalConstr の下限および上限と完全に一致する場合、インポーターは Simulink の Min 値および Max 値を [ ] に設定します。このような場合、Simulink は、型に基づいて既定の下限および上限を暗黙的に適用します。

    • エクスポート時に、Simulink の型の Min 値および Max 値が [ ] である場合、ソフトウェアはその型の既定の下限値および上限値 (たとえば、boolean 基本データ型の場合は 0 および 1) を ARXML PhysConstr 記述にエクスポートします。

データ型の CompuMethod カテゴリ

AUTOSAR ソフトウェア コンポーネントは計算方法 (CompuMethod) を使用して AUTOSAR データの内部値と物理表現の間の変換を行います。CompuMethod の一般的な使用方法は、線形データ スケーリング、キャリブレーション、および測定です。

CompuMethod の category 属性は CompuMethod の特殊化を表し、これによりセマンティクスの制約が適用される場合があります。コード ジェネレーターによって生成される CompuMethod カテゴリには、次のものがあります。

  • BITFIELD_TEXTTABLE — 内部値をビットフィールド テキスト要素に変換します。

  • IDENTICAL — 内部値と物理値が同一であり、変換する必要のない浮動小数点または整数関数。

  • LINEAR — 内部値の線形変換。たとえば、内部値を係数で乗算し、オフセットを加算します。

  • RAT_FUNC — 有理関数。線形変換に類似していますが、有理関数に固有の変換の制限があります。

  • SCALE_LINEAR_AND_TEXTTABLELINEAR および TEXTTABLE のスケーリング仕様の組み合わせです。

  • TEXTTABLE — 内部値をテキスト要素に変換します。

ARXML エクスポーターはすべてのプリミティブ アプリケーション データ型に CompuMethod を生成し、キャリブレーション ツールと測定ツールを使用したアプリケーション データの監視と操作を可能にします。

メモ

複数の Simulink 列挙で同じ CompuMethod を参照することはできません。

次の表に、AUTOSAR に設定されるモデルで、コード ジェネレーターがデータ型に生成する CompuMethod カテゴリを示します。

データ型CompuMethod カテゴリアプリケーション データ型の CompuMethod実装データ型の CompuMethod
ビットフィールドBITFIELD_TEXTTABLEありあり
booleanTEXTTABLEありあり
ストレージ型なしまたは NativeInteger 型の列挙TEXTTABLEありあり
ストレージ型のある列挙TEXTTABLEありなし
固定小数点LINEAR
RAT_FUNC (逆数スケーリングに限定)
SCALE_LINEAR_AND_TEXTABLE
ありなし
浮動小数点IDENTICAL
SCALE_LINEAR_AND_TEXTABLE
ありなし
整数IDENTICAL
SCALE_LINEAR_AND_TEXTABLE
ありなし

列挙データ型の場合、ARXML インポーター ツールは AUTOSAR 規格に従って、CompuMethod カテゴリ TEXTTABLE を以下の値に設定します。

  1. シンボルの属性の値 (存在する場合)。

  2. VT 値 (有効な C 識別子である場合)。

  3. shortLabel の値。

内部値と物理値の間での変換を必要としない浮動小数点と整数データ型の場合、エクスポーターはカテゴリ IDENTICAL と短縮名 Identcl を含めた汎用型の CompuMethod を生成します。

コード生成用の CompuMethod の作成と構成の詳細については、AUTOSAR CompuMethod の設定を参照してください。

関連する例

詳細