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 プラットフォーム型を参照してください。

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

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

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 データ型のアプローチを定義しています。アプリケーション データ型と実装データ型は、実際値の範囲、データ構造、物理セマンティクスなどのアプリケーションレベルの物理属性を、格納された整数の最小値と最大値やプリミティブ型の指定 (整数、論理値、実数など) などの実装レベルの属性と分離します。

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

  • AUTOSAR コンポーネントが Simulink で作成されている場合、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>EngSpeed</SHORT-NAME>
<CATEGORY>VALUE</CATEGORY>
…
<APPLICATION-PRIMITIVE-DATA-TYPE>
<SHORT-NAME>EngSpeed</SHORT-NAME>
<COMPU-METHOD-REF>…
<DATA-CONSTR-REF>…
…

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

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

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

たとえば、オーサリング ツールがアプリケーション データ型を指定するとします。

ApplDT1

この場合、ソフトウェアは以下の Simulink データ型を定義します。

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

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

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

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

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

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

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

  • Min および Max が指定されていない Simulink データ型は、全範囲の制約をもつ AUTOSAR ApplicationDataType に対応します。以下に例を示します。

    • インポート時に、ApplicationDataType にある PhysConstr 値が関連する ImplementationDataTypeInternalConstr の下限および上限と完全に一致する場合、インポーターは 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 を生成し、キャリブレーション ツールと測定ツールを使用したアプリケーション データの監視と操作を可能にします。次の表に、AUTOSAR に設定されるモデルで、コード ジェネレーターがデータ型に生成する CompuMethod カテゴリを示します。

データ型CompuMethod カテゴリアプリケーション型の CompuMethod実装型の CompuMethod
ビットフィールドBITFIELD_TEXTTABLEありあり
booleanTEXTTABLEありあり
ストレージ型なしの列挙型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 の設定を参照してください。

関連する例

詳細