国家兴亡匹夫有责(6)

国家兴亡匹夫有责,从神九用到CAN总线讲起(6)方法很关键

我们很多应用选用CAN总线是因为它特别可靠,按CiA的宣传资料是一千年才会发生一次错帧残留,按Bosch CAN2.0规范是帧出错率*4.7*10-11。其中

4.7*10-11是错帧漏检率Pun,而帧出错率*Pun是错帧残留率Pres。一千年一次在我们有生之年是碰不到的,自然非常好,不过它这个值错了,错误的数据会导致盲目乐观的态度。

它的计算过程是:假定误码率为每0.7秒有1位错,当位时间为2us时,有ber= 1/(0.7*106/2)=2.8*10-6并以此来计算公式中的error rate。这是简化的情况,与Bosch 分析时采用的方法不同,在那里error rate相当于bad状态概率,例如分析时采用的为10-3,在帧长为100bit时,它的计算偏小了约3倍。

假定总线工作于500kbps,总线负载率为40%,平均帧长为100 bit,那么每小时送7.2×106个帧。按我的计算结果(见以后博文),错帧漏检率Pun=1.15*10-7,在bad状态概率为1*10-3时错帧残留率是1.15*10-10,每小时的失效率是

8.82×10-4/h。也就是每1200小时=50天要失效一次。如果像上面CiA介绍总线负载率为100%时,就会是每20天失效一次。

有人会说,我的系统从来没有失效过。说到数值问题,第一是你的系统可能干扰较少,在单帧长度为统计误码率时遇到的最坏情况远小于1*10-3,但是你不能否定别人的最坏情况可能达到1*10-3;第二,许多应用属于闭环控制,由于对象的响应比较慢,即使有错帧漏检,其引起的扰动刚开始就被新来的正确数据纠正了,你就没有感觉,但是你不能否定存在无法及时更新的可能性;第三,也许你在应用上还有别的纠错措施使错帧的影响减弱了,例如各种滤波算法,所以你感觉不到,但是你已经付出了相应的代价,例如降低了系统的动态指标。

现在说可信赖性分析方法。对整个国家而言,平均概率是重要的。但是最坏情况发生时,人身和财产损失对当事人是百分之百地已经发生。所以要按最坏概

率作出发点。例如一,人的价值是无价的,所以欧美各国已进入到目标为交通零伤亡的时代,如果你的车不以此为目标,你就会在竞争中失败;例如二,有的项目全国都只有有限的数量,一次失效都是难以承受的,例如火箭卫星导弹之类。所以无论民用或军工都该以最坏情况作出发点。

关于错帧漏检的分析方法,据我所知大致有几种方法:第一是用软件仿真的方法,可以有控制地注入位错,然后按协议的规定检查,错帧是否溜过去,不过一般采取随机注入位错的方法,即一般随机测试的Monte Carlo方法;第二种是用分析方法,构造出会溜过去的帧,然后统计这种帧的个数,我就是用这种方法;也许还有第三种,用形式逻辑的方法来分析,不过我还不懂,不知道是否走得通。

Bosch采用的是第一种方法。( J. Unruh, H.J. Mathony, K.H. Kaiser:

Bosch对造成错帧漏检的二种原因均有论述,第一种原因是CAN位填充规则时出错发生部分数据流相位移动,第二次是出错又使相位又对上了,在有相移的部分造成收发数据比较时有大量差,超出了CRC检出错的能力;第二种是在定义帧长度的位中出了错,收发二边对帧长度有了不同理解,碰巧后边又发生位错,使变形后的帧通过了CRC检验和格式检验。关于这二种情况我后面都要用到,到时候详细介绍。

采用软件仿真的办法要求概率的分布是均匀的,而且样本的量较大,正是在这二点细节上这种办法是有缺点的,从而导致结果的准确度低。

首先出现漏检事件的出错位分布不是均匀的,发生在标识位等处的错会因数据移相,造成帧长变化而较易检测出来,不易漏检;而发生在数据域内的错则除了CRC检验没有其他检验可发现,易漏检;发生在帧尾部的错立马就被视作格式错,不漏检。

其次是样本的大小,Bosch文章中针对的是80~90位的帧,CRC检验的覆盖面为58~66位,这样帧本身就有258=2.88×1017种,注入的位置有58×57/2组,全部实例有4.76×1020个。每一个帧在注入错前后要算二次CRC,还要做其他格式检查。例如有没有发生填充位错,有没有发生帧长变化导致格式错等。现仅就CRC检验来说:每个学过CRC计算的人都知道它要分很多步骤,1989年左右还是16位机的时代(例如VAX11系列),假定累加器由A构成,生成多项式为立即数G,步骤有

1.如A15=0跳到第3步,否则进到2,

2.A与G异或,

3.进位位设新数据,

4.A与进位位左移一位,

5.判CRC覆盖区是否结束,如否则回到1,如是就结束。

一位要循环5步,就算用机器代码,那时的计算机还只在10M左右,即0.5us。完成58位循环要29us,验算一条帧需58us。于是可以算出不停机运行一年可检验365*24*3600*106/58=5.43*1011条帧。全部实例有4.76×1020个,可见测试的样本还不到实例的10-8。即使当时的计算机速度估计不准,仍然是样本太小了。

样本小要作结论是无法置信的,例如100万辆车你遇到1辆性能很好就说车好,或者你遇到1辆车坏了就说车一塌胡涂都是偏颇的。

虽然CiA一方面推荐Bosch的残差值:出错率*4.7*10-11,实际上CiA还给出了另一个更大的残差值:CiA, CiA Draft Standard 304 V1.0.1 “CANopen framework for safety-relevant communication”,第26页:The worst case residual error probability of

the CAN protocol is PRe st 710,它来自一篇Joachim Charzinski的论文,在那里

有:Pres

国家兴亡匹夫有责,从神九用到CAN总线讲起(6)方法很关键

我们很多应用选用CAN总线是因为它特别可靠,按CiA的宣传资料是一千年才会发生一次错帧残留,按Bosch CAN2.0规范是帧出错率*4.7*10-11。其中

4.7*10-11是错帧漏检率Pun,而帧出错率*Pun是错帧残留率Pres。一千年一次在我们有生之年是碰不到的,自然非常好,不过它这个值错了,错误的数据会导致盲目乐观的态度。

它的计算过程是:假定误码率为每0.7秒有1位错,当位时间为2us时,有ber= 1/(0.7*106/2)=2.8*10-6并以此来计算公式中的error rate。这是简化的情况,与Bosch 分析时采用的方法不同,在那里error rate相当于bad状态概率,例如分析时采用的为10-3,在帧长为100bit时,它的计算偏小了约3倍。

假定总线工作于500kbps,总线负载率为40%,平均帧长为100 bit,那么每小时送7.2×106个帧。按我的计算结果(见以后博文),错帧漏检率Pun=1.15*10-7,在bad状态概率为1*10-3时错帧残留率是1.15*10-10,每小时的失效率是

8.82×10-4/h。也就是每1200小时=50天要失效一次。如果像上面CiA介绍总线负载率为100%时,就会是每20天失效一次。

有人会说,我的系统从来没有失效过。说到数值问题,第一是你的系统可能干扰较少,在单帧长度为统计误码率时遇到的最坏情况远小于1*10-3,但是你不能否定别人的最坏情况可能达到1*10-3;第二,许多应用属于闭环控制,由于对象的响应比较慢,即使有错帧漏检,其引起的扰动刚开始就被新来的正确数据纠正了,你就没有感觉,但是你不能否定存在无法及时更新的可能性;第三,也许你在应用上还有别的纠错措施使错帧的影响减弱了,例如各种滤波算法,所以你感觉不到,但是你已经付出了相应的代价,例如降低了系统的动态指标。

现在说可信赖性分析方法。对整个国家而言,平均概率是重要的。但是最坏情况发生时,人身和财产损失对当事人是百分之百地已经发生。所以要按最坏概

率作出发点。例如一,人的价值是无价的,所以欧美各国已进入到目标为交通零伤亡的时代,如果你的车不以此为目标,你就会在竞争中失败;例如二,有的项目全国都只有有限的数量,一次失效都是难以承受的,例如火箭卫星导弹之类。所以无论民用或军工都该以最坏情况作出发点。

关于错帧漏检的分析方法,据我所知大致有几种方法:第一是用软件仿真的方法,可以有控制地注入位错,然后按协议的规定检查,错帧是否溜过去,不过一般采取随机注入位错的方法,即一般随机测试的Monte Carlo方法;第二种是用分析方法,构造出会溜过去的帧,然后统计这种帧的个数,我就是用这种方法;也许还有第三种,用形式逻辑的方法来分析,不过我还不懂,不知道是否走得通。

Bosch采用的是第一种方法。( J. Unruh, H.J. Mathony, K.H. Kaiser:

Bosch对造成错帧漏检的二种原因均有论述,第一种原因是CAN位填充规则时出错发生部分数据流相位移动,第二次是出错又使相位又对上了,在有相移的部分造成收发数据比较时有大量差,超出了CRC检出错的能力;第二种是在定义帧长度的位中出了错,收发二边对帧长度有了不同理解,碰巧后边又发生位错,使变形后的帧通过了CRC检验和格式检验。关于这二种情况我后面都要用到,到时候详细介绍。

采用软件仿真的办法要求概率的分布是均匀的,而且样本的量较大,正是在这二点细节上这种办法是有缺点的,从而导致结果的准确度低。

首先出现漏检事件的出错位分布不是均匀的,发生在标识位等处的错会因数据移相,造成帧长变化而较易检测出来,不易漏检;而发生在数据域内的错则除了CRC检验没有其他检验可发现,易漏检;发生在帧尾部的错立马就被视作格式错,不漏检。

其次是样本的大小,Bosch文章中针对的是80~90位的帧,CRC检验的覆盖面为58~66位,这样帧本身就有258=2.88×1017种,注入的位置有58×57/2组,全部实例有4.76×1020个。每一个帧在注入错前后要算二次CRC,还要做其他格式检查。例如有没有发生填充位错,有没有发生帧长变化导致格式错等。现仅就CRC检验来说:每个学过CRC计算的人都知道它要分很多步骤,1989年左右还是16位机的时代(例如VAX11系列),假定累加器由A构成,生成多项式为立即数G,步骤有

1.如A15=0跳到第3步,否则进到2,

2.A与G异或,

3.进位位设新数据,

4.A与进位位左移一位,

5.判CRC覆盖区是否结束,如否则回到1,如是就结束。

一位要循环5步,就算用机器代码,那时的计算机还只在10M左右,即0.5us。完成58位循环要29us,验算一条帧需58us。于是可以算出不停机运行一年可检验365*24*3600*106/58=5.43*1011条帧。全部实例有4.76×1020个,可见测试的样本还不到实例的10-8。即使当时的计算机速度估计不准,仍然是样本太小了。

样本小要作结论是无法置信的,例如100万辆车你遇到1辆性能很好就说车好,或者你遇到1辆车坏了就说车一塌胡涂都是偏颇的。

虽然CiA一方面推荐Bosch的残差值:出错率*4.7*10-11,实际上CiA还给出了另一个更大的残差值:CiA, CiA Draft Standard 304 V1.0.1 “CANopen framework for safety-relevant communication”,第26页:The worst case residual error probability of

the CAN protocol is PRe st 710,它来自一篇Joachim Charzinski的论文,在那里

有:Pres


相关内容

  • 国家兴亡,匹夫无责;匹夫有难,国家有责
  • "国家兴亡,匹夫有责",国家指的是政权,匹夫指的是老百姓,即政权兴盛与灭亡老百姓是要负责任的.大多数人认为出自明末清初学者顾炎武,但顾炎武原文是"天下兴亡,匹夫有责",天下指的是社会,匹夫指的是士大夫(知名人士),不知何时"天下"换成了&q ...

  • 学习十七大心得体会-国家兴亡 匹夫有则
  • 国家兴亡 匹夫有责--学习十七大心得体会 十七大的号角已经吹响,举国上下为之振奋.胡总书记高屋建瓴的讲话,汇聚了全党的智慧,代表了全国人民的共同意愿. 十三亿人口的泱泱大国,全面建设小康社会,为的是谁,靠的是谁?做为一名建设中国特色社会主义道路的普通践行者,我们应该时刻铭记胡总书记在十七大报告中提出 ...

  • 国家兴亡,匹夫无责
  • 顾炎武的名言:"天下兴亡,匹夫有责",长期流传,"天下"被改成了"国家".这不是顾炎武的本意,而且正好相反,顾炎武的原意是国家兴亡"肉食者谋之",匹夫是无责的.按<日知录>明明是这样说的: 有亡国,有亡天下. ...

  • 天下兴亡匹夫有责演讲稿
  • 天下兴亡匹夫有责演讲稿 同学们,你们说 每个学生都应该把责任拉到自己身上来,而不是推出去.如果教室很脏,老师问 我们要有 我给大家讲个关于捡废纸的故事.美国有个叫特的人,大学毕业后,去一家汽车公司应聘.和他同去应聘的三四个人,都比他学历高.当前面几个人面试之后,他觉得自己没有什么愿望了.他敲门走进了 ...

  • 台湾一校长的演讲
  • 台湾一校长的演讲:震动所有中国人 台湾有这么一所学校,学生年龄在15--18岁之间,每年三千多学生中,因违反校规校纪被校方开除的二,三百人.学校没有工人,没有保卫,没有大师傅,一切必要工作都有学生自己去做.学校实行学长制,三年级学生带一年级学生.全校集合只需要34分钟.学生见到老师七米之外要敬礼.学 ...

  • 一位台湾校长震惊中国人的演讲-心得体会
  • <一位台湾校长震惊中国人的演讲>读后心得 读完台湾忠信高级工商学校校长高震东老先生的演讲,首先感觉到的是对高震东校长的敬意,高校长从教数十年,除了教授学生知识,更重要的是提高他们的精神境界,实在是当之无愧的教育家. 在这篇演讲中,高校长针对"育人"这样一个老生常谈的话 ...

  • 天下兴亡 匹夫有责
  • "天下兴亡,匹夫有责"是清初大儒顾炎武的名言,他一生著作颇丰,成就颇广,其诗词强调理论为现实服务.政治上,他不与清政府合作,客观上,在思想文化领域为清朝做出了巨大贡献.他不但治国平天下,著作等身,而且为刚,重视做人的思想品德修养,其学术主张和爱国精神颇受辛亥革命以来有民主主义思想 ...

  • 社区"道德讲堂"第四期
  • 社区"道德讲堂"第四期 "天下兴亡,匹夫有责"是明末清初的思想家顾炎武在<日知录>中指出的"保国者,其君其臣肉食者谋之:保天下者,匹夫之贱与有责焉耳矣!"经梁启超根据八字成文的语型得出的绝世名句.它的意思就是国家的兴盛与衰亡,每 ...

  • 国防教育日活动安排
  • 国防教育日活动安排 今年国防教育日,适逢"九一八"事变82周年.为贯彻落实<国防教育法>,推动我校国防教育的深入开展,在我校开展以"国之兴亡 匹夫有责"为主题的系列宣传教育活动,具体实施方案如下: 一.教育的目的 全体师生通过共同参与" ...