当前位置: 首页 > news >正文

RS485通信总线详解

RS485 总线详解

RS-485 是美国电子工业协会(EIA)在 1983 年批准了一个新的平衡传输标准(Balanced Transmission Standard)也称作差分,EIA 刚开始将 RS(Recommended Standard)做为标准的前缀,不过后来为了便于识别标准的来源,将 RS 改为 EIA/TIA,所以目前该标准的名称为 TIA-485,但目前工程师们依旧习惯继续沿用 RS-485 作为该总线标准的名称。

1. 前言

RS-485 属于电气标准,该标准定义了接口的物理层标准例如电压,阻抗等等,而不对软件协议,通信时序,通信数据给予定义。而是由用户或通用软件协议来定义。目前可以使用 RS-485 作为物理层的通用标准协议(纯软件协议)有工业 HART 总线,Modbus 协议和 Profibus DP 协议。

2. 电气特性

(1) RS485 有两线制和四线制两种接线,四线制只能实现点对点的通信方式(一个主机连接一个从机),现很少采用,多采用的是两线制接线(A 线,B 线)方式,这种接线方式为总线式拓扑结构,总线多采用屏蔽双绞线传输数据,在同一总线上最多可以挂接 32 个节点,即一个主机可以连接多个从机。

(2) RS-485 以两线间的电压差为 +2V 到 +6V 表示逻辑 1 ,以两线间的电压差为 -2V 到 -6V 表示逻辑 0 。接口信号电平比 RS-232 更低(RS232 为 -15V 到 +15V),所以相比 RS-232 更不易损坏接口芯片,同时 RS-485 电平与 TTL 电平兼容,可方便与 TTL 电路连接。

(3) RS-485 采用差分信号传输,减少了潜在的电磁干扰 EMI,差分信号的值很大程度上与 GND 的精确值无关,所以能够抵抗电源的干扰。

(4) 符合 RS-485 标准的驱动器能够提供不小于 1.5V 的差分输出(在 54 Ohm 负载下),RS-485 最小差分电压容限 200mV,也就是说接收端在差分电压低于 200mV 时就无法正确识别逻辑 0和逻辑 1

请添加图片描述
(5) RS-485 的数据最高传输速率为 10Mbps ,即 每秒可传输 10M 位数据,而 RS-232 传输速率仅为 20Kbps。

(6) RS-485 理论上最大可传输距离为 3000米,在实际操作中极限距离仅达 1200 米。

(7) RS-485 仅支持半双工通信,因为通信双方需要共用一对差分信号线传输数据,但是一对差分信号线无法同时传输双方的数据,因此由于通信线路制约无法支持全双工通信。

2.1 理解单端/差分传输

(1) 单端传输(非平衡传输):在传输过程中,使用一根导线,在这根导线上传输对地(GND)之间的电位差,利用电位差来表示数据逻辑 01,传输的信号叫单端信号。

(2) 差分传输(平衡传输):差分传输是使用两根线进行传输信号,这两根线上的信号振幅相等,相位相差 180 度,极性相反。在这两根线上传输的信号就是差分信号,信号接收端比较这两个信号的电位差来判断发送端发送数据的逻辑 0 和逻辑 1

2.2 差分传输抗干扰原理

单端传输方式,因为地并不会被干扰,而输出信号产生干扰后,输出信号与地的电位差发生变化,导致污染原始信号,噪声最终与输出信号共同输出。

请添加图片描述
差分传输方式,则源端发出的 + 信号与 - 信号的相位是相反的,而对于共模噪声而言在 +/- 两条线上都会存在,理想情况噪声是等幅同相的,而接收端,相当于一个减法器,有用信号由于相位相反则经过减法器仍然保留,而噪声则会被抵消。

请添加图片描述

3. 时序

RS-485 在时序上非常简单,没有诸如 SPII2C 的同步时钟线,由于是差分数据线所以不需要我们编写程序以控制时序,在时序上没有太多可解读的内容,但是我们还是需要了解一下 RS-485 的时序,如下图。

请添加图片描述不过差分数据线可以使用双通道示波器解读数据,例如示波器通道一接入 RS-485 的 A 线,通道二接入 RS-485 的 B 线,开启示波器的 Math 功能使用通道一减去通道二即可得到实际的数据波形。

4. 收发器

在 RS485 通信网络中,每个总线节点设备通常会使用 RS-485 收发器来转换节点设备的 TTL 逻辑电平到 RS-485 差分电平。

RS-485 通信需要结合使用单片机,DSP 处理器的 UART 接口,通过 UART 将数据发送到 RS-485 收发器,再由 RS-485 对数据电平进行转换并发送给数据接收端。

如果使用 FPGA 使用 RS-485 则需要实现一个支持串口收发的 IP 模块。甚至也可以使用 GPIO 模拟 UART 时序与 RS-485 收发器通信,只不过这需要占用大量 CPU 资源以实现底层数据位的收发。

5. 匹配电阻

在设备少,距离短的情况下即使不使用终端负载电阻整个网络也能很好的工作,但伴随着距离的递增通信质量,性能逐渐降低。

理论上,在每个接收数据信号的中点进行采样时,只要反射信号在开始采样时衰减到足够低就可以不考虑匹配。但这在实际上难以掌握,美国 MAXIM 公司提到一条经验性的原则可以用来判断在什么样的数据速率和电缆长度时需要进行匹配:当信号的转换时间(上升或下降时间)超过电信号沿总线单向传输所需时间的 3 倍以上时就可以不加匹配电阻。

一般终端匹配采用终端电阻方法,RS-485 应在总线电缆的开始和末端都并接终端电阻。终端电阻在 RS-485 网络中取 120 Ohm。相当于电缆特性阻抗的电阻,因为大多数双绞线电缆特性阻抗大约在100Ohm-120Ohm。

终端匹配方法简单有效,唯一的缺点是匹配电阻需要消耗较大功率,对于功耗限制比较严格的系统不太适用。另外一种比较省电的匹配方式是 RC 匹配。利用一只电容 C 隔断直流成分可以节省大部分功率。但电容 C 的取值是个难点,需要在功耗和匹配质量间进行折中。还有一种采用二极管的匹配方法,这种方案虽未实现真正的匹配,但它利用二极管的钳位作用能迅速削弱反射信号,达到改善信号质量的目的,节能效果显著。

6. 接口设计

RS-485 收发器是大部分芯片公司都涉及的产品,比如 TI,Microchip 等厂商都有,选择接口芯片的时候需要考虑芯片的供电电压输入逻辑是否与使用的处理器,DSP的电平兼容,另外 RS-485 收发器接收电路的阻抗是否是符合 RS-485 标准输入阻抗。

接口电路设计的时候还需要考虑 EMC 要求,在一些设备现场真的有很强的干扰,比如电网上有大功率电机等感性负载运行,这些负载可能干扰设备,另外也可能存在空间辐射干扰,这时候可以考虑采用屏蔽双绞线。

7. 隔离设计

在很多工业现场可能有大电流开关设备,电机感性设备等,噪声很有可能通过通讯的接地耦合进设备。尤其在工业设备中,一般都会设计成带隔离的接口电路。为了降低接地噪声要设计隔离接口,可以考虑选择具有隔离功能的芯片,比如 ADI 的

iCoupler 技术产品 ADM2481,ADM2485。当然也可以采用光耦加普通 RS-485 收发器的方式。唯一需要注意的是需要设计一个带隔离的电源,给隔离两侧电路分别供电。

8. ESD 保护

在工业应用中雷击,电源波动,静电放电都会产生较大的瞬变电压并对 RS-485 收发器造成损害,所以需要在 RS-485 端口处设置保护电路。

保护电路可以使用外部钳位器件(例如 TVS 二极管)。TVS 将总线上的电压钳位到 RS-485 收发器的共模电压范围(-7V–12V)。对于更高的电压瞬变,可在受保护器件与输入引脚之间串联电阻(10-20 Ohm)来加强保护。

9. 共地问题

由于 RS-485 采用 差分 的方式传输,因此抗干扰能力更强,通信距离也比 RS-232 更远。RS-485 通信一般是半双工的,仅需要 2 根信号线,如果是全双工的,则需要 4 根信号线。

实际上 RS485 需要三根线分别是 A,B 和 GND,GND 用于通信双方设备接地。但由于 RS485 使用差分传输,所以一般会认为 GND 不重要,经常省略甚至使用两芯线或者用视频线来传输 RS485 信号。虽然如果不接地线,在很多场合是能正常工作的,但可能会产生以下两个问题:

(1) 共模干扰问题: RS-485 接口采用差分方式传输信号,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差即可。但是 RS-485 收发器有一定的共模电压范围,一般电压范围为 -7V 到 +12V,只有满足上述条件,整个网络才能正常工作。如果总线上有很多的节点,当网络线路中共模电压超出该范围就会影响通信的稳定性。

(2) EMI 电磁兼容性问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有信号地这样低阻的返回通道,信号中的共模部分就会以辐射的形式返回源端,总线会像天线一样向外辐射电磁波。

以上就是关于 RS-485 的技术细节,在实际硬件接口设计需要 RS-485 收发器配合使用,常用的 RS-485 收发器有 SN75176BDR,其原理图如下:

请添加图片描述实际使用时注意设计接口保护电路,防止损坏收发芯片。

相关文章:

RS485通信总线详解

RS485 总线详解 RS-485 是美国电子工业协会(EIA)在 1983 年批准了一个新的平衡传输标准(Balanced Transmission Standard)也称作差分,EIA 刚开始将 RS(Recommended Standard)做为标准的前缀&am…...

罗技LogitechFlow技术--惊艳的多电脑切换体验

作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。 一个人的价值,在于他所拥有的。所以可以不学无术,但不能一无所有! 技术领域:WEB安全、网络攻防 关注WEB安全、网络攻防。…...

社招中级前端笔试面试题总结

HTTP世界全览 互联网上绝大部分资源都使用 HTTP 协议传输;浏览器是 HTTP 协议里的请求方,即 User Agent;服务器是 HTTP 协议里的应答方,常用的有 Apache 和 Nginx;CDN 位于浏览器和服务器之间,主要起到缓存…...

东南大学研究生上学期英语期末总结

写在前面 作者:夏日 博客地址:https://blog.csdn.net/zss192 本文为东南大学研究生英语上学期期末总结,内容为根据老师所发 PPT 总结得来 相关资料: 点我查看 题型说明 Module 1 International Conference 50% 题型范围&am…...

leaflet 删除所有的marker图层,保留其他图层(085)

第085个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet项目中清除所有的marker图层,保留其他图层,详情请参考源代码。这里面主要用到了(layer instanceof L.Marker ,注意 L.Marker中Marker首字母要大写。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行…...

双因素方差分析全流程

上篇文章讲述了“单因素方差分析全流程总结”,单因素方差分析只是考虑了一个自变量(定类)与一个因变量(定量)之间的关系,但是在实际问题研究中可能研究两个或者几个因素与因变量之间的关系,例如…...

微信公众号抽奖怎么做_分享微信抽奖小程序制作的好处

在H5游戏中,抽奖是最受消费者喜爱的模式之一。将H5微信抽奖活动结合到营销中,可以带来意想不到的效果,带流量和曝光率,所以许多企业也会在做活动时添加上不同类型的H5微信抽奖活动。编辑那么,新手怎么搭建微信抽奖活动…...

逻辑回归—分类问题的操作顺序

对于二元分类问题来说,分类的结果和数据的特征之间仍呈现相关关系,但是y的值不再是连续的,是0~1的跃迁。但是在这个过程中,什么仍然是连续的呢?”是概率,概率是逐渐升高的,当达到一个…...

查询服务器tns文件路径,oracle数据库tns配置方法详解

查询服务器tns文件路径,oracle数据库tns配置方法详解 TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Network Substrate透明网络底层, 监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器。 TNS是Oracle Net…...

【数据结构】链表

目录 数据结构之链表:: SList.h 1.链表的概念及结构 2.链表的分类 SList.c 3.动态申请一个结点 4.单链表打印 5.单链表销毁 6.单链表头插 7.单链表头删 8.单链表尾插 9.单链表尾删 10.单链表查找 11.单链表在pos之前插入…...

一文讲明Hystrix熔断器

前言 解决问题: 主要防止服务器集群发生雪崩, 起到对服务器的保护作用 GitHub地址:https://github.com/Netflix/Hystrix/wiki 1 Hystrix是什么 1.1 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不…...

第12篇:Java类核心构成要素分析

目录 1、Java类构成要素 1.1 如何定义类 1.2 如何定义变量 1.2.1 类变量 1.2.2 实例变量...

记一次 .NET 某医保平台 CPU 爆高分析

一:背景 1. 讲故事 一直在追这个系列的朋友应该能感受到,我给这个行业中无数的陌生人分析过各种dump,终于在上周有位老同学找到我,还是个大妹子,必须有求必应 😁😁😁。 妹子公司的…...

滤波算法 | 无迹卡尔曼滤波(UKF)算法及其MATLAB实现

目录简介UKF滤波滤波流程和公式MATLAB程序结论简介 本文接着分享位姿跟踪和滤波算法中用到的一些常用程序,希望为后来者减少一些基础性内容的工作时间。以往分享总结见文章:位姿跟踪 | 相关内容目录和链接总结(不断更新中~~~) 本…...

JAVA开发(运行JAR包怎么指定虚拟机内存大小)

我们都使用过 java -jar xxx.jar包去运行jar包。但是有时候要指定jar包运行时内存,该怎么做,而且设置多大怎么衡量,很多人从来没有了解过。 背景: 我们开发java程序,可能涉及到开发环境,测试环境&#x…...

领导力的终极奥义

过去,我曾多次演讲、著书,把自己在长达半个世纪的经营实践中所体悟到的经营思想和方法告诉中国的企业家。 但是,对于任何一家企业来说,不管它倡导了多么高尚的经营哲学,不管它构建了多么精致的管理系统,这样…...

1-MATLAB APP Design-图像的输入与输出

一、APP 界面设计展示 新建一个空白的APP,在此次的学习中,我们会用到编辑字段(文本框)、 按钮、坐标区和面板,首先在界面中拖入一个编辑字段(文本框),在文本框中输入内容:图形的输入与输出,调整背景颜色,字体的颜色为黑色,字体的大小调为25....

【C++】内存管理

目录一、C/C内存分布二、C内存管理方式2.1、new/delete操作内置类型2.2、new和delete操作自定义类型三、operator new与operator delete函数3.1、operator new与operator delete函数四、new和delete的实现原理4.1、内置类型4.2、自定义类型五、定位new表达式(placement-new)六、…...

Dilworth定理

偏序关系 设RRR是集合AAA的一个二元关系,若RRR满足: 1.自反性:∀x∈A\forall x \in A∀x∈A,有xRxxRxxRx 2.反对称性:∀x,y∈A\forall x,y \in A∀x,y∈A,若xRy,yRxxRy,yRxxRy,yRx,则xyxyxy 3.传递性&…...

使用loading动画让你的条件渲染页面更高级

前言在我们做项目的使用常常会使用条件渲染去有选择的给用户展示相关页面,如果渲染的数据或场景比较多比较复杂,那么往往需要3、4s的时间去完成,用户点击了之后就会陷入3、4s的空白期,并且这段时间屏幕是处于一种”未响应“的状态…...

通过阿里云 DashScope API 调用通义千问

获取API Key 百炼控制台https://bailian.console.aliyun.com/?tabmodel#/api-key 步骤 1:安装 DashScope SDK pip install dashscope 步骤 2:LangChain 调用 from langchain_community.llms import Tongyi# 设置阿里云 API Key(从环境变…...

大故障:阿里云核心域名爆炸了

大故障:阿里云核心域名被拖走了 今天早上许多群里出现网站故障的讨论,比如 cnblogs 全国访问一片红,一看原来是阿里云又出故障了。 今天早上许多群里出现网站故障的讨论,比如 cnblogs 全国访问一片红,一看原来是阿里云…...

基于51单片机的光强控制LED灯亮灭

目录 具体实现功能 设计介绍 资料内容 全部内容 资料获取 具体实现功能 具体功能: (1)按下按键K后光敏电阻进行光照检测,LCD1602显示光照强度值; (2)光照值小于15时,上面2个LE…...

vue3前端实现导出Excel功能

前端实现导出功能可以使用一些插件 我使用的是xlsx库 1.首先我们需要在vue3的项目中安装xlsx库。可以使用npm 或者 pnpm来进行安装 npm install xlsx或者 pnpm install xlsx2.在vue组件中引入xlsx库 import * as XLSX from xlsx;3.定义导出实例方法 const exportExcel () …...

毕设 基于机器视觉的驾驶疲劳检测系统(源码+论文)

文章目录 0 前言1 项目运行效果2 课题背景3 Dlib人脸检测与特征提取3.1 简介3.2 Dlib优点 4 疲劳检测算法4.1 眼睛检测算法4.2 打哈欠检测算法4.3 点头检测算法 5 PyQt55.1 简介5.2相关界面代码 6 最后 0 前言 🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升…...

数学复习笔记 27

前言 太难受了。因为一些事情。和朋友倾诉了一下,也没啥用,几年之后不知道自己再想到的时候,会怎么考虑呢。另外,笔记还是有框架一点比较好,这样比较有逻辑感受。不然太乱了。这篇笔记是关于线代第五章,特…...

Linux 下关于 ioremap 系列接口

1、序 在系统运行时,外设 IO 资源的物理地址是已知的,由硬件的设计决定(参考SOC的datesheet,一般会有memorymap)。驱动程序不能通过物理地址访问IO资源,必须将其映射到内核态的虚拟地址空间。常见的接口就是…...

1-2 Linux-虚拟机(2025.6.7学习篇- win版本)

1、虚拟机 学习Linux系统,就需要有一个可用的Linux系统。 如何获得?将自己的电脑重装系统为Linux? NoNo。这不现实,因为Linux系统并不适合日常办公使用。 我们需要借助虚拟机来获得可用的Linux系统环境进行学习。 借助虚拟化技术&…...

将数据库表导出为C#实体对象

数据库方式 use 数据库;declare TableName sysname 表名 declare Result varchar(max) /// <summary> /// TableName /// </summary> public class TableName {select Result Result /// <summary>/// CONVERT(NVARCHAR(500), ISNULL(ColN…...

Sentry 接口返回 Status Code 429 Too Many Requests

Sentry 是一个 开源的错误追踪&#xff08;Error Tracking&#xff09;平台&#xff0c;主要用于实时捕获和监控应用程序中的异常、错误日志&#xff0c;并帮助开发者快速定位问题根源。 &#x1f4cc; Sentry 的核心功能 自动捕获异常 自动捕捉 JavaScript、Vue、React、Node.…...