图解AUTOSAR_SWS_CANNetworkManagement

AUTOSAR CAN网络管理(CanNm)详解

AUTOSAR标准协议详解系列 - CAN网络管理模块规范

目录


1. 概述

AUTOSAR CAN网络管理(CanNm)是AUTOSAR标准体系中的关键组件之一,用于管理基于CAN总线的网络通信。网络管理的主要目标是协调网络中各个ECU节点的唤醒和睡眠模式,确保网络资源的高效利用,同时降低车辆静态电流消耗。

1.1 CanNm模块的主要功能

CAN网络管理(CanNm)模块实现了以下关键功能:

  • 网络协调:协调网络中各ECU的唤醒和睡眠状态
  • 节点检测:识别当前活跃的网络节点
  • 睡眠管理:通过协调机制确保所有节点可以安全进入睡眠状态
  • 唤醒同步:确保所有相关节点同步唤醒
  • 用户数据传输:支持通过NM PDU传输应用程序用户数据
  • 部分网络:支持选择性唤醒特定ECU功能

CanNm作为适配层,连接通用网络管理接口(NmIf)和CAN接口(CanIf),确保了不同总线技术间的无缝集成。


2. 架构设计

在这里插入图片描述

2.1 模块层次结构

CanNm在AUTOSAR分层架构中位于关键位置,其具体位置和交互如下:

  • 上层接口:与通用网络管理接口(NmIf)交互,接收网络控制请求
  • 下层接口:与CAN接口(CanIf)交互,发送和接收NM PDU
  • 横向接口:与PDU路由器(PduR)交互,用于接收用户数据

2.2 主要组件交互

  1. 网络管理接口(NmIf)

    • 提供通用网络管理API给上层应用和系统服务
    • 屏蔽不同总线技术的网络管理实现差异
    • 通过回调机制通知应用程序网络状态变化
  2. CAN网络管理(CanNm)

    • 实现CAN总线特定的网络管理功能
    • 处理网络PDU的发送和接收
    • 管理网络状态转换逻辑
  3. CAN接口(CanIf)

    • 处理CAN数据帧的收发
    • 向上层提供抽象接口,隐藏CAN控制器细节
    • 实现PDU路由和多路复用

2.3 接口函数

CanNm模块提供的主要接口函数包括:

  • 网络控制接口

    • CanNm_NetworkRequest():请求网络保持活动状态
    • CanNm_NetworkRelease():释放网络请求
  • 回调接口

    • CanNm_RxIndication():接收到NM PDU时被调用
    • CanNm_TxConfirmation():NM PDU发送确认
  • 初始化与周期接口

    • CanNm_Init():初始化CanNm模块
    • CanNm_MainFunction():周期性处理CanNm功能

这种架构设计使得网络管理层能够与通信层解耦,同时保持高效的消息传递机制。


3. 状态机

在这里插入图片描述

3.1 主要状态

CanNm状态机定义了网络管理模块的行为模式。主要包含以下关键状态:

  1. 总线睡眠模式(Bus-Sleep Mode)

    • 通信控制器处于睡眠状态,最低功耗模式
    • 可通过物理唤醒线或总线信号唤醒
    • 在此状态下不发送也不处理NM PDU
  2. 网络模式(Network Mode)

    • 网络处于完全活动状态
    • 包含三个子状态:重复报文状态、正常运行状态和就绪睡眠状态
    • 能够发送和接收网络管理报文
  3. 准备睡眠模式(Prepare Bus-Sleep Mode)

    • 过渡状态,网络即将进入睡眠
    • 确保所有节点有足够时间停止网络活动
    • 等待CanNmWaitBusSleepTime时间后,进入总线睡眠模式

3.2 网络模式子状态

网络模式下的三个子状态具有不同的功能和行为:

  1. 重复报文状态(Repeat Message State)

    • 频繁发送NM PDU使节点在网络中可见
    • 确保节点保持活动的最小时间周期
    • 有助于网络节点的快速检测
  2. 正常运行状态(Normal Operation State)

    • 网络正常工作状态
    • 以配置的周期(CanNmMsgCycleTime)发送NM PDU
    • 持续监听网络上的其他节点活动
  3. 就绪睡眠状态(Ready Sleep State)

    • 节点已准备好进入睡眠模式
    • 停止发送NM PDU,但继续监听网络
    • 如检测到其他NM PDU,会推迟睡眠过程

3.3 状态转换机制

状态机转换由以下关键事件和条件触发:

  • 网络请求/释放:通过CanNm_NetworkRequest()CanNm_NetworkRelease()触发
  • 超时事件:如NM超时定时器、重复报文定时器到期
  • 报文接收:接收到其他节点的NM PDU
  • 睡眠确认:所有节点同意进入睡眠状态

状态转换时,CanNm会通过Nm接口的回调函数通知上层应用状态变化,如Nm_NetworkMode()Nm_PrepareBusSleepMode()Nm_BusSleepMode()

3.4 状态机特性

  • 两个平行状态:网络可以同时处于"请求(requested)"或"释放(released)"状态
  • 被动启动:即使未主动请求网络,接收到NM PDU也会激活网络
  • 协调睡眠:通过监控所有节点的就绪状态,确保协调一致的睡眠

4. PDU格式

在这里插入图片描述

4.1 CAN NM PDU结构

CAN网络管理PDU是一种专用的CAN帧,用于在网络节点间交换网络管理信息。标准的CAN NM PDU具有以下结构:

  1. 源节点标识符(Source Node Identifier)

    • 默认位于Byte 0
    • 唯一标识发送该NM PDU的节点
    • 位置可通过配置参数调整或禁用
  2. 控制位向量(Control Bit Vector)

    • 默认位于Byte 1
    • 包含多个控制标志位,用于协调网络状态
    • 位置可通过配置参数调整
  3. 用户数据(User Data)

    • 位于剩余的字节(通常为Byte 2-7)
    • 可包含应用程序特定数据
    • 可用于传输诊断信息或部分网络唤醒条件

4.2 控制位向量详解

控制位向量包含8个单独的位,每个位具有特定功能:

  • 位0 - 部分网络信息位(Partial Network Information Bit)

    • 指示PDU包含部分网络信息
    • 用于选择性唤醒功能
  • 位1 - 重复报文请求位(Repeat Message Request Bit)

    • 请求网络中的所有节点进入重复报文状态
    • 用于快速节点检测
  • 位2 - 协调就绪睡眠位(Coordinator Ready Sleep Bit)

    • 指示节点已准备好进入睡眠状态
    • 协调网络关闭过程
  • 位3~5 - 保留位(Reserved)

    • 保留供将来使用
    • 通常设置为0
  • 位6 - 活动唤醒位(Active Wakeup Bit)

    • 指示PDU是由主动唤醒触发的
    • 支持汽车唤醒功能
  • 位7 - 请求同步关闭位(Request Sync Shutdown Bit)

    • 请求网络同步关闭
    • 协调多个网关的关闭过程

4.3 PDU格式配置选项

CanNm模块提供多种PDU格式配置选项:

  • 节点标识符位置:可通过CanNmPduNidPosition配置
  • 控制位向量位置:可通过CanNmPduCbvPosition配置
  • 用户数据支持:可通过CanNmUserDataEnabled启用/禁用
  • 用户数据长度:可通过CanNmUserDataLength配置

这种灵活的配置机制允许适应不同项目的具体需求,同时保持标准化接口。

4.4 PDU传输特性

NM PDU传输具有以下特性:

  • 周期性传输:在正常运行状态下按照CanNmMsgCycleTime周期发送
  • 立即传输:在网络请求时可以立即发送(由CanNmImmediateNmTransmission控制)
  • 总线负载减少:可通过CanNmBusLoadReductionActive配置减少传输频率
  • 可靠传输:可以配置为需要传输确认

5. 配置参数

在这里插入图片描述

5.1 配置结构

CanNm模块的配置参数按照层次结构组织,主要分为全局配置和通道特定配置:

  1. 全局配置(CanNm)

    • 影响整个CanNm模块的行为
    • 包含模块级别的功能开关和通用特性
  2. 通道配置(CanNmChannelConfig)

    • 每个CAN通道独立配置
    • 定义特定通道的PDU格式、定时参数和行为特性
  3. 专用配置

    • 部分网络配置(CanNmPnInfo)
    • PDU引用配置(CanNmTxPdu/CanNmRxPdu)

5.2 关键全局参数

CanNm全局配置包含以下重要参数:

  • CanNmDevErrorDetect:启用/禁用开发错误检测
  • CanNmVersionInfoApi:启用/禁用版本信息API
  • CanNmPassiveModeEnabled:启用/禁用被动模式(仅接收不发送)
  • CanNmComControlEnabled:启用/禁用通信控制功能
  • CanNmGlobalPnSupport:启用/禁用全局部分网络支持
  • CanNmBusSynchronizationEnabled:启用/禁用总线同步功能
  • CanNmCoordinatorSyncSupport:启用/禁用协调器同步支持

5.3 关键通道参数

每个CanNm通道可以独立配置以下关键参数:

  • 定时参数

    • CanNmMsgCycleTime:NM PDU发送周期(毫秒)
    • CanNmTimeoutTime:网络超时时间(毫秒)
    • CanNmWaitBusSleepTime:等待睡眠时间(毫秒)
    • CanNmRepeatMessageTime:重复报文时间(毫秒)
    • CanNmRemoteSleepIndTime:远程睡眠指示超时时间(毫秒)
  • 行为参数

    • CanNmNodeDetectionEnabled:启用/禁用节点检测
    • CanNmNodeIdEnabled:启用/禁用节点ID
    • CanNmBusLoadReductionActive:启用/禁用总线负载降低
    • CanNmImmediateRestartEnabled:启用/禁用立即重启功能
    • CanNmImmediateTxConfEnabled:启用/禁用立即传输确认
  • 标识参数

    • CanNmNodeId:当前节点的网络标识符
    • CanNmPduNidPosition:节点ID在PDU中的位置
    • CanNmPduCbvPosition:控制位向量在PDU中的位置

5.4 部分网络配置参数

部分网络功能的配置参数包括:

  • CanNmPnEnabled:启用/禁用部分网络功能
  • CanNmPnEiraCalcEnabled:启用/禁用扩展ID请求数组计算
  • CanNmPnEraCalcEnabled:启用/禁用ID请求数组计算
  • CanNmAllNmPduRxIndicationEnabled:启用/禁用所有NM PDU的接收指示

5.5 配置变体

AUTOSAR CanNm支持三种配置变体,以满足不同的应用场景:

  1. 前置链接配置(Pre-compile)

    • 配置在编译时确定
    • 最优的运行时性能和最小的内存占用
    • 适用于固定配置的ECU
  2. 链接时配置(Link-time)

    • 配置在链接时确定
    • 平衡了灵活性和性能
    • 可适应不同ECU型号的细微变化
  3. 后置构建配置(Post-build)

    • 配置在运行时加载
    • 最大的灵活性,但有性能开销
    • 适用于支持多种配置的通用ECU

6. 通信流程

在这里插入图片描述

6.1 网络唤醒流程

网络唤醒是CanNm的关键流程,主要分为以下步骤:

  1. 应用请求网络

    • 应用程序通过调用Nm_NetworkRequest()请求网络
    • NmIf将请求转发给CanNm模块
  2. 激活网络

    • CanNm从总线睡眠模式切换到网络模式
    • 首先进入重复报文状态,确保快速可见性
  3. 发送第一个NM PDU

    • CanNm准备带有节点标识和控制位的NM PDU
    • 调用CanIf_Transmit()发送NM PDU
    • 如果配置了立即传输,立即发送;否则等待下一个周期
  4. 传输确认

    • CAN控制器成功发送后触发CanNm_TxConfirmation()
    • CanNm更新内部状态并可能触发后续行为
  5. 通知上层

    • CanNm调用Nm_NetworkMode()通知应用程序
    • 网络状态转换完成,网络激活

6.2 网络维持活动状态

在网络活动期间,CanNm执行以下操作:

  1. 周期性PDU传输

    • CanNm_MainFunction()定期被调用(由RTE/OS触发)
    • 在正常运行状态下,按照CanNmMsgCycleTime周期发送NM PDU
  2. PDU接收处理

    • 接收到其他节点的NM PDU时,CanIf调用CanNm_RxIndication()
    • CanNm重置超时定时器,表明网络仍然活动
    • 解析NM PDU中的控制位和用户数据
  3. 节点监控

    • 跟踪活跃节点的状态
    • 如启用了节点检测功能,维护网络映射表
    • 处理重复报文请求和协调睡眠信息
  4. 用户数据交换

    • 如果配置了用户数据支持,处理PDU中的用户数据
    • 可通过CanNm_GetUserData()或PduR直接提供给应用程序

6.3 网络关闭流程

网络关闭是一个协调过程,确保所有节点同步进入睡眠:

  1. 应用释放网络

    • 应用程序通过调用Nm_NetworkRelease()释放网络
    • NmIf将请求转发给CanNm模块
  2. 切换到就绪睡眠状态

    • CanNm将内部状态从正常运行更改为就绪睡眠
    • 停止发送NM PDU,但继续监听网络
  3. 等待网络安静

    • 持续监听其他节点的活动
    • 如果接收到任何NM PDU,重置超时定时器
  4. 超时处理

    • 如果在CanNmTimeoutTime内未接收到任何NM PDU
    • CanNm进入准备睡眠模式
    • 调用Nm_PrepareBusSleepMode()通知上层
  5. 最终睡眠转换

    • 在准备睡眠模式等待CanNmWaitBusSleepTime
    • 然后切换到总线睡眠模式
    • 调用Nm_BusSleepMode()通知上层
    • 可能请求通信控制器进入睡眠状态

6.4 被动唤醒机制

CanNm支持被动唤醒,即使应用程序未请求网络:

  1. 接收NM PDU

    • 当节点处于总线睡眠或准备睡眠模式时接收到NM PDU
    • 触发网络被动唤醒
  2. 状态切换

    • CanNm立即切换到网络模式
    • 首先进入重复报文状态
  3. 上层通知

    • 调用Nm_NetworkStartIndication()通知上层
    • 应用程序可以决定是否主动请求网络

6.5 部分网络处理

如果启用了部分网络功能,还有额外的流程:

  1. 部分网络过滤

    • 仅处理符合配置的唤醒模式的NM PDU
    • 基于PDU的用户数据部分进行过滤
  2. 选择性唤醒

    • 仅在满足特定条件时唤醒网络
    • 减少不必要的唤醒,降低能耗

7. 总结

7.1 CanNm的关键价值

AUTOSAR CAN网络管理模块是车载网络中高效能源管理的基石,提供三个核心价值:

  1. 降低功耗

    • 协调ECU睡眠,减少车辆静态电流消耗
    • 使网络组件在不需通信时进入低功耗模式
    • 通过部分网络功能实现选择性唤醒
  2. 提高可靠性

    • 确保所有节点同步进入和离开睡眠状态
    • 防止节点通信状态不一致导致的通信故障
    • 标准化报文格式和处理流程增强系统稳定性
  3. 优化网络资源

    • 减少不必要的网络流量
    • 通过总线负载降低机制优化带宽使用
    • 在NM PDU中传输用户数据提高传输效率

7.2 实施考虑因素

在项目中集成CanNm时,应考虑以下关键因素:

  1. 定时参数调优

    • 根据网络规模调整消息周期和超时时间
    • 平衡网络响应性和总线负载
    • 确保协调睡眠的时间参数合理设置
  2. 网络拓扑规划

    • 考虑节点数量和网络复杂度
    • 在网关ECU上正确配置协调功能
    • 规划节点ID分配方案
  3. 功能配置选择

    • 根据需求选择适当功能子集
    • 决定是否启用高级功能如节点检测、部分网络
    • 选择最适合的配置变体
  4. 诊断和测试策略

    • 实施全面的网络唤醒和睡眠测试
    • 验证不同工作模式下的网络行为
    • 建立网络管理相关的诊断机制

7.3 未来发展趋势

随着汽车电子架构演进,CAN网络管理持续发展:

  1. 更高能效

    • 更精细的部分网络唤醒机制
    • 与高级能源管理系统深度集成
    • 支持更多电源状态的精细控制
  2. 支持新型网络架构

    • 与区域控制器和域控制器架构集成
    • 支持混合总线技术的协调
    • 适应分布式和集中式架构
  3. 安全增强

    • 网络管理与安全机制结合
    • 防止恶意唤醒和睡眠攻击
    • 支持安全启动和关闭序列

CanNm通过灵活配置、标准化接口和验证的状态机设计,为现代汽车电子系统提供高效可靠的网络管理解决方案,是实现车辆能效和通信可靠性目标的关键组件。

AutoSAR CAN (Controller Area Network) 管理是指在汽车网络系统中对控制器局域网(CAN)通信协议及数据传输过程进行管理和控制的一系列功能和服务。它旨在提高汽车电子系统的灵活性、可靠性和可维护性,使得车辆的ECU(Electronic Control Unit,电子控制单元)之间的通信更有效率。 ### AutoSAR CAN网络管理的关键点: 1. **消息优先级设置**:在复杂的汽车网络环境中,不同的信息和控制命令有着不同的紧急程度。通过AutoSAR CAN网络管理系统可以给各个消息设定不同的优先级,保证关键信息能够得到及时处理。 2. **节点注册与注销**:当ECU加入或离开CAN总线时,需要通过网络管理系统进行注册或注销操作。这有助于维持网络的稳定运行,并确保所有连接设备都能受到正确的管理和调度。 3. **数据传输路径优化**:AutoSAR CAN网络管理负责优化数据在网络中的传输路径。这意味着它可以动态调整消息路由,避免拥堵并缩短响应时间,提升整体网络性能。 4. **错误检测与报告**:通过实施自动错误检测机制,AutoSAR CAN网络管理系统能够实时监控通信链路的质量,一旦发现错误立即报告,有助于快速定位故障点并采取纠正措施,减少停机时间和提高安全性。 5. **安全性和隐私保护**:在车辆通信中,保障信息安全至关重要。AutoSAR CAN网络管理系统通常包括加密技术,确保数据在传输过程中不会被未授权访问者窃取,同时防止篡改和伪造消息。 ### 实现AutoSAR CAN网络管理的方式: AutoSAR标准提供了一套完整框架,允许开发者基于标准化的组件构建高度模块化的软件解决方案。这些组件包括OS(Operating System)、服务层和服务接口等,共同协作完成网络管理任务。通过这种方式,厂商可以根据特定需求定制网络配置,同时也便于未来的软件升级和维护。 ### 相关问题: 1. **如何评估AutoSAR CAN网络管理系统的性能?** 2. **AutoSAR CAN网络管理在哪些应用场景中最常见?** 3. **与其他车载网络标准相比,AutoSAR CAN网络管理有哪些独特优势?** 通过这些问题的探讨,我们可以进一步理解AutoSAR CAN网络管理在现代汽车电子架构中的重要地位及其对提升车辆安全性和功能性所发挥的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KaiGer666

慧眼~施主!!!

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

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

打赏作者

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

抵扣说明:

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

余额充值