在汽车中采用电子系统已经有几十年的历史,它们使汽车安全、节能与环保方面的性能有大幅度的提高。随着研究的深入,许多系统需要共享和交换信息,为了节省线缆,就形成了依赖于通信的分布式嵌入系统。目前,世界上90%的都采用基于CAN总线的系统。FlexRay是下一代通信协议事实上的标准,它的功能安全性如何是至关重要的。
1 IEC61508功能安全的要求
目前车控系统正在向线控技术(xbywire)过渡,例如线控转向与线控刹车。线控系统最终目标是取消机械后备,因为取消这些后备可以降低成本,增强设计的灵活性,扩大适用范围,为以后新添功能创造条件。但是取消机械后备就对电子系统的可信赖性(dependability)要求大为提高。车是一个运动的物体,处于运动的环境之中,它因故障可能伤及自身及别人。取消机械后备,就将电子系统由今天的故障静默(failsilent)要求提升到故障仍工作(failoperational)的要求。
国际上对工业应用的功能安全要求已制定了标准IEC61508,它主要关心被控设备及其控制系统的安全。虽然它也适用于汽车,但汽车不仅有上述功能安全问题,而且要关心由于功能变化造成的整车系统安全,所以汽车业内正在制定相应的标准ISO26262。汽车的功能安全等级分为4级,要求最高的是 ASILD,相应的失效概率<10-8/h,它相当于IEC61508的SIL3。根据实践经验,分配给通信的失效概率<10-10/h。有关这方面的介绍可参见参考文献。
现在安全攸关的应用系统的范围有所扩大,以前不算在内的一些系统现在都要算了。例如安全预先动作系统(presafe)中座椅调整子系统、刹车辅助系统中的灯光控制子系统、碰撞后telematic自动呼叫求援的子系统,都将视为安全攸关系统。
1.1 引起系统安全风险的通信故障
通信故障有5种表现形式,第1种是造成值域的错误。第2种是造成时域的错误,这是工业不同于民用的部分。一条消息不能在预定的时限前送达就失去了实用意义,例如与安全气囊引爆有关的传感器消息不能在数ms内送达就引起安全问题。在多播或广播通信中还有第3种错误:数据完整性错(拜占庭错),即各节点收到的结果不一致。它会引起系统性的失效,应对的策略必须将所有有关节点同时考虑。第4种是系统崩溃,除硬件失效外,也有干扰或软件引起的,例如饶舌错(babbling idiot)阻止通信。第5种是丢帧,短时间失效,例如可恢复的离线或bug引起的等效离线状态,又如小集团错。
1.2 通信的容许失效率
在通信故障对系统安全影响的分析上,参考文献提供了一种方法,根据瞬态干扰出现的可能长度,计算通信失效的时段长,在假定的通信失效率下,推出系统的失效率。在该实例中,路段上电场超100 V/m的区间有可能引起通信失效,失效率近似5×10-3,车速为90 km/h,识别出的可能失效时间约74 s。通信以6 ms为周期,连续7个周期丢帧视为系统失效,在此条件下系统失效率为1.640 9×10-10,认为可以达到SIL4的安全要求。这种分析方法是有效的,但是假设的条件太多,例如:误码率有很大的变化区间;帧长的变化影响一次传送的失效率;干扰持续时间的假定;连续丢7帧也与应用的场合有关,对90 km/h的车42 ms的失控对刹车系统而言有约1 m的距离,恐怕对撞击的后果有完全不同的评估;还假设SIL4完全分配给通信,将CPU与软件有关的部分失效率忽略不计,在软件规模越来越大的今天,这个假设是不合理的。另一方面,决定系统失效率时还应考虑其他的通信故障形式,例如出现小集团错到发生冲突的时间取决于相对的时钟漂移,越精确,其间时间越长,失效的时间就越长,参考文献中在人为制造出小集团后需300 ms才发现冲突,远远超出上述的42 ms。所以一般讨论系统安全的文章中都单独规定通信的失效率是相应安全等级失效率的1/100。
1.3 影响通信失效率的因素
功能安全等级与故障检测的覆盖率有关,如果有的故障未被检查到(未认识到或做不到),当然那种失效情景就不可能计算在内,安全等级的划分就有错。
参考文献介绍了SFF(Safety Failure Fraction)的概念:失效分为引起危害的失效和安全失效,它们又各分为能检测出和未检测出两种。安全失效比例SFF是能检测出危害失效与安全失效在总的失效中的份额。诊断覆盖率DC(Diagnostic Coverage)是能检测出的危害失效占总危害失效的份额。可导出SFF与DC有线性关系。而SFF又与SIL有关。IEC61508的SIL等级与 SFF有关,在SFF占90%~99%时SIL3可容许1个故障。因此DC也决定了能达到的SIL等级。根据有关文章介绍,瞬态故障的概率比硬件失效概率大2个数量级,因此可大致推断瞬态故障诊断覆盖率应达到90%~99%。危害失效可能由通信失效引起,诊断覆盖率也就成了评价通信协议的重要一环。
在通信中,由于CRC有漏检,这是明显的诊断未覆盖区,诊断未覆盖率就相当于错帧漏检率,例如CAN的错帧漏检。
在通信中发生值域错或时域错而丢帧是能诊断出的危害失效(这是本文分析的主要对象)。而假冒错、拜占庭错等应属于未检测出的危害失效。发生小集团错时既可能产生丢帧,也可能产生拜占庭错。CAN的等效离线失效也属于未覆盖的诊断引起的危害失效。要计算这些未覆盖的诊断引起的危害失效占总危害失效的比例还相当困难,因为确定故障概率模型很难。但从定性上讲,只有尽量排除假冒错、拜占庭错和小集团错,才能使诊断覆盖率提高(SIL等级提高)。
2 FlexRay介绍
由于线控技术可以提高车的操控性能,降低生产和使用成本,提升安全性、节能、环保和舒适度,成为整车技术进步的重要一环。但是为了取消机械或液压的后备,对控制装置及其通信的可靠性的要求大为提高。这就对通信的带宽和确定性有更严的要求,CAN总线不能满足这个带宽要求,在确定性上也不足,于是就产生了 FlexRay技术。根据标准,FlexRay可以有总线、星型、树状等拓扑结构。它提供了双通道的控制器结构,可组态为冗余通信,也可各通道独立运行,有很大的灵活性。每个通道最高可组态工作于10 Mb/s。FlexRay是时间触发通信协议,由分布式时钟实现同步。系统的调度表由cycle\\static slot\\minislot确定。一个cycle有固定数目的static slot和minislot,它们的时间长度都是均等的,由组态时确定。一个节点在一个cycle中可以占用多个static slot,static slot可以散接(multiplxing),即各个cycle的同一static slot可以用于不同节点。FlexRay帧的数据域(payload)可达254字节,它的头部为标识符及帧长等控制信息,有独立的CRC检验,尾部有覆盖全帧的24位CRC检验。FlexRay有对抗时域错的Bus Guardian设计。
关于FlexRay的缺点或弱点,参考文献提到物理层连接的困难,影响到信号完整性,实际上能较易使用的是有源星型,但这带来成本的提高;cycle设计约束多,带来困难;同步和启动节点配置与容错有关,是挑战;由于资源有限,升级演进时很困难(并非像以前强调时间触发协议的 composability优点——笔者注)。参考文献介绍了在FlexRay中产生各自独立的时钟同步小集团的可能性,也就是说虽然各节点都在通信,但是2个集团间无有效通信,是一种故障状态。解决办法是用3个冷启动节点、3个同步节点,但是这与时间同步容错的要求矛盾。还有就是将调度表排满,以免形成小集团,这也与留有余地供将来升级扩充的要求矛盾。总之尚无彻底解决方案。再有就是时钟可能产生同向漂移,与应用时钟的差造成帧未能就绪或覆盖引起漏帧。FlexRay虽然是为高可信性设计的,但是在传送中出错后处理要通过应用层解决,这带来新的问题,本文将分析如果不作处理会怎么样。
3 Audi和BMW的FlexRay总线应用的功能安全等级
BMW和Audi是首批批量使用FlexRay总线的车厂,它们的具体用法尚未查到,但是参考文献给出了部分使用参数,可以以此作一些初步分析。
3.1 Audi的参数
Audi的cycle为5 ms,每个cycle有62个static slot,slot用于传送42字节payload的帧,静态段为4.03 ms。有8个ECU共传送220个协议数据单元(PDU)。这些PDU经组合,最后在27个slot中传送。由提供的周期分布可见5 ms消息为8个,10 ms消息为1个,20 ms消息为7个,40 ms消息为6个,其余更长周期的消息先忽略。
由payload可以算出使用的帧长为500位,假定误码率为ber=1×10-7(这在铜线中已是相当好的了),那么误帧率为fer=5×10-5/frame。
由周期可算出每小时传送的帧数为n=7.92×105frame/h。假定通信用2个通道同时传送,那么同时失败的概率为fer2=2.5×10-9/frame。1小时内所有帧均成功传送的概率为:P=(1-fer2)n。
1小时内有1次以上错的概率为1-P≈fer2×n=2.5×10-9×7.92×105/h=1.98×10-3/h。SIL2的安全等级要求是系统失效概率为10-7/h,分配到通信上为10-9/h,由此可见存在巨大的差距。
3.2 BMW的参数
参考文献[7]也间接给出了BMW的参数:cycle为5 ms,每个cycle有91个static slot,slot用于传送16字节payload的帧,实际使用的payload为8字节,共有227个PDU。由2.5 ms消息占4%及使用10个slot知,这些PDU没有合并。由提供的周期分布可见5 ms消息为62个,10 ms消息为45个,20 ms消息为80个,40 ms消息为38个,其余更长周期的消息先忽略。
各个消息的payload长度是不同的,由这个分布,在假设误码率为ber=1×10-7时可以算出各自帧长与误帧率,再算出平均误帧率 fer=1.51×10-5/frame。假定通信用2个通道同时传送,那么同时失败的概率为fer2=2?28×10-9/frame。由周期算出传送帧数为n=2.79×106/h。同样算出1小时内有1次以上错的概率为1-P≈fer2×n=2.28×10-9×2.79×106 /h=6.36×10-3/h,也远大于SIL2分配给通信的要求。
4 主动重发方案的可行性
有2位作者建议了主动重发的方案,其一见参考文献。主动重发在概念上就是时间上的冗余,帧不但在不同的物理通道上重发,也在不同的时段上重发。由此来分析第3节的两种情况。
4.1 Audi
当每帧被安排用2个static slot传送时,2个通道将有4次传送,同时失败的概率将小得多,为fer4=6.25×10-17/frame。实际传送的帧数加倍,但内容未加倍,故计算仍按n进行,1 h内有1次以上错的概率为1-P≈fer4×n=6.25×10-17×7.92×105/h=4.95×10-11/h。这可以满足SIL2分配给通信的要求。
理论上,原来的应用占用了27/62的static slot,现在加倍为27/31也还够用,但是由于消息送达时限的限制,将使调度变得十分困难,是否有解尚无定论。留给将来扩展升级的空间很小,已经表现出FlexRay的带宽不够。
4.2 BMW
采用主动重发一次时,1 h内有1次以上错的概率为1-P≈fer4×n=5.19×10-18×2.79×106/h=1.45×10-11/h。这可以满足SIL2分配给通信的要求。
但是,原来BMW已占用了2/3的static slot,根本没有足够的空余slot可供主动重发。例如BMW的静态段为3 ms,在2.5~3 ms中总共可安排0.5/3×91=15个slot,它的2.5 ms的消息已占去10个slot,就不可能对它再作冗余传送。这也说明FlexRay的带宽不够。
5 与CAN总线的比较
参考文献中的BMW系统数据,若用CAN标准帧传送,可推算出需要的带宽至少为2.8 Mb/s,明显显示CAN总线带宽不足。但是CAN总线的出错自动重发机制却使系统的通信可靠性远胜于FlexRay。
例如在ber=1×10-7时,CAN总线帧长为108位,误帧率为fer=1.08×10-5/frame。在传送帧数为n=2.79×106/h时(假定用多条总线满足带宽)出错的帧有31帧,这31帧重发2次,则全错的概率为31×fer3=31×1?26×10-15=3.9×10-14,远小于SIL2分配给通信的份额。
而且,如果原来的调度分析留有足够2帧的出错自动重发时间,也可以算出对送达时间的影响不大。送达时间变化大的是低优先级消息,对高优先级消息影响很小。例如10条2.5 ms周期消息的送达时间约1.2 ms(考虑到填充位与服务间隔),在2.5 ms内1条消息出错自动重发2次也只会使送达时间增加到1.5 ms左右。
CAN总线的出错自动重发机制与主动重发方案相比,需要增加的带宽很小,几乎是后者的万分之一。
6 FlexRay总线的错帧漏检
参考文献对CRC的检验强度有讨论。在假定错均匀分布时,2-k是未检出错的上界,其中k是校验和长度,对FlexRay来讲k=24,2-24=5.9×10-8。如果位错不相关,概率强度还要乘上(ber×帧长)HD,其中HD是CRC多项式的海明距离。以1 h计算时要乘1 h内的帧数。按标准,在payload小于248字节时HD=6。按此计算如下:帧长=256字节=2 560 bit,考虑到idle时间,计算每小时帧数时以每帧2 600 μs计,故每小时有3 600/260×106=1.38×107帧。每小时总的漏检帧为1.38×107×5.9×10-8×(ber×2 560)6=0.81×(ber×2 560)6。ber=10-7时为2.27×10-22,ber=10-5时为2.27×10-10。干扰不是很强,帧也较短时,FlexRay的错帧漏检部分还是能满足SIL2分配给通信的要求。
7 小结
计算表明,在ber=1×10-7时FlexRay通信的功能安全等级还离要求很远,另外还有小集团错、时钟漂移等问题。此外,由于FlexRay没有 CAN总线那样简洁高效的报错机制,如果没有主动重发方案,那么接收节点间由于局部错引起的拜占庭错造成的失效概率增加。由此看来,FlexRay要完全实现其设计目标还有不少工作要做。更长远来看,需要在用工业以太网实现100 Mb/s速度的同时解决FlexRay现存的问题。
本文分析讨论的方法也适用于其他现场总线或工业以太网,许多协议都是基于类似FlexRay的时间触发方式,它们的安全性倚赖于高层“安全协议”。这些基于“黑通道(black channel)”的“安全协议(safety protocol)”一般按照欧洲标准EN501592添加了一些判错的措施,如对重复、丢帧、加插、次序错、数据错、延迟和假冒错采用加流水号、时间戳、定时器、标识符、地址、附加签名等方法。另一些安全协议仅仅考虑了硬件链路故障与恢复,只是通信故障的一种形式。但是这些措施依然是不够的,没有覆盖故障树的所有分支。对于其他形式,例如出现局部错后的拜占庭失效、出现饶舌错后的停止服务、出现小集团错后的局部停止服务等,均未处理。有些错可以在应用中发现,但受应用所在的host的时间特性的限制,可能已错失时限,无法纠正错误。在通信层面,它们严重影响到诊断覆盖率,也直接影响到SIL等级。即使在流程工业,消息的周期较长,用主动重发方案可以使出错结果减少(现在的一些应用恐怕还没有这样做),有些错(如拜占庭错)依然是不可承受的,特别是涉及一些逻辑信号的传送。
评论
查看更多