首页 理论教育 Modbus RTU通信协议

Modbus RTU通信协议

时间:2023-06-26 理论教育 版权反馈
【摘要】:ModbusRTU模式下的信息传输报文格式见表5-2。设备地址是一个0~247间的数字,发送给地址0的信息可以被所有从机接收到;但是数字1~247是特定设备的地址,相应地址的从设备总是会对Modbus信息作出反应,这样主设备就会知道这条信息已经被从设备接收到了。需要注意的是,在RTU模式中,整个消息帧必须作为一个连续的数据流进行传输。

Modbus RTU通信协议

为了与从设备进行通信,主设备会发送一段包含设备地址、功能代码、数据段和错误检查的信息。ModbusRTU模式下的信息传输报文格式见表5-2。使用RTU模式发送消息,至少要有3.5个字符的时间停顿间隔作为报文的开始,这种字符时间间隔在网络波特率多样的情况下是很容易实现的。

表5- RTU信息帧报文格式

978-7-111-51420-6-Chapter05-16.jpg

1)设备地址:信息帧的第一个字节是设备地址码,这个字节表明由用户设置地址的从机将接收由主机发送来的信息。每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送;当从机回送信息时,相应的地址码表明该信息来自于何处。设备地址是一个0~247间的数字,发送给地址0的信息可以被所有从机接收到;但是数字1~247是特定设备的地址,相应地址的从设备总是会对Modbus信息作出反应,这样主设备就会知道这条信息已经被从设备接收到了。

2)功能码:功能码是通信传送的第二个字节,定义了从设备应该执行的命令,例如读取数据、接收数据、报告状态等(参见表5-3),有些功能代码还拥有子功能代码。主机请求发送,通过功能码告诉从机执行什么动作;作为从机响应,从机发送的功能码与从主机得到的功能码一样,并表明从机已响应主机进行操作。功能码的范围是1~255,有些代码适用于所有控制器,有些代码只能应用于某种控制器,还有些代码保留以备后用。

表5-3 功能代码

978-7-111-51420-6-Chapter05-17.jpg(www.xing528.com)

3)数据段:不同的功能码,数据段的内容会有所不同。数据段包含需要从机执行什么动作或由从机采集的返送信息,这些信息可以是数值、参考地址等;对于不同的从机,地址和数据信息都不相同。例如,功能码告诉从机读取寄存器的值,则数据段必须包含要读取寄存器的起始地址及读取长度

4)CRC码:循环冗余校验码(CRC)是包含两个字节的错误检测码,由传输设备计算后加入到消息中,接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,表明有错误。在有些系统中,还需对数据进行奇偶校验,奇偶校验对每个字符都可用,而帧检测CRC应用于整个消息。

典型的RTU报文帧没有起始位,也没有停止位,而是以至少3.5个字符的时间停顿间隔标志一帧的开始或结束(见表5-2的T1-T2-T3-T4)。报文帧由地址域、功能域、数据域和CRC校验域构成。所有字符位由十六进制0~9、A~F组成。

需要注意的是,在RTU模式中,整个消息帧必须作为一个连续的数据流进行传输。如果在消息帧完成之前有超过1.5个字符时间的停顿间隔发生,接收设备将刷新未完成的报文并假定下一个字节将是一个新消息的地址域;同样地,如果一个新消息在小于3.5个字符时间内紧跟前一个消息开始,接收设备将认为它是前一个消息的延续。如果在传输过程中有以上两种情况发生,就会导致CRC校验产生一个错误消息,并反馈给发送设备。

网络设备不断侦测网络总线,即使在停顿间隔时间内也不例外。当第一个域(地址域)接收到,每个设备都进行解码以判断是否是发给自己的;在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束;一个新的消息可在此停顿后开始。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈