Define los límites temporales para el antirrebote basado en tiempo de eventos de diagnóstico durante la inicialización del monitor.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: beb974918ec8ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Define los límites temporales para el antirrebote basado en tiempo de eventos de diagnóstico durante la inicialización del monitor.
La estructura de datos ara::diag::TimeBased sirve para la configuración del antirrebote basado en tiempo para eventos de diagnóstico [SWS_DM_00539]. Transfiere al constructor de ara::diag::Monitor los valores de umbral en milisegundos tras cuyo transcurso un evento se clasifica como restablecido (curado) o defectuoso. Diagnostic Management inicia y controla el temporizador de antirrebote interno en función de estos umbrales al recibir notificaciones de estado entrantes. El almacenamiento persistente del valor del contador interno a través de reinicios no es compatible para los procedimientos de antirrebote basados en tiempo AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 «Time-based debouncing».
Contexto
La estructura de C++ ara::diag::TimeBased define los parámetros de configuración para el antirrebote basado en tiempo (time-based debouncing) de eventos de diagnóstico en Diagnostic Management de la AUTOSAR Adaptive Platform [SWS_DM_00539]. Encapsula las dos duraciones en milisegundos que son determinantes para las transiciones de estado de un evento de diagnóstico: failedMs como umbral de fallo [SWS_DM_00629] y passedMs como umbral de curación [SWS_DM_00630].
En el sistema global, la estructura conecta tres componentes esenciales: la función de aplicación de diagnóstico, la clase ara::diag::Monitor y Diagnostic Management (DM) [SWS_DM_00550]. La aplicación instancia la estructura para definir tiempos de antirrebote específicos del evento y la pasa al constructor del monitor de diagnóstico [SWS_DM_00550]. Acto seguido, el DM activa el algoritmo de antirrebote basado en tiempo para este evento [SWS_DM_00015] y calcula el bit de estado del evento basándose en el temporizador interno y en los umbrales configurados kTestFailedAUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 «Time-based debouncing».
Diagrama de contexto: interacción entre la aplicación, ara::diag::TimeBased, ara::diag::Monitor y Diagnostic Management. Fuentes: [SWS_DM_00539], [SWS_DM_00550], [SWS_DM_00015]
Ciclo de vida
Como contenedor de datos simple sin recursos dinámicos, ara::diag::TimeBased posee un ciclo de vida sencillo [SWS_DM_00539]. La aplicación suele crear la estructura localmente en la pila o en el área de memoria estática, la inicializa con los tiempos de destino y la pasa por valor al constructor de ara::diag::Monitor[SWS_DM_00550] (AUTOSAR_AP_SWS_Diagnostics §8.40.1.1.2.3 «Monitor»).
Interpretación: mediante la transferencia por valor, los parámetros se copian durante la creación del monitor, de modo que el objeto TimeBased original puede descartarse de forma segura tras finalizar la llamada al constructor. Pregunta (abierta) A partir de ese momento, el DM gestiona el estado dinámico del temporizador de antirrebote de forma autónoma y establece inicialmente su valor en 0 al iniciar el sistema [SWS_DM_00085]. Dado que TimeBased no presenta mecanismos de sincronización internos, los accesos concurrentes de escritura a una instancia compartida deben excluirse del lado de la aplicación.
Ruta de uso
El uso típico se divide en los siguientes pasos:
Parametrización e inicialización: la aplicación instancia ara::diag::TimeBased, establece failedMs[SWS_DM_00629] así como passedMs[SWS_DM_00630] y pasa la estructura al constructor de ara::diag::Monitor[SWS_DM_00550].
Inicialización del temporizador: el DM inicia el servicio de antirrebote e inicializa el temporizador interno del evento con el valor cero [SWS_DM_00085].
Notificación de resultados de comprobación previa: si el monitor detecta una condición sin fallos, llama a ReportMonitorAction con kPrepassed. El DM inicia el temporizador en dirección al estado de curación [SWS_DM_00878] y actualiza continuamente el contador de detección de fallos (Fault Detection Counter, FDC) [SWS_DM_00030].
Calificación: si el temporizador alcanza el umbral passedMs, el DM califica el evento como kFinallyHealed[SWS_DM_00878]. Si, en cambio, el monitor notifica kFailed, el temporizador se ajusta directamente a failedMs y el evento se procesa como kFinallyDefective[SWS_DM_00033].
Congelación y reanudación: mediante ReportMonitorAction(kFreezeDebouncing), el antirrebote puede detenerse en caso necesario [SWS_DM_00880] y, ante nuevas acciones (kPrepassed o kPrefailed), reanudarse a partir del recuento congelado [SWS_DM_00038].
Al utilizar el antirrebote basado en tiempo rigen precondiciones y poscondiciones funcionales:
Inicio condicional del temporizador: Al notificarse kPrepassed, el DM inicia el temporizador hacia kFinallyHealed únicamente si este no se encuentra ya funcionando en dicha dirección y el evento no se considera ya curado [SWS_DM_00878].
Calificación de fallos abreviada: Si se notifica directamente kFailed o kPassed, el DM ajusta de inmediato el temporizador de antirrebote al umbral correspondiente y concluye la clasificación sin tiempo de espera [SWS_DM_00033], [SWS_DM_00036].
Exclusividad de la congelación: La acción kFreezeDebouncing solo es compatible con el DM para eventos con antirrebote basado en tiempo [SWS_DM_00880].
Sin persistencia del contador: No está previsto el almacenamiento del valor del contador de antirrebote a lo largo de ciclos de reinicio y puesta en marcha (debounceCounterStorage) para antirrebotes basados en tiempo AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.5.2 «Time-based debouncing»; el temporizador se restablece a cero en cada puesta en marcha [SWS_DM_00085].
Esta guía se basa en la especificación AUTOSAR Adaptive Platform R25-11 y resume los requisitos para la estructura ara::diag::TimeBased.
Diagrama de clases UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán