今天给大家介绍下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状态报文发送 OSEK 网络管理之休眠唤醒 我们再来看下 OSEK 网络管理的重要应用,指示 ECU 的休眠和唤醒,让我们想像一个场景,当你停车下电,下到 OFF 档,车上的中控屏、仪表等电器件的屏幕都会熄灭,当你锁好门下车后,在一段时间内没有任何操作,你的车这个时候就安安静静的睡着了,整车消耗的蓄电池电量也相当微弱,一般能做到 20mA 一下,这样子的话,你的车就算放上一个月,等你要用它的时候,它也能正常启动起来,这就是休眠策略带来的好处;同理,当你下午下班的时候,按下遥控寻车,你的车也能响应你的操作,相当于你把车从休眠状态下唤醒了。 我们结合图 4-8 ,看下 OSKE 网络管理的休眠过程,当我们下到 OFF 档时,控制器满足了休眠条件,就会发出睡眠指示位 (Sleep.Ind) 置 1 的 Ring 报文,如图中的第二字节数据为 0x12 的报文,当所有节点都满足休眠条件,发出 0x12 的报文后,最后一个休眠节点的下一个节点,就会发出睡眠应答位 (Sleep.Ack) 置 1 的 Ring 报文,如图中的第二字节数据为 0x32 的报文,同一网段的控制器收到这个报文后,就会进入睡眠状态,这个时候,会停止发送任何报文到总线,等待 ECU 的内部任务完成后,就会进入低功耗模式,静态电流会变得很小。 图4-8 OSEK网络管理的休眠 今天的介绍就到这里了,欢迎大家点击关注我,如果有什么需求和疑问可以通过APP跟我交流咨询 。