Имитация вызовов компонентов AUTOSAR в память и диагностические службы базового программного обеспечения с помощью эталонных реализаций.
Стандарт AUTOSAR определяет службы базового программного обеспечения (BSW), которые выполняются в среде выполнения AUTOSAR. Эти службы включают в себя службы диспетчера диагностических событий NVRAM (NvM) и диспетчера ингибирования функций (FiM). В среде выполнения AUTOSAR программные компоненты AUTOSAR обычно получают доступ к службам BSW, используя связь клиент-сервер или отправитель-получатель.
В модели программного компонента AUTOSAR для реализации клиентских вызовов сервисных интерфейсов NvM, Dem и FiM необходимо перетащить предварительно настроенные блоки вызывающих абонентов NvM, Dem и FiM. Каждый блок имеет предварительно заполненные параметры, такие как имя порта клиента и операция. Параметры блока настраиваются, например, для выбора сервисной операции для вызова. Чтобы настроить добавленные блоки вызывающего абонента в программном компоненте AUTOSAR, необходимо синхронизировать модель. Программное обеспечение создает интерфейсы, операции и порты клиентской службы AUTOSAR и сопоставляет каждый вызов функции Simulink с клиентским портом и операцией AUTOSAR. Дополнительные сведения см. в разделах Настройка вызовов службы менеджера NVRAM AUTOSAR, Настройка вызовов службы менеджера событий диагностики AUTOSAR и Настройка вызовов службы диспетчера подавления функций AUTOSAR.
Здесь представлена модель интегрирования положения дроссельной заслонки, которая объединяет два компонента датчика положения дроссельной заслонки и компонент монитора положения дроссельной заслонки. Компоненты датчика принимают необработанное значение датчика положения дроссельной заслонки (TPS) и преобразуют его в процентное значение TPS. Компонент монитора принимает значения процента TPS, обеспечиваемые первичным и вторичным компонентами датчика, и решает, какой сигнал TPS должен пройти. Компоненты датчиков вызывают услуги BSW NvM и Dem, а компонент монитора - услуги BSW Dem.
open_system('autosar_bsw_presim');
Компоненты датчиков autosar_bsw_sensor1 и autosar_bsw_sensor2 каждый содержит блок Initialize Function, который вызывает интерфейс услуги NvM NvMService. Вызовы реализуются с помощью блока библиотеки базового программного обеспечения NvMServiceCaller. Каждый блок сконфигурирован для вызова NvMService операция ReadBlock. ReadBlock вызовы используют порты клиента S1LowSetPoint и S2LowSetPoint. Вот функциональный блок инициализации для autosar_bsw_sensor1.

Вот диалоговое окно блока NvMServiceCaller для ReadBlock вызов в блоке Initialize Function. Дополнительные сведения см. в разделе NvMServiceCaller.

Компоненты датчиков autosar_bsw_sensor1 и autosar_bsw_sensor2 каждый содержит два вызова интерфейса услуги Dem DiagnosticMonitor. Оба вызова реализуются с использованием блока Basic Software Library DiagnosticMoneyCaller. Каждый блок сконфигурирован для вызова DiagnosticMonitor операция SetEventStatus. SetEventStatus вызовы используют порты клиента S1StuckLow, S1StuckHigh, S2StuckLow, и S2StuckHigh.

Вот диалоговое окно DiagnosticMoneyCaller block для StuckLow вызовите первый компонент датчика. Дополнительные сведения см. в разделе DiagnosticMoneyCaller.

Компонент монитора autosar_bsw_monitor содержит вызов интерфейса услуги Dem DiagnosticMonitor и четыре вызова интерфейса услуги Dem DiagnosticInfo.
Как и в компоненте датчика, DiagnosticMonitorCaller блок реализует DiagnosticMonitor вызов, и он сконфигурирован для вызова SetEventStatus операция. Имя порта клиента: TPS.
Четыре DiagnosticInfo вызовы реализуются с использованием блока Basic Software Library DiagnosticInfoCaller. Каждый блок сконфигурирован для вызова DiagnosticInfo операция GetEventFailed. GetEventFailed вызовы используют порты клиента TPS1StuckLow, TPS1StuckHigh, TPS2StuckLow, и TPS2StuckHigh.

Вот DiagnosticinfoCaller диалоговое окно блока для TPS1StuckLow звоните. Дополнительные сведения см. в разделе DiagnosticInfoCaller.

При наличии программного обеспечения Simulink Coder и Embedded Coder можно создать код C и экспортировать описания ARXML для сервисных вызовов NvM и Dem. Откройте и создайте каждую модель компонента. Например, для построения модели autosar_bsw_monitorоткройте модель. Нажмите клавиши CTRL + B или введите команду MATLABslbuild('autosar_bsw_monitor').
Для просмотра результатов построения модели изучите отчет о создании кода.
Для моделирования модели компонента AUTOSAR, вызывающей службы BSW, создайте содержащую ее модель композиции, системы или электрического жгута. В этой содержащей модели предоставьте ссылочные реализации операций службы NvM, Dem и FiM, вызываемых компонентом.
Библиотека блоков базового программного обеспечения AUTOSAR включает блок компонента службы NVRAM и блок компонента службы диагностики. Блоки обеспечивают эталонные реализации операций службы NvM, Dem и FiM. Для поддержки моделирования вызовов компонентов служб NvM, Dem и FiM включите блоки в содержащую модель. Вставлять блоки можно двумя способами:
Автоматическая вставка блоков путем создания модели тестовых кабелей Simulink
Вставка блоков вручную в содержащую композицию, систему или модель электрического жгута
Для автоматической вставки блоков компонента службы для модели, вызывающей службы BSW NvM, Dem и FiM, откройте модель (или содержащую модель) и создайте тестовый жгут Simulink Test (требуется Simulink Test). На вкладке «Приложения» выберите «Тест Simulink», затем на вкладке «Тесты» выберите «Добавить тестовый кабель». В диалоговом окне «Создание тестового кабеля» нажмите кнопку «OK». Программа компилирует модель, добавляет блоки NVRAM и компонент службы диагностики и создает порты и другие элементы, необходимые для моделирования. Например, здесь приведен тестовый жгут, созданный для модели интеграции положения дросселя.

Чтобы вставить блоки сервисных компонентов вручную для сервисных вызовов NvM и Dem в этом примере, откройте модель интеграции. Использование обозревателя библиотеки или add_block команды или путем ввода имен блоков в окне модели добавьте в модель блоки NVRAM и Diagnostic Service Component.
open_system('autosar_bsw_presim'); add_block('autosarlibnvm/NVRAM Service Component','autosar_bsw_presim/NVRAM Service Component'); add_block('autosarlibdem/Diagnostic Service Component','autosar_bsw_presim/Diagnostic Service Component'); set_param('autosar_bsw_presim','SimulationCommand','update');

Блок компонента службы NVRAM имеет предварительно заполненные параметры, включая параметры среды выполнения (RTE) и параметры свойств NVRAM. Проверьте настройки параметров и рассмотрите необходимость их изменения в зависимости от того, как используются операции службы NvM. Дополнительные сведения см. в разделе Компонент службы NVRAM.

В таблице вкладок RTE перечислены клиентские порты компонентов и их соответствие идентификаторам блоков услуг NvM. Каждая строка в таблице представляет вызов служб NvM из блока вызывающего абонента базового программного обеспечения. Вызовы, которые действуют в одном блоке NvM, обычно используют один и тот же идентификатор блока. В этом примере выполняется сопоставление NvM ReadBlock клиентские порты к различным идентификаторам блоков.

Блок компонента службы диагностики имеет предварительно заполненные параметры, включая параметры RTE и параметры Dem Counter-Based Debouncing. Проверьте настройки параметров и рассмотрите необходимость их изменения в зависимости от того, как используются операции службы Dem.
Параметры отладки на основе счетчика управляют алгоритмом отладки на основе счетчика, предоставляемым реализациями ссылки на службу Dem. Во время нескольких прогонов моделирования можно настроить размер шага события и пороговые параметры, а также наблюдать за эффектами. Дополнительные сведения см. в разделе Компонент службы диагностики.

В таблице вкладок RTE перечислены клиентские порты компонентов и их соответствие идентификаторам служб Dem или FiM (в данном примере идентификаторам событий). Каждая строка в таблице представляет вызов служб Dem из блока вызывающего абонента базового программного обеспечения. Вызовы, выполняющие одно и то же событие, обычно используют один и тот же идентификатор события. В этом примере отображается значение Dem SetEventStatus клиентские порты с различными идентификаторами событий, а затем сопоставляют Dem GetEventFailed клиентские порты к идентификаторам событий, которые совместно используются с SetEventStatus порты. Например, SetEventStatus порт S1StuckHigh и GetFailedEvent порт TPS1StuckHigh ID 1 события совместного использования; S1Stucklow и TPS1StuckLow идентификатор 2 события совместного использования; и так далее.

После настройки блоков NVRAM и Diagnostic Service Component в интеграционной модели смоделируйте модель. При моделировании выполняются сервисные вызовы AUTOSAR NvM и Dem в моделях положения дроссельной заслонки и компонентов монитора.
open_system('autosar_bsw_simulation'); simOutIntegration = sim('autosar_bsw_simulation');