01
网络管理的目的
1.通过 协调ECU的网络正常通信和睡眠模式转换,在用户需要请求相关功能时,参与该功能的相关ECU节点才需要工作。
2.为了更好的去利用整车的能源,防止出现不必要的蓄电池电量浪费,网络管理便可以很好的解决此类问题,最大可能的高效利用整车电池能源,节约用车成本,延长电池使用寿命。
02
常见的唤醒方式
Type A:连接蓄电池电,网络管理唤醒;
Type B:连接蓄电池电、网络和点火电唤醒;
Type C:连接蓄电池电,点火电唤醒;
Type D:只连点火电,这种模式下不需要网络管理,下电即断电。
目前接触的项目中,如仪表、mp5、tbox在车辆ACC状态仍需要工作的ECU,一般使用Type B;而某些非点火状态不需要工作的ECU则可以使用Type D。
03
NM报文格式
网络管理的报文格式如上图,CBV即Control Bit Vector,具体定义如下:
Repeat Message Request Bit 默认置 0。当 ECU 自身有 Repeat Message Request, 进入 Repeat Message State,后续发送的 NM PDU 中 CBV 的 Repeat Message Request Bit 置 1,直到重新进入 Normal
Operation State 或 Ready Sleep State 后再置 0。
通过本地唤醒进入 Repeat Message State, Active Wakeup Bit 必须置 1。
通过远程唤醒进入 Repeat Message State, Active Wakeup Bit 必须置 0。
04
定时参数
05
状态机转换图
06
状态(跳转)介绍
Bus-Sleep Mode
ECU上电并初始化完成后,默认进入Bus-Sleep Mode。
Bus-Sleep Mode目的是在ECU无网络请求时减少ECU的功率损耗,网络管理报文和应用报文都被禁止发送。
在检测到有效的唤醒源(本地或网络唤醒)后再唤醒节点。
Bus-Sleep Mode → RepeatMessage State
从处于睡眠状态的ECU被唤醒到进入NetworkMode,发送第一帧网络管理报文,这个过程应该在T_WakeUp(200ms)时间内完成;
2.在 T_Start_App_Tx(20ms)内需要发送第一帧应用报文;
Repeat Message State
用于检测网络在线的ECU。
进入Repeat Message State,必须重新开始周期性发送NM PDU并持续发送CANNM_REPEAT_MESSAG
_TIME(1500ms)周期。
当以远程唤醒进入Repeat Message State,
NM以CANNM_MSG_CYCLE_TIME(50ms)周期发送,且 wakeup位置0;
当以本地唤醒进入 Repeat Message State,
§NM以CanNMImmediateNMCycleTime为周期发送CanNmImmediateNmTransmissions次数,之后以CANNM_MSG_CYCLE_TIME(50ms)周期发送,且 wakeup位置1;
Normal Operation State
1.在Normal Operation State, ECU 应以 CANNM_MSG_CYCLE_TIME(50ms) 周期发送 NM PDU, 并正常发送应用报文。
2.接收到§Repeat Message Request Bit置1的NM PDU,进入 Repeat Mseeage State。
Ready Sleep State
当ECU网络释放(无本地唤醒事件) ,而其他ECU仍有网络请求时(网络中仍存在 NM PDU) , 则该ECU保持 Ready Sleep StateECU 应停止发送网络管理报文,但应用报文必须正常发送。
当 CANNM_TIMEOUT_TIME (2s)定时器超时, ECU 离开 Ready Sleep State,进入 Prepare Bus-Sleep Mode。
Prepare Bus-Sleep Mode
启动CANNM_WAIT_BUS_SLEEP_TIME定时;
CANNM_WAIT_BUS_SLEEP_TIME超时后, ECU离开Prepare Bus-Sleep Mode,进入Bus-Sleep Mode。
07
诊断报文处理
控制器处于睡眠模式(BusSleepMode或者PreBusSleepMode),则不能被诊断报文唤醒;当控制器处于诊断会话模式下(网络管理处于 NetworkMode) ,节点不能进入睡眠模式(SleepMode)。
当控制器在准备睡眠状态(RSS),接收到诊断报文,诊断软件模块需要向网络管理模块发送网络
请求(Network Request)使其向正常工作状态(NOS)转换。在诊断应用程序中,它将启动一个计时器TWait_DiagReq,当TWait_DiagReq超时后,诊断应用程序应向网络管理模块发送网络释放(NetworkRelease)函数使其向准备睡眠状态(RSS)转换。
这里的TWait_DiagReq跟会话保持的S3 time很是类似,在收到诊断报文之后就会重置计时器。
08
配置
如图 ,可以在NM的接收、状态跳转时,设置回调函数,实现一些主机厂的定制化功能。