Компоненты программного обеспечения 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) и Вариантные системы.
AUTOSAR.Parameter
| Variant Sink | Variant Source