热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

RS485自收发实现方案,典型应用电路及问题经验总结

关注、星标公众号,不错过精彩内容素材来源:网络转自:8号线攻城狮如上三张图片大致示意485芯片的收发特性,这里有个概念。RS

关注、星标公众,不错过精彩内容

素材来源:网络

转自:8号线攻城狮


如上三张图片大致示意485芯片的收发特性,这里有个概念。

RS485抗噪音抗干扰能力强、传输距离远、支持多点通信,是工控行业首选串行接口。485规定的电气特性为2线,半双工多点通信。采用两线差分信号传输数据,具有抗共模干扰的能力。由于是半双工模式,因此通讯时需要切换收发状态。目前常用的485收发切换方案有以下几种:

 

1.传统RS485电路(带收发控制脚非隔离RS-485电路)
传统的485应用电路如下图所示,采用3线控制,UART_RXD、UART_TXD和收发控制端UART_CON。

控制策略如下:UART_CON为低电平,485处于接收状态;UART_CON为高电平,485处于发送状态。通过切换UART_CON的电平来达到485收发状态的切换。

 

2.硬件自收发切换 非隔离RS-485电路

带收发控制脚的485在编程时需要切换控制端电平,增加了程序的复杂度。为了编程方便,常常将电路改为如上图所示的自动收发电路。这种采用分立元件搭建非隔离自动收发RS485电路的优点在于控制简单,收发控制脚不需要程序干预。

虽然采用分立元件搭建的非隔离RS485自动收发电路解决了带收发控制脚非隔离RS485电路编程上操作复杂的问题,但受三极管切换速度、收发器内部接口阻抗等影响,分立元件搭建的自动收发切换电路降低了系统稳定运行的最大波特率。

 

3.收发切换隔离RS485电路

带有隔离电路的485是最稳定的设计,需要选择隔离485芯片以及隔离电源,此方案成本相对于前两种方案会高很多。

下面介绍一种485硬件收发切换电路实例。

 

 485芯片采用MAX485芯片,电路使用NPN三极管开切换收发。控制原理是:MCU的UART的TX和RX引脚需要连上拉电阻(TX和RX在没有通信时均是高电平),防止刚上电TX和RX引脚电平不稳定引起收到扰乱数据。A上拉电阻B下拉电阻,终端并联120欧姆电阻,D10、D11、D12为三个防雷防浪涌的TVS管。

       

接收:默认没有数据时,UART_TX为高电平,三极管导通,MAX485芯片RE低电平使能,RO接收数据使能,此时从485AB口收到什么数据就会通过RO通道传到MCU,完成数据接收过程。

发送&#xff1a;当发送数据时&#xff0c;UART_TX会有一个下拉的电平&#xff0c;表示开始发送数据&#xff0c;此时三极管截止&#xff0c;DE为高电平发送使能。当发送数据‘0’时&#xff0c;由于DI口连接地&#xff0c;此时数据‘0’就会传输到AB口 A-B<0,传输‘0’&#xff0c;完成了低电平的传输。当发送‘1’时&#xff0c;此时三极管导通&#xff0c;按理说RO使能&#xff0c;此时由于还处在发送数据中&#xff0c;这种状态下MAX485处于高阻态&#xff0c;此时的状态通过A上拉B下拉电阻决定&#xff0c;此时A-B>0传输‘1’&#xff0c;完成高电平的传输。

PS: 此时有人肯定也会有疑惑&#xff0c;发送数据‘1’&#xff0c;三极管导通RE低电平有效应该是接收使能&#xff0c;为什么芯片会是高阻状态&#xff1f;

因为UART发送收据会有一定的格式&#xff0c;数据均以“位”为最小单位进行传输。在收发数据之前&#xff0c;UART之间要约定好数据的传输速率&#xff08;即每位所占据的时间&#xff0c;其倒数为波特率&#xff09;、数据的传输格式&#xff08;有多少数据位、是否有校验位、奇校验还是偶校验、是否有停止位&#xff09;。平时数据线处于“空闲状态”&#xff08;1状态&#xff09;。当发送数据时&#xff0c;TX由‘1’变为‘0’维持1位的时间&#xff0c;这样收方检测开始位后&#xff0c;再等待1.5位时间就开始一位一位的进行数据传输。意思是说&#xff0c;已经确定好发送状态&#xff0c;电路发送‘1’此时RE有效&#xff0c;接收有效但有由于它处于发送阶段&#xff0c;此时芯片会处于高阻状态。

三种常用电路如下&#xff1a;

1、基本的RS485电路

上图是最基本的RS485电路,R/D为低电平时&#xff0c;发送禁止&#xff0c;接收有效&#xff0c;R/D为高电平时&#xff0c;则发送有效&#xff0c;接收截止。上拉电阻R7和下拉电阻R8&#xff0c;用于保证无连接的SP485R芯片处于空闲状态&#xff0c;提供网络失效保护&#xff0c;提高RS485节点与网络的可靠性&#xff0c;R7&#xff0c;R8&#xff0c;R9这三个电阻&#xff0c;需要根据实际应用改变大小&#xff0c;特别是使用120欧或更小的终端电阻时&#xff0c;R9就不需要了&#xff0c;此时R7&#xff0c;R8使用680欧电阻。正常情况下&#xff0c;一般R7&#61;R8&#61;4.7K&#xff0c;R9不要。

图中钳位于6.8V的管V4&#xff0c;V5&#xff0c;V6&#xff0c;都是为了保护RS485总线的&#xff0c;避免受外界干扰&#xff0c;也可以选择集成的总线保护原件。另外图中的L1&#xff0c;L2&#xff0c;C1&#xff0c;C2为可选安装原件&#xff0c;用于提高电路的EMI性能.


2、带隔离的RS485电路

根本原理与基本电路的原理相似。使用DC-DC器件可以产生1组与微处理器电路完全隔离的电源输出&#xff0c;用于向RS485收发器提供&#43;5V电源。电路中的光耦器件速率会影响RS485电路的通信速率。上图中选用了NEC的光耦PS2501&#xff0c;受其影响&#xff0c;该电路的通讯速率控制在19200bps下。


3、自动切换电路

 

上图中&#xff0c;TX,RX引脚均需要上拉电阻&#xff0c;这一点特别重要。

接收&#xff1a;默认没有数据时&#xff0c;TX为高电平&#xff0c;三极管导通&#xff0c;RE为低电平使能&#xff0c;RO收数据有效&#xff0c;MAX485为接收态。

发送&#xff1a;发送数据时&#xff0c;TX会先有一个下拉的电平&#xff08;起始位-由高向低&#xff09;&#xff0c;表示开始发送数据&#xff0c;此时三极管截止&#xff0c;DE为高电平发送使能。当发送数据“0”时&#xff0c;由于DI接口相当于接地&#xff0c;此时数据“0”就会传输到AB扣&#xff0c;A-B<0&#xff0c;则传输“0”&#xff0c;完成低电平传输&#xff0c;当发送“1”时&#xff0c;此时三极管导通&#xff0c;按理说RO会使能&#xff0c;此时由于还处于发送数据中&#xff0c;这种状态下MAX485处于高阻太&#xff0c;此时的状态通过A上来&#xff0c;B下拉电阻决定&#xff0c;此时A-B>0传输“1”&#xff0c;完成高电平的传输。

注意&#xff1a;这里面有个疑惑&#xff0c;发送数据“1”&#xff0c;三极管RE低电平有效&#xff0c;应该是接收使能&#xff0c;为什么芯片是高阻态呢&#xff1f;这是因为UART发送数据是有一定格式的&#xff0c;TX和RX数据均以“位”为最小单位进行传输&#xff0c;在发送数据之前&#xff0c;UART之间要约定好数据传输速率&#xff0c;即波特率&#xff0c;数据传输格式&#xff08;数据位&#xff0c;校验&#xff0c;停止&#xff09;&#xff0c;平时数据线处于空闲状态&#xff08;1状态&#xff09;&#xff0c;当发送数据时&#xff0c;TX由“1”变为“0”维持1位的时间&#xff0c;这样接收方检测到开始位后&#xff0c;再等待1.5位时间就开始一位一位的进行数据传输了&#xff0c;也就是说&#xff0c;已经确定好发送状态&#xff0c;电路发送“1”时RE虽然有效&#xff0c;但是由于它处于发送阶段&#xff0c;芯片也不会收&#xff0c;即芯片处于高阻状态。

 

问题经验总结&#xff1a;

问题&#xff1a;485总线在通讯中&#xff0c;当某一节点出现故障时&#xff0c;其他一些节点会被影响&#xff0c;出现通信故障。

解决方法&#xff1a;在每个节点的AB线上串入一个22欧姆左右的电阻&#xff0c;同时协议的编制一定要考虑到故障侦测和报警。

问题&#xff1a;当485总线处于开路&#xff08;485收发器与总线断开&#xff09;或者空闲状态&#xff08;485收发器全部处于接收状态&#xff0c;总线没有收发器进行驱动&#xff09;时&#xff0c;485总线的差分电压基本为0&#xff0c;此时总线就处于一个不确定的状态。

解决方法&#xff1a;在485总线上增加上下拉电阻&#xff08;通常A接上拉电阻&#xff0c;B总线下拉电阻&#xff0c;一般为1K左右&#xff09;。

理论依据&#xff1a;根据RS-485标准&#xff0c;当485总线差分电压大于&#43;200mV时&#xff0c;485收发器输出高电平&#xff1b;当485总线差分电压小于-200mV时&#xff0c;485收发器输出低电平&#xff1b;当485总线上的电压在-200mV&#xff5e;&#43;200mV时&#xff0c;485收发器可能输出高电平也可能输出低电平&#xff0c;但一般总处于一种电平状态&#xff0c;若485收发器的输出低电平&#xff0c;这对于UART通信来说是一个起始位&#xff0c;此时通信会不正常。

推荐阅读&#xff1a;

英特尔工艺真的落后了吗&#xff1f;

gcc和g&#43;&#43;是什么&#xff0c;有什么区别&#xff1f;

TCP三次握手和四次挥手以及11种状态

关注微信公众号『strongerHuang』&#xff0c;后台回复“1024”查看更多内容&#xff0c;回复“加群”按规则加入技术交流群。

长按前往图中包含的公众号关注


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何基于ggplot2构建相关系数矩阵热图以及一个友情故事
    本文介绍了如何在rstudio中安装ggplot2,并使用ggplot2构建相关系数矩阵热图。同时,通过一个友情故事,讲述了真爱难觅的故事背后的数据量化和皮尔逊相关系数的概念。故事中的小伙伴们在本科时参加各种考试,其中有些沉迷网络游戏,有些热爱体育,通过他们的故事,展示了不同兴趣和特长对学习和成绩的影响。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 智能消息服务数字短信使用FAQ
    本文介绍了智能消息服务数字短信的开通流程和操作步骤,包括开通数字短信的路径、申请流程、控制台操作以及API接口对接模式。同时还介绍了数字短信模板的创建规则和要求,包括审核状态的说明和建议。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 手把手教你使用GraphPad Prism和Excel绘制回归分析结果的森林图
    本文介绍了使用GraphPad Prism和Excel绘制回归分析结果的森林图的方法。通过展示森林图,可以更加直观地将回归分析结果可视化。GraphPad Prism是一款专门为医学专业人士设计的绘图软件,同时也兼顾统计分析的功能,操作便捷,可以帮助科研人员轻松绘制出高质量的专业图形。文章以一篇发表在JACC杂志上的研究为例,利用其中的多因素回归分析结果来绘制森林图。通过本文的指导,读者可以学会如何使用GraphPad Prism和Excel绘制回归分析结果的森林图。 ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
author-avatar
Wei-Micro_788
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有