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 プラットフォーム型Simulink データ型
booleanboolean
float32single
float64double
sint8int8
sint16int16
sint32int32
sint64int64
uint8uint8
uint16uint16
uint32uint32
uint64uint64

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

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

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

データ要素のデータ型とオペレーションのプロトタイプの引数を指定するには、[Data Type] 列でドロップダウン リストを使用します。[boolean][single]、または [int8] などの Simulink 組み込みデータ型を指定することも、データ型の式 (エイリアス) を入力することもできます。例として、次の図に、[Data Type] 列で 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 データ型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>
…
生成されない

ラウンドトリップ ワークフローの 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 の設定を参照してください。

関連する例

詳細