3.1.3 OSEK网络管理之逻辑环
今天介绍下OSEK网络管理最核心的部分,建立逻辑环,先看图4-4,可以看出,正常建环的情况下,上一条NM报文的ID就是下一条NM报文的第一字节的数据,比如划线的3条报文,第一条报文的ID为0x19,数据的第一字节为0xE8,第二条报文的ID为0xE8,数据的第一字节为0xEE,第三条报文的ID为0xEE,数据的第一字节为0x19,所有正常建环的报文的第二字节,其Bit2置1,表示发出了正常建环的Ring报文,这就是所谓的逻辑环,其示意图见图4-5,所有网络管理报文数据的第一字节就是逻辑环中的下一个节点的ID,每条Ring报文的间隔时间为Ttyp(一般是90-120ms)。
图4-4 逻辑环报文
图4-5 逻辑环
接下来讲解一下正常建环过程,如图4-6所示,所有参与建环的ECU在建环初期,发出报文数据的第一字节都是自己的ID,第二字节都是0xC9,即协议里讲的发出指向自身的Alive报文,每个ECU都发完Alive报文之后,就建立起来逻辑环了,看图4-6的后面几帧报文,ECU 25指向了ECU 17,ECU17指向了ECU1D,ECU1D指向了ECU21,ECU21指向ECU22,ECU22指向ECU25,ECU25指向ECU17,形成一个封闭的逻辑环,且第二字节都是Ring置1的Ring报文。
图4-6 正常建环过程
再看下ECU进入LimpHome状态时的情况,如图4-7所示,在网络上只有一个NM节点的情况下,ECU上电后,先尝试建立逻辑环,尝试5次后,依旧无法建立逻辑环,则ECU进入LimpHome状态,ECU按TError(一般是1000ms)的周期发送LimpHome位置1的报文,从图4-7可以看出,LimpHome报文的第一字节指向自己,第二字节为0x04。
图4-7 LimpHome状态报文发送
3.1.4 OSEK网络管理之休眠唤醒
这一节看下OSEK网络管理的重要应用,指示ECU的休眠和唤醒,让我们想像一个场景,当你停车下电,下到OFF档,车上的中控屏、仪表等电器件的屏幕都会熄灭,当你锁好门下车后,在一段时间内没有任何操作,你的车这个时候就安安静静的睡着了,整车消耗的蓄电池电量也相当微弱,一般能做到20mA一下,这样子的话,你的车就算放上一个月,等你要用它的时候,它也能正常启动起来,这就是休眠策略带来的好处;同理,当你下午下班的时候,按下遥控寻车,你的车也能响应你的操作,相当于你把车从休眠状态下唤醒了。
我们结合图4-8,看下OSKE网络管理的休眠过程,当我们下到OFF档时,控制器满足了休眠条件,就会发出睡眠指示位(Sleep.Ind)置1的Ring报文,如图中的第二字节数据为0x12的报文,当所有节点都满足休眠条件,发出0x12的报文后,最后一个休眠节点的下一个节点,就会发出睡眠应答位(Sleep.Ack)置1的Ring报文,如图中的第二字节数据为0x32的报文,同一网段的控制器收到这个报文后,就会进入睡眠状态,这个时候,会停止发送任何报文到总线,等待ECU的内部任务完成后,就会进入低功耗模式,静态电流会变得很小。
图4-8 OSEK网络管理
希望和各位同仁交流学习,微信:ys15528121925。