在Modbus协议中,输入型寄存器(Input Register)和保持型寄存器(Holding Register)是两种不同类型的寄存器,它们在功能、用途和存储方式上有所不同。这也是为什么在使用这些寄存器时需要使用不同的功能码的原因。下面是它们的主要区别:
1. 保持型寄存器(Holding Register)--功能码03读取,功能码06写入
- 定义:保持型寄存器是用于存储可读可写的数值数据,通常是设备的设置或控制参数。这些寄存器存储的是设备的当前配置或状态,用户可以通过Modbus协议来读取或写入数据。
- 用途:用于控制或设置设备的参数(如设定温度、控制阈值等),或者存储设备的状态信息。保持型寄存器不仅支持读取,还可以写入(例如设置设备的工作参数)。
- 存储:保持型寄存器的数据是可修改的,所以你可以通过Modbus协议来更新这些寄存器的内容。
- 功能码:读取保持型寄存器通常使用功能码 3 (Read Holding Registers),而写入保持型寄存器通常使用功能码 6 (Write Single Register) 或 16 (Write Multiple Registers)。
举例:你想设置温控设备的目标温度为25℃,这个目标温度会存储在保持型寄存器中,你可以用Modbus来修改它。
2. 输入型寄存器(Input Register)--功能码04读取
- 定义:输入型寄存器通常用于存储只读的、由外部设备(如传感器)提供的输入数据。这些数据是实时的,不能修改。
- 用途:用于读取设备的实时测量数据,比如温度、湿度、压力等传感器数据。它们不能被写入,只能用来读取外部设备提供的数据。
- 存储:输入型寄存器的数据通常是只读的,因此你不能通过Modbus协议直接修改它们的内容。
- 功能码:读取输入型寄存器通常使用功能码 4 (Read Input Registers)。
举例:你想读取一个温度传感器的实时温度,设备会通过输入型寄存器提供这个数据。
为什么使用不同的功能码?
-
功能码 3 和 4:它们都用于读取寄存器,但有一个重要的区别:
- 功能码 3 用于读取保持型寄存器(可读可写的寄存器)。
- 功能码 4 用于读取输入型寄存器(只读的寄存器)。因为输入型寄存器的内容通常是来自外部传感器或设备,无法修改,所以只能读取。
-
功能码 6 和 16:它们都是写入寄存器,但由于保持型寄存器和输入型寄存器的性质不同,所以只能对保持型寄存器进行写操作。
- 功能码 6 用于写入一个单独的保持型寄存器(修改设备设置或控制参数)。
- 功能码 16 用于写入多个保持型寄存器,适用于需要同时修改多个参数的情况。
3.关键点总结:
- 保持型寄存器:可以读取和写入,主要用于存储设备的控制参数或配置信息。功能码 3 用于读取,6 用于写入。
- 输入型寄存器:只能读取,不可写入,主要用于获取外部传感器的实时数据。功能码 4 用于读取。
使用不同的功能码是因为它们分别对应不同类型的寄存器,
3.1保持型寄存器则不仅能读取,还能修改设备的设置或参数。--数据关机时也保存
3.2而输入型寄存器只能用于读取传感器数据--数据关机机不保存,开机通过传感器获取数据



4345

被折叠的 条评论
为什么被折叠?



