RS485和CAN总线布线规则及常见问题解答
德阳四星电子技术有限公司
关键词: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://en.fourstar-dy.com/uploads/files/20230911/31cedbec0dce7818842f5e19c37e1333.pdf
德阳四星电子技术有限公司
地 址:四川省德阳市庐山南路二段88号H栋二楼
电 话:0838-2515543 传真:0838-2515546
网 址:http://www.fourstar-dy.com