modbus协议功能码及格式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 00 00 00 19 FD C0 即:读取25个线圈的状态
返回:01 01 04 0F 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 N4 CRC
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 N2 CRC
返回:01 10 00 00 00 02 41 C8
FC ADDR C CRC