485特点
通信协议:UART
通信速率:最高可达10Mbps,在1200m时,可达100Kbps。
通信距离:最大为1200m。根据485总线结构理论,在理想环境的前提下,485总线传输距离可以达到1200米。其条件是通讯线材优质达标,波特率为9600,只负载一台485设备,才能使得通讯距离达到1200米,所以通常485总线实际的稳定的通讯距离往往达不到1200米。如果负载485设备多,线材阻抗不合乎标准,线径过细,转换器品质不良,设备防雷保护复杂和波特率的提高等等因素都会降低通讯距离。
通信电平:差分信号,抗干扰能力强,逻辑“1”以两线间的电压差为+(26)V表示;逻辑“0”以两线间的电压差为-(26)V表示。接口信号电平比RS232降低了,不易损坏接口电路的芯片。+2~-2V为不确定状态,应添加上下拉电阻避免这种情况。在较长的电缆长度上,接收器接收到的电压可能会降低到+/- 200 mV,这对于RS-485仍然是完全可以接受的,这也是RS-485的优点之一。
通信方式:异步半双工串行通信
拓扑结构:支持点对点通信,也支持一主多从组网通信(485总线不像CAN一样,任何结点都可以作为主机,485总线上主机一般出厂时就固定,从机也固定),一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点
应用场景
工业控制
485通信在工业自动化领域中应用非常广泛。在工业控制系统中,485通信可以用于连接PLC(可编程逻辑控制器)、传感器、执行器等设备,实现设备之间的数据交换和控制。例如,在一条生产线上,485通信可以实现各个设备之间的协调工作,确保生产线的正常运行。一体化伺服电机(支持485通信)
家庭自动化
随着物联网的兴起,家庭自动化逐渐成为了一个新兴的领域。485通信可以用于连接家庭自动化设备,如温度传感器、智能灯具、智能家电等,实现设备之间的互联互通。通过485通信,这些设备可以相互协作,实现智能化的家居生活。
其他领域
除了工业控制和家庭自动化领域,485通信还广泛应用于电力、交通、医疗、安防监控等领域。例如,在电力系统中,485通信可以用于监测电力设备状态、采集电能数据等。
影响通信性能的因素
匹配
对RS-485总线网络一般要使用终接电阻进行匹配,终端电阻主要是为了匹配通信线的特性阻抗,防止信号反射,提高信号质量。但在短距离与低速率下可以不用考虑终端匹配。那么在什么情况下不用考虑匹配呢?理论上,在每个接收数据信号的中点进行采样时,只要反射信号在开始采样时衰减到足够低就可以不考虑匹配。
但这在实际上难以掌握,美国MAXIM公司有篇文章提到一条经验性的原则可以用来判断在什么样的数据速率和电缆长度时需要进行匹配:当信号的转换时间(上升或下降时间)超过电信号沿总线单向传输所需时间的3倍以上时就可以不加匹配。例如具有限斜率特性的RS-485接口MAX483输出信号的上升或下降时间最小为250ns,典型双绞线上的信号传输速率约为0.2m/ns(24AWGPVC电缆),那么只要数据速率在250kb/s以内、电缆长度不超过16米,采用MAX483作为RS-485接口时就可以不加终端匹配。
一般终端匹配采用终接电阻方法, RS-422在总线电缆的远端并接电阻,RS-485则应在总线电缆的开始和末端都需并接终接电阻。终接电阻一般在RS-422网络中取100Ω,在RS-485网络中取120Ω。相当于电缆特性阻抗的电阻,因为大多数双绞线电缆特性阻抗大约在100~120Ω。这种匹配方法简单有效,但有一个缺点,匹配电阻要消耗较大功率,对于功耗限制比较严格的系统不太适合。只有在485通信距离超过300米的情况下,要在485通讯的开始端和结束端增加终端电阻。尤其是485总线上设备数量较少时。当设备数量较多时(如超过22台)。一般不需增加终端电阻,因为终端电阻会降低485总线的负载能力。可以原理图设计上加匹配电阻,实际使用时根据需求焊接。
另外一种比较省电的匹配方式是RC匹配,利用一只电容C隔断直流成分可以节省大部分功率。但电容C的取值是个难点,需要在功耗和匹配质量间进行折衷。
还有一种采用二极管的匹配方法,这种方案虽未实现真正的“匹配”,但它利用二极管的钳位作用能迅速削弱反射信号,达到改善信号质量的目的。节能效果显著
连接方式
网络拓扑一般采用菊花链总线型结构,不支持环形或星形网络,现场施工人员为了方便使用星型也是可以通信,只是会不稳定。
在构建网络时,应注意如下几点: 1、采用一条双绞线电缆作总线,将各个节点串接起来,从总线到每个节点的引出线长度应尽量短,以便使引出线中的反射信号对总线信号的影响最低。所示为实际应用中常见的一些错误连接方式(a,c,e)和正确的连接方式(b,d,f)。a,c,e这三种网络连接尽管不正确,在短距离、低速率仍可能正常工作,但随着通信距离的延长或通信速率的提高,其不良影响会越来越严重,主要原因是信号在各支路末端反射后与原信号叠加,会造成信号质量下降。 2、应注意总线特性阻抗的连续性,在阻抗不连续点就会发生信号的反射。下列几种情况易产生这种不连续性:总线的不同区段采用了不同电缆,或某一段总线上有过多收发器紧靠在一起安装,再者是过长的分支线引出到总线。 总之,应该提供一条单一、连续的信号通道作为总线。
线材使用带屏蔽的双绞线,线径最好在0.75或者1.0的,不建议使用网线,网线有八根线会浪费线,并且现在网线很细,不满足485通信要求。走线尽量远离电源线、变频器、变压器等强电压干扰源。
上拉电阻、下拉电阻
在A上加上拉,B上加下拉电阻,主要原因是:RS-485总线在空闲状态时,电平是不固定的,即电平在-200mV~+200mV之间,收发器可能输出高也可能输出低。UART在空闲时需要保持高电平的,如果此时收发器输出一个低电平,对UART来说是一个起始位,会导致通信异常,建议RO外接10kΩ上拉电阻。其中:
① A上加上拉,B上加下拉,接反数据通信也可能出错。
② 某些收发器内部集成上下拉电阻,则外部不需要再添加。
影响通讯性能的第三个因素是纯阻性负载(也叫直流负载)的大小。这里指的纯阻性负载主要由终端电阻、偏置电阻和RS-485收发器三者构成。 在叙述EIARS-485规范时曾提到过RS-485驱动器在带了32个节点,配置了150Ω终端电阻的情况下,至少能输出1.5V的差分电压。一个接收器的输入电阻为12kΩ,整个网络的等效电路如图5所示。按这样计算,RS-485驱动器的负载能力为:RL=32个输入电阻并联||2个终端电阻=((12000/32)×(150/2))/(12000/32)+(150/2))≈51.7Ω 现在比较常用的RS-485驱动器有MAX485、DS3695、MAX1488/1489以及和利时公司使用的SN75176A/D等,其中有的RS-485驱动器负载能力可以达到20Ω。在不考虑其它诸多因素的情况下,按照驱动能力和负载的关系计算,一个驱动器可带节点的最大数量将远远大于32个。 在通讯波特率比较高的时候,在线路上偏置电阻是很有必要的。偏置电阻的连接方法。它的作用是在线路进入空闲状态后,把总线上没有数据时(空闲方式)的电平拉离0电平。 这样一来,即使线路中出现了比较小的反射信号或干扰,挂接在总线上的数据接收器也不会由于这些信号的到来而产生误动作。通过下面后例子了,可以计算出偏置电阻的大小:终端电阻Rt1=Rr2=120Ω; 假设反射信号最大的峰-峰值Vref≤0.3Vp-p,则负半周的电压Vref≤0.15V;终端的电阻上由反射信号引起的反射电流Iref≤0.15/(120||120)=2.5mA。一般RS-485收发器(包括SN75176)的滞后电压值(hysteresisvalue)为50mV,即: (Ibias-Iref)×(Rt1||Rt2)≥50mV 于是可以计算出偏置电阻产生的偏置电流Ibias≥3.33mA +5V=Ibias(R上拉+R下拉+(Rt1||Rt2))(2) 通过式2可以计算出R上拉=R下拉=720Ω 在实际应用中,RS-485总线加偏置电阻有两种方法: (1)把偏置电阻平衡分配给总线上的每一个收发器。这种方法给挂接在RS-485总线上的每一个收发器加了偏置电阻,给每一个收发器都加了一个偏置电压。 (2)在一段总线上只用一对偏置电阻。这种方法对总线上存在大的反射信号或干扰信号比较有效。值得注意的是偏置电阻的加入,增加了总线的负载。在总线允许的范围内,带负载数越多,信号能传输的距离就越小;带负载数据少,信号能传输的距离就发越远。
噪声容限*
在设计RS-485总线组成的网络配置(总线长度和带负载个数)时,应该考虑到三个参数:纯阻性负载、信号衰减和噪声容限。纯阻性负载、信号衰减这两个参数,在前面已经讨论过,现在要讨论的是噪声容限(NoiseMargin)。RS-485总线接收器的噪声容限至少应该大于200mV。前面的论述者是在假设噪声容限为0的情况下进行的。 在实际应用中,为了提高总线的抗干扰能力,总希望系统的噪声容限比EIARS-485标准中规定的好一些。从下面的公式能看出总线带负载的多少和通讯电缆长度之间的关系:Vend=0.8(Vdriver-Vloss-Vnoise-Vbias)(3) 其中:Vend为总线末端的信号电压,在标准测定时规定为0.2V;Vdriver为驱动器的输出电压(与负载数有关。负载数在5~35个之间,Vdriver=2.4V;当负载数小于5,Vdriver=2.5V;当负载数大于35,Vdriver≤2.3V);Vloss为信号在总线中的传输过程中的损耗(与通讯电缆的规格和长度有关),由表1提供的标准电缆的衰减系数,根据公式衰减系数b=20lg(Vout/Vin)可以计算出Vloss=Vin-Vout=0.6V(注:通讯波特率为9.6kbps,电缆长度1km,如果特率增加,Vloss会相应增大);Vnoise为噪声容限,在标准测定时规定为0.1V;Vbias是由偏置电阻提供的偏置电压(典型值为0.4V)。 式(3)中乘以0.8是为了使通信电缆不进入满载状态。从式(3)可以看出,Vdriver的大小和总线上带负载数的多少成反比,Vloss的大小和总线长度成反比,其他几个参数只和用的驱动器类型有关。因此,在选定了驱动器的RS-495总线上,在通信波特率一定的情况下,带负载数的多少,与信号能传输的最大距离是直接相关的。具体关系是: 在总线允许的范围内,带负载数越多,信号能传输的距离就越小;带负载数据少,信号能传输的距离就发越远。
分布电容影响
电缆的分布电容主是由双绞线的两条平行导线产生。另外,导线和地之间也存在分布电容,虽然很小,但在分析时也不能忽视。分布电容对总线传输性能的影响,主要是因为总线上传输的是基波信号,信号的表达方式只有“1”和“0”。在特殊的字节中,例如0x01,信号“0”使得分布电容有足够的充电时间,而信号“1”到来时,由于分布电容中的电荷,来不及放电,(Vin+)-(Vin-)-还大于200mV,结果使接爱误认为是“0”,而最终导致CRC校验错误,整个数据帧传输错误。 由于总线上分布影响,导致数据传输错误,从而使整个网络性能降低。解决这个问题有两种方法: (1)降低数据传输的波特率; (2)使用分布电容小的电缆,提高传输线的质量。
隔离
什么情况需要485隔离
• 多时候,研发人员根本不知道客户拿自己的设备与什么类型的设备通信,万一对方是一个利用几块钱的阻容降压原理将220V降压到12V,与电网完全没有隔离,测试、调试、使用就会非常危险,或者是高压设备绝缘损坏,RS485线上带高压,当485通信接口外部节点连接高压时,极易损坏后端电路,甚至可能会在使用端产生触电。
• 当485通信节点距离太远时,每个节点的参考地都接于本地的大地,实际的大地并不是理想的“0”电位,大地也是导体,也存在阻抗。当大的电流流过大地时,流过电流的大地两端也会存在电势差,当两端大地之间存在较大的压差时,地电势会以共模电压的方式叠加在信号线上,从而有可能超出端口可承受的共模电压范围,影响正常通信,甚至会损坏后端电路。
• 既然节点之间的大地存在电势差,那直接用一根线将两个节点的地再连起来不就可以了?大错特错!这样做只能使情况更加严重,这根长长的导线会与大地形成一个极大的地环路!相信大家在学生时代就知道,一个闭合线圈在变化的磁场里面就会产生电流。50Hz的交流电力线、大型电机等,都是交流磁场的来源,若总线靠近或经过这些地方,地环路就会产生电流高达数安培甚至上百安培。电流流过地环路产生的共模电压就会影响总线的正常通信,除了稳定的磁场来源,一些电力线的浪涌、雷击、高频噪声等瞬态干扰都有可能被这个巨型的“环形天线”拾取,并造成通信异常。
通过上面三个原因我们可以知道当我们同时具备以下三个条件的时候可以省掉隔离电路:
1.保证我们的设备不会接到有可能高压的设备或者有高压短路风险的场景。
2.保证RS485的布线不要超过100米。
3.保证现场没有强磁、强电、大功率的设备
485隔离的具体方案
• 利用光耦隔离实现485隔离
最早的隔离器件为光耦隔离器。在基于CMOS的数字隔离器开发成功以前,市面上所有的隔离器件均为光耦隔离器件。下图为使用传统三个光耦隔离器实现的485隔离电路。
• 利用光耦+数字隔离实现485电路隔离
由于普通的光耦隔离芯片只能适用于通讯速率较低的情况,那么在高速信号传输电路中,485使能信号可继续使用光耦隔离器件对进行隔离,而数据信号通路则可使用高速数字隔离芯片NSi8121N1实现。相较于传统光耦电路,系统传输速率提高,且降低了系统复杂度。下图为利用光耦隔离和数字隔离共同实现的485隔离电路
• 利用数字隔离器实现485电路隔离
只要有光耦隔离存在,就会有使用寿命短、抗共模能力弱、功耗高等缺点,仍极大的限制电路使用场景,而隔离电路全部使用数字隔离器能很好的避免这些问题。下面是使用NSi8131N1芯片实现的485隔离电路。
五、保护
隔离虽能有效抑制高共模电压,但在总线还会存在雷击、浪涌冲击、静电,电源线与485短路的情况,通常在总线端采取保护措施。 在A,B,两端各串一个热敏电阻,在AB接口与热敏电阻中间设有TVS瞬变抑制二极管。没有故障时,热敏电阻接近零,不影响正常通讯,当误接220V时,热敏电阻变的无穷大,相当于通讯回路和外面断开,当故障消失后,热敏电阻阻值降到零,又可以正常使用。
实用电路
TTL转485
USB转485
下图为使用自带TNOW引脚485控制信号的USB 转双串口芯片 CH342F 设计的双路RS485串口电路
若选用型号没有485控制信号,只使用 TXD 和 RXD 两根信号线来完成 485 电路转换的需求也是十分普遍的
实现原理:将RE一直置0,使能接收使能(RE 与 DE 直接短接也可以),将TXD反向后连接发送使能端 DE。TXD 输出为高电平时,连接的485芯片的发送使能无效,总线输出为空闲(高电平),TXD 输出低电平时,发送使能有效。相较于应用1,因有三极管反向电路,信号输出控制会有延迟,高波特率通讯下不建议选用。