Сконфигурируйте варианты для выполнимых реализаций AUTOSAR

Чтобы варьироваться реализация выполнимого, AUTOSAR AUTOSAR, компоненты программного обеспечения могут задать различную логику условия в выполнимом. В Simulink®, чтобы смоделировать различную логику условия в выполнимом:

  • Чтобы представлять различные реализации подсистемы или модели и логики условия варианта define, используйте блок Variant Subsystem.

  • К системным константам модели AUTOSAR использовать AUTOSAR.Parameter объекты данных с классом памяти SystemConstant. Системные константы представляют значения условия, которые определяют активную подсистему или реализацию модели.

Например, вот модель компонента AUTOSAR, которая содержит блок Variant Subsystem, который модели две различных реализации подсистемы. Можно открыть модель от 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 варианты появляются как VARIATION-POINT-PROXY записи с краткими названиями c0 и c1. 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, краткие названия c0 и c1 закодированы на имена символов препроцессора, используемых в различной логике условия. Например:

    #if Rte_SysCon_c0
    ...
    #elif Rte_SysCon_c1
    ...
    #endif

Смотрите также

|

Связанные примеры

Больше о