exponenta event banner

Настройка адаптивных программных компонентов AUTOSAR

В Simulink ® можно гибко моделировать структуру и поведение программных компонентов адаптивной платформы AUTOSAR. Адаптивная платформа AUTOSAR определяет сервисно-ориентированную архитектуру для автомобильных компонентов, которая должна гибко адаптироваться к внешним событиям и условиям.

Адаптивный программный компонент AUTOSAR предоставляет и потребляет услуги. Каждый программный компонент содержит:

  • Автомобильный алгоритм, выполняющий задачи в ответ на полученные события.

  • Требуемые и предоставляемые порты, каждый из которых связан с сервисным интерфейсом.

  • Сервисные интерфейсы со связанными событиями и связанными пространствами имен.

Дополнительные сведения см. в разделе Адаптивные программные компоненты модели AUTOSAR.

В этом примере настраивается представление Simulink автомобильного алгоритма в качестве адаптивного программного компонента AUTOSAR. Шаги конфигурирования используют примеры моделей LaneGuidance и autosar_LaneGuidance.

  1. Откройте модель Simulink, которая пуста или содержит функциональный алгоритм. В этом примере используется модель алгоритма ERT LaneGuidance.

  2. В диалоговом окне «Параметры конфигурации модели» на панели «Создание кода» настройте модель для адаптивного создания кода AUTOSAR. Задать для целевого файла системы значение autosar_adaptive.tlc. Примените изменение.

    Новая настройка влияет на другие настройки модели. Например, выбор целевого файла:

    • Задает язык для C++.

    • Выбирает Только генерировать код.

    • Задание для цепочки инструментов значения AUTOSAR Adaptive | CMake.

    • Установка для интерфейса > упаковки интерфейса кода значения C++ class.

  3. Разработка алгоритмического содержания модели для использования в адаптивном программном компоненте AUTOSAR. Если модель пуста, создайте или скопируйте в алгоритм. Возможные источники алгоритмов включают алгоритмические элементы в других моделях Simulink. Примеры включают подсистемы, ссылочные модели, функциональные блоки MATLAB и блоки вызывающего абонента C.

  4. На верхнем уровне модели настройте связь на основе событий, которая требуется адаптивной платформе AUTOSAR для требуемых и предоставляемых портов AUTOSAR. Блок AUTOSAR предоставляет блоки получения и отправки событий для создания необходимых соединений события/сигнала.

    • После каждого корневого входа добавьте блок приема событий, который преобразует входное событие в сигнал с сохранением значений сигнала и типа данных.

    • Перед каждым корневым портом добавьте блок отправки событий, который преобразует входной сигнал в событие с сохранением значений сигнала и типа данных.

    Примечание

    Можно также пропустить этот шаг. Более поздний шаг предоставляет готовую сопоставленную модель с включенными блоками преобразования событий.

    Вот пример модели LaneGuidance с добавленными и подключенными блоками событий.

  5. Сопоставьте модель алгоритма с адаптивным программным компонентом AUTOSAR.

    1. Чтобы сопоставить модель алгоритма, на вкладке Приложения щелкните Конструктор компонентов AUTOSAR. В этом примере открывается окно быстрого запуска компонента AUTOSAR, так как модель не сопоставлена. В противном случае, чтобы отобразить информацию алгоритма, можно щелкнуть элемент управления перспективой в правом нижнем углу и выбрать Код, или использовать API для вызова функции MATLAB ®autosar.api.create(modelName).

    2. Проработать процедуру быстрого запуска. Нажмите кнопку Готово (Finish), чтобы сопоставить модель.

    3. Модель откроется в ракурсе Код AUTOSAR (AUTOSAR Code). Перспектива отображает сопоставление элементов Simulink с элементами адаптивных программных компонентов AUTOSAR и словарем AUTOSAR, который содержит элементы адаптивных компонентов AUTOSAR со свойствами по умолчанию.

  6. По завершении шагов адаптивной конфигурации сохраните модель адаптивного программного компонента AUTOSAR с уникальным именем.

    Если какие-либо шаги пропущены, откройте пример готового сопоставленного адаптивного программного компонента AUTOSAR, например модель autosar_LaneGuidance.

  7. Используя ракурс кода AUTOSAR и словарь AUTOSAR (или эквивалентные функции отображения и свойств AUTOSAR), уточните конфигурацию адаптивной модели AUTOSAR.

    • В окне модели проверьте данные модели, чтобы убедиться в необходимости внесения корректировок после сопоставления с типами или другими атрибутами. Например, убедитесь, что данные события настроены правильно для вашего проекта.

    • В ракурсе «Код AUTOSAR» изучите сопоставление входов и выходов Simulink с требуемыми и предоставленными портами и событиями AUTOSAR.

    • Чтобы открыть словарь AUTOSAR, выберите его и нажмите кнопку AUTOSAR Dictionary. Словарь открывается в представлении соответствующего сопоставленного порта AUTOSAR.

      Выберите порт для настройки его атрибутов AUTOSAR, таких как атрибуты манифеста или, для необходимых портов, режим обнаружения службы.

    • В словаре можно развернуть узлы сервисного интерфейса для проверки событий AUTOSAR, созданных отображением компонентов по умолчанию.

    • В словаре можно определить уникальное пространство имен для каждого сервисного интерфейса. Пример модели autosar_LaneGuidance определяет пространства имен company::chassis::provided и company::chassis::required для соответствующих интерфейсов услуг. При построении модели сгенерированный код C++ использует пространства имен интерфейса службы.

    • В словаре в представлении параметров XML можно настроить характеристики экспортированного AUTOSAR XML. Для создания компактного кода, пример модели autosar_LaneGuidance устанавливает параметр XML Экспортированная упаковка XML-файлов в Single file. В диалоговом окне Параметры конфигурации модели (Model Configuration Parameters) в примере модели для параметра Размещение кода (Code Placement) > Формат упаковки файлов (File packaging format) задано значение Compact.

  8. Создайте модель адаптивного программного компонента AUTOSAR. Например, в окне модели введите Ctrl + B. При построении модели генерируются:

    • Файлы C++, реализующие алгоритмы модели для адаптивной платформы AUTOSAR и предоставляющие общие определения типов данных.

    • Описания AUTOSAR XML адаптивного программного компонента AUTOSAR и информация манифеста для развертывания приложения и конфигурации службы.

    • Файлы C++, реализующие основной программный модуль.

    • Файлы заголовков среды адаптивной среды выполнения AUTOSAR (ARA).

    • CMakeLists.txt файл, поддерживающий создание исполняемых файлов с помощью CMake.

Созданные файлы моделей C++ включают определения классов моделей и вызовы среды выполнения AUTOSAR для адаптивных приложений (ARA) для реализации служб адаптивных программных компонентов. Например, файл модели autosar_LaneGuidance.cpp содержит код инициализации для каждого сервисного интерфейса и события. Код отражает пространства имен интерфейса службы и имена событий, настроенные в словаре AUTOSAR.

// Model initialize function
void autosar_LaneGuidanceModelClass::initialize()
{
  {
    ara::com::ServiceHandleContainer< company::chassis::required::proxy::
      RequiredInterfaceProxy::HandleType > handles;
    handles = company::chassis::required::proxy::RequiredInterfaceProxy::
      FindService(ara::com::InstanceIdentifier("1"));
    if (handles.size() > 0U) {
      RequiredPort = std::make_shared< company::chassis::required::proxy::
        RequiredInterfaceProxy >(*handles.begin());

      // Subscribe event
      RequiredPort->leftLaneDistance.Subscribe(1U);
      RequiredPort->leftTurnIndicator.Subscribe(1U);
      RequiredPort->leftCarInBlindSpot.Subscribe(1U);
      RequiredPort->rightLaneDistance.Subscribe(1U);
      RequiredPort->rightTurnIndicator.Subscribe(1U);
      RequiredPort->rightCarInBlindSpot.Subscribe(1U);
    }

    ProvidedPort = std::make_shared< company::chassis::provided::skeleton::
      ProvidedInterfaceSkeleton >(ara::com::InstanceIdentifier("2"), ara::com::
      MethodCallProcessingMode::kPoll);
    ProvidedPort->OfferService();
  }
}

Файл модели autosar_LaneGuidance.cpp также содержит код шага для каждого события интерфейса службы. Например, код шага для RequiredInterface, событие rightCarInBlindSpot, вызывает функцию для извлечения и обработки новых rightCarInBlindSpot данные о событиях, полученные промежуточным программным обеспечением среды ARA (AUTOSAR Runtime Adaptive).

// Model step function
void autosar_LaneGuidanceModelClass::step()
{
...
if (RequiredPort) {
    leftLaneDistanceResultSharedPtr = std::make_shared< ara::core::Result<size_t>
      >(RequiredPort->rightCarInBlindSpot.GetNewSamples(std::move(std::bind
          (&autosar_LaneGuidanceModelClass::
           RequiredPortrightCarInBlindSpotReceive, this, std::placeholders::_1))));
    leftLaneDistanceResultSharedPtr->ValueOrThrow();
  }
...
}

Экспортированный XML-код AUTOSAR содержит описания элементов AUTOSAR, настроенных с помощью словаря AUTOSAR. Например, файл компонента autosar_LaneGuidance.arxml описывает пространства имен и события, указанные для требуемых и предоставляемых интерфейсов.

<SERVICE-INTERFACE UUID="...">
    <SHORT-NAME>RequiredInterface</SHORT-NAME>
    <NAMESPACES>
        <SYMBOL-PROPS>
            <SHORT-NAME>company</SHORT-NAME>
            <SYMBOL>company</SYMBOL>
        </SYMBOL-PROPS>
        <SYMBOL-PROPS>
            <SHORT-NAME>chassis</SHORT-NAME>
            <SYMBOL>chassis</SYMBOL>
        </SYMBOL-PROPS>
        <SYMBOL-PROPS>
            <SHORT-NAME>required</SHORT-NAME>
            <SYMBOL>required</SYMBOL>
        </SYMBOL-PROPS>
    </NAMESPACES>
    <EVENTS>
    ...
        <VARIABLE-DATA-PROTOTYPE UUID="...">
            <SHORT-NAME>rightCarInBlindSpot</SHORT-NAME>
            <CATEGORY>VALUE</CATEGORY>
            <SW-DATA-DEF-PROPS>
                <SW-DATA-DEF-PROPS-VARIANTS>
                    <SW-DATA-DEF-PROPS-CONDITIONAL>
                        <SW-CALIBRATION-ACCESS>READ-ONLY</SW-CALIBRATION-ACCESS>
                        <SW-IMPL-POLICY>QUEUED</SW-IMPL-POLICY>
                    </SW-DATA-DEF-PROPS-CONDITIONAL>
                </SW-DATA-DEF-PROPS-VARIANTS>
            </SW-DATA-DEF-PROPS>
            <TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">
                /LaneGuidance_pkg/LaneGuidance_dt/Double</TYPE-TREF>
        </VARIABLE-DATA-PROTOTYPE>
    </EVENTS>
</SERVICE-INTERFACE>

Созданный файл основной программы C++ обеспечивает структуру для запуска кода службы адаптивного компонента программного обеспечения. Для autosar_LaneGuidance модель, main.cpp файл:

  • Создает экземпляр объекта модели адаптивного программного компонента.

  • Сообщает адаптивное состояние приложения в ARA.

  • Вызывает функции инициализации и завершения модели.

  • Устанавливает асинхронные объекты вызова функций для каждой задачи.

  • Выполняет асинхронные вызовы функций в ответ на сообщения семафора с делениями базовой скорости.

См. также

|

Связанные примеры

Подробнее