В Simulink®можно гибко моделировать структуру и поведение компонентов программного обеспечения для платформы AUTOSAR Classic Platform. Компоненты могут содержать одну или несколько выполняемых сущностей и могут быть экземплярами с одним или мультиобразцами. Для разработки внутреннего поведения компонентов можно использовать стили моделирования Simulink, такие как основанные на скорости и на вызовах функций.
Приложение AUTOSAR состоит из взаимосвязанных программных компонентов (SWC). Каждый программный компонент инкапсулирует функциональную реализацию автомобильного поведения с четко определенными точками соединения к внешнему миру.
В Simulink можно смоделировать:
Атомарные программные компоненты - Атомарный программный компонент не может быть разделен на меньшие программные компоненты, и работает только на одном автомобильном электронном модуле управления (ECU).
Программные компоненты параметра - Программный компонент параметра представляет память, содержащую калибровочные параметры AUTOSAR, и обеспечивает данные параметра к подключенным элементарным программным компонентам.
Основным особым вниманием моделирования AUTOSAR в Simulink являются компоненты атомарного программного обеспечения. Для получения информации о компонентах программного обеспечения параметров смотрите Модели AUTOSAR Параметры калибровки и Интерполяционные таблицы.
Примечание
Не путайте атомарную в этом контексте с концепцией Simulink атомарных подсистем.
Атомарный программный компонент AUTOSAR взаимодействует с другими программными компонентами AUTOSAR или системными службами через четко определенные точки соединения, называемые портами. Одна или несколько выполняемых сущностей (runnables) реализуют поведение компонента.
Чтобы разработать атомарный программный компонент AUTOSAR в Simulink, вы создадите начальное представление Simulink компонента AUTOSAR, как описано в разделе Создание компонента. Можно импортировать описание компонента AUTOSAR из файлов ARXML или в существующей модели создать компонент AUTOSAR по умолчанию на основе содержимого модели. Получившееся представление включает в себя:
Блоки Simulink, соединения и данные, которые моделируют элементы AUTOSAR, такие как порты, runnables, межпрограммные переменные и параметры.
Сохраненные свойства, определенные в стандарте AUTOSAR, для элементов AUTOSAR в программном компоненте.
Набор отображения элементов Simulink к элементам AUTOSAR.
Обычно представление Simulink компонента AUTOSAR является основанной на скорости моделью, в которой периодические выполняемые функции моделируются как атомарные подсистемы с периодическими скоростями.
Рассмотрим пример модели AUTOSAR autosar_swc
. Эта модель показывает основанную на скорости реализацию атомарного программного компонента AUTOSAR. Модель реализует периодические runnables с использованием нескольких скоростей. Блок Initialize Function инициализирует компонент.
Однако, если ваш проект компонента требует серверных функций или периодических вызовов функций, представление Simulink может быть моделью, основанной на вызовах функций. Модель может содержать Simulink Function блоков или подсистем вызова функций с периодическими скоростями.
Рассмотрим пример модели AUTOSAR autosar_swc_slfcns
. Эта модель показывает основанную на вызовах функций реализацию атомарного программного компонента AUTOSAR. Модель использует блок Simulink Function и периодическую подсистему вызова функций на корневом уровне. Блок Initialize Function инициализирует компонент.
Если ваш проект программного компонента AUTOSAR содержит периодические выполняемые файлы, необходимо решить, требует ли ваш компонент основанного на скорости или основанного на вызовах функций подхода моделирования. Прежде чем вы создадите начальное представление Simulink вашего компонента AUTOSAR, обозначите, как моделировать периодические выполняемые функции:
Если вы импортируете описание компонента AUTOSAR из файлов ARXML с помощью arxml.importer
функция объекта createComponentAsModel
, задайте свойство ModelPeriodicRunnablesAs
как AtomicSubsystem
(по умолчанию) для основанных на ставке или FunctionCallSubsystem
для основанных на вызовах функций.
Если вы создаете компонент AUTOSAR по умолчанию в существующей модели, заполните модель содержимым на основе скорости или вызова функции.
Для основанного на скорости моделирования создайте содержимое модели с одной или несколькими периодическими скоростями. Чтобы смоделировать промежуточную переменную AUTOSAR, используйте блок Rate Transition, который обрабатывает передачи данных между блоками, работающими с различными скоростями. Получившийся компонент имеет
периодические переходные параметры, где N
- количество дискретных скоростей в модели. События, которые представляют прерывания на основе скорости, инициируют выполнение выполняемых периодических шагов, используя однотонное планирование скорости.N
Для основанного на вызовах функций моделирования, на верхнем уровне модели, создайте подсистемы вызова функций - или (для моделирования клиента-сервера) Simulink Function блоки. Добавьте корневые входные и выходные порты модели. Чтобы смоделировать промежуточную переменную AUTOSAR, используйте сигнальную линию, чтобы соединить подсистемы вызова функций. Получившийся компонент имеет
exported-function или server runnables. N
- количество подсистем вызова функций или блоков Simulink Function на верхнем уровне модели. События, которые представляют вызовы функций, инициируют выполнение основанных на функциях runnables.N
Выберите основанное на скорости моделирование по умолчанию, если ваш проект не требует моделирования на основе вызова функции.
Иногда условия в программном компоненте AUTOSAR могут предотвратить использование основанного на скорости моделирования. Для примера:
Программный компонент AUTOSAR содержит сервер, выполняемый.
Программный компонент AUTOSAR содержит переменную между выполнениями (IRV), которую читают или записывают несколько выполняемых функций.
Программный компонент AUTOSAR содержит периодическую возможность выполнения со скоростью, не кратной самой быстрой скорости.
Программный компонент AUTOSAR содержит несколько исполняемых элементов, которые получают доступ к одним и тем же данным для чтения или записи с различными скоростями.
Программный компонент AUTOSAR содержит периодическое выполнение, которое также инициирует другие события.
Программный компонент AUTOSAR содержит несколько периодических исполняемых функций, которые запускаются в тот же период.
Если ваш программный компонент AUTOSAR поддерживает несколько экземпляров (то есть SwcInternalBehavior
атрибут supportsMultipleInstantiation
установлено в true
), вы не можете моделировать периодические выполняемые функции как подсистем вызова функций. Используйте или основанное на скорости моделирование и моделируйте периодические выполняемые функции в качестве атомарных подсистем, или установите supportsMultipleInstantiation
на false
.
Для примеров различных способов моделирования компонентов программного обеспечения AUTOSAR смотрите Основанные на скорости компоненты, Компоненты, Основанные на вызовах функций, и Шаблоны моделирования для AUTOSAR Runnables.
Можно смоделировать multi-runnables AUTOSAR, используя многозадачное моделирование на основе скорости Simulink. Сначала вы создаете или импортируете содержимое модели с несколькими периодическими скоростями. Вы можете:
Создайте программный компонент с несколькими периодическими выполняемыми в Simulink.
Импортируйте программный компонент с несколькими периодическими каналами из файлов ARXML в Simulink. Использование arxml.importer
функция объекта createComponentAsModel
со свойствами ModelPeriodicRunnablesAs
установлено на AtomicSubsystem
.
Миграция существующей модели Simulink, основанной на скорости, на многозадачную систему AUTOSAR.
Корневые входные и выходные порты модели представляют порты AUTOSAR, а Rate Transition блоки - межпрограммные переменные (IRV) AUTOSAR.
Вот пример модели многозадачности, основанной на скорости, которая подходит для симуляции и генерации кода AUTOSAR. (Этот пример использует модель
.) Модель представляет программный компонент AUTOSAR. Цвета, отображаемые при обновлении модели (если цвета включены на вкладке Debug, в разделе Diagnostics > Information Overlays), представляют различные существующие периодические ставки. Блоки Rate Transition представляют IRV AUTOSAR.matlabroot
/ help/toolbox/autosar/examples/mMultitasking_4rates.slx
Когда вы генерируете код, Код С модели содержит сгруппированные по скорости функции шага модели, соответствующие выполняемым AUTOSAR, по одному для каждой дискретной скорости в модели. (Функции периодического шага должны вызываться способом однотонного планировщика скорости.) Для получения дополнительной информации смотрите Шаблоны моделирования для AUTOSAR Runnables.
Программный компонент AUTOSAR на основе скорости может включать как периодические, так и асинхронные выполняемые файлы. Например, в архитектуре типа JMAAB, асинхронный триггер, выполняемый, взаимодействует с периодическими runnables на основе скорости.
Рассмотрим пример модели AUTOSAR autosar_swc_fcncalls
. Эта модель показывает основанную на скорости реализацию атомарного программного компонента AUTOSAR, который включает асинхронную (триггерированную) подсистему вызова функций на корневом уровне. Блок Initialize Function инициализирует компонент.
Для получения дополнительной информации см. раздел «Добавление асинхронного триггера верхнего уровня к системе, основанной на периодической скорости».
Можно смоделировать multi-runnables AUTOSAR с помощью подсистем вызова функций Simulink - или (для моделирования клиента-сервера) Simulink Function блоков - на верхнем уровне модели. Сначала вы создаете или импортируете содержимое модели с несколькими функциями. Вы можете:
Создайте программный компонент с несколькими исполняемыми элементами, смоделированными как подсистемы вызова функций или Simulink Function блоки в Simulink.
Импортируйте программный компонент с несколькими исполняемыми файлами ARXML в Simulink. Использование arxml.importer
функция объекта createComponentAsModel
со свойствами ModelPeriodicRunnablesAs
установлено на FunctionCallSubsystem
.
Миграция существующей функциональной модели Simulink к целевому объекту AUTOSAR.
Корневые входные и выходные порты модели представляют порты AUTOSAR, а сигнальные линии, соединяющие подсистемы вызова функций, представляют промежуточные переменные (IRV) AUTOSAR.
Вот пример модели, основанной на вызове функции, с несколькими управляемыми сущностями, которая подходит для симуляции и генерации кода AUTOSAR. (В этом примере используется пример модели AUTOSAR autosar_swc_slfcns
.) Модель представляет программный компонент AUTOSAR. Маркировка подсистемы вызова функций SS1
и блок Simulink Function readData
представляют исполняемые файлы, которые реализуют его поведение. Блок Initialize Function инициализирует компонент. Сигнальная линия curValIRV
представляет собой авто-РСА IRV.
Когда вы генерируете код, Код С модели включает в себя вызываемые функции точки входа модели, соответствующие выполняемым AUTOSAR, по одному для каждой подсистемы вызова функций верхней модели или блока Simulink Function. Для получения дополнительной информации смотрите Шаблоны моделирования для AUTOSAR Runnables.
Можно смоделировать SWC AUTOSAR с мультиобразцами в Simulink. Для примера можно:
Сопоставьте и сконфигурируйте модель Simulink как мультиобразец авто-РСА SWC и проверьте строение. Используйте Reusable function
установка параметра модели Code interface packaging (Simulink Coder).
Сгенерируйте код С с входящими выполняемыми функциями и вызовами RTE API с мультиобразцами. Вы можете получить доступ к внешним вводам-выводам, параметрам калибровки и памяти по экземплярам и использовать повторно используемые подсистемы в режиме мультиобразцов.
Проверьте мультиобразец Кода С AUTOSAR с помощью SIL и PIL симуляций.
Импорт и экспорт мультиобразца авто-РСА XML- файлы описания SWC.
Примечание
Конфигурирование модели как мультиобразец авто-РСА SWC не поддерживается, когда модель использует стиль моделирования, основанный на вызовах функций. То есть, когда модель содержит любой из следующих блоков:
Simulink Function
Inport уровня модели сконфигурированы для вывода вызова функции
Приложения AUTOSAR иногда требуют выполнения сложной логики во время инициализации системы, сброса и завершения работы. Чтобы смоделировать запуск, сброс и завершение работы обработки в программном компоненте AUTOSAR, используйте Initialize Function и Terminate Function блоков Simulink.
Блоки Initialize Function и Terminate Function могут управлять выполнением компонента в ответ на инициализацию, сброс или завершение событий. Можно разместить блоки на любом уровне иерархии модели. Каждая невиртуальная подсистема может иметь свой собственный набор функций инициализации, сброса и завершения. В модели более низкого уровня Simulink агрегирует содержимое функций с соответствующими образцами в родительской модели.
Блоки Initialize Function и Terminate Function содержат блок Event Listener. Чтобы задать тип события функции - Initialize
, Reset
, или Terminate
- используйте параметр Event type блока Event Listener. В сложение функциональный блок читает или записывает состояние условий для других блоков. По умолчанию Initialize Function блок инициализирует состояние блока с State Writer блоком. Аналогично, блок Terminate Function сохраняет состояние блока с блоком State Reader. Когда функция запускается, значение переменной состояния записывается или считывается из заданного блока.
Модели AUTOSAR могут использовать блоки для моделирования потенциально сложных последовательностей запуска, сброса и завершения работы AUTOSAR. Подсистемы работают с любым стилем моделирования компонентов AUTOSAR. (Однако симуляция цикл AUTOSAR инициализировать, сбросить или завершить выполнение работает только с экспортированным моделированием функции.)
В модели AUTOSAR вы сопоставляете каждую функцию Simulink, инициализирующую, сбрасывающую или завершающую точку входа, с выполняемой AUTOSAR. Для каждого выполнения настройте событие AUTOSAR, которое активирует выполнение. В целом можно выбрать любой тип события AUTOSAR, кроме TimingEvent
.
Дополнительные сведения см. в разделе Настройка инициализации, сброса или завершения выполнения AUTOSAR.
Event Listener | Initialize Function | Rate Transition | Simulink Function | State Reader | State Writer | Terminate Function