exponenta event banner

Настройка вариантов для исполняемых реализаций AUTOSAR

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

  • Для представления реализаций вариантов подсистемы или модели и определения логики условий вариантов используйте блок «Подсистема вариантов».

  • Для моделирования системных констант 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;

Диалоговое окно Блок подсистемы вариантов определяет логику условий вариантов, которая основана на значении системной константы. Можно указать выражение или 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>
  • В коде C, совместимом с RTE, короткие имена c0 и c1 кодируются в именах символов препроцессора, используемых в логике условия варианта. Например:

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

См. также

|

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

Подробнее