当前位置: 首页 > news >正文

什么是输入寄存器 什么是输出寄存器 什么是写输入寄存器 什么是读保持寄存器

在 Modbus 协议中,寄存器(Registers)是用于存储设备数据的存储单元,主要分为 ​​输入寄存器(Input Registers)​​ 和 ​​保持寄存器(Holding Registers)​​。此外,还有 ​​线圈(Coils)​​ 和 ​​离散输入(Discrete Inputs)​​,但这里我们主要讨论 ​​寄存器​​ 相关的概念。


​1. 输入寄存器(Input Registers)​

​(1) 定义​

  • ​输入寄存器(Input Registers)​​ 是 ​​只读(Read-Only)​​ 的 16 位寄存器。

  • 通常用于存储 ​​设备的状态、传感器数据、测量值​​ 等(如电压、电流、温度)。

  • ​无法通过 Modbus 写入​​,只能读取。

​(2) 功能码​

  • ​读输入寄存器(Function Code 0x04)​​:

    • 用于读取输入寄存器的值。

    • 示例请求:

      [Transaction ID] [Protocol ID] [Length] [Unit ID] [0x04] [Start Address Hi] [Start Address Lo] [Quantity Hi] [Quantity Lo]
    • 示例响应:

      [Transaction ID] [Protocol ID] [Length] [Unit ID] [0x04] [Byte Count] [Data Hi] [Data Lo] [Data Hi] [Data Lo] ...

​(3) 典型应用​

  • 读取模拟量输入(如 PLC 的 AI 模块数据)。

  • 读取设备运行状态(如温度、压力)。


​2. 保持寄存器(Holding Registers)​

​(1) 定义​

  • ​保持寄存器(Holding Registers)​​ 是 ​​可读可写(Read-Write)​​ 的 16 位寄存器。

  • 通常用于存储 ​​设备参数、控制命令、配置数据​​(如 PID 参数、设定值)。

  • 可以通过 Modbus ​​读取和写入​​。

​(2) 功能码​

  • ​读保持寄存器(Function Code 0x03)​​:

    • 用于读取保持寄存器的值。

    • 示例请求:

      [Transaction ID] [Protocol ID] [Length] [Unit ID] [0x03] [Start Address Hi] [Start Address Lo] [Quantity Hi] [Quantity Lo]
    • 示例响应:

      [Transaction ID] [Protocol ID] [Length] [Unit ID] [0x03] [Byte Count] [Data Hi] [Data Lo] [Data Hi] [Data Lo] ...
  • ​写单个保持寄存器(Function Code 0x06)​​:

    • 用于写入单个保持寄存器的值。

    • 示例请求:

      [Transaction ID] [Protocol ID] [Length] [Unit ID] [0x06] [Register Address Hi] [Register Address Lo] [Value Hi] [Value Lo]
    • 示例响应(服务器原样返回):

      [Transaction ID] [Protocol ID] [Length] [Unit ID] [0x06] [Register Address Hi] [Register Address Lo] [Value Hi] [Value Lo]
  • ​写多个保持寄存器(Function Code 0x10)​​:

    • 用于写入多个保持寄存器的值。

    • 示例请求:

      [Transaction ID] [Protocol ID] [Length] [Unit ID] [0x10] [Start Address Hi] [Start Address Lo] [Quantity Hi] [Quantity Lo] [Byte Count] [Data Hi] [Data Lo] [Data Hi] [Data Lo] ...
    • 示例响应(服务器返回起始地址和数量):

      [Transaction ID] [Protocol ID] [Length] [Unit ID] [0x10] [Start Address Hi] [Start Address Lo] [Quantity Hi] [Quantity Lo]

​(3) 典型应用​

  • 写入设备参数(如设定温度、速度)。

  • 读取设备配置(如通信参数)。


​3. 输入寄存器 vs. 保持寄存器​

​特性​

​输入寄存器(Input Registers)​

​保持寄存器(Holding Registers)​

​读写权限​

只读(Read-Only)

可读可写(Read-Write)

​功能码​

0x04(读输入寄存器)

0x03(读保持寄存器)、0x06(写单个)、0x10(写多个)

​典型用途​

传感器数据、状态监测

参数设置、控制命令

​是否可修改​

❌ 不能通过 Modbus 写入

✅ 可以写入


​4. 常见问题​

​(1) 为什么没有“写输入寄存器”功能码?​

  • ​输入寄存器是只读的​​,设计上不允许通过 Modbus 协议修改。

  • 如果设备需要更新输入寄存器的值(如传感器数据),通常由设备内部逻辑或硬件接口(如 ADC)自动更新。

​(2) 保持寄存器能存储什么数据?​

  • 可以是 ​​任何 16 位数据​​,如:

    • 整数(如 0x1234

    • 浮点数(IEEE 754 格式,占用 2 个寄存器)

    • 状态标志(如 0x0001表示“运行”)

​(3) Modbus 地址范围​

  • ​输入寄存器​​:通常从 30001开始(Modbus 地址 0x0000)。

  • ​保持寄存器​​:通常从 40001开始(Modbus 地址 0x0000)。

  • 具体范围取决于设备厂商定义。


​5. 总结​

​概念​

​说明​

​输入寄存器(Input Registers)​

只读,用于读取设备状态或传感器数据(功能码 0x04)。

​保持寄存器(Holding Registers)​

可读可写,用于参数配置或控制(功能码 0x030x060x10)。

​写输入寄存器​

Modbus 不支持,输入寄存器是只读的。

​读保持寄存器​

使用 0x03读取保持寄存器的值。

如果你在开发 Modbus 设备或调试通信,理解这些寄存器的区别非常重要! 🚀

http://www.dtcms.com/a/466153.html

相关文章:

  • 合网站建设郑州做网站优化地址
  • 现代软件工程课程 个人博客作业
  • 大连网站设计收费标准做免费网站需要营业执照吗
  • 网站打不开 ...有哪些网站做的比较好看
  • 网站建设团队成员网站flash代码
  • 后台启动java jar包的方法
  • 蓝桥杯 取球博弈
  • 怀化百度整站优化服务弹窗网站制作
  • 做外国美食的视频网站云服务器 多个网站
  • 工业设备预测性维护:能源成本降低的“隐藏钥匙”?
  • STM32F103RCT6+STM32CubeMX+keil5(MDK-ARM)+Flymcu完成固定长度的数据的收发
  • 5. React中的组件:组件是什么;React定义组件
  • 三十、钙钛矿量子点专业词汇(我爱钙钛矿)
  • 云手机 流畅运行
  • 从 “跨域报错到彻底解决”:Spring Boot+Security+JWT 实战踩坑指南
  • 嵌入模型蓝图与扫盲
  • 中核华泰建设有限公司网站小游戏网站网址
  • 做网站技术服务费属于什么科目做ppt好用的网站有哪些
  • 简单网站建设方案icp备案查询官方网站
  • Python中内置的常用装饰器
  • 年度进化挑战:从“前端实现者”到“智能体协作者”与“复杂问题定义者”
  • 靠谱的CC公益站
  • 做网站哪家便宜如何做企业招聘网站
  • HI3798MV100 运营商机顶盒NAS LINUX OS - IP地址静态绑定指南
  • 外贸网站建设公司价格湛江建站程序
  • 第三章:字符串增强与模板字符串
  • 网站开发建设技术规范书没经验可以做电商运营吗
  • Jira:设置语言 / 创建史诗 / 创建冲刺 / 创建问题
  • CancellationToken与Abort
  • linux达梦数据库操作