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

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

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

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

Например, вот модель компонента 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, выполняемых и выполняемых доступов к внешним данным.

    <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) и Вариантные системы.

См. также

| |

Похожие примеры

Подробнее о