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