TTP/C 脆弱的原因
这是TTP元老写的文章中复制的一部分关于容许的故障的内容,与本文讨论有关的三条是:一个Round只有一个错;只有前错不再影响时(那个节点或者已切除,或者已恢复)才能有新错;总线上只有全局错(在第3条讲错帧被所有节点视为正确帧就是全局错)而没有局部错。在这些规定(以及另一些规定)满足的条件下可以保证通信的可靠性。
http://www.hurray.isep.ipp.pt/activities/rtlia2002/full_papers/3_rtlia.pdf
3.2. Node Faults
As for the frequency of node faults, the fault hypothesis
of the protocol claims that
1. only one faulty node exists within the duration of a
TDMA round
2. a node may become faulty only after any previously
faulty node either has shut down or operates correctly
again.
With respect to the types of node faults, the TTP/C protocol
assumes that
3. a transmission fault is consistent (i.e., if a faulty node
broadcasts a frame on a correct channel, all receiving
nodes will consistently consider the respective frame
faulty or correct)
现在分析一下这些条件满足的可能性。
由于节点离干扰源的位置不同,节点的受干扰强度就会不同,就会有不同表现,有的节点没有错,有的节点收发中就出错了。例如有的节点处于很热、振动很大的地方,就会早老化;有的节点正好靠近电磁干扰强度大的干扰源处,发生干扰的对象屏蔽保护层损坏了保护功能下降,线圈的吸收回路器件性能的退化造成干扰幅度增大;又如接插件正好受潮、质量下降而弹性力下降使接触电阻增加;或者芯片、印刷版正好质量比别的差,有焊锡晶须生长而逐渐增加短路可能,等等。这样的事发生或由于所处位置不同,造成个别节点收发出错,而别人没有错,这种情况就是通信系统局部出错。干扰发生可能影响到信号传送的下游节点的采样、而可能影响不到信号传送的上游节点,因为上游节点已采过样了。在用光纤传送的场合,收发器部分仍然要用电子器件来实现,而电子器件也会受到来自电源的传导和辐射干扰,以及离子辐射。在CAN总线的设计中就考虑了产生局部错然后用报错帧方法得到全局一致性的措施。TTP/C没有类似措施而想当然地假设全局一致是没有根据的。
一个节点B出了错,例如它受到干扰,接收错了,按照TTP/C的规定,它就会在自己的组籍(membership)向量中把该发送节点A的那位标志为错,轮到该节点B发送时,这个标志有错的组籍向量被算到CRC中发送出去,节点C收到B的帧后与自己的组籍向量一起算CRC,就会认为B错了,这里还有一个复杂的反向判断逻辑,节点B要根据后面接收C,D中的对错来确定自己在组籍向量中的那位B是对还是错,并修正以前作出的对A的组籍的判断。Round结束再各自判断组籍向量中那些节点错了,以及自己错不错。这个反向判断逻辑要依靠一个Round只有一个错的假设,否则便会混乱。
那么一个Round只有一个错的假设是什么含义呢?TTP/C可以工作到25Mbit/s,假定实际使用于10Mbit/s,一个Round一般为数ms,假定为0.5ms。那么一个Round只有一个错的假设就是每0.5ms容许一个错,而0.5ms内TTP/C传送了5000bit,即误码率为1/5000=2*10-4。
现在分析每50000bit出现超过1个错这件事的概率,据有关资料,好的通信系统中物理层的误码率金属电缆为ber=10-9光纤系统为ber=10-11。
组合公式是n个不同元素中选m个元素的组合数是C(n,m)=n!/(m!*(n-m)!)。在本处误码可发生在5000个不同位置,假定出2个,3个…错,分析出现不满足TTP/C假设的概率,如果出现多错时的贡献较小就忽略不计。
出现2个错的概率=ber2=2-18,组合数C(50000,2)=1.2*107,所以不满足TTP/C假设的概率p2=1.2*10-11。
出现3个错的概率=ber3=2-27,组合数C(5000,3)=2.0*1011,所以不满足TTP/C假设的概率p3=2*10-16。可以忽略了。
虽然不满足TTP/C假设的概率不算大,但是以每小时来计算,TTP/C假设失效率就很大了,以0.5ms一个Round,每小时有3600*1000/5=7.2*106个Round,TTP/C假设失效率就是1.2*10-11*7.2*106=8.6*10-5/h。远远达不到功能安全的要求。
TTP/C的出现使人见到了时间触发带来得好处: 消息发送没有冲突,所以送达时间较固定,控制系统的性能就不会大变化,人可以预知什么时候会发生什么。所以受到重视,并被用到很多地方。你可以看到它还被用到美国的战斗机F-16中。据说,早年的F-16A/B没用电传数控,而自F-16C/D才用的是电传数控。下图可见F-16的发动机的数控用了TTP/C。
F-16的发动机一直是出问题的首要因素,有些是机械损坏,如叶片断裂,但也有其他的原因。这是今年出的事:一架以色列的F-16I发动机误动作自己关闭了,还不知道F-16I是否用了TTP/C,也不知道关闭的原因是什么,总觉得TTP/C也该查查。也许用一个电磁弹就可以叫F-16发动机停转?不知道台湾的决策者看到F-16C/D用到TTP/C,TTP/C又是脆弱的,会怎么想。
Engine failure causes Israeli F-16 to crash into Mediterranean Sea - UPI.com
http://www.upi.com/Top_News/World-News/2013/07/07/Two-parachute-to-safety-as-Israeli-F-16-crashes-into-sea/UPI-81401373221728/
用户1602177 2013-12-4 15:21