RS485与ModbusRTU
前言
大家好!我是付工。
每次听到别人说RS485通信协议,就很想去纠正他。
今天跟大家聊聊关于RS485的那些事。
接口标准
首先明确一点,RS485不是通信协议,而是一种接口标准,它还有2个兄弟:RS232和RS422。
RS是Recommend Standard的缩写,对于串口通信,目前工业领域主要使用RS232和RS485,RS422使用较少。RS485因为抗干扰、传输距离远、支持多节点等优点使用更为广泛。
下面是RS232、RS422及RS485的对比图。

接线方法
RS485可以一对多,因此针对多台RS485设备,我们应该如何接线?
首先,在电缆选择上,推荐使用屏蔽双绞线,型号为RVSP2*0.5(二芯屏蔽双绞线,每芯由16 股的0.2mm的导线组成),线材特性阻抗为120Ω。
其次,正确的接线方法是手拉手菊花链式接法,如果通信距离较远(比如超过100米),应该在网络的起始端和末尾端各并接一个120Ω的电阻,以减少信号在两端的反射。

挂接设备
一条RS485总线上可以挂载多少个RS485设备,这个问题会经常被问到。
具体的数量由RS485转换器的负载能力决定,正常来说,RS485芯片的负载能力有三个级别,这三个级别依次可以挂载32台、128台和256台。
通常,我们使用的RS485转换器负载能力是32台,而且也不建议在一条RS485总线上挂载太多,挂载越多,出现问题处理越麻烦。
如果设备确实很多,可以通过扩展RS485总线的数量来分担负载压力,比如100台RS485设备,分4个RS485总线,每个总线挂载25台。
传输距离
从理论的角度来说,RS485在无中继的情况下,通信距离是1200米,但是这个是在理想情况下,理想情况是指通信电缆优质、波特率9600bps、只有一个RS485设备并且允许偶尔通信中断。
实际情况,伴随着负载设备增多、通信电缆不达标、RS485转换器品质等外界因素影响,通信距离都会有所降低。
正常来说,超过100米,就要考虑增加终端电阻,超过1000米,就要考虑增加RS485总线中继器。
通信协议
ModbusRTU与RS485是什么关系?
准确来说,两者应该是不同层级的关系,ModbusRTU是应用层一种通信协议,RS485是物理层的一种接口标准。
我们常说的ModbusRTU通信,通常是指基于RS485,但是ModbusRTU协议也可以基于RS232/RS422,甚至可以基于以太网TCP/UDP。
同时,RS485也不是ModbusRTU的专属,任何协议都可以基于RS485传输,至于能不能实现一主多从,要看协议层面有没有设计设备地址。
一主多从的实现有两个条件,第一是物理层支持,第二是应用层支持,两者缺一不可。比如,我们物理层使用RS232,即使应用层使用ModbusRTU协议,也无法实现一主多从。
通信速度
很多人提到Modbus协议,第一反应就是慢,这个是长期以来,口口相传的结果。究竟是否如此,我们来具体分析一下。
通信速度主要受到两个因素的影响:数据量大小和硬件层的速度。数据量大小指的是需要传输的数据多少,而硬件层的速度则跟通信设备和网络基础息息相关,这两者共同决定了通信速度的快慢。
举个例子,大家都经常取快递,整个耗时时间,跟快递数量多少、距离有多远以及我们使用的交通工具都是有关的。
首先,Modbus是一种通信协议,是没有速度的说法的。如果真的要论速度,Modbus报文帧简单紧凑,表达同样一个意思,在不考虑安全性的前提下,Modbus可以用更少的报文来表达,而其他协议,可能报文要更复杂,数据量也更大。
其次,硬件层的速度,这个与波特率及通信距离都有关系,因此如果真的说慢,你只能说串口通信慢,但不能说Modbus慢。
下面这张图,是使用ModbusTCP与各种PLC及板卡通信结果,实测结果,没有好坏贬低。

很多人一味地追求快,但是对于上位机来说,根本不需要太快,人眼能识别的动画是25帧/秒,即40ms,超过这个频率,你眼睛都识别不过来。
一主多从
另外一种情况,可能很多人是因为一主多从轮询,认为ModbusRTU通信速度慢。
Modbus协议在报文层设计了设备地址,这样就可以配合RS485实现一主多从,一主多从可以简化布线、易于管理、节点成本。
因此,在通信要求不高的情况,使用一主多从是一个非常好的方案,一主多从轮询机制必然会带来通信效率的降低。
既然选择了这种方案,就需要接受它的缺点,如果接受不了这个缺点,就不要选择它。
总之,我认为存在即合理,一个优秀的工程师,应该学会在正确的场景下选择正确的方案,最终达到自己的目的。
RS485与ModbusRTU的更多相关文章
- “智慧海绵城市”(SSC)监测评价体系整体解决方案
一.方案简介 无论是内涝防治.黑臭水体治理,还是海绵城市规划设计及建设.评估,乃至未来智慧城市的建设,都需要有全面.致密.大量的城市水文监测数据和先进模拟仿真技术作基础支撑,唯有如此,决策才有据可依, ...
- MODBUS-RTU通讯协议简介
MODBUS-RTU通讯协议简介 什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...
- 普通PC通过USB转485串口 ModBus-RTU通信协议控制伺服电机
一.RS485通信 RS485 是半双工通信(2 线制),可以一点对多点进行组网,而且 RS485 是用缆线两端的电压差值来表示传递信号,这与 RS232 电气特性大不一样.RS485 仅仅规定了接收 ...
- modbus与rs485的关系_modbus与rs485的区别和联系
http://www.elecfans.com/tongxin/123/20180103610476.html 经常看到RS485和MODBUS写在一起,它们的区别和联系? RS485是一个物理接口, ...
- RS-232, RS-422, RS-485 Serial Communication General Concepts(转载)
前面转载的几篇文章重点介绍了UART及RS-232.在工控领域除了RS-232以外,常用的串行通信还有RS-485.本文转载的文章重点介绍了RS-232.RS-422和RS-485. Overview ...
- delphi 串口 关于RS485总线通信协议开发注意事项
http://blog.csdn.net/shjhuang/article/details/9426739 关于RS485总线通信协议开发注意事项 1 前言 近段时间发现我们系统在进行设备 ...
- 串口 COM口 TTL RS-232 RS-485 区别 释疑
Point: 1.串口.COM口是指的物理接口形式(硬件).而TTL.RS-232.RS-485是指的电平标准(电信号). 2.接设备的时候,一般只接GND RX TX.不会接Vcc或者+3.3v的电 ...
- TTL、RS232、RS485、串口
Point: 1.串口.COM口是指的物理接口形式(硬件).而TTL.RS-232.RS-485是指的电平标准(电信号). 2.接设备的时候,一般只接GND RX TX.不会接Vcc或者+3.3v的电 ...
- stm32 USART rs485 rs232
转载自:http://www.cnblogs.com/chineseboy/archive/2013/03/06/2947173.html 前题: 前段时间,在公司调试了一个项目,很简单,但对于初学的 ...
- 【应用笔记】【AN004】VB环境下基于RS-485的4-20mA电流采集
版本:第一版作者:周新稳 杨帅 日期:20160226 =========================== 本资料高清PDF 下载: http://pan.baidu.com/s/1c1uuhLQ ...
随机推荐
- 我跟你说@RefreshScope跟Spring事件监听一起用有坑!
本文记录一下我在 Spring 自带的事件监听类添加 @RefreshScope 注解时遇到的坑,原本这两个东西单独使用是各自安好,但当大家将它们组合在一起时,会发现我们的事件监听代码被重复执行.希望 ...
- 解决方案 | Citrix Receiver无法正常启动的多种解决方案
下面是个人在实践过程中总结的解决办法: 方案1:卸载Citrix Receiver(一般通过控制面板卸载,如果正常无法卸载则需要通过官方卸载软件ReceiverCleanupUtility软件卸载), ...
- MViT:性能杠杠的多尺度ViT | ICCV 2021
论文提出了多尺度视觉Transformer模型MViT,将多尺度层级特征的基本概念与Transformer模型联系起来,在逐层扩展特征复杂度同时降低特征的分辨率.在视频识别和图像分类的任务中,MViT ...
- oeasy 教您玩转 linux 之 010301 电子宠物 pet
我们来回顾一下 上一部分我们都讲了什么? 中️文诗词fortune=zh的使用 建立自己的彩色诗词库 通过pip把输出结果交给cowsay或boxes 我们这次讲一讲桌面的一些应用 oneko 我们可 ...
- 暑假java自学进度总结02
一.今日所学: 1.配置环境变量 在系统内配置java路径后,再在path中 利用系统路径配置Java编译工具和运行工具路径. 2.下载并安装Natepad++,并且配置相关设置 3.初步了解了Jav ...
- RS485总线防雷保护方案(转)
RS485作为最为最常用的电表通讯方式之一.日常生活中雷电和静电干扰已经成为485通信总线在实际工程经常遇到的问题.故如何对芯片以及总线进行有效的保护,是摆在每一个使用者面前的一个问题.在这里,我们主 ...
- python selenium元素定位
1.ID元素定位基于元素属性中的id的值来进行定位,id是一个标签的唯一属性值可以通过id属性来唯一定位一个元素,是首选的元素定位方式,动态ID不做考虑.driver .find_element_by ...
- Java8 Stream流使用
Java8 Stream 流式编程 一.Lambda表达式 Lambda表达式也可以称为闭包,它是推动Java8发布的最重要新特性,lambda允许把函数作为一个方法参数传递给方法. 在Java8之前 ...
- EF Core性能优化技巧
代码层面的优化 1. 使用实例池 EFCore2.0 为DbContext引入新的注册方式:透明地注册了 DbContext实例池,使用这种方式可以避免始终创建新的实例,EF Core 将重置其状态并 ...
- argparse学习笔记
argparse是 Python 的一个内置模块,用于编写用户友好的命令行接口.使用 argparse,你可以很容易地为 Python 脚本添加参数解析功能,使得脚本可以接受命令行选项和参数.学起来也 ...