一、前言

汽车网络管理从根本上来说是为了省电的,基本的实现方式就是汽车在没有使用的情况下一些ECU会通过网络管理协调进入低功耗模式或者睡眠模式,从而达到省电的目的。目前主流的网络管理标准有两个,一个是AUTOSAR(Automotive Open System Architecture,即汽车开放系统架构),另一个是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、逻辑环

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

图五 逻辑环示意图

  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网络管理

1、状态机

AUTOSAR网络管理只有三个模式:

图六 AUTOSAR网络管理模式示意图

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

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

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

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

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

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

一个正常通信网络中的所有节点都会维持在两个状态,一个是Normal Operation State,另一个是Ready Sleep State,这两个状态的差别就是网络管理报文的发送与否。

一个节点从休眠到唤醒,再到休眠状态的跳转如下所示:

图八 AUTOSAR网络管理状态跳转示意图

2、NM报文格式

AUTOSAR网络管理报文由于是广播发送的且不需要指定任何节点,所以报文只包含自身的ID,和少量的控制信息,叫做控制位向量,以及用户数据。

图九 AUTOSAR网络管理报文格式

至此,本文分别在状态机,网络管理报文格式对OSEK和AUTOSAR网络管理进行了简单介绍。

本文重点在两种网络管理特点的比较,因文章篇幅限制,还请各位看官移步至文章《科普系列:AUTOSAR与OSEK网络管理比较(下)》。

未完待续。

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

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

喜欢本篇文章的话记得

科普系列:AUTOSAR与OSEK网络管理比较(上)相关推荐

  1. 科普系列:AUTOSAR与OSEK网络管理比较(下)

    在上篇中我们分别在状态机和报文格式方面对OSEK和AUTOSAR网络管理进行了简单介绍,感兴趣的小伙伴请移步至文章<科普系列:AUTOSAR与OSEK网络管理比较(上)>. 三.OSEK与 ...

  2. 汽车行业中的AUTOSAR与OSEK到底是什么,有什么区别

    最近开始接触汽车电子及汽车行业,对其中两个概念有点混淆,特此拿来对比一下. 一.AUTOSAR 现在的汽车正向着更高的安全性.经济环保性.舒适性.便捷性发展,从而为汽车电子系统带来了前所未有的复杂性, ...

  3. tms570 can 接收大量数据_CAN通讯系列--AUTOSAR架构的CAN Interface7

    上篇文章简介了AUTOSAR架构的CAN Driver模块,本文将更进一步,来了解CAN Driver模块对接的唯一上层模块--CAN Interface. 9 CAN interface CAN I ...

  4. Kafka科普系列 | 原来Kafka中的选举有这么多?

    欢迎跳转到本文的原文链接:https://honeypps.com/mq/kafka-basic-knowledge-of-selection/ 面试官在考查你Kafka知识的时候很可能会故弄玄虚的问 ...

  5. Kafka科普系列 | 什么是LSO?

    欢迎跳转到本文的原文链接:https://honeypps.com/mq/kafka-basic-knowledge-of-lso/ 很多同学对于Kafka的认知仅限于在LEO和HW之间,有可能认知还 ...

  6. 前端科普系列(2):Node.js 换个角度看世界,

    [前端科普系列]往期精彩内容: 前端科普系列(1):很有趣的一篇前端简史,作者有心了~主要介绍 web 前端发展的历史.大事件. 本文为系列文章(2),主要介绍 Node.js 的前世今生.核心科技以 ...

  7. 小甲鱼 OllyDbg 教程系列 (一) :二进制破解科普系列之 ReverseMe

    小甲鱼 视频教程( 4.5 集 ):https://www.bilibili.com/video/av6889190?p=4 实验程序 reverseME.exe 下载地址:https://pan.b ...

  8. GIT科普系列5:index in git

    背景: git的使用其实没有想象中的那么复杂,平日里真正使用的指令都是极少数.最简单格式的.之所以使用过程中感觉操作复杂.冲突不断,究其根源是对git的设计理念缺乏了解,没有搞清楚git实现版本控制的 ...

  9. GIT科普系列4:仓库/缓冲区/工作副本,傻傻分不清楚?

    背景: 公司内部主要以Git作为版本管理工具,在日常工作中发现大家使用Git很不熟练,而且学习的积极性不高,似乎GIT给人以一种望而却步的感觉.究其根源(个人臆测)有几点: 一.以为GIT相较于SVN ...

最新文章

  1. springboot 利用configureMessageConverters add FastJsonHttpMessageConverter 实现返回JSON值 null to ...
  2. Linux中的Screen命令使用技巧详解
  3. python速度比较_Python和C运算速度对比实测
  4. linux命令wget多个参数,wget 命令参数使用方法
  5. poj-2393 Yogurt factory (贪心)
  6. EXCEL与数据透视表整理
  7. DHI Mike 后处理工具——污染带面积、长度、宽度统计工具
  8. 10款炫酷的html5动画特效附源码,10款炫酷的HTML5动画特效,附源码
  9. 010editor 11.01 破解
  10. ckfinder php,php,ckfinder_ckfinder mac下报错 linux正常,php,ckfinder - phpStudy
  11. 软件系统的复杂性,没有银弹,只有焦油坑
  12. FinalShell使用教程:SSH链接Linux服务器
  13. R语言数据分析笔记——Cohort 存留分析
  14. Java数据结构学习笔记
  15. KPM算法详解(Next数组)
  16. 西游记2--唐僧俗世篇
  17. USB过压过流保护IC
  18. android 应用变量,应用变量(com.sollyu.xposed.hook.model) - 3.3.2 - 应用 - 酷安
  19. matlab 分式拟合,matlab 微分方程组的参数拟合
  20. 警报!AIGC狂飙,小心你的银行信息被偷窥

热门文章

  1. CAD标注:CAD软件中如何快速进行角度尺寸标注?
  2. Greenplum 添加mirror步骤
  3. 无线通信安全作业1-无线通信安全最新消息
  4. 12306火车票查询——Python
  5. php 周易,GitHub - jyiL/lunarPHP: 易经六十四卦排盘类库
  6. JS几行代码实现数字炸弹游戏
  7. use SWR为什么能成为我的最爱React库?
  8. 为什么win10只有一个账户而此电脑C盘“其他人员”却占用空间呢?
  9. 什么是opc ua通信?opc ua的介绍
  10. 图表Chart.js入门教程