概述
中央处理单元,处理通信请求并管理数据流。核心职责包括信号处理、通信模式管理和网络管理。它是一个资源管理器,封装了对底层通信服务的控制。ComM 模块控制与通信相关的基础软件模块,而不是软件组件或可运行实体。ComM 模块从通信请求方收集总线通信访问请求,并协调总线通信访问请求。
ComM作用:
1、简化用户对总线通信栈的使用。这包括简化的网络管理处理。
2、协调一个 ECU 上多个独立软件组件的总线通信栈的可用性(允许发送和接收信号)。用户不应了解硬件(例如在哪个通道进行通信)。用户只需请求“通信模式”,ComM 模块便会打开/关闭相应通道的通信功能。
3、提供一个 API,用于禁用信号发送,以防止 ECU(主动)唤醒通信总线。
4、通过为每个通道实现通道状态机来控制 ECU 的多个通信总线通道。(ComM 模块从相应的总线状态管理器模块请求通信模式。实际总线状态由相应的总线状态管理器模块控制。)
5、通过分配请求的通信模式所需的所有资源来简化资源管理。
相关模块联系
-
AUTOSAR 运行时环境 (RTE)
每个用户都可以请求通信模式。RTE 将用户请求传播到 ComM 模块,并将 ComM 的通信模式指示传播到用户。 -
ECU状态管理器(EcuM)
EcuM 有两种不同的变体,称为 EcuM-Fixed 和 EcuM-Flex。EcuM-Fixed 负责 ComM 的初始化。两个 EcuM 还负责验证唤醒事件,并在验证唤醒时向 ComM 发送指示。EcuM-Fixed 将向 ComM 指示是否允许启动通信。然后,EcuM-Fixed 必须向 ComM 查询 ECU 是否可以关闭,即通信是否正在进行。(一般是这种)如果使用 EcuM-Flex,上述功能(允许通信和关闭 ECU)将由 EcuM-Flex 与 BswM 一起处理。
-
基本软件模式管理器 (BswM)
BswM 实现了两种功能模式仲裁和模式控制,以允许应用应用程序模式管理和车辆模式管理。
如果在 BswM 的动作列表中配置为能够通过 BswM 请求 ComM 模式,则 BswM 会将用户请求传播到 ComM 模块。如果在动作列表中配置了 Com_IpduGroupControl 的调用,则 BswM 会控制 AUTOSAR 通信模块 (COM) 中的 PDU 组。 -
诊断通信管理器 (DCM)
DCM负责诊断pdu的调度。DCM作为用户通过请求通信模式COMM_FULL_COMMUNICATION
“DCM_ActiveDiagnostic”表示需要进行诊断。DCM可以不提供API来启动/停止发送和接收,但保证
通信能力是根据ComM模块进行通信的模式。 -
CanSM
CAN 状态管理器控制与 ComM 模块的通信模式相对应的 CAN 总线的实际状态。ComM 模块从 CAN 状态管理器请求通信模式,而 CAN 状态管理器将通信模式映射到总线状态。 -
网络管理 (NM)
ComM 模块使用 NM 在整个网络中同步通信功能的控制(同步启动和关闭)。
ComM网络管理相关配置
通道上支持的Network Management Variant
- FULL,使用AUTOSAR NM。(autosar 网络管理)
- PASSIVE,AUTOSAR NM,但不允许ECU保持网络处于唤醒状态。不允许将用户分配到此通道。ComM忽略DCM在该信道上的通信请求。通道的ComMNoCom参数必须设置为true。
- LIGHT,不使用AUTOSAR NM,但通过超时同步关机,该超时由参数ComMNmLightTimeout配置。
- NONE,不使用AUTOSAR NM,不支持关机同步。也就是说,一旦通道达到COMM_FULL_COMMUNICATION模式,它将永远保持。通过断电或复位来停止通信。ComM忽略用户请求的COMM_NO_COMMUNICATION模式和请求的No Communication mode limit。
注:此参数应与网管模块(如有)的配置一致。依赖性:对于总线类型为INTERNAL的通道,仅支持Nm Variant LIGHT。
ComM状态机
系统上电后进入到COMM_NO_COMMUNICATION,表示ComM通信的Lowest状态,在该状态下具有下面两个子状态:
COMM_NO_COM_NO_PENDING_REQUEST
COMM_NO_COM_REQUEST_PENDING
COMM_FULL_COMMUNICATION表示ComM通信的Highest状态,在该状态下总线可以进行正常的数据通信在该状态下具有下面两个子状态:COMM_FULL_COM_NETWORK_REQUESTED和COMM_FULL_COM_READY_SLEEP。
COMM_NO_COM_NO_PENDING_REQUEST
该状态是在初始化完成ComM后的状态,该状态下总线不能进行任何的通信活动,需要请求通信进入到Full Communication才可以,主要来自于
① 用户请求User Request;
② DCM Notification需要激活对应的通道;
③ 来自于EcuM或者NM的Passive WakeUp通知。
COMM_NO_COM_REQUEST_PENDING
该状态下等待Communication Allowed的触发信号,如果Allowed请求发生才能将通信模式转换为Full模式下,进行数据通信,如果没有Allowed的使能,则对Communication的FULL请求将不会被执行。
状态跳变
1、 COMM_NO_COMMUNICATION→COMM_FULL_COMMUNICATION
在子状态COMM_NO_COM_NO_PENDING_REQUEST和唤醒指示由EcuM模块指示,
ComM_EcuM_WakeUpIndication().ComM通道状态机立即切换到子状态
COMM_NO_COM_REQUEST_PENDING;
当子状态为COMM_NO_COM_NO_PENDING_REQUEST时,NM模块表示重启,ComM_Nm_RestartIndication()时,ComM通道状态机立即切换到子状态COMM_NO_COM_REQUEST_PENDING。(ComM通道状态机进入 COMM_FULL_COMMUNICATION状态后,立即切换到子状态 COMM_FULL_COM_NETWORK_REQUESTED。如果没有用户请求 COMM_FULL_COMMUNICATION模式,则AUTOSAR NM响应。 ComMTMinFullComModeDuration的ComM 模块定时器防止 在COMM_NO_COMMUNICATION和 COMM_FULL_COMMUNICATION之间切换,以克服 系统的init-/启动时间,在可能的用户请求发生之前。)
在子状态COMM_NO_COM_NO_PENDING_REQUEST和
配置参数ComMSynchronousWakeUp=TRUE和EcuM指示通道唤醒指示
时,ComM模块应立即切换所有ComM通道状态机。通道)到子状态
COMM_NO_COM_REQUEST_PENDING.
当子状态COMM_NO_COM_NO_PENDING_REQUEST和
用户请求COMM_FULL_COMMUNICATION和通信限制
被禁用时,ComM通道状态机
应立即切换到子状态COMM_NO_COM_REQUEST_PENDING.
在子状态COMM_NO_COM_NO_PENDING_REQUEST下,配置参数ComMNmVariant=FULL|LIGHT|NONE, DCM指示ComM_DCM_ActiveDiagnostic,则ComM通道状态机立即切换到子状态COMM_NO_COM_REQUEST_PENDING
2、 COMM_FULL_COMMUNICATION→COMM_NO_COMMUNICATION
状态为COMM_FULL_COMMUNICATION,且Network Manager模块显示ComM_Nm_BusSleepMode() SWS_ComM_00392时,ComM通道状态机切换到状态 COMM_NO_COMMUNICATION.
ComM时序图
Transmission and Reception start (CAN) 发送和接收启动(CAN)
显示了CAN上启动发射和接收的顺序。 的行为是相等的LIN, FlexRay和以太网只是不同的API 名称。
用户在ComM模块调用CanSM_RequestComMode请求CanSM开启CAN通信,CanSM开启通信后调用ComM_BusSM_ModeIndication通知到ComM当前CAN通道Channel已经切换到COMM_FULL_COMMUNICATION状态了。ComM随后调用CanNM模块的Nm_NetworkRequest(主动唤醒)或者Nm_PassiveStartup(被动唤醒)接口开启该通道的网络管理。
Passive Wake-up (CAN) 被动唤醒(CAN)
EcuM调用ComM_EcuM_WakeUpIndication通知到ComM模块ECU被唤醒,CanNM模块调用ComM_Nm_RestartIndication通知到ComM网络管理模块重启网络,随后NM调用ComM_Nm_NetworkStartIndication通知到ComM网络管理模块开始网络管理。ComM模块中CAN通道的状态从COMM_NO_COM_NO_PENDING_REQUEST切换到COMM_NO_COM_REQUEST_PENDING状态。ComM模块等待运行通信标志CommunicationAllowed=TRUE。允许通信后,ComM模块调用CanSM_RequestComMode请求COMM_FULL_COMMUNICATION通信。CanSM开启通道的通信后,ComM模块通道切换到COMM_FULL_COM_NETWORK_REQUESTED状态。随后,ComM模块调用Nm_PassiveStartUp请求NM被动开启网络管理,NM也调用ComM_Nm_NetworkMode通知到ComM当前NM的网络模式。
Communication request 通信请求
显示了在CAN上启动COMM_FULL_COMMUNICATION的可能性。它
既可以在用户请求COMM_FULL_COMMUNICATION
请求时启动,也可以在DCM指示ComM_DCM_ActiveDiagnostic时启动。LIN, FlexRay和
以太网的行为是相同的,只是API名称不同。
用户在Rte向ComM 请求 ComM_RequestComMode,同时Dcm模块向ComM模块请求ComM_DCM_ActiveDiagnostic ,有通信请求,则ComM 通道状态机立即切换到子状态 COMM_NO_COM_REQUEST_PENDING.。ComM模块等待运行通信标志CommunicationAllowed=TRUE。允许通信后,ComM模块调用CanSM_RequestComMode请求COMM_FULL_COMMUNICATION通信。CanSM开启通道的通信后,ComM模块通道切换到COMM_FULL_COM_NETWORK_REQUESTED状态。随后,ComM模块调用Nm_PassiveStartUp请求NM被动开启网络管理,NM也调用ComM_Nm_NetworkMode通知到ComM当前NM的网络模式。