通讯协议学习之路:RS485协议理论

通讯协议之路主要分为两部分,第一部分从理论上面讲解各类协议的通讯原理以及通讯格式,第二部分从具体运用上讲解各类通讯协议的具体应用方法。

后续文章会同时发表在个人博客(jason1016.club)、CSDN;视频会发布在bilibili(UID:399951374)

序:个人理解

  • RS485本质仍为串口通讯协议
  • RS485具有串行、异步、半双工的特性
  • RS485是半双工通讯,同一时间只能接收或者发送
  • RS485可采用一主多从的通信方式
  • RS485本质为将串口RX与TX信号通过485转换芯片转化为差分信号进行传输
  • RS485逻辑电平由差分电平决定,差分信号线具有A和B两条线
  • 逻辑0:A>B
  • 逻辑1:B>A
  • RS485在传输过程中采用双绞线,在遇到外界干扰信号时,双绞线电平信号呈等比例改变,提高系统稳定性。具有强抗干扰性

一、RS485、RS232、串口通信关系

RS485、RS232和串口通信是三个相关的概念,它们在串行通信中扮演不同的角色。

RS485是一种物理层标准,用于实现多点通信的串行通信。它定义了通信线路的电气特性、连接器和信号级别等。RS485使用差分信号传输,即使用两条信号线(A线和B线)来传输数据,其中A线和B线的电平相反。这种差分信号传输方式使得RS485可以在较长距离上进行可靠的数据传输,并支持多个设备在同一总线上进行通信。

RS232是一种物理层标准,用于实现点对点通信的串行通信。它定义了通信线路的电气特性、连接器和信号级别等。RS232使用正负电平来表示逻辑1和逻辑0,通常使用负电平表示逻辑1,正电平表示逻辑0。RS232通常使用DB9或DB25连接器,用于将串行通信设备与外部设备连接起来。

串口通信是一种通信方式,通过串行口(也称为串口)进行数据的发送和接收。串口通信可以使用不同的物理层标准,如RS485、RS232等。串口通信通常由串口控制器(如UART)负责将并行数据转换为串行数据进行发送,以及将串行数据转换为并行数据进行接收。

在实际应用中,RS485和RS232通常都被用作串口通信的物理层标准。RS485适用于多点通信的场景,可以连接多个设备在同一总线上进行通信。RS232适用于点对点通信的场景,通常用于连接计算机与外部设备之间的串行通信。串口通信可以使用RS485或RS232作为物理层标准,通过串口控制器(如UART)实现数据的发送和接收。

需要根据具体的应用需求和设备支持来选择使用RS485还是RS232作为串口通信的物理层标准。同时,还需要根据通信距离、设备数量、数据传输速率等因素来选择合适的物理层标准和通信方式。

二、RS-485通讯协议

资料

链接:百度网盘 请输入提取码

提取码:1016

简述

​ MCU管脚输出TTL电平,TTL电平的意思是,当MCU管脚输出0电平时,一般情况下电压是0V,当MCU管脚输出1电平时,电压是5V。因TTL电平的是由一条信号线,一条地线产生,信号线上的干扰信号会跟随有效信号传送到接收端,使得有效信号受到干扰,485通讯实际上是把MCU出来的TTL电平通过硬件层的一个转换器芯片进行转换:

​ 把MCU出来的一条的TTL信号经过芯片转换为两根线(线A、线B)上的信号。当MCU给转换器输入低TTL电平时,转换器会使得B的电压比A的电压高,反之,A的电压比B的电压高。

​ 485协议规约两条电平线上差值为多少表示0或者1,电压是通过仪表可以测量得到的,所以说RS-485是硬件层协议。

​ 485协议的接收端可能是另一个MCU,MCU管脚也只接受TTL电平,转换芯片过来的是两条线的电压,所以需要对此两条线差分电压转换为TTL电平。

​ 把TTL转为485,实质是一个集成芯片,其间无任何程序代码,纯粹硬件逻辑。同理,将485电平转为TTL也是如此。现在很多芯片把接收和转换都集成到一块IC,注意,转换器和接收器依旧是没有同时工作的,常见的转换芯片是MAX485。

可以这样理解,硬件层协议是公路,路的目的是为了让车辆能够过去。

半双工通讯

​ 首先了解什么是单工通讯,单工通讯是指数据只能朝着一个方向传输的通讯方式。而半双工通讯则是指对于通讯两端,不能同时相对方法发送数据,必须错开时间段发送。

​ RS-485的通讯线只有2条,且这两条通讯线在一次传输中都需要用到,因此485只可实现半双工通讯。485实现半双工通讯,会遇到一个问题,MCU1向MCU2发数据时,并不知道线上是否正传来MCU2数据,因为没有其他线可用来判断对方的收发状态,那么可能也会导致数据冲突。因此,RS-485要实现半双工通讯,就需要上层的软件协议加以规约,也就是做到”不能你想发数据就发数据”。可以理解,软件层协议就好像交通规则,它能让数据有序传输。

RS-485介绍

​ 电子工业协会(EIA)于1983年制订并发布RS-485标准,并经通讯工业协会(TIA) 修订后命名为TIA/EIA-485-A,所以TIA/EIA-485-A才是真正的名字,因为人们已经叫习惯RS-485了,所以后续也一直沿用RS-485这个叫法。

​ RS-485标准是为弥补RS-232通信距离短、速率低等缺点而产生的。RS-485标准只规定了平衡发送器和接收器的电特性,而没有规定接插件、传输电缆和应用层通信协议。

​ RS-485标准与RS-232不一样,数据信号采用差分传输方式(Differential Driver Modc),也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为 B,如图所示。

传输方式以及电平

RS-485传输方式:半双工通信、==(逻辑1:+2V ~ +6V 逻辑0:-6V ~ -2V)==这里的电平指AB 两线间的电压差。

节点连接示意图

因为大多数MCU的信号都是TTL信号,且数据是通过串口发送和接收,是不符合RS-485标准的,所以要将数据放在485通信线上传输的话,就要将TTL信号转为RS-485的差分信号,然后在AB线上传输,到达节点后再将RS-485的差分信号转换为TTL信号,给节点的MCU进行数据处理

RS-485数据链路示意图

拓扑结构

RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,多采用的是两线制接线方式,这种接线方式为总线拓扑结构,在同一总线上最多可以挂接32个节点。

RS-485总线同I2C,也是主从模式,支持点对点单从机模式,也支持多从机模式,不支持多主机模式。

电路原理图

该原理图是一个基本的RS-485电路,采用的是Sipex公司的SP3485芯片,是一款低功耗的,工作电压为3.3V的芯片,该芯片的一些特性后面会介绍到

微处理器的标准串行口通过RXD直接连接SP3485芯片的RO引脚,通过TXD直接连接SP485R芯片的DI引脚。

让该芯片处于发送模式还是接收模式的选择位是DE/!RE,一般情况下把这两个引脚接在一起,只用微处理器的一个引脚控制

U9是TVS管,环境恶劣时可加,做保护作用,平时实验可以不加

R25是上拉电阻,R27下拉,默认状态下将A拉高,B拉低,如果不加电阻,那默认情况下是不稳定的,会对单片机的引脚造成干扰

芯片内部图

收发器内部是一个接收器(上半部分)加一个发送器(下半部分),然后就是引脚功能

RO:接收器输出

RE:接收器输出使能(低电平有效)

DE:发送器输出使能(高电平有效)

DI:发送器输入

GND:接地连接

A:发送器输出/接收器输入反相

B:发送器输出/接收器输入反相

Vcc:正极电源(+3.3V

发送功能真值表        

如果微处理器输出的信号DE_nRE为高电平,则芯片处于发送模式(发送器/驱动器),差分输出A和B遵循数据输入DI处的逻辑状态;

当DI为高电平时,导致A转为高,B转为低。在这种情况下,定义为VOD=VA-VB的差分输出电压为正,也就是逻辑1(AB间的电压差为+2V ~ +6V);

当DI为低电平时,输出状态反转,B变高,A变低,VOD为负 ,为逻辑0(AB间的电压差为 -6V ~ -2V);

当DE低时,两个输出都变成高阻抗。在这种情况下,与D处的逻辑状态是不相关的。

接收功能真值表

如果微处理器输出的信号DE_nRE为低电平,则芯片处于接收模式(接收器),如果为高电平,则关闭接收模式;

AB间的电平大于+200mv时,RO引脚输出逻辑1;

AB间的电平小于-200mv时,RO引脚输出逻辑0;

当AB间的电平处于-200mv ~ +200mv之间时,则表示不稳定

优点

  1. 半双工通信
  2. 差分信号传输,更加稳定
  3. RS485内部的物理结构,采用的是平衡驱动器和查分接收器的组合,抗干扰能力大大增加。
  4. 可以在总线上进行联网实现多机通信,总线上允许挂多个收发器,从现有的RS485芯片来看,有可以挂32、64、128、256等不同个设备的驱动器。
  5. 通信速度快,数据最高传输速率在10Mbps以上
  6. 传输速率最远可达到1200米左右,但是传输速率和传输距离是成反比的,只有在100KB/s以下的传输速率,才能达到最大的通信距离,如果需要传输更远距离可以使用中继。
  7. 系统运行稳定。利用专用通信总线把集中器和主站安全、可靠的连接起来。除非设备接口硬件损坏,或者总线线路断开,总线抄表系统会一直保持很好的通信效果和抄收成功率。
  8. 通信速率高。由于是专用的有线通信线路连接,线路上除了通信信号外,再无其他信号。外来的干扰信号耦合到线路衰减很大,所以集中器可以以较高的速率与主站通信。

缺点

  1. 不支持全双工
  2. 敷设困难。比如总线抄表系统需要在集中器与主站之间敷设通信线路。尤其是电能表比较分散时,通信线路敷设的工程量很大,而且架设在外的通信线路影响美观。
  3. 维护成本高。比如通信线路的损伤直接影响总线抄表方式的通信效果。所以需要定时的检查线路,保证其正常运行。特别是架设在外面的线路,一旦断裂或被腐蚀,要重新敷线。对于新增加的用户,也要及时敷线,使其进入通信网内

常用芯片

增强型低功耗半双工RS-485收发器一SP481E/SP485E

特点:

单一的+5V电源

低功耗BiCMOS工艺制造

发送器/接收器可使能多分支结构(Mutli-Drop)配置低功耗关断模式(SP481E)

描述(SP481E,SP485E)

SP481E 和SP485E是半双工差分收发器,完全满足RS-485和 RS-422的要求。它们由Sipex特有的 BiCMOS工艺制造而成。

RS-485标准理想地用于多分支(multi-drop)应用和远程接口中。它允许在一条数据线上连接32个发送器和接收器,非常适合于多分支应用。由于允许使用4000英尺长的电缆,RS-485收发器可以使用一个宽(一7V~+12V)共模方式范围来调整零电位偏差。因为RS-485是一个差分接口,所以传输数据时完全可以抑制来自发送线的干扰。


1/10单位负载RS-485收发器一SP481R/SP485R

特点

单一的+5V电源

允许超过400个收发器连接到同一条传输线上(1/10单位负载)接收器输入高阻抗(标准值RIN=150kQ)

半双工配置与工业标准管脚一致

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

包含关断模式(ICC

独立发送器和接收器使能

SP485R芯片是由业内专业的通讯接口器件厂商Sipex 公司设计生产的高性能RS-485收发器,能够替换通用的RS-485收发器,并在许多方面有所增强。

SP481R和SP485R与现有的SP485产品管脚对应相同,而且包含更高的ESD保护和高接收器输入阻抗等性能。接收器输入高阻抗可以使400个收发器接到同一条传输线上又不会引起RS-485发送器信号的衰减。各器件封装为8脚塑料DIP或8脚窄SOIC。SP481R通过使能管脚来提供关断功能,可将电源电流(Icc)降低到0.5uA 以下。


+3.3V低功耗半双工 RS-485收发器一SP3481/SP3485

特点

RS-485和 RS-422收发器工作电源为+3.3V

可与+0.5V的逻辑电路共同工作发送器/接收器使能

低功耗关断模式(SP3481)-7V~+12V的共模输入电压范围

允许在同一串行总线上连接32个收发器与工业标准75176管脚配置兼容

发送器输出短路保护

描述(SP3481,SP3485)

SP3481和SP3485是+3.3V低功耗半双工收发器家族的成员,它们完全满足RS-485和RS-422串行协议的要求。这两个器件与Sipex 的SP481、SP483和SP485的管脚互相兼容,同时兼容工业标准规范。SP3481和 SP3485由 Sipex特有的BiCMOS工艺制造而成,但性能不受影响。


增强型低功耗全双工RS-422收发器一SP490E/SP491E

特点

单一的+5V电源

低功耗BiCMOS工艺制造发送器/接收器使能(SP491E)RS-485和 RS-422发送器/接收器

管脚兼容LTC490和 SN75179(SP490E)管脚兼容LTC491和 SN75180 (SP491E)增强型ESD规范:

正负15kV人体放电模式(Human Body Model)

SP490E是一个低功耗差分收发器,满足RS-485和RS-422标准规范,数据传输速率高达10Mbps。除了增加了发送器和接收器三态使能线外,SP491E和SP490E完全相同。在共模模式的限制范围内,两者的接收器输入的灵敏度为士200mV.

SP490E包含8脚塑料 DIP和8脚 NSOIC两种封装形式,可工作在商业级和工业级温度范围内。SP491E包含14脚DIP和14脚 NSOIC两种封装,也可工作在商业级和工业级温度范围内。


上诉列举了几款常用芯片,引脚都是兼容的,只是性能上有所差异

注意要点

(1)共模干扰问题:RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以。

长距离布线会有信号衰减,而且引入噪声和干扰的可能性更大,在线缆A和B上的表现就是电压幅度的变化,但是,采用差分线的好处就是,差值相减就会忽略掉干扰依旧能输出正常的信号,把这种差分接收器忽略两条信号线上相同电压的能力称为共模抑制。

通俗来说,就是如果在传输过程中遇到干扰,那A、B两根线的电压都会发生变化,可能本来A是5V,B是2V,被干扰成了A是8V,B是5V,但由于485通信检测的是两根线之间的电压差,所以AB间的电压差并没有发生改变,仍然是3V,所以接收器检测到的仍然是正确的信号

相反,像串口和RS232这些单端的通信方式,因为只有一根信号线和一根地线,并会规定某个电平状态表示一种逻辑,如5V表示1,0V表示0,当在传输过程中发生干扰时,5V可能变成了2V,这时候就没法判断到底是1还是0了,导致传输的数据不正确

此外人们往往忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为==-7~+12V==,只有满足上述条件,整个网络才能正常工作。当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。

(2)EMI问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端。整个总线就会像一个巨大的天线向外辐射电磁波。又因为共模电压范围是-7V ~ +12V,所以通信的两边也需要一根地线来做标准,不能让共模电压超出范围,防止损坏端口

由于上述原因,RS-485网络尽管采用差分平衡传输方式,但对整个RS-485网络,必须有一条低阻的信号地。一条低阻的信号地将两个接口的工作地连接起来,使共模干扰电压被短路。这条信号地可以是额外的一条线(非屏蔽双绞线),或者是屏蔽双绞线的屏蔽层。这是最通常的接地方法。

(3)终端匹配电阻

为了匹配网络的通讯阻抗,减少由于不匹配而引起的反射、吸收噪声,有效抑制噪声干扰,提高RS-485通讯的可靠性,需要在RS-485网络的2个端点各安装1个终端匹配电阻。终端匹配电阻的大小由传输电缆的特性阻抗所决定。例如,RS-485网络通常采用双绞线或屏蔽双绞线作为传输介质,其特性阻抗为120欧,因此,RS-485总线上的两个端点也应各安装1个120欧的终端匹配电阻。

匹配电阻要消耗较大电流,不适用于功耗限制严格的系统。在特殊的场合,可以考虑比较省电的并联“RC”匹配方案,可以节省大部分功率,但电容C的取值是个难点,需要在功耗和匹配质量间进行折衷。

参考文章:【精选】RS-485接口协议详解_rs485_ONE_Day|的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/110636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP 协议的基本格式(部分)

要想了解HTTP,得先知道什么是HTTP,那么HTTP是什么呢?HTTP (全称为 "超文本传输协议") 是一种应用非常广泛的 应用层协议。那什么是超文本呢?那就是除了文本,还有图片,声音,视频等。 …

『C++成长记』C++入门——命名空间缺省参数

🔥博客主页:小王又困了 📚系列专栏:C 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、C的认识 📒1.1什么是C 📒1.2C的发展 二、C关键字 三…

论文阅读之《Kindling the Darkness: A Practical Low-light Image Enhancer》

目录 摘要 介绍 已有方法回顾 普通方法 基于亮度的方法 基于深度学习的方法 基于图像去噪的方法 提出的方法 2.1 Layer Decomposition Net 2.2 Reflectance Restoration Net 2.3 Illumination Adjustment Net 实验结果 总结 Kindling the Darkness: A Practical L…

轮转数组------题解报告

题目:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题解: 如果直接暴力双循环会时间超限,所以我选择了一个空间复杂度比较高的方法。直接再创建一个数组,然后对应位置替换,最后把值赋给原…

Spring framework Day24:定时任务

前言 在我们的日常生活和工作中,时间管理是一项至关重要的技能。随着各种复杂任务的增加和时间压力的不断增加,如何更好地分配和利用时间成为了一项迫切需要解决的问题。在这样的背景下,定时任务成为了一种非常有效的解决方案。 定时任务&a…

Kubernetes技术与架构-服务

从软件系统架构设计分层的角度看,Kubernetes的Service是基于Pod的上层,业务应用部署在Pod中,使用Service绑定Pod部署的应用,Service可以对外或者对上层提供服务,当Pod集群在系统调度的过程中发生弹性伸缩的时候&#x…

Python中的With ...as... 作用

Python中的with … as …作用: 1、通过with语句可以得到一个上下文管理器 2、执行对象 3、加载__enter__方法 4、加载__exit__方法 5、执行__enter__方法 6、as 可以得到enter的返回值 7、拿到对象执行相关操作 8、执行完了之后调用__exit__方法 9、如果遇到异常&a…

1024程序员节特辑 | ELK+ 用户画像构建个性化推荐引擎,智能实现“千人千面”

专栏集锦,赶紧收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.…

易点易动上线招标管理模块:提升企业高效招标管理的解决方案

在当今竞争激烈的商业环境下,招标管理对于企业的成功至关重要。为了帮助企业实现高效的招标管理,易点易动固定资产管理系统上线了全新的招标管理模块。该模块涵盖了供应商资质审核、采购询价单、重新报价单、招标结果单、招标作废单等功能,为…

10月份stable diffusion animatediff等插件使用指南,又来更新了

插件一直会更新,包含了基本市面上流行的90%插件,好用的插件更是不会错过,往期插件请看往期文章,如果你没有时间一直关注sd更新的进展,请关注我,一个月用几个小时看一下我的文章,最短时间跟进sd。…

【微服务】spring webflux响应式编程使用详解

目录 一、webflux介绍 1.1 什么是webflux 1.2 什么是响应式编程 1.3 webflux特点 二、Java9中响应式编程 2.1 定义事件流源 2.2 实现订阅者 三、Spring Webflux介绍 四、Reactor 介绍 五、Reactor 常用API操作 5.1 Flux 创建流操作API 5.2 Flux响应流的订阅 5.3 Fl…

Mybatis对数据库进行增删查改以及单元测试

这篇写的草率了,是好几天前学到,以后用来自己复习 UserInfo import lombok.Data;Data public class UserInfo {private int id;private String name;private int age;private String email;//LocalDateTime可用于接收 时间}Mapper UserMapper pack…

2023年中国多功能折叠刀产量、销量及市场规模分析[图]

多功能折叠刀是一种集多种功能于一身的刀具,通常包括切割、开瓶、剥皮、锯木等功能,可以通过折叠和展开的方式来实现不同的功能,具有便携、多用途、安全等特点,广泛应用于户外探险、露营、自驾旅行等场景。 多功能折叠刀行业分类…

Simian使用方法

1.下载 链接1:官网下载 链接2:压缩包 2.操作 1.双击exe启动 2.打开控制台,winR 输入cmd 3.输入操作语句 G:\1111\simian-2.5.10\bin\simian-2.5.10.exe -includes"G:\1111\test\*.cpp" -threshold3 > output.txt G:\1111\si…

利用TypeScript 和 jsdom 库实现自动化抓取数据

以下是一个使用 TypeScript 和 jsdom 库的下载器程序,用于下载zhihu的内容。此程序使用了 duoip.cn/get_proxy 这段代码。 import { JSDOM } from jsdom; import { getProxy } from https://www.duoip.cn/get_proxy;const zhihuUrl https://www.zhihu.com;(async (…

璞华科技再次赋能,助力成都市温江区“码”上维权不烦“薪” !

科技赋能护“薪”行动 “码”上维权不烦“薪” 为保障劳动者工资收入的合法权益,提升人社部门智能化咨询服务能力,2023年10月17日,成都市温江区人力资源和社会保障局发布“码上护薪”小程序,助力劳动者“码”上维权不烦”薪”。…

【Machine Learning】01-Supervised learning

01-Supervised learning 1. 机器学习入门1.1 What is Machine Learning?1.2 Supervised learning1.3 Unsupervised learning 2. Supervised learning2.1 单元线性回归模型2.1.1 Linear Regression Model(线性回归模型)2.1.2 Cost Function(代…

学习编程语言需要熟悉库函数吗?

学习编程语言需要熟悉库函数吗? 我想答案肯定是需要的。 但不是盲目的挨个去记,几乎各个语言的库函数都极为丰富,逐个记忆的话是十分劝退的,而且也不可能全部熟悉,到用的时候该忘还是忘。最近很多小伙伴找我,说想要一…

AArch64 TrustZone

概述 本文我们介绍了 TrustZone 技术。通过CPU内置的硬件强制隔离,TrustZone 提供了一种高效的全系统安全设计。 我们介绍了如下功能:将 TrustZone 技术添加到处理器架构中,内存系统对于 TrustZone 的支持以及典型的软件架构。我们还介绍了…

利用MixProxy自动录制生成Pytest案例:轻松实现测试脚本编写!

前言 进行接口自动化时,有时候往往没有接口文档,或者文档更新并不及时,此时,想要获取相关接口,通过抓包是一种快速便捷的手段。抓包获取到接口后,开始写接口用例,此时需要复制请求url、请求参数…