AUTOSAR_CP_SWS_CANStateManager
FIG-7b4995f63c039622
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:
7b4995f63c0396229b3a0a18ef7704e6e626209734f6a19b4c8e25b6d6e1b948
✦
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 StateCANSM_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) überCanSMPnSupport == TRUEaktiviert 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 nachCANSM_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 BetriebsartenCAN_CS_STOPPEDundCAN_CS_SLEEP.CanTrcv/ Transceiver: Zuständig fürCANTRCV_TRCVMODE_NORMAL,CANTRCV_TRCVMODE_STANDBYsowie WUF-Handling.ComM(Communication Manager): Empfänger der finalen Modusbestätigung (Wechsel zuCOMM_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 viaCanSM_ClearTrcvWufFlagIndication(TransceiverId).T_CC_STOPPED_INDICATED,T_CC_SLEEP_INDICATED: Quittierung viaCanSM_ControllerModeIndication(ControllerId, ControllerMode).T_TRCV_NORMAL_INDICATED,T_TRCV_STANDBY_INDICATED: Quittierung viaCanSM_TransceiverModeIndication(TransceiverId, TransceiverMode).T_CHECK_WFLAG_INDICATED: Quittierung viaCanSM_CheckTransceiverWakeFlagIndication(TransceiverId).
- Wächterbedingungen (
[G_*]):- Evaluieren den synchronen Rückgabewert (
Std_ReturnType) der aufgerufenen CanIf-API (E_OKvs.E_NOT_OK).
- Evaluieren den synchronen Rückgabewert (
3. Dynamisches Verhalten & Sequenzablauf
Jede Sequenzstufe folgt dem strikten AUTOSAR-Muster aus Aktion → Synchron-Guard → Wartezustand (_WAIT) → Asynchrone Indication / Timeout-Retry:
- WUF löschen:
- Eintritt in
S_PN_CLEAR_WUF→DO_CLEAR_TRCV_WUF. - Bei
[G_PN_CLEAR_WUF_E_OK]Wechsel inS_PN_CLEAR_WUF_WAIT. T_CLEAR_WUF_INDICATED(synchron oder asynchron) führt zuS_CC_STOPPED.- Bei
T_CLEAR_WUF_TIMEOUTRücksprung nachS_PN_CLEAR_WUF(Wiederholungszähler greift).
- Eintritt in
- Controller stoppen:
- In
S_CC_STOPPED→DO_SET_CC_MODE_STOPPED. [G_CC_STOPPED_E_OK]→S_CC_STOPPED_WAIT.T_CC_STOPPED_INDICATEDführt weiter zuS_TRCV_NORMAL.T_CC_STOPPED_TIMEOUTtriggert Retry aufS_CC_STOPPED.
- In
- 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_INDICATEDWechsel zuS_TRCV_STANDBY→DO_SET_TRCV_MODE_STANDBY. - Nach Indication
T_TRCV_STANDBY_INDICATEDWechsel zuS_CC_SLEEP. Beide Schritte besitzen Timeout-Schleifen zur Wiederholung.
- In
- 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
CanSMdie BestätigungT_CC_SLEEP_INDICATED, wechselt der Automat zuS_CHECK_WFLAG_IN_CC_SLEEP. - Timeout-Zweig (
CANSM_BSM_T_CC_SLEEP_TIMEOUT): Konnte der Controller nicht in SLEEP versetzt werden, wechselt der Automat nachS_CHECK_WFLAG_IN_NOT_CC_SLEEP.
- In
- Abschließende Wake-Flag-Prüfung:
- Pfad Controller im Sleep (
S_CHECK_WFLAG_IN_CC_SLEEP):DO_CHECK_WFLAG. Nach Erhalt vonT_CHECK_WFLAG_INDICATED(direkt oder viaS_CHECK_WUF_IN_CC_SLEEP_WAIT) verlässt der Automat die Sub-State-Machine über denExitPoint. Die Deinitialisierung war erfolgreich;CANSM_BSM_S_PRE_NOCOMkann RichtungCANSM_BSM_S_NOCOMterminieren.
- Pfad Controller NICHT im Sleep (
S_CHECK_WFLAG_IN_NOT_CC_SLEEP):DO_CHECK_WFLAG. Bei Eintreffen vonT_CHECK_WFLAG_INDICATEDführt der Pfad (entweder direkt oder viaS_CHECK_WUF_IN_NOT_CC_SLEEP_WAITüber den PseudozustandJunction) 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.
- Pfad Controller im Sleep (
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 derT_*_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 aufTRUEstehen, 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 APIsClearTrcvWufFlagsowieCheckTrcvWakeFlagrobust bedienen. - Race Condition Prevention: Die Rückwärtsschleife von
S_CHECK_WFLAG_IN_NOT_CC_SLEEPzuS_PN_CLEAR_WUFverhindert, 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.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.