微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > CAN优先级倒置原因与对策分析

CAN优先级倒置原因与对策分析

时间:01-15 来源:3721RD 点击:

4毛刺造成优先级倒置

4.1 总线空闲时毛刺引起的倒置

总线空闲时,局部错的0毛刺被Tq采样到,发送节点就会按ISO 16845 7.7.2规定实行硬同步,然后就要按ISO 16845 7.7.9款确定是别的节点发送的SOF还是毛刺。如果节点H在毛刺后Tq有发送请求ReqH(如图2所示),它也必须等待Tprop+Ph1以确定总线是否空闲。另一个节点L如有发送ReqL,其到H的传送延迟为τ,只要它能在H的硬同步后的采样点采到,H就不再有发送机会。此时H、L请求的时间差为Tprop+Ph1-τ。如果2个节点靠得很近,τ≈0,那么H甚至无法与比它迟Tprop+Ph1的L竞争。同时它也无法与比它早τ-1的其他节点的发送相竞争。针对第1节中所讲的"同时"情况,它已完全无法参与竞争。


图2 总线空闲时毛刺引起优先级倒置


图3 估计倒置的概率用图


图4 在I.M.3中的毛刺引起优先级倒置

现在对出现优先级倒置的概率作初步分析。估计倒置的概率用图如图3所示。tG为毛刺发生时刻,tH为高优先级消息请求时刻,tL为低优先级消息请求时刻。如果tH发生在tG之后、该位的采样点前,tL也在采样点前到达,那么tH的请求将无法获得参与竞争的机会。这件事的概率为Pa。Pa与误码率有关,毛刺被采到会有误码。假定位时间为1 μs,毛刺宽度为0.2 μs,采到机会便是20%,也就是说毛刺概率在1位时间内为误码率的5倍,考虑到毛刺有0毛刺与1毛刺2种,只有0毛刺会引起假的硬同步,再考虑到考察的时段为Tprop+Ph1,而不是1位,所以保守估计Pa为误码率的2倍。但是Pa不是因毛刺而引起倒置的概率,其中还包括了tL请求确实早于tH请求τ的部分,这部分用Pb表示。Pb=(tH-tG-τ)/(tH-tG),当(tH-tG)=τ时扣除部分Pb=0。所以最坏情况下没有扣除,优先级消息倒置的概率近似为误码率的2倍。

4.2 I.M.3内毛刺引起的倒置

在上一帧认可位(ACK)"0"的重同步下,H、L两个节点的位时间会有相位差τ,L超前时τ的大小对分析并无影响。当节点H、L均有挂起待发的消息时,按ISO 118981 10.4.2.2规定,它们应在I.M.3后一位开始发SOF,并进行竞争。若H节点由于局部错,在I.M.3位值采样点前有毛刺,按ISO 16845 8.7.2款,H将作硬同步,位值采样点的移动使它可以见到L所发的SOF(如图4所示),其条件是e>Ph2。由于在I.M.3内读到SOF,H将在下一位开始发它的IDH最高位。假定H的IDH="01***",L的IDL="10***",H的ID11H=0经τ后传到L,与L的SOF部分重合,并延续到L的ID10L位,当毛刺发生的e满足NBT-(2τ+e)>Ph2时,L不会采到H的ID11H,所以它不会退出。位时间设计时NBT=SYNC+Tprop+Ph1+Ph2,Tprop≥2τ,故上式在e<SYNC+Tprop-2τ+Ph1时能满足,即0<e-Ph2<SYNC+Tprop-2τ+Ph1-Ph2。一般Ph1=Ph2,或者Ph1=Ph2+1,当节点靠得较近时τ比较小,e有较大的范围可同时满足该式。而L发的ID10L=0经τ后到达H,当e>Ph2时成为H的ID10H中的同步沿,并被H采样到,H便仲裁失败退出,形成优先级倒置。

此种倒置的概率的估计比较复杂,需要进一步研究。

5 解决方案

5.1 总线空闲时的硬同步抗毛刺措施

接收节点在总线空闲时检查到1/0跳变沿就作硬同步,然后再每Tq继续采样。如在位值采样点前发现有1,则认为总线恢复到空闲状态。如其间已有本节点的发送请求,就在查到1的下一Tq开始本节点的发送。这样,本节点的发送被推迟了毛刺宽度对应的时间,但是也确保本节点发送前没有其他节点已开始传送,所以不会有优先级倒置。

这种方法没有解决毛刺较宽、一直延续到别的节点的SOF到达的情况。此时本节点仍然因无发送而出现优先级倒置。

5.2 I.M.3内硬同步抗毛刺措施

I.M.3内位值采样点前出现毛刺引起硬同步,本节点也继续采样总线。有"1"时后继判断比较困难,因为硬同步后再遇到"0"的时刻不确定,可能是别的节点发的SOF在原I.M.3位值采样点前收到,也可能在I.M.3原位值采样点后收到,还可能又是毛刺。所以,为处理简化起见,有挂起待发帧的本节点发送超载帧。通过报超载,超载帧结束后总线回到空闲状态,重新实现同步。

这种方法也没有解决毛刺较宽、一直延续到别的节点的SOF到达的情况。此时本节点仍然因无发送而出现优先级倒置。

6 小结

毛刺滤除和帧开始时刻的硬同步是为保障通信正常的两个不同侧面的要求,在现有CAN总线协议的设计中出现了冲突,造成在某种特定情境下出现优先级倒置。由于毛刺引起优先级倒置的危害性与具体应用的种类有关,一般地说,系统设计时已尽量防止毛刺的干扰,毛刺发生的概率已比较小,发生在特定位置就更小。

在优先级倒置的情况下,可能下一次竞争就不会发生倒置,做最坏送达时间分析时[6],可以将低优先级的阻断加倍来加以分析。

但是也可能在下一次竞争时仍发生倒置。在车辆安全认证分析时,需要确定倒置引起的的每小时的故障率,这使分析需要引入误码率的假设,需要进一步的工作。

本文提出了在完全兼容CAN总线的条件下的改进方案,但方案只是局部有效,根本的改进可能无法达到完全兼容。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top