如何通过Modbus寄存器(字)的地址快速计算线圈/离散输入(点位)的地址

24 5月 2023

本文描述了在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