Modbus 协议定义了四种核心数据类型

Modbus 协议定义了四种核心数据类型(常被称为 “寄存器”,但严格来说 “线圈” 和 “离散输入” 是单比特数据,“寄存器” 是 16 位数据),每种类型有明确的用途、读写权限和应用场景,以下是它们的具体作用: 1. 线圈(Coils) 本质:单比特(1 bit)数据,取值为 0(关)或 1(开

Modbus 协议定义了四种核心数据类型(常被称为 “寄存器”,但严格来说 “线圈” 和 “离散输入” 是单比特数据,“寄存器” 是 16 位数据),每种类型有明确的用途、读写权限和应用场景,以下是它们的具体作用:

1. 线圈(Coils)

  • 本质:单比特(1 bit)数据,取值为 0(关)或 1(开),对应 “离散输出”。

  • 读写权限可读写(支持读和写操作)。

  • 功能码对应

    • 读线圈:功能码 1(Read Coils);

    • 写单个线圈:功能码 5(Write Single Coil);

    • 写多个线圈:功能码 15(Write Multiple Coils)。

  • 作用:用于控制设备的开关状态,是外部系统(客户端)向设备(服务器)发送控制指令的主要途径。

  • 典型场景

    • 控制继电器的吸合 / 断开(如电机启停、阀门开关);

    • 控制指示灯的亮 / 灭;

    • 触发设备的单次动作(如复位信号)。

2. 离散输入(Discrete Inputs)

  • 本质:单比特(1 bit)数据,取值为 01,对应 “离散输入”。

  • 读写权限只读(只能被设备自身更新,外部系统只能读取,不能写入)。

  • 功能码对应:读离散输入:功能码 2(Read Discrete Inputs)。

  • 作用:用于反馈设备的外部开关状态,是设备向外部系统传递 “被动检测信号” 的途径。

  • 典型场景

    • 读取限位开关的通断状态(如机械臂是否到达指定位置);

    • 读取按钮的按下 / 弹起状态;

    • 读取传感器的报警触点(如烟雾报警器的触发信号)。

3. 保持寄存器(Holding Registers)

  • 本质:16 位(2 字节)数据,可存储整数、浮点数(需按协议解析)等,对应 “可读写寄存器”。

  • 读写权限可读写(外部系统可读取和写入,设备会 “保持” 这些值直到被更新)。

  • 功能码对应

    • 读保持寄存器:功能码 3(Read Holding Registers);

    • 写单个保持寄存器:功能码 6(Write Single Register);

    • 写多个保持寄存器:功能码 16(Write Multiple Registers)。

  • 作用:用于存储设备的配置参数、设定值或中间状态,是外部系统配置设备的核心途径。

  • 典型场景

    • 设定温度控制器的目标温度(如写入 50 表示 50℃);

    • 存储设备的运行模式(如 “自动模式”=1,“手动模式”=0);

    • 记录设备的累计运行时间(可被外部系统读取,也可被重置写入)。

4. 输入寄存器(Input Registers)

  • 本质:16 位(2 字节)数据,可存储整数、浮点数等,对应 “只读寄存器”。

  • 读写权限只读(只能由设备自身更新,外部系统只能读取,不能写入)。

  • 功能码对应:读输入寄存器:功能码 4(Read Input Registers)。

  • 作用:用于存储设备主动采集的测量数据或状态信息,是设备向外部系统传递 “主动监测数据” 的主要途径。

  • 典型场景

    • 传递温度传感器的实时测量值(如 256 表示 25.6℃,需按比例解析);

    • 反馈设备的运行电流、电压等模拟量数据;

    • 存储设备的内部状态码(如故障代码、运行进度)。

总结:核心区别与选择依据

类型

数据长度

读写权限

核心用途

典型操作对象

线圈

1 bit

可读写

控制设备开关动作

继电器、指示灯

离散输入

1 bit

只读

反馈外部开关状态

按钮、限位开关

保持寄存器

16 bit

可读写

存储配置参数 / 设定值

目标温度、运行模式

输入寄存器

16 bit

只读

传递测量数据 / 状态信息

实时温度、电流、故障代码

实际开发中,需根据设备手册确认每种数据类型的地址范围(如线圈地址 00001-09999,保持寄存器 40001-49999 等,不同设备可能有差异),再通过对应功能码进行通信。

LICENSED UNDER CC BY-NC-SA 4.0
评论