前言
在上篇中我们分别在状态机和报文格式方面对OSEK和AUTOSAR网络管理进行了简单介绍,感兴趣的小伙伴请移步至文章《科普系列:AUTOSAR与OSEK网络管理比较(上)》。
三、OSEK与AUTOSAR网络管理特点对比
本篇就是本文的重点了,接下来对比下这两种网络管理之间的共同点以及差别。
共同点
1、都是基于状态机的网络管理。
2、都是协调网络中的节点同时进入休眠以及唤醒。
3、都分配了特定的网络管理报文在网络中进行网络管理,属于直接网络管理。
4、通常情况每个节点都有独有的节点ID(如0x1),与基础ID(如0x400)共同构成网络管理报文的ID(0x401)。
图十 通常情况网络管理报文ID组成
5、网络唤醒方式都相同,每个节点都可以由于自己需要通信而主动唤醒网络,也可以被网络中其它的节点唤醒。
不同点
1、唤醒行为不一样:
OSEK网络管理唤醒后会发出一帧特殊网络管理报文,用来进行建环,建环完成后才根据逻辑环发送网络管理报文;以三个节点建立逻辑环简单举个例子:
1):通信启动
网络中所有节点发出Alive报文
图十一 OSEK网络管理建环示意图(1)
2):确认逻辑后继节点
所有节点根据总线上出现的Alive报文判断自身节点的逻辑后继节点
图十二 OSEK网络管理建环示意图(2)
3):发出Ring报文
某个节点发出Ring报文尝试建环
图十三 OSEK网络管理建环示意图(3)
4):令牌传递
节点收到指向自身的网络管理报文也就是收到令牌后,将数据更新后再次发出
图十四 OSEK网络管理建环示意图(4)
下一个节点收到指向自身的网络管理报文,也是将数据更新后再次发出
图十五 OSEK网络管理建环示意图(5)
5):建环完成
令牌再次传递到第一个发送Ring报文的节点,且令牌传递期间没有节点发出Alive报文
图十六 OSEK网络管理建环示意图(6)
而AUTOSAR网络管理唤醒后直接周期性发出自身的网络管理报文即可,无需发出特殊的网络管理报文。
2、休眠行为不一样:
OSEK网络管理在总线睡眠之前,所有节点正常发送网络管理报文,待所有节点都准备好休眠并发送SleepInd后,最后一个节点发送SleepACK,网络中各节点再同时休眠,同样以三个节点简单举个例子:
A/B/C三个节点处于正常通信,节点B/C维持网络处于通信状态,A被维持通信。
1):节点B就绪休眠
就绪睡眠的节点在收到指向自身的网络管理报文时,将数据更新为携带睡眠指示信息的网络管理报文再次发出,此时仅C请求网络通信,A/B被维持通信
图十七 OSEK网络管理控制同时休眠示意图(1)
2):仅节点C主动维持网络通信
Node B准备休眠发出携带睡眠指示的网络管理报文,被节点C维持通信
Node C依然需要请求网络,发出未携带睡眠指示的网络管理报文,维持节点A/B处于通信状态
Node A准备休眠发出携带睡眠指示的网络管理报文,被节点C维持通信
图十八 OSEK网络管理控制同时休眠示意图(2)
3):节点C也准备休眠
Node B准备休眠发出携带睡眠指示的网络管理报文
Node C准备休眠发出携带睡眠指示的网络管理报文
Node A检测到所有节点都准备休眠,发出后继节点指向自身且携带睡眠应答信息的网络管理报文
图十九 OSEK网络管理控制同时休眠示意图(3)
此后所有节点停止网络管理报文的发送,并同时进入休眠。
而AUTOSAR网络管理在整个网络休眠之前,只要某个节点准备休眠,那么这个节点就不再发送网络管理报文,直到总线上不再发送网络管理报文,那么所有节点则自行判断已经可以休眠,无需确认休眠信息,如下以三个节点协调睡眠举例:
1):A/B/C三个节点都处于请求网络状态
所有节点都周期发送自身网络管理报文
图二十 AUTOSAR网络管理控制同时休眠示意图(1)
2):节点A准备休眠,节点B/C依然维持通信
节点A停发自身网络管理报文,但被节点B/C维持通信
图二十一 AUTOSAR网络管理控制同时休眠示意图(2)
3):所有节点准备好睡眠
所有节点停发网络管理报文,等待NM-Timeout timer 超时并启动Wait Bus-Sleep Timer。
图二十二 AUTOSAR网络管理控制同时休眠示意图(3)
每个节点Wait Bus-Sleep Timer超时后就各自进入睡眠模式,总线上不再有通信。
3、网络管理逻辑不同:
1)OSEK网络管理需要建环,网络管理报文的发送必须按照逻辑环进行,只有得到“令牌”才能发送网络管理报文,因此需要一个稳定的逻辑环,网络管理才能正常进行,对网络的稳定性要求比较高。
2)AUTOSAR网络管理则不会受到其他节点状态的影响,节点状态的跳转只与自身需求和总线的状态有关,只需要监视总线状态即可,网络管理报文的发送是周期性的。
4、网络管理报文格式不一样:
1)OSEK网络管理由于逻辑环的存在报文包含节点自身的ID和下一个发出网络管理报文的节点的ID,包含用于指示报文类型以及节点状态的数据,即操作码以及用户数据。
操作码(Opcode):OSEK网络管理PDU中的byte1,置位这个字节中不同位置的位就表现为不同的报文类型,分别为Alive报文,Ring报文,LimpHome报文,但同一时刻只能发送一种类型;这个字节中还包含节点的状态信息,也就是节点是否准备好睡眠以及是否确认睡眠,各占一个位。这个字节中的其它位则是预留的。
图二十三 OSEK网络管理操作码示例
2)AUTOSAR网络管理报文则由于是广播发送的且不需要指定任何节点,所以报文只包含自身的ID,和少量的控制信息,即控制位向量,以及用户数据。
控制位向量(CBV):AUTOSAR网络管理PDU中的byte1,这个字节中包含重复消息请求信息,主动唤醒信息以及PN相关等表明节点进行网络管理的控制信息。
图二十四 AUTOSAR网络管理控制位向量
5、对于节点掉线或者加入的处理不一样:
1)在正常通信OSEK网络管理网络中不论是加入某个新节点还是掉线某个节点,都会影响网络管理的状态,需要重新建环才能维持正常的网络管理。
2)而AUTOSAR网络管理不论是加入新节点还是已有的节点掉线都不会影响原有节点的网络管理状态。
四、总结
AUTOSAR网络管理和OSEK网络管理是汽车电子网络管理中的两个常见协议,本文就状态机、报文格式等方面对二者进行了相应的科普和比较。仅以此投石问路,北汇信息后续会发布更多的科普系列文章,为大家扩展更多的汽车电子方面的知识。
北汇信息专注于汽车电子测试,与国内外众多OEM和Tier1合作,在车载通信、诊断刷写、OTA、车内网络安全、域控制器功能测试等领域积累了丰富的实践经验,欢迎大家交流、探讨。
注:文中部分图片来源于AUTOSAR_SWS_CANNetworkManagement和OSEK/VDX Network Management
搜索
复制
<iframe height="240" width="320"></iframe> 标签:AUTOSAR,网络管理,报文,休眠,OSEK,节点 From: https://www.cnblogs.com/polelink/p/16895855.html