[AUTOSAR] [NM网络管理]-深度解读

本文详细介绍了汽车网络管理(NM)的概念,涉及不同模式如睡眠、预睡眠和网络模式,以及网络管理报文的结构和状态机的工作原理。文章还讨论了诊断报文处理和故障处理策略,旨在优化电池使用和通信效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1. NM网络管理介绍

2. 网络管理基本概念

3. 网络管理模式

3.1 网络管理参数说明

3.2 睡眠模式(Bus-Sleep Mode)

3.3 预睡眠模式(Prepare Bus-Sleep Mode)

3.4 网络模式(Network Mode)

4. 网络管理报文

4.1 网络管理报文格式

4.2 源节点标识符

4.3 控制比特向量

4.4 数据域

5. NM网络管理状态机

5.1 状态转换及条件说明

6. 诊断报文处理

7. 故障处理


1. NM网络管理介绍

       汽车上挂载ECU节点有很多,不可能一启动所有ECU都同时正常工作。而是当用户请求相关功能时,参与该功能的相关ECU节点才需要启动起来,否则带来的只是过多对电池的无用消耗。为了更好的去利用整车的能源,防止出现不必要的电池浪费,网络管理(Network Management,以下简称NM)便可以很好的解决此类问题,实现车上的ECU能够协同睡眠以及唤醒,最大可能的高效利用整车电池能源,节约用车成本,延长电池使用寿命。

2. 网络管理基本概念

唤醒请求可分为如下两种:
本地唤醒请求: 即来自该节点内部的对网络的唤醒请求。主动唤醒节点的网络 管理报文必须先于应用报文发送。
远程唤醒请求: 即来自网络上其他节点的网络管理报文请求。
节点的网络状态包括以下两种:
网络请求: 模块需要主动与总线上其他节点进行信息交换时,它必须通过发送 网络管理报文来请求网络, 并将其网络状态设置为“网络请求”;
网络释放: 模块不需要主动与总线上其他节点进行信息交换时,必须将其网络 状态设置为“网络释放”;需要注意的是,在网络释放状态下模块仍可能因总 线上的其他节点请求网络而与其进行信息交互。

3. 网络管理模式

3.1 网络管理参数说明
网络管理参数说明

        网络管理包含如下三种模式: 睡眠模式(Bus-Sleep Mode) 、预睡眠模式Prepare Bus-Sleep Mode) 、网络模式(Network Mode)。

下表描述了在不同的网络模式下报文的发送情况:

NM Mode说明
3.2 睡眠模式(Bus-Sleep Mode)
       当节点没有本地网络唤醒及远程唤醒请求时, ECU 通讯控制器切换至睡眠模式, ECU 功耗降低至适当水平。 在睡眠模式下,节点的网络管理报文和应用报文禁止发送,并且不能对总线上的 报文进行 ACK 应答;但可以被总线上的报文唤醒,在被唤醒后才可以对总线报文进行 ACK 应答。同时节点在该模式下,如果检测到有效的唤醒源,节点必须被唤醒。
3.3 预睡眠模式(Prepare Bus-Sleep Mode)
       当节点进入预睡眠模式时,将启动 T_WAIT_BUS_SLEEP 定时器。 在预睡眠模式下,总线活动需静止下来,最终达到总线上没有活动,但ECU 通讯 控制器状态应处于工作模式。 在该模式下,节点的网络管理报文和应用报文禁止发送(为了清空发送缓存,允 许将发送队列中已有的报文发完),但需对总线上的报文进行ACK 应答。
3.4 网络模式(Network Mode)
       当节点进入网络模式时,将启动 T_NM_TIMEOUT 定时器。在网络模式下成功接 收或者发送网络管理报文时,节点将重新启动 T_NM_TIMEOUT 定时器。  网络模式分为三种内部状态:重复报文状态(Repeat Message State) 常规操作状态:(Normal Operation State)、 准备睡眠状态(Ready Sleep State)。

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

       重复报文状态确保节点从睡眠模式或预睡眠模式到网络模式的转换对网络上的其 他节点可见。进入重复报文状态时,节点将(重新)开始网络管理报文的发送,并启 动T_REPEAT_MESSAGE 定时器。应用报文必须在第一帧网络管理报文发送开始后 且小于 T_STARTx_AppFrame 内发送。

       节点的网络管理状态将保持在重复报文状态直到T_REPEAT_MESSAGE时间截 止,一旦该时间超时,网络管理状态应该离开重复报文状态。在该状态下,节点的网络管理报文和应用报文必须能够正常发送。在 重 复 报 文 状 态 下 , 节 点 一 旦 接 收 或 发 送 一 条 网 络 管 理 报 文 , 或 者 T_NM_TIMEOUT 超时,则 T_NM_TIMEOUT 立即重置。

       重复报文状态包含两个子状态: NM快速发送子状态(NM Immediate Transmit State)、NM正常发送子状态(NM Normal Transmit State)。
       

NM快速发送子状态(NM Immediate Transmit State):节点在进入 NM 快速发送子状态时,为了快速唤醒网络,节点必须以快速周期T_NM_ImmediateCycleTime 发送网络管理报文。发送的快速网络管理报文数量由 参数 N_ImmediateNM_TIMES 决定,节点每次成功发送一条快速周期网络管理报文 时,该数值应递减 1

NM正常发送子状态(NM Normal Transmit State):进入NM正常发送子状态后,节点必须以正常周期T_NM_MessageCycle发送网 络管理报文。若节点因被动唤醒请求进入NM PDU正常发送子状态,必须开启 NMTimeout Timer,并尽可能快速(NmAsrCanMsgCycleOffSet,不做定量限制)的 以正常周期发送网络管理报文,同时所有的应用报文必须从节点检测到唤醒请求后延 迟T_STARTx_AppFrame才能发送。
(2)   常规操作状态(Normal Operation State)
       当节点因发生本地唤醒事件需要与网络上的其他节点进行通讯时,必须保持在常规操作状态,并且以正常周期 T_NM_MessageCycle 发送网络管理报文。在常规操作状态下,节点一旦接收或发送一条网络管理报文,或者 T_NM_TIMEOUT 超时,则T_NM_TIMEOUT 应该立即重置。在常规操作状态下,节点的网络管理报文和应用报文必须正常发送。
(3)  准备睡眠状态(Ready Sleep State)
       节点进入准备睡眠后,必须停止发送网络管理报文。 在准备睡眠状态下,节点一旦接收到一条网络管理报文,T_NM_TIMEOUT 应该 立刻重置。T_NM_TIMEOUT 超时,节点的网络管理状态应进入预睡眠模式。

4. 网络管理报文

4.1 网络管理报文格式
网络管理报文格式
       一般来说, CAN 扩展帧 网络管理报文 ID 范围为:  0x18FFFA00~0x18FFFAFF;CAN 标准帧网络管理报文 ID 范围为: 0x400~0x47F。
4.2 源节点标识符

       NM 网络管理报文的字节 0 用于发送源节点标识符,每一个 ECU 都会被分配一个唯一的 标识符,来告知接收节点该 NM 网络管理报文是由哪个节点发送的。

       如果采用标准帧,则 NM Message ID = NM Control Frame Base Address + ECU Address。其中 NM Control Frame Base Address 0x400
4.3 控制比特向量
       网络管理报文字节 1 用于发送控制比特向量( Control Bit Vector ), 用于指示网络管理状态,仅用于测试。
比特向量控制字节
4.4 数据域

       网络管理报文的字节 2 到字节 7 用于发送用户自定义的数据信息。

5. NM网络管理状态机

5.1 状态转换及条件说明
网络管理状态图
NM_01 : 网络管理节点的 KL30 上电后( Battery Power on ),节点进行网络管理模块初 始化,初始化完成后进入睡眠模式,具备被本地唤醒事件或者远程唤醒请求的能力。
NM_02 : 当网络管理节点处于睡眠模式时,如果收到有效的远程唤醒请求,那么节点必须 离开睡眠模式并进入重复报文状态的 NM 正常发送子状态。 进入 NM 正常发送子状态后,在定时器 T_REPEAT_MESSAGE 超时前,节点必 须以 T_NM_MessageCycle 为周期发送网络管理报文。
NM_03 如果节点在睡眠模式下检测到本地唤醒请求,那么节点必须主动唤醒网络,进入 NM 快速发送子状态,并将主动唤醒位设置为 1 。 节点进入 NM 快速发送子状态后,需以 T_NM_ImmediateCycleTime 为周期, 发送数量为 N_ImmediateNM_TIMES 的网络管理报文。
NM_04 处于 NM 快速发送子状态的节点,在计数器 N_ImmediateNM_TIMES 为零 时,将进入 NM 正常发送子状态。
NM_05 处于重复发送状态下的节点,如果 T_NM_TIMEOUT 超时,节点的网络管理状态 不应改变,但 T_NM_TIMEOUT 必须重置。
NM_06 处于 NM 正常发送子状态的节点,当 T_REPEAT_MESSAGE 超时,但节点仍需要维 持网络通信,则进入常规操作状态。节点继续保持以正常周期 T_NM_MessageCycle 发送网络管理报文和相关的应用报文。
NM_07 处于常规操作状态的节点,如果节点自身有重复报文请求,节点将网络管理状态 切换到重复报文状态的 NM 快速发送子状态;如果节点收到其他节点重复报文请求位 置 1 NM 报文,节点将网络管理状态切换到重复报文状态的 NM 正常发送子状态。
NM_08 处于常规操作状态下的节点,如果 T_NM_TIMEOUT 超时,节点的网络管理状态 不应改变,但 T_NM_TIMEOUT 必须重置。
NM_09 处于常规操作状态下的节点,如果满足睡眠条件,节点将网络管理状态切换到准 备睡眠状态,同时停止发送网络管理报文。 注意,对于需要协调多个 AUTOSAR 网络管理子网的网关,其处于常规操作状态 下,如果检测到自身满足睡眠条件,并在满足准备睡眠条件后 2s 内未收到其他节点的 网络管理报文,则将网络管理状态切换到准备睡眠状态,同时停止发送网络管理报 文。
NM_10 处于准备睡眠状态的节点,如果检测到本地唤醒请求,则将网络管理状态切换到 常规操作状态。
NM_11  处于准备睡眠状态的节点,如果节点自身有重复报文请求,节点将网络管理状态 切换到重复报文状态的 NM 快速发送子状态;如果节点收到其他节点重复报文请求位 置 1 NM 报文,节点将网络管理状态切换到重复报文状态的 NM 正常发送子状态。
NM_12  处于 NM 正常发送子状态下的节点,当 T_REPEAT_MESSAGE 超时,且节点满 足睡眠条件,节点将进入准备睡眠状态。
NM_13 处 于 准 备 睡 眠 状 态 的 节 点 , 如 果 不 再 收 到 本 地 或 远 程 唤 醒 请 求 , 在 T_NM_TIMEOUT 超时后,节点将进入预睡眠模式。
NM_14 处于网络模式的节点,在成功接收或者发送一帧网络管理报文后,节点的网络管 理状态不应改变,但 T_NM_TIMEOUT 必须重置。
NM_15 处于预睡眠模式的节点,如果收到远程唤醒请求,将进入重复报文状态的 NM 正 常发送子状态。
NM_16  处于预睡眠模式的节点,如果收到本地唤醒请求,将进入重复报文状态的 NM 快 速发送子状态。
NM_17 处 于 预 睡 眠 模 式 的 节 点 , 如 果 不 再 收 到 本 地 或 远 程 唤 醒 请 求 , 在 T_WAIT_BUS_SLEEP 超时后,节点将进入睡眠模式。

6. 诊断报文处理

       控制器处于睡眠模式( BusSleepMode 或者 PreBusSleepMode ),则不能被诊断 报文唤醒;当控制器处于诊断会话模式下(Diagnostic Session ),节点不能进入睡眠 模式(网络管理模式在网络模式下)。 诊断软件模块主要通过网络请求和网络释放的接口函数来决定其通信需求。 例如: 当控制器在准备睡眠状态,接收到诊断报文,诊断软件模块需要向网络管理模块 发送网络请求使其向常规操作状态转换。在诊断应用程序中,它将启动一个计时器 TWait_DiagReq,当 TWait_DiagReq (5S)超时后,诊断应用程序应向网络管理模块发送网络释放函 数使其向准备睡眠状态转换。(网络释放命令应由所有应用程序协商发送)。
注:TWait_DiagReq 是一个计时器,声明在控制器接收到诊断请求报文后应维持唤醒 状态的最少时间。每当控制器接收到一帧诊断请求报文,TWait_DiagReq 定时器都要重 启。 节点在 BusSleepMode 或者 Prepare Bus-Sleep Mode 接收到诊断报文,节点不 应进入网络模式发送 NM 报文。

7. 故障处理

点的网络管理处于或者即将处于总线不可用时,具有如下确定行为:
(1)  如果节点没有准备好睡眠,但总线变得不可用,则不应该进入睡眠模式。
(2)  如果节点已准备好睡眠,但总线变得不可用,则应该进入睡眠模式。
(3)  如果总线不可用,但节点状态变为准备睡眠,则应该进入睡眠模式。
(4)  如果总线不可用,但节点状态变为未准备好睡眠,则不应该进入睡眠模式。
网络管理的故障处理不适用于已经处于睡眠模式的节点,因为在睡眠模式下无通 信行为,此时总线不可用是难以检测到的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值