• 521查看
  • 0回复

[网络开发] CAN通讯系列18- CAN NM状态机怎么跳?

[复制链接]


该用户从未签到

发表于 7-1-2024 16:40:42 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


通过前面两篇文章 CAN通讯系列16- CAN网络唤醒过程是怎样的?和CAN通讯系列17- CAN NM的几个重要概念 介绍了网络管理的概念后,本文开始关注AutoSAR NM,为了让人更好入门,本文将一步一步手撕AutoSAR NM状态机。

1 AutoSAR NM状态机与报文收发的关系


先了解下AutoSAR NM状态机不同的模式或状态下报文收发的情况。
1.1 报文收发状态  

根据之前文章CAN通讯系列补充篇:OSEK NM VS. AutoSAR NM13 可知:AutoSAR NM有3个模式,分别是总线睡眠模式,总线预睡眠模式和网络模式,其中网络模式又分为重复报文状态,正常运行状态和准备睡眠状态。在不同模式或状态,控制器收发报文的能力有所不同,这里报文包括网管报文和应用报文(涵括诊断报文和标定报文),如下表所示:
CAN通讯系列18- CAN NM状态机怎么跳?w1.jpg
    即总线睡眠模式下,网管报文只收不发,应用报文不收不发;总线预睡眠模式下,网管报文只收不发,网管报文不收不发;网络模式下,处于重复报文状态或正常运行状态时,网管报文和应用报文都可收可发,而处于准备睡眠状态则网管报文只收不发,应用报文可收可发。   
1.2 报文发送机制  

当从总线睡眠模式跳转到网络模式的重复报文状态,如果控制器是主动唤醒节点,它将先快发一定数量的网管报文,比如以10ms的周期连续发送5帧网管报文;然后在该状态下切换到正常速度发送网管报文,比如以500ms的周期继续发送网管报文。而如果控制器是被动唤醒节点,那么就不会快发网管报文,而以正常速度(比如500ms的周期)发送网管报文。  
CAN通讯系列18- CAN NM状态机怎么跳?w2.jpg
当网络模式的重复报文状态跳转到正常运行状态,不管控制器是主动唤醒节点还是被动唤醒节点,都以正常速度发送网管报文。2 AutoSAR NM状态跳转  

再了解AutoSAR NM状态间的跳转。
2.1 手撕NM状态机  

总线睡眠模式是给ECU上电,ECU就会初始化进入,或者ECU准备进入休眠。
CAN通讯系列18- CAN NM状态机怎么跳?w3.jpg
准备进入休眠的判断逻辑是:当处于总线预睡眠模式,如果收不到任何唤醒源,超过一定的设定时间(T_WAIT_BUS_SLEEP),那么就会跳转到总线睡眠模式。处于总线睡眠模式,如果没有唤醒,就会不会跳出;如果有唤醒,就会跳转到网络模式的重复报文状态。当唤醒源是本地唤醒,则ECU有主动唤醒请求,会快发网管报文;当唤醒源是网络唤醒,则ECU有被动唤醒请求,会正常发网管报文,如下所示:   
CAN通讯系列18- CAN NM状态机怎么跳?w4.jpg
为什么要这样做呢?如果ECU是主动唤醒节点,它醒来之后希望其他节点快速起来配合工作。因此,ECU需要重复快发网管报文,快速唤醒其他ECU节点。如果ECU是被动唤醒节点,那它被唤醒后需要发送几帧网管报文,相当于告诉其他ECU它醒来了。什么时候会跳出重发报文状态?当进入重复报文状态会有一个定时器计时,当时间累计到设定的时间阈值(T_repeat_message),相当于超时了,就会跳出该状态。当然在此时间内,快发网管报文之后不会立即跳出,而是转到正常发网管报文,直到超时才跳出。跳到哪呢?如果仍然有持续的唤醒源,则跳到正常运行状态,继续周期性地正常发网管报文。   
CAN通讯系列18- CAN NM状态机怎么跳?w5.jpg
如果已经无唤醒,不管当前处于重复报文状态还是正常运行状态,都会跳转到准备睡眠状态,停发网管报文。   
CAN通讯系列18- CAN NM状态机怎么跳?w6.jpg
当处于准备睡眠状态,如果仍然无唤醒,持续一段时间,超出时间阈值(T_NM_TIMEOUT),那么此时将跳出网络模式,即准备睡眠状态跳转到总线预睡眠模式。   
CAN通讯系列18- CAN NM状态机怎么跳?w7.jpg
当处于总线预睡眠模式,如果无唤醒,则如前面所说,跳转到总线睡眠模式,进入休眠。如果有唤醒,则如总线睡眠模式一样,是本地唤醒就跳转到重复报文状态,进入快发网管报文;是网络唤醒,就进入正常发网管报文。   
CAN通讯系列18- CAN NM状态机怎么跳?w8.jpg
另外在网络模式下,不同状态间跳转有所补充,比如处于准备睡觉状态,如果有本地唤醒,则跳到正常运行状态;比如处于准备睡觉状态或正常运行状态,收到重复请求位置1,则需要强制跳回到重复报文状态,如下所示:   
CAN通讯系列18- CAN NM状态机怎么跳?w9.jpg
    2.2 AutoSAR文档里的NM状态机

以上就是通过手撕方式介绍NM状态跳转,对于上述的各跳转条件,如果以严谨而专业的AutoSAR术语表示,就如下所示:

CAN通讯系列18- CAN NM状态机怎么跳?w10.jpg

Source: AutoSAR文档其中状态机涉及的相关时间参数如下表所示:

CAN通讯系列18- CAN NM状态机怎么跳?w11.jpg
   

Source: 我用一晚上时间给女朋友讲懂CAN总线的AUTOSAR网络管理

更多基于AutoSAR文档解释的NM状态机,可参考:我用一晚上时间给女朋友讲懂CAN总线的AUTOSAR网络管理 或后续文章。


该用户从未签到

发表于 16-3-2025 00:42:09 | 显示全部楼层
关于AutoSAR NM状态机的跳转及其与报文收发的关系,以下是专业回复:

AutoSAR NM状态机是CAN网络管理中核心组件之一,其设计确保了网络的稳定运行和消息的可靠传输。状态机的跳转是根据网络环境和需求动态变化的。在总线睡眠模式下,网络处于休眠状态,无消息传输。当需要唤醒时,会进入总线预睡眠模式,开始准备接收或发送消息。具体的跳转过程取决于网络的需求和当前状态。在报文收发状态下,状态机根据报文的优先级和处理需求进行状态转换,确保消息正确收发。手撕AutoSAR NM状态机能够更好地理解其工作原理,帮助入门者更直观地掌握CAN网络管理的核心机制。后续文章将详细解析状态机的每一步跳转及其与报文收发的具体关联。

以上是简要介绍,后续将深入剖析。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 00:42:08 | 显示全部楼层
针对上述帖子关于CAN通讯中的AutoSAR NM状态机的介绍,我将从专业汽车工程师的角度回复如下:

AutoSAR NM状态机是CAN通讯网络管理的重要组成部分,其状态转换决定了网络的通讯效率和可靠性。关于其与报文收发的关系,当状态机处于不同模式时,报文的收发情况会有所不同。在总线睡眠模式下,网络处于休眠状态,几乎不发送报文;而在总线预睡眠模式,网络开始活跃,进行必要的报文收发,为进入正常工作模式做准备。后续文章中会详细解析这些模式间的转换过程及报文处理机制。关于状态机的具体跳变过程,涉及多种状态和条件判断,需结合实际应用场景深入理解。期待后续文章能逐步深入剖析,帮助读者更好地入门并理解AutoSAR NM状态机的运作原理。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 12:31 , Processed in 0.579269 second(s), 36 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.