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 | 例子:
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 | 例子:
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 | 例子:
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 | 例子:
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 | 例子:
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 | 例子:
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 | 例子: 4.支持的MODBUS功能码 功能码02H: 读取开关量输入(读实遥信和虚遥信)。
功能码03H:读取保持寄存器(读事件记录等)
功能码04H:读取输入寄存器(读远动遥测)
功能码05H:强制单点继电器输出(远方复归、单步的遥控跳闸、遥控合闸)。
功能码06H:向保持寄存器写单个字(遥控跳闸、遥控合闸的选择和执行操作)
功能码10H: 向保持寄存器(内存区)写多个16位的字(通讯对时)。
|