Main Content

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

AUTOSAR ランナブル実装のバリアントの設定

AUTOSAR ランナブルの実装を変更するには、AUTOSAR ソフトウェア コンポーネントでランナブル内にバリアント条件ロジックを指定できます。Simulink® では、ランナブル内でバリアント条件ロジックをモデル化するには次を行います。

  • サブシステムまたはモデルのバリアント実装を表し、バリアント条件ロジックを定義するには Variant Subsystem ブロックを使用します。

  • AUTOSAR システム定数をモデル化するには、ストレージ クラスが [SystemConstant]AUTOSAR.Parameter データ オブジェクトを使用します。システム定数は、アクティブなサブシステムまたはモデル実装を決定する条件値を表します。

たとえば、サブシステムの 2 つのバリアント実装をモデル化する Variant Subsystem ブロックを含む AUTOSAR コンポーネント モデルを示します。このモデルは matlabroot/help/toolbox/autosar/examples/mAutosarVariantSubsystem.slx から開くことができます。

バリアントの選択はサブシステム 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.Variant オブジェクトを指定できます。

モデルのコードを生成すると、次のようになります。

  • ARXML コードの中で、バリアントの選択肢は省略名が c0 および c1VARIATION-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

参考

|

関連する例

詳細