DEENESPTFRRUARHIKOZHNL

结构体 ara::diag::TimeBased

[SWS_DM_00539] Upstream: RS_Diag_04225

struct TimeBased {...};

Represents the parameters for time-based debouncing.

Header-Datei#include "ara/diag/monitor_types.h"
Forwarding-Header#include "ara/diag/diag_fwd.h"
Scopenamespace ara::diag

用户指南人工智能生成

定义监视器初始化时诊断事件基于时间的去抖的时间限值。
AI 生成 未审核 模型: 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 定义了 AUTOSAR Adaptive Platform 的 Diagnostic Management 中诊断事件基于时间的去抖(time-based debouncing)的配置参数 [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],并基于内部定时器和配置的阈值计算事件状态位 kTestFailed AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 “Time-based debouncing”。

TimeBasedContext Anwendung Anwendung TimeBased TimeBased Anwendung->TimeBased erzeugt Monitor Monitor Anwendung->Monitor instanziiert TimeBased->Monitor konfiguriert DM DM Monitor->DM meldet Aktionen

上下文图:应用程序、ara::diag::TimeBased、ara::diag::Monitor 与 Diagnostic Management 之间的交互。来源:[SWS_DM_00539]、[SWS_DM_00550]、[SWS_DM_00015]

生命周期

作为一个没有动态资源的基础数据容器,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 没有内部同步机制,因此应用侧必须排除对共享实例的并发写访问。

使用路径

典型用法分为以下步骤:

  1. 参数化与初始化:应用程序实例化 ara::diag::TimeBased,设置 failedMs [SWS_DM_00629] 以及 passedMs [SWS_DM_00630],并将该结构传递给 ara::diag::Monitor 的构造函数 [SWS_DM_00550]。
  2. 定时器初始化:DM 启动去抖服务,并将事件内部定时器初始化为零值 [SWS_DM_00085]。
  3. 上报预检结果:当监视器检测到无故障条件时,它会使用 kPrepassed 调用 ReportMonitorAction。DM 朝着愈合状态方向启动定时器 [SWS_DM_00878],并持续更新故障检测计数器(Fault Detection Counter, FDC)[SWS_DM_00030]。
  4. 判定:当定时器达到阈值 passedMs 时,DM 将该事件判定为 kFinallyHealed [SWS_DM_00878]。如果监视器改报 kFailed,则定时器直接设置为 failedMs,且事件作为 kFinallyDefective 进行处理 [SWS_DM_00033]。
  5. 冻结与恢复:如有需要,可通过 ReportMonitorAction(kFreezeDebouncing) 暂停去抖 [SWS_DM_00880],并在发生新动作(kPrepassed 或 kPrefailed)时从冻结的计数器数值继续恢复 [SWS_DM_00038]。
基于时间的去抖动流程应用监视器DMMonitor(specifier, notifier, timeBased)Aktivierung Entprellung & Timer-Init (0)ReportMonitorAction(kPrepassed)Start Timer Richtung kFinallyHealedTimer erreicht passedMsEvent als kFinallyHealed qualifiziertoptDebounce einfrierenReportMonitorAction(kFreezeDebouncing)Timer einfrierenReportMonitorAction(kPrepassed)使用冻结的数值继续运行定时器optDirekter FehlerReportMonitorAction(kFailed)将定时器设置为 failedMs 并置为 kFinallyDefective

时序图:基于时间的去抖过程中应用程序、监视器与 DM 之间的交互。来源:[SWS_DM_00550]、[SWS_DM_00085]、[SWS_DM_00878]、[SWS_DM_00033]、[SWS_DM_00880]、[SWS_DM_00038]

错误场景

使用基于时间的去抖时,适用以下功能性前置和后置条件:

  • 条件性定时器启动:在上报 kPrepassed 时,DM 仅在定时器尚未朝该方向运行且事件尚未被视为已愈合时,才朝 kFinallyHealed 方向启动定时器 [SWS_DM_00878]。
  • 缩短的故障判定:如果直接上报 kFailed 或 kPassed,DM 将去抖定时器立即设置为相应阈值,并不经等待地完成分类判定 [SWS_DM_00033]、[SWS_DM_00036]。
  • 冻结操作的排他性:DM 仅针对具有基于时间去抖的事件支持动作 kFreezeDebouncing [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.

G nara__diag__TimeBased382 «struct» TimeBased + failedMs + passedMs

常量

failedMs 变量

time until failed in (ms)

std::uint32_t failedMs;
passedMs 变量

time until passed in (ms)

std::uint32_t passedMs;

常量 / 变量文档

变量 failedMs [SWS_DM_00629] Upstream: RS_Diag_04225

std::uint32_t failedMs;

time until failed in (ms)

Header-Datei#include "ara/diag/monitor_types.h"
Scopestruct ara::diag::TimeBased
SymbolfailedMs
Typstd::uint32_t

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00629
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00629@rel:R25-11#08ebf9c9
Content hash
08ebf9c9
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00629
Status: valid/unmigrated Version: rel:R25-11#b234c6d7 Versionshistorie & Revisions (1 transition, 7 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00629@rel:R25-11#b234c6d7
Point-in-Time History:
Recorded Revisions (7):
  • R25-11rel:R25-11#8525d65b2026-09-30
  • R20-11rel:R20-11#447b3a6c2026-10-14
  • R21-11rel:R21-11#deb8168b2026-10-14
  • R22-11rel:R22-11#c639f78a2026-10-14
  • R23-11rel:R23-11#bbcf28342026-10-14
  • R24-11rel:R24-11#b234c6d72026-10-14
  • R25-11rel:R25-11#b234c6d72026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

变量 passedMs [SWS_DM_00630] Upstream: RS_Diag_04225

std::uint32_t passedMs;

time until passed in (ms)

Header-Datei#include "ara/diag/monitor_types.h"
Scopestruct ara::diag::TimeBased
SymbolpassedMs
Typstd::uint32_t

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00630
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00630@rel:R25-11#fa213b6c
Content hash
fa213b6c
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00630
Status: valid/unmigrated Version: rel:R25-11#6fd0c00c Versionshistorie & Revisions (1 transition, 7 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00630@rel:R25-11#6fd0c00c
Point-in-Time History:
Recorded Revisions (7):
  • R25-11rel:R25-11#7291fe1e2026-09-30
  • R20-11rel:R20-11#3097b5012026-10-14
  • R21-11rel:R21-11#5ff8b1572026-10-14
  • R22-11rel:R22-11#5132f5a52026-10-14
  • R23-11rel:R23-11#6fd0c00c2026-10-14
  • R24-11rel:R24-11#6fd0c00c2026-10-14
  • R25-11rel:R25-11#6fd0c00c2026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill