DEENESPTFRRUARHIKOZHNL
AUTOSAR_CP_SWS_CANStateManager FIG-510b56d143435f4e 823 × 1174 px 1 Release(s)

Figure 7.4: CANSM_BSM_DeinitPnSupported, sub state machine of CANSM_BSM_S_PRE_NOCOM

SHA-256 Inhalts-Fingerabdruck: 510b56d143435f4eb8f7999c995a34f61274c225cd34d6d8d74002d263fd59be
✦ KI-generierte Bildanalyse & technische Beschreibung Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08

1. Diagrammtyp & Architektur-Kontext

  • Klassifikation: UML-Zustandsdiagramm (State Machine Diagram, CANSM_BSM_DeinitPnSupported) mit hierarchischer Verschachtelung (Composite State CANSM_BSM_DeinitPnSupportedProceed), Pseudozuständen (Junction, ExitPoint), Do-Aktivitäten (do / DO_*), Wächterbedingungen ([G_*]) und asynchronen Trigger-Events (T_*).
  • Funktionale Einordnung: AUTOSAR Classic Platform (CP), Schicht: BSW System Services (CanSM – CAN State Manager).
  • Zweck: Detaillierte Sub-State-Machine innerhalb des übergeordneten Netzwerkzustands CANSM_BSM_S_PRE_NOCOM. Sie steuert das deterministische Herunterfahren (Deinitialisierung / De-Escalation) eines CAN-Netzwerks, wenn Partial Networking (PN) über CanSMPnSupport == TRUE aktiviert ist. Ziel ist das koordinierte Löschen von Wake-up Flags (WUF), das Überführen von CAN-Controller und CAN-Transceiver in den Standby-/Sleep-Zustand sowie die finale Überprüfung auf Zwischen-Wakeups vor dem Wechsel nach CANSM_BSM_S_NOCOM.

2. Komponenten, Entitäten & Schnittstellen

  • Hauptentität:
    • CanSM (CAN State Manager): Instanziiert die State Machine pro konfiguriertem CAN-Netzwerk (CanSMNetworkHandle).
  • Beteiligte BSW-Module & Interaktionspartner:
    • CanIf (CAN Interface): Vermittlungsschicht für Controller- und Transceiver-Aufrufe.
    • Can / CAN Controller: Unterliegt den Betriebsarten CAN_CS_STOPPED und CAN_CS_SLEEP.
    • CanTrcv / Transceiver: Zuständig für CANTRCV_TRCVMODE_NORMAL, CANTRCV_TRCVMODE_STANDBY sowie WUF-Handling.
    • ComM (Communication Manager): Empfänger der finalen Modusbestätigung (Wechsel zu COMM_NO_COMMUNICATION).
  • Do-Aktivitäten (API-Trigger via CanIf):
    • DO_CLEAR_TRCV_WUF: CanIf_ClearTrcvWufFlag(TransceiverId)
    • DO_SET_CC_MODE_STOPPED: CanIf_SetControllerMode(ControllerId, CAN_CS_STOPPED)
    • DO_SET_TRCV_MODE_NORMAL: CanIf_SetTrcvMode(TransceiverId, CANTRCV_TRCVMODE_NORMAL)
    • DO_SET_TRCV_MODE_STANDBY: CanIf_SetTrcvMode(TransceiverId, CANTRCV_TRCVMODE_STANDBY)
    • DO_SET_CC_MODE_SLEEP: CanIf_SetControllerMode(ControllerId, CAN_CS_SLEEP)
    • DO_CHECK_WFLAG: CanIf_CheckTrcvWakeFlag(TransceiverId)
  • Eingehende Ereignisse / Callback-Trigger (T_*):
    • T_CLEAR_WUF_INDICATED: Quittierung via CanSM_ClearTrcvWufFlagIndication(TransceiverId).
    • T_CC_STOPPED_INDICATED, T_CC_SLEEP_INDICATED: Quittierung via CanSM_ControllerModeIndication(ControllerId, ControllerMode).
    • T_TRCV_NORMAL_INDICATED, T_TRCV_STANDBY_INDICATED: Quittierung via CanSM_TransceiverModeIndication(TransceiverId, TransceiverMode).
    • T_CHECK_WFLAG_INDICATED: Quittierung via CanSM_CheckTransceiverWakeFlagIndication(TransceiverId).
  • Wächterbedingungen ([G_*]):
    • Evaluieren den synchronen Rückgabewert (Std_ReturnType) der aufgerufenen CanIf-API (E_OK vs. E_NOT_OK).

3. Dynamisches Verhalten & Sequenzablauf

Jede Sequenzstufe folgt dem strikten AUTOSAR-Muster aus Aktion → Synchron-Guard → Wartezustand (_WAIT) → Asynchrone Indication / Timeout-Retry:

  1. WUF löschen:
    • Eintritt in S_PN_CLEAR_WUF → DO_CLEAR_TRCV_WUF.
    • Bei [G_PN_CLEAR_WUF_E_OK] Wechsel in S_PN_CLEAR_WUF_WAIT.
    • T_CLEAR_WUF_INDICATED (synchron oder asynchron) führt zu S_CC_STOPPED.
    • Bei T_CLEAR_WUF_TIMEOUT Rücksprung nach S_PN_CLEAR_WUF (Wiederholungszähler greift).
  2. Controller stoppen:
    • In S_CC_STOPPED → DO_SET_CC_MODE_STOPPED.
    • [G_CC_STOPPED_E_OK] → S_CC_STOPPED_WAIT.
    • T_CC_STOPPED_INDICATED führt weiter zu S_TRCV_NORMAL.
    • T_CC_STOPPED_TIMEOUT triggert Retry auf S_CC_STOPPED.
  3. Transceiver konditionieren (NORMAL → STANDBY):
    • In S_TRCV_NORMAL → DO_SET_TRCV_MODE_NORMAL. Der Zwischenschritt über NORMAL ist hardwaretechnisch erforderlich, um die autonome PN-Erkennungslogik im Transceiver scharfzuschalten bzw. zurückzusetzen.
    • Nach Indication T_TRCV_NORMAL_INDICATED Wechsel zu S_TRCV_STANDBY → DO_SET_TRCV_MODE_STANDBY.
    • Nach Indication T_TRCV_STANDBY_INDICATED Wechsel zu S_CC_SLEEP. Beide Schritte besitzen Timeout-Schleifen zur Wiederholung.
  4. Controller in Sleep versetzen & Verzweigung:
    • In S_CC_SLEEP → DO_SET_CC_MODE_SLEEP.
    • [G_CC_SLEEP_E_OK] → S_CC_SLEEP_WAIT.
    • Erfolgszweig: Empfängt CanSM die Bestätigung T_CC_SLEEP_INDICATED, wechselt der Automat zu S_CHECK_WFLAG_IN_CC_SLEEP.
    • Timeout-Zweig (CANSM_BSM_T_CC_SLEEP_TIMEOUT): Konnte der Controller nicht in SLEEP versetzt werden, wechselt der Automat nach S_CHECK_WFLAG_IN_NOT_CC_SLEEP.
  5. Abschließende Wake-Flag-Prüfung:
    • Pfad Controller im Sleep (S_CHECK_WFLAG_IN_CC_SLEEP):
      • DO_CHECK_WFLAG. Nach Erhalt von T_CHECK_WFLAG_INDICATED (direkt oder via S_CHECK_WUF_IN_CC_SLEEP_WAIT) verlässt der Automat die Sub-State-Machine über den ExitPoint. Die Deinitialisierung war erfolgreich; CANSM_BSM_S_PRE_NOCOM kann Richtung CANSM_BSM_S_NOCOM terminieren.
    • Pfad Controller NICHT im Sleep (S_CHECK_WFLAG_IN_NOT_CC_SLEEP):
      • DO_CHECK_WFLAG. Bei Eintreffen von T_CHECK_WFLAG_INDICATED führt der Pfad (entweder direkt oder via S_CHECK_WUF_IN_NOT_CC_SLEEP_WAIT über den Pseudozustand Junction) vollständig zurück an den Anfang (S_PN_CLEAR_WUF). Der Deinitialisierungsversuch wird von vorn gestartet, da ein undefinierter Zustand vorliegt oder ein Wake-up während des Shutdowns eingetreten ist.

4. Normative Relevanz & Entwickler-Hinweise

  • Asynchronitäts-Paradigma: Sämtliche Übergänge sind darauf ausgelegt, dass Treiberaufrufe (Can, CanTrcv) entweder sofort synchron (E_OK) oder verzögert via Callback-Indication zurückkehren können. Fehlen die konfigurierten Indications (CanSM_...Indication), blockiert der State-Manager bis zum Ablauf der Timeouts.
  • Konfigurationsparameter (SWS-Bezug):
    • CanSMModeRequestRepetitionTime: Bestimmt die Zeitspanne bis zum Feuern der T_*_TIMEOUT-Transitionen.
    • CanSMModeRequestRepetitionMax: Begrenzt die Anzahl der Retries pro Zustand, bevor DET (CANSM_E_MODE_CHANGE_FAILED) oder DEM (CANSM_E_BUS_OPERATION) gemeldet wird.
    • CanSMPnSupport: Muss auf TRUE stehen, andernfalls wird die einfachere Deinit-Sequenz ohne WUF-Handling (CANSM_BSM_DeinitPnNotSupported) durchlaufen.
  • Transceiver-Treiberanforderung: Der unterlagerte CanTrcv-Treiber muss für Partial Networking die selektive Aufweckfilterung (ISO 11898-1/2) unterstützen und die APIs ClearTrcvWufFlag sowie CheckTrcvWakeFlag robust bedienen.
  • Race Condition Prevention: Die Rückwärtsschleife von S_CHECK_WFLAG_IN_NOT_CC_SLEEP zu S_PN_CLEAR_WUF verhindert, dass Steuergeräte schlafen gelegt werden, während auf dem Bus bereits ein neuer Frame eingegangen ist, der vom Controller aufgrund des verpassten Sleep-Zustands nicht sauber als Wakeup-Event registriert werden konnte.

Versionsvergleich KI-generiert · gemini-3.8-flash (via agy)

R24-11 → R25-11 keine inhaltliche Änderung Vorgänger: FIG-7b4995f63c039622

Keine inhaltlichen Änderungen erkennbar.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

CANSM_BSM_DeinitPnSupported | CANSM_BSM_DeinitPnSupportedProceed | ExitPoint | S_PN_CLEAR_WUF | do / DO_CLEAR_TRCV_WUF | S_PN_CLEAR_WUF_WAIT | S_CC_STOPPED | do / DO_SET_CC_MODE_STOPPED | S_CC_STOPPED_WAIT | S_TRCV_STANDBY | do / DO_SET_TRCV_MODE_STANDBY | S_TRCV_STANDBY_WAIT | S_CC_SLEEP | do / DO_SET_CC_MODE_SLEEP | S_CC_SLEEP_WAIT | S_CHECK_WFLAG_IN_CC_SLEEP | do / DO_CHECK_WFLAG | S_CHECK_WUF_IN_CC_SLEEP_WAIT | S_CHECK_WFLAG_IN_NOT_CC_SLEEP | do / DO_CHECK_WFLAG | S_CHECK_WUF_IN_NOT_CC_SLEEP_WAIT | S_TRCV_NORMAL | do / DO_SET_TRCV_MODE_NORMAL | S_TRCV_NORMAL_WAIT | Junction | T_TRCV_NORMAL_TIMEOUT | T_CHECK_WFLAG_TIMEOUT | T_CLEAR_WUF_TIMEOUT | T_CLEAR_WUF_INDICATED | T_TRCV_STANDBY_TIMOUT | T_CHECK_WFLAG_INDICATED | T_TRCV_STANDBY_INDICATED | T_CC_STOPPED_TIMEOUT | T_CHECK_WFLAG_INDICATED | T_TRCV_NORMAL_INDICATED | T_CC_STOPPED_INDICATED | [G_TRCV_NORMAL_E_OK] | T_CC_STOPPED_INDICATED [G_CC_STOPPED_E_OK] | T_CHECK_WFLAG_TIMEOUT | T_CC_SLEEP_INDICATED | T_CC_SLEEP_INDICATED | [G_PN_CLEAR_WUF_E_OK] | T_CHECK_WFLAG_INDICATED | CANSM_BSM_T_CC_SLEEP_TIMEOUT | [G_CHECK_WFLAG_E_OK] | T_CHECK_WFLAG_INDICATED [G_CC_SLEEP_E_OK] | T_TRCV_NORMAL_INDICATED | T_CLEAR_WUF_INDICATED | [G_CHECK_WFLAG_E_OK] | T_TRCV_STANDBY_INDICATED [G_TRCV_STANDBY_E_OK]

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R25-11 AUTOSAR_CP_SWS_CANStateManager S. 36 7.4 Figure 7.4: CANSM_BSM_DeinitPnSupported, sub state machine of CANSM_BSM_S_PRE_NOCOM