Modbus RTU通讯协议

 1.Modbus RTU报文基本格式

起始应有 不小于3.5个字符的报文间隔

目标站号

功能码

数据

CRC校验码

1字节

1字节

N字节

2字节


2. Modbus命令

若响应错误,则返回的应答帧中“功能码”最高位置1, 比如功能码为01,若响应错误,则返回的功能码为0x81。

2.1 功能码01:读线圈(开关量输出)

请求格式:

目标站号

功能码

起始地址

高字节

起始地址

低字节

读取个数

高字节

读取个数

低字节

CRC

1字节

01

1字节

1字节

1字节

1字节

2字节


正确应答格式:

站号

功能码

返回数据字节数

返回数据字节1

返回数据字节2

CRC

1字节

01

1字节

1字节

1字节

2字节


2.2 功能码02:读输入状态(开关量输入)

请求格式:

目标站号

功能码

起始地址

高字节

起始地址

低字节

读取个数

高字节

读取个数

低字节

CRC

1字节

02

1字节

1字节

1字节

1字节

2字节


正确应答格式:

站号

功能码

返回数据字节数

返回数据字节1

返回数据字节2

CRC

1字节

02

1字节

1字节

1字节

2字节


2.3 功能码03:读保持寄存器(模拟量输出)

请求格式:

目标站号

功能码

起始地址

高字节

起始地址

低字节

读取个数

高字节

读取个数

低字节

CRC

1字节

03

1字节

1字节

1字节

1字节

2字节


正确应答格式:

站号

功能码

返回数据字节数

寄存器1高字节

寄存器1低字节

CRC

1字节

03

1字节

1字节

1字节

2字节


2.4 功能码04:读输入寄存器(模拟量输入)

请求格式:

目标站号

功能码

起始地址

高字节

起始地址

低字节

读取个数

高字节

读取个数

低字节

CRC

1字节

04

1字节

1字节

1字节

1字节

2字节


正确应答格式:

站号

功能码

返回数据字节数

寄存器1高字节

寄存器1低字节

CRC

1字节

04

1字节

1字节

1字节

2字节


2.5 功能码05:写单线圈(开关量输出)

请求格式:

目标站号

功能码

线圈地址

高字节

线圈地址

低字节

强制值

高字节

强制值

低字节

CRC校验码

1字节

05

1字节

1字节

1字节

1字节

2字节

注:强制值= 0xFF00,则置线圈为ON;强制值=0x0000,则置线圈为OFF。

应答格式:

若设置成功,原文返回

2.6 功能码06:写单保持寄存器(模拟量输出)

请求格式:

目标站号

功能码

寄存器地址

高字节

寄存器地址

低字节

强制值

高字节

强制值

低字节

CRC校验码

1字节

06

1字节

1字节

1字节

1字节

2字节


应答格式:

若设置成功,原文返回

2.7 功能码15:写多线圈(开关量输出)

请求格式:

目标

站号

功能码

起始地址

高字节

起始地址低字节

数量

高字节

数量

低字节

强制值字节数

强制值

第1字节

CRC

1字节

15

1字节

1字节

1字节

1字节

1字节

1字节

2字节


正确应答格式:

目标站号

功能码

起始地址

高字节

起始地址低字节

数量

高字节

数量

低字节

CRC校验码

1字节

15

1字节

1字节

1字节

1字节

2字节


2.8 功能码16:写多保持寄存器(模拟量输出)

请求格式:

目标

站号

功能码

起始地址

高字节

起始地址低字节

数量

高字节

数量

低字节

强制值字节数

强制值1

高字节

强制值1

低字节

CRC

1字节

16

1字节

1字节

1字节

1字节

1字节

1字节

1字节

2字节


正确应答格式:

目标站号

功能码

起始地址

高字节

起始地址低字节

数量

高字节

数量

低字节

CRC

校验码

1字节

16

1字节

1字节

1字节

1字节

2字节

猜你喜欢

转载自blog.csdn.net/songyongchen/article/details/80780658