首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

CAN总线的功能安全问题3

CAN总线的功能安全问题3

图中队长度18的出现数比队长度17次的多,解释如下:虽然每个18队都要经过17队而下降,但是处于18队时仍可能增长到19队或更长,它们退下时又要经过18队状态。而在某时,由于同时就绪的消息多于2个,所以使队长度直接由小于17而跳到18,从而使18队的出现次数多于17队。
    于是,消极报错发送节点发生等效离线而进入真正离线的概率是P=BER×9×1.2×10-3 ,其中BER为误码率。这是一个乐观的估计。
    对消极报错接收节点,发生在帧内任一位的局部错均可能产生类似的情形,即消极报错帧分界符内遇到其他节点挂起待发帧的发送,造成再出错的情形。假定帧长为135位,那么其等效离线的概率是P=BER×1 35×1.2×10-3。

3 离线的时间
   
发生等效离线的节点不再能发送,所以应扣除消息源是该节点的那些帧。此时的分析方法可以参考CAN总线的传统调度分析方法,最坏的情况是最低优先级消息的送达时间。这样分析的结果与应用的具体配置有关,对每一个节点是不同的。
    假定挂起待发的消息有4字节数据,采用11位ID,平均填充位取8位,再加3位服务间隔,那么16帧导致的等效离线为16×(84+3)=1 392位,真正离线的时间为128帧,最坏情况为帧间有10位的空闲。所以真正离线将有128 x(84+3+10)=12 416位。二者相加,消极报错发送节点出错后会有总计13 808位的不能服务的时间,在500 kbps速率下,这相当于27.6 ms。如果采用29位ID,填充位也增加,帧长变为105位,此时消极报错发送节点出错后不能服务的时间将达34.5 ms。有的车采用250 kbps速率,那将有69 ms不能服务的时间。

4 2个隐患在应用上的影响
   
隐患实际发作时就表现为系统内的故障。
4.1 错帧漏检的影响
   
在单一接收节点的情况下,错帧传递的信息值域的变化很大,有些应用算法加有绝对值的限幅器,或者变化速度的限幅器,可以减少这一故障的危害性。但是这些措施有时是不可行的,或者以降低系统的动态性能为代价,显然是应用设计部门不希望的。
    在有多个接收节点的情况下,这一故障就造成数据完整性问题,例如在油门、离合器和刹车系统中油门的开度有不同的解释,系统就难以协调工作。
    在冗余系统中,如果没有表决机制,就可能收下错误的数据,就必须增加软件及时间资源来解决问题。
4.2 离线的影响
   
如上所述,消极报错发送节点出错后不能服务的时间将达34.5 ms,这在一些应用中是不能接受的,例如电子稳定控制系统(ESP)中,Bosch ESP8要求信号更新周期最小20 ms。消极报错接收节点出错后不能服务的时间较短,但是其发生的概率远大于消极报错发送节点出错后不能服务的概率(15倍),其影响尚未充分研究。
    车辆以100 km/h速度运行时,延迟34.5 ms开始刹车意味着已运动0.94 m,对驾驶员来说是不能接受的。2010年丰田公司Prius的刹车能量回收软件有0.06 s延迟,造成刹车距离长了0.6 m,进行了召回。
4.3 2个故障先后发生
   
应用收下了一个错误的数据,然后又发生了第二个故障,无法改正第一个错误,就非常危险。例如向内道运动时转向角是5°,但是由电动助力转向ECu发往ESP-ECU的帧被读错为30°,则ESP帮助实现30°转向,如ESP-ECU或电动助力转向ECU发生离线故障,34.5 ms内仍保留这30°的错误命令,就会冲向隔离带或对方车道。
    下面分析其概率:假定总线工作于500 kbps,总线负载率为40%,平均帧长为100位,那么每小时送7.2×106帧。笔者对参考文献作了新的修正,得到错帧漏检概率为Pud=1.67×10-7,仍比Bosch的(Pud=4.7×10-11)高几个数量级,与Tran的结果相近(Pud=1.3×10-7)。
如考虑通道错概率=0.001(它考虑了误码率的不均匀分布,例如每1000帧错1帧),那么可算出残差率为Pres=1.67×10-10。可算得第1个故障造成的失效率Pfailure1=1.2×10-3/h。当ber=0.001时第2个故障出现的概率P2nd=1×10-5,造成的失效率为Pfailure2=72/h。由此推断2个故障先后出现时的失效率Pfailure1+2=1.1×10-3/h。
    CAN总线已经使用于安全攸关的系统中,例如电子稳定控制系统(ESP)。按照道路车辆的功能安全国际标准ASIL-C的要求,系统的故障率应小于10-7/h。这包括许多可能失效的因素,例如传感器失效、CPU失效、接插件失效、电源失效等,甚至镙钉未拧紧。通信系统分配的份额一般为1%,即要求达到小于10-9/h。由表1可知,错帧漏检与离线的故障都达不到。即使在ESP中,因连续发生2种故障而产生失效的概率也相当大,只有在误码率小于10-4的情况下才能达到安全要求。实际的车内环境很差,有的车厂为了节省费用,对电磁干扰源头处理就不足,干扰可能引起较大的误码率。还有车外环境的影响,高压线、大功率电台、雷达站等附近的干扰就大。这都可能造成误码率大于10-4,使系统失效。

5 软件补丁方案实现难点
   
在参考文献中提出过添加额外的CRC检验来改善错帧漏检,对已有的应用难以执行。它要占用数据域,由应用软件生成和检验,这要耗费一定的时间,检验出错误后要另外发帧通知别的节点,以及要求重发。所有节点为取得一致性都得有计时器,大大延迟整个接收过程。出错重发的时间也大于原CAN总线的时间,破坏了原调度分析的结果,因此需要重新进行认证。
    已有的应用已经采用8字节数据的,就需要拆分成2帧。需要增加标识符,这要在接收节点增加或修改滤波的设置,还要增加合并机制。这都增加了软件工作及其正确性的验证工作,特别是涉及不同厂家的ECU时就更复杂了。
    对等效离线问题,除了修改消极报错帧分界符长度外,还可以用完全取消消极报错状态的方法:例如用市售CAN总线芯片出错计数器达到96时的中断,由应用决定如何修改工作模式。新的模式可以是认为通信已失效,便进入降额使用状态,同时复位通信,等一段时间再投入正
常运行。这种方案是将离线的时间变为常量,并让应用知道。它并没有减少离线的概率,只是可能减少一次离线的时间。
    这种方案的问题是,从开始降额到实现降额的过程并不安全(没有刹车,车并不立即降速)。另外,频繁地在正常/降额模式间切换会引起消费者的不安,失去对车可靠性的信任感,对车厂是极为不利的。
    由此可见,软件补丁的方案对现有车的改进极为有限。
    以上分析的CAN总线隐患完全是协议设计不周造成的,因此协议要改。把CAN总线的优点继承下来,物理层仍可沿用,线缆也不用改,甚至印刷版都不用改,用到安全攸关的场合仍可能是合适的。
返回列表