modbus四种寄存器

Modbus协议中定义了四种类型的寄存器,每种寄存器有不同的读写属性和用途。以下是详细分类和说明:


1. 线圈寄存器(Coils)

  • 功能码
    • 读:0x01(Read Coils)
    • 写单个:0x05(Write Single Coil)
    • 写多个:0x0F(Write Multiple Coils)
  • 数据类型1位(二进制),可读可写。
  • 物理意义:通常对应设备的开关量输出(如继电器、DO信号)。
  • 地址范围00001-09999(协议中实际地址从0x0000开始,需根据设备手册映射)。
  • 示例
    • 控制电机的启停(ON/OFF)。
    • 读取报警状态。

2. 离散输入寄存器(Discrete Inputs)

  • 功能码0x02(Read Discrete Inputs)
  • 数据类型1位(二进制)只读
  • 物理意义:通常对应设备的开关量输入(如传感器触点、DI信号)。
  • 地址范围10001-19999(协议中实际地址从0x0000开始)。
  • 示例
    • 检测按钮是否按下。
    • 读取限位开关状态。

3. 保持寄存器(Holding Registers)

  • 功能码
    • 读:0x03(Read Holding Registers)
    • 写单个:0x06(Write Single Register)
    • 写多个:0x10(Write Multiple Registers)
  • 数据类型16位(无符号/有符号整数、浮点数等),可读可写。
  • 物理意义:存储设备参数或控制数据(如设定值、配置参数)。
  • 地址范围40001-49999(协议中实际地址从0x0000开始)。
  • 示例
    • 设置温度设定值。
    • 读取设备运行时间。

4. 输入寄存器(Input Registers)

  • 功能码0x04(Read Input Registers)
  • 数据类型16位(无符号/有符号整数、浮点数等)只读
  • 物理意义:通常用于模拟量输入(如传感器采集的电压、温度值)。
  • 地址范围30001-39999(协议中实际地址从0x0000开始)。
  • 示例
    • 读取温度传感器的当前值。
    • 获取流量计瞬时流量。

核心区别总结

寄存器类型数据类型读写属性功能码(读/写)典型应用场景
线圈1位读写0x01 / 0x05, 0x0F继电器控制
离散输入1位只读0x02开关状态监测
保持寄存器16位读写0x03 / 0x06, 0x10参数设置、数据存储
输入寄存器16位只读0x04传感器数据采集

注意事项

  1. 地址映射
    • Modbus协议中的寄存器地址是从0开始的16进制值(如0x0000),但许多设备文档使用偏移地址(如40001对应0x0000)。
  2. 数据类型扩展
    • 16位寄存器可通过组合表示32位整数浮点数等,但需遵循设备定义的格式(如Modbus RTU或TCP的字节序)。
  3. 协议限制
    • 标准Modbus单次最多读取125个保持寄存器2000个线圈,实际受设备限制。

实际应用示例

  • 读取温度值:使用0x04功能码读取输入寄存器(地址30001)。
  • 控制电机:使用0x05功能码写入线圈(地址00001,值0xFF00表示ON)。
  • 修改设定值:使用0x10功能码写入多个保持寄存器(地址40010,写入目标转速)。

掌握这四种寄存器的区别是使用Modbus协议的基础,具体操作需参考设备手册中的寄存器映射表。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值