0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

了解下RS485通信和Modbus通信协议

1X4o_GKB1508 来源:未知 作者:李倩 2018-08-22 16:02 次阅读

工业控制、电力通讯、智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换。最初采用的方式是RS232接口,由于工业现场比较复杂,各种电气设备会在环境中产生比较多的电磁干扰,会导致信号传输错误。除此之外,RS232接口只能实现点对点通信,不具备联网功能,最大传输距离也只能达到几十米,不能满足远距离通信要求。

RS485则解决了这些问题,数据信号采用差分传输方式,可以有效的解决共模干扰问题,最大距离可以到1200米,并且允许多个收发设备接到同一条总线上。随着工业应用通信越来越多,1979年施耐德电气制定了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采用Modbus协议,所以今天我们来了解下RS485通信和Modbus通信协议。

【RS485通信】

实际上在RS485之前RS232就已经诞生,但是RS232有几处不足的地方:

1、接口的信号电平值较高,达到十几V,容易损坏接口电路的芯片,而且和TTL电平不兼容,因此和单片机电路接起来的话必须加转换电路。

2、传输速率有局限,不可以过高,一般到几十Kb/s就到极限了。

3、接口使用信号线和GND与其他设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。

4、传输距离有限,最多只能通信几十米。

5、通信的时候只能两点之间进行通信,不能够实现多机联网通信。

针对RS232接口的不足,就不断出现了一些新的接口标准,RS485就是其中之一,他具备以下的特点:

1.逻辑“1”以两线间的电压差为+(2—6)V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。接口信号电平比RS232C降低了,就不易损坏电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。

2.RS485通信速度快,数据最高传输速率为10Mbps以上

3.RS485内部的物理结构,采用的是平衡驱动器和查分接收器的组合,抗干扰能力大大增加。

4.传输速率最远可达到1200米左右,但是他的传输速率和传输距离是成反比的,只有在100KB/s以下的传输速率,才能达到最大的通信距离,如果需要传输更远距离可以使用中继。

5.可以在总线上进行联网实现多机通信,总线上允许挂多个收发器,从现有的RS485芯片来看,有可以挂32、64、128、256等不同个设备的驱动器。

RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。RS-485用于多点互连时非常方便,可以省掉许多信号线。应用RS-485 可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。在RS232或RS485设备联成的设备网中,如果设备数量超过2台,就必须使用RS485做通讯介质,RS485网的设备间要想互通信息只有通过“主(Master)”设备中转才能实现,这个主设备通常是PC,而这种设备网中只允许存在一个主设备,其余全部是从(Slave)设备。

RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结点。在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,这有二个原因:

(1)共模干扰问题: RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。但人们往往忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作。当网络线路中 共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。

(2)EMI问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。 由于PC机默认的只带有RS232接口,有两种方法可以得到PC上位机的RS485电路:(1)通过RS232/RS485转换电路将PC机串口RS232信号转换成RS485信号,对于情况比较复杂的工业环境最好是选用防浪涌带隔离珊的产品。(2)通过PCI多串口卡,可以直接选用输出信号为RS485类型的扩展卡。

【Modbus通信协议】

Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。

Modbus具有以下几个特点:

(1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。

(2)Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。

(3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

【RTU协议帧数据】

Modbus有两种通信传输方式,一种是ASCII模式,一种是RTU模式。由于ASCII模式的数据字节是7bit数据位,51单片机无法实现,而且应用也相对较少,所以这里我们只用RTU模式。两种模式相似,会用一种另外一种也就会了。一条典型的RTU数据帧如图所示。

和我们实用串口通信程序类似,我们一次发送的数据帧必须是作为一个连续的数据流进行传输。我们在实用串口通信程序中采用的方法是定义30ms,如果接收到的数据超过了30ms还没有接收到下一个字节,我们就认为这次的数据结束。而Modbus的RTU模式规定不同数据帧之间的间隔是3.5个字节通信时间以上。如果在一帧数据完成之前有超过3.5个字节时间的停顿,接收设备将刷新当前的消息并假定下一个字节是一个新的数据帧的开始。同样的,如果一个新消息在小于3.5个字节时间内接着前边一个数据开始的,接收的设备将会认为它是前一帧数据的延续。这将会导致一个错误,因此大家看RTU数据帧最后还有16bit的CRC校验。

起始位和结束符:前后都至少有3.5个字节的时间间隔,起始位和结束符实际上没有任何数据,T1-T2-T3-T4代表的是时间间隔3.5个字节以上的时间,而真正有意义的第一个字节是设备地址。

设备地址:在多机通信的时候,数据那么多,我们依靠什么判断这个数据帧是哪个设备的呢?没错,就是依靠这个设备地址字节。每个设备都有一个自己的地址,当设备接收到一帧数据后,程序首先对设备地址字节进行判断比较,如果与自己的地址不同,则对这帧数据直接不予理会,如果如果与自己的地址相同,就要对这帧数据进行解析,按照之后的功能码执行相应的功能。如果地址是0x00,则认为是一个广播命令,就是所有的从机设备都要执行的指令。

功能代码:在第二个字节功能代码字节中,Modbus规定了部分功能代码,此外也保留了一部分功能代码作为备用或者用户自定义,这些功能码大家不需要去记忆,甚至都不用去看,直到你有用到的那天再过来查这个表格即可。

CRC校验:CRC校验是一种数据算法,是用来校验数据对错的。CRC校验函数把一帧数据除最后两个字节外,前边所有的字节进行特定的算法计算,计算完后生成了一个16bit的数据,作为CRC校验码,添加在一帧数据的最后。接收方接收到数据后,同样会把前边的字节进行CRC计算,计算完了再和发过来的CRC的16bit的数据进行比较,如果相同则认为数据正常,没有出错,如果比较不相同,则说明数据在传输中发生了错误,这帧数据将被丢弃,就像没收到一样,而发送方会在得不到回应后做相应的处理错误处理。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信协议
    +关注

    关注

    28

    文章

    732

    浏览量

    39689
  • RS485
    +关注

    关注

    39

    文章

    1054

    浏览量

    81061
  • MODBUS
    +关注

    关注

    27

    文章

    1431

    浏览量

    75670

原文标题:干货分享:RS485通信和Modbus通信协议汇总

文章出处:【微信号:GKB1508,微信公众号:工控帮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    labview与rs485通信modbus协议

    labview与rs485通信modbus协议编程怎么用,知道有mdbus模块,但是网上例程少而且特别简单所以,想看看大家是怎么利用这个modbus协议
    发表于 05-18 08:54

    浅析RS485通信Modbus通信协议

    RS485通信Modbus通信协议汇总1. 主从模式RS-485上的软件层协议
    发表于 08-23 06:16

    RS-485通信协议是怎样工作的

    通信协议是指什么?RS-485通信协议是怎样工作的?
    发表于 11-10 06:15

    RS485通信Modbus协议的相关资料分享

    文章目录RS485 通信Modbus 协议单片机 RS485 通信接口、控制线、原理图及程序
    发表于 11-30 07:31

    RS485通信Modbus协议的特点

    RS485通信Modbus协议 附源码及视频教程下载RS485通信的特点1、采用差分信号。2、RS48
    发表于 11-30 07:05

    了解一下MODBUS通信协议

    ,如有错误,请多指教。MODBUS协议简介MODBUS协议是美国Modicon公司(现已被收购)首先推出的基于RS485总线的通信协议,有RS
    发表于 01-14 06:19

    Modbus通信RS485通信有哪些不同之处呢

    单总线协议的通讯过程是怎样的呢?Modbus通信RS485通信有哪些不同之处呢?
    发表于 01-18 07:08

    RS485Modbus通信协议让工业自动化更高效

    电路的可靠性和稳定性。   【RS485通讯协议】   实际应用中,RS485接口还需要进行协议规范和数据格式化。常用的RS485通讯
    发表于 05-05 16:25

    RS485通信协议

    RS485通信协议RS485 通信协议1.概述C320 系列变频器提供标准RS485 通信
    发表于 04-07 17:26 88次下载

    RS485 通信协议教程

    RS485 通信协议教程 概述C320 系列变频器提供标准RS485 通信接口,用户可通过PC/PLC 实现集中监控(发送运行命令设定,变频器的工作参数和读取变频器的工作状态),以适
    发表于 04-13 14:54 91次下载

    基于RS485的多主机通信协议的设计_胡明飞

    基于RS485的多主机通信协议的设计_胡明飞
    发表于 01-12 19:56 11次下载

    RS485通信Modbus协议

    随着工业应用通信越来越多,1979年施耐德电气制定了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采用
    发表于 01-03 18:09 2.9w次阅读
    <b class='flag-5'>RS485</b><b class='flag-5'>通信</b>和<b class='flag-5'>Modbus协议</b>

    RS485MODBUS的区别 它们有什么不同?

    。 1979年施耐德电气制定了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采用Modbus协议,所以今
    的头像 发表于 03-16 09:02 1.7w次阅读

    MODBUS通信协议学习(一):协议简介

    ,如有错误,请多指教。MODBUS协议简介MODBUS协议是美国Modicon公司(现已被收购)首先推出的基于RS485总线的通信协议,有RS
    发表于 01-14 13:24 21次下载
    <b class='flag-5'>MODBUS</b><b class='flag-5'>通信协议</b>学习(一):<b class='flag-5'>协议</b>简介

    RS485MODBUS RTU的区别 如何选择合适的通信技术?

    RS485MODBUS RTU的区别 如何选择合适的通信技术? RS485是一种通信总线标准,而MOD
    的头像 发表于 02-01 10:27 2349次阅读