地址类型与范围
| 类型 |
地址范围 (1-based) |
数据类型 |
说明 |
| Coil (线圈输出) |
00001 – 09999 |
BIT |
可读可写的单个位,通常用于开关量输出 |
| Discrete Input (离散输入) |
10001 – 19999 |
BIT |
只读的单个位,通常用于开关量输入 |
| Input Register (输入寄存器) |
30001 – 39999 |
16-bit 或 32-bit |
只读寄存器,通常用于传感器输入或模拟量 |
| Holding Register (保持寄存器) |
40001 – 49999 |
16-bit 或 32-bit |
可读可写寄存器,通常用于控制命令或模拟量输出 |
常用功能码(Function Code)
| 功能码 |
功能描述 |
适用地址类型 |
| 01 |
Read Coils |
Coil (00001–09999) |
| 02 |
Read Discrete Inputs |
Discrete Input (10001–19999) |
| 03 |
Read Holding Registers |
Holding Register (40001–49999) |
| 04 |
Read Input Registers |
Input Register (30001–39999) |
| 05 |
Write Single Coil |
Coil (00001–09999) |
| 06 |
Write Single Register |
Holding Register (40001–49999) |
| 15 (0x0F) |
Write Multiple Coils |
Coil (00001–09999) |
| 16 (0x10) |
Write Multiple Registers |
Holding Register (40001–49999) |
扩展说明
1、BIT 类型地址
Coil、Discrete Input 都是 1 位 (0/1)
Input Register 和 Holding Register 内部也可按 bit 位访问(x.y 格式,例如 40001.0 表示寄存器 40001 的第 0 位)
2、寄存器数据类型映射
| Modbus 寄存器 | BaseLocator 数据类型示例 | 说明 |
| ----------------------- | ------------------------------------------------- | ------------------------ |
| Holding Register 16-bit | TWO\_BYTE\_INT\_SIGNED / TWO\_BYTE\_INT\_UNSIGNED | 标准 16 位整数 |
| Input Register 16-bit | 同上 | 只读 |
| Holding/Input 32-bit | FOUR\_BYTE\_INT\_SIGNED / FOUR\_BYTE\_FLOAT | 两个连续寄存器组成一个 32-bit 整数或浮点 |
| Holding/Input 64-bit | EIGHT\_BYTE\_INT\_SIGNED / EIGHT\_BYTE\_FLOAT | 四个连续寄存器组成 64-bit |
| Holding/Input bit | holdingRegisterBit / inputRegisterBit | 对寄存器内部的某个位操作 |
3、偏移量计算(0-based)
| 地址类型 | 1-based 地址 | 偏移量公式 |
| ---------------- | ----------- | ------------------------ |
| Coil | 00001–09999 | offset = address - 1 |
| Discrete Input | 10001–19999 | offset = address - 10001 |
| Input Register | 30001–39999 | offset = address - 30001 |
| Holding Register | 40001–49999 | offset = address - 40001 |