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

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

  • Используйте Различный Приемник и Различные Исходные блоки, чтобы задать различную логику условия и распространить различные условия.

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

Например, вот модель, которая содержит два Различных Исходных блока и блок 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, содержащий выражение. Вот является различная логика условия для Различного Исходного блока 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).

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

| |

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

Больше о