为什么ISO CAN FD依然达不到功能安全的要求 V1. 2020-8-1
杨福宇 email: yfy812@163.com
当你的控制系统作功能安全评估时,不可避开通信系统的安全指标。ISO CAN FD已经对CAN的错帧漏检作了较多的修补,例如○1更长的CRC多项式,可以把填充位也算进去,从而避免填充规则的不对称执行造成的收发位流的错位引起CRC计算中出现错误增多;○2引入了格雷码的填充位计数器及其奇偶校验位,格式校验位,以更多的校验来避免漏检。
但是这些措施依然有漏洞。这些漏洞造成的漏检率的数值分析异常冗长,这里仅把实例举出,让大家有个基本的了解。
第一个出错的现象是关键字的读错未能查出来:
在ISO CAN FD中有一位BRS用于切换位速率,如果这一位读错了,那么有可能发送接点以高速传送,而接收节点以低速读取。在一定条件下,他们最后又是对齐的,这就跳过了ISO CAN FD的补充检验。这是以前CAN没有的漏错场景,而且是只有一个错。
图1 BRS出错的收发的不同理解
图1中举了速度不同而对齐的情况,其中没有考虑增加填充位时传送对齐的例子,例如高速传送中加了填充位而低速读取时没遇到填充位规则的满足条件,或者反之,相信再花些力气总可以找到这样的例子,不过麻烦些。
以图1中2倍速为例,CRC域部份含22位CRC17及5位填充位计数器共27位,Rx碰巧读到的数据符合漏检概率为2-27(这已经比CAN的CRC15检验多了12位,即漏检率为原来的2-12=1/4096),2字节数据时,BRS出错概率为1/77。于是Pun BRS=2-31/77=6*10-12。
图2 BRS前面的关键字
BRS前面的关键字出错会简接影响到BRS的解释,所以也要把这种请况考虑进去。假定Tx发送CAN FD 的扩展帧,有Tx-BRS=1 和 Tx-IDE=1。接收SOF 晚1