OSEK网络管理

3.1.1 概述

首先弄明白一点,为什么车上的控制器需要做网络管理?因为在目前的整车电子电器架构下,整车的部分ECU是需要一直供电,从整车下线到车辆报废,它都一直在工作,想想你的使用情况就明白了,你在任何时候按下遥控寻车,你的车都能作出反应,这是因为ECU它是一直在工作的。既然ECU一直在工作,它就需要耗电呀,咱们车上就一个蓄电池(商用车是两个),如果你长时间不开车,车上的ECU一直在费电,时间长了,你的车是不是就启动不了了,所以为了规避这个问题,整车厂都给常电供电的ECU都加入了网络管理的功能,比如OSEKNM或者是AutosarNM,本节主要介绍OSEKNM。做了网络管理的ECU,当整车下电到OFF档时,一段时间内没有操作车辆的话,所有这些ECU都会进入低功耗状态,此时每个ECU的电流非常小,几乎会小于2mA,整车静态功耗基本能控制在20mA左右,即使将车辆放置一个月,到时候也能正常启动,这就是网络管理的作用。

3.1.2 OSEK网络管理

先介绍下OSEK网络管理状态吧,OSEKNM分为3个主要状态,分别为Reset状态、Normal状态、Limphome状态。ECU刚上电时,处于Reset状态,当它其他ECU建立好逻辑环之后(OSEKNM的核心就是逻辑环),进入Normal状态状态,如果该ECU有故障或总线有故障,ECU进入Limphome状态,如图4-1所示,其实每个状态又分为好几个子状态,后面逐一讲解。

图 4-1 OSEKNM状态

知道了OSEKNM的状态,那么ECU在每个状态下都会做什么呢?我们看图4-2,为ECU处于NMReset状态,看数据部分,数据的第一字节为0x19,报文ID也是0x19,数据的第二字节为0x01,见图4-3可知,此字节的Bit1置1,表示次报文为Alive报文,由此可知,当ECU处于NMReset状态时,发出指向自身的Alive置1的报文。见图4-2,ID为0x21,数据的第1字节为0x19,第二字节为0x02,由此可知,当ECU处于NMNormal状态时,会发出指向下一个节点的Ring置1的报文,同理,当ECU进入LimpHome状态,会发出指向自身的LimpHome位置1的报文。

 

图4-2 Reset状态下的报文

图4-2 Normal状态下的报文

图4-3 OSEKNM报文第二字节解析

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网络管理的休眠

如果大家想更深入了解和使用,推荐一个视频教程,是一个系列课程,从原理到仿真开发都有讲解

https://www.ind4.net/#/HomePage/CourseDetail?navType=Curriculum&courseId=2639

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南山墨客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值