
1、AUTOSAR 网络管理概述AUTOSAR NMNetwork Management是分布式直接网络管理协议目标是让同一个 NM 集群内所有 ECU同步唤醒、同步休眠实现整车网络低功耗管理避免部分 ECU 提前下电、部分还在工作同时统一协调总线状态切换AUTOSAR。核心逻辑1 在一个网络中若节点对总线通信有需求它就需要周期性地发送网络管理报文否则不发送网络管理报文。2若节点对总线通信不再有需求且在 CanNmTimeoutTimeCanNmWaitBusSleepTime超时前监测不到网络管理报文节点将进入总线睡眠模式。2、运行模式AUTOSAR NM 包含三大模式总线睡眠模式BSM、网络模式NM、预睡眠模式PBSM。 网络模式内部又分为 3 个子状态重复报文状态 RMS、正常运行状态 NOS、准备睡眠状态 RSS。AUTOSAR状态转换图如下其中各函数的意义如下CanNm_InitCanNm 模块初始化初始化内部变量、定时器、状态初始状态进入 Bus Sleep ModeBSM 总线睡眠上电只调用一次。CanNm_PassiveStartUp被动唤醒本 ECU 在 BSM/PBM 下收到其他 ECU 的 NM 报文、硬件唤醒信号不是自己主动要网络从 BSM 或者 PBM 进入 Repeat Message StateRMS 重复报文状态。注意被动唤醒无法进入NOS状态被动唤醒 ≠ 本节点需要网络只是总线被唤醒了本节点只是被顺带唤醒。测试时可以通过发送网络唤醒报文给指定ECU达到被动唤醒的目的。CanNm_NetworkRequest主动唤醒本 ECU 自己需要使用总线通信。主动请求网络从 BSM/PBM 进入 RMS如果已经在 Network Mode维持网络激活。测试时可以给指定ECU的KL 15上电达到主动唤醒的目的本ECU带KL15引脚也可以通过给指定ECU发送UDS 诊断请求达到主动唤醒的目的本ECU不带KL15引脚。CanNm_NetworkRelease释放网络请求本节点不再需要网络停止周期性发 NM 报文。一般情况下可以通过关闭KL15或者诊断会话退出的方式达到释放网络请求的目的。CanNm_RepeatMessageRequest网络已经处于 Network ModeNOS 或者 RSS需要重新快发一轮 NM 报文同步全网并进入RMS状态。属于本地上层主动调用同步测试时一般无法触发。Repeat Message bit received当 CanNm 在网络模式NOS/RSS下收到一帧 NM PDU并且报文 CBV 控制向量比特位里的 Repeat Message BitBit0 1就触发这个事件。测试时可通过模拟发送网络唤醒报文到ECU且网络唤醒报文中重复报文请求标志位置1达到此目的。重复报文请求标志位会在下文中详细介绍。T_REPEAT_MESSAGE节点在重复报文状态中持续的时间CanNmRepeatMessageTime超时。T_NM_TIMEOUT在准备睡眠状态中该定时器CanNmTimeoutTime溢出后节点进入准备总线睡眠模式T_WAIT_BUS_SLEEP当节点进入 准备总线睡眠模式后开启该定时CanNmWaitBusSleepTime 当该定时器超时后节点需进入总线睡眠模式3、总线模式介绍3.1 总线睡眠模式BSM总线睡眠模式的作用网络无通信需求时降低节点功耗。节点进入该状态后保留唤醒机制等待唤醒同时把功耗降到指标要求以内。ECU 在总线睡眠模式下一旦 CAN (FD) 物理层检测到唤醒信号报文、总线电平变化等会打开对应 CAN 通道的报文接收功能并启动 T_WakeUpTimeout。在 T_WakeUpTimeout 时限内收到网络管理 PDU进入正常唤醒流程T_WakeUpTimeout 超时仍未收到 NM PDU关闭该通道报文接收能力。 在正常唤醒流程启动前ECU 不能发送任何报文。节点处于总线睡眠模式时若调用CanNm_NetworkRequest()CanNm 模块切换至网络模式并开启快发机制默认进入重复报文状态【BSM-RMS_本地唤醒】若调用CanNm_PassiveStartUp()CanNm 模块切换至网络模式默认进入重复报文状态。【BSM-RMS_远程唤醒】总线睡眠模式报文收发特性NM报文APP报文TXRXTXRXNYNN其中应用报文包括常规应用报文、诊断报文。3.2 准备总线睡眠模式PBSM准备总线睡眠模式给 ECU 收尾时间把缓存队列里面残留报文发完做进入深度睡眠前的准备这个阶段不再允许新增报文发送但发送缓存中的报文可被发送。节点一旦进入准备总线睡眠模式即刻启动CanNmWaitBusSleepTime定时器定时器溢出后节点进入总线睡眠模式。【PBSM-BSM】节点在准备总线睡眠模式时如果收到网络管理报文或是上层产生通信需求将切换回网络模式默认进入重复报文状态。【PBSM-RMS_本地唤醒】or【PBSM-RMS_远程唤醒】准备总线睡眠模式报文收发特性NM报文APP报文TXRXTXRXNYNN3.3 网络模式NM网络模式包含三个子状态RMS、NOS、RSSRMSRepeat Message State 重复报文状态NOSNormal Operation State 正常运行状态 RSSReady Sleep State 准备睡眠状态节点从总线睡眠、准备总线睡眠模式切入网络模式时默认进入重复报文状态。 进入网络模式后开启CanNmTimeoutTime定时器 网络模式中每成功发送或收到一帧 NM 报文就重置该定时器CanNmTimeoutTime表示总线还有活跃节点、网络还需要保持唤醒暂时不往 PBSM 走。当唤醒事件使节点从总线睡眠模式进入网络模式时节点进入重复报文状态并发送首帧网络管理报文整个过程需在唤醒时间阈值Wakeup内完成。3.3.1 重复报文状态RMS重复报文状态是网络模式下的子状态。当节点从总线睡眠模式、准备总线睡眠模式进入网络模式时默认进入重复报文状态。当节点进入重复报文状态后需要开始或重新开始发送网络管理报文此时重复报文标志位置位。节点在进入重复报文状态后需要保持一段时间这段时间由参CanNmRepeatMessageTime决定CanNmRepeatMessageTime 超时后按照需要进入常规运行状态或准备睡眠状态。存在网络请求 → 切换至正常运行状态NOSRMS下 KL15 ON 或 诊断唤醒【RMS-NOS】无网络请求 → 切换至准备睡眠状态RSSRMS下无动作【RMS-RSS】离开重复报文状态重复报文标志位置0注通常情况下可以通过重复报文标志位判断当前是RMS状态还是NOS状态且RMS状态只能维持CanNmRepeatMessageTime。若节点处于总线睡眠模式或准备总线睡眠模式由于成功地接收到网络管理报文而进入重复报文状态或节点处于常规运行状态或准备睡眠状态由于成功接收到重复报文状态请求标志位置位的网络管理报文而进入重复报文状态需按参数 CanNmMsgCycleTime规定的周期发送网络管理报文。此外如需要快速唤醒总线会在一定时间内执行快发动作启用快发机制如KL15 ON。 节点由本地事件调用 CanNm_NetworkRequest()/ CanNm_RepeatMessageRequest()进入重复报文状态时先以CanNmImmediateNmCycleTim作为发送周期发送 NM 报文快发报文的总数量由CanNmImmediateNmTransmissions确定。 全部快发报文发送完毕后再按照常规周期CanNmMsgCycleTime发送网络管理报文。其中CanNm_RepeatMessageRequest()测试时无法触发。注快发阶段所花费的时间包含在CanNmRepeatMessageTime 时间内。当节点从准备总线睡眠模式、常规运行状态、准备睡眠状态进入重复报文状态后需在T_START_NM_TX 时间内发送出第一帧网络管理报文。而由总线睡眠模式进入重复报文状态并发出第一帧网络管理报文的最大允许时间间隔表示为T_Wakeup。当节点从总线睡眠模式或准备总线睡眠模式进入重复报文状态并成功发送第一帧网络管理报文后需在 T_START_App_TX 时间内将第一帧 CAN(FD) 应用报文发送出来。重复报文状态报文收发特性NM报文APP报文TXRXTXRXYYYY3.3.2常规运行状态NOS节点主动持有网络请求、维持总线唤醒的工作状态。当节点进入常规运行状态时需按照 CanNmMsgCycleTime 的周期发送网络管理报文。当节点处于常规运行状态若定时器 CanNmTimeoutTime 溢出时需要重启定时器。当节点处于常规运行状态若本地睡眠条件满足CanNm_NetworkReleaseCanNmRepeatMessageTime 超时需进入准备睡眠状态。【NOS-RSS】当节点处于常规运行状态若接收到重复报文请求标志位置位的网络管理报文时需进入重复报文状态重复报文标志位置位不进行快发。【NOS-RMS】当节点处于常规运行状态 CanNm_RepeatMessageRequest函数被调用时需进入重复报文状态并将报文中重复报文请求标志位置位同时启用快速发送机制。【NOS-RMS】一句话只有主动唤醒才会触发快发机制。常规运行状态报文收发特性NM报文APP报文TXRXTXRXYYYY3.3.3 准备睡眠状态RSS本节点已经释放网络请求、不再主动发 NM 报文但总线还被别的节点维持唤醒被动等待全网释放是协同睡眠的核心状态。进入准备睡眠状态节点停止发送网络管理报文。准备睡眠状态下CanNmTimeoutTime超时节点进入准备总线睡眠模式。【RSS-PBSM】准备睡眠状态检测到本地网络请求如KL15 ON切换为常规运行状态。【RSS-NOS】准备睡眠状态收到携带重复报文请求标志的 NM 报文进入重复报文状态。【RSS-RMS】准备睡眠状态调用CanNm_RepeatMessageRequest()节点进入重复报文状态置位 NM 报文重复报文请求标志启动快发。【RSS-RMS】准备睡眠状态报文收发特性NM报文APP报文TXRXTXRXNYYY4、时间参数含义CanNmRepeatMessageTime节点在重复报文状态中持续的时间CanNmTimeoutTime节点进入网络模式后即开启该定时器在准备睡眠状态中该定时器溢出后节点进入准备总线睡眠模式CanNmWaitBusSleepTime该定时器的作用是确保所有的节点都有时间停止其网络活动。当节点进入准备总线睡眠模式后开启该定时器当该定时器超时后节点需进入总线睡眠模式T_START_NM_TX该参数定义了节点从准备总线睡眠模式、常规运行状态或准备睡眠状态进入重复报文状态到发出第一帧网络管理报文的最大允许时间间隔T_START_NM_TX该参数定义了节点从准备总线睡眠模式、常规运行状态或准备睡眠状态进入重复报文状态到发出第一帧网络管理报文的最大允许时间间隔T_START_App_TX在成功发送出第一帧网络管理报文后节点应发送出应用报文的最大时间间隔CanNmImmediateNmCycleTim节点启动快速发送机制时网络管理报文的快速发送周期CanNmMsgCycleTime在网络模式除去准备睡眠状)中网络管理报文的发送周期T_Wakeup节点从唤醒事件发生由总线睡眠模式进入重复报文状态并发出第一帧网络管理报文的最大允许时间间隔。CanNmImmediateNmTransmissions当节点处于重复报文状态并启用快速发送机制时发送快发报文的次数T_WakeUpTimeout本参数定义了在监测到CAN(FD)物理层唤醒事件后ECU具有报文接收能力的最大允许时间5、网络管理报文网络管理报文是 CAN(FD)分布式直接 NM 的广播载体所有节点依靠收发 NM 报文协同唤醒、维持网络、同步休眠决策。AUTOSAR 标准本身不强制规定 NM 报文固定 ID 值只规定行为约束ID 分配策略属于整车 OEM / 系统设计规范行业主流两种方案同集群共用同一个 NM ID、NM ID 基 ID 节点 ID网络管理 PDU 数据格式如下字段说明Byte0SNI 源节点 IDSource Node Identifier标识发送方 ECUByte1CBV 控制位向量Control Bit Vector核心标志位Byte2~Byte7User DataOEM 自定义可放唤醒原因、诊断信息等5.1 源节点地址同一个网管集群内用来唯一标识发送 NM 报文的 ECU源节点地址需存放于网络管理 PDU 的 Byte0 中。5.2 控制比特向量1 字节标准定义的网管控制标志字节是驱动 CanNm 状态机跳转、同步休眠、PN 局部网管的核心协议字段。控制比特向量需存放于网络管理 PDU 的 Byte1 中。Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0ReservedPartialNetworkInformationBitReservedActiveWakeupBitReservedReservedReservedRepeatMessageRequestBitBit0RptMsgReqRepeat Message Request重复报文请求位1该报文发送节点请求其他节点进入重复报文状态。接收方收到后进入 RMS即Repeat Message bit received0该报文发送节点未请求其他节点进入重复报文状态Bit4Active Wakeup Bit 主动唤醒位1 本节点主动唤醒总线0 被动唤醒Bit6PNI局部网络管理标志位PN 网络才用5.3 User Data 用户数据用户数据可被应用层读取和写入用于传输用户定义其中User Data Byte0 的 bit0 定义为 RepeatSts即上文所述重复报文状态信号值定义如下 0x0节点不在重复报文状态 0x1节点处于重复报文状态。重复报文请求标准位Byte1的Bit0用以请求其他节点进入RMS重复报文状态位Byte2的Bit0用以表征本节点进入RMS本文从测试工程师视角梳理 AUTOSAR 网络管理状态机的完整跳转逻辑并对关键测试点单独拆解、分析说明。后续计划整理一份详细的测试步骤与测试用例敬请期待。同时恳请各位同行专家对文中疏漏与不妥之处提出宝贵意见。