AUTOSAR ComM模块介绍

AUTOSAR Communication Manager (ComM) 是用于管理通讯的模块,位于BSW的System Service层。ComM简化Communication Stack使用,处理总线访问请求,提供API控制信号发送,管理每个总线通道状态。它与其他模块如EcuM、BswM、DCM、CAN State Manager等有依赖关系,涉及网络管理、模式控制和诊断通讯调度。ComM通过PNC状态机管理部分网络集群,并通过时序图展示不同场景下的通讯流程。

AUTOSAR ComM模块介绍

Autosar ComM概述

Autosar ComM 全称是 Autosar Communication Manager,顾名思义就是用来管理通讯的,ComM 模块位于 BSW 中 Systme Service 层,属于 resource managemnt 组件。

Autosar ComM 的目的如下:

  • 为用户简化Communication Stack的使用,包含一个简单的网络管理
  • 搜集通讯请求者对于通讯访问的请求,协调总线访问请求
  • 提供API去禁止信号发送,以免ECU唤醒总线
  • 在每一个总线通道实现一个状态管理从而控制一个或多个通讯总线通道
Autosar ComM和其他模块的依赖关系

ComM模块从用户和总线状态管理模块请求总线通讯能力。

在这里插入图片描述

  • 每个用户都可以请求通讯模式。RTE传播用户请求到ComM模块,并且从ComM传递通讯模式指示给用户。
  • EcuM负责验证唤醒事件,然后发送指示到ComM,ComM切换COM模式。ECU通讯的允许和关闭是由EcuM和BswM一起完成。
### Autosar ComM 模块概述 Autosar Communication Manager (ComM) 是 AUTOSAR 架构中的一个重要模块,主要用于管理和协调不同软件组件之间的通信。该模块位于基础软件 (BSW) 的 System Services 层,作为 Resource Management 组件的一部分[^2]。 #### 功能描述 ComM 模块的主要职责是封装对基础通信服务的控制,并收集、协调来自各个总线的通信请求[^1]。其核心功能包括但不限于: - **通信模式管理**:支持多种通信模式(如 FULL_COMMUNICATION 和 NO_COMMUNICATION),并能够根据系统需求动态切换这些模式。 - **状态同步**:与 BswM(基础软件状态管理器)协作,确保通信状态与系统的整体状态保持一致。例如,在进入休眠模式时,ComM 会调整通信策略以适应低功耗需求[^3]。 - **接口提供**:为 SWC(Software Component)、Runnables 等用户提供统一的通信接口,简化开发流程。 --- ### 使用场景分析 在实际应用中,ComM 模块通常用于以下场景: 1. **车辆启动/关闭阶段**:当车辆从睡眠模式唤醒或进入睡眠模式时,ComM 能够自动调整通信模式以匹配当前系统状态。 2. **节能优化**:在特定条件下(如长时间停车),ComM 可以切换至低功耗通信模式,减少能量消耗。 3. **复杂网络环境下的通信调度**:对于多总线系统(如 CAN、LIN、FlexRay 等),ComM 协调各总线间的通信优先级和资源分配[^3]。 --- ### 配置指南 以下是 ComM 模块的一些典型配置项及其说明: #### 1. 用户请求计数器 (`RequestCounter`) `ComM_Prv_UpdateUserRequest` 函数用于更新用户的通信请求计数器。具体规则如下: - 当用户请求 `COMM_FULL_COMMUNICATION` 时,`RequestCounter` 自增; - 当用户请求 `COMM_NO_COMMUNICATION` 时,`RequestCounter` 自减; - 这两个操作必须成对使用,否则可能导致 DET 错误[^4]。 #### 2. 主函数实现 (`ComM_Prv_ChannelMainFunction`) 这是 ComM 模块的核心逻辑之一,负责初始化和维护对应通道的功能。在初始化阶段,需确保所有必要的参数已正确配置[^4]。 #### 示例代码 以下是一个简单的伪代码示例,展示如何通过 API 请求改变通信模式: ```c // 设置通信模式为 FULL_COMMUNICATION void SetFullCommunicationMode(void) { Std_ReturnType result; result = ComM_SetCommModeIndication(CHANNEL_ID, COMM_FULL_COMMUNICATION); if (result != E_OK) { // 处理错误情况 } } // 设置通信模式为 NO_COMMUNICATION void SetNoCommunicationMode(void) { Std_ReturnType result; result = ComM_SetCommModeIndication(CHANNEL_ID, COMM_NO_COMMUNICATION); if (result != E_OK) { // 处理错误情况 } } ``` --- ### 注意事项 在使用 ComM 模块时需要注意以下几点: - **依赖关系**:ComM 模块与其他 BSW 模块(如 CanSM、Dcm 等)存在紧密耦合,因此在设计阶段应充分考虑这种依赖性[^3]。 - **性能优化**:由于 ComM 涉及频繁的状态切换,建议对其内部算法进行适当优化,以降低 CPU 开销。 - **一致性验证**:确保所有通信请求均按照规定的方式提交,避免因不当操作引发异常行为。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钢琴上的汽车软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值