AutoSar CAN网络管理状态机理解

  • 前言

网络管理是整车控制很重要的功能。在CAN网络中通常有两种报文,应用数据帧和网络管理帧。应用数据帧只负责网络在正常工作模式下各节点的数据交互,网络管理帧控制和协调各节点唤醒,工作,休眠的时序。AutoSar CAN网络管理规范要求所有节点按如下状态机管理和交流各自的网络状态以控制整车的网络活动状态。为什么状态机要是这个样子?为什么总共五个状态休眠就三个状态?为了比较形象的说明汽车CAN网络管理状态机,本文以学生宿舍作息管理模型为例做简要说明。

  • 设计要求

网络管理系统的三个基本要求:

  1. 网络上各节点能同时唤醒。
  2. 网络上各节点能同时休眠。
  3. 网络上新增(减少)一个节点(只要总节点数≥2)后,新的网络依然满足要求1,2

此处同时只的是第一个唤醒(休眠)控制器和最后一个唤醒(休眠)控制器的唤醒(休眠)时间差在设计允许范围内,比如200ms。

网络管理系统的增强性要求:

  1. 网络上任一节点能都能唤醒网络,即多主唤醒方式。
  2. 网络上任一节点能知道其他节点所有的状态,即状态共享。
  • 学生宿舍作息模型

设某学生宿舍有N个同学,作息规定:

  1. 大家同时醒来。
  2. 大家同时睡着。
  3. 宿舍里新来一个人或离开一个人也不影响其他人按规定1,2作息。

此处同时只的是第一个人醒来(睡着)和最后一个醒来(睡着)的时间差在允许范围内,比如1分钟。睡着的意思是大脑真正进入睡眠状态,不能仅从闭上眼睛判断。有什么方法能实现该作息规定呢?

  1. 管理员模型:
  1. 选举一个同学为宿舍长。
  2. 宿舍中央掉一盏灯。
  3. 舍长一关灯大家一起睡觉,10分钟后一起睡着。
  4. 舍长一开灯大家醒来。

这个方法挺简单,但是要有约束:

  1. 舍长必须永远存在。否则有一天他生病或请假不能开关灯,那么其它人就不能正常作息。
  2. 舍长必须第一个醒来,他不醒来就没人开灯。
  3. 舍长必须最后一个睡着,否则关灯后有一个人迟迟不入睡,他不知道。

可见,管理员模型存在风险集中和伪同步两个缺点。

  1. 独立模型:
  1. 各人床头放一盏床头灯。
  2. 各人只能控制自己床头灯“开”和“关”。
  3. 各人能看到其他人床头灯“开”和“关”的状态。
  4. 只要1个人的床头灯是开的,房间就是亮的。
  5. 只有所有人的床头灯是关的,房间才变黑暗。
  6. 当房间黑暗时,只要有1个人的床头灯亮,所有人都要醒来。
  7. 当1个人准备睡觉时他就关掉自己的床头灯。
  8. 只要房间是亮的,所有人都不会睡着,即使他已经躺在床上。
  9. 只要房间变黑暗,10分钟后所有人都会睡着。

其中,第6条保证同时醒来,同时也是对管理员模型舍长风险的分解。即任何人都能叫醒其它人。第7~9条保证同时睡着。为什么必须要同时睡着呢?这是因为如果不同时睡着,就不能按照规则6让大家同时醒来。譬如,修改第7条当1个人关灯后,不管其他人有没有关灯他就在10分钟后睡着。但是他睡着后因为有灯亮着,按照第6条他又得醒来。虽然他只经过了短暂的睡着状态,但他还是以为是第二天天亮了,然而其他人还处在第一天晚上的状态,这样系统时间就乱了。第9条是说从入睡到睡着有一个时间过程,不可能宿舍一黑大家都睡着。

同步睡眠的方法如图,假设有三个同学A,B,C他们按顺序关灯。关灯后,他们只是躺下,眼睛还是睁开的。这时就一直看房间还是不是亮着。只要亮着,就说明有人还没睡,那就等待。直到C关灯躺下后,房间变黑。大家才集体闭眼睡觉,10分钟后一起睡着。我们发现从最后一个人关灯到集体睡着的时间是固定的,而第一个人关灯到最后一个人关灯的时间是不固定的,该时间就是网络休眠的最大延迟时间。

同步唤醒的方法如图,任意一个同学(假设同学B)开灯,大家就同时起床。但每个人起床时间或许不一样,有的快有的慢。所以是要规定一个最快时间,比如5分钟。在这5分钟内,必须要让床头灯开着,目的是让其他同学有时间看到自己的确被叫起来了。因为起床后就是自由活动了,或者去教室,或者呆在宿舍。或者把灯一关坐在床上睁大眼睛看天花板,反正至少同学B的灯一直开着你就不能闭眼,哪怕今天你在床上干坐一天。

综合上述同步唤醒和休眠时序,我们得到每个同学的作息管理状态机。这和AutoSar CAN网络管理状态机基本一样。

  • AutoSar CAN网络管理同步算法

以下内容摘自《AUTOSAR_SWS_CANNetworkManagement.pdf》

7.1 Coordination algorithm部分:

The AUTOSAR CanNm is based on decentralized(*1) direct network management strategy, which means that every network node performs activities self-sufficient depending on the Network Management PDUs only that are received or transmitted within the communication system.

AUTOSAR CanNm基于分散的(*1)直接网络管理策略,这意味着每个网络节点根据仅依靠在通信系统内接收或发送的网络管理PDUs帧就可以执行自足的网络管理活动。

The AUTOSAR CanNm algorithm is based on periodic Network Management PDUs,which are received by all nodes in the cluster via broadcast transmission. Receptionof Network Management PDUs indicates that sending nodes want to keep thenetwork management cluster awake. If any node is ready to go to the Bus-Sleep Mode, it stops sending Network Management PDUs, but as long as Network Management PDUs from other nodes are received, it postpones transition to the BusSleep Mode. (*2) Finally, if a dedicated timer elapses because no Network Management PDUs are received anymore, every node initiates transition to the Bus-Sleep Mode.

AUTOSAR CanNm算法基于周期性网络管理PDU,通过广播传输由集群中的所有节点接收。接收到网络管理PDU表明发送节点希望保持网络管理集群处于唤醒状态。如果任何节点已准备好进入总线-休眠模式,它将停止发送网络管理PDU,但只要接收到来自其他节点的网络管理PDU,它就会推迟进入到BusSleep模式。(*2) 最后,如果经过一定时间再没有接收到网络管理PDU,则每个节点都会进入到BusSleep模式。

If any node in the network management cluster requires bus-communication, it can wake-up the network management cluster from the Bus-Sleep Mode by transmitting Network Management PDUs. For more details concerning wakeup procedure itself please refer to the AUTOSAR SWS ComM [7].

如果网络管理集群中的任何节点需要总线通信,则它可以通过发送网络管理PDU将网络管理集群从休眠模式唤醒。有关唤醒程序本身的更多详细信息,请参阅AUTOSAR SWS ComM [7]。

理解:

  1. 分散的目的正是为了排除集中式管理员模型的风险。
  2. 推迟的目的是为了所有的节点同步进入BusSleep模式。
  • 新能源汽车CAN网络管理的必要性

低成本的控制器使用硬线方式唤醒,即所有的ECU都连接在点火开关上,ACC/IGON时所有ECU同步唤醒。但是ACC/IGOFF时,各节点不能同步休眠。有的节点提前休眠,有的节点比如MCU因为放电时间较长要晚点休眠,而VCU作为主控节点往往最后一个休眠。

通常情况下异步休眠也没有什么问题。但是特殊情况下,比如下图节点A已经休眠了但是节点B还没有休眠,这时钥匙又打开了,所谓玩钥匙。IGOFF-ON的时间间隔很短,大约几百毫秒。那么对节点A是一个新的循环,对节点B还处于原来的循环。这样可能就会存在隐患,譬如不同ECU故障管理的驾驶循环计数值不一致。

所以,严格控制所有ECU同步休眠是很有意义的。在传统燃油汽车ECU系统里,钥匙OFF后发动机立即熄火,只要整车厂企标规定所有ECU在一定时间内必须休眠(譬如200~300ms),基本上可以算同步。但是在新能源汽车,由于电机控制器MCU母线电容要放电,该时间是秒级的(主动放电3S内,被动放电60S左右)。则整车厂企标不能要求所有控制器在钥匙OFF后短时间内同步休眠。那么,必须要通过网络管理协调所有ECU同步休眠。

  • 对AutoSar CAN网络管理的误区

AutoSar CAN网络管理允许CAN唤醒控制器,但是不是只要采用AutoSar CAN网络管理就必须要CAN唤醒呢?我认为不一定,通常下面几个情况可能需要控制支持CAN唤醒:

  1. 停车充电时要唤醒控制器,譬如BMS,MCU,VCU。
  2. 需要通过无线钥匙启动车辆,无线模块发送CAN报文唤醒车辆ECU

对于新能源汽车第1条是必须的,那么相关节点是不是必须要支持CAN唤醒呢?要知道带CAN唤醒功能的芯片和不带CAN唤醒功能的芯片成本相差也比较大。如果通过巧妙电路设计,比如在无线唤醒模块上增加电子开关连接到KL15上,对于各ECU依然表现为硬线唤醒控制器,CAN网络管理只负责控制休眠,那么用低成本的CAN芯片就能实现网络管理。如今各整车厂对零部件供应商的ECU成本要求越来越严苛,ECU成本主要受制于高性能芯片,芯片供应商推进高性能Chip的目的是为了更高的利润,但是零部件商一定要清醒是否有必要,在能实现整车功能的前提下,尽量用低功能的芯片有成本优势。

七、小结:

1. 以学生宿舍作息管理模型为例说明了AutoSar CAN网络管理的状态机。

2. 解释了新能源汽车必须要用CAN网络管理控制ECU同步休眠。

3. 对于成本严格的整车网络,推荐用硬线唤醒结合CAN网络控制休眠的方法,可以采用不带CAN唤醒功能的芯片达到网络管理的目的。

AutoSar CAN网络管理状态机理解相关推荐

  1. AUTOSAR PN网络管理测试开发实践

    背景介绍 提起"匮电"二字,做测试的老司机定会虎躯一震,而根据过往经验,"网络管理"常是引起匮电的"钉子户",所以针对网络管理的验证是测试的 ...

  2. Autosar NM : 网络是如何被唤醒的<一>

    目录 一.按照唤醒方式,可以将ECU网络节点类型划分为两类: 二.远程唤醒CAN网络是如何被唤醒的? 1.ECU唤醒 2.ECU唤醒检查 3.EcuM唤醒验证 4.关于CanSM 三.Autosar ...

  3. 从ECU和CPU视角理解AutoSar网络管理

    一.KL15和KL30节点概念解释 点火开关位置:OFF,ACC,ON,START四种状态 KL30节点:控制器由蓄电池常供电,在点火开关OFF时仍然能运行软件和维持CAN通信. 如图,在Hardwa ...

  4. 关于Autosar中的NM模块的理解

    关于Autosar中的NM模块的理解 本篇文章主要介绍AutoSar中关于NM模块的理解. 阅读本篇文章希望达到的目的: 1. NM(网络管理)是用来做什么的: 2. AutoSar中网络管理的原理: ...

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

    一.前言 汽车网络管理从根本上来说是为了省电的,基本的实现方式就是汽车在没有使用的情况下一些ECU会通过网络管理协调进入低功耗模式或者睡眠模式,从而达到省电的目的.目前主流的网络管理标准有两个,一个是 ...

  6. 一文了解AUTOSAR网络管理

    在本文中,我们将讨论 NM(网络管理)接口和 CAN 总线特定的 NM 模块,它们是 AUTOSAR 分层软件架构的服务层的一部分. 1 网络管理接口: Network Management Inte ...

  7. AUTOSAR从入门到精通100讲(二十八)-AutoSar之CAN网络管理

    AUTOSAR中网络管理主要使用了CAN接口(CanIf),并提供通用网络管理接口(NmIf).CAN网络管理在CAN架构中所处的位置如图1,与其他模块的交互如图2.                 ...

  8. FlexRay AUTOSAR网络管理(AUTOSARFRNM)简介

    本文带大家快速了解AUTOSAR FlexRay网络管理(FlexRay Network Management,FrNm)的概念,核心功能,可选功能,接口和配置问题. AUTOSAR FlexRay网 ...

  9. 车载网络 - Autosar网络管理 - 网络管理简介

    一.什么是CAN网络管理及它的作用 现在的车辆是由大量的ECU节点组成的,为了能使各ECU能够正确并及时地进行CAN通信,需要有一套机制来统一协调总线上各节点的休眠唤醒,这套机制就是CAN网络管理(N ...

最新文章

  1. Winform中实现颜色拾取器获取RGB与16进制颜色程序与源码分享
  2. 【Java报错】java.lang.ClassCastException: xxxClass cannot be cast to java.lang.Comparable 问题重现+解决
  3. 大型项目中会出现的一些问题:
  4. GWT EJB3 Maven JBoss 5.1集成教程
  5. 前端遇到瓶颈了怎么办?
  6. @ImportResource和@PropertySource两个注解的区别
  7. Linux运维系统工程师与java基础学习系列-1
  8. 问题四十二:怎么用ray tracing画任意圆环片段
  9. MATLAB小技巧(14)三角函数作图
  10. 关于AutoCAD软件的PDF打印机的问题
  11. 三维空间内任意三点坐标求圆心、半径
  12. 硬件蓝牙测试软件,【原创】聊聊蓝牙测试专用硬件工具-Ubertooth
  13. JavaScript中的静态函数
  14. 学会运用爬虫框架 Scrapy各类技术文章大汇总
  15. word2vec 的个人理解
  16. 快来领取你的个性昵称
  17. Linux学习日记- - -配置篇##1
  18. python除法有余数时+1
  19. 电工实验室基本生存技能 第一季第三集
  20. DKIM、DMARC 和 SPF:设置电子邮件安全

热门文章

  1. android+面试题
  2. OpenResty学习——第七章 Web开发实战2——商品详情页
  3. 杰理之脑连接样机蓝牙 , 开启音量同步 , 电脑无法大范围 量 调节音量【篇】
  4. MySQL(进阶篇)
  5. 1.3-15:苹果和虫子
  6. mysql查询每门课程成绩最好的前两名学生id和姓名
  7. 面试题--精选Hadoop选择题
  8. 转转转转转转转转转转转转转转转转转转转转转转转转转
  9. 操作系统位数与数据字节数的关系
  10. JAVA java学习(9)——————java常用开发工具介绍