深析AutosarNM 网络管理
- 深析AutosarNM 网络管理
- 1. AutosarNM 网络管理相关的专业术语
- 2. 各种模式下的各种状态下,报文的收发情况汇总如下表:
- 3. AutosarNM网络管理使用的时间参数:
- 4. AutosarNM网络管理唤醒请求(Wake Up Request)
- 5. AutosarNM网络管理的网络状态(Network States)
- 6. AutosarNM网络管理状态机步说明:
- 总结:
深析AutosarNM 网络管理
1. AutosarNM 网络管理相关的专业术语
如上图所示,状态机中有三个主状态,分别是BusSleep、PreSleep、Network三个状态;其中 Network状态又分为三个子状态,分别是RepeatMsg、NormalOperate、ReadySleep。(大家经常说的三大三小)下面来讲一下每个状态它的作用。
睡眠模式(Bus-Sleep Mode): 此状态就是我们所说的休眠状态,当ECU没有本地网络唤醒源以及远程唤醒请求源时,控制器就会进入此睡眠模式,ECU在该状态下就是一个低功耗的状态,大部分耗电外设均已经关闭,仅仅留下一些唤醒源的检测,此模式下NM报文只收不发,APP报文不收不发,这是整车上所有ECU的协同睡眠状态,当ECU上电初始化时默认进入该状态。
预休眠模式(Prepare Bus-Sleep Mode): 从字面意思可以知道这是一个准备进入休眠的一个状态(应用报文不收不发,网络管理报文只收不发),ECU进入到这个状态时处于只收NM帧的状态,它会等待一段时间 T_WAIT_BUS_SLEEP让车上所有的ECU实现一起休眠,为什么要一起休眠呢?因为有些ECU之间的工作是彼此关联的,如果不等待其他ECU自己完全进入休眠,会导致其关联的ECU会出现DTC或者是警告信息,AutosarNM网络管理因为是直接网络管理,它与OSEK NM的间接网络管理不同,AutosarNM中的每个节点都可以作为主节点自己来管理自己,所以ECU会等待一段时间让大家同步进入休眠,当等待T_WAIT_BUS_SLEEP超时就进入睡眠模式。
网络模式(Network Mode): 网络模式其实就是ECU基本处于一种工作的状态中,网络模式里面又包含3个子状态
**1> 重复报文状态(RMS) :**里面包含两种状态 NM PDU Normal immediate state 和 NM PDU Normal Transmit State , NM PDU Normal immediate state主要是ECU作为主唤醒节点时,当它检测到本地唤醒源时(例如开关检测/蓝牙建立连接/NFC卡片靠近等等唤醒 条件)它就会首先从整车网络上先醒过来,此时会以快速周期发送若干次NM帧(例如10ms周期发送5次)目的是快速通知到其它ECU自己已"上线"准备要进行网络通讯了。快速发送完成之后就进入NM PDU Normal Transmit State状态,此时就是正常周期发送NM报文了。 NM PDU Normal immediatestat(快速周期:N_immediateNMCycleTime 快速帧的次数:N_immediateNM_times这个一般都是由整车厂来规定的) NM PDU Normal Transmit State(正常周期:NM_MessageCycleTime 发送时长: T_REPEAT_MESSAGE)
**2> 正常工作状态(NOS) :**ECU在进入 RMS一段时间后,会跳转到正常工作状态,此状态 下NM报文可收可发,APP报文可收可发,NOS可以说明ECU处于一种真正的唤醒状 态,可正常进行通讯。
**3> 准备睡眠状态(RSS):**当ECU从工作状态准备进入休眠时必须要经过这个状态,主要 是做休眠之前的一些准备工作,就比如说有些数据要存储EEPROM还在写操作中, ESCL电子转向柱锁解闭锁动作还未完成,也有可能是电机控制器检测到电机未处于停 止状态,也就是说这个状态是要让休眠前的准备工作都要完成即ECU的外设要都处于空 闲的状态,在RSS状态时NM报文只收不发,APP报文可收可发。
2. 各种模式下的各种状态下,报文的收发情况汇总如下表:
3. AutosarNM网络管理使用的时间参数:
4. AutosarNM网络管理唤醒请求(Wake Up Request)
主动唤醒请求(Active Wake up):ECU 作为主唤醒节点,当检测到本地唤醒源时就会主动请求使用网络。主动唤醒节点的网络管理报文必须先于应用报文发送。这个可以参开时间参数 T_STARTTx_AppFrame = 20ms,也就是说ECU主动唤醒时会进入RMS模式,这个时候网络管理报文和应用报文都可收发,此参数就是要求从休眠唤醒后发出第一帧NM报文后最大间隔多长时间需要发出应用报文。
**被动唤醒请求(Passive Wake up):**ECU 作为从唤醒节点自己不能主动唤醒自己,只能来自总线上其他模块对该模块的网络请求。被动唤醒的节点,发送网络管理报文和应用报文的先后顺序无特别要求。为什么主动唤醒需要优先发送NM帧然后发出应用报文呢?主要是需要快速发出NM帧来唤醒其它ECU节点与自己进行通讯。
5. AutosarNM网络管理的网络状态(Network States)
● **网络请求(Network Request):**当ECU 处于网络请求状态时,说明ECU有网络通讯的需求,会一直持续发送NM Frame,保持着唤醒。
● **网络释放(Network Rleased):**当ECU 处于网络释放状态时,说明ECU没有网络通讯的需求,不再发送NM报文,只发送应用报文,等待所有节点释放网络后同时进入预睡眠状态。
6. AutosarNM网络管理状态机步说明:
Step NM_01: IG ON
ECU POWER ON 上电之后就会初始化进入休眠模式(Bus-Sleep Mode),此时如果没有唤醒 源来唤醒此节点,那ECU就会一直处于休眠状态下。
Step NM_02: Passive wakeup(被动唤醒)
被动唤醒是ECU作为从唤醒节点,自己不能主动唤醒自己,只能通过接收到其它ECU发来的NM网络管理帧来唤醒自己。被动唤醒时会启动两个计时器 Repeat_message timer && NM_timeout timer,这里需要说明这两个计时的作用,从状态机可知当 ECU 从睡眠状态或预睡眠状态跳转到网络状态时都需要先进入重复报文状态(RMS),Repeat_message timer计时是ECU保持在RMS状态的最大时间,超时之后ECU就会进入NOS模式或者RSS模式,NM_timeout timer是ECU保持在网络模式下的最长时间,不管是发送自身的NM帧还是接收到其它ECU的NM帧都会启动NM_timeout timer计时,ECU成功发送或者成功接收一帧NM报文后都会重启该定时器。如果自身不在发送NM同时也没有接收到其它节点的NM帧,那么NM_timeout timer就会超时,超时之后ECU就会退出NM模式(network mode)进入到预休眠的模式了。
Step NM_03: Active wakeup(主动唤醒)
主动唤醒是ECU检测到本地唤醒源时,也就是自身有网络通讯的需求,也是会从休眠模式进入RMS模式,但是与被动唤醒的不同点是,主动唤醒节点ECU会以较快的周期发送若干次NM帧,并且主动唤醒节点在发送完第一帧NM帧之后需要在相对短的时间内发出自己的应用报文。
Step NM_04: NM_Immediate State(NM快发模式)
出现本地唤醒源时,ECU就会处于NM 快发模式,NM快发周期和快发次数如T_NM_ImmediateCycleTime 和 N_immediateNM_times所定义的,一般这两个数值由 Vehicle OEM来指定。
Step NM_05: RMS 超时且 NetworkRequest
当RMS超时后,如果控制器维持有本地唤醒条件(有请求网络通讯的需求)则会进入正常工作状态(NOS)状态。
Step NM_06: RMS 超时且 NetworkReleased网络释放
当RMS超时后,如果控制器没有本地唤醒条件(没有请求网络通讯的需求)则会进入准备睡眠状态RSS。该状态是用来等待其它节点停止网络请求并同时进入预休眠状态,在该状态中ECU正常发送应用报文,不再发送网络管理报文,正常接收NM和APP报文,当成功接收到一帧网络管理报文后会重启NM_TIMEOUT Timer,使自身维持在准备睡眠RSS状态。
Step NM_07: RMS 超时且 NetworkRequest网络请求
当RMS超时后,ECU进入RSS等待休眠状态,在这个状态下NM只收不发,APP报文可收可发,在等待其它节点停止网络请求同步进入休眠的期间,当ECU有网络通讯的需求,会一直持续发送NM Frame,保持着唤醒,又从RSS回到NOS模式。
Step NM_08: RMS 超时且 NetworkRequest网络请求
当RMS超时后,ECU如果没有网络通讯需求则直接进入RSS状态。
Step NM_09: RMS 超时且 NetworkRequest网络请求
当ECU在RSS状态时,NM只收不发APP可收可发,当在准备休眠状态下,如果一段时间没有接收到其它节点的NM报文,就会出现NM_TIMEOUT 超时,此时ECU就会退出RSS状态其实也就是当NM模式超时后就进入预休眠模式。
Step NM_10: 预休眠模式下远程唤醒
当ECU在预休眠模式下,应用报文不发不收,NM报文只收不发,会在这种模式下等待一段时间T_WAIT_BUS_SLEEP 当等待的过程中有其它节点请求网络通讯时,则会立即从预休眠状态进入到RMS中的 NM PDU Normal Transmit State,再次按照上述流程往下跑状态机。
Step NM_11: 预休眠模式下本地唤醒
当ECU在预休眠模式下,应用报文不发不收,NM报文只收不发,会在这种模式下等待一段时间 T_WAIT_BUS_SLEEP 当等待的过程中有其它节点请求网络通讯时,则会立即从预休眠状态进入到RMS中的 NM PDU Normal immediate state快发然后正常发送,后面再次按照上述流程往下跑状态机。
Step NM_12: 再次回到休眠模式
当ECU在与休眠模式下等待 T_WAIT_BUS_SLEEP 超时后,再次回到休眠状态,也就是ECU此时处于一种低功耗的状态。
总结:
ECU最初处于Bus-Sleep Mode中,当它有了通信需求(比如接收其他ECU的NM报文,或者它的逻辑功能要求自己唤醒,比如车门控制器收到了遥控钥匙的信号),它就会进入Network Mode,Repeat Message状态是Network Mode的入口状态,到达这个状态之后,ECU会启动一个Repeat Message Timer,在这个Timer定义的时间内,ECU会一直处于Repeat Message状态。当这个timer结束后,如果有通信需求,ECU则进入Normal Operation状态,如果没有通信需求,则进入Ready Sleep 状态。Normal Operation状态就是ECU正常运行的状态,此时它的应用报文和NM报文都会正常收发。当ECU没有通信需求,它会瞬间进入Ready Sleep状态,在Ready Sleep中,如果又出现了通信需求,ECU则瞬间再回复到Normal Operation,如果在一个Timeout Timer中一直没有通信需求,ECU就进入Prepare Bus-Sleep Mode,在Prepare Bus-Sleep状态中,也会启动一个Timeout Timer,如果在这段时间内有了通信需求,ECU又会立即回到Repeat Message状态,如果过了这个timer还没有通信需求,则ECU会回到Bus-Sleep Mode中。