AUTOSAR ランナブル実装のバリアントの設定
AUTOSAR ランナブルの実装を変更するには、AUTOSAR ソフトウェア コンポーネントでランナブル内にバリアント条件ロジックを指定できます。Simulink® では、ランナブル内でバリアント条件ロジックをモデル化するには次を行います。
サブシステムまたはモデルのバリアント実装を表し、バリアント条件ロジックを定義するにはVariant Subsystemブロックを使用します。
AUTOSAR システム定数をモデル化するには、ストレージ クラスが
SystemConstant
のAUTOSAR.Parameter
データ オブジェクトを使用します。システム定数は、アクティブなサブシステムまたはモデル実装を決定する条件値を表します。
たとえば、サブシステムの 2 つのバリアント実装をモデル化する Variant Subsystem ブロックを含む AUTOSAR コンポーネント モデルを示します。このモデルを開くには、MATLAB® コマンド ラインで次のコードを実行します。
open_system("mAutosarVariantSubsystem")
バリアントの選択はサブシステム VAR1 および VAR2 です。接続はシミュレーションの最中にアクティブなバリアントに基づいて決められるため、ブロックは接続されていません。
AUTOSAR システム定数をモデル化するために、このモデルは AUTOSAR.Parameter
データ オブジェクト rainSensor
を定義します。
rainSensor = AUTOSAR.Parameter; rainSensor.CoderInfo.StorageClass = 'Custom'; rainSensor.CoderInfo.CustomStorageClass = 'SystemConstant'; rainSensor.DataType = 'uint8'; rainSensor.Value = 2;
Variant Subsystem ブロック ダイアログ ボックスで、システム定数値を基にしたバリアント条件ロジックを定義します。式または式が含まれるSimulink.VariantExpression
オブジェクトを指定できます。
モデルのコードを生成すると、次のようになります。
ARXML コードの中で、バリアントの選択肢は省略名が c0 および c1 の VARIATION-POINT-PROXY エントリとして記述されます。
rainSensor
は関連付けられた条件値を表すシステム定数として記述されます。次に例を示します。
<VARIATION-POINT-PROXYS> <VARIATION-POINT-PROXY UUID="..."> <SHORT-NAME>c0</SHORT-NAME> <CATEGORY>CONDITION</CATEGORY> <CONDITION-ACCESS BINDING-TIME="PRE-COMPILE-TIME"> <SYSC-REF DEST="SW-SYSTEMCONST">/vss_pkg/vss_dt/SystemConstants/rainSensor</SYSC-REF> == 1</CONDITION-ACCESS> </VARIATION-POINT-PROXY> <VARIATION-POINT-PROXY UUID="..."> <SHORT-NAME>c1</SHORT-NAME> <CATEGORY>CONDITION</CATEGORY> <CONDITION-ACCESS BINDING-TIME="PRE-COMPILE-TIME"> <SYSC-REF DEST="SW-SYSTEMCONST">/vss_pkg/vss_dt/SystemConstants/rainSensor</SYSC-REF> == 2</CONDITION-ACCESS> </VARIATION-POINT-PROXY> </VARIATION-POINT-PROXYS>
RTE 互換の C コードの中で、省略名
c0
およびc1
は、バリアント条件のロジック内で使用されるプリプロセッサ シンボルの名前にエンコードされます。次に例を示します。
#if Rte_SysCon_c0 ... #elif Rte_SysCon_c1 ... #endif
参考
Variant Subsystem, Variant Model, Variant Assembly Subsystem | AUTOSAR.Parameter