AutoSAR之基础篇CanNM

前言:首先,问大家几个问题,你清楚:
为什么要引入网络管理呢?上电同时启动,下电同时关闭,它不香吗?
你知道车上的ECU节点可以分为哪几种类型吗?
汽车启动时,ECU之间怎么保持同步唤醒的呢?
下电时,ECU又是怎样协同罢工的呢?
汽车熄火后,什么样的ECU会继续工作呢?
网络节点类型
仅本地唤醒节点
仅网络唤醒节点
本地+网络唤醒节点
类KL15唤醒节点
NM状态机
Bus Sleep Mode
Network Mode
Repeat Message State(RMS)
该状态能够确保当ECU的状态机从Bus-Sleep Mode或者Prepare Bus-Sleep mode切换至Network Mode时能够及时的被网络上其他ECU节点发现,也就是告诉其他ECU,“大家注意了,我成功上线了,请多多指教!”
当成功进入到RMS状态时,该节点就会重新发送NM报文并开启计时器T_REPEAT_MESSAGE,应用报文则需要等待第一帧网络管理报文发送之后再发送。
当然,第一帧NM报文可以通过配置参数MSG_CYCLE_ OFFSET来延迟发送,降低在同一时间内的总线负载,这个配置参数默认是0 ,一般根据测试结果来做适当的调整。
在计时器T_REPEAT_MESSAGE超时之前,该节点就会一直保持在该状态,否则将会离开该状态。
在该状态下也存在着两个子状态:
NM Immediate Transmit State
在该模式下,ECU的目的是快速唤醒整个网络,同时该节点将会以配置参数T_NM_ImmediateCycleTime的周期发送NM报文,而发送次数则是由配置参数N_ImmediateNM_TIMES来决定,每一次成功发送,该参数就会减1,直至为0,退出该子状态;
NM Normal Transmit State
在该模式下,ECU节点将会以正常报文周期T_NM_MessageCycle的方式来发送NM报文。
Normal Operation State(NOS)
只要ECU节点自身存在网络通信的需要,那么ECU就会一直工作在NOS的状态下。该状态下NM报文的发送将会以T_NM_MessageCycle的周期来发送报文,每次报文的成功发送或接收或者计时器NM-Timeout超时都会重置该计时器NM-Timeout;
在该状态下的NM报文以及应用报文都应该正常收发通信。
Ready Sleep State(RSS)
在该模式下,ECU节点应当停止发送NM报文。每次成功接受到来自网络上的NM报文,计时器T_NM_TIMEROUT 就会重置,一旦T_NM_TIMEROUT 超时,那么就会离开该状态转而进入Prepare Bus-Sleep状态。
Prepare Bus-Sleep Mode
Passive Mode
报文发送与接受状态
Bus-Sleep阶段,只接收NM报文唤醒,不发送任何报文;
Pre-Bus-Sleep阶段,同样仅允许接收NM报文,对于早已在发送Buffer中的APP报文应发送完毕后立刻停止APP报文;
在Network Mode模式下,除了在Ready Sleep阶段不允许发送NM报文之外,其余阶段APP报文与NM报文正常收发;
状态机时间参数总结
-
本地唤醒源 :主要指的是基于内部计时器、传感器、按钮或者硬线连接或者基于内部状态的自身请求等。 -
远程唤醒源 : 主要指的是来自网络上的NM报文或者其他相关信号,比如点火开关信号等。
NM_01(系统初始化):
当系统KL30启动或者接收到来自网络的唤醒源时,则会执行系统初始化,在初始化的过程中,则会执行CanNM_Init来实现NM的初始化。如果唤醒条件不满足,ECU就会一直停留在Bus-Sleep 阶段,直至满足条件休眠或者被正常唤醒。
NM_02(Bus-Sleep to RMS):
当ECU处于Bus-Sleep阶段时,如果接收到有效的NM报文,则会进入到Normal Transmit State。当进入到该阶段后,在T_REPEAT_MESSAGE 超时前,ECU将按照T_NM_MessageCycle周期来传输报文,同时T_MESSAGE_TIMEOUT也会启动。
NM_03(Bus-Sleep to RMS):
当ECU在Bus-Sleep阶段,存在本地唤醒请求时,ECU应当主动激活网络,并进入Immediate Transmit State阶段,同时将发送的NM报文中的Active Wake up bit置为1。
在该状态下,应当按照N_ImmediateNM_TIMES的次数发送报文周期为T_NM_ImmediateCycleTime的网络管理报文。
NM_04:
当N_ImmediateNM_TIMES 等于0之后,NM状态就会从Immediate Transmit State进入到Normal Transmit State。
NM_05(RMS to RMS):
在RMS阶段,如果T_NM_TIMEROUT超时,当前NM状态不会被改变,但是T_NM_TIMEROUT会被重置。当T_MESSAGE_TIMEOUT超时后,则会调用相应的exception函数通知上层进行处理。
NM_06(RMS to NOS):
当处于RMS阶段时,T_REPEAT_MESSAGE超时后,ECU需要继续保持网络通信的需要,即通过调用CanNM_NetworkRequest函数进入到NOS阶段,而ECU则会继续按照T_NM_MessageCycle来发送NM报文。
NM_07(NOS to RMS):
在NOS阶段,有两个RMS子状态可以到达:Immediate Transmit State 与 Normal Transmit State。如果自身节点有repeat message的需要,那么则会进入到Immediate Transmit State。如果接收到的NM中repeat message bit置1,则进入到Normal Transmit State。
NM_08(NOS to NOS):
在NOS阶段,如果T_NM_TIMEROUT超时,当前NM状态不会被改变,但是T_NM_TIMEROUT会被重置。当T_MESSAGE_TIMEOUT超时后,则会调用相应的exception函数通知上层进行处理。
NM_09(NOS to RSS):
当休眠条件满足时,ECU就会通过CanNm_NetworkRelease函数来实现从NOS至RSS状态。在RSS状态下应当停发NM报文。
NM_10(RSS to NOS):
在RSS状态下,如果存在本地唤醒请求,则可以通过CanNm_NetworkRequest函数来切换至NOS状态。
NM_11(RSS to RMS):
在RSS状态下,RMS存在两种子状态可供进入:Immediate Transmit State与 Normal Transmit State。当自身节点存在repeat message请求时,则会进入前者;当接受到外部的NM报文中repeat message bit为1时,则进入后者。
NM_12(RMS to RSS):
当ECU处在RMS状态中的Normal Transmit State状态下,如果T_REPEAT_MESSAGE超时且满足休眠条件时,则会进入RSS状态。
NM_13(RSS to Pre-Bus-Sleep):
在RSS状态下,如果没有本地唤醒请求或者远程唤醒请求,在计时器T_NM_TIMEROUT 超时之后就会进入Pre-Bus-Sleep 阶段,同时T_MESSAGE_TIMEOUT置为0,启动T_WaitBusSleep计时器。
NM_14(Network Mode to Network Mode):
在Network Mode下,当成功接受或者发送NM报文时T_NM_TIMEROUT 就会被重置,重置该定时器的行为就发生在调用函数CanNM_RxIndication或者CanNM_Txconfirmation接口中。
NM_15(Pre-Bus-Sleep to RMS):
在Pre-Bus-Sleep模式下,如果存在远程唤醒请求,则会进入到RMS阶段中的Normal Transimit State。同时启动T_REPEAT_MESSAGE。
NM_16(Pre-Bus-Sleep to RMS):
在Pre-Bus-Sleep模式下,如果存在本地唤醒请求,即调用函数接口CanNm_NetworkRequest来进入到RMS中的Immediate Transmit阶段,应当按照N_ImmediateNM_TIMES的次数发送报文周期为T_NM_ImmediateCycleTime的网络管理报文。
NM_17(Pre-Bus-Sleep to Bus-Sleep):
在Pre-Bus-Sleep模式下,如果不存在本地唤醒或者远程唤醒请求,则进入到Bus-Sleep状态。至于何时关闭电源控制,则可以根据自身节点类型来shutdown。
网络管理报文结构
NM报文总体结构解析
CBV详解
0: 代表存在Repeat Message Request ;
1:代表不存在Repeat Message Request ;
0:NM报文中不包含同步局部网络管理休眠请求;
1:NM报文中包含同步局部网络管理休眠请求;
0:未被主协调NM节点请求开始同步休眠;
1:已被主协调NM节点请求开始同步休眠;
0:节点没有唤醒过网络,属于被动唤醒;
1:节点唤醒过网络,属于主动唤醒;
0: PNC learning被请求
1: PNC learining未被请求
0: NM报文中包含PN 信息;
1:NM报文中未包含PN 信息;
常用函数接口

工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP
