探讨CAN总线的抗千扰能力

发布者:幸福约定123最新更新时间:2015-05-08 来源: eefocus关键字:CAN总线  抗千扰 手机看文章 扫描二维码
随时随地手机看文章
  CAN总线经近20年的发展已步入壮年期,它不仅在汽车领域的应用占据一定优势,在其他工业应用上也生机勃勃、枝繁叶茂。究竟是什么原因使它这么成功?当人们发现它的局限性,又面临新的总线(例如FkxRay)的挑战时,它的地位还能维持多久?这些问题都离不开对通信技术本质和CAN总线特性的分析与理解。通信技术的不断进步离不开应用对带宽与抗干扰的追求,又要快又要正确,当然关键点是适合当前需求的性价比最佳的技术。没有这些追求,可能我们会一直停留在RS232的标准上。当今CAN总线的竞争对手包括以RS485为物理层的总线和FlexRay总线,这种形势下cAN总线的生命力在于其优越的抗干扰能力和性价比,这些都来源于它独特的物理层与数据链路层的设计。
  1 物理层
  1.1 信号状态
  CAN总线的信号状态为2种:隐位与显位。当总线上出现隐位与显位发送的竞争时,总线上的最终结果是显位。这种二值特性对cAN总线的可靠性与其他特性有很大贡献。CAN总线信号的二值且“单稳态”的特性为它的数据链路层创造了条件,即CAN总线上可以容许多主发送、竞争占线的方式。这极大简化了消息的调度。为使总线上的节点均有机会发送,有些总线采用“主从方式”,这种方法使总线的利用率较低,且从节点消息发送的等待时间较长。有些总线采用“令牌方式”,但令牌的丢失和重复需要特别的处理机制。
  许多总线是不容许总线上有冲突的,因为冲突发生后,不同的接收节点得到的电平结果是不同的。这使它们对总线上发生的事件在时间上与内容上产生不同的解释,退出冲突就会有时间的先后,从而导致节点间状态的不同步。但是由于干扰的存在,节点可能会有误动作,发生不希望的冲突。为此,要增加需多辅助的设备来防止冲突,例如在时间触发协议中经常采用的总线监守。在CAN总线里,冲突的处理由于该信号的二值且“单稳态”的特性变得简单,报错帧可以使所有节点(包括发生冲突的节点)容易地取得数据的一致性和节点状态的同步。
  FlexRay总线的状态有低功耗闲置、闲置、“O”、“1”四种。在正常工作模式时,总线接收部分只认可后3种状态。与RS485总线不同的是,FlexRay收发器有一个判断闲置状态的机制。当总线电平差处于某范围内——uBus—ActiveLow(最低一450 mV)~uBusActiveHigh(最高450mV)一段时间(dIdleDetection,最小50 ns,最大250 ns)后,它就将RxEN引脚置”l”,并将RxD置”1”。当总线电平超出该范围一段时间(dActivityDetection,最小100 ns,最大300 ns)后,就退出闲置状态。因此它不会在闲置状态受干扰而轻易地误判为新帧的开始。而总线上因干扰而引起冲突的情形可由另设的总线监守加以防止。当然,这些功能的添加意味着成本的增加。
  1.2 信号电平与共模电压
  信号电平的高低有两层影响:一是闲置时有干扰被误认为是传送的启动信号;二是传送逻辑信号时因干扰而产生误码。
  RS485接收器的阈值很小,总线电压差小于一200mV时为“0”,大于200 mV时为“1”。因此,200 mV幅度的干扰就可能引起误启动,而造成误码的干扰幅度为400mV。RS485总线的共模电压为~7~+12 v。
  CAN只有2种状态:当总线电压差小于0.5 V时,接收为隐位(即逻辑“1”);大于0.9 V时,为显位(即逻辑“O”)。O.5~O.9 V为变化的过渡区。总线隐位电压差的正常值为0 V,因此可能引起误启动的最小干扰为0.5 V;显位电压差的正常值为2.O V,合格的网络显位电压差的最小值为1.2 V,引起误码的最小干扰为O.3 V。CAN总线的共模电压为一2~+7V。
  前面已介绍了FlexRay总线在总线闲置与正常通信的过渡情况,不再重复。它的接收器逻辑“l”电平为uData1(最低150 mV,最高300 mV),逻辑“O”电平为uData一0(最低一300 mV,最高一150 mV)。因此引起误码的最小干扰为0.3 V。FlexRay总线的共模电压为一10~+15 V。
  1.3 采 样
  采用RS485收发器的总线往往与UART相连,它们一般在启动电平负跳变后的1/2位处对总线的逻辑值作采样判断。因此,当总线闲置时,若干扰的幅度足够大,且持续时间大于1/2位,就可能产生误启动。
  CAN总线的位值一般在80%~90%位处采样,因此它能容忍的误启动干扰不但幅度大,而且时间长。正常传送时,高速CAN的位采样为1次,低速时可以有3次(例如TJAl000中由SAM位控制)。这意味着可以抵御1次干扰引起的错误,因为没有看到这3次采样的间隔有多大,只能估计它是以Tq为单位。高速时实现3次采样的可能性在于厂家产品的设计,与CAN标准无关,如果以1 Mbps计算,每位分为25个Tq,那么在3次采样下,可以抵御的干扰持续时间为40 ns。
  FlexRayr总线容许的误启动时间与位采样点位置无关,由dActivityDeteetion决定,最小为100 ns。正常传送时,根据FlexRay数据链路层3.2.2的规定,每一位采样cSamplesPerBit(=8)次,将最近的cVotingSamples(=5)次按多数进行表决,即可得到当时的总线接收值(zVoted—Val)。因此这种方法可以抵御1/4位长度的干扰,按FlexRay 10 Mbps计算,抵御的干扰持续时间为25 ns。
  2 媒体存取与逻辑链路层
  2.1 位填充
  CAN总线的位填充是在以前的位填充做法的基础上发展起来的。在高级数据链路控制规程(HDLC)中用01111110作报头与报尾的标志位;在其他部分为了不致引起误解,采用每连续5个“1”之后填入一个“0”的办法,接收后将填人的O去掉。cAN总线不仅在连续5个“1“之后填入一个“0”,而且在5个“0”之后填入一个“1”,接收后将填入位丢掉。CAN总线这样做不仅为报错机制(报错帧)创造了条件,而且还有2个对信号传递有利的方面:一是为CAN总线的位同步创造了较短的同步间隔,有利于提高同步精确度;二是有利于在总线上引入适时的反向放电,减少因总线长期同一极性充电造成的物理层误判。
  但是位填充方法减弱了CAN总线的CRC防止错误漏检的能力。发生在填充位的错误会改变位流的相位,只要有2次填充位错就会使原来的部分位流提前或推后1位,而此时仍有CRC检查通过的可能。通过仿真方法注入位错,求出CRC检查漏检出错的概率为l.3×10-7,而不是CAN总线声称的所有5位以下的错误均能检出。位填充的另一个缺点是造成数据输送率的下降以及帧长度的不确定性。FlexRay总线没有用位填充的方法,使用其他方法实现位同步。[page]
  2.2 帧编码与解码
  关于CAN总线的帧已有大量文献介绍,这里不再赘述。FlexRay总线则复杂得多,其中对用户安排带宽起关键作用的是扩展字节的概念。根据FlexRay总线数据链路层3.2.1.1.3的规定,每一个字节开始处要有一个由“1”和“O”组成的字节开始序列(Byte Start Sequence,BSS),然后才是要传送的8位数据。FlexRay容许的最大时钟变化cClockDeviationMax为1 500×10-6(0.15%),因此收发之间可能差O.3%,每333次就可能差1次采样。如前所述,1位要采样8次,那么不到44位就会差1次采样,因此除了时钟本身的偏移与速率要校正外,FlexRay中也有位同步的机制。
  位同步有2个条件:同步机制已使能;zVotedVal由高到低的跳变。正常传送时,同步机制的使能发生在BSS的zVotedVal为高时。当同步时,将保存zVotedVal的cSamplesPerBit位循环计数器置2;当循环计数器计数为cStrobeOffset(=5)时,将该zVotedVal取作真正送到协议其他部分的位置。考虑到实现位同步必须有BSS这个因素,一个FlexRay信道即使不算其他开销,至多只能传送8Mbps的实际数据;再加上其他的开销,例如发送帧之间的间隔cChannelIdleDelimiter(=11位)等,有效的负载更小。
  2.3 回 读
  CAN总线发送节点能够在送出1位时又把它从总线上读回来,其他总线没有这个功能。这个功能提供了无损位仲裁的基础,让优先级高的消息获得在总线上继续传送的权力;同时,增强了发送节点早一点检测出错误的能力,一旦有错就可发送报错帧并停止原来帧的传送,节省了出错后无用部分的继续传送带宽。
  2.4 错误约束
  CAN总线对错误的检测主要是编码与解码的过程,例如bit错、填充错、ACK错、CRC错和格式错。对于时间同步,并未将其视为重要问题。例如当重同步误差大于重同步跳跃宽度时,肯定会出现位同步的失败,造成数据传送的错误。这种错误会被误认为是由其他原因引起,而不能及时发现。有时候它也成为Babbling idiot失效的原因。CAN总线对瞬态故障与永久性故障采用分类的约束办法。有错时收发错计数器增加快,正常时收发错计数器减少慢,按收发错计数器的值把节点分为主动报错状态、消极报错状态和离线状态。处于消极报错状态的节点有可能无法正确接收到帧。出错过于频繁时把有永久性故障倾向的节点从总线上切除,虽然被切除的节点失去了通信能力,但其他节点间的通信可能免除了骚扰,这不失为一种有效的故障时性能逐步退化的策略(scalable degra—dation)。
  FlexRay总线的检错包括解码过程中的错以及时间同步过程中的错,例如数据帧接收时是否有格式错、CRC错,符号(symbol)传送时高、低的时间长度是否在范围内。由于是时间触发协议,通过各分散的节点预定发送时间与实际发送时间的差进行修正,建立同步时基,对发送时间的超限要求更严。它对时间同步中产生的问题也采取了一种逐步退化的策略。它有一个协议运行控制的机制(POC),POC有3个状态,为POC:normal active(积极),POC:norreal passive(消极)和POC:haIt(停止)。其中,积极状态下,同步处于容许界限内,不会破坏其他节点的同步;消极状态下,同步已恶化到不能再发送的地步,若再发送就有可能超出它的窗口而与其他节点冲突,但它容许接收,以取得足够的同步重返积极状态。在自检或完好性检查(sanity check)未通过,或POC与其他核心机制发现严重错,或host检查到错误给出命令的情况下,POC会进入停止状态,此时只有重新初始化了。
  从上面的简述可见,在保证所有节点数据的一致性上,二者都是要靠其他措施的,而这些可能的措施(例如组籍算法,membership algorithm)都有待讨论,对错误的约束仅限于逐步退化的策略。
  2.5 帧出错率
  总线传送中的出错来源于各种干扰,除了前面分析的信号电平、采样过程、共模电压以外,来自电源的传导干扰也可能使通信控制器工作异常而通信失效,所以不能仅以物理层的一些指标作完整的判断。帧的出错概率对应用有很大影响,它涉及出错以后该怎么办的问题。帧的出错概率与帧长成比例关系,CAN2.0A的最大帧长为133位,FlexRay的最大帧长为2 625位(254字节数据+8字节开销+5个起始/停止位,这里1字节=10位)。假设二者的误码率相同,那么FlexRay的帧出错率PF约为CAN(Pc)的20倍。虽然FlexRay帧可传送的数据多得多,但是一个帧错了,其中的消息便全部不能利用,这种消息捆绑在一起的特性,大大增加了出错的机会。如果将FlexRay像CAN那样传送短帧,那么帧的效率会比CAN还低,存放静态段调度表的硬件部分更大。如果将来由于ECU内处理器更强大,一个节点发送的消息更多,那么这种长帧有用途,但是出错概率的增大仍是缺点。另外,用长帧传短消息涉及消息在帧内的编排方法,这种灵活性必然要求有高级通信层的统一约束,否则会带来修理、供货、管理上的不便与成本的增加。这可能是漫长的路,在统一之前仍然是各汽车厂专用的封闭的高层协议,几乎没有留给外人插足的空间。
  3 与FlexRay总线的比较
  3.1 单信道应用
  出错自动重发是CAN总线的一大特点。FlexRay协议的网络拓扑结构包括总线方式,但是用2个信道还是1个与性能和成本关系很大。FlexRay的设计是用2个信道同时传送来保证传送的正确性,因为它不像CAN有出错重发的功能。2个通道同时出错的概率比较小,不考虑出错重发时丢帧也不多。如果考虑2个信道同时出错而要求重发,则必须在应用层处理,而在动态时隙中传送请求与重发,不是一件容易的事,也推迟了送达时间。如果FlexRay只用一个信道来完成,出错概率较大,为了简化应用可以采用重复传送的方法(即时间冗余),在2次或多次传送中只要有1次成功便可。但是这样做相当于把FlexRay的带宽降了下来,例如减为1/2或1/3。这并不意味着2个信道时吞吐量仅为10 Mbps或更小,因为可以在其中一个信道安排较多的动态段,用于出错消息的重发请求与重发,即仅传送出错的部分。
  3.2 安全攸关应用的额外要求
  对FlexRay这样的时间触发通信协议,其错误约束机制中已尽量考虑了各种可能的出错情况,防止一个节点的发送超出预定给它的时间窗口。为了提高防错的能力,另外设计了总线监守。总线监守有自己的时钟线路和与节点发送的调度表,它控制该节点的总线驱动器,仅在容许的时间窗口里让总线驱动器工作。这种机制给防止冲突构成了双保险,但是增加了系统的成本,所以把它作为选件。在FlexRay中有2种总线监守:一种是本地总线监守,即与节点靠近的地方,甚至是可以做在同一硅片上的总线监守;另一种是远方的星型耦合器中的集中式总线监守。在总线式应用中有关的是本地总线监守。虽然总线监守要做的事少一些,但是它也要有时间同步的相关机制,以及启动和从休眠中唤醒的算法。为实现这些功能,从总线上接收数据的部分就是必不可少的。由于仅少了发送部分,FlexRay甚至提到过一种可能:将控制芯片设计成可组态的,既可用作通信控制器,又可以用作总线监守。这就说明了总线监守的结构是复杂的、高成本的。有的FlexRay文献中提到,可以将安全攸关的节点与要求稍低的节点连在同一总线上,要求低的节点可以不配总线监守。这种讲法是不正确的,因为根据木桶原理,一段总线上通信的冲突可能性由最有可能引起冲突的节点决定,安全要求低的节点发送超时会引起总线上的冲突,影响安全攸关消息的传送。
  4 小 结
  目前在车内总线技术的竞争方面,CAN总线的主要对手是FlexRay总线,因此与FlexRay总线在单信道应用上的比较是不可避免的。因为在一个信道上传送FlexRay的帧出错率高很多,又没有出错自动重发的机制,所以FlexRay总线要减少出错就必须重复发送,以时间备份的方式纠错。经过FlexRay扩展字节与时间备份的折扣,有效的数据传送速率已降到4 Mbps;再加上其他开销,带宽还会减小。另一方面,时间触发协议的调度表的求解在负载越大时越困难,不可能用足4 Mbps。
  FlexRay总线的通道长度最长为24 m,如果CAN总线也限于24 m,则根据每米信号传送迟后约5 ns计算,CAN位时间中传送段的通道传送部分为240 ns。若设计驱动器的响应时间为40 ns左右(如SJAl000),那么CAN总线的数据传输速率达到2~3 Mbps也是可能的,虽然ISO11898—1限定1 Mbps为上限,但它并非技术的极限。FlexRay总线在抗共模干扰上比CAN总线强,但是出错并不仅由共模干扰引起,例如来自电源的传导干扰也会引起包括比较器在内的的所有电路出错,所以并不能确定FlexRay总线的硬件可靠性高于CAN总线。在保证传送数据的一致性方面,2种协议都要有应用层的解决办法,FlexRay总线并未提供直接可用的机制。作为通信的下层,它们都采取的是性能逐步退化的策略。也有人在研究冗余通道、星形拓扑等措施在CAN总线中如何实现,并非不可能。
  就CAN总线而言,FlexRay总线是一种挑战,但是在单信道的总线拓扑应用中FlexRay总线并不构成威胁。由于目前高档车内已经用了不止一个CAN总线系统,用双信道的FlexRay取代多个CAN总线系统有可能在性价比上取得进展,但是与现在生产的应用CAN总线的ECU存在兼容问题,且成本较高,这些问题的解决还有待时日。尽管CAN总线有一定局限,甚至还有漏洞,但对CAN总线的改进还在继续,在未来的5~10年里CAN总线仍然有很大的性价比优势。
关键字:CAN总线  抗千扰 引用地址:探讨CAN总线的抗千扰能力

上一篇:关于CAN总线逆向工程的初步探讨
下一篇:can总线基本概念

推荐阅读最新更新时间:2024-05-02 23:40

基于CAN总线的胎压监测系统在重型车辆上的应用研究
  胎压对于道路安全、乘坐舒适度、轮胎寿命以及车辆油耗来说是一个非常重要的因素。胎压监测系统(TPMS)使用由电池供电的车轮电子设备,在短时间内可测量轮胎内部的气压和温度。通过无线电,将这些数值连同车轮电子设备的各个识别码以及电池寿命信息一起以数据电文的形式传输到安装在轮罩拱中的射频天线上。然后从那里将数据电文通过电缆转发到电子控制单元。该控制单元对数据电文进行评估,并识别它们的发送点,然后确定是否应将其告知驾驶员。对每个轮胎进行单独监测。借助于温度特性,将其胎压转换成标准压力。无论是驾驶员还是汽车制造商都可以输入额定胎压值,以作为汽车的理想胎压值。如果由驾驶员进行输入,系统将检查该输入值的合理性以避免导致错误。检查该值后,便将其用
[嵌入式]
CAN总线多节点通信异常分析及解决
一、CAN物理层特征 CAN收发器的作用是负责逻辑电平和信号电平之间的转换。即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换为差分信号输出到CAN总线上,CAN总线上的节点都可以决定自己是否需要总线上的数据。 市场上常用的收发器(例如: VP230、TJA1040、TCAN337等)多为ISO 11898标准。在此标准中,对于CAN的信号逻辑1和0的产生:当CAN_H为3.5V,CAN_L为1.5V,差值为2V左右时为显性(dominant)电平表示,而两者相等为2.5V左右时为隐性(recessive)电平表示1。 可以看到上图中的当第一段为隐性,CAN_H和CAN_L电平几乎
[单片机]
<font color='red'>CAN总线</font>多节点通信异常分析及解决
四冗余通信板的仿真 少不了CAN总线技术辅助
随着电子技术、计算机应用技术和EDA技术的不断发展,利用FPGA进行数字系统的开发已被广泛应用于通信、航天、医疗电子、工业控制等领域,FPGA成为当今硬件设计的首选方式之一。PC/104是一种专门为嵌入式控制而定义的工业控制总线,以其独特的堆栈式结构、低功率等优点,得到了广泛的应用。作为主流的现场总线,工业控制局域网 CAN (Controller Area Network)总线抗干扰能力强,易于组网,具有非常广阔的应用前景。独特的PC/104总线与 CAN 总线的结合,进一步拓宽了CAN总线的应用领域。 1 基于FPGA的CAN核设计 本设计采用了Altera公司的Cyclone III系列FPGA EP3C25,开发平台采
[电源管理]
四冗余通信板的仿真 少不了<font color='red'>CAN总线</font>技术辅助
CAN总线技术运用于接口电路设计注意事项
  CAN 总线是一种有效支持分布式控制和实时控制的串行通信网络,以其高性能和高可靠性在自动控制领域得到了广泛的应用。为提高系统的驱动能力,增大通信距离,实际应用中多采用Philips公司的82C250作为CAN控制器与物理总线间的接口,即CAN收发器,以增强对总线的差动发送能力和对CAN控制器的差动接收能力。为进一步增强抗干扰能力,往往在CAN 控制器与收发器之间设置光电隔离电路。典型的CAN总线接口电路原理如图1所示。   图1 典型的CAN总线接口电路原理图 1 接口电路设计中的关键问题 1.1 光电隔离电路   光电隔离电路虽然能增强系统的抗干扰能力,但也会增加CAN总线有效回路信号的传输延迟时间,
[汽车电子]
<font color='red'>CAN总线</font>技术运用于接口电路设计注意事项
基于CAN总线EPB驻车电流采集节点的设计与研究
电子驻车制动系统(EPB)指将行车过程中的临时性制动和停车后的长时性制动功能整合在一起,并且由电子控制方式实现停车制动的技术。为了能够获取各车辆已施加的理论驻车压力,并监控各车辆一体化执行机构的工作状态,防止驻车电机长时间工作在大电流状态,防止驻车电机过热烧毀,EPB一般配有驻车车电流采集节点,并通过CAN总线将驻车电流发送给中央控制节点(ECU)。文中主要介绍了基于AD574A的驻车电流采集节点的接口设置、采集方法及软件设计。 1 系统硬件设计 驻车电流采集节点的硬件电路设计包括CAN总线通讯电路设计与车速采集电路设计两部分,如图1所示。 1)CAN总线通讯电路设计 CAN总线通讯电路设计时,CAN控制器使用由广
[嵌入式]
CAN总线在武钢现场中的应用
  武汉钢铁公司为了增加钢铁产量,提高工作效率,2006年底对一批老设备进行了一系列的改造,其中远程数据传送的设备也需要改进。   系统介绍:   本系统要把分布在各个车间的转炉信号集中起来送给中控室,该炼钢厂总共有15个转炉,分布距离总长为4200米。要求把各个转炉当前炼铁的工艺发送到中控室,中控室根据每个转炉发来的数据对各个转炉的炼的钢铁成分进行分析,同时根据需要还向各个转炉发送下批需要炼铁的工艺,操作工根据传输过来的数据进行工作。应而中控室与各转炉之间的数据交换尤为重要,整个网络要求高可靠性和实时性。   传统的通讯设备是采用RS485通讯,但传统的设备存在很多弊病,例如通讯距离很有限,通讯速率较低,信号不稳定等因素。
[嵌入式]
基于AT89C52的CAN总线无功补偿控制设计
1 引言 根据资料统计,输电线路、高压配电网、低压用户三个部分的线损中,低压用户线损最大,因此,降损节能应主要围绕低压380V用户进行。长期以来,我国低压配电网网架薄弱,自然功率因数低,而且结构复杂,降低了电网的经济效益。目前,电力部门一般采用就地无功补偿的方法解决这一问题。目前市场上所投入使用的低压无功补偿装置有很多种,但大部分补偿单元基本上都是由主控制器的CPU直接驱动的,系统有多少组电容器,就会从CPU引出相应路数的线,从无功补偿器引出的线路很多,同时传输距离也很有限。这给安装、检修、维护和扩展带来了极大的不方便。 CAN(Controller Area Network)总线属于现场总线的范畴,它是德国Bo
[工业控制]
基于AT89C52的<font color='red'>CAN总线</font>无功补偿控制设计
基于CAN总线的分布式铝电解控制系统
    摘要: 介绍了基于CAN总线的分布式铝电解控制系统的设计和实现方法,给出了CAN总线的硬件接口电路设计和槽控机逻辑电路结构图。     关键词: CAN总线  电解槽  槽控机     铝电解生产计算机监控系统的形成和发展,已由早期的集中型发展到集散型,又进一步发展到了分布式系统。集中控制采用单机群控技术,比较成功地解决了铝电解生产过程监控系统的设计和应用问题。为了对每台铝电解槽比较复杂的控制进行解析、响应现场实时性强的多种操作、控制程序多任务调度等,同时也为了解决集中控制的脆弱性、实时性差等问题,需要对铝电解槽实施分布式控制方案。现在分布式控制已成为铝行业计算机控制系统的发展趋势。为此,本文介
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved