Сконфигурируйте варианты для Ports AUTOSAR и Runnables

Компоненты программного обеспечения AUTOSAR могут использовать VariationPoint элементы, чтобы включить или отключить элементы AUTOSAR, такие как порты и runnables, на основе заданных условий. В Simulink®, чтобы сконфигурировать варианты, которые включают или отключают порты AUTOSAR и runnables:

  • Используйте Variant Sink и блоки Variant Source к логике условия варианта define и распространите различные условия.

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

Например, вот модель компонента AUTOSAR, которая содержит два блока Variant Source и блок Variant Sink. Можно открыть модель от 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 запись имеет краткое название c0, на который ссылаются в сгенерированном коде C. 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, runnables, и выполнимых доступов к внешним данным.

    <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, краткое название c0 закодирован на имена символов препроцессора, используемых в различной логике условия. Например:

    #if Rte_SysCon_c0
    ...
    #endif

Для получения дополнительной информации смотрите Вариантные системы (Embedded Coder) и Вариантные системы (Simulink).

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

| |

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

Больше о