CAN协议错误帧漏检率的推导和改进过程介绍
当数据在传输过程中出错并且错过了错误帧时,这意味着将错误的数据发送到应用程序层。
除非应用层采取其他数据识别措施,否则此数据可能会导致不可预测的结果。
CAN协议声称具有非常低的错误帧遗漏检测率(4.7& TImes; 10-11& TImes;错误率),并且某些促销材料在某些条件下被发射后将仅在1,000年内被遗漏一次。
这是不正确的。
错误帧漏检率是一个非常重要的指标。
许多应用程序只有在参阅Bosch CAN2.0规范上的说明后才选择CAN。
但是,关于该指标来源的公共信息很少,讨论也很少,这使用户难以确认或验证它,这给用户带来了风险。
本文采用了重建错误和漏检示例的方法,并得出了CAN漏误帧概率的下限,该下限比CAN声明的要大几个数量级。
在许多应用中,在可靠性和价格之间取得平衡,CAN一直是最佳选择,或者已经生产和使用了很长时间。
面对这个新发现的问题,在改进CAN本身之前,先进行“补丁”处理。
迫切需要。
& rdquo;改善它。
由于篇幅所限,我们只能总结错误帧漏检率的推导过程,并重点提供解决方案。
1关于CAN遗漏错误检测帧的概率的文献讨论Bosch CAN2.0规范说,其遗漏错误帧概率小于错误帧率(消息错误率)& TImes; 4.7& TImes; 10- 11。
请参阅参考资料以获取其来源,该文献未提供产生漏检的分析算法,仅提及了通过大量模拟获得的公式。
为了判断错误发生后是否会丢失帧,必须至少计算两次CRC。
对于每一位,仅汇编语言也需要几条指令。
通过使用本文中考虑的80-90位帧,CRC可以覆盖58-66位。
这需要58到66个周期。
对于1989年常用的PDP11或VAX机器,机器指令花费约0.1μs,而判断帧花费0.07ms。
即使一年不停止,也可以考虑使用58位可以构成258 = 2.88×1017个不同的帧,再加上58×57个加2的不同组合,就可以做2.20×1011帧。
位错误位置,因此可以完成的仿真只是可能情况的一小部分(万分之100)。
由于样本太小,因此归纳公式很难完全考虑影响因素。
1999年,Tran还对错误帧的漏检率进行了研究。
鉴于分析的困难,他还采用了大量的计算机模拟方法。
对于11位ID和8字节数据帧,他使用了600 MB Alpha服务器。
与上面的讨论一样,尽管仿真量很大,但仍只是可能性的很小一部分。
另一个与CAN相关的标准CANopen草案标准304(2005)给出了错误帧漏检率(7.2×10-9)。
同样,来自CAN自动化协会的不同数据也使人们感到不舒服。
2新错误帧遗漏检测率的推导本文的研究方法是构造一个遗漏检测实例,确定这种实例占据一个可能帧的概率,再乘以对应于该实例的多个误码的概率,然后计算所有可能的示例,得到错误帧错过CAN的检测率。
本文分析了最有可能导致漏检的两个位错,然后将其扩展为多个位错。
数据字段占用8个字节,并且假定所有错误都发生在数据字段中。
当超出CRC校验功能时,它没有考虑分散的多位错误漏检率,因此它获得的是漏错帧概率的下限。
2.1 CAN位填充错误时的位序列错位当位流中可能产生填充的位错误时,可能仅导致发送方和接收方之一实施填充规则,从而导致理解上的混乱填充位和信息位。
图1(a)显示了第三位传输中的错误。
结果,发送方的填充位1被接收方误读为数据1。
整个接收到的数据比发送的数据长1位。
图1(b)的第三位传输中的错误导致接收器产生删除填充位的条件,因此接收器删除了发送的数据1和接收的数据流w