汽车上ECU节点千千万万,不可能点火时所有ECU都开始工作,而是当用户需要请求相关功能时,参与该功能的相关ECU节点才需要启动起来,否则带来的只是过多对电池的无用消耗。
为了更好的去利用整车的能源,防止出现不必要的电池浪费,网络管理(Network Management,以下简称NM)便可以很好的解决此类问题,最大可能的高效利用整车电池能源,节约用车成本,延长电池使用寿命。
1. 网络节点类型
一般而言,按照唤醒方式,我们可以将ECU网络节点类型划分为两大类:
本地唤醒:唤醒源来源于自身模块,比如常说的KL15硬线唤醒或者hardware sensor感知唤醒等;
远程唤醒:唤醒源来源于自身ECU节点所在的网络报文,该节点可以处于完全休眠状态,一般无静电消耗;
根据这两大类唤醒方式,可以组合出下列四种子唤醒方式:仅本地唤醒节点,仅网络唤醒节点,本地+网络唤醒节点,类KL15唤醒节点,下面来依次介绍:
1.1 仅本地唤醒节点
特点:ECU始终保持after-running状态,当检测到本地唤醒源之后,就会开启网络通信;
1.2 仅网络唤醒节点
特点:只有当Transceiver监控到总线电平变化或者接收到特定报文时,就会接通Vreg给到芯片供电,从而唤醒ECU;
1.3 本地+网络唤醒节点
特点:ECU始终保持After-Running模式,当接收到本地唤醒源或者网络唤醒源时,就会启动ECU;
1.4 类KL15唤醒节点
特点:仅当Power supply 连接至ECU时,ECU才会唤醒,比如常说的KL15启动唤醒。
2. NM状态机
本地唤醒本身就是一种供应商自定义的一种唤醒方式,比较直接,不需要其他ECU节点参与,同时也不会对其他ECU节点造成影响。
但是网络唤醒是以网络管理报文为基础来协同整个网络“同睡同醒”,采用分布式的直接网络管理方式来发送自身节点所需的网络管理请求及自身网络管理状态,并接受来自网络上其他ECU节点的网络管理请求与状态。
NM状态机的状态有三种:Bus Sleep Mode、Network Mode、Prepare Bus-Sleep Mode,下面我们分别介绍:
2.1 Bus Sleep Mode
当没有远程唤醒或者本地唤醒请求时,ECU的Controller应当切换至Sleep模式,电流消耗将降低至最低水平,该Mode是ECU启动时的起始状态或者是ECU睡眠时的最终状态。
在该模式下,NM报文以及应用报文都应该被禁止发送,但是可以被网络上的报文唤醒。
在此特意说明一点,当Transceiver支持并使能了特定帧唤醒时,该ECU只会接受到特定的NM报文才会正常唤醒,否则就会一直处于休眠状态,能够不受网络上其他报文的干扰。
如果Transiver不支持特定帧唤醒,那么网络的任意报文都可以唤醒该ECU,如果唤醒条件不满足,又会走休眠流程继续睡下去,这样“睡醒交替”的方式就是不支持特定帧唤醒的Transiver的典型特征。当然,如果整车上的NM都可以正常运作,那么就不会频繁出现这种“睡醒交替”的方式,这种方式一般都是在做测试时才会较多的体现出来。
2.2 Network Mode
一旦进入Network Mode,计时器T_NM_Timeout就会启动,只要成功接收到来自总线上的NM报文或者成功发送至总线NM报文,都会将该计时器T_NM_Timeout重置。
2.3 Prepare Bus-Sleep Mode
一旦进入该模式,计时器T_WAIT_BUS_SLEEP就会启动。在该模式下禁止网络管理报文的发送,允许接受NM报文。应用报文已经在buffer中的一般允许继续发送,但最终应该是silent bus,该ECU的Controller的状态应当处于operational mode。一旦T_WAIT_BUS_SLEEP超时,就会进入到Bus-Sleep阶段。
3. 状态机时间参数总结
鉴于在网络管理各子状态的切换过程中都依赖于各种计时器,为了便于后续状态机切换的讲述以及后续查表方便,将相关参数总结如下,以供参考: