最近在应用RS485,在网络上看见一篇好文章,转载与大家分享:

提高485总线的可靠性
摘 要:就485总线应用中易出现的问题,分析了产生的原因并给出解决问题的软硬件方案
和措施。
关键词:RS-485总线、串行异步通信
--------------------------------------------------------------------------------
1 问题的提出 在应用系统中,RS-485半双工异步通信总线是被各个研发机构广泛使用的数据通信总线,它往往应用在集中控制枢纽与分散控制单元之间。系统简图如图1所示。图1. RS-485系统示意图
由于实际应用系统中,往往分散控制单元数量较多,分布较远,现场存在各种干扰,所 以通信的可靠性不高,再加上软硬件设计的不完善,使得实际工程应用中如何保障RS-485总线的通信的可靠性成为各研发机构的一块心病。
在使用RS-485总线时,如果简单地按常规方式设计电路,在实际工程中可能有以下两个问题出现。一是通信数据收发的可靠性问题;二是在多机通信方式下,一个节点的故障(如死
机),往往会使得整个系统的通信框架崩溃,而且给故障的排查带来困难。
针对上述问题,我们对485总线的软硬件采取了具体的改进措施
2 硬件电路的设计
现以8031单片机自带的异步通信口,外接75176芯片转换成485总线为例。其中为了实现总线与单片机系统的隔离,在8031的异步通信口与75176之间采用光耦隔离。电路原理图如图2所示。
图 2 改进后的485通信口原理图
充分考虑现场的复杂环境,在电路设计中注意了以下三个问题。
2.1 SN75176 485芯片DE控制端的设计
由于应用系统中,主机与分机相隔较远,通信线路的总长度往往超过400米,而分机系统上电或复位又常常不在同一个时刻完成。如果在此时某个75176的DE端电位为“1”,那 么它的485总线输出将会处于发送状态,也就是占用了通信总线,这样其它的分机就无法与主机进行通信。这种情况尤其表现在某个分机出现异常情况下(死机),会使整个系统通信 崩溃。因此在电路设计时,应保证系统上电复位时75176的DE端电位为“0”。由于8031在复位期间,I/O口输出高电平,故图2电路的接法有效地解决复位期间分机“咬”总线的问题。
2.2 隔离光耦电路的参数选取在应用系统中,由于要对现场情况进行实时监控及响应,通信数据的波特率往往做得较 高(通常都在4800波特以上)。限制通信波特率提高的“瓶颈”,并不是现场的导线(现场施工一般使用5类非屏蔽的双绞线),而是在与单片机系统进行信号隔离的光耦电路上。此 处采用TIL117。电路设计中可以考虑采用高速光耦,如6N137、6N136等芯片,也可以优化普通光耦电路参数的设计,使之能工作在最佳状态。例如:电阻R2、R3如果选取得较大,将会使光耦的发光管由截止进入饱和变得较慢;如果选取得过小,退出饱和也会很慢,所以这两只电阻的数值要精心选取,不同型号的光耦及驱动电路使得这两个电阻的数值略有差异,这一点在电路设计中要特别慎重,不能随意,通常可以由实验来定。
2.3 485总线输出电路部分的设计
输出电路的设计要充分考虑到线路上的各种干扰及线路特性阻抗的匹配。由于工程环境比较复杂,现场常有各种形式的干扰源,所以485总线的传输端一定要加有保护措施。在电路设计中采用稳压管D1、D2组成的吸收回路,也可以选用能够抗浪涌的TVS瞬态杂波抑制器件,或者直接选用能抗雷击的485芯片(如SN75LBC184等)。
考虑到线路的特殊情况(如某一台分机的485芯片被击穿短路),为防止总线中其它分机的通信受到影响,在75176的485信号输出端串联了两个20Ω的电阻R10、R11。这样本机的硬件故障就不会使整个总线的通信受到影响。
在应用系统工程的现场施工中,由于通信载体是双绞线,它的特性阻抗为120Ω左右,所以线路设计时,在RS-485网络传输线的始端和末端各应接1只120Ω的匹配电阻(如图2中R8),以减少线路上传输信号的反射。
由于RS-485芯片的特性,接收器的检测灵敏度为± 200mV,即差分输入端VA-VB ≥+200mV,输出逻辑1,VA-VB ≤-200mV,输出逻辑0;而A、B端电位差的绝对值小于200mV时,输出为不确定。如果在总线上所有发送器被禁止时,接收器输出逻辑0,这会误认为通信帧的起始引起工作不正常。解决这个问题的办法是人为地使A端电位高于B两端电位,这样RXD的电平在485总线不发送期间(总线悬浮时)呈现唯一的高电平,8031单片机就不会被误中断而收到乱字符。通过在485电路的A、B输出端加接上拉、下拉电阻R7、R9,即可很好地
解决这个问题。
3 软件的编程
485芯片的软件编程对产品的可靠性也有很大影响。由于485总线是异步半双工的通信总线,在某一个时刻,总线只可能呈现一种状态,所以这种方式一般适用于主机对分机的查询方式通信,总线上必然有一台始终处于主机地位的设备在巡检其它的分机,所以需要制定一套合理的通信协议来协调总线的分时共用。这里采用的是数据包通信方式。通信数据是成帧成包发送的,每包数据都有引导码、长度码、地址码、命令码、内容、校验码等部分组成。其中引导码是用于同步每一包数据的引导头;长度码是这一包数据的总长度;命令码是主机对分机(或分机应答主机)的控制命令;地址码是分机的本机地址号;“内容”是这一包数据里的各种信息;校验码是这一包数据的校验标志,可以采用奇偶校验、和校验等不同的方式。
在485芯片的通信中,尤其要注意对485控制端DE的软件编程。为了可靠的工作,在485总线状态切换时需要做适当延时,再进行数据的收发。具体的做法是在数据发送状态下,先将控制端置“1”,延时1ms左右的时间,再发送有效的数据,一包数据发送结束后再延时1ms后,将控制端置“0”。这样的处理会使总线在状态切换时,有一个稳定的工作过程。
4 结论
经过以上的软硬件共同处理,RS-485总线在应用系统工程中的可靠性大大提高,在通常的环境条件下,24小时连续开机,系统的通信始终处于正常状态,整机性能满足了现场工程需要。
但是RS-485总线仍然只是一种常规的通信总线,它不能够做总线的自动仲裁,也就是不能够同时发送数据以避免总线竞争,所以整个系统的通信效率必然较低,数据的冗余量较 大,对于速度要求高的应用场所不适宜用RS-485总线。同时由于RS-485总线上通常只有一台 主机,所以这种总线方式是典型的集中-分散型控制系统。一旦主机出现故障,会使整个系统的通信陷于瘫痪状态,因此做好主机的在线热备份是一个重要措施。
尽管RS-485总线存在这样那样的问题,但由于它的线路设计简单、价格低廉、控制方便,只要合理的使用在某些场所仍然能发挥良好的作用。

RS485应用电路图相关推荐

  1. RS485通信----基本原理+电路图

    一.RS485 通信----简介 RS485 是美国电子工业协会(Electronic Industries Association,EIA)于1983年发布的串行通信接口标准,经通讯工业协会(TIA ...

  2. 硬件控制RS485电路图设计

    作为一枚软件工程师,能力比较菜,只好麻烦硬件工程师费工夫了. 转自:http://www.elecfans.com/article/88/131/101/2014/20141008355704.htm ...

  3. FT232R转RS485电路图

    FT232R芯片转RS485的电路图,注意的事项:如果按照官方原理图的设计方法,会存在的问题是:发出去的数据也被接收回来了,这个一般不满足我们平常的需求,所以要在官方的电路上调整下,具体参考下方电路图 ...

  4. 交流充电桩电路图_详细剖析交流充电桩上电源和RS485隔离原理

    较直流桩而言,交流桩少了大功率的RS485隔离通信的角度出发,阐述一些合适的应用. 图 1 交流充电桩示意图 一.交流桩的主要通信方式 交流桩上因不带充电机,充电由车载的充电机完成,因此一般不需要CA ...

  5. 工业机器人电路图讲解话术_6张经典电路图分析助你进阶高级电工,你都会了吗?...

    很多初学者朋友不知道怎么分析电路图,今天小编就挑选几个经典案列一一讲解,只要你彻底的学透了这几个电路,你就能慢慢学着自己设计电路了.高级电工考试会给出电路图,只要你会分析电路图,看图接线即可. 星三角 ...

  6. uart ttl通讯测试可以短接吗_精讲!UART、RS232、RS422、RS485,绝了

    有源元件和无源元件的区别 超详细的元器件分类大全-电阻.电容.电感 (点击上方红字,即可获取) 通讯问题,和交通问题一样,也有高速.低速.拥堵.中断等等各种情况.如果把串口通讯比做交通,UART比作车 ...

  7. rs485接口上下拉_详解RS-485上下拉电阻的选择

    RS-485总线广泛应用于通信.工业自动化等领域,在实际应中,通常会遇到是否需要加上下拉电阻以及加多大的电阻合适的问题,下面我们将对这些问题进行详细的分析. 为什么需要加上下拉电阻? 根据RS-485 ...

  8. rs485接口上下拉_RS-485总线为什么要加上拉下拉电阻?如何选择RS485的上下拉电阻?...

    周教授物联网开发 - 干货汇总! 一.为什么需要加上下拉电阻? 1.当485总线差分电压大于+200mV时,485收发器输出高电平: 2.当485总线差分电压小于-200mV时,485收发器输出低电平 ...

  9. RS-485电路设计及接口防护

    1.RS-232/422/485标准 通常的微处理器都集成有1路或多路硬件UART通道,可以非常方便地实现串行通讯.在工业控制.电力通讯.智能仪表等领域中,也常常使用简便易用的串行通讯方式作为数据交换 ...

最新文章

  1. 孤荷凌寒自学python第八十一天学习爬取图片1
  2. gcc/g++静态链接和动态链接解决glibc版本不兼容的问题
  3. 如何给IP Product找到可用的sales organization
  4. 在linux下搭建mysql数据库(以linux 版本Ubuntu18.04为例进行讲解)
  5. html页面字段怎么排版,如何做好html的排版标签
  6. php中admin文件什么意思,开始使用 · tpAdmin 文档 · 看云
  7. bilibili怎么用用户名登录_b站账号(bilibili免费账号密码)
  8. 火山引擎多场景下的云原生技术实践
  9. lightoj 1224(trie)
  10. python图片提取文字
  11. 看看一位清华计算机专业的学生怎么看LINUX与WINDOWS的
  12. brew对redis的使用
  13. java虚拟机线程数_Java虚拟机最多支持多少个线程?
  14. version libmysqlclient_18 not defined in file libmysqlclient.so.18 with link time reference
  15. 《程序员的呐喊》一一1.2 巴别塔
  16. C++ 无法打开 源 文件「bits/stdc++.h」//E1696
  17. linux下查看系统的信息
  18. 2021年高压电工考试总结及高压电工考试技巧
  19. 算法 - 数学 - 组合数 - 隔板法求组合数
  20. 如何提高固态硬盘读取速度?

热门文章

  1. 微信朋友圈点赞的测试点
  2. 基于OpenCASCADE自制三维建模软件(四)实现三维显示界面
  3. mac完全卸载LV security Agent 安装助手客户端
  4. Windows壁纸和Bing主页壁纸提取(仅作测试MarkDown)
  5. 收购VMware之后,WaveMaker Drop Enterprise Edition
  6. matlab 三个向量数据绘制曲面图
  7. IT软件创业之 -- 曾经热血沸腾软件创业、技术带人犯下的幼稚错误总结
  8. 定子电流分析 异步电机 matlab,MatlabSimulink环境下异步电机定子故障诊断的仿真与研究...
  9. 为什么我觉得Python烂的要死?原因有八
  10. 蚂蚁管网参数化三维建模数据规格V1.0