一、前言

汽车网络管理从根本上来说是为了省电的,基本的实现方式就是汽车在没有使用的情况下一些ECU会通过网络管理协调进入低功耗模式或者睡眠模式,从而达到省电的目的。目前主流的网络管理标准有两个,一个是AUTOSAR(Automotive Open System Architecture,即汽车开放系统架构),另一个是OSEK。AUTOSAR与OSEK的网络管理方式虽然有区别,但是可以认为AUTOSAR是基于OSEK/VDS发展出来的。
那么这两种标准分别是怎么实现网络管理功能的,有什么差异?有什么相同呢?

二、OSEK与AUTOSAR网络管理实现原理

OSEK网络管理

1、状态机
OSEK网络管理状态机的状态跳转是有多层的,具有三个主要状态:

122437h3ucfbc89af588ae.png
图一 OSEK网络管理主状态示意图
NMOff:网络管理关闭
NMOn:网络管理正在运行
NMShutDown:关闭网络管理的操作,此过程会清理一些在运行过程中产生的数据
NMOn状态下有两组并行的子状态,互不影响:

122438j1zg5d0m5mjvqmyy.png
图二 NMOn 状态下的子状态示意图
NMInit:主要是硬件初始化,此状态很短暂(初始)
NMAwake:一般情况下节点长期保持的状态,正常进行网络管理
NMBusSleep:睡眠状态,网络管理通信停止
NMActive:参与网络管理(初始)
NMPassive:节点不参与网络管理,但仍监视网络活动
NMAwake状态下也有三个子状态:

122438xdvvpqpo3plvgyzx.png
图三 NMAwake 状态下的子状态示意图
NMReset:软件初始化,发送alive报文
NMNormal:周期性发送或接受Ring报文,检测节点状态和网络配置的变化
NMLimpHome:节点非正常状态,不能正常发送和接收网络管理报文,尝试周期性发送跛行报文
一个节点从休眠到唤醒,再到休眠状态的跳转示意图如下:

122438sujzgkt7dudkt8qt.png
图四 OSEK网络管理状态跳转示意图
2、NM报文格式
网络管理直接关联的报文为网络管理报文,网络管理报文根据携带数据中byte1字节的不同bit置位可以分为Alive报文、Ring报文和LimpHome报文。网络管理报文byte1字节中还携带有每个节点是否满足休眠的信息,分别叫SleepInd信息、SleepACK信息。
Alive报文(byte1中bit0置位):每个节点需要加入逻辑环中时发送的声明。

例: 122438dsc7mb7y6c76cb7g.png
Ring报文(byte1中bit1置位):“令牌”在逻辑环中传递的网络管理报文。
例: 122438wql2mv1zw6fo2efz.png
LimpHome报文(byte1中bit2置位):节点处于非正常状态不能收发网络管理报文时发出的特殊报文。
例: 122438a003jc0nz7cel79i.png
SleepInd信息(byte1中bit4置位):网络管理报文操作码中携带的数据,表明发出此信息的节点不再主动请求网络通信。
例: 122439vta8canagg1tatra.png
SleepACK信息(byte1中bit4和bit5置位):表明网络中所有节点都不再需要网络通信,所有节点收到此信息的报文后就停止通信,进入休眠。
例: 122439mli7rtin3nnliio0.png

3、逻辑环
逻辑环:网络管理报文传递的逻辑,正常通信的网络中一个节点只有收到其他节点发出指向自身的网络管理报文,也就是“令牌”,才能发出自身网络管理报文,因此网络中同一时间只有一个节点能发出网络管理报文,每个节点按顺序发送网络管理报文,这个顺序就叫做逻辑环。示意图如下:
122439m4wsejoxlxr0t0tz.png
图五 逻辑环示意图

122439a4rwcwc6xckcs5sz.png “Token”在Node B,Node B发出指向Node C的网络管理报文。
122439h00ifu9t8m6eyexx.png Node B的发出指向Node C的网络管理报文,“Token”转移到Node C。
122439iljk9oz7uemeelml.png “Token”在Node C,Node C发出指向Node A的网络管理报文。
122439kg0gfff4xw2w1g1u.png Node C的发出指向Node A的网络管理报文,“Token”转移到Node A。
122439bawed339n455az75.png “Token”在Node A,Node A发出指向Node B的网络管理报文。
122439qtuu33antpv0a3vr.png Node A的发出指向Node B的网络管理报文,“Token”转移到Node B。

AUTOSAR网络管理

1、状态机
AUTOSAR网络管理只有三个模式:

122440vqb5hqyrzybqr25q.png
图六 AUTOSAR网络管理模式示意图
BusSleep Mode :总线睡眠模式,当具备AUTOSAR网络管理功能的控制器正常休眠时的状态。
Prepare BusSleep Mode :总线预睡眠模式,此状态为网络中节点停止通信准备进入睡眠模式的一个过渡状态,不会长期处于此状态
Network Mode :网络模式,网络中有通信请求时的状态。
Network Mode下还有三个子状态,AUTOSAR网络管理则是根据这三个子状态来判断节点是否需要通信:

122440ryloh8kh5d51z346.png
图七 Network Mode模式下子状态示意图
Repeat Message State:重复消息状态,此状态不是一个长时间的状态,当从睡眠模式或者准备睡眠模式进入网络模式时进入此状态,发出自身的网络管理报文,让网络中的其他节点可以检测到,也可以用来检测当前在线的节点。
Normal Operation State:正常操作状态,某个节点需要网络通信时处于的状态,周期性的发出自身的网络管理报文。
Ready Sleep State:就绪睡眠状态,某个节点不再需要网络通信时处于的状态,不再发出自身的网络管理报文,但正常发送自身的应用报文。
一个正常通信网络中的所有节点都会维持在两个状态,一个是Normal Operation State,另一个是Ready Sleep State,这两个状态的差别就是网络管理报文的发送与否。
一个节点从休眠到唤醒,再到休眠状态的跳转如下所示:

122440err07rgvo7roxc08.png
图八 AUTOSAR网络管理状态跳转示意图
2、NM报文格式
AUTOSAR网络管理报文由于是广播发送的且不需要指定任何节点,所以报文只包含自身的ID,和少量的控制信息,叫做控制位向量,以及用户数据。

122440lmcoedbbnnvcyc1v.png
图九 AUTOSAR网络管理报文格式
至此,本文分别在状态机,网络管理报文格式对OSEK和AUTOSAR网络管理进行了简单介绍。
本文重点在两种网络管理特点的比较,因文章篇幅限制,还请各位看官移步至文章《科普系列:AUTOSAR与OSEK网络管理比较(下)》。
未完待续。

北汇信息专注于汽车电子测试,与国内外众多OEM和Tier1合作,在车载通信、诊断刷写、OTA、车内网络安全、域控制器功能测试等领域积累了丰富的实践经验,欢迎大家交流、探讨。

注:文中部分图片来源于AUTOSAR_SWS_CANNetworkManagement