ModBus常用功能码
December 16, 2023
1188
0x01: 读线圈
Request:
- 地址 (1 byte)
- 功能码 (1 byte): 读线圈
- 起始地址 (2 bytes): 指定需要读取线圈的起始地址
- 线圈数量 (2 bytes): 指定需要读取线圈的数量
- CRC校验码 (2 bytes)
Response:
- 地址 (1 byte)
- 功能码 (1 byte)
- 字节数 (1 byte): 返回的字节数
- 线圈状态 (长度为字节数除以8向上取整)
- CRC校验码 (2 bytes)
0x03: 读保持寄存器
Request:
- 地址 (1 byte)
- 功能码 (1 byte): 读线圈
- 起始地址 (2 bytes): 指定需要读取寄存器的起始地址
- 寄存器数量 (2 bytes): 指定需要读取寄存器的数量
- CRC校验码 (2 bytes)
Response:
- 地址 (1 byte)
- 功能码 (1 byte)
- 数据字节数 (1 byte): 返回的字节数
- 数据 (长度为数据字节数中的值)
- CRC校验码 (2 bytes)
0x05: 写单个线圈
Request:
- 地址 (1 byte)
- 功能码 (1 byte)
- 起始地址 (2 bytes): 指定需要写入线圈的起始地址
- 数据 (2 bytes): 需要写入的数据
- CRC校验码 (2 bytes)
Response:
- 地址 (1 byte)
- 功能码 (1 byte): 读线圈
- 起始地址 (2 bytes): 写入线圈的起始地址
- 数据 (2 bytes): 写入的数据
- CRC校验码 (2 bytes)
0x06: 写单个寄存器
Request:
- 地址 (1 byte)
- 功能码 (1 byte)
- 起始地址 (2 bytes): 指定需要写入寄存器的起始地址
- 数据 (2 bytes): 需要写入的数据
- CRC校验码 (2 bytes)
Response:
- 地址 (1 byte)
- 功能码 (1 byte): 读线圈
- 起始地址 (2 bytes): 写入寄存器的起始地址
- 数据 (2 bytes): 写入的数据
- CRC校验码 (2 bytes)
0x10: 写多个寄存器
Request:
- 地址 (1 byte)
- 功能码 (1 byte)
- 起始地址 (2 bytes): 指定需要写入寄存器的起始地址
- 寄存器数量 (2 bytes): 指定需要写入寄存器的数量
- 数据长度 (1 byte): 需要写入的数据的字节数
- 数据 (长度为数据长度中的值): 需要写入的数据
- CRC校验码 (2 bytes)
Response:
- 地址 (1 byte)
- 功能码 (1 byte): 读线圈
- 起始地址 (2 bytes): 写入寄存器的起始地址
- 寄存器数量 (2 bytes): 写入寄存器的数量
- CRC校验码 (2 bytes)
- 本文作者:chen
- 本文链接:http://suft.top/2023/12/16/modbus%E5%8A%9F%E8%83%BD%E7%A0%81/index.html
- 版权声明:本博客所有文章均采用 BY-NC-SA 许可协议,转载请注明出处!