为 AUTOSAR 元素配置变体
AUTOSAR 软件组件可以使用 VariationPoint 元素根据定义的条件启用或禁用 AUTOSAR 元素,如端口和可运行实体。在 Simulink® 中,要配置启用或禁用 AUTOSAR 端口和可运行实体的变体,请执行以下操作:
使用 Variant Sink 和 Variant Source 模块定义变体条件逻辑并传播变体条件。
使用存储类为
SystemConstant的AUTOSAR.Parameter数据对象对 AUTOSAR 系统常量进行建模。系统常量表示启用或禁用端口和可运行实体的条件值。
open_system('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.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
有关详细信息,请参阅变体系统。
另请参阅
AUTOSAR.Parameter | Variant Sink | Variant Source
主题
- Model AUTOSAR Variants
- 变体系统 (Simulink Coder)
- System Constants