主要内容

为 AUTOSAR 元素配置变体

AUTOSAR 软件组件可以使用 VariationPoint 元素根据定义的条件启用或禁用 AUTOSAR 元素,如端口和可运行实体。在 Simulink® 中,要配置启用或禁用 AUTOSAR 端口和可运行实体的变体,请执行以下操作:

  • 使用 Variant SinkVariant Source 模块定义变体条件逻辑并传播变体条件。

  • 使用存储类为 SystemConstant AUTOSAR.Parameter 数据对象对 AUTOSAR 系统常量进行建模。系统常量表示启用或禁用端口和可运行实体的条件值。

open_system('mAutosarInlineVariant.slx');

autosar_inlinevar_model.png

为了对 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.VariantExpression 对象。以下是 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 兼容的 C 代码中,短名称 c0 编码到变体条件逻辑中使用的预处理器符号名称中。例如:

#if Rte_SysCon_c0
...
#endif

有关详细信息,请参阅变体系统

另请参阅

| |

主题