Стандарт AUTOSAR Classic Platform определяет важные сервисы как часть Basic Software (BSW), которая выполняется в среде выполнения AUTOSAR (RTE). Примеры включают услуги, предоставляемые Diagnostic Event Manager (Dem), Function Inhibition Manager (FiM) и NVRAM Manager (NvM). В AUTOSAR RTE компоненты программного обеспечения AUTOSAR обычно получают доступ к службам BSW с помощью связи клиент-сервер или отправитель-получатель.
Для поддержки моделирования компонентов и служб AUTOSAR на уровне системы, AUTOSAR Blockset предоставляет библиотеку блоков AUTOSAR Basic Software. Библиотека содержит предварительно сконфигурированные блоки для моделирования вызовов компонентов сервисов AUTOSAR BSW и ссылочных реализаций сервисов BSW. Для получения информации об использовании блоков для моделирования вызовов клиентов к сервисным интерфейсам AUTOSAR BSW, смотрите Модель AUTOSAR Basic Software Service Calls.
Для live скрипта примеров симуляции авто-РСА сервисов BSW смотрите примеры Simulate AUTOSAR Basic Software Services и Run-Time Окружения и Configure and Simulate AUTOSAR Function Inhibition Вызовов.
Как определено в спецификации AUTOSAR, Function Inhibition Manager предоставляет механизм управления для избирательного ингибирования (то есть деактивации) выполнения функции в программных компонентах, выполняемых на основе идентификаторов функций (FID) с условиями ингибирования. Например, FID может представлять функциональность, которая должна быть остановлена, если происходит определенный отказ.
Function Inhibition Manager тесно связан с Diagnostic Event Manager, поскольку условия ингибирования могут основываться на состоянии диагностических событий. Для примера, если о событии отказа датчика сообщают в Diagnostic Event Manager, Function Inhibition Manager может запретить связанный идентификатор функции и остановить выполнение соответствующей функциональности.
AUTOSAR Blockset предоставляет блоки FiM и Dem, которые позволяют запросить состояние условий ингибирования функции и настроить критерии ингибирования функции на основе диагностического состояния события.
Программные компоненты AUTOSAR используют ингибирование функции для включения или выключения функций в зависимости от состояния событий Diagnostic Event Manager (Dem). Программные компоненты могут реагировать на событие, такое как успех или отказ датчика, позволяя или препятствуя выполнению связанной функции.
Рассмотрим модель компонента программного обеспечения AUTOSAR, в которой блок Dem Set Status служит монитором для новых функций в компоненте. События DEM, переданные с помощью блока Set Status, указывают, произошли ли такие условия, как отказ датчика. Статус события определяет, может ли продолжаться выполнение связанных дочерних функций. Функции выполняются только при отсутствии сообщений о событиях отказа.
Для реализации ингибирования функции для новой функциональности в компоненте:
Откройте модель компонента программного обеспечения AUTOSAR.
Откройте окно Set Status диалогового окна блока. Исследуйте имя порта клиента и операции значения. Убедитесь, что порт клиента и его клиентский интерфейс определены в словаре AUTOSAR.
Моделируйте новую функциональность так, что она будет выполняться, только если состояние события указывает на отсутствие отказов датчика. Этот пример помещает новые функциональные возможности в активированную подсистему.
Добавьте блок Function Inhibition Caller к модели. Откройте диалоговое окно блока и сконфигурируйте блок, чтобы запросить GetFunctionPermission
операция от FiM FunctionInhibition
сервисный интерфейс. Указание имени порта клиента и шага расчета.
Откройте редактор Отображения и нажмите кнопку Update. Программа создает указанный клиентский порт и интерфейс в словаре AUTOSAR и сопоставляет блок вызывающего абонента Get Permission с указанным клиентским портом и операцией AUTOSAR.
Подключите блок Get Permission к порту включения подсистемы, содержащей новые функциональные возможности. Блок представляет оценку условий ингибирования функции для новой функциональности. Если функциональность не запрещена и поэтому имеет разрешение на выполнение, блок Get Permission возвращает true, активируя подсистему.
Вот пересмотренная модель программного компонента.
Поместите модель программного компонента в тестовую обвязку.
В модели тестовой обвязки, чтобы обеспечить ссылку реализации сервисов Dem Get Status и FiM Get Permission для симуляции, добавьте блок Diagnostic Service Component. Обновите модель.
Откройте диалоговое окно Diagnostic Service Component блока. Чтобы обновить таблицы RTE и FiM в диалоговом окне в любой точке, обновите модель.
На вкладке RTE вы конфигурируете идентификаторы событий и функций для событий, которые могут вызвать ингибирование функции. В этом примере иерархия модели содержит только один порт события и один порт FID, поэтому вкладка RTE не требует дальнейшего строения.
Если иерархия модели содержит дополнительные порты для нескольких блоков Get Permission с функциями, распределенными между несколькими компонентами, можно использовать вкладку RTE, чтобы назначить порты тому же FID, чтобы сгруппировать их или разделить FID, чтобы адресовать их по отдельности. Пример запрещения функций с несколькими портами и распределенными функциональными возможностями см. в разделе Настройка и моделирование вызовов служб запрещения функций AUTOSAR.
После настройки идентификаторов событий и функций переключитесь на вкладку FiM. На вкладке FiM вы добавляете и конфигурируете условия запрещения, которые определяют, когда блоки Get Permission разрешают работу.
На вкладке FiM перечислены идентификаторы функций, представляющие функции в иерархии модели, для которых реализовано запрещение функции. В этом примере иерархия модели содержит один FID.
Чтобы добавить условие ингибирования для FID, выберите FID и нажмите кнопку Add inhibition condition. Строка для условия ингибирования появляется под FID.
В строке выберите значение идентификатора события (соответствующее идентификатору события, указанному на вкладке RTE). Затем для пары FID и ID события выберите значение маски ингибирования. Спецификации AUTOSAR определяют значения маски в таблице значений FiMInhibitionMask.
В этом примере функция, представленная FID 1, запрещается, если событие, представленное ID 1 события, LAST_FAILED.
Обновите и симулируйте модель тестовой обвязки.
Следующие шаги в разработке программного компонента включают:
Решение вопроса о том, как инициировать событие.
Добавление функциональности для запрета.
Для более масштабного примера моделирования ингибирования функции AUTOSAR, смотрите Сконфигурируйте и Симулируйте Вызовы Услуги Ингибирования Функции AUTOSAR.
В программном компоненте AUTOSAR операции циклы представляют автомобильные циклы, такие как циклы зажигания, степень циклы, циклы прогрева или бортовые диагностические (OBD) циклы. Цикл можно запустить, остановить или запросить с помощью служб Diagnostic Event Manager. Можно использовать операцию цикла, чтобы определить, не произошло ли то или иное событие за заданное время.
Операции циклы разделяют симуляцию на периоды времени, такие как один минутный цикл. В каждом цикле программное обеспечение может проверить, был ли диагностический сднмт (событие) протестированан (условие FiM) во время этого цикла, и ингибировать функции соответственно.
Блок BSW DiagnosticOperationCycleCaller поддерживает SetOperationCycleState
и GetOperationCycleState
услуги. Компонент вызывает службы для управления циклами операции компонентов, которые используются для опробования отказов на период времени. Вызывающие SetOperationCycleState
со значением Dem_OperationCycleStateType.DEM_CYCLE_STATE_START запускает цикл операции. Передача значения завершает Dem_OperationCycleStateType.DEM_CYCLE_STATE_END цикл операции. Вызывающие GetOperationCycleState
запрашивает текущее состояние операционного цикла.
Для примера использования блока DiagnosticOperationCycleCaller и SetOperationCycleState
, см. «Настройка и моделирование вызовов служб запрещения функций AUTOSAR».
Function Inhibition Manager поддерживает критерии ингибирования для ограничения выполнения функциональных блоков до запуска логических и функциональных предшественников или для ограничения выполнения системы безопасности до проверки отказа. Однако можно ограничить использование функциональности независимо от критериев ингибирования. Например, компонент датчика может отключить считывание данных о датчике во время отказа или во время проверки другой функциональности системы.
Блок BSW Control Function Available Caller поддерживает SetFunctionAvailable
сервис, который обеспечивает гранулированный механизм для ингибирования специфических функциональных возможностей. Компонент использует SetFunctionAvailable
со значением входного сигнала false, чтобы запретить связанную функциональность, так что блок Get Permission для функциональности возвращает 0. В этом примере монитор датчика использует SetFunctionAvailable
чтобы сообщить компоненту центрального монитора, доступны ли измерения датчика.
Центральный монитор использует Function Inhibition Caller блоков и GetFunctionPermission
сервис, чтобы решить, учитывать ли измерения, поступающие от каждого датчика. Центральный монитор имеет столько блоков Get Permission, сколько датчиков.
Вкладка FiM блока DIagnostic Service Component конфигурирует детали событий отказа. Если функция доступна, идентификатор вкладки FiM и настройки маски управляют ингибированием функции. Если функция недоступна, GetFunctionPermission
всегда возвращает false.
В рамках реализации блокировки функций вы конфигурируете вызовы клиентов для связанных с FiM сервисных интерфейсов в программном компоненте AUTOSAR. Вот пример конфигурирования вызовов клиента для запроса состояния условий запрещения функции.
Откройте модель, которая сконфигурирована для генерации кода AUTOSAR. Этот пример использует пример модели autosar_bsw_fimmonitor
, который связан с примером «Конфигурирование и моделирование сервисных вызовов с запрещением функций AUTOSAR». Используя браузер библиотек или вводя имена блоков в окне модели, добавьте Function Inhibition Caller блоков FiM к модели.
В целях этого примера соедините выходы блоков с Terminator блоками.
Откройте новый блок и исследуйте параметры. Для вызова услуги FiM, Client port name FiM_FunctionInhibition
и Operation GetFunctionPermission
. Установите Sample time значение 0.005
, который соответствует другому GetFunctionPermission
блоки вызывающего абонента в модели.
Откройте редактор Отображения. Как обновить Simulink® Для отображения модели в AUTOSAR с изменениями на вызывающие абоненты функции Simulink нажмите кнопку Update. Программное обеспечение создает интерфейсы, операции и порты клиента AUTOSAR и сопоставляет каждого вызывающего абонента функции Simulink с клиентским портом и операцией AUTOSAR.
Например, для блока Function Inhibition Caller в этом примере, для которого GetFunctionPermission
операция выбрана:
Программное обеспечение создает интерфейс C-S FiM_FunctionInhibition
, и под FiM_FunctionInhibition
, его поддерживаемая операция, GetFunctionPermission
. Аргументы операции снабжены свойствами только для чтения. В словаре AUTOSAR, вот аргументы для FiM_FunctionInhibition
операция GetFunctionPermission
.
Программа создает клиентский порт с именем по умолчанию FiM_FunctionInhibition
. В отличие от C-S-интерфейса, операции и имен аргумента, имя порта клиента может быть настроено. Порт клиента сопоставлен с FiM_FunctionInhibition
интерфейс.
Редактор Отображения сопоставляет блок вызывающего абонента функции Function Inhibition Caller с клиентским портом AUTOSAR FiM_FunctionInhibition
и операция AUTOSAR GetFunctionPermission
.
Опционально создайте модель компонента и исследуйте сгенерированный код C и ARXML. Код С включает клиентские вызовы услуг BSW, например:
/* FunctionCaller: '<Root>/Function Inhibition Caller' */ Rte_Call_FiM_FunctionInhibition_GetFunctionPermission (&rtb_FunctionInhibitionCaller_o1);
Сгенерированные файлы включения RTE определяют точки вызова операции сервера, такие как Rte_Call_FiM_FunctionInhibition_GetFunctionPermission
.
Код ARXML определяет сервисные операции BSW, вызываемые компонентом, как серверные точки вызова, например:
<SERVER-CALL-POINTS> <SYNCHRONOUS-SERVER-CALL-POINT UUID="..."> <SHORT-NAME>SC_FiM_Function_60fb8d34c7807f7b</SHORT-NAME> <OPERATION-IREF> <CONTEXT-R-PORT-REF DEST="R-PORT-PROTOTYPE"> /ThrottlePositionMonitorCompo_pkg/ThrottlePositionMonitorCompo_swc /ThrottlePositionMonitor/FiM_FunctionInhibition </CONTEXT-R-PORT-REF> <TARGET-REQUIRED-OPERATION-REF DEST="CLIENT-SERVER-OPERATION"> /AUTOSAR/Services/FiM/FiM_FunctionInhibition/GetFunctionPermission </TARGET-REQUIRED-OPERATION-REF> </OPERATION-IREF> <TIMEOUT>1.0E-06</TIMEOUT> </SYNCHRONOUS-SERVER-CALL-POINT> ... </SERVER-CALL-POINTS>
Чтобы симулировать модель компонента, создайте содержащую композицию, систему или тестовую обвязку модель. В содержащую модель вставьте ссылочную реализацию FiM GetFunctionPermission
сервисные операции.
Библиотека блоков AUTOSAR Basic Software предоставляет блок Diagnostic Service Component, который обеспечивает эталонные реализации сервисных операций Dem и FiM. Можно вручную вставить блок в содержащую его композицию, систему или модель тестовой обвязки или автоматически вставить блок, создав Test™ модели тестовой обвязки Simulink.
Для получения дополнительной информации смотрите Настройте Основные реализации программного обеспечения AUTOSAR для симуляции.
Пример Конфигурирование и моделирование сервисных вызовов АВТОСАР-ингибирования функций предоставляет набор примерных моделей, которые вместе иллюстрируют ключевые аспекты реализации ингибирования функции, включая:
Запросите состояние условий ингибирования (FunctionInhibition
операция GetFunctionPermission
).
Сконфигурируйте критерии запрещения на основе состояния события (Diagnostic Service Component диалоговое окно блока, RTE и FiM вкладки).
Задайте операцию цикла для видимости отказов к временному периоду (Dem OperationCycle
операция SetOperationCycleState
).
Control Function Available Caller | Diagnostic Service Component | DiagnosticOperationCycleCaller | Function Inhibition Caller