打印

【半瓶醋系列】之“RS485”电路

[复制链接]
12097|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
misra|  楼主 | 2012-7-27 16:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 misra 于 2012-8-14 19:29 编辑

经过一段时间   已经陆陆续续搞懂一些了。看样子理论重要,实际动手同样重要。
似乎有点门道了。                                       
(1)问题1:上下拉电阻R41和R42作用啥?如何取值?答案在16楼MAX官方的解释。
相关问题:关于RS485总线上下拉电阻的一个问题(看春阳大侠多么自信)https://bbs.21ic.com/icview-18845-1-1.html

相关帖子

沙发
misra|  楼主 | 2012-7-27 16:25 | 只看该作者

春阳博文两篇

本帖最后由 misra 于 2012-8-15 20:13 编辑

提高RS-485总线可靠性的几种方法及常见故障处理
chunyang 发表于 2006-10-11 8:47:00



在MCU之间中长距离通信的诸多方案中,RS-485因硬件设计简单、控制方便、成本低廉等优点广泛应用于工厂自动化、工业控制、小区监控、水利自动报测等领域。但RS-485总线在抗干扰、自适应、通信效率等方面仍存在缺陷,一些细节的处理不当常会导致通信失败甚至系统瘫痪等故障,因此提高RS-485总线的运行可靠性至关重要。
1 RS-485接口电路的硬件设计
1
)总线匹配。总线匹配有两种方法,一种是加匹配电阻,如图1所示。位于总线两端的差分端口VA与VB之间应跨接120Ω匹配电阻,以减少由于不匹配而引起的反射、吸收噪声,有效地抑制了噪声干扰。但匹配电阻要消耗较大电流,不适用于功耗限制严格的系统。

 
另外一种比较省电的匹配方案是RC 匹配(图2 )利用一只电容C 隔断直流成分,可以节省大部分功率,但电容C的取值是个难点,需要在功耗和匹配质量间进行折衷。除上述两种外还有一种采用二极管的匹配方案(图3),这种方案虽未实现真正的匹配,但它利用二极管的钳位作用,迅速削弱反射信号达到改善信号质量的目的,节能效果显著。


    2) RO及DI端配置上拉电阻。异步通信数据以字节的方式传送,在每一个字节传送之前,先要通过一个低电平起始位实现握手。为防止干扰信号误触发RO(接收器输出)产生负跳变,使接收端MCU进入接收状态,建议RO外接10kΩ上拉电阻。
    3)保证系统上电时的RS-485芯片处于接收输入状态。对于收发控制端TC建议采用MCU引脚通过反相器进行控制,不宜采用MCU引脚直接进行控制,以防止MCU上电时对总线的干扰,如图4所示。


    4)总线隔离。RS-485总线为并接式二线制接口,一旦有一只芯片故障就可能将总线“拉死”,因此对其二线口VA、VB与总线之间应加以隔离。通常在VA、VB与总线之间各串接一只4~10Ω的PTC电阻,同时与地之间各跨接5V的TVS二极管,以消除线路浪涌干扰。如没有PTC电阻和TVS二极管,可用普通电阻和稳压管代替。
    5)合理选用芯片。例如,对外置设备为防止强电磁(雷电)冲击,建议选用TI的75LBC184等防雷击芯片,对节点数要求较多的可选用SIPEX的SP485R。

2 RS-485网络配置
1
)网络节点数。网络节点数与所选RS-485芯片驱动能力和接收器的输入阻抗有关,如75LBC184标称最大值为64点,SP485R标称最大值为400点。实际使用时,因线缆长度、线径、网络分布、传输速率不同,实际节点数均达不到理论值。例如75LBC184运用在500m分布的RS-485网络上节点数超过50或速率大于9.6kb/s时,工作可靠性明显下降。通常推荐节点数按RS-485芯片最大值的70%选取,传输速率在1200~9600b/s之间选取。通信距离1km以内,从通信效率、节点数、通信距离等综合考虑选用4800b/s最佳。通信距离1km以上时,应考虑通过增加中继模块或降低速率的方法提高数据传输可靠性。
  2)节点与主干距离。理论上讲,RS-485节点与主干之间距离(T头,也称引出线)越短越好。T头小于10m的节点采用T型,连接对网络匹配并无太大影响,可放心使用,但对于节点间距非常小(小于1m,如LED模块组合屏)应采用星型连接,若采用T型或串珠型连接就不能正常工作。RS-485是一种半双工结构通信总线,大多用于一对多点的通信系统,因此主机(PC)应置于一端,不要置于中间而形成主干的T型分布。

3 提高RS-485通信效率
    RS-485
通常应用于一对多点的主从应答式通信系统中,相对于RS-232等全双工总线效率低了许多,因此选用合适的通信协议及控制方式非常重要。
    1.总线稳态控制(握手信号)。大多数使用者选择在数据发送前1ms将收发控制端TC置成高电平,使总线进入稳定的发送状态后才发送数据;数据发送完毕再延迟1ms后置TC端成低电平,使可靠发送完毕后才转入接收状态。据笔者使用TC端的延时有4个机器周期已满足要求;
    2.为保证数据传输质量,对每个字节进行校验的同时,应尽量减少特征字和校验字。惯用的数据包格式由引导码、长度码、地址码、命令码、数据、校验码、尾码组成,每个数据包长度达20~30字节。在RS-485系统中这样的协议不太简练。推荐用户使用MODBUS协议,该协议已广泛应用于水利、水文、电力等行业设备及系统的国际标准中。

4 RS-485接口电路的电源、接地
   
对于由MCU结合RS-485微系统组建的测控网络,应优先采用各微系统独立供电方案,最好不要采用一台大电源给微系统并联供电,同时电源线(交直流)不能与RS-485信号线共用同一股多芯电缆。RS-485信号线宜选用截面积0.75mm2以上双绞线而不是平直线。对于每个小容量直流电源选用线性电源LM7805比选用开关电源更合适。当然应注意LM7805的保护:
    1.LM7805输入端与地应跨接220~1000μF电解电容;
    2.LM7805输入端与输出端反接1N4007二极管;
    3.LM7805输出端与地应跨接470~1000μF电解电容和104pF独石电容并反接1N4007二极管;
    4.输入电压以8~10V为佳,最大允许范围为6.5~24V。可选用TI的PT5100替代LM7805,以实现9~38V的超宽电压输入。

5 光电隔离
   
在某些工业控制领域,由于现场情况十分复杂,各个节点之间存在很高的共模电压。虽然RS-485接口采用的是差分传输方式,具有一定的抗共模干扰的能力,但当共模电压超过RS-485接收器的极限接收电压,即大于+12V或小于-7V时,接收器就再也无**常工作了,严重时甚至会烧毁芯片和仪器设备。
    解决此类问题的方法是通过DC-DC将系统电源和RS-485收发器的电源隔离;通过光耦将信号隔离,彻底消除共模电压的影响。实现此方案的途径可分为:
    (1)用光耦、带隔离的DC-DC、RS-485芯片构筑电路;
    (2)使用二次集成芯片,如PS1480、MAX1480等。

6 RS-485系统的常见故障及处理方法
RS-485
是一种低成本、易操作的通信系统,但是稳定性弱同时相互牵制性强,通常有一个节点出现故障会导致系统整体或局部的瘫痪,而且又难以判断。故向读者介绍一些维护RS-485的常用方法。
     1)若出现系统完全瘫痪,大多因为某节点芯片的VA、VB对电源击穿,使用万用表测VA、VB间差模电压为零,而对地的共模电压大于3V,此时可通过测共模电压大小来排查,共模电压越大说明离故障点越近,反之越远;
     2)总线连续几个节点不能正常工作。一般是由其中的一个节点故障导致的。一个节点故障会导致邻近的2~3个节点(一般为后续)无法通信,因此将其逐一与总线脱离,如某节点脱离后总线能恢复正常,说明该节点故障;
     3)集中供电的RS-485系统在上电时常常出现部分节点不正常,但每次又不完全一样。这是由于对RS-485的收发控制端TC设计不合理,造成微系统上电时节点收发状态混乱从而导致总线堵塞。改进的方法是将各微系统加装电源开关然后分别上电;
     4)系统基本正常但偶尔会出现通信失败。一般是由于网络施工不合理导致系统可靠性处于临界状态,最好改变走线或增加中继模块。应急方法之一是将出现失败的节点更换成性能更优异的芯片;
     5)因MCU故障导致TC端处于长发状态而将总线拉死一片。提醒读者不要忘记对TC端的检查。尽管RS-485规定差模电压大于200mV即能正常工作。但实际测量:一个运行良好的系统其差模电压一般在1.2V左右(因网络分布、速率的差异有可能使差模电压在0.8~1.5V范围内)。



实用资料——RS485总线理论及应用分析
chunyang 发表于 2005-8-29 19:35:00


随着数字技术的发展和计算机日益广泛的应用,现在一个系统往往由多台计算机组成,需要解决多站、远距离通信的问题。在要求通信距离为几十米到上千米时,广泛采用RS-485收发器。RS-485收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上接收器具有高的灵敏度,能检测低达200mV的电压,故传输信号能在千米以外得到恢复。使用RS-485总线,一对双绞线就能实现多站联网,构成分布式系统,设备简单、价格低廉、能进行长距离通信的优点使其得到了广泛的应用。
    在某公寓楼的水表远传系统中,采用了RS-485总线进行水表抄读数据的传输,共208只水表挂在总线上。下面是选定RS-485总线的根据和在应用调试过程中遇到的问题及解决方法。

RS-485的应用原则
    RS-485支持半双工或全双工模式。网络拓扑一般采用终端匹配的总线型结构,不支持环形或星形网络,最好采用一条总线将各个节点串接起来。从总线到每个节点的引出线长度应尽量短,以便使引出线中的反射信号对总线信号的影响最低。
标准没有规定总线上允许连接的收发器数量,但规定了最大总线负载为32个单位负载(UL),可通过增大收发器输入电阻来扩展总线节点数。例如输入电阻增加至48kΩ以上(1/4UL),节点数就可增加至128个,SP485R的输入电阻为150kΩ,节点数最多可增加至400个。在本系统中有208只水表,所以采用了SP485R。
是否对RS-485总线进行终端匹配取决于数据传输速率、电缆长度及信号转换速率。UART是在每个数据位的中点采样数据的,只要反射信号在开始采样时衰减到足够低,就可以不考虑匹配。当考虑终端匹配时,有多种匹配方案可以选择,最简单的就是在总线两端各接一只阻值等于电缆特性阻抗的电阻,比较省电的匹配方案是RC匹配,采用二极管的匹配方案节能效果显著。
    经验表明,当信号的转换时间上升或下降时间超过电信号沿总线单向传输所需时间的3倍以上时就可以不加匹配。例如具有限斜率特性的RS-485接口器件SP483输出信号的上升或下降时间最小为250ns,典型双绞线上的信号传输速率约为0.2m/ns(24AWG PVC电缆),那么只要数据速率在250kbps以内,电缆长度不超过16米,采用SP483作为RS-485接口时就可以不加终端匹配。
    RS-485总线上的每个收发器通过一段引出线接入总线。引出线过长时由于信号在引出线中的反射也会影响总线上的信号质量,系统所能允许的引出线长度也和信号的转换时间、数据速率有关,下面的经验公式可以用来估算引出线的最大长度:
Lmax=(tRISE·0.2m/ns)/10
    以SP483为例,对应于250ns的上升/下降时间,总线允许的最大引出线长度约为5米。
    减缓信号的前后沿斜率有利于降低对于总线匹配引出线长度的要求和改善信号质量,同时还可使信号中的高频成分降低,减少电磁辐射。因此有些接口器件中增加了摆率限制电路来减缓信号前后沿,但这种做法也限制了数据传输速率,由此看来在选择接口器件时并不是速率越高越好,应该根据系统要求选择最低速率的器件。
仅仅用一对双绞线将各个接口的A、B端连接起来,而不对RS-485通信链路的信号接地,在某些情况下也可以工作,但给系统埋下了隐患。RS-485接口采用差分方式传输信号并不需要对于某个参照点来检测信号系统,只需检测两线之间的电位差就可以了。但应该注意的是收发器只有在共模电压不超出一定范围(-7V至+12V)的条件下才能正常工作。当共模电压超出此范围,就会影响通信的可靠直至损坏接口。如图1所示,当发送器A向接收器B发送数据时,发送器A的输出共模电压为VOS,由于两个系统具有各自独立的接地系统存在着地电位差VGPD,那么接收器输入端的共模电压就会达到VCM=VOS+VGPD。RS-485标准规定VOS≤3V,但VGPD可能会有很大幅度(十几伏甚至数十伏),并可能伴有强干扰信号致使接收器共模输入VCM超出正常围,在信号线上产生干扰电流轻则影响正常通信,重则损坏设备。

实例应用分析
    在系统的调试期间,发现楼层低和距离采集器比较近的水表读数能很顺利地抄读传输上来,而其他水表则有很多抄读不到。经过实地勘察和分析,发现了两个问题:
    (1)网络布局不合理。这时的结构近似树形,但RS-485总线不支持环形或星形网络。同时,由于总线的不同区段采用了不同电缆,某一段总线上有过多收发器紧靠在一起安装,或者是有过长的分支线引出总线,都会出现阻抗不连续点。所以应该提供一条单一连续的信号通道作为总线。根据这一原则对网络进行了大的整改,采用单一总线将各个节点串接起来,同时进行接地处理,如图2所示。再次集抄的结果比先前要好,但还是有部分水表抄读不到或数据不稳定,未达到预期效果。表1是整改前后水表抄读的情况。

表1 整改前后情况比较


能抄读的水表数量

网络结构

波特率(bps)

整改前

121

树形

14400

整改后

164

单一总线

14400


    (2)波特率过高,致使传输距离受限。当前的波特率14400是为了减小传输时间而设置的。但是由于传输线的欧姆阻抗、集肤效应等损耗引起信号畸变,从而通信距离受到限制。又由于损耗与频率有关,故随着数据率的增加通信距离减小。表2是通过实地测试得到的数据。
表2 传输距离和传输速率的关系

波特率
(bps)

能抄读的
最大表号

总线长度
(单位米,距离采集)

能否全部
抄读

14400

164

810


9600

172

860


4800

189

950


2400

200

1010


1200

208

1050


110

208

1050


    由表2看出,当波特率降低到1200以下时,所有表都可以抄读成功。实验表明,最高波特率在1200时,208只表可以一次抄读成功。在此基础上,对各种常用波特率下系统能抄读到的最远距离进行测试,结果如图3。

    可以看出,在110~1200波特率时,数据传输完全正确,但随着波特率的提高,传输距离呈下降趋势。所以在传输速度允许的情况下,应当尽可能地降低波特率。另外,进一步完善网络结构将会在保证准确程度的前提下提高数据的传输速率。
结语
    RS-485总线,具有高噪声抑制、宽共模范围、长传输距离、冲突保护等特性,但还需要考虑合理的应用和网络布局、连续的信号通道、周全的保护措施等,在设计之初就应有总体规划。

捕获.PNG (1.34 KB )

捕获.PNG

使用特权

评论回复
板凳
misra|  楼主 | 2012-7-27 16:26 | 只看该作者

...

本帖最后由 misra 于 2012-8-15 15:48 编辑

打算告一段落了。电路大概是

MCU------74ABT04反相器--------HCPL光耦-----MAX收发器--------

首先分析光耦的发光二极管的导通情况。

别忘记了,VCC电源值的不同,致使74ABT04反相器的输出值也有不同。


计算发光二极管导通主要就是 欧姆定律,看样子 春阳大侠说的很对。

发光二极管的导通值是恒定的,不随电流大小的改变而改变。这一点是测量出来的,采用不同的限流电阻,导通时候,发光二极管两端电压恒定,都是1.5V。另外看手册图也能看出点端倪,就是在1.5V之后用的是虚线表示。
反相器的输入端接还是不接上拉电阻,对输出电压的影响很大,一定要注意。

使用特权

评论回复
地板
misra|  楼主 | 2012-7-27 16:27 | 只看该作者

....

本帖最后由 misra 于 2012-8-15 15:57 编辑

然后就是对MAX接收器的A/B管脚的上下啦电阻的分析。
这个上下拉电阻不加会不会出问题  不得而知 没有亲自试过。

加上下啦电阻主要是为了让终端电阻两端(假设加了终端电阻的话)的电压的绝对值大于200MV,这样才能让他不出于不确定的状态,否则若低电平了,别的单片机可能就认为收到了一个字节的起始位了。所以说就是为了不让单片机乱发数据的。
事实上加了上下啦电阻也不一定让终端电阻两端电压大于200MV,但是发现仍然不会乱发数据,为什么呢?
因为200MV大概只是IEC....这个国际官方组织规定的。实际上芯片厂商性能比这个要厉害,这就涉及到一个概念  滞回电压的概念,比如MAX485的滞回电压是35mV
,也就是说终端电阻两端电压只要大于35mv就OK了。
当然真正弄电路还得比35mv大的多  才保险。

使用特权

评论回复
5
misra|  楼主 | 2012-7-27 16:28 | 只看该作者

.....

本帖最后由 misra 于 2012-8-15 16:08 编辑

上下啦电阻阻值 咋算呢?
还是欧姆定律。
比如  你想让AB两端电压200MV,那么两个RS485节点欧姆定律后,可能得到上下啦800欧姆,但是有设计师会考虑到功耗,所以就在单个终端时弄了了1K,在两个节点都有终端时候弄了个2K。
因此说上下啦电阻 完全可以准确计算的。

至于终端电阻  就记住120欧姆就行了。
当然也可以准确计算   
可以根据理论推导出公式,在高频时候 咋咋样 在低频时候 咋咋样。

然后就分析EN使能脚的上拉电阻。
这个电阻主要是为了MCu上电后 管教高电平 所以 为了让  MAX接收器 处于接收状态才行,因为RS485要求同一时刻  只能最多有一个节点在发送数据。

从反相器的角度考虑这个电阻是没有必要加的  只要加上VCC链接到反相器上即可。但是考虑到MCU管教的 灌电流能力,所以是要限流的。
当然MOS和TTL管教的灌电流能力大小不同的。
不同的MCU 也不一样

使用特权

评论回复
6
coody| | 2012-7-27 16:40 | 只看该作者
RS485电路比CAN、USB容易多了

使用特权

评论回复
7
cgd| | 2012-7-27 17:19 | 只看该作者
RS232

使用特权

评论回复
8
阮天宇00| | 2012-7-27 17:24 | 只看该作者
加油!哈哈

使用特权

评论回复
9
yewuyi| | 2012-7-27 17:29 | 只看该作者
标题党?

使用特权

评论回复
10
misra|  楼主 | 2012-7-27 21:00 | 只看该作者
标题党?
yewuyi 发表于 2012-7-27 17:29

多谢大侠捧场。多谢大侠以前对我看门狗帖子的回复,没有你,我的看门狗程序可能是另一个样子啦!

使用特权

评论回复
11
Cortex-M0| | 2012-7-28 06:59 | 只看该作者
半瓶醋党?

使用特权

评论回复
12
yewuyi| | 2012-7-28 08:30 | 只看该作者
多谢大侠捧场。多谢大侠以前对我看门狗帖子的回复,没有你,我的看门狗程序可能是另一个样子啦!
misra 发表于 2012-7-27 21:00


已无印象,不要客气,但你这个帖子是干啥?励志贴?标题党?

使用特权

评论回复
13
misra|  楼主 | 2012-7-28 08:39 | 只看该作者
想把自己的学习心得放到1楼/2楼/3楼的帖子里。 还没开始学呢。

使用特权

评论回复
14
zhujian1234| | 2012-7-28 10:24 | 只看该作者
有多难啊

使用特权

评论回复
15
mgf006| | 2012-7-28 10:29 | 只看该作者
尽瞎搞

使用特权

评论回复
16
misra|  楼主 | 2012-7-30 14:44 | 只看该作者
本帖最后由 misra 于 2012-7-31 12:36 编辑

117288                                       
(1)问题1:R41和R42作用啥?如何取值?
misra 发表于 2012-7-27 16:24


问题1答案:找的好辛苦啊。
For RS-485 receiver inputs between -200mV and +200mV, the output is undefined. That is, if the differential
voltage on the RS-485 side of a half-duplex configuration is 0V, and no master transceiver is driving the line (or
a connection has come loose), then a logic "high" output is as probable as a logic "low." To ensure a defined
output under these conditions, most of today's RS-485 transceivers require failsafe bias resistors: a pullup
resistor on one line (A) and a pulldown on the other line (B), as shown in Figure 1. Historically, the failsafe bias
resistors on most schematics were labeled 560Ω, but to reduce power loss (when terminating one end only) this
value can be increased to approximately 1.1kΩ. Some designers terminate both ends with resistor values
between 1.1kΩ and 2.2kΩ. The trade-off is noise immunity versus current draw.

使用特权

评论回复
17
misra|  楼主 | 2012-7-31 12:35 | 只看该作者
本帖最后由 misra 于 2012-7-31 12:44 编辑

关于为什么在A / b路 串联电阻
另外 还有一种说法也比较流行
● RS485 总线上每个通信节点上采取保护措施,如:在每个节点的A、B 线上串联一个10
欧姆的隔离电阻,可以防止某个节点损坏后影响整条线路的通信功能

看看春阳咋说的:“总线隔离。RS-485总线为并接式二线制接口,一旦有一只芯片故障就可能将总线“拉死”,因此对其二线口VA、VB与总线之间应加以隔离。通常在VA、VB与总线之间各串接一只4~10Ω的PTC电阻,同时与地之间各跨接5V的TVS二极管,以消除线路浪涌干扰。如没有PTC电阻和TVS二极管,可用普通电阻和稳压管代替。

使用特权

评论回复
18
szxy06dq| | 2012-7-31 14:20 | 只看该作者
希望高手指正,我对485的认识
现在内部都带了上拉下拉了,120的电阻在多机通信的时候为了信号通道的连续性还是有必要的,主要防止信号反射。(跟光在不同介质传播一样。或者想象成一根绳子摔在一个钢筋上,抖下绳子,出去的波在结合处还是会反弹回来的)
120分别装在主机的出口和从机列的末尾。

使用特权

评论回复
19
aihe| | 2012-8-4 11:56 | 只看该作者
防浪涌最好还是放到电阻的那一边

使用特权

评论回复
20
misra|  楼主 | 2012-8-10 14:59 | 只看该作者
https://bbs.21ic.com/icview-105914-1-1.html

讲光耦输入端 二极管的作用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名: 循序渐进,道自然而至...........

4

主题

276

帖子

2

粉丝