Чтобы варьироваться реализация выполнимого, AUTOSAR AUTOSAR, компоненты программного обеспечения могут задать различную логику условия в выполнимом. В Simulink®, чтобы смоделировать различную логику условия в выполнимом:
Чтобы представлять различные реализации подсистемы или модели и логики условия варианта define, используйте блок Variant Subsystem.
К системным константам модели AUTOSAR используйте AUTOSAR.Parameter
объекты данных с классом памяти SystemConstant
. Системные константы представляют значения условия, которые определяют активную подсистему или реализацию модели.
Например, вот модель компонента AUTOSAR, которая содержит блок Variant Subsystem, который модели две различных реализации подсистемы. Можно открыть модель от
.matlabroot
/help/toolbox/autosar/examples/mAutosarVariantSubsystem.slx
Варианты являются подсистемами VAR1 и VAR2. Блоки не соединяются, потому что возможность соединения определяется в процессе моделирования, на основе активного варианта.
Чтобы смоделировать постоянную систему AUTOSAR, модель задает AUTOSAR.Parameter
объект данных rainSensor
:
rainSensor = AUTOSAR.Parameter; rainSensor.CoderInfo.StorageClass = 'Custom'; rainSensor.CoderInfo.CustomStorageClass = 'SystemConstant'; rainSensor.DataType = 'uint8'; rainSensor.Value = 2;
Диалоговое окно блока Variant Subsystem задает различную логику условия, которая основана на системном постоянном значении. Можно задать выражение или Simulink.Variant
объект, содержащий выражение.
Когда вы генерируете код для модели:
В коде ARXML варианты появляются как VARIATION-POINT-PROXY
записи с краткими названиями c0
и c1
. rainSensor
появляется как система постоянное представление связанного значения условия. Например:
<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">/vss_pkg/vss_dt/SystemConstants/rainSensor</SYSC-REF> == 1</CONDITION-ACCESS> </VARIATION-POINT-PROXY> <VARIATION-POINT-PROXY UUID="..."> <SHORT-NAME>c1</SHORT-NAME> <CATEGORY>CONDITION</CATEGORY> <CONDITION-ACCESS BINDING-TIME="PRE-COMPILE-TIME"> <SYSC-REF DEST="SW-SYSTEMCONST">/vss_pkg/vss_dt/SystemConstants/rainSensor</SYSC-REF> == 2</CONDITION-ACCESS> </VARIATION-POINT-PROXY> </VARIATION-POINT-PROXYS>
В совместимом коде С RTE, краткие названия c0
и c1
закодированы на имена символов препроцессора, используемых в различной логике условия. Например:
#if Rte_SysCon_c0 ... #elif Rte_SysCon_c1 ... #endif
AUTOSAR.Parameter
| Variant Subsystem