建议性标准RS-485作为一种多点、差分数据传输的电气规范现已成为业界应用最为广泛的标准通信接口之一。这种通信接口允许在简单的一对双绞线上进行多点、双向通信、它所具有的噪声抑制能力、数据传输速率、电缆长度及可靠性是其他标准无法比拟的。正因为此,许多不同领域都采用RS-485作为数据传输链路。例如汽车电子、电信设备、局域网、蜂窝基站、工业控制、仪器仪表等等。这项标准得到广泛接受的另外一个原因是它的通用性。RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。
尽管RS-485标准已被广泛接受,但是对于它在实际应用中的一些具体问题并没有得到深入广泛的认识,甚至存在着种种误区,以至于影响到整个系统的性能。本文在回顾RS-485标准的基础上,重点讨论几个实际应用中常被忽视的问题。
RS-485标准回顾
RS-485标准最初由电子工业协会(EIA)于1983年制订并发布,后由TIA-通讯工业协会修订后命名为TIA/EIA-485-A,不过工程师还是习惯地称之为RS-485。RS-485由RS-422发展而来,后者是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mbps,传输距离延长到4000英尺(速率低于100kbps时),并允许在一条平衡线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范,为扩展应用范围,随后又为其增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,这就是后来的EIA RS-485标准。
S-485是一个电气接口规范,它只规定了平衡驱动器和接收器的电特性,而没有规定接插件、传输电缆和通信协议。RS-485标准定义了一个基于单对平衡线的多点、双向(半双工)通信链路,是一种极为经济、并具有相当高噪声抑制、传输速率、传输距离和宽共模范围的通信平台。RS-
485接口的主要特点如下:
· 平衡伟输;
· 多点通信;
· 驱动器输出电压(带载):≥|1.5V|;
· 接收器输入门限:±200mV;
· -7V至+12V总线共模范围;
· 最大输入电流:1.0mA/-0.8mA(12Vin/-7Vin);
· 最大总线负载:32个单位负载(UL);
· 最大传输速率:10Mbps;
· 最大电缆长度:4000英尺。
网络配置
RS-485支持半双工或全双工模式,网络拓扑一般采用终端匹配的总线型结构,不支持环形或星形网络。最好采用一条总线将各个节点串接起来,从总线到每个节点的引出线长度应尽量短,以便使引出线中的反射信号对总线信号的影响最低。图1所示为实际应用中常见的一些错误连接方式(a,c,e)和正确的连接方式(b,d,f)。a,c,e三种不恰当的网络连接尽管在某些情况下(短距离、低速率)仍然可以正常工作,但随着通信距离的延长或通信速率的提高,其不良影响会越来越严重,主要原因是信号在各支路末端反射后与原信号叠加,造成信号质量下降。除此之外还应注意总线特性阻抗的连续性,在阻抗不连续点也会发生信号的反射。例如,总线的不同区段采用不同电缆、某一段总线上有过多收发器紧靠在一起安装、或者是有过长分支线引出总线时都会出现阻抗不连续点。总之,应该提供一条单一、连续的信号通道作为总线。
图1 几种错误的网络连接方式及正确的方式
有关总线上允许连接的收发器数标准并没有做出规定,但规定了最大总线负载为32个单位负载(UL)。每单位负载的最大输入电流为1.0mA/-0.8mA,相当于约12kΩ。为了扩展总线节点数,器件生产厂商增大收发器输入电阻。例如MAX487,MAX1487的输入电阻增加至48kΩ以上(1/4UL),节点数就可增加至128个,96kΩ输入电阻的MAX1483允许节点数可到256个。
总线匹配
是否对RS-485总线进行终端匹配取决于数据传输速率、电缆长度及信号转换速率。UART是在每个数据位的中点采样数据的,只要反射信号在开始采样时衰减到足够低就可以不考虑匹配。有一条经验性的准则可以用来判断在什么样的数据速率和电缆长度时需要进行匹配:当信号的转换时间(上升或下降时间)超过电信号沿总线单向传输所需时间的3倍以上时就可以不加匹配。例如具有限斜率特性的RS-485接口MAX483输出信号的上升或下降时间最小为250ns,典型双绞线上的信号传输速率约为0.2m/ns(24AWG PVC电缆),那么只要数据速率在250kbps以内、电缆长度不超过16米,采用MAX483作为RS-485接口时就可以不加终端匹配。
当考虑终端匹配时,有多种匹配方案可以选择。最简单的就是在总线两端各接一只阻值等于电缆特性阻抗的电阻(图2a)。大多数双绞线特性阻抗大约在100Ω至120Ω之间。这种匹配方法简单有效,但有一个缺点,匹配电阻要消耗较大功率,对于功耗限制比较严格的系统不太适合。另外一种比较省电的匹配方式是RC匹配(图2b)。利用一只电容C隔断直流成分可以节省大部分功率。但电容C的取值是个难点,需要在功耗和匹配质量间进行折衷。除上述两种外,还有一种采用二极管的匹配方案(图2c)。这种方案虽未实现真正的"匹配",但它利用二极管的钳位作用迅速削弱反射信号,达到改善信号质量的目的。节能效果显著。
图2 几种终端匹配方案
引出线
RS-485总线上的每个收发器通过一段引出线接入总线,引出线过长时,由于信号在引出线中的反射,也会影响总线上的信号质量。和前面的讨论一样,系统所能允许的引出线长度也和信号的转换时间、数据速率有关。下面的经验公式可以用来估算引出线的最大长度:
Lmax=(tRISE×0.2m/ns)/10
以MAX483为例,对应于250ns的上升/下降时间,总线允许的最大引出线长度约为5米。
从以上的分析可以看出,减缓信号的前后沿斜率有利于降低对于总线匹配、引出线长度的要求,改善信号质量,同时,还使信号中的高频成分降低,减少电磁辐射,因此,有些器件生产厂商在RS-485接口器件中增加了摆率限制电路来减缓信号前后沿,但这种做法也限制了数据传输速率。由此看来,在选择接口器件时,并不是速率越高越好,应该根据系统要求,选择最低速率的器件。
失效保护
RS-485标准规定接收器门限为±200mV。这样规定能够提供比较高的噪声抑制能力,但同时也带来了一个问题:当总线电压在±200mV中间时接收器输出状态不确定。由于UART以一个前导"0"触发一次接收动作,所以接收器的不定态可能会使UART错误地接收一些数据,导致系统误动作。当总线空闲、开路或短路时都有可能出现两线电压差低于200mV的情况,必须采取一定措施避免接收器处于不定态。传统的做法是给总线加偏置,当总线空闲或开路时,利用偏置电阻将总线偏置在一个确定的状态(差分电压≥200mV)。但这种方法仍然不能解决总线短路时的问题,为此,有些器件制造商将接收门限移到-200mV/-50mV,巧妙地解决了这个问题。例如Maxim公司为MAX3080系列RS-485接口,不但省去了外部偏置电阻,而且解决了总线短路情况下的失效保护问题。
地线与接地
电子系统的接地是一个非常关键而又常常被忽视的问题,接地处理不当经常会导致不能稳定工作甚至危及系统安全。对于RS-485网络来讲也是一样,没有一个合理的接地系统可能会使系统的可靠性大打折扣,尤其是在工作环境比较恶劣的情况下,对于接地的要求更为严格。有关RS-485网络的接地问题很少有资料提及,在设计者中也存在着很多误区,致使通信可靠性降低、接口损坏率较高。一个典型的错误观点就是认为RS-485通信链路不需要信号地,而只是简单地用一对双绞线将各个接口的"A"、"B"端连接起来。这种处理方法在某些情况下也可以工作,但给系统埋下了隐患,主要有以下两方面的问题:
图3 地电位差导致的共模干扰问题
·共模干扰问题。的确,RS-485接口采用差分方式传输信号,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。但应该注意的是,收发器只有在共模电压不超出一定范围(-7V至+12V)的条件下才能正常工作。当共模电压超出此范围就会影响通信的可靠,直至损坏接口。如图3所示,当发送器A向接收器B发送数据时,发送器A的输出共模电压为VOS,由于两个系统具有各自独立的接地系统,存在着地电位差VGPD。那么,接收器输入端的共模电压就会达到VCM=VOS+VGPD。RS-485标准规定VOS≤3V,但VGPD可能会有很大幅度(十几伏甚至数十伏),并可能伴有强干扰信号,致使接收器共模输入VCM超出正常范围,并在信号线上产生干扰电流,轻则影响正常通信,重则损坏接口。
·电磁辐射(EMI)问题。驱动器输出信号中的共模部分需要一个返回通路,如果没有一个低阻的返