探讨CAN总线的抗千扰能力.doc

上传人:公**** 文档编号:548157334 上传时间:2022-11-19 格式:DOC 页数:5 大小:43KB
返回 下载 相关 举报
探讨CAN总线的抗千扰能力.doc_第1页
第1页 / 共5页
探讨CAN总线的抗千扰能力.doc_第2页
第2页 / 共5页
探讨CAN总线的抗千扰能力.doc_第3页
第3页 / 共5页
探讨CAN总线的抗千扰能力.doc_第4页
第4页 / 共5页
探讨CAN总线的抗千扰能力.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《探讨CAN总线的抗千扰能力.doc》由会员分享,可在线阅读,更多相关《探讨CAN总线的抗千扰能力.doc(5页珍藏版)》请在金锄头文库上搜索。

1、探讨CAN总线的抗千扰能力时间:2009-01-15 14:06:36 来源:单片机与嵌入式系统 作者:杨福宇CAN总线经近20年的发展已步入壮年期,它不仅在汽车领域的应用占据一定优势,在其他工业应用上也生机勃勃、枝繁叶茂。究竟是什么原因使它这么成功?当人们发现它的局限性,又面临新的总线(例如FkxRay)的挑战时,它的地位还能维持多久?这些问题都离不开对通信技术本质和CAN总线特性的分析与理解。通信技术的不断进步离不开应用对带宽与抗干扰的追求,又要快又要正确,当然关键点是适合当前需求的性价比最佳的技术。没有这些追求,可能我们会一直停留在RS232的标准上。当今CAN总线的竞争对手包括以RS4

2、85为物理层的总线和FlexRay总线,这种形势下cAN总线的生命力在于其优越的抗干扰能力和性价比,这些都来源于它独特的物理层与数据链路层的设计。1 物理层11 信号状态 CAN总线的信号状态为2种:隐位与显位。当总线上出现隐位与显位发送的竞争时,总线上的最终结果是显位。这种二值特性对cAN总线的可靠性与其他特性有很大贡献。CAN总线信号的二值且“单稳态”的特性为它的数据链路层创造了条件,即CAN总线上可以容许多主发送、竞争占线的方式。这极大简化了消息的调度。为使总线上的节点均有机会发送,有些总线采用“主从方式”,这种方法使总线的利用率较低,且从节点消息发送的等待时间较长。有些总线采用“令牌方

3、式”,但令牌的丢失和重复需要特别的处理机制。 许多总线是不容许总线上有冲突的,因为冲突发生后,不同的接收节点得到的电平结果是不同的。这使它们对总线上发生的事件在时间上与内容上产生不同的解释,退出冲突就会有时间的先后,从而导致节点间状态的不同步。但是由于干扰的存在,节点可能会有误动作,发生不希望的冲突。为此,要增加需多辅助的设备来防止冲突,例如在时间触发协议中经常采用的总线监守。在CAN总线里,冲突的处理由于该信号的二值且“单稳态”的特性变得简单,报错帧可以使所有节点(包括发生冲突的节点)容易地取得数据的一致性和节点状态的同步。 FlexRay总线的状态有低功耗闲置、闲置、“O”、“1”四种。在

4、正常工作模式时,总线接收部分只认可后3种状态。与RS485总线不同的是,FlexRay收发器有一个判断闲置状态的机制。当总线电平差处于某范围内uBusActiveLow(最低一450 mV)uBusActiveHigh(最高450mV)一段时间(dIdleDetection,最小50 ns,最大250 ns)后,它就将RxEN引脚置”l”,并将RxD置”1”。当总线电平超出该范围一段时间(dActivityDetection,最小100 ns,最大300 ns)后,就退出闲置状态。因此它不会在闲置状态受干扰而轻易地误判为新帧的开始。而总线上因干扰而引起冲突的情形可由另设的总线监守加以防止。当然

5、,这些功能的添加意味着成本的增加。12 信号电平与共模电压 信号电平的高低有两层影响:一是闲置时有干扰被误认为是传送的启动信号;二是传送逻辑信号时因干扰而产生误码。 RS485接收器的阈值很小,总线电压差小于一200mV时为“0”,大于200 mV时为“1”。因此,200 mV幅度的干扰就可能引起误启动,而造成误码的干扰幅度为400mV。RS485总线的共模电压为7+12 v。 CAN只有2种状态:当总线电压差小于05 V时,接收为隐位(即逻辑“1”);大于09 V时,为显位(即逻辑“O”)。O5O9 V为变化的过渡区。总线隐位电压差的正常值为0 V,因此可能引起误启动的最小干扰为05 V;显

6、位电压差的正常值为2O V,合格的网络显位电压差的最小值为12 V,引起误码的最小干扰为O3 V。CAN总线的共模电压为一2+7V。 前面已介绍了FlexRay总线在总线闲置与正常通信的过渡情况,不再重复。它的接收器逻辑“l”电平为uData1(最低150 mV,最高300 mV),逻辑“O”电平为uData一0(最低一300 mV,最高一150 mV)。因此引起误码的最小干扰为03 V。FlexRay总线的共模电压为一10+15 V。13 采 样 采用RS485收发器的总线往往与UART相连,它们一般在启动电平负跳变后的12位处对总线的逻辑值作采样判断。因此,当总线闲置时,若干扰的幅度足够大

7、,且持续时间大于12位,就可能产生误启动。 CAN总线的位值一般在8090位处采样,因此它能容忍的误启动干扰不但幅度大,而且时间长。正常传送时,高速CAN的位采样为1次,低速时可以有3次(例如TJAl000中由SAM位控制)。这意味着可以抵御1次干扰引起的错误,因为没有看到这3次采样的间隔有多大,只能估计它是以Tq为单位。高速时实现3次采样的可能性在于厂家产品的设计,与CAN标准无关,如果以1 Mbps计算,每位分为25个Tq,那么在3次采样下,可以抵御的干扰持续时间为40 ns。 FlexRayr总线容许的误启动时间与位采样点位置无关,由dActivityDeteetion决定,最小为100

8、 ns。正常传送时,根据FlexRay数据链路层322的规定,每一位采样cSamplesPerBit(=8)次,将最近的cVotingSamples(=5)次按多数进行表决,即可得到当时的总线接收值(zVotedVal)。因此这种方法可以抵御14位长度的干扰,按FlexRay 10 Mbps计算,抵御的干扰持续时间为25 ns。2 媒体存取与逻辑链路层21 位填充 CAN总线的位填充是在以前的位填充做法的基础上发展起来的。在高级数据链路控制规程(HDLC)中用01111110作报头与报尾的标志位;在其他部分为了不致引起误解,采用每连续5个“1”之后填入一个“0”的办法,接收后将填人的O去掉。c

9、AN总线不仅在连续5个“1“之后填入一个“0”,而且在5个“0”之后填入一个“1”,接收后将填入位丢掉。CAN总线这样做不仅为报错机制(报错帧)创造了条件,而且还有2个对信号传递有利的方面:一是为CAN总线的位同步创造了较短的同步间隔,有利于提高同步精确度;二是有利于在总线上引入适时的反向放电,减少因总线长期同一极性充电造成的物理层误判。 但是位填充方法减弱了CAN总线的CRC防止错误漏检的能力。发生在填充位的错误会改变位流的相位,只要有2次填充位错就会使原来的部分位流提前或推后1位,而此时仍有CRC检查通过的可能。通过仿真方法注入位错,求出CRC检查漏检出错的概率为l.310-7,而不是CA

10、N总线声称的所有5位以下的错误均能检出。位填充的另一个缺点是造成数据输送率的下降以及帧长度的不确定性。FlexRay总线没有用位填充的方法,使用其他方法实现位同步。22 帧编码与解码 关于CAN总线的帧已有大量文献介绍,这里不再赘述。FlexRay总线则复杂得多,其中对用户安排带宽起关键作用的是扩展字节的概念。根据FlexRay总线数据链路层32113的规定,每一个字节开始处要有一个由“1”和“O”组成的字节开始序列(Byte Start Sequence,BSS),然后才是要传送的8位数据。FlexRay容许的最大时钟变化cClockDeviationMax为1 50010-6(015),因

11、此收发之间可能差O3,每333次就可能差1次采样。如前所述,1位要采样8次,那么不到44位就会差1次采样,因此除了时钟本身的偏移与速率要校正外,FlexRay中也有位同步的机制。 位同步有2个条件:同步机制已使能;zVotedVal由高到低的跳变。正常传送时,同步机制的使能发生在BSS的zVotedVal为高时。当同步时,将保存zVotedVal的cSamplesPerBit位循环计数器置2;当循环计数器计数为cStrobeOffset(=5)时,将该zVotedVal取作真正送到协议其他部分的位置。考虑到实现位同步必须有BSS这个因素,一个FlexRay信道即使不算其他开销,至多只能传送8M

12、bps的实际数据;再加上其他的开销,例如发送帧之间的间隔cChannelIdleDelimiter(=11位)等,有效的负载更小。23 回 读 CAN总线发送节点能够在送出1位时又把它从总线上读回来,其他总线没有这个功能。这个功能提供了无损位仲裁的基础,让优先级高的消息获得在总线上继续传送的权力;同时,增强了发送节点早一点检测出错误的能力,一旦有错就可发送报错帧并停止原来帧的传送,节省了出错后无用部分的继续传送带宽。24 错误约束 CAN总线对错误的检测主要是编码与解码的过程,例如bit错、填充错、ACK错、CRC错和格式错。对于时间同步,并未将其视为重要问题。例如当重同步误差大于重同步跳跃宽

13、度时,肯定会出现位同步的失败,造成数据传送的错误。这种错误会被误认为是由其他原因引起,而不能及时发现。有时候它也成为Babbling idiot失效的原因。CAN总线对瞬态故障与永久性故障采用分类的约束办法。有错时收发错计数器增加快,正常时收发错计数器减少慢,按收发错计数器的值把节点分为主动报错状态、消极报错状态和离线状态。处于消极报错状态的节点有可能无法正确接收到帧。出错过于频繁时把有永久性故障倾向的节点从总线上切除,虽然被切除的节点失去了通信能力,但其他节点间的通信可能免除了骚扰,这不失为一种有效的故障时性能逐步退化的策略(scalable degradation)。 FlexRay总线的

14、检错包括解码过程中的错以及时间同步过程中的错,例如数据帧接收时是否有格式错、CRC错,符号(symbol)传送时高、低的时间长度是否在范围内。由于是时间触发协议,通过各分散的节点预定发送时间与实际发送时间的差进行修正,建立同步时基,对发送时间的超限要求更严。它对时间同步中产生的问题也采取了一种逐步退化的策略。它有一个协议运行控制的机制(POC),POC有3个状态,为POC:normal active(积极),POC:norreal passive(消极)和POC:haIt(停止)。其中,积极状态下,同步处于容许界限内,不会破坏其他节点的同步;消极状态下,同步已恶化到不能再发送的地步,若再发送就

15、有可能超出它的窗口而与其他节点冲突,但它容许接收,以取得足够的同步重返积极状态。在自检或完好性检查(sanity check)未通过,或POC与其他核心机制发现严重错,或host检查到错误给出命令的情况下,POC会进入停止状态,此时只有重新初始化了。 从上面的简述可见,在保证所有节点数据的一致性上,二者都是要靠其他措施的,而这些可能的措施(例如组籍算法,membership algorithm)都有待讨论,对错误的约束仅限于逐步退化的策略。25 帧出错率 总线传送中的出错来源于各种干扰,除了前面分析的信号电平、采样过程、共模电压以外,来自电源的传导干扰也可能使通信控制器工作异常而通信失效,所以

16、不能仅以物理层的一些指标作完整的判断。帧的出错概率对应用有很大影响,它涉及出错以后该怎么办的问题。帧的出错概率与帧长成比例关系,CAN20A的最大帧长为133位,FlexRay的最大帧长为2 625位(254字节数据+8字节开销+5个起始停止位,这里1字节=10位)。假设二者的误码率相同,那么FlexRay的帧出错率PF约为CAN(Pc)的20倍。虽然FlexRay帧可传送的数据多得多,但是一个帧错了,其中的消息便全部不能利用,这种消息捆绑在一起的特性,大大增加了出错的机会。如果将FlexRay像CAN那样传送短帧,那么帧的效率会比CAN还低,存放静态段调度表的硬件部分更大。如果将来由于ECU内处理器更强大,一个节点发送的消息更多,那么这种长帧有用途,但

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号