В Simulink ® можно гибко моделировать структуру и поведение программных компонентов адаптивной платформы AUTOSAR. Адаптивная платформа AUTOSAR определяет сервисно-ориентированную архитектуру для автомобильных компонентов, которая должна гибко адаптироваться к внешним событиям и условиям.
Адаптивный программный компонент AUTOSAR предоставляет и потребляет услуги. Каждый программный компонент содержит:
Автомобильный алгоритм, выполняющий задачи в ответ на полученные события.
Требуемые и предоставляемые порты, каждый из которых связан с сервисным интерфейсом.
Сервисные интерфейсы со связанными событиями и связанными пространствами имен.
Дополнительные сведения см. в разделе Адаптивные программные компоненты модели AUTOSAR.
В этом примере настраивается представление Simulink автомобильного алгоритма в качестве адаптивного программного компонента AUTOSAR. Шаги конфигурирования используют примеры моделей LaneGuidance и autosar_LaneGuidance.
Откройте модель Simulink, которая пуста или содержит функциональный алгоритм. В этом примере используется модель алгоритма ERT LaneGuidance.

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

Новая настройка влияет на другие настройки модели. Например, выбор целевого файла:
Задает язык для C++.
Выбирает Только генерировать код.
Задание для цепочки инструментов значения AUTOSAR Adaptive | CMake.
Установка для интерфейса > упаковки интерфейса кода значения C++ class.
Разработка алгоритмического содержания модели для использования в адаптивном программном компоненте AUTOSAR. Если модель пуста, создайте или скопируйте в алгоритм. Возможные источники алгоритмов включают алгоритмические элементы в других моделях Simulink. Примеры включают подсистемы, ссылочные модели, функциональные блоки MATLAB и блоки вызывающего абонента C.
На верхнем уровне модели настройте связь на основе событий, которая требуется адаптивной платформе AUTOSAR для требуемых и предоставляемых портов AUTOSAR. Блок AUTOSAR предоставляет блоки получения и отправки событий для создания необходимых соединений события/сигнала.
После каждого корневого входа добавьте блок приема событий, который преобразует входное событие в сигнал с сохранением значений сигнала и типа данных.
Перед каждым корневым портом добавьте блок отправки событий, который преобразует входной сигнал в событие с сохранением значений сигнала и типа данных.
Примечание
Можно также пропустить этот шаг. Более поздний шаг предоставляет готовую сопоставленную модель с включенными блоками преобразования событий.
Вот пример модели LaneGuidance с добавленными и подключенными блоками событий.

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

По завершении шагов адаптивной конфигурации сохраните модель адаптивного программного компонента AUTOSAR с уникальным именем.
Если какие-либо шаги пропущены, откройте пример готового сопоставленного адаптивного программного компонента AUTOSAR, например модель autosar_LaneGuidance.
Используя ракурс кода 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.
Создайте модель адаптивного программного компонента 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.
Вызывает функции инициализации и завершения модели.
Устанавливает асинхронные объекты вызова функций для каждой задачи.
Выполняет асинхронные вызовы функций в ответ на сообщения семафора с делениями базовой скорости.
Получение событий | Отправить событие