Сконфигурируйте варианты для реализации AUTOSAR Runnable

Чтобы изменить реализацию AUTOSAR, программные компоненты AUTOSAR могут задавать логику исполнения условия внутри runnable. В Simulink®, чтобы смоделировать логику условий варианта внутри runnable:

  • Чтобы представлять варианты реализации подсистемы или модели и задать логику условий варианта, используйте блок 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

См. также

|

Похожие примеры

Подробнее о