原创 国家兴亡匹夫有责,从神九用到CAN总线讲起(11) 细节决定成败

2013-5-20 09:53 1951 17 28 分类: 消费电子

国家兴亡匹夫有责,从神九用到CAN总线讲起(11 细节决定成败

 

CAN总线的另一个重要隐患是由于协议的缺陷而不必要的停止服务。通信要保证随时提供服务,用可信赖性的属性来说,这是属于可用性(availability)的指标。CAN在什么时候不能提供服务呢?从宽一点的角度来讲,不能及时提供服务也属于此类问题。例如低优先级的消息长时间被高优先级消息所阻断,不能发送。这就引起人们在调度策略上的研究,提出各种解决方案。另一类原因是物理上有损伤,硬件已无法工作,此类问题往往用物理拓扑来解决。第三类原因是受到电磁干扰,频繁出错,通信没有了质量,所以不能服务。这往往用提高防干扰措施解决。第四类原因是协议有缺陷,在特定情况下偶尔的电磁干扰也会停止服务,扩大了电磁干扰影响的后果,我要说的问题就属于第四类。

 

CAN是远比RS485等先进的总线,它不仅有物理层、数据链路层,还有建筑在它上面的容错管理机制,它把节点的健康状态分为三种,第一种是正常工作的状态,在CAN规范中称为主动报错的状态(error active,节点在这种状态时发现收发有错,就会发主动报错帧(active error frame),通知别的节点,以便保证所有节点的一致性(要么大家都收下“正确“的帧,要么大家都不收这个帧,这里“正确”打引号就是因为前面所讨论的有错帧漏检)。第二种是带病工作的状态,在CAN规范中称为消极报错的状态(error passive,节点在这种状态时发现收发有错,就会发报错帧(passive error frame),只有消极报错的状态的发送节点才能通知别的节点,保证所有节点的一致性。第三种状态称为离线(bus off,离线时节点还在听总线上的通信,但是没有一般意义上的收发过程。报错是纠错的前提,有些协议需要更高层次的报错纠错机制,他们会大大增加实现的难度,大大延迟了实现所需的时间,所以无法与CAN相比。

这三种状态可以根据通信中出错的次数而转换,每个节点有二个出错计数器,用于保存通信收发过程中出错/成功的情况,当计数值小于128时为主动报错状态,任一计数器等于或超过128时变为消极报错状态,接收错计数器超128后被限值,不再增加上去,而发送错计数器超255后节点进入离线状态。离线后,节点听到总线上有128次连续的111,就可恢复到主动报错状态。是不是自动恢复由芯片设计者决定,一种是自动恢复,一种是必须有host的干预。出错计数器增减详细数值与规则在讨论用到时候再提及。

以前我对此进行过讨论,中文见:杨福宇,CAN总线中的一种安全隐患“,《单片机与嵌入式系统应用》,2009,  No.1p.20-22 , 杨福宇,CAN消极报错发送节点变为离线状态的故障“,《单片机与嵌入式系统应用》,2009,  No.5p18-20

在这里我把要重点再提一下:

1。处于消极报错状态的节点发送的消极报错帧不能保证与其它节点的收发同步结束,由于新帧出现在消极报错帧分界符内,SOF破坏了分界符的格式,引起新的错;

2。只要不断有挂起待发的新帧存在,这个节点就在不断地出错,当然无法收发,这是一种表面上在工作而实际上不工作的等效离线状态。

3。等效离线的时间长度取决于挂起待发消息的多少,而挂起待发消息取决于总线的调度算法,在普通事件触发方式时由于没有时间同步,而且节点间时钟的制造误差,会周期性地出现挂起队列的高峰,即周期性地形成长的挂起队列,使等效离线的时间很长。

4。更有甚者,发送节点在这种连续的出错情况下会进入真离线状态,它的恢复期也是真离线时间。二者相加使节点停止服务的时间可达到数十毫秒。

 

因为一般介绍CAN的书籍是为设计服务的,没有提到标准中有消极报错帧分界符内的格式检查;因为这是多种规定冲突的结果;因为它是调度有关的结果,所以为了让大家了解来龙去脉,我将详细列举各证据

 

1是消极报错帧的格式,它的消极报错标志(passive error flag)由6个连续的1开始,在CAN总线上1总可以被0改写,所以它读回时并不一定是1,要等到读回6个连续的相同位才算报错标志发送结束。这是它在等有没有别的节点发报错帧,如果别的节点也发,那么或者是主动报错帧(报错标志为60),或者也是消极报错帧,如果这样,它们的报错帧分界符(error delimiter)是一样长的,它们在帧开始时间上是同步的。如果是局部错,那么它会等到正常帧的Ack分界符和EOF部分,它的消极报错帧分界符就会超出帧间间隔(inter frame space)中的服务间隔部分(inter missionI.M3位),正是这里,埋下了不断错的可能性。

 

20130520095038155001.gif

1 消极报错帧

 

2是消极报错发送节点在ACK 位有局部错而发消极报错帧,它被其他接收节点理解为EOFI.M。其它节点在I.M后开始的新帧开始符SOF=0将落在该消极报错帧的分界符内。图3是消极报错发送节点在EOF内有局部错而发消极报错帧,它的报错标志无法在这里被确认,要等到新帧的Ack分界符后才能被确认,如图2那样,它的分界符内会有更新的帧的SOF,从而不断错下去。20130520095038613002.gif2. 消极报错发送节点在ACK 位有局部错而发消极报错帧

20130520095038453003.gif3消极报错发送节点在EOF内有局部错而发消极报错帧

 

消极报错帧分界符内的错是一种格式错,国际标准 ISO 16845:2004(E) 8.5.13项有规定(这是对发送节点的规定,也有对接收节点的规定见7.5.6项):“(本试验)的目的是验证作为发送节点的消极报错状态的被测试单元在分界符内观察到损坏而检测出格式错。“

 

20130520095038925004.gif

国际标准 ISO 11898:2003(E) 10.8.3规定了总线空闲的定义,即3I.M没发现显位。10.8.4项规定了只要总线一空,主动报错节点有发送就可发送,所以不会等待任何发消极报错帧的节点结束其发送,因为它们根本不知道有发消极报错帧的节点存在。20130520095039984005.jpg

国际标准ISO 11898-1:2003(E) 4.18项对发送节点有定义,这个定义很重要,它决定了连续错时它就见不到总线空闲,就一直归类于发送节点,它每次错都要增加发送错计数器,而把这个节点一直推到离线状态。

 

20130520095040109006.gif

根据 ISO 16845:2004(E) 8.6.9项,发送节点不断错时就一直加8,所以从128255只要有连续16个待发的帧就会使发送节点进入真正离线。

:

20130520095040250007.gif

ISO 11898-1:2003(E) 13.1.4.4项规定了由离线恢复的时间,在此规定下,如果128次的发送平均每帧为100位,帧间的空闲为10位,那么恢复的时间约128*100+3+10=14464位。

20130520095040351008.gif

16次等效离线占用的时间是16*100+3=1648位。这样,处于消极报错状态的发送节点由于一次本地的局部错,可能产生16112位的不能服务的时间(即失效时间)。对500kbpsCAN系统,每位2us,所以有32.2ms的失效时间。如果采用29位的标识符,例如常见的用J1939协议时,同样的数据域,由于id增加18位,填充位增加4位,每帧增加22位,总的失效时间将是16112+128+16*22=19280=38.4ms。像PSA厂的车用250kbpsCAN,这个失效时间将达到76.8ms

 

你能容许这样长的失效时间吗?特别是在发生错帧漏检之后还不能及时用正确帧去纠正吗?

文章评论11条评论)

登录后参与讨论

用户1406868 2016-2-1 12:01

坚哥!你系咪得闲过头噢!?

自做自受 2016-1-29 21:11

今天,到超市有买回来10个60瓦的白炽灯。总计39元。
我在这家超市看到了飞利浦的一个环形日光灯,估计可以替换我那两个欧普的灯座上。
22瓦,25元/个,MTBF值7000小时,说保用4年。挺正规的产品!
可者60瓦飞利浦的白炽灯,对其质量一样有信心,而我的阳台不是常用照明的,相信可以用5年,5x5,25年啊!不到20元,值!节能又环保!舒心利健康!
 
img_0009.jpg

 

自做自受 2016-1-29 01:10

所以,人类做不到环保!反倒是人坏了,自然降解可以是100%哦!制造智人的人(我们称之为神)看来是最大程度地做到了环保,可是最终根本是做不到的,简言之,神研发制造的智人给了其追求长命的质量指标而使其无节制地过度消耗自然资源.....最终是自身没有了适宜生存的环境......好在神也给予了智人自适应能力,智人正在制造自身的接班人之原始人——机器人......有意思更神秘,法自然。

用户1855290 2016-1-28 18:35

白炽灯坏了,自然降解可达80%以上,LED坏了,自然降解仅10%。

自做自受 2016-1-28 12:11

所言极是,认同。简言之,人类(神、智人、机器人未来的超智人)做不到自律、节制。《周易》有示,《老子》有道。个人感悟可谓当努力,法自然。 所说的“生态链”又是既得利益者们找理由而用的“名”,可谓侠义生态链而已。广义而言,试想,地球的生态链如何?何为生态平衡?人是地球生态链上的一环一因子,人类是产品又如何? 要说“中国何时能形成打造精品的氛围、环境呢?”,如今看来,只可谓人种使然,法自然。中国有中国自己的精品和环境。

自做自受 2016-1-28 11:55

神秘的是:既得利益者们为何不给消费者一个明明白白的消费?不适用,根本就要制造!

yanzyzlh_937739565 2016-1-28 11:25

同样的资源,可以成为精品、经典,也可以成为垃圾,假冒伪劣的一切东东(短命的东东,包括产品、不动产、规划、....等等),即浪费了相关资源,又污染了环境,唯一的好处就是提高了相关生态链的生产总值,包括GDP,呵呵。中国何时能形成打造精品的氛围、环境呢?

用户1111435 2016-1-28 11:17

LED灯伤人眼睛,尤其是超亮的LED灯

用户1678053 2016-1-28 08:53

看看

用户1454308 2016-1-28 08:22

Good
相关推荐阅读
yfy812_845263591 2016-03-08 13:50
audi自动泊车(3月7日)
奥迪CEO鲁伯特·施泰德(Rupert Stadler)与该市市长约瑟夫·库尔他托内(Joseph A. Curtatone)共同签署了谅解备忘录。 奥迪正与美国东海岸城市萨默维尔共同筹划未来...
yfy812_845263591 2016-02-18 10:46
自动驾驶车风口开大了
自动驾驶车风口开大了   近日sae报道(Why Audi boss Stadler believes in a hands-off future - SAE International ...
yfy812_845263591 2015-01-07 16:24
做中国的黑匣子吧
近一年来看到飞机失联之后找黑匣子的艰难,像马航MH370耗费的人财物不知有多少亿美元了。其实现有的技术可以大大降低成本,甚至可能还救出一些人:   1。事发后把黑匣子自动与机体分离,用到...
yfy812_845263591 2014-09-26 09:11
手机添加放大镜
我眼睛老化,感到要是手机上有放大镜软件就好了,不过市场上没找到。也许由于镜头关系,虽然像素高,没法把近的物象的像素提高,然后显示清楚。不过我想,添加第三个光学头,成本的增加也不过小半个光电鼠标的成...
yfy812_845263591 2014-09-22 15:43
你必须要知道风险的根源
你必须要知道风险的根源   因为现在的中国已进入了汽车社会,年轻人或迟或早会有自己的车,而每台车上都用CAN总线在控制刹车、转向…,所以你要知道CAN的风险。我对CAN总线的出错漏检率的分...
yfy812_845263591 2014-06-19 16:45
大公司的不地道
大公司的不地道   大公司由于过往的口碑,不惜有时说谎,不知道狼来了的故事何时使那个说谎的孩子受到惩罚?举四个例子:   1。前不久EETIME 专栏独家报道了丰田突然加速在Okl...
我要评论
11
17
关闭 站长推荐上一条 /2 下一条