本篇文章转自知乎的Pete白世达,作者利用学生宿舍作息模型类比到AutoSAR CAN网络管理,生动形象而准确,非常精彩的一篇文章。
原文链接:从零学懂CAN总线(5)- CAN网络管理
1 前言
网络管理是整车控制很重要的功能,使网络中的ECU节点有序地睡眠和唤醒。为了比较形象的说明汽车CAN网络管理状态机,本文以学生宿舍作息管理为例做简要说明。
2 学生宿舍作息模型
3)宿舍里新搬来一人或搬走一人后,也不影响其他人按规定1)和2)作息。那么有什么方法能实现该作息规定呢?最基础的思路是:- 寝室长一关灯,大家一起开始睡觉,大概10分钟后一起睡着;
- 寝室长必须永远在,因为只有他才能开关灯。他不在就没人开关灯,那么其他人就不能正常作息;
- 寝室长必须最后一个睡着,否则关灯后有一个人迟迟不入睡,他不知道。
可见,管理员模型存在 风险集中(i)和 伪同步(ii,iii)两个缺点。 另外一种模型,采用与AutoSAR CAN网络管理一样的思路,称为独立模型。- 当房间黑暗时,只要有1个人的床头灯亮,所有人都要醒来。
- 只要房间是亮的,所有人都不会睡着,即使他已经躺在床上。
其中,第f条保证同时醒来,同时也是对管理员模型舍长风险的分解。即任何人都能叫醒其它人。第g~i条保证同时睡着。关于同步睡眠,其方法如下图示意:假设有三个同学A,B,C,他们按顺序关灯。关灯后,他们只是躺下,眼睛还是睁开的。这时就一直看房间还是不是亮着。只要亮着,就说明有人还没睡,那就等待。直到C关灯躺下后,房间变黑。大家才集体闭眼睡觉,10分钟后一起睡着。我们发现从最后一个人关灯到集体睡着的时间是固定的,而第一个人关灯到最后一个人关灯的时间是不固定的,该时间就是网络休眠的最大延迟时间。 关于同步唤醒,其方法如下图示意:任意一个同学(假设同学B)开灯,大家就同时起床。但每个人起床时间或许不一样,有的快有的慢。所以是要规定一个最快时间,比如5分钟。在这5分钟内,必须要让床头灯开着,目的是让其他同学有时间看到自己的确被叫起来了。因为起床后就是自由活动了,或去教室,或呆在宿舍,或把灯一关坐在床上睁大眼睛看天花板,反正至少同学B的灯一直开着你就不能闭眼,哪怕今天你在床上干坐一天。
该状态机和AutoSAR CAN网络管理状态机基本一致,接下来再看AutoSAR CAN网络管理。
3 AUTOSAR CAN网络管理
AUTOSAR CAN网络管理与上面的寝室作息管理的独立模型一样,是一种无中心式的网络管理,网络中的每个节点都依赖于自己和别人的网络管理报文(NM PDU)来实现通信的睡眠和唤醒。2. Prepare Bus-Sleep Mode 2. Normal Operation State常规CAN网络管理状态机如下图,对应寝室作息状态机的状态也标注了。通常情况下异步休眠也没什么问题,但特殊情况下,会存在隐患。比如节点A已经休眠了,节点B还没有休眠,在这个短时间内钥匙又打开了,那对于节点A是一个新的循环,对节点B还处于原来的循环,这样ECU故障管理的驾驶循环计数值就不一致了。 综上所述,ECU网络管理的实现的核心就是实现这个状态机,在AUTOSAR中,这些状态之间的跳变就是由AUTOSAR定义的各种接口函数实现的。4 参考文献
- 《AUTOSAR_SWS_CANNetworkManagement.pdf》
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。