本文描述了在Modbus 协议中如何通过寄存器的地址去计算线圈或者离散输入的地址,可通过功能码2、1、5、15访问一个Modbus寄存器(16bit)中的一位(bit)。
所有的Modbus协议接口设备
Modbus 比特位访问指令功能码:
功能码 | 功能 |
02 | 读取离散输入 |
01 | 读取单个线圈 |
05 | 写单个线圈 |
15 | 写多个线圈 |
请确保所使用的Modbus设备支持上述指令。
如果通过上述指令访问设备Modbus寄存器中单个比特位的数据,且不知道所要访问的比特位的地址,可以通过下面所描述的计算方法,通过寄存器地址换算出线圈或者离散输入的地址。
例1:
通过功能码01读取保持寄存器85的首个比特位(线圈)。
计算公式:线圈地址=寄存器地址* 16-15 ,
即 85 x 16 - 15 = 1345。
寄存器地址 | 线圈地址 |
1 | 1~16 |
2 | 17~32 |
..... | .... |
7 | 97~112 |
..... | ..... |
85 | 1345~1360 |
例2:
通过功能码15写值到保持寄存器1128的首个比特位(线圈)。
计算公式:线圈地址=寄存器地址* 16-15 ,
即1128 x 16 - 15 = 18033。
Modbus Function Code 01 | Read Coil Status | Simply Modbus Software