您的位置 首页 厂商

讨论CAN总线的抗干扰才能

CAN总线经近20年的发展已步入壮年期,它不仅在汽车领域的应用占据一定优势,在其他工业应用上也生机勃勃、枝繁叶茂。究竟是什么原因使

  CAN总线经近20年的开展已步入壮年期,它不只在轿车范畴的运用占有必定优势,在其他工业运用上也朝气蓬勃、枝繁叶茂。究竟是什么原因使它这么成功?当人们发现它的限制性,又面对新的总线(例如FlexRay)的应战时,它的方位还能保持多久?这些问题都离不开对通讯技能实质和CAN总线特性的剖析与了解。通讯技能的不断进步离不开运用对带宽与抗搅扰的寻求,又要快又要正确,当然要害点是合适其时需求的性价比最佳的技能。没有这些寻求,或许咱们会一向停留在RS232的规范上。当今CAN总线的竞赛对手包含以RS485为物理层的总线和FlexRay总线,这种局势下CAN总线的生命力在于其优胜的抗搅扰才能和性价比,这些都来源于它共同的物理层与数据链路层的规划。

1 物理层[13]

1.1 信号状况

  CAN总线的信号状况为2种:隐位与显位。当总线上呈现隐位与显位发送的竞赛时,总线上的终究结果是显位。这种二值特性对CAN总线的可靠性与其他特性有很大奉献。CAN总线信号的二值且“单稳态”的特性为它的数据链路层发明晰条件,即CAN总线上能够容许多主发送、竞赛占线的办法。这极大简化了音讯的调度。为使总线上的节点均有时机发送,有些总线选用“主从办法”,这种办法使总线的使用率较低,且从节点音讯发送的等待时刻较长。有些总线选用“令牌办法”,但令牌的丢失和重复需求特别的处理机制。

  许多总线是不容许总线上有抵触的,因为抵触发生后,不同的接纳节点得到的电平结果是不同的。这使它们对总线上发生的事情在时刻上与内容上发生不同的解说,退出抵触就会有时刻的先后,然后导致节点间状况的不同步。可是因为搅扰的存在,节点或许会有误动作,发生不期望的抵触。为此,要添加需多辅佐的设备来避免抵触,例如在时刻触发协议中常常选用的总线监守。在CAN总线里,抵触的处理因为该信号的二值且“单稳态”的特性变得简略,报错帧能够使一切节点(包含发生抵触的节点)简单地获得数据的一致性和节点状况的同步。

  FlexRay总线的状况有低功耗搁置、搁置、“0”、“1”四种。在正常作业形式时,总线接纳部分只认可后3种状况。与RS485总线不同的是,FlexRay收发器有一个判别搁置状况的机制。当总线电平差处于某规模内——uBusActiveLow(最低-450 mV)~uBusActiveHigh(最高450 mV)一段时刻(dIdleDetection,最小50 ns,最大250 ns)后,它就将RxEN引脚置”1”,并将RxD置”1”。当总线电平超出该规模一段时刻(dActivityDetection,最小100 ns,最大300 ns)后,就退出搁置状况。因而它不会在搁置状况受搅扰而轻易地误判为新帧的开端。而总线上因搅扰而引起抵触的景象可由另设的总线监守加以避免。当然,这些功用的添加意味着本钱的添加。

1.2 信号电平与共模电压

  信号电平的凹凸有两层影响: 一是搁置时有搅扰被误认为是传送的发动信号;二是传送逻辑信号时因搅扰而发生误码。

  RS485接纳器的阈值很小,总线电压差小于-200 mV时为“0”,大于200 mV时为“1”。因而,200 mV起伏的搅扰就或许引起误发动,而形成误码的搅扰起伏为400 mV。RS485总线的共模电压为-7~+12 V。

  CAN只需2种状况: 当总线电压差小于0.5 V时,接纳为隐位(即逻辑“1”);大于0.9 V时,为显位(即逻辑“0”)。0.5~0.9 V为改变的过渡区。总线隐位电压差的正常值为0 V,因而或许引起误发动的最小搅扰为0.5 V;显位电压差的正常值为2.0 V,合格的网络显位电压差的最小值为1.2 V,引起误码的最小搅扰为0.3 V。CAN总线的共模电压为-2~+7 V。

  前面已介绍了FlexRay总线在总线搁置与正常通讯的过渡状况,不再重复。它的接纳器逻辑“1”电平为uData1(最低150 mV,最高300 mV),逻辑“0”电平为uData0(最低-300 mV,最高-150 mV)。因而引起误码的最小搅扰为0.3 V。FlexRay总线的共模电压为-10~+15 V。

1.3 采样

  选用RS485收发器的总线往往与UART相连,它们一般在发动电平负跳变后的1/2位处对总线的逻辑值作采样判别。因而,当总线搁置时,若搅扰的起伏满足大,且持续时刻大于1/2位,就或许发生误发动。

  CAN总线的位值一般在80%~90%位处采样[4],因而它能忍受的误发动搅扰不光起伏大,并且时刻长。正常传送时,高速CAN的位采样为1次,低速时能够有3次(例如TJA1000中由SAM位操控)。这意味着能够抵挡1次搅扰引起的过错,因为没有看到这3次采样的距离有多大,只能估量它是以Tq为单位。高速时完结3次采样的或许性在于厂家产品的规划,与CAN规范无关,假如以1 Mbps核算,每位分为25个Tq,那么在3次采样下,能够抵挡的搅扰持续时刻为40 ns。

  FlexRay总线容许的误发动时刻与位采样点方位无关,由dActivityDetection决议,最小为100 ns。正常传送时,依据FlexRay数据链路层3.2.2的规则,每一位采样cSamplesPerBit(=8)次,将最近的cVotingSamples(=5)次按大都进行表决,即可得到其时的总线接纳值(zVotedVal)。因而这种办法能够抵挡1/4位长度的搅扰,按FlexRay 10 Mbps核算,抵挡的搅扰持续时刻为25 ns。

2 媒体存取与逻辑链路层[2,5]

2.1 位填充

  CAN总线的位填充是在曾经的位填充做法的根底上开展起来的。在高级数据链路操控规程(HDLC)顶用01111110作报头与报尾的标志位;在其他部分为了不致引起误解,选用每接连5个“1”之后填入一个“0”的办法,接纳后将填入的0去掉。CAN总线不只在接连5个“1“之后填入一个“0“,并且在5个“0“之后填入一个“1”,接纳后将填入位丢掉。CAN总线这样做不只为报错机制(报错帧)发明晰条件,并且还有2个对信号传递有利的方面:一是为CAN总线的位同步发明晰较短的同步距离,有利于进步同步精确度;二是有利于在总线上引进当令的反向放电,削减因总线长时刻同一极性充电形成的物理层误判。

  可是位填充办法削弱了CAN总线的CRC避免过错漏检的才能[6]。发生在填充位的过错会改变位流的相位,只需有2次填充位错就会使本来的部分位流提早或推后1位,而此刻仍有CRC查看通过的或许。通过仿真办法注入位错,求出CRC查看漏检犯错的概率为1.3×10-7,而不是CAN总线宣称的一切5位以下的过错均能检出。位填充的另一个缺陷是形成数据运送率的下降以及帧长度的不确认性。FlexRay总线没有用位填充的办法,运用其他办法完结位同步。

2.2 帧编码与解码

  关于CAN总线的帧已有许多文献介绍,这儿不再赘述。FlexRay总线则杂乱得多,其间对用户组织带宽起要害作用的是扩展字节的概念。依据FlexRay总线数据链路层3.2.1.1.3的规则,每一个字节开端处要有一个由“1”和“0”组成的字节开端序列(Byte Start Sequence,BSS),然后才是要传送的8位数据。FlexRay容许的最大时钟改变cClockDeviationMax为1 500×10-6(0.15%),因而收发之间或许差0.3%,每333次就或许差1次采样。如前所述,1位要采样8次,那么不到44位就会差1次采样,因而除了时钟自身的偏移与速率要校对外,FlexRay中也有位同步的机制。

  位同步有2个条件:同步机制已使能;zVotedVal由高到低的跳变。正常传送时,同步机制的使能发生在BSS的zVotedVal为高时。当同步时,将保存zVotedVal的cSamplesPerBit位循环计数器置2;当循环计数器计数为cStrobeOffset(=5)时,将该zVotedVal取作真实送到协议其他部分的方位。考虑到完结位同步必须有BSS这个要素,一个FlexRay信道即便不算其他开支,至多只能传送8 Mbps的实践数据;再加上其他的开支,例如发送帧之间的距离cChannelIdleDelimiter(=11位)等,有用的负载更小。

2.3 回读

  CAN总线发送节点能够在送出1位时又把它从总线上读回来,其他总线没有这个功用。这个功用供给了无损位裁定的根底,让优先级高的音讯获得在总线上持续传送的权利;一起,增强了发送节点早一点检测出过错的才能,一旦有错就可发送报错帧并中止本来帧的传送,节省了犯错后无用部分的持续传送带宽。

2.4 过错束缚

  CAN总线对过错的检测首要是编码与解码的进程,例如bit错、填充错、ACK错、CRC错和格局错。关于时刻同步,并未将其视为重要问题。例如当重同步差错大于重同步跳动宽度时,肯定会呈现位同步的失利,形成数据传送的过错。这种过错会被误认为是由其他原因引起,而不能及时发现。有时候它也成为Babbling idiot失效的原因。CAN总线对瞬态毛病与永久性毛病选用分类的束缚办法。有错时收发错计数器添加速,正常时收发错计数器削减慢,按收发错计数器的值把节点分为主动报错状况、消沉报错状况和离线状况。处于消沉报错状况的节点有或许无法正确接纳到帧。犯错过于频频时把有永久性毛病倾向的节点从总线上切除,虽然被切除的节点失去了通讯才能,但其他节点间的通讯或许免除了打扰,这不失为一种有用的毛病时功用逐渐退化的战略(scalable degradation)。

  FlexRay 总线的检错包含解码进程中的错以及时刻同步进程中的错,例如数据帧接纳时是否有格局错、CRC错,符号(symbol)传送时高、低的时刻长度是否在规模内。由所以时刻触发协议,通过各涣散的节点预订发送时刻与实践发送时刻的差进行批改,树立同步时基,对发送时刻的超限要求更严。它对时刻同步中发生的问题也采纳了一种逐渐退化的战略。它有一个协议运转操控的机制(POC),POC有3个状况,为POC: normal active(活跃),POC: normal passive(消沉)和POC: halt(中止)。其间,活跃状况下,同步处于容许边界内,不会损坏其他节点的同步;消沉状况下,同步已恶化到不能再发送的境地,若再发送就有或许超出它的窗口而与其他节点抵触,但它容许接纳,以获得满足的同步重返活跃状况。在自检或完好性查看(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[3],假如CAN总线也限于24 m,则依据每米信号传送迟后约5 ns核算,CAN位时刻中传送段的通道传送部分为240 ns。若规划驱动器的呼应时刻为40 ns左右(如SJA1000),那么CAN总线的数据传输速率到达2~3 Mbps也是或许的,虽然ISO118981限制1 Mbps为上限,但它并非技能的极限。

  FlexRay总线在抗共模搅扰上比CAN总线强,可是犯错并不只由共模搅扰引起,例如来自电源的传导搅扰也会引起包含比较器在内的的一切电路犯错,所以并不能确认FlexRay总线的硬件可靠性高于CAN总线。在确保传送数据的一致性方面,2种协议都要有运用层的处理办法,FlexRay总线并未供给直接可用的机制。作为通讯的基层,它们都采纳的是功用逐渐退化的战略。也有人在研讨冗余通道、星形拓扑等办法在CAN总线中怎么完结,并非不或许。

  就CAN总线而言,FlexRay总线是一种应战,可是在单信道的总线拓扑运用中FlexRay总线并不构成威胁。因为现在高级车内现已用了不止一个CAN总线体系,用双信道的FlexRay替代多个CAN总线体系有或许在性价比上获得发展,可是与现在出产的运用CAN总线的ECU存在兼容问题,且本钱较高,这些问题的处理还有待时日。虽然CAN总线有必定限制,乃至还有缝隙,但对CAN总线的改善还在持续,在未来的5~10年里CAN总线依然有很大的性价比优势。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/234137.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部