このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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 プラットフォーム型 |
---|---|---|
boolean | Boolean | boolean |
single | Float | float32 |
double | Double | float64 |
int8 | SInt8 | sint8 |
int16 | SInt16 | sint16 |
int32 | SInt32 | sint32 |
int64 | SInt64 | sint64 |
uint8 | UInt8 | uint8 |
uint16 | UInt16 | uint16 |
uint32 | UInt32 | uint32 |
uint64 | UInt64 | uint64 |
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 = Simulink.AliasType;
myInt16.BaseType = "int16"; | <IMPLEMENTATION-DATA-TYPE> <SHORT-NAME>myInt16</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> … | 生成されない |
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>… |
Simulink.defineIntEnumType("myEnum",... {"Red","Green","Blue"},... [1;2;3],…); | <IMPLEMENTATION-DATA-TYPE> <SHORT-NAME>myEnum</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> <COMPU-METHOD>… | 生成されない |
myRecord = Simulink.Bus; | <IMPLEMENTATION-DATA-TYPE> <SHORT-NAME>myRecord</SHORT-NAME> <CATEGORY>STRUCT</CATEGORY> … | 生成されない |
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 XML | Simulink データ型 | |
---|---|---|
アプリケーション型 | 実装型 | |
<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
) を ARXMLPhysConstr
記述にエクスポートします。
データ型の CompuMethod カテゴリ
AUTOSAR ソフトウェア コンポーネントは計算方法 (CompuMethod) を使用して AUTOSAR データの内部値と物理表現の間の変換を行います。CompuMethod の一般的な使用方法は、線形データ スケーリング、キャリブレーション、および測定です。
CompuMethod の category
属性は CompuMethod の特殊化を表し、これによりセマンティクスの制約が適用される場合があります。コード ジェネレーターによって生成される CompuMethod
カテゴリには、次のものがあります。
BITFIELD_TEXTTABLE
— 内部値をビットフィールド テキスト要素に変換します。IDENTICAL
— 内部値と物理値が同一であり、変換する必要のない浮動小数点または整数関数。LINEAR
— 内部値の線形変換。たとえば、内部値を係数で乗算し、オフセットを加算します。RAT_FUNC
— 有理関数。線形変換に類似していますが、有理関数に固有の変換の制限があります。SCALE_LINEAR_AND_TEXTTABLE
—LINEAR
およびTEXTTABLE
のスケーリング仕様の組み合わせです。TEXTTABLE
— 内部値をテキスト要素に変換します。
ARXML エクスポーターはすべてのプリミティブ アプリケーション データ型に CompuMethod を生成し、キャリブレーション ツールと測定ツールを使用したアプリケーション データの監視と操作を可能にします。
メモ
複数の Simulink 列挙で同じ CompuMethod を参照することはできません。
次の表に、AUTOSAR に設定されるモデルで、コード ジェネレーターがデータ型に生成する CompuMethod カテゴリを示します。
データ型 | CompuMethod カテゴリ | アプリケーション データ型の CompuMethod | 実装データ型の CompuMethod |
---|---|---|---|
ビットフィールド | BITFIELD_TEXTTABLE | あり | あり |
boolean | TEXTTABLE | あり | あり |
ストレージ型なしまたは NativeInteger 型の列挙 | TEXTTABLE | あり | あり |
ストレージ型のある列挙 | TEXTTABLE | あり | なし |
固定小数点 | LINEAR RAT_FUNC (逆数スケーリングに限定)SCALE_LINEAR_AND_TEXTABLE | あり | なし |
浮動小数点 | IDENTICAL SCALE_LINEAR_AND_TEXTABLE | あり | なし |
整数 | IDENTICAL SCALE_LINEAR_AND_TEXTABLE | あり | なし |
列挙データ型の場合、ARXML インポーター ツールは AUTOSAR 規格に従って、CompuMethod カテゴリ TEXTTABLE
を以下の値に設定します。
シンボルの属性の値 (存在する場合)。
VT
値 (有効な C 識別子である場合)。shortLabel
の値。
内部値と物理値の間での変換を必要としない浮動小数点と整数データ型の場合、エクスポーターはカテゴリ IDENTICAL
と短縮名 Identcl
を含めた汎用型の CompuMethod を生成します。
コード生成用の CompuMethod の作成と構成の詳細については、AUTOSAR CompuMethod の設定を参照してください。
関連する例
- 生成されたコードにおける構造体へのデータの整理 (Embedded Coder)
- AUTOSAR データ型のエクスポートの設定
- AUTOSAR データ型の自動生成
- AUTOSAR CompuMethod の設定