DEENESPTFRRUARHIKOZHNL

FlexRay State Manager (FrSM)

ModulFrSM (FlexRay State Manager)
BSW-Modul-ID142
Standard-Header#include "FrSM.h"
SWS-SpezifikationAUTOSAR_SWS_FlexRayStateManager.pdf
ClusterFlexRay

ModulegidsAI-GEGENEREERD

Stuurt per FlexRay-cluster het wekken, opstarten en uitschakelen van de buscommunicatie aan in opdracht van ComM en BswM.
DOOR AI GEGENEREERD ongecontroleerd Model: claude-opus-5-5 · Inspanning: high · Temperatuur: niet regelbaar · Prompt: a3de1ac25c5e Herkomst Open vragen (6)
Causaal anker: R20-11 Geldig vanaf R20-11 Nieuw gesynthetiseerd voor deze specificatiestand.
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

Stuurt per FlexRay-cluster het wekken, opstarten en uitschakelen van de buscommunicatie aan in opdracht van ComM en BswM.

De FlexRay State Manager voert per FlexRay-cluster een toestandsautomaat uit die de communicatieverzoeken van de ComM omzet in wekken, opstarten en uitschakelen via het FlexRay Interface. FrSM_RequestComMode slaat het verzoek slechts op; het wordt pas verwerkt in de cyclische hoofdfunctie van het cluster [SWS_FrSM_00020]. Bereikte modi meldt de FrSM aan ComM en BswM. De BswM kan het key-slot-only-bedrijf beëindigen of alle clusters naar de ontvangstmodus schakelen. Als FullCom gelden alleen FRSM_ONLINE en FRSM_LOW_NUMBER_OF_COLDSTARTERS (SWS FrSM p. 38).

De FlexRay State Manager zet de communicatieverzoeken van de ComM voor elk FlexRay-cluster om in aanroepen naar het FlexRay Interface. Terug meldt hij de busmodus via ComM_BusSM_ModeIndication en zijn gedetailleerde toestand via BswM_FrSM_CurrentState [SWS_FrSM_00096]. Optioneel maakt hij gebruik van DEM, DET en FrNm evenals verdere FrIf-diensten [SWS_FrSM_00097]. FrSm_Init brengt alle clusterautomaten naar FRSM_READY (SWS FrSM p. 35).

frsm_kontext ComM ComM FrSM FrSM (één automaat per FlexRay-cluster) ComM->FrSM FrSM_RequestComMode FrSM_GetCurrentComMode BswM BswM BswM->FrSM FrSm_SetEcuPassive FrSm_AllSlots SchM SchM SchM->FrSM FrSM_MainFunction_<FrSMCluster.ShortName> FrSM->ComM ComM_BusSM_ModeIndication FrSM->BswM BswM_FrSM_CurrentState FrIf FrIf FrSM->FrIf FrIf_StartCommunication, FrIf_AllowColdstart, FrIf_HaltCommunication, FrIf_SetTransceiverMode, FrIf_SendWUP, FrIf_AllSlots, … Dem Dem FrSM->Dem Dem_SetEventStatus Det Det FrSM->Det Det_ReportError FrNm FrNm FrSM->FrNm FrNm_StartupError CDD <Cdd> (optional) FrSM->CDD <Cdd>_SyncLossErrorIndication

Contextdiagram: ComM en BswM sturen aan, SchM klokt, FrIf voert uit; fouten gaan naar DEM, DET, FrNm en optioneel naar een CDD. Bronnen: [SWS_FrSM_00096], [SWS_FrSM_00097]

FrSM_RequestComMode slaat het verzoek slechts op. Pas de hoofdfunctie van het cluster verwerkt het (SWS FrSM p. 36, [SWS_FrSM_00118]). Bij een FullCom-verzoek bepaalt de voorwaarde WUReason of de FrSM zelf wekpatronen verzendt, een eenzijdig wekken doorstuurt naar het tweede kanaal of direct opstart. Bij het opstarten roept hij FrIf_StartCommunication aan en bij koudestart-ECU's aanvullend FrIf_AllowColdstart. Bij POC normal active wisselt hij naar FRSM_ONLINE (SWS FrSM p. 20, SWS FrSM p. 52). Wordt NoCom vanuit een FullCom-toestand aangevraagd, dan stopt de FrSM de communicatie al tijdens de aanroep. Na t_TrcvStdbyDelay zet hij de transceivers op stand-by en keert terug naar FRSM_READY [SWS_FrSM_00209].

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu Parallel: ECU-passieve modus (alle clusters) start READY FRSM_READY start->READY FrSm_Init (T00) WAKEUP FRSM_WAKEUP READY->WAKEUP FullCom angefordert, eigenes Wecken STARTUP FRSM_STARTUP READY->STARTUP FullCom angefordert, kein eigenes Wecken WAKEUP->STARTUP wakeupFinished KEYSLOT FRSM_KEYSLOT_ONLY STARTUP->KEYSLOT POC normal active, alleen key-slots ONLINE FRSM_ONLINE (FullCom) STARTUP->ONLINE POC normal active KEYSLOT->ONLINE FrSm_AllSlots HALT FRSM_HALT_REQ KEYSLOT->HALT NoCom LOWNUM FRSM_LOW_NUMBER_OF_COLDSTARTERS (FullCom) ONLINE->LOWNUM Interpretation: lowNumberOfColdstarters OPASSIVE FRSM_ONLINE_PASSIVE ONLINE->OPASSIVE Interpretation: POC normal passive ONLINE->HALT NoCom LOWNUM->ONLINE Interpretation: genug Kaltstarter LOWNUM->HALT NoCom OPASSIVE->ONLINE Interpretation: wieder normal active OPASSIVE->HALT NoCom HALT->READY t_TrcvStdbyDelay verstreken of FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

Toestandsdiagram: acht hoofdtoestanden per cluster en de parallelle ECU-passieve modus. De overgangen naar FRSM_ONLINE_PASSIVE en FRSM_LOW_NUMBER_OF_COLDSTARTERS zijn geïnterpreteerd. Bronnen: SWS FrSM p. 18, SWS FrSM p. 27

Voor ComM geldt FullCom alleen in FRSM_ONLINE en FRSM_LOW_NUMBER_OF_COLDSTARTERS (SWS FrSM p. 38). Twee speciale bedrijfsmodi staan de BswM ter beschikking. FrSm_AllSlots beëindigt het key-slot-only-bedrijf [SWS_FrSM_00172]. FrSm_SetEcuPassive schakelt alle clusters naar de zuivere ontvangstmodus [SWS_FrSM_00174]. FrSM_BswM_StateType meldt beide dimensies gecombineerd [SWS_FrSM_00199]. In R20-11 heten enkele functies nog FrSm_…, en wijken de service-ID's af van latere releases [SWS_FrSM_00020].

In geval van fouten meldt de FrSM ontwikkelingsfouten zoals FRSM_E_UNINIT of FRSM_E_INV_HANDLE [SWS_FrSM_91001]. Lukt de synchronisatie niet, dan roept hij FrNm_StartupError aan. Een synchronisatieverlies meldt hij optioneel via <Cdd>_SyncLossErrorIndication [SWS_FrSM_00190].

Rol: bustoestandsmanager tussen ComM, BswM en FlexRay Interface

De FlexRay State Manager (FrSM) vertaalt de communicatieverzoeken van de ComM voor elk FlexRay-cluster in aansturingsaanroepen naar het FlexRay Interface. ComM vraagt via FrSM_RequestComMode een ComM_ModeType voor een NetworkHandleType aan [SWS_FrSM_00020]. De bereikte busmodus meldt de FrSM via ComM_BusSM_ModeIndication terug, zijn gedetailleerde toestand via BswM_FrSM_CurrentState aan de BswM [SWS_FrSM_00096]. Controller en transceiver stuurt hij nooit direct aan. Hij gebruikt daarvoor FrIf-functies die in de specificatie zijn gebundeld tot functie-elementen zoals FE_START (FrIf_StartCommunication) of FE_HALT (FrIf_HaltCommunication) (SWS FrSM p. 22).

Daarnaast maakt de FrSM gebruik van optionele diensten: Dem_SetEventStatus, Det_ReportError, FrIf_AllSlots, FrIf_GetNumOfStartupFrames, FrIf_GetWakeupRxStatus, FrIf_SetWakeupChannel en FrNm_StartupError [SWS_FrSM_00097]. Zijn typen importeert hij onder andere uit ComM, ComStack_Types, DEM, Fr en FrIf [SWS_FrSM_00095]. De BswM stuurt de FrSM ook actief aan. Hij kan deze bijvoorbeeld voor diagnosegevallen via FrSm_SetEcuPassive() in de passieve modus zetten (EXP ModeMgmt p. 36).

frsm_kontext ComM ComM FrSM FrSM (één automaat per FlexRay-cluster) ComM->FrSM FrSM_RequestComMode FrSM_GetCurrentComMode BswM BswM BswM->FrSM FrSm_SetEcuPassive FrSm_AllSlots SchM SchM SchM->FrSM FrSM_MainFunction_<FrSMCluster.ShortName> FrSM->ComM ComM_BusSM_ModeIndication FrSM->BswM BswM_FrSM_CurrentState FrIf FrIf FrSM->FrIf FrIf_StartCommunication, FrIf_AllowColdstart, FrIf_HaltCommunication, FrIf_SetTransceiverMode, FrIf_SendWUP, FrIf_AllSlots, … Dem Dem FrSM->Dem Dem_SetEventStatus Det Det FrSM->Det Det_ReportError FrNm FrNm FrSM->FrNm FrNm_StartupError CDD <Cdd> (optional) FrSM->CDD <Cdd>_SyncLossErrorIndication

Contextdiagram: de FrSM staat tussen de verzoekers ComM/BswM, de klokgever SchM en de uitvoerende FrIf en meldt fouten aan DEM, DET, FrNm en een optionele CDD. Bronnen: [SWS_FrSM_00096], [SWS_FrSM_00097], [SWS_FrSM_00118], [SWS_FrSM_00190]

Toestandsautomaat per cluster en parallelle ECU-passieve modus

Voor elk cluster voert de FrSM een eigen automaat met acht toestanden: FRSM_READY, FRSM_WAKEUP, FRSM_STARTUP, FRSM_HALT_REQ, FRSM_ONLINE, FRSM_ONLINE_PASSIVE, FRSM_KEYSLOT_ONLY en FRSM_LOW_NUMBER_OF_COLDSTARTERS. Elke toestand is toegewezen aan een POC-toestand van de controller:

  • FRSM_ONLINE komt overeen met POC:normal active met volledige communicatie.
  • FRSM_ONLINE_PASSIVE komt overeen met POC:normal passive. Vanwege fouten in de kloksynchronisatie worden daar geen gegevens verzonden of ontvangen.
  • In FRSM_KEYSLOT_ONLY mag alleen in de key-slots worden verzonden.

Deze toewijzing beschrijft SWS FrSM p. 18. De overgangen zijn in tabelvorm gedefinieerd en de FrSM voert de bijbehorende acties uit in de daar vastgelegde volgorde (SWS FrSM p. 24).

Parallel daaraan bestaan de toestanden FRSM_ECU_ACTIVE en FRSM_ECU_PASSIVE (SWS FrSM p. 18). FrSm_SetEcuPassive schakelt alle clusters van de ECU gezamenlijk om naar de zuivere ontvangstmodus of terug [SWS_FrSM_00174]. Bevindt een cluster zich daarbij niet in FRSM_READY, dan voert de FrSM daarvoor FE_TRCV_NORMAL uit (SWS FrSM p. 40). FrSM_BswM_StateType beeldt beide dimensies af: bij elke hoofdtoestand hoort een waarde met suffix _ECU_PASSIVE, van FRSM_BSWM_READY (0x00) tot FRSM_LOW_NUMBER_OF_COLDSTARTERS_ECU_PASSIVE (0x0F) [SWS_FrSM_00199]. De twee passieve begrippen mogen niet met elkaar worden verward. ONLINE_PASSIVE is het gevolg van een synchronisatiestoring, terwijl ECU_PASSIVE juist een beoogde ontvangstmodus is.

Naar buiten toe telt alleen de modus die FrSM_GetCurrentComMode levert. COMM_FULL_COMMUNICATION geldt uitsluitend in FRSM_ONLINE en FRSM_LOW_NUMBER_OF_COLDSTARTERS; in alle andere toestanden geldt COMM_NO_COMMUNICATION (SWS FrSM p. 38, [SWS_FrSM_00024]). SilentCom wordt op FlexRay niet ondersteund (SWS FrSM p. 18).

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu Parallel: ECU-passieve modus (alle clusters) start READY FRSM_READY start->READY FrSm_Init (T00) WAKEUP FRSM_WAKEUP READY->WAKEUP FullCom angefordert, eigenes Wecken STARTUP FRSM_STARTUP READY->STARTUP FullCom angefordert, kein eigenes Wecken WAKEUP->STARTUP wakeupFinished KEYSLOT FRSM_KEYSLOT_ONLY STARTUP->KEYSLOT POC normal active, alleen key-slots ONLINE FRSM_ONLINE (FullCom) STARTUP->ONLINE POC normal active KEYSLOT->ONLINE FrSm_AllSlots HALT FRSM_HALT_REQ KEYSLOT->HALT NoCom LOWNUM FRSM_LOW_NUMBER_OF_COLDSTARTERS (FullCom) ONLINE->LOWNUM Interpretation: lowNumberOfColdstarters OPASSIVE FRSM_ONLINE_PASSIVE ONLINE->OPASSIVE Interpretation: POC normal passive ONLINE->HALT NoCom LOWNUM->ONLINE Interpretation: genug Kaltstarter LOWNUM->HALT NoCom OPASSIVE->ONLINE Interpretation: wieder normal active OPASSIVE->HALT NoCom HALT->READY t_TrcvStdbyDelay verstreken of FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

Toestandsdiagram: hoofdautomaat per cluster met de paden wekken → opstarten → online en halt → ready, daarnaast de voor alle clusters gemeenschappelijke passieve ECU-modus. Interpretatie: de overgangen naar FRSM_ONLINE_PASSIVE en FRSM_LOW_NUMBER_OF_COLDSTARTERS zijn afgeleid uit de toestandstabel en voorwaarden. Bronnen: SWS FrSM p. 27, SWS FrSM p. 18, SWS FrSM p. 20, [SWS_FrSM_00209]

Van FrSm_Init tot volledige communicatie: wekken en opstarten

FrSm_Init is synchroon en niet-re-entrant. De functie ontvangt een pointer naar FrSM_ConfigType, de implementatiespecifieke post-build-configuratie ([SWS_FrSM_00013], [SWS_FrSM_00198]). Deze zet alle clusterautomaten op FRSM_READY (overgang T00) en slaat het configuratieadres op. Is FrSMDevErrorDetect actief, dan onthoudt de functie bovendien de succesvolle initialisatie (SWS FrSM p. 35).

FrSM_RequestComMode werkt asynchroon. De functie slaat de gewenste modus op als reqComMode. Deze wordt pas verwerkt bij de volgende run van FrSM_MainFunction_<FrSMCluster.ShortName> in de automaat van het desbetreffende cluster (SWS FrSM p. 36). Er is één hoofdfunctie per cluster, beschikbaar gesteld via SchM_FrSm.h [SWS_FrSM_00118]. De oproepcyclus daarvan volgt vermoedelijk de parameter FrSMMainFunctionCycleTime (SWS FrSM p. 62). Vraag (open)

Bij een FullCom-verzoek in FRSM_READY evalueert de FrSM de voorwaarde WUReason. Als FrSMCheckWakeupReason is ingesteld, vraagt deze elke transceiver uit via FrIf_GetTransceiverWUReason. Het resultaat is NO_WU_BY_BUS, PARTIAL_WU_BY_BUS of ALL_WU_BY_BUS; zonder controle geldt NO_WU_BY_BUS (SWS FrSM p. 20). Werd de ECU door de bus gewekt, dan start deze op zonder zelf te wekken (SWS FrSM p. 52). Kwam het weksignaal bij een tweekanaalsknooppunt slechts op één kanaal binnen, dan stuurt FE_SET_WU_CHANNEL_FORWARD dit door naar het andere kanaal (SWS FrSM p. 22, SWS FrSM p. 56).

frsm_weckentscheidung start req reqComMode = FullCom in FRSM_READY start->req chk FrSMCheckWakeupReason? req->chk nobus WUReason := NO_WU_BY_BUS chk->nobus false query FrIf_GetTransceiverWUReason je Transceiver chk->query true wuecu Interpretation: FrSMIsWakeupEcu? nobus->wuecu wu WUReason? query->wu wu->wuecu NO_WU_BY_BUS forward FRSM_WAKEUP: FE_SET_WU_CHANNEL_FORWARD, FE_WAKEUP (anderer Kanal) wu->forward PARTIAL_WU_BY_BUS (Zweikanalknoten) startup FRSM_STARTUP: FE_START, ggf. FE_ALLOW_COLDSTART wu->startup ALL_WU_BY_BUS wakeup FRSM_WAKEUP: FE_SET_WU_CHANNEL_INITIAL, FE_WAKEUP wuecu->wakeup ja wuecu->startup nein wakeup->startup wakeupFinished forward->startup wakeupFinished

Activiteitendiagram: uit WUReason volgt of de FrSM zelf wekt, een weksignaal doorstuurt of direct opstart. Interpretatie: de tak voor niet-wekkende ECU's is afgeleid uit FrSMIsWakeupEcu. Bronnen: SWS FrSM p. 20, SWS FrSM p. 22, SWS FrSM p. 54

In FRSM_WAKEUP verzendt de FrSM wekpatronen via FE_WAKEUP, oftewel FrIf_SendWUP per controller. Dit wordt herhaald totdat FrSMNumWakeupPatterns is bereikt of busverkeer is gedetecteerd (busTrafficDetected). Gaat een controller vanwege een fout naar HALT, dan wordt de overdracht afgebroken (SWS FrSM p. 27).

frsm_weckmuster start init Eintritt in FRSM_WAKEUP: wakeupCounter := 1 start->init cond wakeupCounter < FrSMNumWakeupPatterns en busTrafficDetected = false? init->cond wait Wachten tot alle controllers van het cluster in FR_READY staan cond->wait ja done wakeupFinished = true cond->done nein halt Controller wegens fout in HALT? wait->halt status vPOC!WakeupStatus? halt->status nein halt->done ja: Abbruch bus busTrafficDetected := true status->bus FR_WAKEUP_RECEIVED_HEADER of FR_WAKEUP_RECEIVED_WUP tx wakeupTransmitted := true status->tx FR_WAKEUP_TRANSMITTED notx wakeupTransmitted := false status->notx anders again busTrafficDetected = false en wakeupCounter < FrSMNumWakeupPatterns? bus->again tx->again notx->again fe FE_WAKEUP: FrIf_SendWUP je Controller again->fe ja inc wakeupCounter verhogen again->inc nein fe->inc inc->cond

Activiteitendiagram: herhaalde verzending van wekpatronen met evaluatie van vPOC!WakeupStatus en afbreken bij controller-HALT. Bronnen: SWS FrSM p. 27, SWS FrSM p. 18

Het opstarten begint met FrIf_StartCommunication. FrIf_AllowColdstart roept de FrSM alleen op bij FrSMIsColdstartEcu (SWS FrSM p. 22). Daarna meldt deze FRSM_STARTUP aan de BswM. Zodra de POC-status normal active is, volgen FrIf_SetState(FRIF_GOTO_ONLINE), de melding FRSM_ONLINE en de modusindicatie aan de ComM (SWS FrSM p. 50, SWS FrSM p. 52).

Eenkanalig wekken en startup tot FRSM_ONLINEComMBswMSchMFrSMFrIfDemFrSM_RequestComMode(NetworkHandle,COMM_FULL_COMMUNICATION)E_OKreqComMode gespeichert,Evaluatie in de hoofdfunctieUse Case: Wecken (FRSM_WAKEUP)FrSM_MainFunction_<FrSMCluster.ShortName>loopvoor alle controllers van het clusterFrIf_GetTransceiverWUReason(CtrlIdx, ChnlIdx,TrcvWUReasonPtr)FRTRCV_WU_POWER_ONFrIf_SetTransceiverMode(CtrlIdx, ChnlIdx,FRTRCV_TRCVMODE_NORMAL)FrIf_SendWUP(CtrlIdx)BswM_FrSM_CurrentState(FRSM_BSWM_WAKEUP)FrSM_MainFunction_<FrSMCluster.ShortName>FrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FrIf_GetWakeupRxStatus(CtrlIdx)FR_POCSTATE_WAKEUPUse Case: Anlauf (FRSM_STARTUP)FrSM_MainFunction_<FrSMCluster.ShortName>loopvoor alle controllers van het clusterFrIf_StartCommunication(CtrlIdx)optFrSMIsColdstartEcuFrIf_AllowColdstart(CtrlIdx)BswM_FrSM_CurrentState(FRSM_BSWM_STARTUP)Use Case: Vollkommunikation (FRSM_ONLINE)FrSM_MainFunction_<FrSMCluster.ShortName>FrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FR_POCSTATE_NORMAL_ACTIVEDem_SetEventStatus(FRSM_E_CLUSTER_STARTUP,PASSED)FrIf_SetState(ClstIdx, FRIF_GOTO_ONLINE)BswM_FrSM_CurrentState(FRSM_BSWM_ONLINE)ComM_BusSM_ModeIndication(NetworkHandle,COMM_FULL_COMMUNICATION)

Sequentiediagram: eenkanaals wekken en opstarten tot FRSM_ONLINE, verdeeld over meerdere runs van de hoofdfunctie. Interpretatie: de volgorde binnen de runs is gereconstrueerd uit de specificatieafbeeldingen en vereenvoudigd. Bronnen: SWS FrSM p. 50, SWS FrSM p. 52, [SWS_FrSM_00118]

Key-slot-only-modus, vrijgave van alle slots en weinig koudstarters

Is de controller geconfigureerd met pKeySlotOnlyEnabled, dan eindigt het opstarten eerst in FRSM_KEYSLOT_ONLY. Deze toestand komt overeen met POC:normal active met vPOCSlotMode ≠ AllSlots (SWS FrSM p. 18, SWS FrSM p. 55). Deze wordt verlaten via FrSm_AllSlots [SWS_FrSM_00172]. De functie roept FrIf_AllSlots op voor elke controller van het cluster en levert alleen E_OK op als alle oproepen E_OK opleverden. Deze kan via FrSMAllSlotsSupport tijdens de pre-compile-fase worden uitgeschakeld (SWS FrSM p. 41). Volgens de specificatieafbeelding geeft de BswM de volledige werking vrij. Pas daarna meldt de FrSM FRSM_ONLINE en FullCom aan de ComM (SWS FrSM p. 57).

Startup in de key-slot-only-modus en vrijgave van alle slotsComMBswMSchMFrSMFrIfUse Case: Anlauf endet in FRSM_KEYSLOT_ONLYFrSM_MainFunction_<FrSMCluster.ShortName>loopvoor alle controllers van het clusterFrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FR_POCSTATE_NORMAL_ACTIVE,SlotMode = FR_SLOTMODE_KEYSLOTFrIf_SetState(ClstIdx, FRIF_GOTO_ONLINE)BswM_FrSM_CurrentState(FRSM_BSWM_KEYSLOT_ONLY)Voor ComM geldt nog steeds NoCom(FrSM_GetCurrentComMode)Use Case: Freigabe aller SlotsFrSm_AllSlots(NetworkHandle)loopvoor alle controllers van het clusterFrIf_AllSlots(CtrlIdx)E_OKE_OK (alleen wanneer alle aanroepen E_OK zijn)FrSM_MainFunction_<FrSMCluster.ShortName>FrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FR_POCSTATE_NORMAL_ACTIVE,SlotMode = FR_SLOTMODE_ALLBswM_FrSM_CurrentState(FRSM_BSWM_ONLINE)ComM_BusSM_ModeIndication(NetworkHandle,COMM_FULL_COMMUNICATION)

Sequentiediagram: tweetraps opstartproces: eerst alleen key-slots, daarna vrijgave van alle slots via FrSm_AllSlots. De afbeelding in de specificatie labelt de BswM-melding als FRSM_ONLINE_KEYSLOT_ONLY; hier staat de R20-11-waarde FRSM_BSWM_KEYSLOT_ONLY. Bronnen: SWS FrSM p. 57, SWS FrSM p. 55, [SWS_FrSM_00172], [SWS_FrSM_00199]

FRSM_LOW_NUMBER_OF_COLDSTARTERS betekent volledige communicatie waarbij het cluster uitsluitend via sync-frames is gesynchroniseerd (SWS FrSM p. 18). Aan de voorwaarde lowNumberOfColdstarters is voldaan wanneer FrIf_GetNumOfStartupFrames() minder startup-frames meldt dan de optionele parameter FrSMMinNumberOfColdstarter voorschrijft (SWS FrSM p. 20).

Terugkeer naar NoCom en timers van het cluster

NoCom kan worden aangevraagd terwijl de automaat in FRSM_ONLINE, FRSM_KEYSLOT_ONLY, FRSM_LOW_NUMBER_OF_COLDSTARTERS of FRSM_ONLINE_PASSIVE staat. In dat geval verwerkt FrSM_RequestComMode de overgang al direct, zonder op de hoofdfunctie te wachten (SWS FrSM p. 36). Hiertoe behoren FrIf_SetState(FRIF_GOTO_OFFLINE), FrIf_HaltCommunication en de melding HALT_REQ aan de BswM. In latere runs meldt de FrSM NoCom aan de ComM, initialiseert deze de controllers opnieuw, zet de transceivers in STANDBY en meldt READY (SWS FrSM p. 58).

Overgang van FullCom naar NoComComMBswMSchMFrSMFrIfFrSM_RequestComMode(NetworkHandle,COMM_NO_COMMUNICATION)Bustoestand is een FullCom-toestand:Overgang direct in de aanroepFrIf_SetState(CtrlIdx, FRIF_GOTO_OFFLINE)FrIf_HaltCommunication(CtrlIdx)BswM_FrSM_CurrentState(FRSM_BSWM_HALT_REQ)E_OKFrSM_MainFunction_<FrSMCluster.ShortName>FrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)ComM_BusSM_ModeIndication(NetworkHandle,COMM_NO_COMMUNICATION)na afloop van t_TrcvStdbyDelay resp. direct,wanneer FrSMTrcvStdbyDelay ontbreekt of 0 isFrIf_ControllerInit(CtrlIdx)FrIf_SetTransceiverMode(CtrlIdx, ChnlIdx,STANDBY)BswM_FrSM_CurrentState(FRSM_BSWM_READY)

Sequentiediagram: van FullCom naar NoCom. De halt vindt synchroon plaats in de verzoekaanroep; herinitialisatie en standby volgen tijdsvertraagd in de hoofdfunctie. Interpretatie: de volgorde is gereconstrueerd uit de specificatieafbeelding. Bronnen: SWS FrSM p. 58, SWS FrSM p. 36, [SWS_FrSM_00209]

Per cluster werkt de FrSM met meerdere timers (SWS FrSM p. 21):

  • t1 vertraagt FrIf_AllowColdstart. Bij FrSMDurationT1 = 0 volgt de oproep direct op FrIf_StartCommunication.
  • t2 bepaalt na welke tijd het opstarten wordt herhaald.
  • t3 bewaakt de overgang naar FullCom.
  • t4 zorgt ervoor dat een tweekanaalsknooppunt zijn koudstart-blokkeerbit wist.
  • t_TrcvStdbyDelay vertraagt herinitialisatie en standby. Is FrSMTrcvStdbyDelay niet geconfigureerd of 0, dan gaat de automaat direct van FRSM_HALT_REQ naar FRSM_READY [SWS_FrSM_00209].

Configuratie per FrSMCluster en interfacestatus R20-11

De container FrSMCluster (1..*) beschrijft een cluster dat op een ECU meerdere controllers kan omvatten. Deze bevat:

  • de timers FrSMDurationT1 tot FrSMDurationT4,
  • de rollen FrSMIsColdstartEcu en FrSMIsWakeupEcu,
  • FrSMNumWakeupPatterns en FrSMStartupRepetitions,
  • de referenties FrSMComMNetworkHandleRef en FrSMFrIfClusterRef.

Deze inhoud wordt beschreven door SWS FrSM p. 62. Algemeen configureerbaar zijn bovendien FrSMVersionInfoApi voor FrSM_GetVersionInfo en FrSMSyncLossErrorIndicationName (SystemTemplate p. 1528, [SWS_FrSM_00029]).

Veel detailpassages zijn afkomstig uit latere releases. Voor R20-11 gelden de requirements, en deze wijken op enkele punten af:

  • De functies heten FrSm_Init, FrSm_AllSlots en FrSm_SetEcuPassive en zijn beschikbaar via FrSm.h.
  • FrSM_RequestComMode heeft service-ID 0x02 en is re-entrant voor verschillende clusters. De latere passages noemen 0x40 en andere parameternamen.
  • FrSM_GetCurrentComMode heeft in R20-11 de service-ID 0x03.

Onderbouwing: [SWS_FrSM_00013], [SWS_FrSM_00020], [SWS_FrSM_00024], SWS FrSM p. 36.

Gedrag in het foutgeval

Voor ontwikkelingsfouten zijn de volgende codes gedefinieerd [SWS_FrSM_91001]:

  • FRSM_E_PARAM_POINTER: ongeldige pointer. De service keert direct terug.
  • FRSM_E_INV_HANDLE: ongeldige netwerk-handle.
  • FRSM_E_UNINIT: module niet geïnitialiseerd.
  • FRSM_E_INV_MODE: ongeldige communicatiemodus.
  • FRSM_INIT_FAILED: initialisatie mislukt.

Enkele gevallen zijn uitdrukkelijk geregeld. FrSm_AllSlots meldt bij een ongeldige handle FRSM_E_INV_HANDLE en levert E_NOT_OK op (SWS FrSM p. 41). FrSm_SetEcuPassive meldt vóór de initialisatie een ontwikkelingsfout (SWS FrSM p. 40). FrSM_GetCurrentComMode levert in R20-11 zonder voorafgaande initialisatie E_NOT_OK [SWS_FrSM_00024] op.

Op busniveau reageert de FrSM als volgt:

  • Bij fouten in de kloksynchronisatie valt het cluster terug naar FRSM_ONLINE_PASSIVE (SWS FrSM p. 18).
  • Lukt de synchronisatie niet, dan roept de FrSM FrNm_StartupError op [SWS_FrSM_00097].
  • Het opstarten wordt na t2 herhaald (SWS FrSM p. 21). FrSMStartupRepetitions begrenst vermoedelijk het aantal herhalingen. Vraag (open)

De opstartstatus meldt de FrSM als DEM-event FRSM_E_CLUSTER_STARTUP, in geval van succes met PASSED (SWS FrSM p. 52). De event-ID's staan in FrSMClusterDemEventParameterRefs (SWS FrSM p. 62). Optioneel informeert <Cdd>_SyncLossErrorIndication met true over een synchronisatieverlies. Met false geeft de functie aan dat de synchronisatie is hersteld of dat het FullCom-verzoek is ingetrokken [SWS_FrSM_00190]. Zonder geconfigureerde functienaam vervalt deze melding (SystemTemplate p. 1528).

Verdere gedetailleerde bewijzen

Door AI gegenereerde handleiding op basis van de requirements van R20-11 en bijbehorende specificatiepassages, deels uit latere releases. Bepalend zijn de gelinkte requirements; interpretaties zijn als zodanig aangeduid.

FlexRay State Manager (FrSM)

Controls the operational states and startup/wakeup of FlexRay clusters.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

functie FrSm_Init [SWS_FrSM_00013] 📄 PDF

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Initializes the Flex Ray State Manager.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 4f916985d2dc Herkomst Open vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

De functie FrSm_Init dient volgens specificatie [SWS_FrSM_00013] voor de initialisatie van de FlexRay State Manager (FrSM). Deze heeft service-ID 0x01 en is gedeclareerd via het headerbestand FrSm.h.

Gebruik en parameters

De uitvoering van FrSm_Init vindt synchroon plaats [SWS_FrSM_00013]. De aanroep verwacht precies één invoerparameter:

  • FrSM_ConfigPtr: Pointer naar de geselecteerde configuratiestructuur van het type const FrSM_ConfigType*, waarmee de initialisatiegegevens van de module worden geleverd [SWS_FrSM_00013].

De functie heeft geen retourwaarde (void) en definieert noch invoer-/uitvoerparameters (inout) noch zuivere uitvoerparameters (out) [SWS_FrSM_00013].

Gelijktijdigheid en beperkingen

Wat de uitvoeringscontext betreft is de interface geclassificeerd als niet re-entrant (Non Reentrant) [SWS_FrSM_00013]. Gelijktijdige of geneste aanroepen van de functie zijn daarom niet toegestaan. Interpretatie: de aanroep zal doorgaans plaatsvinden tijdens de systeeminitialisatie, voordat reguliere communicatie- of besturingsdiensten van de FrSM worden gebruikt. Vraag Q-881936607a7268bd (open)

Foutafhandeling

In de elementspecificatie [SWS_FrSM_00013] zijn geen retourcodes of specifieke mechanismen voor foutafhandeling zoals DET- of DEM-meldingen opgenomen.

Deze gebruiksinstructie is geautomatiseerd aangemaakt en is uitsluitend gebaseerd op de specificatiegegevens van AUTOSAR R20-11.

Implementer's Guide volgt (complexiteit I1)

functie FrSM_RequestComMode [SWS_FrSM_00020] 📄 PDF

Std_ReturnType FrSM_RequestComMode (NetworkHandleType NetworkHandle, ComM_ModeType ComM_Mode);

This API function is used by the Com M to startup or shutdown the communication on a Flex Ray cluster.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 0805fe94c490 Herkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

Gebruik en semantiek

De functie FrSM_RequestComMode wordt aangeroepen door de Communication Manager (ComM) om de communicatie op een bepaald FlexRay-cluster te starten of af te sluiten [SWS_FrSM_00020]. De interface is gedeclareerd via de header FrSm.h en heeft het service-ID 0x02 [SWS_FrSM_00020]. Aangezien de service als asynchroon is gespecificeerd, bevestigt de functie uitsluitend de acceptatie van het omschakelverzoek, terwijl de daadwerkelijke toestandsovergang aansluitend wordt afgehandeld [SWS_FrSM_00020].

Parameters en retourwaarden

De functie verwacht twee invoerparameters voor het besturen van de communicatiemodus [SWS_FrSM_00020]:

  • NetworkHandle (type NetworkHandleType): Bepaalt het FlexRay-cluster waarvoor een communicatiemodus wordt aangevraagd [SWS_FrSM_00020].
  • ComM_Mode (type ComM_ModeType): Bevat de door ComM gewenste communicatiemodus voor het opgegeven netwerk [SWS_FrSM_00020].

De retourwaarde van het type Std_ReturnType geeft het resultaat van de controle van het verzoek aan [SWS_FrSM_00020]:

  • E_OK: Het verzoek voor de moduswijziging is succesvol geaccepteerd [SWS_FrSM_00020].
  • E_NOT_OK: Het verzoek is afgewezen en niet geaccepteerd [SWS_FrSM_00020].

Gelijktijdigheid en beperkingen

Volgens de specificatie is FrSM_RequestComMode re-entrant uitgevoerd voor verschillende FlexRay-clusters [SWS_FrSM_00020]. Voor hetzelfde FlexRay-cluster is de aanroep vermoedelijk niet-re-entrant, waardoor concurrerende aanroepen voor dezelfde instantie moeten worden vermeden. Specifieke foutcodes zoals DET- of DEM-meldingen zijn niet gedefinieerd in de payload [SWS_FrSM_00020].

Deze gebruiksinstructie is geautomatiseerd gegenereerd op basis van de specificatie AUTOSAR Classic R20-11.

Implementer's Guide volgt (complexiteit I1)

functie FrSM_GetCurrentComMode [SWS_FrSM_00024] 📄 PDF

Std_ReturnType FrSM_GetCurrentComMode (NetworkHandleType NetworkHandle, ComM_ModeType* ComM_ModePtr);

This API function can be used to determine the current communication mode of a Flex Ray cluster.

functie FrSM_GetVersionInfo [SWS_FrSM_00029] 📄 PDF

void FrSM_GetVersionInfo (Std_VersionInfoType* versioninfo);

This service returns the version information of this module. The version information includes:  Module Id  Vendor Id  Vendor specific version numbers (BSW00407 ). This function shall be pre compile time configurable On/ Off by the configuration parameter: FRSM_ VERSION_ INFO_ API Hint: If source code for caller and callee of this function is available this function should be realized as a macro. The macro should be defined in the modules header file.

functie FrSm_AllSlots [SWS_FrSM_00172] 📄 PDF

Std_ReturnType FrSm_AllSlots (NetworkHandleType NetworkHandle);

Service FrSm_AllSlots.

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: f8b54cb7f004 Herkomst Open vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

De asynchrone servicefunctie FrSm_AllSlots wordt beschikbaar gesteld via de header FrSm.h en dient ertoe de zogeheten “Key Slot Only Mode” voor een gespecificeerd FlexRay-cluster te verlaten [SWS_FrSM_00172].

Aanroep en parameters: Ter identificatie van het communicatienetwerk wordt aan parameter NetworkHandle het desbetreffende FlexRay-cluster doorgegeven waarvoor de omschakelmodus moet worden aangevraagd [SWS_FrSM_00172]. Er bestaan geen verdere overdrachtparameters [SWS_FrSM_00172].

Retourwaarde en semantiek: De aanroep retourneert E_OK wanneer het omschakelverzoek met succes is geaccepteerd, of E_NOT_OK indien het verzoek is afgewezen [SWS_FrSM_00172]. Aangezien het om een asynchrone bewerking gaat, bevestigt E_OK slechts de ontvangst van de opdracht; de daadwerkelijke overgang naar de volledige werking van alle slots wordt vermoedelijk met enige vertraging effectief in de context van de State Manager. Vraag Q-d559e4ea5183ff7c (open)

Concurrency en beperkingen: De functie is re-entrant voor verschillende FlexRay-clusters [SWS_FrSM_00172]. Voor identieke clusters is deze niet re-entrant ontworpen, waardoor aanroepers parallelle verzoeken naar hetzelfde cluster moeten synchroniseren. Specifieke foutcodes voor DET of DEM worden niet genoemd in de functiebeschrijving.

Deze gebruiksinstructie is geautomatiseerd gegenereerd. Deze is gebaseerd op AUTOSAR CP R20-11.

functie FrSm_SetEcuPassive [SWS_FrSM_00174] 📄 PDF

Std_ReturnType FrSm_SetEcuPassive (boolean FrSM_Passive);

This API function can be used to set all Flex Ray clusters of the ECU to a receive AUTOSAR CP R20 - of Document ID : AUTOSAR_S WS_FlexRayStateManager only mode.

type FrSM_ConfigType [SWS_FrSM_00198] 📄 PDF

This type contains the implementation - specific post build time configuration structure AUTOSAR CP R20 - of Document ID : AUTOSAR_S WS_FlexRayStateManager that is for Fr SM_ Init.

type FrSM_BswM_StateType [SWS_FrSM_00199] 📄 PDF

This type defines the states that are reported to the Bsw

DOOR AI GEGENEREERD ongecontroleerd Model: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: a8440a0185d0 Herkomst Open vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel

Gebruik

Het enumeratietype FrSM_BswM_StateType definieert conform [SWS_FrSM_00199] de toestanden van de FlexRay State Manager (FrSM) die aan de BswM (Basic Software Mode Manager) worden gemeld. De declaratie en beschikbaarstelling van het type vinden plaats via het headerbestand FrSm.h [SWS_FrSM_00199].

Wisselwerking en waardebereik

De waarden van dit type worden gebruikt in samenspel met de interface BswM_FrSM_CurrentState om de actuele bedrijfs- en communicatietoestand aan de BswM-module door te geven [SWS_FrSM_00199]. Het waardebereik omvat de volgende enumeratiewaarden:

  • FRSM_BSWM_READY (0x00) en FRSM_BSWM_READY_ECU_PASSIVE (0x01)
  • FRSM_BSWM_STARTUP (0x02) en FRSM_BSWM_STARTUP_ECU_PASSIVE (0x03)
  • FRSM_BSWM_WAKEUP (0x04) en FRSM_BSWM_WAKEUP_ECU_PASSIVE (0x05)
  • FRSM_BSWM_HALT_REQ (0x06) en FRSM_BSWM_HALT_REQ_ECU_PASSIVE (0x07)
  • FRSM_BSWM_KEYSLOT_ONLY (0x08) en FRSM_BSWM_KEYSLOT_ONLY_ECU_PASSIVE (0x09)
  • FRSM_BSWM_ONLINE (0x0A) en FRSM_BSWM_ONLINE_ECU_PASSIVE (0x0B)
  • FRSM_BSWM_ONLINE_PASSIVE (0x0C) en FRSM_BSWM_ONLINE_PASSIVE_ECU_PASSIVE (0x0D)
  • FRSM_LOW_NUMBER_OF_COLDSTARTERS (0x0E) en FRSM_LOW_NUMBER_OF_COLDSTARTERS_ECU_PASSIVE (0x0F)

Opvallend is de paarsgewijze structurering van de toestanden: elke basistoestand heeft een reguliere tegenhanger en een variant met het achtervoegsel _ECU_PASSIVE. Dit dient er vermoedelijk toe om de communicatietoestand van het FlexRay-cluster gecombineerd met de passieve modus van de ECU aan de BswM te melden, zodat deze passende moduswijzigingen kan coördineren. Vraag Q-f2d9296e40782b5a (open)

Deze tekst is gegenereerd door een AI en dient als oriëntatiehulp. Bepalend zijn de gerefereerde AUTOSAR-specificaties.

Implementer's Guide volgt (complexiteit I1)

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

Record
AUTOSAR/AP/record/CP_MOD_FrSM
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_FrSM@rel:R20-11#60a6f986
Content hash
60a6f986
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_FlexRayStateManager.pdf#nameddest=SWS_FrSM_00013

Themakaart

Detailweergave

Kies een item in de inhoudsopgave.

Initialisatie en status

This service returns the version information of this module. The version information includes:  Module Id  Vendor Id  Vendor specific version numbers (BSW00407 ). This function shall be pre compile time configurable On/ Off by the configuration parameter: FRSM_ VERSION_ INFO_ API Hint: If source code for caller and callee of this function is available this function should be realized as a macro. The macro should be defined in the modules header file.

void FrSM_GetVersionInfo (Std_VersionInfoType* versioninfo);
FrSm_Init functie

Initializes the Flex Ray State Manager.

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Diensten

Service FrSm_AllSlots.

Std_ReturnType FrSm_AllSlots (NetworkHandleType NetworkHandle);

This API function can be used to determine the current communication mode of a Flex Ray cluster.

Std_ReturnType FrSM_GetCurrentComMode (NetworkHandleType NetworkHandle, ComM_ModeType* ComM_ModePtr);

This API function is used by the Com M to startup or shutdown the communication on a Flex Ray cluster.

Std_ReturnType FrSM_RequestComMode (NetworkHandleType NetworkHandle, ComM_ModeType ComM_Mode);

This API function can be used to set all Flex Ray clusters of the ECU to a receive AUTOSAR CP R20 - of Document ID : AUTOSAR_S WS_FlexRayStateManager only mode.

Std_ReturnType FrSm_SetEcuPassive (boolean FrSM_Passive);

Typen

This type defines the states that are reported to the Bsw

This type contains the implementation - specific post build time configuration structure AUTOSAR CP R20 - of Document ID : AUTOSAR_S WS_FlexRayStateManager that is for Fr SM_ Init.