RS485和CAN总线布线规则及常见问题解答
发布时间:2023-09-11 10:42 浏览次数:4165

 德阳四星电子技术有限公司

关键词:RS485布线、CAN布线、RS485终端电阻、RS485支线问题、RS485接口隔离

 

1、概述

笔者结合多年工程实践经验,与广大同行讨论一番关于RS485和CAN总线布线工程中的一些常见问题。本文讨论的内容适合基于这些物理接口的各种底层和上层协议总线,如RS485、PROFIBUS、PPI、MPI、MODBUS、MODBUS+、CC-Link……;CAN、CAN FD、DeviceNet、CANopen、SDS、NMEA2000、 SAE J1939、SAE J2284 等。

众所周知,RS485和CAN是一种采用双绞线(特性阻抗为120欧姆)传输的、手牵手无支线、总线两端必须有终端电阻的一种线性总线结构,如图1-1所示。


图1-1 标准的RS485和CAN总线连接拓扑

 

为图示清晰,后面均采用下面图1-2所示的简洁图示:


图1-2标准的RS485和CAN总线连接拓扑简洁图示

 

2、RS485和CAN总线的终端电阻

关于RS485和CAN总线终端电阻的详细论述请参看相关教科书。简单的表述是:当信号在电缆中传输时,由于电缆的线间电容、电感和电阻的作用,会产生信号反射,从而引起波形畸变使得通信数据出错。在电缆的两端各并接一只与电缆特性阻抗相同的电阻,就可以消除这种信号反射,从而保证数据正常传输,这两个电阻就叫做终端电阻。双绞线的特性阻抗通常为120欧,所以终端电阻的标准值通常也为120欧。如上面图1-1和图1-2所示。

由于信号是双向传输的,所以一段总线电缆的终端电阻是2个,需分别安装在一段电缆的两端。当总线中安装有中继器、集线器、光纤转换器等部件后,电缆就被这些部件分割成了几段,每段电缆的两端都须安装终端电阻,以此类推,如图2-1、图2-2、图2-3所示。


图2-1 有中继器时的终端电阻配置



图2-2 有集线器时的终端电阻配置


 

 

图2-3 有光纤转换器时的终端电阻配置

 


2.1、RS485和CAN总线电缆超过多长才需安装终端电阻?

这个问题与通信波特率(通信速率)密切相关,笔者实际测试的结果是,RS485波特率为9.6Kbps时,电缆长度几百米无需终端电阻也能正常通信,波特率12Mbps时,电缆长度十几米必须有终端电阻才能正常通信;CAN总线波特率为1Mbps时,电缆长度几米也必须有终端电阻才能正常通信。总之笔者认为,不管电缆长短,都应该有终端电阻,遵守规则总是正确的。

 

2.2、为什么有的RS485总线两端必须安装有源终端电阻

先看一个案例:如图2-4,两台西门子S7-200PLC之间通讯,电缆长度十几米,没有120欧终端电阻时通信正常,有120欧终端电阻时则不能通信。


图2-4


分析如下:

如图2-5是S7-200PLC的RS485通信口简化图,为了保证总线上能够挂接数十个RS485站点,PLC的RS485接口上只能设计两个100K的弱上拉电阻和下拉电阻(也称为偏置电阻,该电阻不能过小,否则节点挂多了时会把总线拉死!)。

 

图2-5 S7-200PLC的RS485接口简图

 

接入120欧终端电阻后,在RS485总线上产生偏置电压为:5×0.12 /(100+100+0.12)=0.003V,众所周知,RS485芯片的门限电压为±0.2V,也就是说RS485输入电压在-0.2V~+0.2V之间时,其接收器的输出是不确定的,如果接收器输出为逻辑0 ,就会使CPU收到连续长0信号而无法正常通信。

西门子为解决这种问题设计了两种产品:总线连接器和有源终端电阻,二者原理相同,都是在终端电阻上增加了390欧的上拉电阻和下拉电阻,如图2-6所示,RS485空闲时,在总线上产生逻辑1偏置电压为:5×220 /(390+390+220)=1.1V,或5×120 /(390+390+120)=0.66V,该电压大于RS485的门限电压0.2V,从而保证了RS485接收器输出为逻辑1,使总线处于空闲待机状态。


图2-6 RS485总线上拉下拉电阻的原理

 

西门子采用的终端电阻是220欧,笔者测试的结果是:电缆长度1000米,RS485芯片发送器发送信号,用示波器观察该RS485芯片的接收器输出,电缆的两端都有390欧的偏置电阻时,终端电阻为220欧和120欧都没有信号反射,当电缆只有一端有390欧偏置电阻时,终端电阻为120欧仍然没有信号反射,220欧时有信号反射。

图2-7是西门子总线连接器原理图,图2-8是四星电子有源终端电阻原理图。


图2-7 西门子总线连接器原理图

 

图2-8 四星电子有源终端电阻原理图

 

另一种结构的RS485接口电路,如CC-Link,如图2-9所示,这种RS485接口电路无需在设备外部设计上拉下拉电阻,直接并接120欧终端电阻即可,即使总线短路也不会使RS485接收器输出长逻辑0给CPU,读者可自行分析。


图2-9 CC-Link的RS485接口电路

 

CAN总线的门限电平为≥0.9V才有效,因此也就不存在上拉下拉电阻问题了,直接在电缆两端并接120欧终端电阻即可。


3、RS485和CAN总线的支线问题

支线问题往往被很多用户忽视,当支线较多或太长时会产生一些奇怪的通信故障。支线是指RS485或CAN接口到总线的那一段电缆,如图3-1所示。


图3-1 RS485和CAN总线的支线

 


当RS485或CAN信号在总线上传输时,会在支线中产生回波使得信号波形畸变,当支线长度过长或者支线站点过多时尤其严重。常见的错误支线如图3-2所示。


图3-2 RS485和CAN常见错误支线

 


3.1、支线到底允许多长?

相关文献和产品说明书上讲RS485或CAN的支线允许长度时,几乎没有统一的数据,有说允许支线最长1米,有说允许支线最长5米,特别是CAN总线的支线问题,其允许每个支线长度和支线数量等还有很复杂的估算公式。其实支线长度也是和通信波特率密切相关的,笔者认为,施工布线成无支线为上策,避免不必要的麻烦。

 

3.2、怎样做到无支线?

对于接口形式是DB9插座的现场总线,如PROFIBUS、PPI、MPI、CANOpen,西门子等公司早已设计有PROFIBUS总线连接器(俗称DP插头)、CANOpen总线连接器等部件,只要使用这些连接器就可实现无支线的网络结构,PROFIBUS总线连接器的原理图见前面的图2-7,下面图3-3是CANOpen总线连接器原理图。


 

图3-3 CANOpen总线连接器原理图

 

 

 

现在新型的DeviceNet连接器采用了一分二的双孔连接器端子,同样也实现了无支线的网络结构,如图3-4所示。

 

图3-4 DeviceNet一分二连接器

 

 

对于那些只有一对接线端子的RS485和CAN接口,可采用双线并接一个端子的方式来实现无支线结构,如图3-5所示。


图3-5 双线并接的无支线结构

 


3.3、无法避免支线怎么办呢?

在RS485和CAN总线布线施工时,有些时候由于环境局限或本身就需要将电缆分支引到别处,这时就必须在分支处安装中继器,经过中继器就产生了一条新的总线,且传输距离符合RS485标准,如图3-6所示。注意,图中的中继器在总线段1中是作为一个站点(节点),在总线段2和总线段3中是作为一个终端。


 

图3-6 RS485和CAN总线在分支处须安装中继器

 

 

4、RS485信号极性标注符号

RS485标准中没有规定信号正负极性的符号,因此各厂家产品标注RS485信号正负极性的符号各不相同,中国的产品以及日本三菱的PLC、CC-Link等工控产品多以A(或DA)表示RS485信号正、B(或DB)表示RS485信号负。而西门子、欧姆龙、施耐德等则相反,用B表示RS485信号正、A表示RS485信号负。 用户经常因此犯糊涂。

判断RS485信号正负极性很简单:取下电缆,用万用表电压档测量一下RS485两个端子上的开路电压极性便知,RS485开路时,即使内部没有设计上拉下拉电阻,也总会有一定的残余电压。

四星电子的RS485正负极性符号为D+、D-,不易混淆。

 

5、RS485和CAN的信号地和屏蔽地

RS485和CAN总线电缆通常使用带屏蔽层的双绞线电缆,屏蔽层需接到各个站点的机壳地(屏蔽接地,符号通常为FG、SLD),这是屏蔽电缆接地的常规做法,很好理解,不用赘述。

很多RS485和CAN总线产品还有一个信号地(通常符号为SG、DG)端子,按照相关标准上的表述是需要用一根导线将所有站点的信号地连通,使之成等电位,以免各站点地电位差太大损坏RS485或CAN器件。如图5-1所示。


 

图5-1 将各站点的信号地SG连成等电位

 

CC-Link、DeviceNet、CANOpen等在产品上和通信电缆均设计了这个信号地线,而PROFIBUS从产品到通信电缆均没有设计这个信号地;众多的RS485、CAN总线在实际工程中其实都是使用二芯双绞线,大多数的用户都没有连接各站点的信号地线。

笔者认为,如果各站点的接口是经过隔离的,则完全没有必要连接第三条信号地线,因为隔离后各站点的信号地是各自独立不相干的,不会形成地线回路。

 

6、RS485和CAN总线的传输距离

RS485和CAN总线的传输距离除了与使用的双绞线有关外,还与通信波特率密切相关,波特率越低传输距离越远,反之波特率越大传输距离越短。RS485和CAN总线均规定了所使用双绞线的参数,如表6-1、表6-2所示。


表6-1  RS485专用双绞线电缆参数

通    用  特  性

规           范

类型

屏蔽双绞线

导体截面积

24AWG(0.35mm2)或更粗

电缆电容

<60pf/m

特性阻抗

120欧

 

 

表6-2  CAN总线专用双绞线电缆参数

通    用  特  性

规           范

类型

屏蔽双绞线

导体截面积

0.5mm2 ,当长度超过1km时,要求截面积≥1.5mm2

电缆电容

<60pf/m

特性阻抗

120欧


有的电缆生产厂家为节省成本,在铜线中添加了其它廉价合金,这将使得电缆的电阻值增大,在购买电缆时需指明为无氧铜电缆。用户可对电缆进行一下简单粗略的测试:

用万用表电阻档测量电缆的电阻值、游标卡尺测量导体的直径(换算成截面积),根据导体电阻计算公式R= ρL/S,ρ:铜的电阻率为0.017,L:电缆长度(米),S:电缆截面积(mm2),根据公式可判断电缆是否为纯铜材质。

用万用表电容档测量电缆的线间电容,每米的线间电容应小于60pf。


表6-3 不同波特率下RS485的最大传输距离

波特率(bps)

9.6K

19.2K

45.45K

93.75K

187.5K

500K

1.5M

3M

6M

12M

最大电缆长度(米)

1200

1000

400

200

100

 


表6-4 不同波特率下CAN总线的最大传输距离

波特率(bps)

5k

10k

20k

50k

100k

125k

250k

500k

1M

最大电缆长度

10km

5km

3km

1km

500m

400m

200m

100m

30m

 

为什么CAN总线电缆长度超过1km时,要求双绞线导体的截面积≥1.5mm2  ?

几乎所有关于CAN总线的教科书和产品手册上都提到CAN总线在通信速率为5Kbps时通信距离可达10公里,10Kbps时通信距离可达5公里,但用户在实际使用中却达不到说明书上注明的最大通信距离,原因何在?这里人们忽略了传输线的截面积问题,因为CAN在远距离传输时需要较粗的双绞线!我们假定不考虑通信线路的电感和线间电容,CAN数据发送和接收如下图6-1所示:


图6-1 CAN总线信号的发送与接收


图中:Rt为终端电阻,Rt=120欧;R为双绞线电缆电阻(二根线的电阻),阻值由线路的长度和粗细确定;Vo为CAN发送器输出电压,当接上终端电阻Rt时,Vo=2V;Vi为CAN接收器的输入电压,Vi≥0.9V时信号有效。

当发送器发送信号时Vo=2V,接收器输入电压Vi≥0.9V时信号被接收,这时允许通信线路的最大压降为:Vr=Vo-Vi=2-0.9=1.1V。线路电阻为:R=RtVo/Vi-Rt=120×2/0.9-120=146欧,线路导线的截面积为:S=ρL/R    S::导线截面积mm2,ρ:铜的电阻率,ρ=0.017,L:线路长度(二芯),当通信距离为10公里时L=20000米,由此得出通信距离为10公里时的最小导线截面积为:S=0.017×20000/146=2.3 mm2。考虑到双绞线的电感和线间电容,截面积应该大于2.3 mm2,实际上传输10km距离时,双绞线截面积应选2.5mm2以上。

实际应用中,如果已敷设好截面积较小的双绞线,可将总线两端的终端电阻适当增大,比如可在120欧~390欧之间选择来试试,这样可提高CAN接收器分得的信号电压,因为低速通信时,较大的终端电阻产生的信号反射往往在容忍范围内。下表6-5是实测的CAN总线在不同传输距离和不同波特率下可使用的终端电阻经验数据。


表6-5  CAN总线不同传输距离和波特率可使用的终端电阻经验数据

传输距离

波特率(bps)

终端电阻

30m

1M

120欧

40m

800K

120欧

100m

500K

120欧

200m

250K

120欧

400m

125K

120欧

500m

100K

120欧

1km

50K

120欧

3km

20K

180欧

5km

10K

270欧

10km

5K

390欧

 

影响传输距离的因素除以上所述外,还和工业现场的干扰相关,特别是与大功率变频器通信时,其传输距离会大大的缩短。必要时需要增加安装中继器或隔离器来解决这些问题。西门子的相关产品说明书就表述得很保守,规定非隔离的RS485口传输距离不能超过50米,我们实测结果远不止50米,说明人家是考虑了现场干扰等综合因素。所以我们在实际工程中所使用的电缆长度最好不要超过标准规定的70%为宜,凡事需留有一定的余地。

 

7、RS485和CAN总线的星型连接

手牵手一条总线走到底的总线型连接是RS485和CAN的经典网络拓扑,但也存在以下缺点:

●  某个站点故障时可能会影响整条总线。

  排查故障麻烦,特别是站点较多时,要找到故障站点很费时。

  总线如遭遇雷击浪涌,可能损坏所有连接在总线上的站点设备。

  在某些环境下施工麻烦。

  对于总线型光纤连接,某个光纤适配器停电时,则后面的站点就无法进行通信了。

 

星型连接的网络拓扑就能很好的解决上述问题,如图7-1所示为使用集线器后星型连接拓扑。

 

图7-1 RS485和CAN总线的星型连接

 

四星电子为RS485和CAN总线的星型连接拓扑研发出了系列集线器,如组合式RS485集线器、组合式CC-Link集线器、组合式LonWorks集线器、PROFIBUS集线器、CAN总线集线器、AS-i总线集线器等系列产品。如图7-2所示。

 

 

 

图7-2 四星电子各种现场总线集线器

 

 

 

 

 

8、RS485和CAN总线接口隔离

接口隔离是用光耦将RS485或CAN接口与内部电路隔离开来,这样一来总线上的各个站点通信口之间就没有电的连接,也不会形成地线回路,起到了很好的抗共模干扰的作用,各站点的信号地就不必用导线连成等电位。在有些场合,接口隔离是必须的,如变频器的RS485口或PROFIBUS口,变频器的工作原理决定了其RS485口在输出正常数据信号的同时,往往还夹杂着一些杂波干扰信号,这些信号时常会使传输数据出错,现场实践中通常表现为通信时通时断。

用RS485隔离器可以解决或改善这种问题,如图8-1所示。图中接变频器的是RS485隔离器,接PLC的是隔离型的PROFIBUS总线连接器。

 

 

图8-1 西门子PLC与变频器隔离通信方案

 

 

9、RS485和CAN总线接口保护

图9-1是四星电子出品的RS485和CAN总线通用接口保护器BH-485,从图中可看出该保护器设计为二级保护,第一级采用陶瓷放电管吸收雷电浪涌,然后经过自恢复保险限流到第二级TVS保护,三个TVS器件分别对信号线之间、信号线与信号地之间进行钳位保护。

该保护器内还带有120欧终端电阻,通过短路S1、S2端子来接入终端电阻,而且该产品设计成J1、J2双接线端子,这样便于实现手牵手的无支线的连接方式。

 

图9-1 RS485和CAN浪涌保护器

 

10、RS485站点上电时对总线的影响

在实际工程中,有的从站是间歇式工作的,即需要时通电连入总线,不用时则关断从站电源。在设备上电的过渡过程中,其RS485口输出是不确定的,可能输出逻辑1或逻辑0电平短暂的拉死总线,从而造成通讯闪断。

如图10-1的接口电路设计可以防止这种现象的发生。

当上电瞬间,C1电压不能突变,或非门U1的1脚为高电平,输出3脚为低电平,确保了RS485芯片U2的发送器关闭,不会对总线造成扰动;当经过t=R1×C1时间后,U1的1脚变为低电平,使能信号EN才开始控制RS485芯片U2的数据收发。二极管D1的作用是反向电压钳位保护。

 

图10-1 上电瞬间不会对总线产生扰动的电路

 

CAN总线站点上电的过渡过程中,CANH、CANL是处于高阻悬浮状态,不会对总线产生影响。



文章下载地址:http://www.fourstar-dy.com/uploads/files/20230911/31cedbec0dce7818842f5e19c37e1333.pdf


 

 

德阳四星电子技术有限公司

地   址:四川省德阳市庐山南路二段88号H栋二楼

电   话:0838-2515543  传真:0838-2515546

网   址:http://www.fourstar-dy.com