Main Content

AUTOSAR 要素のバリアントの設定

AUTOSAR ソフトウェア コンポーネントは VariationPoint 要素を使用して、定義された条件に基づき、ポートやランナブルなどの AUTOSAR 要素を有効または無効にすることができます。Simulink® で、AUTOSAR ポートとランナブルを有効または無効にするバリアントを設定するには、次のようにします。

  • Variant SinkブロックとVariant Sourceブロックを使用し、バリアント条件ロジックを定義してバリアント条件を伝播します。

  • ストレージ クラスが SystemConstant AUTOSAR.Parameter データ オブジェクトを使用し、AUTOSAR システム定数をモデル化します。システム定数はポートとランナブルを有効または無効にする条件値を表します。

open_system('mAutosarInlineVariant.slx');

autosar_inlinevar_model.png

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

詳細については、バリアント システムを参照してください。

参考

| |

関連する例

詳細