Modbus 寄存器
线圈和寄存器
前面介绍 Modbus 的内容中多次提到线圈(coil)和寄存器(register)的概念,尤其是 Modbus 功能码 中,操作的对象基本上都是线圈和寄存器。
在 Modbus 协议中之所以仍然称为线圈和寄存器,完全是历史原因。在 PLC 应用领域,一个线圈就代表一个 PLC 输出点,也称为输出继电器。通过控制线圈导通与否来改变继电器输出状态,实现弱电控制强电。
但实际上,在如今的 Modbus 设备中,它们都只是对应一块内存区域而已。其中,线圈代表位操作(bit),表示一个布尔变量;寄存器代表字操作(word),表示一个整型变量(当然也可以通过多个字的组合,表示浮点数以及其他复合数据结构)。在 Modbus 协议中,字(word)的长度是 16 位,即 2 个字节。
寄存器种类说明
在 Modbus 协议中,所有数据均存放于寄存器中。根据存放的数据类型以及各自读写特性,可以将寄存器分为四个部分,这四个部分可以连续也可以不连续,完全由开发者决定。
下表展示了四类寄存器的含义以及与 PLC 的类比。
寄存器种类 | 含义 | PLC | 示例 |
---|---|---|---|
线圈状态 (Coil Status) | 输出端口(可读可写) | DO(数字量输出) | 电磁阀输出、LED 显示 |
离散输入状态 (Input Status) | 输入端口(只读) | DI(数字量输入) | 拨码开关、微动开关 |
保持寄存器 (Holding Register) | 输出参数(可读可写) | AO(模拟量输出) | PID 运行参数、阈值上下限 |
输入寄存器 (Input Register) | 输入参数(只读) | AI(模拟量输入) | 传感器数据输入 |