国家兴亡匹夫有责,从神九用到CAN总线讲起(13)早先已发现的错
这是国外学者早先发现的错,我在这里炒冷饭是有三个道理:1。在中国的许多书籍里没有介绍这个内容,学生根本没学到;2。在新的CAN FD协议里仍然没有处理;3。对TTCAN有很坏的影响,虽然TTCAN已经是国际标准,貌似成熟度很高。我们如果不了解,就不会注意到它对系统可靠性的关联。
在ISO11898-1:2003(E) 第10.7章规定发送节点查错查到EOF最后一位,接收节点查错查到EOF最后第二位,二者是不同的。因此接收节点若在EOF最后第二位发生局部错,接收节点之间就会产生不一致,一部分接收节点认为无错而收下了帧,一部分接收节点认为有错而拒收该帧。
以前学者的分析就指出,认为有错的接收节点会在EOF7开始发报错帧,如果发送节点没坏,发送接点查到错后就重发该帧,引起认为无错的那部分接收节收了二次。如果发送节点坏了,认为有错的那部分接收节点就永远收不到该帧。他们提出了各种解决方案,当然各方案会有代价。因为发送接点坏的概率小,所以只要防止重复就可以解决问题。防止重复有二种主要的结论,一是采用绝对值而不是增量传送,这样重复了也不怕;二是在帧中添加流水号,例如一位流水号的Toggle bit,发生重复时可以区别,在应用上不作重复计算。
下面是错误发现者论文中摘录的部分,其中IMD为不一致重复,IMO为不一致丢失。这是对32个节点,位速1Mbp,总线负载率90%,平均帧长110bit的系统的计算结果。
J. Rufino, P. Veríssimo, G. Arroz, C. Almeida and L. Rodrigues, “Fault-tolerant broadcasts in CAN”, Digest of papers, The 28th IEEE International Symposium on Fault-Tolerant Computing, 1998.
在TTCAN中出错自动重发的功能被取消,所以不一致接收的错会很多。所有在EOF最后第二位发生的局部错都会引起不一致错,即ber=10-4时2.84*103。
但是,在我发现的等效离线状态与发送节点有可能进入离线而长时间不能提供服务后,发送节点坏的概率就不再是原先估计的那样小。所以不一致接收的可能性大为增加,用绝对值传送和加流水号的办法对此是没有用的。
接收节点不一致错会有什么后果?
分散控制系统的趋势之一是信息的共享:一条信息可被不同的系统共享。例如刹车踏板的开度会被4个轮子的控制器利用(简化的讲法),也会被油门利用,需要刹车时,理应不加油。如果不一致,刹车时没减油,就会弱化刹车效果;或者没刹车时油也不加,动力就减弱。又如对4轮各有刹车执行单元的方案,如果有一个轮子与其他轮子不一致,车就会转向。
用户1625273 2013-7-2 14:53
用户1602177 2013-6-14 15:27
用户1416824 2009-5-20 16:14