发布时间:2026/7/24 18:04:22
AUTOSAR CAN NM核心状态机讲解 在深入讲解 AUTOSAR CAN NM 状态机之前需要明确一个关键事实没有报文发出不代表程序没有运行。CAN NM 的状态管理逻辑复杂即使总线静默ECU 也可能处于不同的网络管理状态执行着相应的定时器管理和状态跳转逻辑。AUTOSAR CAN NM状态机详解目录1. 状态介绍1.1 总线睡眠模式Bus-Sleep Mode1.2 预睡眠模式Prepare Bus-Sleep Mode1.3 网络工作模式Network Mode1.3.1 报文重复状态Repeat Message State1.3.2 常规运行状态Normal Operation State1.3.3 就绪睡眠状态Ready Sleep State2. 状态间跳转条件2.1 状态跳转表格2.2 BSM→RMS2.3 PBSM→BSM2.4 PBSM→RMS2.5 RMS→NOS2.6 NOS→RMS2.7 RMS→RSS2.8 RSS→RMS2.9 RSS→PBSM3. 常见配置参数4. 参考文献状态介绍本小节主要介绍每个状态主要职责ECU在这个状态里面需要做哪些动作。最重要的是就是 网络工作模式Network Mode它涉及到的配置项是最多的也是最复杂的。CANNM的状态机可以分成3个大状态总线睡眠模式Bus-Sleep Mode预睡眠模式Prepare Bus-Sleep Mode网络工作模式Network Mode其中网络工作模式Network Mode又分三个子状态报文重复状态Repeat Message State常规运行状态Normal Operation State就绪睡眠状态Ready Sleep State总线睡眠模式Bus-Sleep Mode这个模式是ECU上电之后CAN NM的默认状态。ECU关闭CAN发送功能、停止NM报文收发CAN收发器进入休眠模式仅保留基础唤醒检测能力应用层无CAN数据交互。预睡眠模式Prepare Bus-Sleep Mode该状态是工作态到休眠态的过渡缓冲状态核心作用是避免瞬时总线空闲导致的频繁休眠唤醒提升网络稳定性。其实这个状态和 总线睡眠模式BSM没什么太大区别只是用于过渡一下避免芯片反复掉电重启。其中比较关键的配置项是CANNM_WAIT_BUS_SLEEP_TIME这个参数是决定ECU待在预睡眠模式PBSM的最长时间时间一到就会跳到总线睡眠模式BSM网络工作模式Network Mode网络工作模式为ECU正常通信状态包含三种子状态报文重复状态RMS、常规运行状态NOS、就绪睡眠状态RSS。这里有一个贯穿整个网络工作模式NM的参数NM-Timeout Timer说来也是非常神奇这个定时器只要一进NM状态就会开始计时他有非常多的重置条件在RMS和NOS状态下只要计数器记满就自动重新计时成功发出NM报文也会重新计时接收到了NM报文也会重新计时那么什么时候NM-Timeout Timer能够真正的超时并且不重置呢答案就是在RSS状态下如果NM-Timeout Timer超时了就会跳出NM状态跳到PBSM状态。报文重复状态Repeat Message State在这个状态里主要是做应用报文和NM报文的发送。在这个状态下有几个比较重要的参数CANNM_REPEAT_MESSAGE_TIME 这个参数决定ECU在报文重复状态RMS待多久CanNmImmediateNmTransmissions 这个参数决定NM快发的帧数CanNmImmediateNmCycleTime 这个参数决定NM快发的周期CANNM_MSG_REDUCED_TIME 这个参数决定NM报文的正常发送周期常规运行状态Normal Operation State在这个状态里主要是做应用报文和NM报文的发送别的特殊操作没有属于是一个老实人了。CanNmMsgCycleTime 这个参数决定NM报文的正常发送周期CANNM_MSG_REDUCED_TIME 这个参数一般是大于1/2的CANNM_TIMEOUT_TIME如果开启了就绪睡眠状态Ready Sleep State在这个状态ECU是被禁止发送NM报文只能发送应用报文。状态间跳转条件这部分我们要结合一个UML的状态机图来做一个详细讲解比较更容易理解。我们首先稍微讲一下这个图该怎么看他的跳转线上有许多条件“/”前面的代表跳转条件“/”后面的代表跳转时执行的动作。状态跳转表格如下当前状态目标状态跳转条件伴随动作BSMRMS- CanNm_PassiveStartup();- CanNm_NetworkRequest();- Start NM-Timeout Timer;- Start Repeat Message Timer;- Nm_NetworkMode();PBSMBSMWait Bus-Sleep Timer超时Nm_BusSleepMode()PBSMRMS- CanNm_RxIndication();- CanNm_PassiveStartUp();- CanNm_NetworkRequest();- Start NM-Timeout Timer;- Start Repeat Message Timer;- Nm_NetworkMode();RMSNOSNetwork Requested/NOSRMS- Repeat Message Bit Received- CanNm_RepeatMessageRequest();Start Repeat Message TimerRMSRSSNetwork Release/RSSRMS- Repeat Message Bit Received- CanNm_RepeatMessageRequest();Start Repeat Message TimerRSSPBSMNM-Timeout Timer has expired- Start Wait Bus-Sleep Timer;- Nm_PrepareBusSleepMode();BSM-RMS由图可知这个路径有两个条件满足任意条件都可跳转CanNm_PassiveStartup(); 可以看做是被动唤醒是由上层组件决定是否运行进入NM模式CanNm_NetworkRequest(); 属于主动唤醒属于是本ECU检测到了某些硬件唤醒源然后主动将网络唤醒的一种。在BSM状态下接收到NM报文不会自动的跳转到NM状态而是通过调用Nm_NetworkStartIndication通知上层组件去做决策如果决策允许进入就会调用CanNm_PassiveStartup去跳转。在跳转时会伴随着三个动作启动NM-Timeout 定时器启动Repeate Message 定时器调用NM_NetworkMode函数PBSM-BSM进入的条件非常简单就一个Wait Bus-Sleep Timer超时PBSM-RMS由图可知这个路径有三个条件满足任意条件都可跳转CanNm_RxIndication(); 属于被动唤醒收到了其他ECU发出来的NM报文。CanNm_PassiveStartup();CanNm_NetworkRequest(); 属于主动唤醒属于是本ECU检测到了某些硬件唤醒源然后主动将网络唤醒的一种。在跳转时会伴随着三个动作启动NM-Timeout 定时器启动Repeate Message 定时器调用NM_NetworkMode函数RMS-NOS进入NOS的条件由两点需要同时满足Repeat Message Timer 过期Network Requested 由主动唤醒网络请求注意接收到NM报文不会满足Network Requested条件NOS-RMS两个条件满足任意一个接收到Repeat Message Bit这个是由其他节点发出的处于CBV区域CanNm_RepeatMessageRequest(); 由其他组件决定调用/一般不会使用这个会伴随着启动 Repeat Message TimerRMS-RSS进入NOS的条件由两点需要同时满足Repeat Message Timer 过期Network Released 收到网络释放信号RSS-RMS两个条件满足任意一个接收到Repeat Message Bit这个是由其他节点发出的处于CBV区域CanNm_RepeatMessageRequest(); 由其他组件决定调用/一般不会使用这个会伴随着启动 Repeat Message TimerRSS-PBSM这个条件很简单就只有一个NM-Timeout Timer 超时退出。并且伴随着启动Wait Bus-Sleep Timer; 以及调用Nm_PrepareBusSleepMode();进入PBSM状态。常见配置参数配置参数解释CANNM_TIMEOUT_TIME处于NM的超时时间和NM-Timeout Timer相关CANNM_REPEAT_MESSAGE_TIME待在RMS的时间CanNmMsgCycleTimeNM报文正常发送周期CanNmImmediateNmCycleTimeNM报文快发的周期CanNmImmediateNmTransmissionsNM报文快发的次数CANNM_WAIT_BUS_SLEEP_TIMEPBSM跳转到BSM的等待时间CANNM_MSG_REDUCED_TIMENM报文降低时间需要开启CANNM_BUS_LOAD_REDUCTION_ENABLED参考文献《AUTOSAR_SWS_CANNetworkManagement.pdf》

相关新闻

2026/7/24 18:04:22

针对硬件实时计算值(非 Transaction 字段)的错误注入

问题现象 在 UART 验证环境中,奇偶校验位(parity)通常不会被定义为 transaction 数据结构的字段,而是在 driver 的 send_to_dut 任务中根据待发送的 data 数组实时计算得出,例如采用偶校验时直接执行 parity ^(data)&…

2026/7/24 17:59:21

深度学习与计算机视觉在结构位移测量中的创新应用

1. 项目概述:深度学习在结构位移测量中的革新应用结构位移测量是土木工程健康监测的核心环节,传统接触式传感器存在安装复杂、成本高昂等痛点。我们团队开发的这套基于深度学习的非接触式测量系统,通过计算机视觉与亚像素算法的融合&#xff…

2026/7/24 19:34:26

Hermes Agent 自我进化:Curator 怎样清理、修复和迭代过期 Skills

Hermes Agent 自我进化:Curator 怎样清理、修复和迭代过期 Skills [!NOTE] 很多初学者把智能体当成“更会聊天的模型”,结果一上手就把文件、网络和高权限命令交出去。本篇围绕 Curator维护 建立一套可复现的实践路径:先明确任务边界,再确认工具与权限,最后用日志和结果验…

2026/7/24 19:34:26

腾讯:自适应剪枝优化高并发推理

📖标题:D-cut: Adaptive Verification Depth Pruning for Batched Speculative Decoding 🌐来源:arXiv, 2607.14647v1 🛎️文章简介 🔸研究问题:在高并发场景下,长草稿的投机解码因验…

2026/7/24 19:34:26

Agent技术现状与研究生发展指南

1. 研究生搞agent还有搞头吗?最近在实验室带本科生做项目时,有个研一的学弟跑来问我:"师兄,现在搞agent方向还有前途吗?我看网上有人说这个方向已经饱和了。"这个问题让我想起三年前自己刚读研时的迷茫。作为…

2026/7/24 19:34:26

企业微调数据管理:内部文档如何转化成高质量训练样本

企业微调数据管理:内部文档如何转化成高质量训练样本 一、个性化深度引言 做企业微调最尴尬的不是模型效果不好,而是效果不稳定——今天用这批数据训好了,下周新数据加入后直接退化。追查下去,问题十有八九出在数据处理环节。 内部…

2026/7/24 19:29:26

如何免费解锁网盘直链下载:LinkSwift全面指南与实战教程

如何免费解锁网盘直链下载:LinkSwift全面指南与实战教程 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…

2026/7/23 12:54:51

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/24 0:03:10

不同品牌斜齿行星减速机如何替换?以PX与PAG系列为例

不同品牌斜齿行星减速机如何替换?以 PX 与 PAG 系列为例 一、系列对应不等于型号直接互换 PX 与 PAG 都属于斜齿、方法兰、输出轴式精密行星减速机,结构形式和应用方向具有对应关系。 原设备使用PX系列时,可以优先从PAG系列中寻找替换型号。但…

2026/7/24 0:03:10

jdk8 把list 扁平化成String 多个以逗号分隔

在 JDK 8 中&#xff0c;将 List 扁平化为以逗号分隔的 String&#xff0c;有几种非常简洁且高效的方法。&#x1f680; 推荐方案&#xff1a;使用 Collectors.joining()这是最标准的 Java 8 写法&#xff0c;适用于 List<String>。javaimport java.util.stream.Collecto…

2026/7/24 0:03:10

java 两个 long id 怎么合并成一个long id 并且不重复

“把两个 Long ID 合并成一个唯一的 Long ID&#xff0c;且保证不重复”这个需求&#xff0c;在 Java 里直接做数学上的“完美合并”是不可能的。因为两个 Long&#xff08;各 64 位&#xff09;要合并成一个 Long&#xff08;64 位&#xff09;&#xff0c;在信息论上是有损压…

2026/7/23 23:42:43

3个高效策略:快速掌握Axure中文界面配置

3个高效策略&#xff1a;快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…