AUTOSAR 要素のバリアントの設定
AUTOSAR ソフトウェア コンポーネントは VariationPoint
要素を使用して、定義された条件に基づき、ポートやランナブルなどの AUTOSAR 要素を有効または無効にすることができます。Simulink® で、AUTOSAR ポートとランナブルを有効または無効にするバリアントを設定するには、次のようにします。
Variant SinkブロックとVariant Sourceブロックを使用し、バリアント条件ロジックを定義してバリアント条件を伝播します。
ストレージ クラスが
SystemConstant
のAUTOSAR.Parameter
データ オブジェクトを使用し、AUTOSAR システム定数をモデル化します。システム定数はポートとランナブルを有効または無効にする条件値を表します。
open_system('mAutosarInlineVariant.slx');
AUTOSAR システム定数をモデル化するために、このモデルは AUTOSAR.Parameter
データ オブジェクト SysConA
を定義します。
SysConA = AUTOSAR.Parameter; SysConA.CoderInfo.StorageClass = 'Custom'; SysConA.CoderInfo.CustomStorageClass = 'SystemConstant'; SysConA.DataType = 'int32'; SysConA.Value = 1;
各 Variant Source ブロックまたは Variant Sink ブロックは、システム定数値を基にしたバリアント条件ロジックを定義します。式または式が含まれるSimulink.VariantExpression
オブジェクトを指定できます。Variant Source
ブロックの RunnableStepVP
のバリアント条件ロジックは次のとおりです。
モデルのコードを生成すると、次のようになります。
エクスポートされた ARXML コードに変動点プロキシと変動点の定義が含まれます。この例では、
VARIATION-POINT-PROXY
エントリは生成された C コードで参照される省略名c0
をもちます。SysConA
は関連付けられた条件値を表すシステム定数として表示されます。
<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">/mInlineVariant_pkg/mInlineVariant_dt/SystemConstants/SysConA</SYSC-REF> == 0 || <SYSC-REF DEST="SW-SYSTEMCONST">/mInlineVariant_pkg/mInlineVariant_dt/SystemConstants/SysConA</SYSC-REF> == 1</CONDITION-ACCESS> </VARIATION-POINT-PROXY> </VARIATION-POINT-PROXYS>
VARIATION-POINT
エントリは、AUTOSAR ポート、ランナブル、および外部データへのランナブル アクセスに対して表示されます。
<R-PORT-PROTOTYPE UUID="..."> <SHORT-NAME>In1</SHORT-NAME> <VARIATION-POINT> <SHORT-LABEL>In1_a3VP</SHORT-LABEL> <SW-SYSCOND BINDING-TIME="PRE-COMPILE-TIME"> <SYSC-REF DEST="SW-SYSTEMCONST">/mInlineVariant_pkg/mInlineVariant_dt/SystemConstants/SysConA</SYSC-REF> == 0 || <SYSC-REF DEST="SW-SYSTEMCONST">/mInlineVariant_pkg/mInlineVariant_dt/SystemConstants/SysConA</SYSC-REF> == 1</SW-SYSCOND> </VARIATION-POINT> ... </R-PORT-PROTOTYPE>
RTE 互換の C コードの中で、省略名
c0
は、バリアント条件のロジック内で使用されるプリプロセッサ シンボルの名前にエンコードされます。次に例を示します。
#if Rte_SysCon_c0 ... #endif
詳細については、バリアント システムを参照してください。
参考
AUTOSAR.Parameter
| Variant Sink | Variant Source
関連する例
詳細
- バリアント システム (Simulink Coder)
- システム定数