Modbus寄存器分为四种,如表1.1所示:
表1.1 寄存器分类
寄存器种类 | 数据类型 | 访问类型 | 功能码 | PLC地址 | 寄存器地址 |
---|---|---|---|---|---|
线圈寄存器 | 位 | 读写 | 01H 05H 0FH | 00001-09999 | 0000H-FFFFH |
离散输入寄存器 | 位 | 只读 | 02H | 10001-19999 | 0000H-FFFFH |
输入寄存器 | 字 | 只读 | 04H | 30001-39999 | 0000H-FFFFH |
保持寄存器 | 字 | 读写 | 03H 06H 10H | 40001-49999 | 0000H-FFFFH |
2 常用功能码
Modbus中常用的功能码有8个,可以分为位操作和字操作两类,如表2.1所示:
表2.1 常用功能码
功能码 | 描述 | PLC地址 | 寄存器地址 | 位/字操作 | 操作数量 |
---|---|---|---|---|---|
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 | 字操作 | 单个 |
0FH | 写多个线圈寄存器 | 00001-09999 | 0000H-FFFFH | 位操作 | 多个 |
10H | 写多个保持寄存器 | 40001-49999 | 0000H-FFFFH | 字操作 | 多个 |
3 读线圈寄存器(01H)
功能码01H读取Modbus从机中线圈寄存器的状态,可以是单个寄存器,或者多个连续的寄存器。
3.1 发送
假设从机地址为01H,读取的线圈寄存器的起始地址为0017H,读取38个寄存器,指令如表3.1所示:
表3.1 读线圈寄存器指令:
从机地址 | 功能码 | 起始地址 |
起始地址 低位 |
寄存器数量 高位 |
寄存器数量 低位 |
---|