两种 16 位寄存器的区别
保持寄存器与输入寄存器都是 16 位数据,区别在读写能力与用途:保持寄存器可读可写,通常存放设定值、参数与可修改的配置;输入寄存器只读,通常存放测量值、状态与诊断信息。读保持寄存器用功能码 03,读输入寄存器用 04。这是协议层面的划分,设备是否严格遵守取决于厂商实现,因此配置点表必须以设备手册为准。
基本信息
| 保持寄存器 | 可读写,读用 03,写单个用 06,写多个用 10 |
|---|---|
| 输入寄存器 | 只读,读用 04 |
| 数据宽度 | 16 位,32 位数据占用两个连续寄存器 |
| 数据类型 | 有符号或无符号整数,也可能是定点数或位域 |
| 字节序 | 寄存器内高低字节顺序由设备定义 |
| 常见错误 | 把只读数据配置到保持寄存器区,读到的值与预期不符 |
对照与判读
| 项目 | 保持寄存器 | 输入寄存器 |
|---|---|---|
| 读写能力 | 可读可写 | 只读 |
| 常见内容 | 设定值、参数与配置 | 测量值、状态与诊断 |
| 读功能码 | 03 | 04 |
| 写功能码 | 06、10 等 | 不适用 |
| 写入风险 | 影响设备行为,需要授权 | 无写入路径 |
| 点表注意 | 区分只读参数与可写参数 | 确认是否为实时测量值 |
使用建议
- 按手册确认每个量属于哪类寄存器,不要按名称猜测
- 可写参数与只读测量值分开授权,写权限只给必需的人员与系统
- 对测量值配置合理性校验,例如量程与变化率判断,识别异常数据
- 32 位数据按手册确认字序与字节序,必要时先读两个寄存器核对
- 固件升级后重新核对寄存器映射,部分实现会调整
并非所有设备都严格区分:某些设备把测量值也放在保持寄存器区,另一些设备把参数放在输入寄存器区。协议划分只是约定,实现差异必须在点表配置阶段核实,不能凭经验推断。
把可写参数误配给采集系统并授予写权限,会让一次采集侧的配置错误直接改变设备参数。采集系统的权限应默认为只读,写操作单独授权与审计。