DEENESPTFRRUARHIKOZHNL

FlexRay State Manager (FrSM)

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

Руководство по модулюСОЗДАНО ИИ

Управляет пробуждением, запуском и отключением коммуникации по шине для каждого FlexRay-кластера по поручению ComM и BswM.
СОЗДАНО ИИ не проверено Модель: claude-opus-5-5 · Усилие: high · Температура: не регулируется · Промпт: a3de1ac25c5e Происхождение Открытые вопросы (6)
Причинный якорь: R20-11 Действует с R20-11 Заново синтезировано для этой версии спецификации.
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Управляет пробуждением, запуском и отключением коммуникации по шине для каждого FlexRay-кластера по поручению ComM и BswM.

FlexRay State Manager запускает для каждого FlexRay-кластера конечный автомат, который преобразует коммуникационные требования ComM в пробуждение, запуск и отключение через FlexRay Interface. FrSM_RequestComMode только сохраняет требование; его обработка происходит лишь в циклической главной функции кластера [SWS_FrSM_00020]. О достигнутых режимах FrSM сообщает в ComM и BswM. BswM может завершить работу в режиме Key-Slot-Only или переключить все кластеры в режим приёма. В качестве FullCom рассматриваются только FRSM_ONLINE и FRSM_LOW_NUMBER_OF_COLDSTARTERS (SWS FrSM с. 38).

FlexRay State Manager преобразует коммуникационные требования ComM для каждого FlexRay-кластера в вызовы к FlexRay Interface. В ответ он сообщает о режиме шины через ComM_BusSM_ModeIndication и о своём детальном состоянии через BswM_FrSM_CurrentState [SWS_FrSM_00096]. Опционально он использует DEM, DET и FrNm, а также другие службы FrIf [SWS_FrSM_00097]. FrSm_Init переводит автоматы всех кластеров в FRSM_READY (SWS FrSM с. 35).

frsm_kontext ComM ComM FrSM FrSM (по одному автомату на каждый кластер FlexRay) 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

Контекстная диаграмма: ComM и BswM управляют, SchM задаёт такты, FrIf выполняет; ошибки направляются в DEM, DET, FrNm и опционально в CDD. Источники: [SWS_FrSM_00096], [SWS_FrSM_00097]

FrSM_RequestComMode лишь сохраняет запрос. Только главная функция кластера обрабатывает его (SWS FrSM с. 36, [SWS_FrSM_00118]). При запросе FullCom условие WUReason определяет, отправляет ли FrSM шаблоны пробуждения самостоятельно, пересылает ли одностороннее пробуждение на второй канал или запускается напрямую. При запуске он вызывает FrIf_StartCommunication, а для ECU с холодным стартом — дополнительно FrIf_AllowColdstart. При POC normal active он переходит в FRSM_ONLINE (SWS FrSM с. 20, SWS FrSM с. 52). Если NoCom запрашивается из состояния FullCom, FrSM останавливает коммуникацию уже при вызове. После t_TrcvStdbyDelay он переводит трансиверы в режим ожидания (standby) и возвращается в FRSM_READY [SWS_FrSM_00209].

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu Параллельно: пассивный режим ECU (все кластеры) 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, только ключевые слоты 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 истек или FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

Диаграмма состояний: восемь основных состояний для каждого кластера и параллельный пассивный режим ECU. Переходы в FRSM_ONLINE_PASSIVE и FRSM_LOW_NUMBER_OF_COLDSTARTERS интерпретированы. Источники: SWS FrSM с. 18, SWS FrSM с. 27

Для ComM статус FullCom действует только в FRSM_ONLINE и FRSM_LOW_NUMBER_OF_COLDSTARTERS (SWS FrSM с. 38). В распоряжении BswM находятся два специальных режима работы. FrSm_AllSlots завершает работу в режиме Key-Slot-Only [SWS_FrSM_00172]. FrSm_SetEcuPassive переключает все кластеры в режим только приёма [SWS_FrSM_00174]. FrSM_BswM_StateType сообщает об обоих измерениях в комбинации [SWS_FrSM_00199]. В R20-11 некоторые функции ещё называются FrSm_…, а идентификаторы сервисов (Service IDs) отличаются от более поздних релизов [SWS_FrSM_00020].

В случае сбоя FrSM сообщает об ошибках разработки, таких как FRSM_E_UNINIT или FRSM_E_INV_HANDLE [SWS_FrSM_91001]. Если синхронизация не удаётся, он вызывает FrNm_StartupError. О потере синхронизации он опционально сообщает через <Cdd>_SyncLossErrorIndication [SWS_FrSM_00190].

Роль: менеджер состояния шины между ComM, BswM и FlexRay Interface

FlexRay State Manager (FrSM) преобразует коммуникационные требования ComM для каждого FlexRay-кластера в управляющие вызовы к FlexRay Interface. ComM запрашивает через FrSM_RequestComMode ComM_ModeType для NetworkHandleType [SWS_FrSM_00020]. О достигнутом режиме шины FrSM сообщает обратно через ComM_BusSM_ModeIndication, а о своём детальном состоянии — в BswM BswM_FrSM_CurrentState [SWS_FrSM_00096]. Он никогда не управляет контроллерами и трансиверами напрямую. Для этого он использует функции FrIf, сгруппированные в спецификации в такие функциональные элементы, как FE_START (FrIf_StartCommunication) или FE_HALT (FrIf_HaltCommunication) (SWS FrSM с. 22).

Кроме того, FrSM использует опциональные службы: Dem_SetEventStatus, Det_ReportError, FrIf_AllSlots, FrIf_GetNumOfStartupFrames, FrIf_GetWakeupRxStatus, FrIf_SetWakeupChannel и FrNm_StartupError [SWS_FrSM_00097]. Свои типы он импортирует, среди прочего, из ComM, ComStack_Types, DEM, Fr и FrIf [SWS_FrSM_00095]. BswM также активно управляет FrSM. Например, для сценариев диагностики он может перевести его в пассивный режим через FrSm_SetEcuPassive() (EXP ModeMgmt с. 36).

frsm_kontext ComM ComM FrSM FrSM (по одному автомату на каждый кластер FlexRay) 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

Контекстная диаграмма: FrSM находится между запрашивающими сторонами ComM/BswM, генератором тактов SchM и исполняющим FrIf, а также сообщает об ошибках в DEM, DET, FrNm и опциональный CDD. Источники: [SWS_FrSM_00096], [SWS_FrSM_00097], [SWS_FrSM_00118], [SWS_FrSM_00190]

Конечный автомат для каждого кластера и параллельный пассивный режим ECU

Для каждого кластера FrSM поддерживает собственный автомат с восемью состояниями: FRSM_READY, FRSM_WAKEUP, FRSM_STARTUP, FRSM_HALT_REQ, FRSM_ONLINE, FRSM_ONLINE_PASSIVE, FRSM_KEYSLOT_ONLY и FRSM_LOW_NUMBER_OF_COLDSTARTERS. Каждое состояние сопоставлено с POC-состоянием контроллера:

  • FRSM_ONLINE соответствует POC:normal active с полной коммуникацией.
  • FRSM_ONLINE_PASSIVE соответствует POC:normal passive. Из-за ошибок синхронизации часов данные там не передаются и не принимаются.
  • В FRSM_KEYSLOT_ONLY разрешается выполнять передачу только в слотах Key-Slot.

Это сопоставление описывает SWS FrSM с. 18. Переходы определены таблично, и FrSM выполняет их действия в установленном там порядке (SWS FrSM с. 24).

Параллельно с этим существуют состояния FRSM_ECU_ACTIVE и FRSM_ECU_PASSIVE (SWS FrSM с. 18). FrSm_SetEcuPassive переключает все кластеры ECU совместно в режим только приема или обратно [SWS_FrSM_00174]. Если при этом кластер не находится в FRSM_READY, FrSM выполняет для него FE_TRCV_NORMAL (SWS FrSM с. 40). FrSM_BswM_StateType отображает оба измерения: для каждого основного состояния существует значение с суффиксом _ECU_PASSIVE, от FRSM_BSWM_READY (0x00) до FRSM_LOW_NUMBER_OF_COLDSTARTERS_ECU_PASSIVE (0x0F) [SWS_FrSM_00199]. Эти два понятия пассивного состояния не следует путать. ONLINE_PASSIVE является следствием нарушения синхронизации, ECU_PASSIVE же — намеренным режимом приема.

Во внешнем представлении значение имеет только режим, возвращаемый FrSM_GetCurrentComMode. COMM_FULL_COMMUNICATION действует исключительно в FRSM_ONLINE и FRSM_LOW_NUMBER_OF_COLDSTARTERS, во всех остальных состояниях действует COMM_NO_COMMUNICATION (SWS FrSM с. 38, [SWS_FrSM_00024]). SilentCom на FlexRay не поддерживается (SWS FrSM с. 18).

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu Параллельно: пассивный режим ECU (все кластеры) 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, только ключевые слоты 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 истек или FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

Диаграмма состояний: основной автомат на каждый кластер с путями пробуждение → запуск → онлайн, а также останов → готовность, наряду с пассивным режимом ECU, общим для всех кластеров. Интерпретация: переходы к FRSM_ONLINE_PASSIVE и FRSM_LOW_NUMBER_OF_COLDSTARTERS выведены из таблицы состояний и условий. Источники: SWS FrSM с. 27, SWS FrSM с. 18, SWS FrSM с. 20, [SWS_FrSM_00209]

От FrSm_Init до полной коммуникации: пробуждение и запуск

FrSm_Init является синхронной и нереэнтрантной. Функция получает указатель на FrSM_ConfigType, зависящую от реализации конфигурацию post-build ([SWS_FrSM_00013], [SWS_FrSM_00198]). Она переводит все автоматы кластеров в FRSM_READY (переход T00) и сохраняет адрес конфигурации. Если активно FrSMDevErrorDetect, она дополнительно фиксирует успешную инициализацию (SWS FrSM с. 35).

FrSM_RequestComMode работает асинхронно. Функция сохраняет запрошенный режим как reqComMode. Он обрабатывается только при следующем выполнении FrSM_MainFunction_<FrSMCluster.ShortName> в автомате соответствующего кластера (SWS FrSM с. 36). Для каждого кластера предусмотрена одна основная функция, предоставляемая через SchM_FrSm.h [SWS_FrSM_00118]. Период ее вызова, предположительно, определяется параметром FrSMMainFunctionCycleTime (SWS FrSM с. 62). Вопрос (открытый)

При запросе FullCom в FRSM_READY FrSM вычисляет условие WUReason. Если установлен FrSMCheckWakeupReason, он опрашивает каждый трансивер через FrIf_GetTransceiverWUReason. Результатом является NO_WU_BY_BUS, PARTIAL_WU_BY_BUS или ALL_WU_BY_BUS; без проверки принимается NO_WU_BY_BUS (SWS FrSM с. 20). Если ECU был разбужен шиной, он запускается без собственного пробуждения (SWS FrSM с. 52). Если в двухканальном узле пробуждение поступило только по одному каналу, FE_SET_WU_CHANNEL_FORWARD пересылает его на другой канал (SWS FrSM с. 22, SWS FrSM с. 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 да wuecu->startup нет wakeup->startup wakeupFinished forward->startup wakeupFinished

Диаграмма деятельности: из WUReason определяется, выполняет ли FrSM пробуждение самостоятельно, пересылает ли пробуждение или запускается напрямую. Интерпретация: ветвь для ECU без функции пробуждения выведена из FrSMIsWakeupEcu. Источники: SWS FrSM с. 20, SWS FrSM с. 22, SWS FrSM с. 54

В FRSM_WAKEUP FrSM передает шаблоны пробуждения через FE_WAKEUP, то есть FrIf_SendWUP на каждый контроллер. Он повторяет это до тех пор, пока не будет достигнут FrSMNumWakeupPatterns или не будет обнаружен трафик на шине (busTrafficDetected). Если контроллер переходит в HALT из-за ошибки, передача прерывается (SWS FrSM с. 27).

frsm_weckmuster start init Eintritt in FRSM_WAKEUP: wakeupCounter := 1 start->init cond wakeupCounter < FrSMNumWakeupPatterns и busTrafficDetected = false? init->cond wait Ожидание, пока все контроллеры кластера не перейдут в FR_READY cond->wait да done wakeupFinished = true cond->done нет halt Контроллер в HALT из-за ошибки? wait->halt status vPOC!WakeupStatus? halt->status нет halt->done ja: Abbruch bus busTrafficDetected := true status->bus FR_WAKEUP_RECEIVED_HEADER или FR_WAKEUP_RECEIVED_WUP tx wakeupTransmitted := true status->tx FR_WAKEUP_TRANSMITTED notx wakeupTransmitted := false status->notx иначе again busTrafficDetected = false и wakeupCounter < FrSMNumWakeupPatterns? bus->again tx->again notx->again fe FE_WAKEUP: FrIf_SendWUP je Controller again->fe да inc Увеличение wakeupCounter again->inc нет fe->inc inc->cond

Диаграмма деятельности: повторная передача шаблонов пробуждения с вычислением vPOC!WakeupStatus и прерыванием при HALT контроллера. Источники: SWS FrSM с. 27, SWS FrSM с. 18

Запуск начинается с FrIf_StartCommunication. FrIf_AllowColdstart вызывается модулем FrSM только при FrSMIsColdstartEcu (SWS FrSM с. 22). Затем он сообщает FRSM_STARTUP в BswM. Как только статус POC становится normal active, следуют FrIf_SetState(FRIF_GOTO_ONLINE), сообщение FRSM_ONLINE и индикация режима в ComM (SWS FrSM с. 50, SWS FrSM с. 52).

Одноканальное пробуждение и запуск до FRSM_ONLINEComMBswMSchMFrSMFrIfDemFrSM_RequestComMode(NetworkHandle,COMM_FULL_COMMUNICATION)E_OKreqComMode gespeichert,Анализ в главной функцииUse Case: Wecken (FRSM_WAKEUP)FrSM_MainFunction_<FrSMCluster.ShortName>loopдля всех контроллеров кластераFrIf_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>loopдля всех контроллеров кластераFrIf_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)

Диаграмма последовательности: одноканальное пробуждение и запуск до FRSM_ONLINE, распределенные по нескольким вызовам основной функции. Интерпретация: порядок внутри вызовов реконструирован по иллюстрациям спецификации и упрощен. Источники: SWS FrSM с. 50, SWS FrSM с. 52, [SWS_FrSM_00118]

Режим Key-Slot-Only, деблокирование всех слотов и малое число узлов холодного старта

Если контроллер сконфигурирован с pKeySlotOnlyEnabled, запуск сначала завершается в FRSM_KEYSLOT_ONLY. Это состояние соответствует POC:normal active с vPOCSlotMode ≠ AllSlots (SWS FrSM с. 18, SWS FrSM с. 55). Выход из него осуществляется через FrSm_AllSlots [SWS_FrSM_00172]. Функция вызывает FrIf_AllSlots для каждого контроллера кластера и возвращает E_OK только в том случае, если все вызовы вернули E_OK. Ее можно отключить на этапе прекомпиляции с помощью FrSMAllSlotsSupport (SWS FrSM с. 41). Согласно иллюстрации в спецификации, BswM разрешает полную работу. Только после этого FrSM сообщает FRSM_ONLINE и FullCom в ComM (SWS FrSM с. 57).

Запуск в режиме только ключевых слотов и разблокировка всех слотовComMBswMSchMFrSMFrIfUse Case: Anlauf endet in FRSM_KEYSLOT_ONLYFrSM_MainFunction_<FrSMCluster.ShortName>loopдля всех контроллеров кластераFrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FR_POCSTATE_NORMAL_ACTIVE,SlotMode = FR_SLOTMODE_KEYSLOTFrIf_SetState(ClstIdx, FRIF_GOTO_ONLINE)BswM_FrSM_CurrentState(FRSM_BSWM_KEYSLOT_ONLY)Для ComM по-прежнему действует NoCom(FrSM_GetCurrentComMode)Use Case: Freigabe aller SlotsFrSm_AllSlots(NetworkHandle)loopдля всех контроллеров кластераFrIf_AllSlots(CtrlIdx)E_OKE_OK (только если все вызовы вернули E_OK)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)

Диаграмма последовательности: двухэтапный запуск: сначала только key-слоты, затем деблокирование всех слотов через FrSm_AllSlots. На иллюстрации спецификации сообщение для BswM обозначено как FRSM_ONLINE_KEYSLOT_ONLY, здесь же приведено значение R20-11 FRSM_BSWM_KEYSLOT_ONLY. Источники: SWS FrSM с. 57, SWS FrSM с. 55, [SWS_FrSM_00172], [SWS_FrSM_00199]

FRSM_LOW_NUMBER_OF_COLDSTARTERS означает полную коммуникацию, при которой кластер синхронизирован только через sync-фреймы (SWS FrSM с. 18). Условие lowNumberOfColdstarters выполняется, если FrIf_GetNumOfStartupFrames() сообщает о меньшем количестве startup-фреймов, чем задано опциональным параметром FrSMMinNumberOfColdstarter (SWS FrSM с. 20).

Возврат к NoCom и таймеры кластера

NoCom может быть запрошен, пока автомат находится в FRSM_ONLINE, FRSM_KEYSLOT_ONLY, FRSM_LOW_NUMBER_OF_COLDSTARTERS или FRSM_ONLINE_PASSIVE. В этом случае переход обрабатывается уже FrSM_RequestComMode, не дожидаясь основной функции (SWS FrSM с. 36). Сюда относятся FrIf_SetState(FRIF_GOTO_OFFLINE), FrIf_HaltCommunication и сообщение HALT_REQ в BswM. В последующих циклах вызова FrSM сообщает NoCom в ComM, заново инициализирует контроллеры, переводит трансиверы в STANDBY и сообщает READY (SWS FrSM с. 58).

Переход от FullCom к NoComComMBswMSchMFrSMFrIfFrSM_RequestComMode(NetworkHandle,COMM_NO_COMMUNICATION)Исходное состояние является состоянием FullCom:Переход немедленно в вызовеFrIf_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)по истечении t_TrcvStdbyDelay или немедленно,если FrSMTrcvStdbyDelay отсутствует или равен 0FrIf_ControllerInit(CtrlIdx)FrIf_SetTransceiverMode(CtrlIdx, ChnlIdx,STANDBY)BswM_FrSM_CurrentState(FRSM_BSWM_READY)

Диаграмма последовательности: от FullCom к NoCom. Останов происходит синхронно в вызове запроса, повторная инициализация и переход в режим standby следуют со сдвигом по времени в основной функции. Интерпретация: последовательность реконструирована по иллюстрации в спецификации. Источники: SWS FrSM с. 58, SWS FrSM с. 36, [SWS_FrSM_00209]

Для каждого кластера FrSM работает с несколькими таймерами (SWS FrSM с. 21):

  • t1 задерживает FrIf_AllowColdstart. При FrSMDurationT1 = 0 вызов следует непосредственно за FrIf_StartCommunication.
  • t2 определяет, через какое время запуск повторяется.
  • t3 контролирует переход к FullCom.
  • t4 обеспечивает сброс бита блокировки холодного старта двухканальным узлом.
  • t_TrcvStdbyDelay задерживает повторную инициализацию и переход в standby. Если FrSMTrcvStdbyDelay не сконфигурирован или равен 0, автомат немедленно переходит из FRSM_HALT_REQ в FRSM_READY [SWS_FrSM_00209].

Конфигурация для каждого FrSMCluster и состояние интерфейсов R20-11

Контейнер FrSMCluster (1..*) описывает кластер, который на одном ECU может охватывать несколько контроллеров. Он содержит:

  • таймеры с FrSMDurationT1 по FrSMDurationT4,
  • роли FrSMIsColdstartEcu и FrSMIsWakeupEcu,
  • FrSMNumWakeupPatterns и FrSMStartupRepetitions,
  • ссылки FrSMComMNetworkHandleRef и FrSMFrIfClusterRef.

Это содержимое описывает SWS FrSM с. 62. В общем виде также конфигурируются FrSMVersionInfoApi для FrSM_GetVersionInfo и FrSMSyncLossErrorIndicationName (SystemTemplate с. 1528, [SWS_FrSM_00029]).

Многие детали взяты из более поздних релизов. Для R20-11 действуют требования, и в некоторых пунктах они отличаются:

  • Функции называются FrSm_Init, FrSm_AllSlots и FrSm_SetEcuPassive и доступны через FrSm.h.
  • FrSM_RequestComMode имеет Service-ID 0x02 и является реэнтрантной для различных кластеров. В более поздних источниках указаны 0x40 и другие имена параметров.
  • FrSM_GetCurrentComMode в R20-11 имеет Service-ID 0x03.

Ссылки: [SWS_FrSM_00013], [SWS_FrSM_00020], [SWS_FrSM_00024], SWS FrSM с. 36.

Поведение при ошибке

Для ошибок разработки определены следующие коды [SWS_FrSM_91001]:

  • FRSM_E_PARAM_POINTER: недействительный указатель. Сервис немедленно выполняет возврат.
  • FRSM_E_INV_HANDLE: недействительный сетевой дескриптор.
  • FRSM_E_UNINIT: модуль не инициализирован.
  • FRSM_E_INV_MODE: недействительный режим коммуникации.
  • FRSM_INIT_FAILED: сбой инициализации.

Некоторые случаи регламентированы явно. FrSm_AllSlots сообщает при недействительном дескрипторе FRSM_E_INV_HANDLE и возвращает E_NOT_OK (SWS FrSM с. 41). FrSm_SetEcuPassive сообщает об ошибке разработки до инициализации (SWS FrSM с. 40). FrSM_GetCurrentComMode возвращает в R20-11 без предварительной инициализации E_NOT_OK [SWS_FrSM_00024].

На уровне шины FrSM реагирует следующим образом:

  • При ошибках синхронизации часов кластер переходит в FRSM_ONLINE_PASSIVE (SWS FrSM с. 18).
  • Если синхронизация не удается, FrSM вызывает FrNm_StartupError [SWS_FrSM_00097].
  • Запуск повторяется после t2 (SWS FrSM с. 21). FrSMStartupRepetitions, предположительно, ограничивает число повторений. Вопрос (открытый)

FrSM сообщает статус запуска как DEM-событие FRSM_E_CLUSTER_STARTUP, в случае успеха — с PASSED (SWS FrSM с. 52). Идентификаторы событий находятся в FrSMClusterDemEventParameterRefs (SWS FrSM с. 62). Опционально <Cdd>_SyncLossErrorIndication информирует с помощью true о потере синхронизации. С помощью false функция указывает на то, что синхронизация восстановлена или запрос FullCom был отозван [SWS_FrSM_00190]. Если имя функции не сконфигурировано, это сообщение не отправляется (SystemTemplate с. 1528).

Дальнейшие подробные доказательства

Руководство, сгенерированное ИИ на основе требований R20-11 и соответствующих разделов спецификаций, частично из более поздних релизов. Определяющими являются связанные требования; интерпретации обозначены как таковые.

FlexRay State Manager (FrSM)

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

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

функция FrSm_Init [SWS_FrSM_00013] 📄 PDF

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Initializes the Flex Ray State Manager.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 4f916985d2dc Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Функция FrSm_Init согласно спецификации [SWS_FrSM_00013] служит для инициализации FlexRay State Manager (FrSM). Она имеет Service-ID 0x01 и объявлена в заголовочном файле FrSm.h.

Использование и параметры

Выполнение FrSm_Init происходит синхронно [SWS_FrSM_00013]. Вызов ожидает ровно один входной параметр:

  • FrSM_ConfigPtr: указатель на выбранную конфигурационную структуру типа const FrSM_ConfigType*, через который предоставляются данные инициализации модуля [SWS_FrSM_00013].

Функция не имеет возвращаемого значения (void) и не определяет ни входных/выходных параметров (inout), ни чисто выходных параметров (out) [SWS_FrSM_00013].

Параллелизм и ограничения

В отношении контекста выполнения интерфейс классифицирован как нереентерабельный (Non Reentrant) [SWS_FrSM_00013]. Поэтому одновременные или вложенные вызовы функции недопустимы. Интерпретация: вызов, вероятно, обычно выполняется во время инициализации системы, до того как будут использоваться регулярные сервисы связи или управления FrSM. Вопрос Q-881936607a7268bd (открытый)

Обработка ошибок

В спецификации элемента [SWS_FrSM_00013] коды возврата или специфические механизмы обработки ошибок, такие как сообщения DET или DEM, не указаны.

Это указание по использованию было создано автоматически и основано исключительно на данных спецификации AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция 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.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 0805fe94c490 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и семантика

Функция FrSM_RequestComMode вызывается модулем Communication Manager (ComM) для запуска или останова коммуникации в определенном кластере FlexRay [SWS_FrSM_00020]. Интерфейс объявлен через заголовочный файл FrSm.h и имеет Service-ID 0x02 [SWS_FrSM_00020]. Поскольку сервис специфицирован как асинхронный, функция лишь подтверждает прием запроса на переключение, в то время как фактический переход состояния выполняется отложенно [SWS_FrSM_00020].

Параметры и возвращаемые значения

Функция ожидает два входных параметра для управления коммуникационным режимом [SWS_FrSM_00020]:

  • NetworkHandle (тип NetworkHandleType): определяет кластер FlexRay, для которого запрашивается коммуникационный режим [SWS_FrSM_00020].
  • ComM_Mode (тип ComM_ModeType): содержит желаемый модулем ComM режим коммуникации для указанной сети [SWS_FrSM_00020].

Возвращаемое значение типа Std_ReturnType показывает результат проверки запроса [SWS_FrSM_00020]:

  • E_OK: запрос на смену режима был успешно принят [SWS_FrSM_00020].
  • E_NOT_OK: запрос был отклонен и не принят [SWS_FrSM_00020].

Параллелизм и ограничения

Согласно спецификации, FrSM_RequestComMode реализована как реентерабельная для различных кластеров FlexRay [SWS_FrSM_00020]. Для одного и того же кластера FlexRay вызов, предположительно, не является реентерабельным, в связи с чем следует избегать конкурирующих вызовов для одного и того же экземпляра. Специфические коды ошибок, такие как сообщения DET или DEM, в полезной нагрузке не определены [SWS_FrSM_00020].

Это указание по использованию было автоматически сгенерировано на основе спецификации AUTOSAR Classic R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция 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.

функция 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.

функция FrSm_AllSlots [SWS_FrSM_00172] 📄 PDF

Std_ReturnType FrSm_AllSlots (NetworkHandleType NetworkHandle);

Service FrSm_AllSlots.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f8b54cb7f004 Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Асинхронная сервисная функция FrSm_AllSlots предоставляется через заголовочный файл FrSm.h и служит для выхода из так называемого «Key Slot Only Mode» для указанного кластера FlexRay [SWS_FrSM_00172].

Вызов и параметры: для идентификации коммуникационной сети параметру NetworkHandle передается соответствующий кластер FlexRay, для которого должен быть запрошен режим переключения [SWS_FrSM_00172]. Других входных параметров нет [SWS_FrSM_00172].

Возвращаемое значение и семантика: вызов возвращает E_OK, если запрос на переключение был успешно принят, или E_NOT_OK, если запрос был отклонен [SWS_FrSM_00172]. Поскольку это асинхронная операция, E_OK подтверждает лишь прием поручения; фактический переход в режим полной работы всех слотов, вероятно, вступит в силу с задержкой по времени в контексте State Manager. Вопрос Q-d559e4ea5183ff7c (открытый)

Параллелизм и ограничения: функция является реентерабельной для различных кластеров FlexRay [SWS_FrSM_00172]. Для одинаковых кластеров она спроектирована как нереентерабельная, поэтому вызывающие стороны должны синхронизировать параллельные запросы к одному и тому же кластеру. Специфические коды ошибок для DET или DEM в описании функции не упоминаются.

Это указание по использованию было создано автоматически. Оно основано на AUTOSAR CP R20-11.

функция 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.

тип 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.

тип FrSM_BswM_StateType [SWS_FrSM_00199] 📄 PDF

This type defines the states that are reported to the Bsw

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a8440a0185d0 Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование

Тип перечисления FrSM_BswM_StateType определяет в соответствии с [SWS_FrSM_00199] состояния FlexRay State Manager (FrSM), которые сообщаются в BswM (Basic Software Mode Manager). Объявление и предоставление типа осуществляется через заголовочный файл FrSm.h [SWS_FrSM_00199].

Взаимодействие и диапазон значений

Значения этого типа используются во взаимодействии с интерфейсом BswM_FrSM_CurrentState для передачи текущего состояния работы и связи в модуль BswM [SWS_FrSM_00199]. Диапазон значений включает в себя следующие значения перечисления:

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

Обращает на себя внимание попарное структурирование состояний: каждое базовое состояние имеет регулярный аналог, а также вариант с суффиксом _ECU_PASSIVE. Это, предположительно, служит для того, чтобы сообщать в BswM состояние связи кластера FlexRay в сочетании с пассивным режимом электронного блока управления (ECU), чтобы тот мог координировать соответствующие смены режимов. Вопрос Q-f2d9296e40782b5a (открытый)

Этот текст был сгенерирован ИИ и служит в качестве справочного руководства. Преимущественную силу имеют упомянутые спецификации AUTOSAR.

Руководство разработчика реализации в подготовке (сложность 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#8b4d5387
Content hash
8b4d5387
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_FlexRayStateManager.pdf#nameddest=SWS_FrSM_00013

Карта тем

Подробный вид

Выберите элемент в оглавлении.

Инициализация и состояние

FrSM_GetVersionInfo функция

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 функция

Initializes the Flex Ray State Manager.

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Сервисы

FrSm_AllSlots функция

Service FrSm_AllSlots.

Std_ReturnType FrSm_AllSlots (NetworkHandleType NetworkHandle);
FrSM_GetCurrentComMode функция

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);
FrSM_RequestComMode функция

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);
FrSm_SetEcuPassive функция

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);

Типы

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.