我想知道,是否有强制写入“只读”Modbus 寄存器?将寄存器定义为“只读”是否足够安全或可以绕过?
感谢您的回答!
在 Modbus 中定义“只读”模拟变量的正确方法是将其映射为输入寄存器。Modbus 中没有定义用于写入输入寄存器的功能代码。
由于历史原因,一些供应商将他们所有的变量映射为保持寄存器,理论上是读/写的,即有一个写多个寄存器的功能。每当他们将只读变量映射为保持寄存器时,他们必须断言写入函数失败。但是,没有标准的异常代码,因为保持寄存器应该是读/写的。这只是 Modbus 的特性之一。
回到您的问题,如果您将变量映射为输入寄存器,您可以确定该协议将不允许主控器对其进行写入。如果出于互操作性问题将其映射为保持寄存器,则协议将允许主机使用写入函数来更改其值,并且由您来阻止设备实现。