В 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 Caller.
В верхнем уровне модели, настроенной основанной на событии коммуникации, которая Адаптивная Платформа AUTOSAR требует для AUTOSAR требуемых и обеспеченных портов. AUTOSAR Blockset обеспечивает Event Receive и блоки Event Send, чтобы установить необходимые связи события/сигнала.
После каждого корневого импорта добавьте блок Event Receive, который преобразует входное событие в сигнал при сохранении значений сигналов и типа данных.
Перед каждым корневым выходным портом добавьте блок Event Send, который преобразует входной сигнал в событие при сохранении значений сигналов и типа данных.
В качестве альтернативы можно пропустить этот шаг. Более поздний шаг предоставляет законченной сопоставленной модели включенные блоки преобразования события.
Вот модель LaneGuidance
в качестве примера с блоками события, добавленными и соединенными.
Сопоставьте модель алгоритма с адаптивным компонентом программного обеспечения AUTOSAR.
Чтобы сопоставить модель алгоритма, во вкладке Apps, нажимают AUTOSAR Component Designer. Поскольку модель не сопоставлена, Быстрый запуск Компонента AUTOSAR открывается. (В качестве альтернативы кликните по перспективному управлению в нижнем правом углу и выберите Code или вызовите функцию MATLAB® autosar.api.create(modelName)
.)
Работа через процедуру быстрого запуска. Нажмите Finish, чтобы сопоставить модель.
Модель открывается в перспективе кода AUTOSAR. Перспектива отображает отображение элементов Simulink к адаптивным элементам компонента программного обеспечения AUTOSAR и Словарю AUTOSAR, который содержит адаптивные элементы компонента AUTOSAR со свойствами по умолчанию.
Если вы завершили адаптивные шаги настройки, сохраните адаптивную модель компонента программного обеспечения AUTOSAR с уникальным именем.
Если вы пропустили какие-либо шаги, откройтесь, пример законченного сопоставил адаптивный компонент программного обеспечения AUTOSAR, модель autosar_LaneGuidance
в качестве примера.
Используя перспективу кода AUTOSAR и Словарь AUTOSAR (или эквивалентная карта AUTOSAR и функции свойства), далее совершенствуйте настройку адаптивной модели AUTOSAR.
В окне модели проверяйте данные модели, чтобы видеть, необходимо ли внести корректировки постотображения в типы или другие атрибуты. Например, проверьте, что данные о событиях сконфигурированы правильно для вашего проекта.
В перспективе кода AUTOSAR исследуйте отображение импорта Simulink и выходных портов к AUTOSAR требуемые и обеспеченные порты и события.
Чтобы открыть Словарь AUTOSAR, выберите импорт или выходной порт и нажмите кнопку AUTOSAR Dictionary. Словарь открывается в представлении соответствующего сопоставленного порта AUTOSAR.
Выберите порт, чтобы сконфигурировать его атрибуты 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++, которые реализуют основной программный модуль.
Заголовочные файлы среды Адаптивного времени выполнения 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
данные о событиях получены промежуточным программным обеспечением среды Адаптивного времени выполнения AUTOSAR (ARA).
// 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.
Вызывает модель, инициализируют и отключают функции.
Настраивает асинхронные объекты вызова функции для каждой задачи.
Запускается асинхронные вызовы функции в ответ на тарифную ставку отмечают семафорные сообщения.