modbus协议功能码及格式.docx

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、“01”读取线圈状态

发送:

功能代码1字节0x01

起始地址2字节0x0000~0xFFFF

线圈数量2字节 1~2000(0x7D0 )

接收:

功能代码1字节0x01

字节数1字节N

线圈状态n 字节n = N/N+1

N= 读取线圈个数 / 8,如果余数不为0 则 N=N+1

出错时的返回:

功能代码1字节0x81

错误代码1字节01/02/03/04

例子:

返送: 01 01 0000 00 19 FD C0即:读取 25 个线圈的状态

返回: 01 01 040F 03 80 01 A8 C5

FC BN N1 N2 N3 N4 CRC,N1为前 8 位的状态以此内推。

2、“02”读取输入状态

发送:

功能代码1字节0x02

起始地址2字节0x0000~0xFFFF

输入点数量2字节 1~2000(0x7D0 )接收:

功能代码1字节0x02

字节数1字节N

输入点状态n 字节n = N/N+1

N= 读取输入点个数 / 8,如果余数不为 0 则 N=N+1

出错时的返回:

功能代码1字节0x82

错误代码1字节01/02/03/04

例子:

发送:

01 02 00 00 00 19 B9 C0

读25 个输入线圈的状态

返回:

01 02 04 00 00 00 00 FB E2

FC BN N1 N2 N3 N4CRC

3、“03”保持型寄存器读取

发送:

功能代码1字节 0x03

起始地址2字节 0x0000~0xFFFF

寄存器数量2字节 1~125( 0x7D )接收:

功能代码1字节 0x03

字节数1字节 2*N

寄存器值 N*2字节

N= 寄存器数量

出错时的返回:

功能代码1字节 0x83

错误代码1字节 01/02/03/04

例子:

发送: 01 03 00 00 00 03 05 CB

读3 个寄存器里面的值

返回: 01 03 06 01 2C 01 2C 01 2C 71 1A

返回 3 个寄存器的值,每个寄存器的值有 2 个 BYTE 组成

4、“05”写单一线圈

发送:

功能代码1字节 0x05

线圈地址2字节 0x0000~0xFFFF

写入值2字节 0x0000或 0xFF00接收:

功能代码1字节 0x05

线圈地址2字节 0x0000~0xFFFF

写入值2字节 0x0000或 0xFF00出错时的返回:

功能代码1字节 0x85

错误代码1字节 01/02/03/04

例子:

发送: 01 05 00 00 FF 00 8C 3A

写单个线圈的值,把地址为0的线圈置一。

返回: 01 05 00 00 FF 00 8C 3A

返回线圈的状态

5、“06”写单一寄存器

发送:

功能代码1字节 0x06

寄存器地址2字节 0x0000~0xFFFF

写入值2字节 0x0000~0xFFFF

接收:

功能代码1字节 0x06

寄存器地址2字节 0x0000~0xFFFF

写入值2字节 0x0000~0xFFFF

出错时的返回:

功能代码1字节 0x86

错误代码1字节 01/02/03/04

例子:

发送: 01 06 00 00 00 0A 09 CD

往地址为 0 的寄存器写入 10 。

返回: 01 06 00 00 00 0A 09 CD

返回寄存器的值。

6、“15( 0x0F)”写多线圈

发送:

功能代码1字节 0x0F

起始地址2字节 0x0000~0xFFFF

写入线圈个数2字节 0x0001~0x07B0

写入字节数1字节 N

写入值N 字节

N= 写入线圈个数 / 8,如果余数不为 0 则 N=N+1

接收:

功能代码1字节 0x0F

起始地址2字节 0x0000~0xFFFF

写入线圈个数2字节 0x0001或 0x07B0

出错时的返回:

功能代码1字节 0x8F

错误代码1字节 01/02/03/04

例子:

发送: 01 0F 00 00 00 0A 02 01 01 25 68

FC ADDR C BN N1 N2 CRC

写10 个线圈状态

返回: 01 0F 00 00 00 0A D5 CC

FC ADDR C CRC

7、“16( 0x10)”写多寄存器

发送:

功能代码1字节 0x10

起始地址2字节 0x0000~0xFFFF

写入寄存器个数2字节 0x0001~0x007B

写入字节数1字节 2*N

写入值 N*2字节

N= 写入寄存器个数

接收:

功能代码1字节 0x10

起始地址2字节 0x0000~0xFFFF

写入寄存器个数2字节 0x0001或 0x007B 出错时的返回:

功能代码1字节 0x90

错误代码1字节 01/02/03/04

例子:

发送: 01 10 00 00 00 02 04 00 01 00 02 23 AE

FC ADDR C BC N1 N2CRC

返回: 01 10 00 00 00 02 41 C8

FC ADDR C CRC

相关文档
最新文档