国家兴亡匹夫有责,从神九用到CAN总线讲起(12) 公道自在人心
前不久看到癌症病人买到了假药的报道,使人对假药贩子从心底里产生仇恨,恐怕没人会让假药贩子逃过法网。因为人同此心,心同此理,人人都有父母亲友,人人都有得癌的概率,自然人人都有受假药贩子伤害的概率,即便得癌的概率是比较小的。安全乃是第一位的,就像电影《东京审判》中代表中国的法官梅汝璈用盛水的杯子比作人的生命而水是生命承载的人类文明,他用力一甩,杯子碎了,水也没了,没有了生命何处再能承载文明、期望、承诺、理想、……?我们考虑安全就要从这里出发。
本博文(11)讨论的这类CAN停止服务失效的概率有多大?它的决定因素有三个:是不是容易进入error passive状态;在error passive状态而在特定区出错的概率;总线上有16个待发帧而发生持续错的概率。
1.是不是容易进入error passive状态:
图1。ISO7637-3波形3a
无论是传导干扰还是辐射干扰,那种高频的干扰都被车企典型化归纳为100us为周期的干扰,幅度达到60v以上,持续约10ms,然后无干扰90ms。例如传导干扰ISO7637-2的波形3(图1)、辐射干扰ISO7637-3的快速脉冲。虽然出厂时要求各ECU通过测试的要求,但是在现场仍会发生错误,其原因是车经过的环境是不受限制的,使CAN可能面临更大更持续的干扰;另外由于老化,振动造成保护措施的失效也是不被随时测试的,例如设备上的干扰吸收回路老化、屏蔽磨破。如果进入了恶化的临界状态,那么节点就可能频发错误。任何一个接收节点有错,都可以否定发送节点的发送过程,假定正好碰到1个节点在10ms内有5条消息发送(2条10ms,1条20ms,1条50ms,1条100ms),每次都重发1次后成功,那么10ms后就可以使发送节点的TEC达到35,在无干扰的90ms里成功发送10ms消息18条,20ms消息4条,50ms消息1条,TEC将减到12,接着又进入坏状态,节点将很快进入error passive状态。
2.在error passive状态而在特定区出错的概率:由文(11)可知,产生发送节点等效离线错误的位置数为Ack~EOF共9位,其概率为9*BER。
3.总线上有16个待发帧而发生持续错的概率:
持续时间问题涉及挂起待发的消息队列有多长,以举例计算之。底盘CAN总线系统内一般有6个节点,约有60个左右的消息要传送,则每个节点平均有10条消息,假定周期为10、20、50、100、1000ms等各有2条,每条帧长为97bit,在500kbps下6个节点的总线负载率总计43.4%。当一个节点等效离线后,还有约50条消息要发。在时钟差的影响下,可以构成一个峰值。例如二个节点的晶振有200ppm的差,假设它们的初始相位差为5ms,那么在25s之后消失,该二个节点的消息就可能同时要求发送,在某个最小公倍数的时刻,所有节点的消息会同时要求发送,形成周期性的峰值。同一节点内的消息相互之间会有相位差,但是该相位差可能很小,以致小于一个帧的传送时间,从而可认为它们同时就绪,例如为了表达系统在同一时刻的状态,会同时采样几个电压和电流,并尽快地送出,以保证同步性。节点在相对频差-0.2、0.4、0.6、0.8*100ppm下的仿真结果见图2。
图2仿真得到的挂起队长度与出现概率关系
这是仿真的程序:
Simulation:
1. Initialization: relative clock difference, message ID, offset, period and job state.
2. Calculate local time.
3. Check if new job is ready?
4. Calculate the number of jobs that were ready.
5. Clear one job with highest priority from queue.
6. Repeat 2 to 6 till the preset times.
其中队的长度每0.2ms统计一次,累计出该队长度在整个仿真时间内的出现次数。为了便于ECU编程,采样与写CAN控制器在一个任务中完成,所以假定10条消息在4ms内就绪。仿真开始时是最坏情况:所有节点同时开始写CAN控制器任务。在上述频差下,节点1、2经500s差10ms,也就是说二个节点的10ms周期的消息就绪时间又重合了,其它节点与节点1的组合各为为250s、166s、125s。由于较长周期消息对挂起队长的影响较小,所以仿真的时段取得较短。以600s的结果计算,挂起长度为16以上的情况(为图中曲线的积分)有3590次,占600秒内传送的1.2*10-3。需要特别注意的是,挂起队长的分布不是均匀的,因此处于等效离线而转为真正离线的机会也不是均匀分布的。由上述仿真60s、600s的结果看,挂起长度为16以上的情况都是3590次,如果在最坏情况60s内遇上了的机会便是1.2*10-2。如果在最坏情况6s内遇上挂起长度为16以上的情况有1005次,机会便是3.3*10-2。
图中队长度18的出现数比队长度17次的多,可以由下解释:虽然每个18队都要经过17队而下降,但是处于18队时仍可能增长到19队或更长,它们退下时又要经过18队状态。而在某时,由于同时就绪的消息多于2个,所以使队长度直接由小于17而跳到18,从而使18队的出现次数多于17队。
以600秒考察的有16个帧挂起的概率是1.2*10-3,于是这种失效的概率是P=BER*9* 1.2*10-3,其中BER为误码率。考虑到上述6秒、60秒时考察的概率,这是一个偏宽的估计。
如果在通道的坏状态下,总线上的BER=1*10-2,那么这种失效的概率将是P=1.0*10-4。
关于这种失效的成因我曾写成英文稿给美国交通部,他们把它转给CiA,一番周转后由Bosch给了回复,对他们的答复我也有回应给他们,我的分析也在国内发表了:杨福宇,“关于CAN隐患的争辨“,《单片机与嵌入式系统应用》,2009, No.6,p.5-7。关键点是我认为总线上的流量峰值是各节点时钟差形成的,周期性可重复的,而Bosch认为峰值是出了错才积累起来的,因此是瞬时的。他没有回答在此状态下算不算失效,但承认有消极报错帧分界符结束晚于服务间隔的情况。总之,他们并没有承认失效,并且在新的CAN FD中没有处理。
对我们的用户,这算不算失效是很关键的。现在以2010年丰田召回风波中的事为例,当时有PRIUS混合动力车,在刹车能量回收的软件设计中有一个疏忽,造成了0.06秒的延迟,结果用户感到刹车不给力,追究后形成召回,这是当时网上查到的解读:由于延迟0.06S时速20公里的车的刹车距离会增加0.7m。对于在高速运动(如100km/h)而紧急刹车的情况,对于以CAN传送刹车的分散控制器的车,可能因40ms失效而增加刹车距离1.1m;对于踏板直接控制刹车的情况,也要经CAN通知油门减油,40ms失效使油量不减也会减弱刹车的效果。
图3被召回的prius延迟
ESP是新的车的卖点,国外已把它作为新车的必备功能,因为它对车的安全太重要了,它已经避免了许多可能发生的车祸。下面是Bosch的ESP8的要求:
你可以看到许多信号要通过CAN来传送,而且要求每20ms刷新一次,如果40ms的通信失效发生,如何确定ESP的响应?如何保证ESP的功能是安全的?这40ms的通信失效该不该重视?
现在进一步设想发生了错帧漏检,你超车时转向5度,而CAN告诉ESP是30度,接着EPS又通信失效40ms,没有正确数据可告诉ESP,ESP就一直帮你转向40ms,你可能发现有冲到逆向车道之可能,但是你已来不及反应了。刘翔的起跑速度是0.12秒,我想你的脚不可能快于他的脚吧。
有人曾声称他们的软件设计“已经考虑了各种安全机制,不会有问题“。每一个系统都有时间上的要求,越是安全攸关的系统越是时间上要求严。此时,除非有另一二条备份的重复CAN通道,对于通信离线这样的失效这样说恐怕只是假话。如果用时间触发协议,就会禁止出错自动重发,只能以大量丢帧来换取不会长时间停止服务,即以大量短时停止服务来换长时间停止服务,此时的风险也是未经评估的。比如说,Bosch的ESP要求20ms刷新,长了不能保证,若你的软件设计可以对抗40ms停止服务,你不是已超越Bosch了吗?
如果一个缺陷已经有可能影响到当前产品的安全,而仍然放之任之,这就要受到消费者的惩罚了。在中国我们看到三聚腈氨事件,那些堆砌起来的所谓品牌价值一夜之间蒸发了,因为说到底,品牌是以品质作后盾的,不踏踏实实地去做品质,取巧是长不了的。特别现在是互联网的时代,信息的流动很快,已经没人能一手遮天了。只要不是虚构,大家说理,相信公道自在人心。中国的乳业由于毒牛奶而如此艰难,小白领千方百计找洋奶粉,弄得香港限制大陆客购奶粉的量,转而网购,把洋奶粉的价钱步步推高,大奶牛新西兰高兴不止。谁知新西兰也出了有双氰胺事件,又出现了冒牌的山寨新西兰奶粉,中国的妈妈们真是没办法了,我想唯一的办法是把中国的奶粉质量提高,让我们的下一代吃得放心。如果我们的车用CAN有问题,别人也不解决,我们是不是也得靠自己吗?
自做自受 2016-2-16 22:24
qijie72_812793070 2016-2-15 15:52
用户1056304 2014-4-21 20:42
yu_029_209198529 2013-11-1 11:04
yfy812_845263591 2013-9-6 10:26
yu_029_209198529 2013-9-3 14:37
CAN目前是汽车上应用最广泛最成熟的技术,其本身的容错机制也是比较可靠的。以目前汽车的行驶速度,还没有听说过CAN总线错误导致的大问题发生。至于干扰,汽车研发阶段是必须进行电磁实验的,对可预见的干扰也基本可以涵盖。在ESP系统中,方向盘转角信号放在驱动CAN总线,而车身的偏转率和侧向加速度这两个要求最高的信号一般是直接和ESP电脑相连的,并不放入车辆网络,这样做增加了可靠性。方向盘转角的影响因素很多,甚至轮胎气压高低的作用和转向机构的间隙影响力都会超过CAN总线延迟的几十毫秒,因此没有在这个问题上花费更高成本是有情可原的。至于博世公司的回复,我猜测有可能是他们和作者的实验条件不同造成的。对博世来说,时钟偏差,导线信号损失这样的问题可能早已不在考虑范围内,或者不是影响信号的主要因素,因此才会有以上的答复。
用户1666785 2013-6-5 09:57
用户1538441 2013-6-4 14:05
用户1130179 2013-6-4 11:20
用户1173460 2013-6-4 09:16