艾巴生活网

您现在的位置是:主页>科技 >内容

科技

rs485与modbus通信协议教程,RS485通信和Modbus通信协议

2024-03-02 13:47:01科技帅气的蚂蚁
很多朋友对rs485与modbus通信协议教程,RS485通信和Modbus通信协议不是很了解,艾巴小编刚好整理了这方面的知识,今天就来带大家一探究竟。

rs485与modbus通信协议教程,RS485通信和Modbus通信协议

很多朋友对rs485与modbus通信协议教程,RS485通信和Modbus通信协议不是很了解,艾巴小编刚好整理了这方面的知识,今天就来带大家一探究竟。

在工业控制、电力通信、智能仪器等领域。串行通信通常用于数据交换。起初,采用RS232接口。由于工业现场的复杂性,各种电气设备在环境中会产生较多的电磁干扰,从而导致信号传输错误。另外,RS232接口只能实现点对点通信,没有联网功能,最大传输距离只能达到几十米,无法满足远距离通信的要求。

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

其实RS232在RS485之前就诞生了,但是RS232有几个缺点:接口1、的信号电平高,达到10 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.传输速率最远可达1200m左右,但与传输距离成反比。只有当传输速率低于100KB/s时,才能达到最大通信距离。如果有必要传输更长的距离,可以使用中继。5.总线上联网可以实现多机通信,总线上可以挂多个收发器。从现有的RS485芯片来看,有可以挂32、64、128、256等不同设备的驱动。

RS-485采用平衡传输和差分接收,因此具有抑制共模干扰的能力。RS-485工作在半双工模式,任何时候只能有一点处于发送状态。因此,发射电路必须由使能信号控制。RS-485非常方便多点互连,可以节省很多信号线。RS-485的应用可以联网形成一个分布式系统,它允许多达32个驱动器和32个接收器并联。

在由RS232或RS485设备组成的设备网络中,如果设备数量超过两个,则必须使用RS485作为通信介质。RS485网络中设备之间的信息交换只能通过“主”设备的传递来实现,主设备通常是一台PC机,但这个设备网络中只允许有一台主设备,其余都是从设备。

RS485有两种接线方式:两线制和四线制。四线制只能实现点对点通信,现在已经很少使用了。现在多采用两线制。这种接线方式是总线拓扑结构,同一条总线上最多可以挂32个节点。在RS485通信网络中,一般采用主从式通信方式,即一个主机带多个从机。在许多情况下,当连接RS-485通信链路时,只需用一对双绞线连接每个接口的“A”和“B”端子。

而忽略了信号地的连接,这种连接方式在很多场合可以正常工作,但却埋下了极大的隐患,原因有二:

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

(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)3)Modbus的帧格式简单、紧凑,易于理解。用户使用方便,厂商开发简单。

R【TU协议帧数据】Modbus有两种通信传输模式,一种是ASCII模式,一种是RTU模式。因为ASCII模式的数据字节是7-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的数据进行比较,如果相同则认为数据正常,没有出错,如果比较不相同,则说明数据在传输中发生了错误,这帧数据将被丢弃,就像没收到一样,而发送方会在得不到回应后做相应的处理错误处理。

以上就是关于rs485与modbus通信协议教程,RS485通信和Modbus通信协议的知识,希望能够帮助到大家!