0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度解读RS-485总线

GReq_mcu168 来源:嵌入式客栈 作者:逸珺 2021-06-16 15:53 次阅读

前面一篇文章总结了一下工业HART总线,今天来聊聊RS-485总线。RS-485也是应用非常广泛的一种通信接口,本文来讨论一下要点,文章稍微有点长,约5000字。

前世今生RS-485,RS是什么意思呢?是Recommended Standard的缩写,就是推荐标准的意思。485是标准标识号,至于为什么定这个标识号,则无需深究。RS-485又称为ANSI/TIA/EIA-485,这几个前缀是标准协会的名称缩写,比如EIA就是电子工业协会 (Electronics Industries Association EIA)的缩写。1983年,RS-485通讯接口被电子工业协会 (Electronics Industries Association EIA)批准为一种通讯接口标准。即便在现在IOT火热的今天,RS-485仍然有大量的应用。很多协议使用RS-485作为物理层,比如常用标准协议使用RS-485作为物理层的有哪些呢?比如:

工业HART总线

modbus协议

Profibus DP

。。。。。。。

电气特性信号采样差模传输,差模是相对于共模而言的,差模也称为差分,那么什么样的传输是差模呢?一图胜千言,看下面两个图就明白了:

共模传输

77d12da8-cb4b-11eb-9e57-12bb97331649.jpg

采用共模传输方式时,共模噪声将会叠加在最终的输出信号上面,污染了原始的信号。

差模传输

而采用差模传输方式,则源端发出的信号+与信号-相位是相反的,而对于共模噪声而言在+/-两条线上都会存在,理想情况是等幅同相的,而接收端,相当于一个减法器,有用信号由于相位相反则经过减法器仍然保留,而噪声则会被抵消。而实际电路中,则会大幅度削弱。由此可见,差模传输相对于共模传输方式,优势在于差模方式可以有效抵消共模干扰。差模方式在有的地方又称为平衡模式,而共模模式也称为非平衡模式。

对于这个干扰,我们来实际抓个波形看看:

77e79444-cb4b-11eb-9e57-12bb97331649.png

在A/B信号的边缘处,波形都略微有些变形,但是你看A-B做差(红色的为示波器的MATH减功能,为A-B),边沿则变得非常的干净!这例子就可以很好地说明差模传输可以有效的抵抗共模干扰。

电气参数RS-485的电气参数为:

共模电压范围为-7~+12V

可支持32个多点拓扑连接,见下面的网络拓扑图

使用40英尺线缆时,传输速率可达10Mbps,1英尺相当于30.48cm,这里Mbps是兆bit/s的意思

使用4000英尺线缆时,传输速率可达到100kbps

半双工通信

最小差分电压容限:200mV,也就是说接收端在差分电压低于200mV时就无法正确识别0/1了。这句话应该怎么理解呢?

上面这个图怎么理解呢?RS-485收发器的发送电路至少提供1.5V差分电压输出能力,经由总线线路阻抗衰减,32个接收电路输入阻抗,以及120Ω端接电阻,差分信号的幅度必然逐渐衰减,那么至最末端还需要至少提供200mV的差分电压给末端接收电路。

:对于接收电路是判决A线共模电压与B线共模电压之差:

如果,则接收电路R识别为逻辑 1

如果,则接收电路R识别为逻辑0

简单说就是,A线的绝对电压值比B线的至少大于200mV则识别为逻辑1,或者A线的绝对电压值比B线的至少小200mV,才识别为逻辑0

这里的参数,应该是在一定特征阻抗线缆时的理论值,实际工程使用的时候需要做相应的调整以及现场测试。一般以不超出这个理论极限为好。说到电气特性参数,首先来看看一般的接口电路:

787be1bc-cb4b-11eb-9e57-12bb97331649.png

从这样一个接口电路来看,有这么些要点:

RS-485通信从单片机/DSP/处理器接口而言,是利用UART接口与RS-485收发器接口。当然你说我用FPGA难道不行么?肯定是可以的,用FPGA实现一个串口收发的IP模块,当然也是可以的。甚至你想说,我拿GPIO去模拟一下 UART 是不是就不行?也是能办得到的,只不过这么干意义不大,需要占用CPU资源实现底层BIT的收发。

前面说到半双工,有半双工就有全双工。什么是半双工呢?首先半双工以及全双工,所界定的对象一定是点对点而言的,这里说点对点就是指在同一时刻而言,所谓半双工,就是设备在同一时刻要么处于收数据状态, 要么处于发数据状态, 不允许同时收发数据。 全双工则刚好相反,允许同时收发。比如 I2C 总线就是半双工总线,4线制 SPI 是全双工,而三线制SPI则是半双工总线;又譬如RS-422或者RS-232 是全双工接口;而CAN总线则是半双工总线。RS-485就是一种半双工总线:

78c4f0be-cb4b-11eb-9e57-12bb97331649.png

当Host发送数据时,数据沿着红色的线经由双绞线,传输至Slave的差分接收电路,当slave应答时,数据沿着兰色的方向传输至Host的接收电路,但是传输介质是一对双绞线,所以一方在传输数据的时候,另一方是无法传输信号的,从收发器的控制角度来看:控制芯片侧,用一个GPIO脚来控制收发使能,来一张芯片内部原理框图,就很容易理解了:

78db0070-cb4b-11eb-9e57-12bb97331649.png

当DIR=0时,接收电路使能,发送电路禁止DE=0,对总线而言相当于高阻;当 DIR=1 时,接收电路使能 ,发送电路禁止DE=1,对总线A/B信号取决于DI的信号。这里有两个问题:1.为什么芯片要把和设计成相反的有效逻辑呢?这样其实也是方便用一个GPIO同时控制收发电路的考虑。2.那收发器芯片收发使能为什么不做成一个脚呢?比如就叫DIR?做成两个脚收/发也可以用两个脚单独控制,比如:

790e81f2-cb4b-11eb-9e57-12bb97331649.png

甚至可以在DE=1的时候,将设置为0,这样是不是就可以自环了?产品中也可以就这样设计,可以实现收发器以及布线的自诊断,通过接收到的报文与发送出去的报文比较,可以诊断出芯片焊接,收发器是否损坏或者断路,以及布线是否存在短路故障。或许你会说,瞎扯!你前面才说RS-485不能同时收发,这里又说能同时收发,岂不是自相矛盾吗?不矛盾,前面所说的不能同时收发,是指发的同时不能收来自其他设备的发送报文,这里收的是自身发出的报文。

所以半双工的本质,是通讯介质不存在双向通道,在向总线发送数据的时候,介质被占用,即便想发送也是无法正确的将信号发送到介质上的,如果强行发送,数据将会错乱,甚至收发器芯片有可能损坏。

: Receiver Output Enable,接收器使能,

DE:Driver Output Enable,驱动输出使能

图中的DIR脚就是控制当前RS-485是处于“收”还是处于“发”模式。

前面说到共模电压指标以及差模传输方式,这里来实际抓抓波形看看:

793cfd16-cb4b-11eb-9e57-12bb97331649.png

示波器的CH2接485输出A端,CH3接485输出A端,红色的为示波器的MATH功能:CH2-CH3。大部分示波器都具有数学运算功能。

如果想看差分信号,就可以利用双通道示波器加MATH减功能观测。或许有的示波器没有MATH功能,那么这里还可以使用一个技巧:

将B通道,或者说差分信号的负端反相,然后将B通道上移至空闲电平重合,这样是不是也就比较直观的可以看出A-B了?通过这个图,能发现哪些有价值的信号特征呢?

信号A在空闲时候为高电平;信号B在空闲时为低电平。所以你会看到有设备上会标识485_A+,485_B-。

每个通道的共模电压值都在标准要求的-7~12V之内,信号A为4V,信号B为5V:

那么数据怎么去解读呢?这里抓的数据是一个MODBUS-RTU主端发送给从设备的报文,其内容前面两个字节是0x01 0x03,UART模式为1个起始位,8个数据位,1个停止位,无校验位,低位在前,此例中UART的通讯格式为

先根据UART通讯模式,来计算一下几个参数,每bit占用时间,每字节占用时间:

这个图就是起始位,宽度正好是104us。对于解析这种异步串行时序波形而言,最重要就是根据通信格式计算位时间,字节时间,进而可以直接解析波形数据。从这一点思考,假设要利用FPGA来实现一个UART协议逻辑分析仪,这就是最为核心的指标,通过检测到起始位边沿,进而通过时间轴将数据解析出来。这里我来充当一个肉眼UART逻辑分析仪吧:

8bit数据的时间宽度刚好是832us,由于格式是低位在前,所以要反过来看,与实际发送的数据0x01 0x03是吻合的。这里在调试底层的时候遇到问题,就可以通过这种方式可以检查软件是否正确的驱动了硬件,譬如在调试I2C/SPI等等其他底层接口的时候,都可以类似的去检查硬件波形,唯一不一样的是,I2C/SPI属于同步通信,所谓同步通信,是指其通信底层有同步时钟信号,I2C的SCL,SPI的SCK都属于同步时钟。

驱动能力电气参数里总结说RS-485最大电气驱动能力,在多点网络拓扑结构下,可最大驱动32个站点。那么怎么去解读这一指标呢?首先来考察一个站点收发电路特性,收发器的接收电路其标准等效输入阻抗为12kΩ,比如MAX 485数据手册为例:

799717f6-cb4b-11eb-9e57-12bb97331649.png

至于为什么是32个呢?主要是由于前面200mV最小驱动能力的规定。也可以这样理解一下,每一个接收电路输入阻抗并非理想的高阻,而是12kΩ,那么比如其中一个站点发送,就相当于有32个站点的输入阻抗并联,为什么是32个呢?

别忘了发送站点自身也有接收电路,所以在不考虑端接电阻以及线路阻抗的情况下,对于发送电路接了一个等效负载:,而发送电路驱动能力肯定是有限的,这样就好理解了。下面这个图就是所谓的多点网络拓扑,所有的站点都是沿着双绞线的排布并接在总线上的。

所以,你有可能会在一些地方看到所谓的一个单位RS-485负载的说法,这里所谓的单位负载就是指12kΩ标准输入阻抗,这个12kΩ就是EIA-485标准定义的。从而看到比如 单位负载之类的说法,就是源于此处。

数据监控比如一个基于RS-485的Modbus-RTU多点网络中,在做协议编程或者实际多站点总线调试的时候,有可能需要监控总线上所有的报文。甚至还有可能就像实现一个总线报文的的记录器,将总线上所有的报文都记录下来。应该怎么实现呢?买一根USB转RS-485的转换线或者自己做一个也可以。将A/B线并接在总线上,USB 插入电脑。使用串口监控终端或者自己写一个串口接收小软件,就可以监控所有总线上的报文了。比如这个AccessPort串口工具就比较好用。

应用设计作为应用设计而言,需要考虑这些维度:

端接设计

接口芯片

隔离设计

端接设计首先为什么要端接?这是由于RS-485采用双绞线传输,标准规定的双绞线的差分特征阻抗在100Ω至150Ω之间。RS-485标准制定者选择120Ω作为标称特征阻抗。

假定信号自左边站点发出,如果没有端接,信号在线路上传输其阻抗是连续的,但是到达右侧的时候则,等效阻抗变成了接收电路的输入阻抗,比如是12kΩ,阻抗不连续了,阻抗突变!信号的一部分能量就会按照原路径返回,如返回回去的信号由于容抗及感抗,就会产生相差。

反射回去的信号与原信号叠加在一起。这样就会造成通信发生错误,严重的时候,通信就无法正确进行。要想更深入的了解背后的原理,可以去学习一下传输线理论。或许做过Profibus DP(物理层也是采用的RS-485)的朋友会说,你看profibus DP为什么推荐的终端匹配电路是下面这样的呢?

其实是因为Profibus DP采用的通信介质其标称特征阻抗不一样。所以实际工程应用的时候则会有小的差异。

在TI的资料上看到这样一个端接接法:

7a54ea6a-cb4b-11eb-9e57-12bb97331649.png

在噪声比较严重的场合,建议使用右边的端接方案,利用两个60Ω电阻以及220pF电容形成低通滤波器,将增加线路的抗噪声能力。在实际工程布线的时候,如果遇到噪声比较严重的时候,一方面可以利用示波器查看总线信号质量,在将端接方式做一些小的调整。

接口设计RS-485收发器芯片很多芯片公司都提供,比如TI,Microchip 等厂家都有,选择接口芯片的时候需要考虑,芯片的供电电压输入逻辑是否与使用的单片机/DSP的电平兼容,另外就是前面提到的其接收电路的阻抗是否是符合RS-485标准输入阻抗的。

如果不是的,那么在考虑网络部署的时候,所能带的负载数量就有可能需要做调整。另外注意一下,有的新设计RS-485收发器具备fail-safe功能。另外,前面说到标准收发器可以驱动32个标准收发器负载设备,也即是(12kΩ)标准单位输入阻抗。

在做具体接口电路设计的时候还需要考虑EMC要求,在一些设备现场真的有很强的干扰,比如电网上有大的电机等感性设备运行,有时候就会干扰设备;另外也有可能有空间辐射干扰,这时候可以考虑采用带屏蔽双绞线,屏蔽层接大地,抗干扰方面我了解的不是很深入,仅整理一下。在这里看到一个防雷接口电路的设计方案,可以参考一下:

7a630f32-cb4b-11eb-9e57-12bb97331649.png

https://www.programmersought.com/article/95833359295/前面说通常标准RS-485可以容纳32个标准接收阻抗收发设备。实际系统中就是想接入超过32个站点设备,怎么办呢?可以设计一个中继设备。想当于将两个网段利用中继给衔接起来,以解决驱动能力不足的问题。当然也有这样的现成产品。

隔离设计为什么要隔离,是为了降低接地噪声。在很多现场可能有大电流开关设备,电机感性设备等,噪声很有可能通过通讯的接地耦合进设备。尤其在工业设备中,一般都会设计成带隔离的接口电路。要设计隔离接口,可以考虑选择具有隔离功能的芯片,比如ADI的 iCoupler技术产品ADM2481,ADM2485。当然也可以采用光耦+普通RS-485收发器的方式。唯一需要注意的是需要设计一个带隔离的电源,给隔离两侧电路分别供电。

7a6cde36-cb4b-11eb-9e57-12bb97331649.png

上面这个图来自TI的《The RS-485 Design Guide》,这份资料感觉很不错,本文很多地方也参考这份文档整理的。如对这份资料有兴趣,可以在后台回复485自动领取。

总结一下RS-485看似简单,实际应用设计的时候还是有很多需要去理解和注意的地方。做一个稳健的产品,往往所差不是大方向,而是一些细微处容易导致产品不稳定。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    453

    文章

    50383

    浏览量

    421716
  • 收发器
    +关注

    关注

    10

    文章

    3393

    浏览量

    105854
  • ADI
    ADI
    +关注

    关注

    144

    文章

    45812

    浏览量

    248654
  • RS-485
    +关注

    关注

    11

    文章

    679

    浏览量

    84164

原文标题:RS-485总线,这篇很详细

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RS-485总线】如何提高总线抗扰度之EFT篇

    导读RS-485总线在工业通信中广泛应用,但恶劣的工业环境易导致外部干扰,如电快速脉冲群(EFT),影响其稳定性。本文将探讨如何测试并排除EFT对RS-485总线的干扰。脉冲群骚扰的来
    的头像 发表于 10-25 16:08 342次阅读
    【<b class='flag-5'>RS-485</b><b class='flag-5'>总线</b>】如何提高<b class='flag-5'>总线</b>抗扰度之EFT篇

    RS-485总线】如何快速解决RS-485组网通讯异常?

    导读RS-485总线的好处大家都知道,用隔离模块能让通信更稳定。但实际用的时候,可能会遇到通信不了、出错或者收发器坏掉的问题。本文将深度剖析RS-485组网问题。应用问题当出现通信错误
    的头像 发表于 10-19 08:07 521次阅读
    【<b class='flag-5'>RS-485</b><b class='flag-5'>总线</b>】如何快速解决<b class='flag-5'>RS-485</b>组网通讯异常?

    RS-485总线电平异常解决方案解析

    各位工程师是否会遇到这样的情况,测试单个RS-485设备数据无异常,但设备组网后,就出现通讯数据异常或连接失败等情况。出错的原因是什么?本文将从门限电平为你揭秘RS-485组网异常。RS-485
    的头像 发表于 10-12 08:06 1202次阅读
    <b class='flag-5'>RS-485</b><b class='flag-5'>总线</b>电平异常解决方案解析

    RS-485总线】详解RS-485上下拉电阻的选择

    RS-485总线广泛应用于通信、工业自动化等领域,在实际应中,通常会遇到是否需要加上下拉电阻以及加多大的电阻合适的问题,下面我们将对这些问题进行详细的分析。为什么需要加上下拉电阻?根据RS-485
    的头像 发表于 09-21 08:06 531次阅读
    【<b class='flag-5'>RS-485</b><b class='flag-5'>总线</b>】详解<b class='flag-5'>RS-485</b>上下拉电阻的选择

    RS-485总线RS-485网络该如何加终端电阻?

    RS-485总线具有结构简单、成本低等优点,但各位工程师在组建RS-485总线网络时,为提升整个网络通信的可靠性,想必会经常会遇到一个问题:需不需要加终端电阻呢?本文将为你解答。终端电
    的头像 发表于 09-14 08:05 419次阅读
    【<b class='flag-5'>RS-485</b><b class='flag-5'>总线</b>】<b class='flag-5'>RS-485</b>网络该如何加终端电阻?

    将传统RS-485系统与TI基于RS-485的Powerbus结合使用

    电子发烧友网站提供《将传统RS-485系统与TI基于RS-485的Powerbus结合使用.pdf》资料免费下载
    发表于 09-02 10:11 2次下载
    将传统<b class='flag-5'>RS-485</b>系统与TI基于<b class='flag-5'>RS-485</b>的Powerbus结合使用

    灵活的RS-485:采用THVD1424的RS-485多系统简化设计

    电子发烧友网站提供《灵活的RS-485:采用THVD1424的RS-485多系统简化设计.pdf》资料免费下载
    发表于 08-28 11:48 4次下载
    灵活的<b class='flag-5'>RS-485</b>:采用THVD1424的<b class='flag-5'>RS-485</b>多系统简化设计

    THVD1505总线极性校正RS-485收发器数据表

    电子发烧友网站提供《THVD1505总线极性校正RS-485收发器数据表.pdf》资料免费下载
    发表于 07-08 11:34 0次下载
    THVD1505<b class='flag-5'>总线</b>极性校正<b class='flag-5'>RS-485</b>收发器数据表

    典型的RS-485组网结构

    RS-485,是一种半双工的工作方式,即任何时候只有一点处于发送状态。RS-485支持总线型结构,总线长度可达上千米,节点数可以多达256个。
    的头像 发表于 03-08 17:24 2789次阅读
    典型的<b class='flag-5'>RS-485</b>组网结构

    RS-485/RS-422电路实施指南

    电子发烧友网站提供《RS-485/RS-422电路实施指南.pdf》资料免费下载
    发表于 03-07 14:34 7次下载

    没听过这个,都不好意思说自己做过RS-485总线开发!

    RS-485总线应用中,时常会遇到不同的RS-485设备之间通讯,不同的设备间兼容性存在不同,有的设备很稳定,有的设备却时常收到异常数据,这是什么原因导致的呢?又应如何避免呢?RS-485
    的头像 发表于 02-21 08:23 522次阅读
    没听过这个,都不好意思说自己做过<b class='flag-5'>RS-485</b><b class='flag-5'>总线</b>开发!

    RS-485通信链路与电子护栏: 有关RS-485 EMC稳定性的演示

    RS-485通信链路与电子护栏: 有关RS-485 EMC稳定性的演示
    的头像 发表于 01-05 18:12 889次阅读
    <b class='flag-5'>RS-485</b>通信链路与电子护栏: 有关<b class='flag-5'>RS-485</b> EMC稳定性的演示

    TIA/EIA RS-485总线电路笔记

    电子发烧友网站提供《TIA/EIA RS-485总线电路笔记.pdf》资料免费下载
    发表于 11-29 09:49 2次下载
    TIA/EIA <b class='flag-5'>RS-485</b><b class='flag-5'>总线</b>电路笔记

    RS-485系统隔离的意义

    电子发烧友网站提供《RS-485系统隔离的意义.pdf》资料免费下载
    发表于 11-28 11:06 0次下载
    <b class='flag-5'>RS-485</b>系统隔离的意义

    RS-485总线标准笔记

    电子发烧友网站提供《RS-485总线标准笔记.pdf》资料免费下载
    发表于 11-28 10:47 0次下载
    <b class='flag-5'>RS-485</b><b class='flag-5'>总线</b>标准笔记