Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

AUTOSAR ポートとランナブルのバリアントの設定

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

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

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

たとえば、2 つの Variant Source ブロックと 1 つの Variant Sink ブロックが含まれる次のような AUTOSAR コンポーネント モデルがあります。このモデルは matlabroot/help/toolbox/autosar/examples/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.Variant オブジェクトを指定できます。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

詳細については、バリアント システム (Embedded Coder)およびバリアント システムを参照してください。

参考

| |

関連する例

詳細