Для AUTOSAR Classic Platform стандарт AUTOSAR определяет важные услуги как часть базового программного обеспечения (BSW), работающего в среде выполнения AUTOSAR (RTE). Примеры включают услуги, предоставляемые диспетчером событий диагностики (Dem), менеджером ингибирования функций (FiM) и менеджером NVRAM (NvM). В AUTOSAR RTE программные компоненты AUTOSAR обычно получают доступ к службам BSW, используя связь клиент-сервер или отправитель-получатель.
Для поддержки системного моделирования компонентов и служб AUTOSAR, AUTOSAR Blockset предоставляет библиотеку блоков AUTOSAR Basic Software. Библиотека содержит предварительно сконфигурированные блоки для моделирования вызовов компонентов служб AUTOSAR BSW и ссылочных реализаций служб BSW. Для получения информации об использовании блоков для моделирования вызовов клиента к сервисным интерфейсам AUTOSAR BSW см. Модель базовых сервисных вызовов AUTOSAR.
Примеры моделирования служб BSW AUTOSAR см. в разделе Примеры моделирования основных программных служб AUTOSAR и среды выполнения, а также конфигурирования и моделирования вызовов служб запрета функций AUTOSAR.
Как определено в спецификации AUTOSAR, диспетчер ингибирования функций обеспечивает механизм управления для избирательного запрещения (то есть деактивации) выполнения функций в запускаемых программных компонентах на основе идентификаторов функций (FID) с условиями ингибирования. Например, FID может представлять функциональность, которая должна быть остановлена в случае конкретного сбоя.
Диспетчер ингибирования функций тесно связан с диспетчером диагностических событий, поскольку условия ингибирования могут быть основаны на состоянии диагностических событий. Например, если о событии отказа датчика сообщается диспетчеру диагностических событий, он может запретить соответствующий идентификатор функции и остановить выполнение соответствующих функций.
AUTOSAR Blockset предоставляет блоки FiM и Dem, которые позволяют запрашивать состояние условий ингибирования функции и настраивать критерии ингибирования функции на основе состояния диагностического события.
Программные компоненты AUTOSAR используют ингибирование функций для включения или выключения функций в зависимости от состояния событий Diagnostic Event Manager (Dem). Компоненты программного обеспечения могут реагировать на событие, такое как успех или отказ датчика, разрешая или предотвращая выполнение связанной функции.
Рассмотрим модель программного компонента AUTOSAR, в которой блок состояния набора Dem служит в качестве монитора для новых функциональных возможностей компонента. События Dem, передаваемые с помощью блока Set Status, указывают на наличие таких условий, как отказ датчика. Состояние события определяет, может ли выполняться выполнение связанных нисходящих функций. Функции выполняются только в том случае, если события отказа не сообщаются.
Чтобы реализовать ингибирование функции для новых функций в компоненте:
Откройте модель программного компонента AUTOSAR.

Откройте диалоговое окно «Установка блока состояния». Проверьте имя порта клиента и значения операций. Убедитесь, что порт клиента и интерфейс клиента определены в словаре AUTOSAR.

Смоделировать новую функциональность таким образом, чтобы она выполнялась только в том случае, если состояние события указывает на отсутствие отказов датчика. В этом примере новая функциональность помещается в включенную подсистему.

Добавьте в модель блок вызывающего абонента, вызывающего торможение функции. Открытие диалогового окна блока и настройка блока для запроса GetFunctionPermission операция из FiM FunctionInhibition сервисный интерфейс. Укажите имя порта клиента и время выборки.

Откройте редактор сопоставлений кодов и нажмите кнопку «Обновить». Программа создает указанные клиентский порт и интерфейс в словаре AUTOSAR и сопоставляет блок вызова Get Permission с указанным клиентским портом и операцией AUTOSAR.
Подключите блок получения разрешения к порту включения подсистемы, содержащей новые функциональные возможности. Блок представляет оценку условий ингибирования функции для новой функциональности. Если функциональность не запрещена и поэтому имеет разрешение на выполнение, блок Получить разрешение возвращает значение true, активируя подсистему.
Вот пересмотренная модель компонентов программного обеспечения.

Поместите модель программного компонента в тестовый электрический жгут.
В модели тестовых кабелей для обеспечения ссылочных реализаций служб Dem Get Status и FiM Get Permission для моделирования добавьте блок компонента службы диагностики. Обновите модель.

Откройте диалоговое окно «Блок компонента службы диагностики». Чтобы обновить таблицы RTE и FiM в диалоговом окне в любой точке, обновите модель.
На вкладке RTE настраиваются идентификаторы событий и функций для событий, которые могут инициировать ингибирование функций. В этом примере иерархия модели содержит только один порт события и один порт FID, поэтому вкладка RTE не требует дальнейшей настройки.
Если иерархия модели содержит дополнительные порты для нескольких блоков Get Permission с функциональными возможностями, распределенными по нескольким компонентам, можно использовать вкладку RTE для назначения портов одному и тому же FID для их группирования или отдельных FID для их индивидуальной адресации. Пример подавления функции с несколькими портами и распределенными функциональными возможностями см. в разделе Настройка и моделирование вызовов службы подавления функции AUTOSAR.

После настройки идентификаторов событий и функций перейдите на закладку FiM. На вкладке FiM можно добавить и настроить условия запрета, которые определяют, когда блоки Получить разрешение позволяют работать.
На вкладке FiM перечислены идентификаторы функций, представляющие функции в иерархии модели, для которых реализовано ингибирование функций. В этом примере иерархия модели содержит один FID.

Чтобы добавить условие ингибирования для FID, выберите FID и нажмите кнопку Добавить условие ингибирования. Строка для условия ингибирования появляется под FID.
В строке выберите значение идентификатора события (соответствующее идентификатору события, указанному на вкладке RTE). Затем для пары FID и идентификатора события выберите значение маски ингибирования. Спецификации AUTOSAR определяют значения маски в таблице значений FiMInhibableMask.
В этом примере функция, представленная FID 1, запрещается, если событие, представленное событием ID 1, является LAST_FAILED.

Обновление и моделирование модели кабельных трасс.
Следующие шаги по разработке программного компонента:
Обращение к тому, как инициировать событие.
Добавление функциональных возможностей для запрета.
Более масштабный пример моделирования подавления функции AUTOSAR см. в разделе Настройка и моделирование вызовов службы подавления функции AUTOSAR.
В программном компоненте AUTOSAR рабочие циклы представляют собой автомобильные циклы, такие как циклы зажигания, силовые циклы, циклы прогрева или бортовые диагностические циклы (БД). Цикл можно запустить, остановить или запросить с помощью служб диспетчера событий диагностики. Можно использовать циклы операций, чтобы определить, не произошло ли данное событие в течение заданного времени.
Рабочие циклы разделяют моделирование на периоды времени, например, один минутный цикл. В каждом цикле программное обеспечение может проверить, было ли диагностическое состояние (событие) ПРОТЕСТИРОВАНО (состояние FiM) в течение этого цикла, и соответственно запретить функции.
Блок BSW DiagnosticOperationCycleCaller поддерживает SetOperationCycleState и GetOperationCycleState услуги. Компонент вызывает службы для управления циклами работы компонента, которые используются для определения объема отказов на определенный период времени. Запрос SetOperationCycleState со значением Dem_OperationCycleStateType.DEM_CYCLE_STATE_START запускающим рабочий цикл. Передача значения Dem_OperationCycleStateType.DEM_CYCLE_STATE_END завершает рабочий цикл. Запрос GetOperationCycleState запрашивает текущее состояние рабочего цикла.
Для примера использования блока DiagnosticOperationCycleCaller и SetOperationCycleState см. раздел Настройка и моделирование вызовов услуг по блокированию функции AUTOSAR.
Диспетчер ингибирования функций поддерживает критерии ингибирования для ограничения выполнения функциональных блоков до запуска логических и функциональных предшественников или для ограничения выполнения системы безопасности до проверки отказа. Однако можно ограничить использование функциональных возможностей независимо от критериев ингибирования. Например, компонент датчика может отключить считывание данных датчика во время сбоя или во время тестирования других функциональных возможностей системы.
Функция управления блоками BSW Available Caller поддерживает SetFunctionAvailable услуга, которая обеспечивает гранулированный механизм для подавления определенных функциональных возможностей. Компонент использует SetFunctionAvailable со значением входного сигнала false для запрета связанной функциональности, так что блок Get Permission для функциональности возвращает 0. В этом примере монитор датчика использует SetFunctionAvailable для информирования компонента центрального монитора о наличии результатов измерений датчиков.

Центральный монитор использует блоки вызывающего абонента с функцией «Ингибирование функции» и GetFunctionPermission для принятия решения о необходимости учета измерений, поступающих от каждого датчика. Центральный монитор имеет столько блоков получения разрешения, сколько датчиков.
На вкладке FiM блока DIagnostic Service Component можно настроить подробные сведения о событиях отказа. Если функция доступна, идентификатор вкладки «FiM» и параметры маски контролируют запрет функции. Если функция недоступна, GetFunctionPermission всегда возвращает значение false.
В рамках реализации запрета функций в программном компоненте AUTOSAR настраиваются вызовы клиентов к сервисным интерфейсам, связанным с FiM. Ниже приведен пример настройки клиентских вызовов для запроса состояния условий запрета функций.
Откройте модель, настроенную для генерации кода AUTOSAR. В этом примере используется пример модели autosar_bsw_fimmonitor, что связано с примером «Настройка и моделирование вызовов службы подавления функции AUTOSAR». С помощью обозревателя библиотек или путем ввода имен блоков в окне модели добавьте в модель вызывающую функцию блокирования FiM.
Для целей этого примера подключите выходы блока к блокам терминатора.

Откройте новый блок и проверьте параметры. Для вызова службы FiM именем порта клиента является FiM_FunctionInhibition и Операция GetFunctionPermission. Установить время выборки на 0.005, который совпадает с другим GetFunctionPermission блоки вызывающего абонента в модели.

Откройте редактор сопоставлений кода. Чтобы обновить сопоставление Simulink ® и AUTOSAR модели с изменениями вызывающих абонентов функции Simulink, нажмите кнопку Update
. Программное обеспечение создает интерфейсы, операции и порты клиентской службы AUTOSAR и сопоставляет каждого вызывающего абонента функции Simulink с клиентским портом и операцией AUTOSAR.
Например, в этом примере для блока вызывающего абонента Function Indibration, для которого GetFunctionPermission выбрана операция:
Программное обеспечение создает интерфейс C-S FiM_FunctionInhibition, и ниже FiM_FunctionInhibition, его поддерживаемая работа, GetFunctionPermission. Аргументы операции имеют свойства, доступные только для чтения. В словаре AUTOSAR приведены аргументы для FiM_FunctionInhibition операция GetFunctionPermission.

Программа создает порт клиента с именем по умолчанию FiM_FunctionInhibition. В отличие от имен C-S-интерфейса, операций и аргументов, имя порта клиента можно настроить. Порт клиента сопоставлен с FiM_FunctionInhibition интерфейс.

Редактор сопоставлений кодов сопоставляет блок вызывающей функции Function Indibration Caller с портом клиента AUTOSAR FiM_FunctionInhibition и работа AUTOSAR GetFunctionPermission.

При необходимости создайте модель компонента и проверьте сгенерированный код C и ARXML. Код C включает в себя вызовы клиента к услугам 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 предоставляет блок компонента службы диагностики, который обеспечивает эталонные реализации операций службы Dem и FiM. Можно вручную вставить блок в содержащую его модель композиции, системы или электрического жгута или автоматически вставить блок, создав модель электрического жгута Simulink Test™.

Дополнительные сведения см. в разделе Настройка реализации базовой службы программного обеспечения AUTOSAR для моделирования.
Пример. Настройка и моделирование вызовов службы подавления функции AUTOSAR предоставляет набор примеров моделей, которые вместе иллюстрируют ключевые аспекты реализации ингибирования функции, включая:
Запрос состояния условий ингибирования (FunctionInhibition операция GetFunctionPermission).
Настройте критерии запрета на основе состояния события (диалоговое окно «Diagnostic Service Component», вкладки RTE и FiM).
Определить рабочие циклы для определения объема отказов до периода времени (Dem OperationCycle операция SetOperationCycleState).
Функция управления доступна вызывающему абоненту | Компонент службы диагностики | DiagnosticOperationCycleCaller | Вызывающий абонент, вызывающий запрет функции