В Simulink® можно гибко смоделировать структуру и поведение компонентов программного обеспечения для Адаптивной Платформы AUTOSAR. Адаптивная Платформа AUTOSAR задает архитектуру для обслуживания широкого круга запросов для автомобильных компонентов, которые должны гибко адаптироваться к внешним событиям и условиям.
Адаптивный компонент программного обеспечения AUTOSAR обеспечивает и использует сервисы. Каждый компонент программного обеспечения содержит:
Автомобильный алгоритм, который выполняет задачи в ответ на полученные события.
Требуемые и обеспеченные порты, каждый сопоставленный с сервисным интерфейсом.
Сервисные интерфейсы, со связанными событиями и сопоставленными пространствами имен.
Для получения дополнительной информации смотрите Образцовый AUTOSAR Адаптивные Компоненты программного обеспечения.
Этот пример конфигурирует представление Simulink автомобильного алгоритма как адаптивный компонент программного обеспечения AUTOSAR. Настройка продвигается модели LaneGuidance
и autosar_LaneGuidance
использования в качестве примера.
Откройте модель Simulink, которая или пуста или содержит функциональный алгоритм. Этот пример использует модель LaneGuidance
алгоритма ERT.
Используя диалоговое окно Model Configuration Parameters, панель Code Generation, конфигурируют модель для адаптивной генерации кода AUTOSAR. Установите System target file на autosar_adaptive.tlc
. Примените изменение.
Новая установка влияет на другие образцовые настройки. Например, выбор конечного файла:
Наборы Language к C++
.
Выбирает Generate code only.
Наборы Toolchain к AUTOSAR Adaptive | CMake
.
Наборы Interface> Code interface packaging к C++ class
.
Разработайте образцовое алгоритмическое содержимое для использования в адаптивном компоненте программного обеспечения AUTOSAR. Если модель пуста, создайте или скопируйте в алгоритме. Возможные источники для алгоритмов включают алгоритмические элементы в другие модели Simulink. Примеры включают подсистемы, модели, на которые ссылаются, блоки MATLAB function и блоки Вызывающей стороны C.
В верхнем уровне модели, настроенной основанной на событии коммуникации, которая Адаптивная Платформа AUTOSAR требует для AUTOSAR требуемых и обеспеченных портов. AUTOSAR Blockset обеспечивает, Событие Получают, и Событие Отправляют блоки, чтобы установить необходимые связи события/сигнала.
После каждого корневого импорта добавьте блок Event Receive, который преобразовывает входное событие в сигнал при сохранении значений сигналов и типа данных.
Перед каждым корневым выходным портом добавьте блок Event Send, который преобразовывает входной сигнал в событие при сохранении значений сигналов и типа данных.
Также можно пропустить этот шаг. Более поздний шаг предоставляет законченной сопоставленной модели включенные блоки преобразования события.
Вот модель LaneGuidance
в качестве примера с блоками события, добавленными и связанными.
Сопоставьте алгоритмическую модель с адаптивным компонентом программного обеспечения AUTOSAR.
Чтобы сопоставить модель алгоритма, в окне модели, выбирают Code> C/C++ Code> Configure Model in Code Perspective. (Также кликните по перспективному управлению в нижнем правом углу и выберите Code или вызовите функцию MATLAB® autosar.api.create(modelName)
.) Диалоговое окно AUTOSAR Component Quick Start открывается.
Чтобы настроить вашу модель AUTOSAR, щелкните через панели Быстрого запуска Компонента AUTOSAR. Когда панель Быстрого запуска предложит значение по умолчанию или задержит создание компонента, выберите Create default mapping.
Нажмите кнопку Quick Start Finish. Перспектива кода AUTOSAR открывается. Перспектива отображает отображение элементов Simulink к адаптивным элементам компонента программного обеспечения AUTOSAR и Словарю AUTOSAR, который содержит адаптивные элементы компонента AUTOSAR со свойствами по умолчанию.
Если вы завершили адаптивные шаги настройки, сохраните адаптивную модель компонента программного обеспечения AUTOSAR с уникальным именем.
Если вы пропустили какие-либо шаги, откройтесь, пример законченного сопоставил адаптивный компонент программного обеспечения AUTOSAR, модель autosar_LaneGuidance
в качестве примера.
Используя перспективу кода AUTOSAR и Словарь AUTOSAR (или эквивалентная карта AUTOSAR и функции свойства), далее совершенствуйте настройку адаптивной модели AUTOSAR.
В окне модели проверяйте данные модели, чтобы видеть, необходимо ли внести корректировки постотображения в типы или другие атрибуты. Например, проверьте, что данные о событиях сконфигурированы правильно для вашего проекта.
В перспективе кода AUTOSAR исследуйте отображение импорта Simulink и выходных портов к AUTOSAR требуемые и обеспеченные порты и события.
Чтобы открыть Словарь AUTOSAR, выберите импорт или выходной порт и нажмите кнопку AUTOSAR Dictionary. Словарь открывается в представлении соответствующего сопоставленного порта AUTOSAR.
В словаре можно расширить сервисные узлы интерфейса, чтобы исследовать события AUTOSAR, созданные отображением компонента по умолчанию.
В словаре можно задать уникальное пространство имен для каждого сервисного интерфейса. Модель Example autosar_LaneGuidance
задает пространства имен company::chassis::provided
и company::chassis::required
для соответствующих сервисных интерфейсов. Когда вы создаете модель, сгенерированный Код С++ использует сервисные пространства имен интерфейса.
В словаре, в представлении опций XML, можно сконфигурировать характеристики экспортируемого AUTOSAR XML. Чтобы сгенерировать компактный код, модель autosar_LaneGuidance
в качестве примера устанавливает опцию XML Exported XML file packaging на Single file
. В диалоговом окне Model Configuration Parameters модель в качестве примера устанавливает Code Placement> File packaging format к Compact
.
Создайте адаптивную модель компонента программного обеспечения AUTOSAR. Например, в окне модели, введите Ctrl+B. Создавание модели генерирует:
Файлы C++, которые реализуют образцовые алгоритмы для Адаптивной Платформы AUTOSAR и обеспечивают разделяемые данные, вводят определения.
XML-описания AUTOSAR адаптивного компонента программного обеспечения AUTOSAR и образцового заголовочного файла класса.
Файлы C++, которые реализуют основной программный модуль.
Файл CMakeLists.txt
, который поддерживает генерацию CMake исполняемых файлов.
Сгенерированные файлы модели C++ включают образцовые определения классов и Время выполнения AUTOSAR для Адаптивных Приложений (ARA) вызовы, чтобы реализовать адаптивные сервисы компонента программного обеспечения. Например, образцовый файл autosar_LaneGuidance.cpp
содержит код инициализации для каждого сервисного интерфейса и события. Код отражает сервисные пространства имен интерфейса и имена события, сконфигурированные в Словаре AUTOSAR.
// Model initialize function void mObjectDetectionModelClass::initialize() { { ara::com::ServiceHandleContainer< company::chassis::required::proxy:: RequiredInterfaceProxy::HandleType > handles; ... handles = company::chassis::required::proxy::RequiredInterfaceProxy:: FindService(); if (handles.size() > 0U) { RequiredPort = std::make_shared<company::chassis::required::proxy:: RequiredInterfaceProxy>(*handles.begin()); } // Subscribe event RequiredPort->rightCarInBlindSpot.Subscribe(ara::com::EventCacheUpdatePolicy:: kNewestN, 1U); ... } }
Образцовый файл autosar_LaneGuidance.cpp
также содержит код шага для каждого сервисного события интерфейса. Например, код шага для RequiredInterface
, события rightCarInBlindSpot
, вызывает поп-функцию сообщения, чтобы выбрать и обработать новые данные о событиях rightCarInBlindSpot
, полученные промежуточным программным обеспечением ARA.
// Model step function void mObjectDetectionModelClass::step() { ... // Chart: '<S6>/Event Receive' autosar_LaneGuidance_DW.EvtIn_isValid = false; if (autosar_LaneGuidance_sf_msg_pop_EvtIn_n()) { autosar_LaneGuidance_B.SigOut = *(real_T *) autosar_LaneGuidance_DW.EvtIn_msgDataPtr; } autosar_LaneGuidance_sf_msg_discard_EvtIn_kl(); // End of Chart: '<S6>/Event Receive' ... }
Экспортируемый код 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.
Вызывает модель, инициализируют и отключают функции.
Настраивает асинхронные объекты вызова функции для каждой задачи.
Запускается асинхронные вызовы функции в ответ на тарифную ставку отмечают семафорные сообщения.
Событие получает | Событие отправляет