Компоненты программного обеспечения 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).
AUTOSAR.Parameter
| Различный приемник | Различный источник