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