强制写入只读寄存器#Modbus

Force writing only-read register #Modbus

我想知道, 无论如何强制写入 'Read-Only' Modbus 寄存器? 将寄存器定义为 'Read-Only' 是否足够安全或可以绕过??

感谢您的回答!

在 Modbus 中定义 "read-only" 模拟变量的正确方法是将其映射为输入寄存器。 Modbus 中没有定义写入输入寄存器的功能代码。

由于历史原因,一些供应商将他们所有的变量都映射为保持寄存器,理论上是read/write,即有一个写入多个寄存器的功能。每当他们将只读变量映射为保持寄存器时,他们必须断言写入函数失败。但是,没有标准的异常代码,因为保持寄存器应该是 read/write。这只是 Modbus 的特点之一。

回到你的问题,如果你将你的变量映射为输入寄存器,你可以确定协议将不允许主机写入它。如果,出于互操作性问题,您将其映射为一个保持寄存器,该协议将允许主机使用写入功能来更改其值,并且您可以阻止您的设备实现。