RTU模式:
1,modbus功能码表
功能码 | 功能码描述 | PLC地址 | MODBUS地址 | 位操作/字操作 | 操作寄存器数量 |
---|---|---|---|---|---|
0FH | 写多个线圈 | 00001~09999 | 0000H~FFFFH | 位操作 | 多个 |
01H | 读线圈状态 | 00001~09999 | 0000H~FFFFH | 位操作 | 单个或多个 |
02H | 读离散输入状态 | 10001~19999 | 0000H~FFFFH | 位操作 | 单个或多个 |
03H | 读保持寄存器 | 40001~49999 | 0000H~FFFFH | 字节操作 | 单个或多个 |
04H | 读输入寄存器 | 30001~39999 | 0000H~FFFFH | 字节操作 | 单个或多个 |
05H | 写单个线圈 | 00001~09999 | 0000H~FFFFH | 位操作 | 单个 |
06H | 写单个保持寄存器 | 40001~49999 | 0000H~FFFFH | 字操作 | 单个 |
10H | 写多个保持寄存器 | 40001~49999 | 0000H~FFFFH | 字操作 | 多个 |
2,例子:
1,向6号从站地址从0x0000开始读取4个输入位
06 02 00 00 04 CRC CRC
06从站索引(1-247,0表示广播)
02功能码见上表:输入状态
00 00 起始地址
00 04 读取的数量
CRC CRC为校验码
从站回应:
06 02 01 09 CRC CRC
01 09为16个线圈的输入位,09位低8位
2,向6号从站的地址
06 05 00 01 FF 00 CRC CRC
06从站索引
05功能码见上表:输出
00 01 起始地址
FF 00 表示线圈的关 和开
从站回应:
06 05 00 01 FF 00 CRC CRC
3,错误处理:
若从站没有正确处理,则:
06 0x80+功能码 错误值 CRC CRC
错误值:
01:无效的功能码
02:无效的数据地址
03: 无效的数据值
04:执行功能码失败