杨福宇老师多年研究CAN总线在汽车中的应用,文章非常有实用价值,为了方便汽车行业的工程师关注杨老师的研究成果,本公众号特别开设了《杨福宇专栏》,敬请期待更多精彩内容。杨老师邮箱:yfy812@163.com,欢迎交流探讨!
当你的控制系统作功能安全评估时,不可避开通信系统的安全指标。ISO CAN FD已经对CAN的错帧漏检作了较多的修补,例如:更长的CRC多项式,可以把填充位也算进去,从而避免填充规则的不对称执行造成的收发位流的错位引起CRC计算中出现错误增多;引入了格雷码的填充位计数器及其奇偶校验位、格式校验位,以更多的校验来避免漏检。
但是这些措施依然有漏洞。这些漏洞造成的漏检率的数值分析异常冗长,这里仅把实例举出,让大家有一个基本的了解。
第一个出错的现象是关键字的读错未能查出来
在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。