文档详情

探讨can总线的抗千扰能力

实名认证
店铺
DOC
43KB
约5页
文档ID:43804706
探讨can总线的抗千扰能力_第1页
1/5

探讨探讨 CAN 总线的抗千扰能力总线的抗千扰能力 时间:2009-01-15 14:06:36 来源:单片机与嵌入式系统 作者:杨福宇 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 幅度的干扰就可能引起误启动,而造成误 码的干扰幅度为 400mVRS485 总线的共模电压为~7~+12 vCAN 只有 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 VCAN 总线的共模电压为一 2~+7V前面已介绍了 FlexRay 总线在总线闲置与正常通信的过渡情况,不再重复 它的接收器逻辑“l”电平为 uData1(最低 150 mV,最高 300 mV),逻辑“O” 电平为 uData 一 0(最低一 300 mV,最高一 150 mV)因此引起误码的最 小干扰为 0.3 VFlexRay 总线的共模电压为一 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 nsFlexRayr 总线容许的误启动时间与位采样点位置无关,由 dActivityDeteetion 决定,最小为 100 ns正常传送时,根据 FlexRay 数据 链路层 3.2.2 的规定,每一位采样 cSamplesPerBit(=8)次,将最近的 cVotingSamples(=5)次按多数进行表决,即可得到当时的总线接收值 (zVoted—Val)因此这种方法可以抵御 1/4 位长度的干扰,按 FlexRay 10 Mbps 计算,抵御的干扰持续时间为 25 ns2 媒体存取与逻辑链路层媒体存取与逻辑链路层 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 总线没有用位填充的方法,使用其他方法实现位同 步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 帧出错率帧出错率总线传送中的出错来源于各种干扰,除了前面分析的信号电平、采样过程、 共模电压以外,来自电源的传导干扰也可能使通信控制器工作异常而通信失效, 所以不能仅以物理层的一些指标作完整的判断。

帧的出错概率对应用有很大影 响,它涉及出错以后该怎么办的问题帧的出错概率与帧长成比例关系, CAN。

下载提示
相似文档
正为您匹配相似的精品文档