总线28讲,CAN总线两端,到底为什么要加120欧姆电阻?

“车辆技术”的朋友们应该都知道,CAN总线是需要在两端添加两个120欧姆的终端电阻的,使线路总电阻为60欧姆。这是一个几乎所有人都知道,但是几乎所有人都说不清楚的知识点。

我们通常情况下都会有这样的经验,给网络加上一个120欧的电阻,报文就能发出去了,把电阻拿掉,报文就发不出去了,所以我们也就习惯了直接给他加上一个120欧的电阻,然后就能通信上了。好像一切都是那么习以为常,就好像每天早上起床之后要刷牙、蹲坑一样,习惯了,也就不在乎是它是为什么了……

但是这到底是为什么呢?我们今天就来深入探究一下。我们的方法为:看波形!因为,多数时候,总线电阻为40、80甚至30欧姆的时候,报文都是可以发出去的,但是这并不意味着网络可靠性也是一样的,我们必须用波形说话。先来一个正确的

搞个标准的波形,两端均接了120Ω电阻,如下图:

看,多么优雅,多么标准?比师娘还要优雅……你看它陡峭的峰,看它波澜不惊的平,看它2.3V的差分电压,简直是教科书般的优秀!到这里,我们只是看到了,正确的CAN报文长什么样,接下来,我们将要分析一下错误的报文是什么样的,以及,它为什么是错误的?缺少终端电阻的CAN报文

当当当当!如下图所示,就是一个缺少终端电阻的CAN报文波形:

好了,至此,真相大白,我们能一目了然地看出来,为什么不加终端电阻,报文会发不出去!对于一个bit,它的上升沿没有任何问题,还是那么陡峭,横看成岭侧成峰,但是,它的下降沿出现了很大的问题,它下不去!那么,我们就要关心一下它了,琢磨一下,它为什么下不去……师子一号认为,这是RC电路的放电效应导致的,此时的R值基本上就是CAN端口的差分阻抗,这个阻值是相当的大。

因为R值过大,无法快速消耗掉总线等效电容上的电能,所以导致放电曲线特别平缓,电压迟迟下不来。发送节点破坏掉报文这个实验中,我们的波特率是500k,师子一号在上面搞了一个时间区间,是一个bit的位宽,我们可以清楚地看到,在该CANL位宽的末尾处,差分电压仍然高达2.247伏,这毫无疑问会被发送节点当成发送错误来处理掉,我发的是隐性,为何总线上是显性?肯定是出问题了,我要报一个主动错误出去!关于错误帧的成因,可以参考下面的文章。总线30讲,关于错误帧,我们要解决引发原因,而不是错误帧本身这就是为什么,不接终端电阻,CAN报文发不出去……根本原因被找到了…电压过高此外,我们还发现,无论是CANH的电压,还是差分电压,都比2个120Ω终端电阻时要高很多,这是电路的电流源效应导致的,但是由于驱动能力有限,它又不能保持恒流……搞个小电阻试试

既然电阻过大不行,那我能不能把电阻搞得尽可能小呢?常识告诉我们,肯定是不行的,太小了就短路了。那么,电阻比较小的时候,究竟是什么样的呢?下图是个总线总电阻为4欧姆的波形:

我们可以清楚地看到,波形已经进入了PID调节模型,你已经看不出它是数字波形了。

CANH、CANL、差分,电压统统波澜不惊,总线完全瘫痪!它的驱动能力也决定了,此时不可能有差分电压。把电阻加大一些

20欧姆我们把总线电阻搞成20欧姆试试:

微观波形

宏观波形我不知道别的CAN卡结果会怎么样,反正我用的同星的CAN卡,20欧姆的时候是可以正常发送并识别报文的,不知道这在业内算不算优秀水平……不服可以来辨一辩但是,这个时候的波形,显然不是可靠的波形,本身已经很紊乱了,到了车上,再叠加点别的干扰,很有可能就会出问题!30欧姆我们把总线电阻搞成30欧姆试试:

微观波形

宏观波形30欧姆时的波形,已经基本上可以使用了,估计对大多数CAN卡都能识别了,毕竟它的差分电压已经达到了1.5V。为什么是120?

一位大神给出了理论推导,如下图所示。

经过一堆复杂的公式推导,最终得出如下结论:

当Rb=Z时,R1=Rb=Z,即无反射。如何测试CAN双绞线的特性阻抗呢?使双绞线终端断开,用万用表电容档测量其阻抗得到Z1;使双绞线短接,用万用表电感档测量其阻抗得到Z2。则双绞线的阻抗Z为Z1乘以Z2的开方。但是师子一号实在是看不太懂呀,对我的知识水平而言,有点超纲了,忘得差不多了。这个应该是线缆信号传输的特性吧,不知道对于数字信号是否适用。大家都说“信号反射”、“阻抗匹配”,我也不太明白本质意义到底是什么,到底在反射什么……我只知道,电阻太大太小都不行,2个120欧姆刚刚好,用邱关源老师的知识来解释,延伸至电阻对波形的影响,我反而觉得更接地气一些。

(0)

相关推荐