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位的字(通讯对时)。
  |