Определяет временные границы для устранения дребезга диагностических событий по времени при инициализации монитора.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: beb974918ec8ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Определяет временные границы для устранения дребезга диагностических событий по времени при инициализации монитора.
Структура данных ara::diag::TimeBased служит для конфигурации устранения дребезга диагностических событий по времени [SWS_DM_00539]. Она передает в конструктор ara::diag::Monitor пороговые значения в миллисекундах, по истечении которых событие классифицируется как восстановленное или неисправное. Diagnostic Management запускает внутренний таймер устранения дребезга и управляет им на основе этих пороговых значений при входящих сообщениях о состоянии. Энергонезависимое сохранение значения внутреннего счетчика при перезапусках для методов устранения дребезга по времени не поддерживается AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 «Time-based debouncing».
Контекст
C++-структура ara::diag::TimeBased определяет параметры конфигурации для устранения дребезга диагностических событий по времени (time-based debouncing) в Diagnostic Management в AUTOSAR Adaptive Platform [SWS_DM_00539]. Она инкапсулирует две длительности в миллисекундах, определяющие переходы состояний диагностического события: failedMs как порог неисправности [SWS_DM_00629] и passedMs как порог восстановления [SWS_DM_00630].
В общей системе структура связывает три основных компонента: выполняющую диагностику прикладную функцию, класс ara::diag::Monitor и Diagnostic Management (DM) [SWS_DM_00550]. Приложение инстанцирует структуру для задания специфичных для события времен устранения дребезга и передает ее в конструктор диагностического монитора [SWS_DM_00550]. Затем DM активирует алгоритм устранения дребезга по времени для этого события [SWS_DM_00015] и вычисляет бит состояния события на основе внутреннего таймера и настроенных пороговых значений kTestFailedAUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 «Time-based debouncing».
Являясь простым контейнером данных без динамических ресурсов, ara::diag::TimeBased обладает несложным жизненным циклом [SWS_DM_00539]. Структура обычно создается приложением локально в стеке или в статической памяти, инициализируется целевыми временами и передается по значению в конструктор ara::diag::Monitor[SWS_DM_00550] (AUTOSAR_AP_SWS_Diagnostics §8.40.1.1.2.3 «Monitor»).
Интерпретация: благодаря передаче по значению параметры копируются при создании монитора, поэтому исходный объект TimeBased можно безопасно удалить после завершения вызова конструктора. Вопрос (открытый) Начиная с этого момента DM самостоятельно управляет динамическим состоянием таймера устранения дребезга и при запуске системы изначально устанавливает его значение в 0 [SWS_DM_00085]. Поскольку TimeBased не содержит внутренних механизмов синхронизации, параллельный доступ на запись к общему экземпляру должен быть исключен на стороне приложения.
Путь использования
Типичное использование состоит из следующих шагов:
Параметризация и инициализация: приложение инстанцирует ara::diag::TimeBased, устанавливает failedMs[SWS_DM_00629], а также passedMs[SWS_DM_00630] и передает структуру в конструктор ara::diag::Monitor[SWS_DM_00550].
Инициализация таймера: DM запускает службу устранения дребезга и инициализирует внутренний таймер события нулевым значением [SWS_DM_00085].
Передача предварительных результатов проверки: если монитор обнаруживает состояние без ошибок, он вызывает ReportMonitorAction с kPrepassed. DM запускает таймер в направлении состояния восстановления [SWS_DM_00878] и непрерывно обновляет счетчик обнаружения неисправностей (Fault Detection Counter, FDC) [SWS_DM_00030].
Квалификация: когда таймер достигает порога passedMs, DM квалифицирует событие как kFinallyHealed[SWS_DM_00878]. Если монитор вместо этого сообщает kFailed, таймер сразу устанавливается в failedMs, а событие обрабатывается как kFinallyDefective[SWS_DM_00033].
Замораживание и возобновление: с помощью ReportMonitorAction(kFreezeDebouncing) устранение дребезга при необходимости можно приостановить [SWS_DM_00880], а при новых действиях (kPrepassed или kPrefailed) продолжить с замороженного значения счетчика [SWS_DM_00038].
При использовании устранения дребезга по времени действуют функциональные предусловия и постусловия:
Условный запуск таймера: при сообщении kPrepassed DM запускает таймер в направлении kFinallyHealed только в том случае, если он еще не запущен в этом направлении и событие еще не считается восстановленным [SWS_DM_00878].
Сокращенная квалификация неисправности: если напрямую сообщается kFailed или kPassed, DM немедленно устанавливает таймер устранения дребезга на соответствующее пороговое значение и завершает классификацию без времени ожидания [SWS_DM_00033], [SWS_DM_00036].
Исключительность замораживания: действие kFreezeDebouncing поддерживается DM исключительно для событий с устранением дребезга по времени [SWS_DM_00880].
Отсутствие сохранения счетчика: сохранение значения счетчика устранения дребезга при циклах сброса и запуска (debounceCounterStorage) для устранения дребезга по времени не предусмотрено AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 «Time-based debouncing»; таймер сбрасывается в ноль при каждом запуске [SWS_DM_00085].
Данное руководство основано на спецификации AUTOSAR Adaptive Platform R25-11 и обобщает требования к структуре ara::diag::TimeBased.
UML-диаграмма классов
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал