摘要:本设计指南讨论如何设计RS-485接口电路。文中讨论了平衡传输线标准的必要性,并给出了一个过程控制设计例子。文中还分标题讨论了线路负载、信号衰减、失效保护和电流隔离。
1. 为什么需要平衡传输线标准
本文的重点在于工业最广泛使用的平衡传输线标准:ANSI/TIA/EIA-485-A(以下简称485)。在回顾一些485标准的关键方面后,通过一个工厂自动化例子,介绍实际项目中如何实施差分传输结构。
远距离、高噪声环境下,计算机组件和外设之间的数据传输通常是困难的,如果有可能的话,尽量使用单端驱动器和接收器。对于这种需要远距离通讯的系统,推荐使用平衡数字电压接口。
485是一个平衡(差分)数字传输线接口,是为了改善TIA/EIA-232(以下简称232)的局限性而开发出来的。485具有以下特性:
- 通讯速率高 – 可达到50M bits/s
- 通讯距离远 – 可达到1200米(注:100Kbps情况下)
- 差分传输 – 较小的噪声辐射
多驱动器和接收器
在实际应用中,如果两个或更多计算机之间需要价格低廉、连接可靠的数据通讯,都可以使用485驱动器、接收器或收发器。一个典型的例子是销售终端机和中心计算机之间使用485传输信息。使用双绞线传输平衡信号具有较低的噪声耦合,加上485具有很宽的共模电压范围,所以485允许高达50M bit/s的速率通讯,或者在低速情况下具有数千米通讯距离。
由于485用途广泛,越来越多的标准委员会将485标准作为它们通讯标准的物理层规范。包括ANSI的SCSI(小型计算机系统接口)、Profibus标准、DIN测量总线以及中国的的多功能电能表通讯协议标准DL/T645。
平衡传输线标准485于1983年开发,用于主机与外设之间的数据、时钟或控制线的数据传输接口。标准仅规定了电气层,其它的像协议、时序、串行或并行数据以及链接器全部由设计者或更高层协议定义。
最初,485标准被定义为是对TIA/EIA-422标准(以下简称422)的灵活性方面升级。鉴于422仅是单工通讯(注:422使用两对差分通讯线,发送使用一对,接收使用一对,所以数据在一条线上是单向传输的),485允许在一对信号线上有多个驱动器和接收器,有利于半双工通讯(见图1)。和422一样,485没有规定最大电缆长度,但是在使用24-AWG电缆、100kbps条件下,可以传输1.2km;485同样没有限制最大信号速率,而是由上升沿时间和位时间的比率限制,这和232相似。在大多数情况下,因为传输线效应和外界噪声影响,电缆长度比驱动器更能限制信号速率。
2.系统设计注意事项
2.1线负载
在485标准中,线负载要考虑线路终端和传输线上的负载。是否对传输线终端匹配取决于系统设计,也受传输线长度和信号速率的影响(一般情况下,低速短距离可以不进行终端匹配)。
2.1.1传输线终端匹配
可以将传输线划分为两种模型:分布式参数模型[1]和集总参数模型[2]。测试传输线属于哪种模型取决于信号的渡越(上升/下降)时间tt与驱动器输出到线缆末端的传播时间tpd。
如果2tpd≥tt/5,则传输线必须按照分布式参数模型处理,并且必须处理好传输线终端匹配;其它情况下,传输线看作节点参数模型,这时传输线终端匹配不是必须的。
注1:分布式参数模型 - 电路中的电压和电流是时间的函数而且与器件的几何尺寸和空间位置有关。
注2:集总参数模型 - 电路中任意两个端点间的电压和流入任一器件端点的电流完全确定,与器件的几何尺寸和空间位置无关。
2.1.2单位负载概念
挂接在同一485通讯总线上的驱动器和接收器,其最大数量取决于它们的负载特性。驱动器和接收器的负载都是相对单位负载而衡量的。485标准规定一根传输总线上最多可以挂接32个单位负载。
单位负载定义为:在12V共模电压环境中,允许通过稳态负载1mA电流,或者是在-7V共模电压环境中,允许通过稳态负载0.8mA电流。单位负载可能由驱动器、接收器和失效保护电阻组成,但不包括AC终端匹配电阻。
图2给出了SN75LBC176A收发器单位负载计算的例子。因为这款设备将驱动器和接收器集成到一起构成了收发器(即驱动器输出和接收器输入连接到了同一根总线上),因此很难分别获取驱动器泄漏电流和接收器输入电流。为了便于计算,将接收器输入阻抗看作12 kΩ并给收发器1mA电流。这可以代表一个单位负载,一跟传输总线上允许32个这样的负载。
只要接收器的输入阻抗大于12kΩ,那么可以在一根传输总线上使用多于32个这样的收发器。
图2:单位负载概念
2.2信号衰减和失真
一个有用的常识是:在最大信号速率(单位:Hz)通讯的条件下,允许信号衰减-6dB。一般情况下,电缆供应商会提供信号衰减图表。图3所示的曲线显示了24-AWG电缆衰减和频率的关系。
图3:信号衰减
确定随机噪声、抖动、失真等对信号影响程度的最简单方法是使用眼图。图4显示使用20AWG双绞线电缆500米处、不同信号速率下,接收端的信号失真情况。当信号速率进一步增加,抖动的影响变得更加显著。在1Mbit/s时,抖动大约为5%,而在3.5Mbit/s时,信号开始彻底被淹没,传输质量严重降级。在实际系统中,可允许的最大抖动一般要小于5%。
图4:485信号失真 VS 信号速率
2.3故障保护和失效保护
2.3.1故障保护
和其它任何系统设计一样,必须习惯性的考虑故障应对措施,不论这些故障是自然产生还是因环境诱导产生。对于工厂控制系统,通常要求对极端噪声电压进行防护。485提供的差分传输机制,特别是宽共模电压范围,使得485对噪声具有一定的免疫力。但面对复杂恶劣环境时,其免疫力可能不足。有几种方法可以提供保护,最有效的方法是通过电流隔离,后面会讨论这个方法。电流隔离能够提供更好的系统级保护,但是价格也更高。更流行并且比较便宜的方案是使用二极管保护。使用二极管方法代替电流隔离是一种折衷方法,在更低层次上提供保护。外接二极管和内部集成瞬态保护二极管的例子如下图所示:
图5所示485收发器SN75LBC176外接二极管来防止瞬态毛刺。
图5:噪声环境中的输入保护
RT通常是终端匹配电阻,等于电缆特性阻抗R0。
图6所示内部集成瞬态抑制二极管的485收发器SN75LBC184,用于既希望使用完整485功能,PCB空间又受限的场合。SN75LBC184在内部集成了保护二极管,针对高能量电气噪声环境,可直接替换SN75LBC176。
图6:集成瞬态电压保护,用于噪声环境
2.3.2失效保护
许多485应用也要求提供失效保护,失效保护对于应用层是很有用的,需要仔细考虑并充分理解。
在任何多个驱动器/接收器共用同一总线的接口系统中,驱动器大多数时间处于非活动状态,这个状态被称为总线空闲状态。当驱动器处于空闲状态时,驱动器输出高阻态。当总线空闲时,沿线电压处于浮空状态(也就是说,不确定是高电平还是低电平)。这可能会造成接收器被错误地触发为高电平或低电平(取决于环境噪声和线路浮空前最后一次电平极性)。显然,这种情况是不受欢迎的。在接收器前面需要有相关电路,将这种不确定状态变成已知的、预先约定好的电平,这称之为失效保护。此外,失效保护还要能防止因短路而引起的数据错误。
有很多方法可以实现失效保护,包括增加硬件电路和使用软件协议。尽管软件协议实现起来比较复杂,但这是优先推荐的方法。但是因为大多数系统设计师、硬件设计师更喜欢使用硬件实现失效保护,增加硬件电路实现失效保护更经常被使用。
无论出现短路还是开路情况,失效保护电路必须为接收器提供明确的输入电压。如果通讯线所处环境非常恶劣,则线路终端匹配也是必须的。
目前很多厂商开始将一些失效保护电路(如开路失效保护)集成到芯片内部。通常这些额外的电路只是在接收器同相输入端增加一个大阻值上拉电阻、在接收器反相端增加一个大阻值下拉电阻。这两个电阻通常在100KΩ左右,这些电阻和终端匹配电阻形成一个潜在的驱动器,仅能提供几个mV的差分电压。因此,这个电压(接收器临界电压)并不足以切换接收器状态。使用这样的内部上下拉电阻允许总线不进行终端匹配,但是会显著的降低最大信号速率和可靠性。
图7给出了一些485接口通用外置失效保护电路,每个电路都尽力维持接收器输入端电压不小于最小临界值并在一个或多个故障条件(开路、空闲、短路)下,维持一个已知的逻辑状态。在这些电路中,R2代表传输线阻抗匹配电阻,并成为电压驱动器的一部分:产生稳态偏置电压。这里假设每个接收器代表1个单位负载。
图7右半部分的表格中列出了一些典型电阻和电容值、提供的失效保护类型、使用的单位负载个数和信号失真。在下一节中,会通过对短路失效电路中的电阻值计算,来说明如何修改这些电阻值以便适用于特定设计。
图7:外部485失效保护电路
要实现短路保护,需要更多的电阻。当电缆短路时,传输线阻抗变为零,终端匹配电阻也背短路。在接收器输入端串联额外的电阻可以实现短路失效保护。
图8所示的额外电阻R3仅能用于驱动器和接收器分离的场合。现在的绝大部分485驱动器和接收器都集成到一个芯片上(称之为收发器),并且在内部连接到同一个总线上,这种收发器不可以使用短路失效保护。如果需要进行短路保护,可以选择内部集成短路保护的收发器或者使用驱动器和接收器分离的器件,比如SN75ALS180。如果在收发器使用短路失效保护电路,则电阻R3会引起输出信号额外的失真。驱动器和接收器分离的器件SN75ALS180不会有这个问题,因为驱动器是直接连到总线上的,旁路掉了R3。
图8:短路/开路失效保护电路
下面对电阻值经行计算。如果传输线短路,R2从电路中移除,则接收器输入端电压为:
VID= VCC * 2R3 / (2R1 + 2R3)
对于485应用,标准规定接收器可识别最低至200mV的输入信号。因此当VID> VIT或者VID > 200mV,能够确定一个已知状态。这是第一个设计约束条件:
VCC* 2R3 / (2R1 + 2R3) > 200mV
当传输线上为高阻态时,接收器受到R1、R2和R3的影响,其输入电压为:
VID= VCC* (R2 + 2R3) / (2R1 + R2 + 2R3)
得到第二个设计约束条件:
VCC * (R2 + 2R3) / (2R1 + R2 + 2R3) > 200mV
传输线会受终端匹配电阻R2与两倍的(R1+R3)并联影响。传输线的特性阻抗Zo与之相匹配,这得到第三个设计约束条件:
Zo= 2R2 * (R1 + R3) / (2R1 + R2 +2R3)
其它设计约束条件包括由失效保护电路提供的额外线负载、由R3和R1引起的信号失真以及接收器输入电阻。
注:SN75HVD10等3.3V 485收发器以及更新产品内部集成了短路/开路失效保护电路。
2.4电流隔离
计算机和工业串行接口往往处于噪声环境中,可能会影响数据传输的完整性。对于任何接口电路,经过测试的可以改善噪声性能的方法是电流隔离。
在数据通讯系统中,隔离是指多个驱动器和接收器之间没有直接电流流通。隔离变压器为系统提供电源,光耦或数字隔离器件提供数据隔离。电流隔离可以去除地环流,抑制噪声电压。因此,使用这种技术可以抑制共模噪声,降低其它辐射噪声。
举一个例子,图9显示了过程控制系统的一个节点,通过485链路连接数据记录器和主计算机。
当临近的电动机启动时,数据记录器和计算机的地电势会出现瞬间不同,这通常会引起一个大电流。如果数据通讯没有采用隔离方案,数据可能会丢失,更坏的情况下会损害计算机。
2.4.1电路描述
图9所示的原理图是分布式监视、控制和管理系统的一个节点,这种方案通常用于过程控制。数据通过一对双绞线传输,地线使用屏蔽层。这类应用常常需要低功耗,因为许多远程分站使用电池或者要求有备用电池(电容停电后,需要设备能使用备用电池工作一定时间)。此外,使用低功耗计数,可以使用小型隔离变压器。如图9所示,收发器使用SN65HVD10,当然任何TI公司3.3V或5V RS485收发器、3.3-V TIA/EIA-644 LVDS或者3.3-V TIA/EIA-899 M-LVDS收发器都可以使用这个电路。
2.4.2操作原理
图9所示的例子可用于3.3V或5V,电源使用变压器隔离,数据信号采用数字隔离器隔离。因为485收发器需要隔离电源,可调LDO稳压器必须被隔离。可以使用与非门振荡电路驱动隔离变压器实现这一功能。变压器的输出电压经过调整、滤波后,供低压差线性稳压器使用。在高EMI环境中,这种方法常用于预防其它远距离供电子系统的噪声耦合到主电源。TPS7101用于给其它电子元件供电,最多提供500mA电流。通过调节偏置电阻R7,TPS7101可输出3.3V或5V,具体阻值见BOM清单。
数据信号隔离又三通道数字隔离器ISO7231M完成。该设备可以通过150Mbps信号速率,提供2.5KV(rms)电压隔离和50KV/us瞬间放电保护。
图9:3.3V或5V隔离485节点(左边是大地地平面,右边是隔离地平面)
表1:3.3V或5V隔离485节点BOM清单
3.过程控制设计举例
为了获得更多485系统设计知识,一个比较好的方法是看具体的例子。考虑这样一个系统:系统容量为1个主控制器、数个分站的工厂自动化系统,每个分站都可以发送和接收数据。
系统特性如下所示,通用规格见图10。
最远分站距主控制器500米
31台分站(加上主机共32台设备)
信号传输速率为500 kbit/s
半双工通讯
图10:过程控制设计举例
遵循485标准的设备以500 kbit/s传输数据,要求驱动器输出渡越(上升/下降)时间tt不能大于0.3个单位间隔时间(UI),所以有:
tt≤ 0.3 * UI
tt≤ 0.3 (1 /(500 103) ) = 600ns
如果电缆传输信号速度等于光在真空中的传播速度,则信号传输延时tpd为3.33ns/m,乘以传输线长度500米,为1667ns。
根据2.1节的公式可以确定传输线是分布式参数模型还是节点参数模型:若2tpd ≥ tt/5,则认为传输线为分布式参数模型。显然,3334 > 120,所以本例的传输线模型为分布式参数模型。在工业环境中,这种传输线必须要终端匹配。
关于衰减,尽管信号速率为500 kbit/s的基本频率为250 kHz,我们仍然按照500 kHz来计算衰减,这是因为信号中其实包含更高频的部分。根据最大衰减不要超过-6dB的经验法则,要求500米电缆末端最大衰减小于-6dB,即0.36dB/30米。我们查看图3所示的图表,这是电缆厂商提供的衰减与频率关系的图表,500 kHz频率对应的衰减为0.5dB/30米还要多一些,超过设计约束条件0.14dB/30米。在本例中这是允许的,因为稍微减少保守规则提供的噪声容限是可以接受的。
相关阅读
FreeRTOS高级篇10---系统节拍时钟分析
FreeRTOS高级篇11---空闲任务分析
作者:朱工
首发博客:https://blog.csdn.net/zhzht19861011/article/details/51248856
关注FreeRTOS从基础到高级专栏,即时收取FreeRTOS系列文章。