为了开始CAN网络管理这个主题,已经写了文章做铺垫,本文来梳理下其中的逻辑,借助下面构建的例子来进行说明。
对该图稍作说明:
对于一个控制器而言,它可能存在多种唤醒源,包括本地唤醒和网络唤醒等方式,图中这两种方式都存在;
对于一个控制器参与CAN通讯,其他硬件组成有CAN收发器,CAN控制器和微控制器;
不同CAN总线网络通过网关才能进行通讯。
1 控制器是怎么被唤醒的
当整车进入休眠状态,即所有的控制器都睡觉了,那么它们会怎么醒来呢?也就是说唤醒源会是什么?
在CAN通讯系列补充篇- 唤醒源浅析5 提到了本地唤醒,包括KL15硬线唤醒和传感器唤醒等方式。根据上图所示的例子,即对于IEB来说,假设它的本地唤醒源之一是制动踏板行程传感器BPS,在整车某个休眠唤醒场景下,BPS感知到变化了,从而唤醒的硬线信号有了变化,那么处于休眠的IEB将被唤醒,称为主动唤醒源,对应着图中1区域。
此时,为了实现这个唤醒场景,其他一些控制器是需要参与,假设EPS和VCU需要参与,这就意味着IEB需要去唤醒他俩,通过怎么方式,这里选用的是CAN网络唤醒。
2 CAN网络唤醒实现过程是怎样的
根据CAN通讯系列补充篇- NM状态机跳转详解8 和CAN通讯系列补充篇- 为什么要网管报文7 可以知道,IEB可以通过网管报文去唤醒EPS和VCU,大致过程是:IEB被传感器BPS唤醒后,它的网络管理状态会产生变化,由睡觉模式转为网络模式;然后IEB会发出网管报文,EPS和VCU的CAN收发器会陆续收到该网管报文,识别到需要唤醒,最后它们也会发网管报文,告诉IEB醒来了,可以一起搞事情。对应到上图的234部分。
在这个过程中,实现内容其实很复杂的,有几方面的问题值得深入探究:
1)网络管理状态机,即这些控制器之间是如何管理网络状态,就如上图示意一种网络管理状态机,当然我已经介绍过两种:OSEK NM和AutoSAR, 有兴趣的话可以先了解后者。
2)网管报文,其定义如下所示。针对本文这个例子,对于IEB来说,它发送网管报文应该是怎样的?而EPS和VCU的又是怎样的?
这是从网管报文自身定义出发需要弄清楚的问题,另一个方面从控制器角度而言,这几个控制器需要怎么发送网管报文,包括发送的周期,数量和时机等。
另外,要实现CAN网络管理,是否必须要用网管报文?其他类型报文是否也可以使用呢?
3)对于CAN收发器,它收到网管报文后,它会怎么做?是否会唤醒微控制器?以何种方式唤醒微控制器?可以参考CAN通讯系列补充篇- 详解三款CAN收发器6 ,以进行更深入分析。
3 小结
到此,本文就通过一个简单的例子对CAN网络管理唤醒过程进行简单的说明,同时对关键过程提出了很多基础而重要的问题,我相信如果你已经了解过我所提到这几篇文章,应该很能理解本篇文章我要表达的想法,那么后续文章就对这些更具体的细节各个击破。
在一边学习一边积累的过程中,把CAN通讯系列发展成两条路径,稍作说明:
CAN通讯系列是本主题的主干,写作安排尽可能有延续性和逻辑性;而CAN通讯系列补充篇是为主干铺垫的,会通过转发或转载形式来补充。