(884 和 MICRO 84) 可使主机模拟编程功能,修改 PC 状态逻辑 重置通信链路 读取通用参数 (584L) 写入通用参数 (584L)
22~ 保留作扩展功能备 64 用 65~ 保留以备用户功能 72 所用 73~ 非法功能 119 120~ 保留 127 128~ 保留 255 留作内部作用 用于异常应答 留作用户功能的扩展编码
各个功能码对应的数据类型 代 功能 码 01 02 03 04 05 读 读 读 读 写 位 位 16 位整型 16 位整型 位 数据类型
06 15 16
写 写 写
整 16 位整型 位 整 16 位整型
MODBUS 协议相当复杂,但是常用的命令也就简单的几个,01,0 2,03,04,05,06,15,16 号命令。
各个命令的功能和报文如下: 01 命令 读取线圈状态 MODBUS 地址 00001~MODBUS 请求 功能码 起始地址 读取数量 MODBUS 响应 功能码 字节计数 线圈状态 N =读取数量/8 错误 响应 功能码 错误代码 举例 请求 域名称 功能码 起始地址高(字节) 起始地址低(字节) 读取数量高(字节) 读取数量低(字节) 数据(hex) 01 00 13 00 13 域名称 功能码 字节计数 27(h)~20 状态 35(h)~28 状态 38(h)~36 状态 响应 数据(hex) 01 03 CD 6B 05 1 1 BYTE BYTE 0X01 N n =N or N+1 1 BYTE 2 BYTE 2 BYTE 0X01 0X0000 TO 0XFFFF 1 TO 2000(0X7D0)
n BYTE 如果余数不为 0 则 N=N+1 1 1 BYTE BYTE
0X01+ 0X80 0x1 or 0x2 or 0x3 or 0x4
02 命令 读取输入状态 MODBUS 地址 10001~
MODBUS 请求 功能码 起始地址 读取数量 MODBUS 响应 功能码 字节计数 输入状态 N =读取数量/8 错误 响应 功能码 错误代码 举例 请求 域名称 功能码 起始地址高(字节) 起始地址低(字节) 读取数量高(字节) 读取数量低(字节) 数据(hex) 02 00 C4 00 16 域
名称 功能码 字节计数 204(h)~197 状态 212(h)~205 状态 218(h)~213 状态 响应 数据(hex) 02 03 AC DB 35 1 1 BYTE BYTE 0X02 N n =N or N+1 1 BYTE 2 BYTE 2 BYTE 0X02 0X0000 TO 0XFFFF 1 TO 2000(0X7D0)
n BYTE 如果余数不为 0 则 N=N+1 1 1 BYTE BYTE
0X02+ 0X80 0x1 or 0x2 or 0x3 or 0x4
03 读保持寄存器
MODBUS 地址 40001~
MODBUS 请求 功能码 起始地址 读取数量 MODBUS 响应 1 BYTE 2 BYTE 2 BYTE 0X03 0X0000 TO 0XFFFF 1 TO 125(0X7D)
功能码 字节计数 输入状态 错误 响应 功能码 错误代码 举例 请求 域名称 功能码 起始地址高(字节) 起始地址低(字节) 读取数量高(字节) 读取数量低(字节)
1 1 N*2
BYTE BYTE BYTE
0X03 N*2
1 1
BYTE BYTE
0X03+ 0X80 0x1 or 0x2 or 0x3 or 0x4
响应 数据(hex) 03 00 6B 00 03 域名称 功能码 字节计数 寄存器高(108) 寄存器低(108) 寄存器高(109) 寄存器低(109) 寄存器高(110) 寄存器低(110) 数据(hex) 03 06 02 2B 00 00 00 64
04 输入寄存器 MODBUS 地址 30001~
MODBUS 请求 功能码 起始地址 读取数量 MODBUS 响应 功能码 字节计数 输入状态 错误 响应 功能码 错误代码 举例 1 1 BYTE BYTE 0X04+ 0X80 0x1 or 0x2 or 0x3 or 0x4 1 1 N*2 BYTE BYTE BYTE 0X04 N*2 1 BYTE 2 BYTE 2 BYTE 0X04 0X0000 TO 0XFFFF 1 TO 125(0X7D)
请求 域名称 功能码 起始地址高(字节) 起始地址低(字节) 读取数量高(字节) 读取数量低(字节) 数据(hex) 04 00 08 00 01 域名称 功能码 字节计数
响应 数据(hex) 04 02 00 0A
输入寄存器高(9) 输入寄存器低(9)
05
设置单个继电器状态
MODBUS 请求 功能码 设置地址 设置内容 1 BYTE 2 BYTE 2 BYTE 0X05 0X0000 TO 0XFFFF 0x0000 OR 0XFF00 0x0000 释放继电器 0xff00 吸合继电器
MODBUS 响应 功能码 设置地址 设置内容 错误 响应 功能码 错误代码 举例(吸合 6 号继电器) 请求 域名称 功能码 设置地址高(字节) 设置地址低(字节) 设置内容高(字节) 设置内容低(字节) 数据(hex) 05 00 05 FF 00 域名称 功能码 设置地址高(字节) 设置地址低(字节) 设置内容高(字节) 设置内容低(字节) 响应 数据(hex) 05 00 05 FF FF 1 1 BYTE BYTE 0X05+ 0X80 0x1 or 0x2 or 0x3 or 0x4 1 BYTE 2 BYTE 2 BYTE 0X05 0X0000 TO 0XFFFF 0x0000 OR 0XFF00
06
设置单个保持寄存器
MODBUS 请求 功能码 设置地址 设置内容 MODBUS 响应 功能码 设置地址 设置内容 错误 响应 功能码 错误代码 举例 设置 9 号保持寄存器内容为 25 请求 域名称 功能码 设置地址高(字节) 设置地址低(字节) 设置内容高(字节) 设置内容低(字节) 数据(hex) 06 00 08 00 19 域名称 功能码 设置地址高(字节) 设置地址低(字节) 设置内容高(字节) 设置内容低(字节) 响应 数据(hex) 06 00 08 00 19 1 1 BYTE BYTE 0X06+ 0X80 0x1 or 0x2 or 0x3 or 0x4 1 BYTE 2 BYTE 2 BYTE 0X06 0X0000 TO 0XFFFF 0x0000 to 0XFF00 1 BYTE 2 BYTE 2
BYTE 0X06 0X0000 TO 0XFFFF 0x0000 to 0XFF00
15 设置多个继电器状态MODBUS 请求 功能码 设置起始地址 设置长度 1 BYTE 2 BYTE 2 BYTE 0X0F 0X0000 TO 0XFFFF 0X0000 TO 0X7B0
字节计数 设置内容 MODBUS 响应 功能码 设置起始地址 设置长度 错误 响应 功能码 错误代码 举例 设置继电器 请求 域名称 功能码 设置地址高(字节) 设置地址低(字节) 设置数量高(字节) 设置数量低(字节) 字节计数 设置内容高(字节) 设置内容低(字节)
1 BYTE N BYTE
N
1 BYTE 2 BYTE 2 BYTE
0X0F 0X0000 TO 0XFFFF 0X0000 TO 0X7B0
1 1
BYTE BYTE
0X0F+ 0X80 0x1 or 0x2 or 0x3 or 0x4
响应 数据(hex) 0F 00 13 00 0A 02 CD 01 域名称 功能码 设置地址高(字节) 设置地址低(字节) 设置数量高(字节) 设置数量低(字节) 数据(hex) 0F 00 13 00 0A
16 设置多个保持寄存器MODBUS 请求 功能码 设置起始地址 设置长度 1 BYTE 2 BYTE 2 BYTE 0X10 0X0000 TO 0XFFFF 0X0000 TO 0X7B0
字节计数 设置内容 MODBUS 响应 功能码 设置起始地址 设置长度 错误 响应 功能码 错误代码 举例 设置多个保持寄存器 请求 域名称 功能码 设置地址高(字节) 设置地址低(字节) 设置数量高(字节) 设置数量低(字节) 字节计数 设置内容高(字节) 设置内容低(字节) 设置内容高(字节) 设置内容低(字节)
1 BYTE N*2 BYTE
N*2
1 BYTE 2 BYTE 2 BYTE