广告

AUTOSAR与OSEK网络管理比较

2022-11-18 汽车电子与软件 阅读:
AUTOSAR与OSEK的网络管理方式虽然有区别,但是可以认为AUTOSAR是基于OSEK/VDS发展出来的。那么这两种标准分别是怎么实现网络管理功能的,有什么差异?有什么相同呢?

01cJeednc

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

02cJeednc

OSEK与AUTOSAR网络管理实现原理

OSEK网络管理cJeednc

1.状态机
OSEK网络管理状态机的状态跳转是有多层的,具有三个主要状态:
图一 OSEK网络管理主状态示意图

NMOff:网络管理关闭cJeednc

NMOn:网络管理正在运行cJeednc

NMShutDown:关闭网络管理的操作,此过程会清理一些在运行过程中产生的数据cJeednc

NMOn状态下有两组并行的子状态,互不影响:
图二 NMOn 状态下的子状态示意图

NMInit:主要是硬件初始化,此状态很短暂(初始)cJeednc

NMAwake:一般情况下节点长期保持的状态,正常进行网络管理cJeednc

NMBusSleep:睡眠状态,网络管理通信停止cJeednc

NMActive:参与网络管理(初始)cJeednc

NMPassive:节点不参与网络管理,但仍监视网络活动cJeednc

NMAwake状态下也有三个子状态:
图三 NMAwake 状态下的子状态示意图

NMReset:软件初始化,发送alive报文cJeednc

NMNormal:周期性发送或接受Ring报文,检测节点状态和网络配置的变化cJeednc

NMLimpHome:节点非正常状态,不能正常发送和接收网络管理报文,尝试周期性发送跛行报文cJeednc

一个节点从休眠到唤醒,再到休眠状态的跳转示意图如下:
图四 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.逻辑环
逻辑环:网络管理报文传递的逻辑,正常通信的网络中一个节点只有收到其他节点发出指向自身的网络管理报文,也就是“令牌”,才能发出自身网络管理报文,因此网络中同一时间只有一个节点能发出网络管理报文,每个节点按顺序发送网络管理报文,这个顺序就叫做逻辑环。示意图如下:
图五 逻辑环示意图
1️⃣“Token”在Node B,Node B发出指向Node C的网络管理报文
2️⃣ Node B的发出指向Node C的网络管理报文,“Token”转移到Node C
3️⃣“Token”在Node C,Node C发出指向Node A的网络管理报文
4️⃣ Node C的发出指向Node A的网络管理报文,“Token”转移到Node A
5️⃣“Token”在Node A,Node A发出指向Node B的网络管理报文
6️⃣ Node A的发出指向Node B的网络管理报文,“Token”转移到Node B

AUTOSAR网络管理cJeednc

1.状态机
AUTOSAR网络管理只有三个模式:
图六 AUTOSAR网络管理模式示意图

BusSleep Mode :总线睡眠模式,当具备AUTOSAR网络管理功能的控制器正常休眠时的状态cJeednc

Prepare BusSleep Mode :总线预睡眠模式,此状态为网络中节点停止通信准备进入睡眠模式的一个过渡状态,不会长期处于此状态cJeednc

Network Mode :网络模式,网络中有通信请求时的状态cJeednc

Network Mode下还有三个子状态,AUTOSAR网络管理则是根据这三个子状态来判断节点是否需要通信:
图七 Network Mode模式下子状态示意图

Repeat Message State:重复消息状态,此状态不是一个长时间的状态,当从睡眠模式或者准备睡眠模式进入网络模式时进入此状态,发出自身的网络管理报文,让网络中的其他节点可以检测到,也可以用来检测当前在线的节点。cJeednc

Normal Operation State:正常操作状态,某个节点需要网络通信时处于的状态,周期性的发出自身的网络管理报文。cJeednc

Ready Sleep State:就绪睡眠状态,某个节点不再需要网络通信时处于的状态,不再发出自身的网络管理报文,但正常发送自身的应用报文。cJeednc

一个正常通信网络中的所有节点都会维持在两个状态,一个是Normal Operation State,另一个是Ready Sleep State,这两个状态的差别就是网络管理报文的发送与否。
一个节点从休眠到唤醒,再到休眠状态的跳转如下所示:
图八 AUTOSAR网络管理状态跳转示意图
2.NM报文格式
AUTOSAR网络管理报文由于是广播发送的且不需要指定任何节点,所以报文只包含自身的ID,和少量的控制信息,叫做控制位向量,以及用户数据。
图九 AUTOSAR网络管理报文格式

03cJeednc

OSEK与AUTOSAR网络管理特点对比
接下来对比下这两种网络管理之间的共同点以及差别。

共同点cJeednc

1cJeednc

都是基于状态机的网络管理。cJeednc

2cJeednc

都是协调网络中的节点同时进入休眠以及唤醒。cJeednc

3cJeednc

都分配了特定的网络管理报文在网络中进行网络管理,属于直接网络管理。cJeednc

4cJeednc

通常情况每个节点都有独有的节点ID(如0x1),与基础ID(如0x400)共同构成网络管理报文的ID(0x401)。cJeednc

图一 通常情况网络管理报文ID组成

5cJeednc

网络唤醒方式都相同,每个节点都可以由于自己需要通信而主动唤醒网络,也可以被网络中其它的节点唤醒。cJeednc

不同点cJeednc

唤醒行为不一样cJeednc

OSEK网络管理唤醒后会发出一帧特殊网络管理报文,用来进行建环,建环完成后才根据逻辑环发送网络管理报文;以三个节点建立逻辑环简单举个例子:

1.通信启动cJeednc

网络中所有节点发出Alive报文。
图二 OSEK网络管理建环示意图(1)

2.确认逻辑后继节点cJeednc

所有节点根据总线上出现的Alive报文判断自身节点的逻辑后继节点。
图三 OSEK网络管理建环示意图(2)

3.发出Ring报文cJeednc

某个节点发出Ring报文尝试建环。
图四 OSEK网络管理建环示意图(3)

4.令牌传递cJeednc

节点收到指向自身的网络管理报文也就是收到令牌后,将数据更新后再次发出。
图五 OSEK网络管理建环示意图(4)
下一个节点收到指向自身的网络管理报文,也是将数据更新后再次发出。
图六 OSEK网络管理建环示意图(5)

5.建环完成cJeednc

令牌再次传递到第一个发送Ring报文的节点,且令牌传递期间没有节点发出Alive报文。
图七 OSEK网络管理建环示意图(6)
而AUTOSAR网络管理唤醒后直接周期性发出自身的网络管理报文即可,无需发出特殊的网络管理报文。

休眠行为不一样cJeednc

OSEK网络管理在总线睡眠之前,所有节点正常发送网络管理报文,待所有节点都准备好休眠并发送SleepInd后,最后一个节点发送SleepACK,网络中各节点再同时休眠,同样以三个节点简单举个例子:
A/B/C三个节点处于正常通信,节点B/C维持网络处于通信状态,A被维持通信。

1.节点B就绪休眠cJeednc

就绪睡眠的节点在收到指向自身的网络管理报文时,将数据更新为携带睡眠指示信息的网络管理报文再次发出,此时仅C请求网络通信,A/B被维持通信。
图八 OSEK网络管理控制同时休眠示意图(1)

2.仅节点C主动维持网络通信cJeednc

1️⃣Node B准备休眠发出携带睡眠指示的网络管理报文,被节点C维持通信。cJeednc

2️⃣Node C依然需要请求网络,发出未携带睡眠指示的网络管理报文,维持节点A/B处于通信状态。cJeednc

3️⃣Node A准备休眠发出携带睡眠指示的网络管理报文,被节点C维持通信。cJeednc

图九 OSEK网络管理控制同时休眠示意图(2)

3.节点C也准备休眠cJeednc

1️⃣Node B准备休眠发出携带睡眠指示的网络管理报文。cJeednc

2️⃣Node C准备休眠发出携带睡眠指示的网络管理报文。cJeednc

3️⃣Node A检测到所有节点都准备休眠,发出后继节点指向自身且携带睡眠应答信息的网络管理报文。cJeednc

图十 OSEK网络管理控制同时休眠示意图(3)
此后所有节点停止网络管理报文的发送,并同时进入休眠。
而AUTOSAR网络管理在整个网络休眠之前,只要某个节点准备休眠,那么这个节点就不再发送网络管理报文,直到总线上不再发送网络管理报文,那么所有节点则自行判断已经可以休眠,无需确认休眠信息,如下以三个节点协调睡眠举例:

1.A/B/C三个节点都处于请求网络状态cJeednc

所有节点都周期发送自身网络管理报文。cJeednc

cJeednc

图十一 AUTOSAR网络管理控制同时休眠示意图(1)cJeednc

2.节点A准备休眠,节点B/C依然维持通信cJeednc

节点A停发自身网络管理报文,但被节点B/C维持通信。cJeednc

cJeednc

图十二 AUTOSAR网络管理控制同时休眠示意图(2)cJeednc

3.所有节点准备好睡眠cJeednc

所有节点停发网络管理报文,等待NM-Timeout timer 超时并启动Wait Bus-Sleep Timer。cJeednc

cJeednc

图十三 AUTOSAR网络管理控制同时休眠示意图(3)cJeednc

每个节点Wait Bus-Sleep Timer超时后就各自进入睡眠模式,总线上不再有通信。

网络管理逻辑不同cJeednc

1)OSEK网络管理需要建环,网络管理报文的发送必须按照逻辑环进行,只有得到“令牌”才能发送网络管理报文,因此需要一个稳定的逻辑环,网络管理才能正常进行,对网络的稳定性要求比较高。
2)AUTOSAR网络管理则不会受到其他节点状态的影响,节点状态的跳转只与自身需求和总线的状态有关,只需要监视总线状态即可,网络管理报文的发送是周期性的。

网络管理报文格式不一样cJeednc

1)OSEK网络管理由于逻辑环的存在报文包含节点自身的ID和下一个发出网络管理报文的节点的ID,包含用于指示报文类型以及节点状态的数据,即操作码以及用户数据。

操作码(Opcode):OSEK网络管理PDU中的byte1,置位这个字节中不同位置的位就表现为不同的报文类型,分别为Alive报文,Ring报文,LimpHome报文,但同一时刻只能发送一种类型;这个字节中还包含节点的状态信息,也就是节点是否准备好睡眠以及是否确认睡眠,各占一个位。这个字节中的其它位则是预留的。cJeednc

图十四 OSEK网络管理操作码示例
2)AUTOSAR网络管理报文则由于是广播发送的且不需要指定任何节点,所以报文只包含自身的ID,和少量的控制信息,即控制位向量,以及用户数据。

控制位向量(CBV):AUTOSAR网络管理PDU中的byte1,这个字节中包含重复消息请求信息,主动唤醒信息以及PN相关等表明节点进行网络管理的控制信息。cJeednc

图十五 AUTOSAR网络管理控制位向量

对于节点掉线或者加入的处理不一样cJeednc

1)在正常通信OSEK网络管理网络中不论是加入某个新节点还是掉线某个节点,都会影响网络管理的状态,需要重新建环才能维持正常的网络管理。
2)而AUTOSAR网络管理不论是加入新节点还是已有的节点掉线都不会影响原有节点的网络管理状态。

04cJeednc

总 结
AUTOSAR网络管理和OSEK网络管理是汽车电子网络管理中的两个常见协议,本文就状态机、报文格式等方面对二者进行了相应的科普和比较。仅以此投石问路,北汇信息后续会发布更多的科普系列文章,为大家扩展更多的汽车电子方面的知识。
关于北汇信息专注于汽车电子测试,与国内外众多OEM和Tier1合作,在车载通信、诊断刷写、OTA、车内网络安全、域控制器功能测试等领域积累了丰富的实践经验,欢迎大家交流、探讨。
责编:Ricardo
文章来源及版权属于汽车电子与软件,EDN电子技术设计仅作转载分享,对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。如有疑问,请联系Demi.xia@aspencore.com
汽车电子与软件
汽车电子与软件
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了