新能源汽车的网络管理(新能源汽车的网络管理)
新能源车上都有各种各样的ECU,而所有这些ECU都是需要用电的,而车上的供电单元一般是蓄电池,因此蓄电池的电量是有限的,对于新能源车来说太耗电无疑会给电池的续航里程带来巨大影响,因此为了尽可能的省电,所以就提出了网络管理,也就是说网络管理一个最重要的作用就是为了省电。
那么网络管理是如何来实现省电的呢?我们知道车上的所有ECU之间会通过CAN通信、Flexray或以太网等进行相互通信连接在一起,那么网络管理就是通过在各个ECU的网络上,发送一些命令制定一套规则,来实现各个ECU的协同睡眠和唤醒。网络管理的目的是使网络中的ECU节点有序的睡眠和唤醒。在没有通信需求的时候睡眠,在需要通信的时候唤醒,可以节约汽车电池的电量。
通常 ECU 都存在几种工作模式,如唤醒(working)模式、睡眠(sleep)模式、启动(boot)模式。其中 working 模式为正常工作模式,耗能高;sleep模式为待机状态,大部分功能都停止,为低功耗模式;boot 模式为 ECU 刷机模式,通常用于对 ECU 进行升级。
当汽车处于休眠状态时,所有ECU处于睡眠状态,一些ECU比如车身控制器(BCM)可以被KL15电唤醒。这些控制器处于睡眠状态时,能耗是非常低的,且一直处于可唤醒状态。
汽车常用的控制器唤醒方式有硬线唤醒和网络唤醒。硬线唤醒通常是通过低压电平来实现,比如KL15唤醒,充电机的CP、CC唤醒。
网络唤醒方式又分为任意帧唤醒和特定帧唤醒。任意帧唤醒就是收到CAN总线上任意信号就醒来。特定帧是指控制器收到特定的网络管理报文(NM)就醒来。
从唤醒源的来源可以分为主动唤醒和被动唤醒。
主动唤醒( Active Wake up):ECU 作为主唤醒节点,当检测到主动唤醒源输入信号时(如KL15)主动唤醒自己,并通过发送NMFRAME 尝试唤醒其他ECU。 被动唤醒( Passive Wake up):ECU 作为从唤醒节点,自己不能主动唤醒己,只能通过接收到其他 ECU 发来的NM 报文来唤醒自己。
控制器的状态定义
BusSpleep状态:这就是休眠状态,此状态下不发送网络管理报文也不收发应用报文,一般该状态处于低功耗的状态,也就是上文提到的协同睡眠状态。当然上电初始化时,也会默认进入该状态。 PreSleep状态:此状态是进入休眠状态前的准备状态,此状态一般不发送网络管理报文帧了,也不发送应用报文了,只是等待其他ECU一起睡眠,其实就是实现‘’协同‘’两个字,也就是让等一段时间让车上所有ECU实现一起睡眠。之所以需要 ECU 协同睡眠,主要是因为各个 ECU 处于协同工作状态,比如VCU(整车控制器)和INV(电机控制器),有可能VCU不发报文了,会导致INV报故障,如此就会出现误报警状态。 Network状态:此状态下 ECU 可以进行正常通信,既可以收发网络管理报文帧也可以收发应用报文(包括诊断报文),意思就是唤醒状态。
最后的Network 状态又分为三个状态(state),
1.Repeat Message State
2.Normal Operation State
3.Ready Sleep State
Repeat meassage:表示重复发网络管理报文的状态。
重复报文状态包含两个子状态:网络管理报文快速发送状态和网络管理报文正常发送状态。
NM PDU 快速发送状态:节点在进入NM PDU快速发送状态时,必须开启或重置NM-Timeout Timer,为了快速唤醒网络,必须以快速周期发送网络管理报文,同时不得发送正常周期网络管理报文;所有的应用报文必须在第一帧快速NM PDU报文发送开始后延迟一定时间才能发送。在NM PDU快速发送状态下,节点一旦接收或发送一条网络管理报文,或者NM-Timeout Timer超时,NM-Timeout Timer会立即重置。
NM PDU 正常发送状态:进入NM PDU 正常发送状态后,节点必须以正常周期发送网络管理报文。若节点因被动唤醒请求进入NM PDU正常发送状态,必须开启NM-Timeout Timer,同时所有的应用报文必须从节点检测到唤醒请求后延迟Tx_Enable_Time 才能发送。在NM PDU正常发送状态下,节点一旦接收或发送一条网络管理报文,或者 NM Timeout Timer超时,NM Timeout Timer会立即重置。
节点的网络管理状态保持重复报文状态一段时间(这段时间一般可以配置),一旦超时,网络管理状态会离开重复报文状态。在该状态下,节点的网络管理报文和应用报文能够正常发送。
由于进入网络状态时,首先需要快速发送一些网络管理报文,以尽快告知车上其他 ECU,我处于正常状态了,可以进行通信了。 Normal Operation:在进入RepeatMsg一段一时间后,如果需要通信,就会跳到正常工作状态,正常工作状态会按照正常的周期发送网络管理报文,以及所有应用报文正常进行通信,可以说这个状态就是真正的唤醒状态。 ReadySleep:从唤醒状态进入休眠时,需要进行一些准备工作,比如有一些数据要存储、比如电机控制器检测到电机还没停下来等等情况,因此此状态就是用来做一些休眠前的准备工作,任何从唤醒到休眠的过程,都需要经过此状态,也就是说睡眠前有些准备工作是必须要完成的。那么此状态下,其实还是能够进行通信的,只有进入PreSleep状态,才会把相应的应用报文收发关闭,以及发送NM报文关闭。还有一点要声明的是,一般网络管理报文帧的接收不会关闭。(因为进入休眠后需要处于可唤醒状态。)
AUTOSAR网络管理报文(NM报文)
在休眠状态,我们的ECU只有CAN收发器处于工作状态,也就是说能检测NM报文,当然这个是通过芯片来实现的。
NM报文就是CAN报文。NM报文符合CAN报文的格式,由帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结尾组成。
一般厂家在设计的时候会规定好NM报文的ID范围。
比如:规定标识符在0x500到0x5FF范围为NM报文。当在CANoe中抓取到此ID范围内的报文,那就是NM报文。
NM报文的重点在于数据场8字节里的内容:
NM报文数据场内容格式
byte0:这里填的是ECU的地址,或者叫ECU的ID;
此报文的ID=一个基础值 ECU的ID,例如厂家规定基础值为0x500,那么此报文的ID=0x500 0x8=0x508;
这里要注意区分报文的ID和ECU ID的概念,很容易混淆;
Byte1:NM报文数据场byte1格式
这里关注下bit0和bit4:
bit0:当此位置1时强制进入RMS(下面会讲到);
bit4:告诉其他节点自身是怎么被唤醒的。
置0:被动唤醒、远程唤醒,比如被其他节点发送的NM报文唤醒;
置1:主动唤醒、本地唤醒,比如给ECU上电;
byte2-byte7里的user data数据由用户自行定义。
网络管理状态机
添加图片注释,不超过 140 字(可选)
上图中:BSM-睡眠模式 、NM-网络模式、 PBM-预睡眠模式、
RMS-重复报文模式、 NOS-正常操作状态 、RSS-准备睡眠模式
01:给ECU上电,ECU自己就会初始化进入睡眠模式。如果没有唤醒源来唤醒此节点,那就会一直待在睡眠模式。
02 03:当出现本地唤醒(03)或者远程唤醒(02)时,进入RMS状态。这里再解释下,本地唤醒就是我自己想要主动和其他节点通信;远程唤醒是其他节点想要和我通信。
04:我们现在已经走到网络模式的重复报文子状态了。话说为什么叫重复报文子状态呢,因为在这个状态里的时候,ECU需要一直发送周期报文,以尽快告知车上其他 ECU,我处于正常状态了,可以进行通信了。
如果是走03(本地唤醒)进来的,那么需要先在NM Immediate Transmit State中以很快的周期发送N帧报文(例:以20ms的周期连续发送5帧报文),发完这N帧报文再进入到NM Normal Transmit State中以正常的周期发送报文(例:500ms为周期发送报文。这个在上面的表格里有定义)。如果是直接走02进来的,那么直接以正常周期发送NM报文就可以了。一直发到T_repeat_message定时器超时。
这一步的目的是如果是本地唤醒的话,可能此ECU下面还有很多从属节点,当此ECU唤醒之后,需要同时唤醒其他兄弟节点一起通信,所以最开始的N帧报文周期很短,目的是为了快速、低延迟地唤醒其他节点。为什么被远程唤醒就不需要这一步呢?欢迎大家在评论区里一起讨论~
06 12:且慢,我们先来计算一下从BSM到这一步花费了多少时间了。参考上面定时器的定义,在02或03中,最大唤醒时间为T_wake_up=200ms;在04中,T_repeat_message=1600ms。总计1800ms,差不多为2s的时间,此时ECU有可能已经不需要通信了(2019-11-29补充:ECU持续处于唤醒状态的条件是有持续的唤醒源,例如一直有NM报文远程唤醒、或一直有本地唤醒源例如上电)。如果还需要继续通信,走06,进入NOS,继续周期发送NM报文,可以收发APP报文,当不再需要通信了,就停止发送NM报文,等待T_NM_timeout超时之后走09;如果直接不需要通信了,直接走12。
10:收到本地唤醒,进入NOS。
11:收到NM报文的byte1字节的重复请求位如果置1,强制进入RMS。
08 14 05:T_NM_timerout定时器超时,不改变当前状态。定时器需要重置。
13:在RSS状态,NM报文不可以发送。等待T_NM_TIMEOUT定时器超时后进入PBM。
15 16:PBM状态只可以接收NM报文,其他报文不发不。收到远程唤醒,走15;收到本地唤醒,走16。
17:如果PBM状态收不到任何唤醒源,在T_WAIT_BUS_SLEEP定时器超时后进入BSM。
网络管理定时器及参数
以上内容大部分来自网络,为笔记性质,侵删。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com