В Simulink®можно гибко моделировать структуру и поведение компонентов программного обеспечения для адаптивной платформы AUTOSAR. Адаптивная платформа AUTOSAR определяет сервисно-ориентированную архитектуру для автомобильных компонентов, которая должна гибко адаптироваться к внешним событиям и условиям.
Адаптивный программный компонент AUTOSAR предоставляет и использует услуги. Каждый программный компонент содержит:
Автомобильный алгоритм, который выполняет задачи в ответ на полученные события.
Требуемые и предоставляемые порты, каждый из которых сопоставлен с сервисным интерфейсом.
Сервисные интерфейсы со связанными событиями и связанными пространствами имен.
Для получения дополнительной информации смотрите Модель Адаптивные программные компоненты AUTOSAR.
Этот пример конфигурирует представление Simulink алгоритма автомобиля как адаптивного программного компонента AUTOSAR. На шагах строения используются примеры моделей LaneGuidance
и autosar_LaneGuidance
.
Откройте модель Simulink, которая либо пуста, либо содержит функциональный алгоритм. Этот пример использует модель алгоритма ERT LaneGuidance
.
Используя диалоговое окно Параметры конфигурации модели (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 или использовать API, чтобы вызвать MATLAB® функция autosar.api.create(modelName)
.
Пройдите процедуру quick-start. Щелкните Finish, чтобы сопоставить модель.
Модель откроется в перспективе AUTOSAR Code. В перспективе отображается отображение элементов Simulink с элементами адаптивного программного компонента AUTOSAR и словаря AUTOSAR, который содержит элементы адаптивного компонента AUTOSAR со свойствами по умолчанию.
Если вы завершили шаги адаптивного строения, сохраните модель адаптивного программного компонента AUTOSAR с уникальным именем.
Если вы пропустили какие-либо шаги, откройте пример готового сопоставленного адаптивного программного компонента AUTOSAR, примера модели autosar_LaneGuidance
.
Используя перспективу AUTOSAR Code и словарь AUTOSAR (или эквивалентные функции AUTOSAR map и свойства), дополнительно доработайте строение адаптивной модели AUTOSAR.
В окне модели проверьте данные модели, чтобы увидеть, нужно ли вносить корректировки после постотображения в типы или другие атрибуты. Например, проверьте, что данные о событиях настроены правильно для вашего проекта.
В перспективе AUTOSAR Code рассмотрим отображение входных и выходных портов Simulink с необходимыми и предоставленными портами и событиями.
Чтобы открыть словарь AUTOSAR, выберите inport или outport и нажмите кнопку AUTOSAR Dictionary. Словарь откроется в представлении соответствующего сопоставленного порта AUTOSAR.
Выберите порт, чтобы сконфигурировать его атрибуты AUTOSAR, такие как атрибуты манифеста или, для необходимых портов, режим обнаружения услуг.
В словаре можно развернуть узлы сервисного интерфейса, чтобы изучить события AUTOSAR, созданные отображением компонентов по умолчанию.
В словаре можно задать уникальное пространство имен для каждого служебного интерфейса. Пример модели autosar_LaneGuidance
задает пространства имен company::chassis::provided
и company::chassis::required
для соответствующих сервисных интерфейсов. Когда вы создаете модель, сгенерированный код С++ использует пространства имен сервисного интерфейса.
В словаре в представлении опций XML можно сконфигурировать характеристики экспортированного AUTOSAR XML. Чтобы сгенерировать компактный код, пример модели autosar_LaneGuidance
устанавливает опцию Exported XML file packaging XML на Single file
. В диалоговом окне Model Configuration Parameters пример модели устанавливает Code Placement > File packaging format на Compact
.
Создайте модель адаптивного программного компонента AUTOSAR. Для примера в окне модели введите Ctrl+B. Создание модели генерирует:
Файлы C++, которые реализуют алгоритмы модели для адаптивной платформы AUTOSAR и предоставляют определения типов разделяемых данных.
Авто-РСА XML адаптивного программного компонента AUTOSAR и сведения о манифесте для развертывания приложений и строения услуг.
Файлы C++, которые реализуют основной программный модуль.
Файлы заголовка окружения AUTOSAR Runtime Adaptive (ARA).
CMakeLists.txt
файл, который поддерживает генерацию исполняемых файлов CMake.
Сгенерированные файлы модели C++ включают определения классов модели и вызовы AUTOSAR Runtime for Adaptive Applications (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 Runtime Adaptive (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_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.
Вызывает модель, инициализирует и завершает функции.
Настраивает объекты вызова асинхронных функций для каждой задачи.
Запускает асинхронные вызовы функций в ответ на сообщения семафора такта базовой скорости.