四、Autosar网络管理跳转状态
网络模式对应报文状态
Autosar网络管理报文各个状态对应的网络管理报文和应用报文的发送和接收状态。
网络模式 | 网络管理报文 | 应用报文 | |||
收发类型 | 发送报文 | 接收报文 | 发送报文 | 接收报文 | |
总线睡眠模式(BSM) | No | Yes | No | NA | |
准备总线睡眠模式(PBSM) | No | Yes | No | No | |
网络模式 | 重复报文状态(RMS) | Yes | Yes | Yes | Yes |
网络模式 | 常规运行状态(NOS) | Yes | Yes | Yes | Yes |
网络模式 | 准备睡眠状态(RSS) | No | Yes | Yes | Yes |
Yes:表示网络管理节点发送或者接收报文
No:表示网络管理节点停止发送或者接收报文
应用报文:通信报文、诊断报文、标定报文
NA:这个根据实际情况决定,有些节点支持任意报文唤醒,此时这里就是Yes;如果仅支持网络管理报文唤醒,则此处就是No
No:需要将缓存中的报文发出后,将不在发出应用报文
网络管理跳转图
CanNm_Init: CAN网络管理模块初始化 CanNm_PassiveStartUp:接收到被动唤醒事件后ECU请求网络,即远程唤醒
KL15 ON || IG ON:触发本地唤醒事件后ECU请求网络,即本地唤醒
KL15 OFF || IG OFF:释放网络,由于ECU不必在总线上进行通信。
NM Msg: 为总线上接下来发送的NM 报文设置重复消息请求位。
各状态描述
总线睡眠模式 - Bus Sleep Mode
当总线上没有CAN通信需求,为了电池能够使用的更久并且防止车辆馈电,需要减少对电池电量的消耗,但是在总线睡眠模式,节点依然保留唤醒机制,等待在需要的时候被唤醒。该模式下,一般来说是一定对网络管理报文有Ack应答,如果没有任意报文唤醒的需求,一般不对应用报文进行ack应答,当节点给出ack应答后,如果没有唤醒需求,几秒后会再次进入低功耗模式。
总线预休眠模式 - Prepare Bus Sleep Mode
在该模式下,所有的应用报文和网络管理报文都已经停止,总线活动处于停止状态(已将所有缓存中的所有报文发出)。进入该模式后,立即启动定时器 - T_Wait_Bus_Sleep,在该定时器溢出后,节点离开Prepare Bus Sleep Mode,并进入总线睡眠模式(Bus Sleep Mode)。
在该模式下,接收到本地唤醒请求时,将会进入到网络模式中的重复报文状态。
在该模式下,接收到远程唤醒请求时,将会进入到网络模式中的重复报文状态。
网络模式 - Network Mode
1)重复报文状态(Repeat Message State)
2)常规运行状态(NormalOperation State)
3)准备睡眠状态(Ready Sleep State)
在进入到网络模式后,首先会进入到重复报文状态,并重启T_NM_TimeOut定时器,当节点成功接收或者发送一帧NM Msg报文,T_NM_TimeOut定时将会被重置。从总线睡眠模式到网络模式中,节点发出第一帧NM报文,时间必须小于T_Wake_UP。
重复报文状态 - Repeat Message State
一旦进入到重复报文状态,无论睡眠条件是否满足,都会保持在该状态一段时间,直到定时器T_Repeat_Message超时。超时后,如果有网络通信需求,则会进入到常规运行状态,如果没有则会进入到睡眠就绪状态。
重复报文状态结束后,网络管理报文中的重复报文请求指示位需要清零。
节点进入到重复报文状态后,根据规范要求是否启动快发机制,进行总线通信的恢复。
如果规范要求有快发机制,快发NM Msg的数量需要与规范要求一致。
重复报文状态结束后,如果后网络通信需求,网络管理报文应以dbc定义周期发送。
当节点从准备总线睡眠模式、常规运行状态、睡眠就绪状态接收到网络通信需求,需要在T_Start_NM_Tx时间内发出第一帧网络管理报文。
常规运行状态 - Normal Operation State
常规运行状态下,网络管理报文需以一定的周期发送(周期需要跟dbc保持一致,偏差在10%以内)。
常规运行状态下,需要有网络通信的保持源存在;网络管理报文和应用报文发送接收正常。
常规运行状态下,节点每发出一帧网络管理报文,定时器T_Nm_TimeOut将会重置一次。
常规运行状态下,接收到重复报文请求状态位为1的网络管理报文,节点将进入到重复报文状态。
常规运行状态下,满足本地睡眠条件,将停止发送网络管理报文,准备进入到睡眠就绪状态
睡眠就绪状态 - Ready Sleep State
睡眠就绪状态下,节点停止发送网络管理报文,但是应用报文正常发送。
睡眠就绪状态下,定时器T_NM_TimeOut溢出后,进入到准备睡眠模式。
睡眠就绪状态下,发送本地唤醒事件,直接进入到常规运行状态。
睡眠就绪状态下,接收到重复报文请求指示位为1的网络管理报文,则需要在T_Start_NM_Tx时间内进入到重复报文状态。
实例总结部分
1、Power on(KL.30上电)后初始化完成CanNM模块后进入睡眠状态。
2、在睡眠状态中触发被动唤醒事件,ECU进入重复报文状态(简称RMS)。在RMS状态中,NM报文Repeat Message Request位始终置1,Active Wakeup Bit位置0。如果是触发本地唤醒事件唤醒ECU,在RMS状态中NM报文Repeat Message Request和Active Wakeup Bit位都置1。ECU进入重复报文状态后启动Repeat Message Timer和NM-Timeout Timer。在重复报文状态ECU以CanNmMsgCycleTime为周期发送NM报文。
3、当Repeat Message Timer超时后,如果ECU有维持本地唤醒事件(例如KL15上电/IgnON),则进入正常工作状态(简称NOS)。ECU仍以CanNmMsgCycleTime为周期发送NM报文。
4、在NOS状态, ECU接收到某个节点发送Repeat Message Request位置1的NM报文时要返回到RMS状态。
5、在NOS状态,ECU请求释放网络会进入进入准备睡眠状态(简称RSS)。此时ECU不发送自身NM报文,但会接收其他节点发送的NM报文。NM-Timeout Timer重启,维持在RSS状态。
测试关注
1. NM报文的格式是否符合厂商的定义,源地址和ID是否对应
2. CBV每一位的置位情况是否正确,如主要唤醒时(KL15 上电)Active wakeup bit是否置1
3. CBV每一位的初始化或重置是否正确。在上电初始化时CVB各位默认都为0
4.各模式、状态的切换是否符合义AUTOSAR标准或厂商的定义
5.各模式、状态切换时的时间参数是否符合厂商的定义