前言
汽车网络管理从根本上来说是为了省电的,基本的实现方式就是汽车在没有使用的情况下一些ECU会通过网络管理协调进入低功耗模式或者睡眠模式,从而达到省电的目的。目前主流的网络管理标准有两个,一个是AUTOSAR(AutomotiveOpenSystemArchitecture,即汽车开放系统架构),另一个是OSEK。AUTOSAR与OSEK的网络管理方式虽然有区别,但是可以认为AUTOSAR是基于OSEK/VDS发展出来的。
那么这两种标准分别是怎么实现网络管理功能的,有什么差异?有什么相同呢?
OSEK与AUTOSAR网络管理实现原理
OSEK网络管理
1、状态机
OSEK网络管理状态机的状态跳转是有多层的,具有三个主要状态:
图一OSEK网络管理主状态示意图
NMOff:网络管理关闭
NMOn:网络管理正在运行
NMShutDown:关闭网络管理的操作,此过程会清理一些在运行过程中产生的数据
NMOn状态下有两组并行的子状态,互不影响:
图二NMOn状态下的子状态示意图
NMInit:主要是硬件初始化,此状态很短暂(初始)
NMAwake:一般情况下节点长期保持的状态,正常进行网络管理
NMBusSleep:睡眠状态,网络管理通信停止
NMActive:参与网络管理(初始)
NMPassive:节点不参与网络管理,但仍监视网络活动
NMAwake状态下也有三个子状态:
图三NMAwake状态下的子状态示意图
NMReset:软件初始化,发送alive报文
NMNormal:周期性发送或接受Ring报文,检测节点状态和网络配置的变化
NMLimpHome:节点非正常状态,不能正常发送和接收网络管理报文,尝试周期性发送跛行报文
一个节点从休眠到唤醒,再到休眠状态的跳转示意图如下:
图四OSEK网络管理状态跳转示意图
2、NM报文格式
网络管理直接关联的报文为网络管理报文,网络管理报文根据携带数据中byte1字节的不同bit置位可以分为Alive报文、Ring报文和LimpHome报文。网络管理报文byte1字节中还携带有每个节点是否满足休眠的信息,分别叫SleepInd信息、SleepACK信息。
Alive报文(byte1中bit0置位):每个节点需要加入逻辑环中时发送的声明。
例:
Ring报文(byte1中bit1置位):“令牌”在逻辑环中传递的网络管理报文。
例:
LimpHome报文(byte1中bit2置位):节点处于非正常状态不能收发网络管理报文时发出的特殊报文。
例:
SleepInd信息(byte1中bit4置位):网络管理报文操作码中携带的数据,表明发出此信息的节点不再主动请求网络通信。
例:
SleepACK信息(byte1中bit4和bit5置位):表明网络中所有节点都不再需要网络通信,所有节点收到此信息的报文后就停止通信,进入休眠。
例:
3、逻辑环
逻辑环:网络管理报文传递的逻辑,正常通信的网络中一个节点只有收到其他节点发出指向自身的网络管理报文,也就是“令牌”,才能发出自身网络管理报文,因此网络中同一时间只有一个节点能发出网络管理报文,每个节点按顺序发送网络管理报文,这个顺序就叫做逻辑环。示意图如下:
图五逻辑环示意图
“Token”在NodeB,NodeB发出指向NodeC的网络管理报文。NodeB的发出指向NodeC的网络管理报文,“Token”转移到NodeC。
“Token”在NodeC,NodeC发出指向NodeA的网络管理报文。
NodeC的发出指向NodeA的网络管理报文,“Token”转移到NodeA。
“Token”在NodeA,NodeA发出指向NodeB的网络管理报文。
NodeA的发出指向NodeB的网络管理报文,“Token”转移到NodeB。
AUTOSAR网络管理
1、状态机
AUTOSAR网络管理只有三个模式:
图六AUTOSAR网络管理模式示意图
BusSleepMode:总线睡眠模式,当具备AUTOSAR网络管理功能的控制器正常休眠时的状态。
PrepareBusSleepMode:总线预睡眠模式,此状态为网络中节点停止通信准备进入睡眠模式的一个过渡状态,不会长期处于此状态
NetworkMode:网络模式,网络中有通信请求时的状态。
NetworkMode下还有三个子状态,AUTOSAR网络管理则是根据这三个子状态来判断节点是否需要通信:
图七NetworkMode模式下子状态示意图
RepeatMessageState:重复消息状态,此状态不是一个长时间的状态,当从睡眠模式或者准备睡眠模式进入网络模式时进入此状态,发出自身的网络管理报文,让网络中的其他节点可以检测到,也可以用来检测当前在线的节点。
NormalOperationState:正常操作状态,某个节点需要网络通信时处于的状态,周期性的发出自身的网络管理报文。
ReadySleepState:就绪睡眠状态,某个节点不再需要网络通信时处于的状态,不再发出自身的网络管理报文,但正常发送自身的应用报文。
一个正常通信网络中的所有节点都会维持在两个状态,一个是NormalOperationState,另一个是ReadySleepState,这两个状态的差别就是网络管理报文的发送与否。
一个节点从休眠到唤醒,再到休眠状态的跳转如下所示:
图八AUTOSAR网络管理状态跳转示意图
2、NM报文格式
AUTOSAR网络管理报文由于是广播发送的且不需要指定任何节点,所以报文只包含自身的ID,和少量的控制信息,叫做控制位向量,以及用户数据。
图九AUTOSAR网络管理报文格式
至此,本文分别在状态机,网络管理报文格式对OSEK和AUTOSAR网络管理进行了简单介绍。
本文重点在两种网络管理特点的比较,因文章篇幅限制,还请各位看官移步至文章《科普系列:AUTOSAR与OSEK网络管理比较(下)》。
未完待续。
总结
北汇信息专注于汽车电子测试,与国内外众多OEM和Tier1合作,在车载通信、诊断刷写、OTA、车内网络安全、域控制器功能测试等领域积累了丰富的实践经验,欢迎大家交流、探讨。
注:文中部分图片来源于AUTOSAR_SWS_CANNetworkManagement