串口 linux 7e1,ModBus通信协议的【Modbus RTU 协议使用汇总】

本文详细介绍了Modbus RTU通信模式,包括其8位二进制和十六进制字符的传输方式、帧结构、错误检测以及常用功能码。RTU模式在相同波特率下比ASCII能传输更多数据,并通过特定的停顿间隔来标识消息的开始和结束。文中还给出了一个典型的消息帧示例,以及读取温湿度仪表等应用案例。
摘要由CSDN通过智能技术生成

1、RTU模式

当控制器设为在Modbus网络上以RTU(远程终端单元)模式通信,在消息中的每个8Bit字节包含两

个4Bit的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的

数据。

代码系统

· 8位二进制,十六进制数0...9,A...F

· 消息中的每个8位域都是一个两个十六进制字符组成

每个字节的位

· 1个起始位

· 8个数据位,最小的有效位先发送

· 1个奇偶校验位,无校验则无

· 1个停止位(有校验时),2个Bit(无校验时)

错误检测域

· CRC(循环冗长检测)

2、RTU帧

使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始。在网络波特率下多样的字符时间,这是最容易实现的(如下图的T1-T2-T3-T4所示)。传输的第一个域是设备地址。可以使用的传输字符是十六进制的0...9,A...F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。整个消息帧必须作为一连续的流转输。如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在最后的CRC域的值不可能是正确的。一典型的消息帧如下所示:

c34304b6d3329ea99f44cfb7ccfd1cda.png

ca4bcc2b8da2d2c8e1c0940f7d393004.png

3、Modbus RTU协议格式

请求和响应带有六个字节的前缀,如下:

byte 0:     设备地址

byte 1:     功能码

byte 2:     寄存器地址

byte 3:     寄存器地址

byte 4:     数据长度

byte 5:     数据长度

byte 6:     CRC校验

byte 7:     CRC校验

141c7d3225162118885091b8fd710e73.png

91ef42a71ee5d5e5786b0fb5eadfe2c3.png

4、常用的功能码

0x01 读取 输出 继电器的状态

8c6021835ac519cc4af3828747041ecc.png

94ae321d3ca6f517e127be97a0008cc8.png

0x02 读取 输入 继电器的状态

a852a19825efb3900a91a62b1bb48001.png

0x03 读多个寄存器

8962678084433afdc96ddf11e480a075.png

0x05 写单个输出继电器的状态

f6a6581067f135c7db2713619124c2ee.png

0x0F 写多个输出继电器的状态

eea5080f304f82e0ef7a3b6603b8c87a.png

0x10 写多个寄存器

6d56813770da79106934751f534e2a72.png

5、举例:Modbus-RTU读取温湿度仪表

c67a51cd67e4ffb3557c5a188a6df896.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值