【发布时间】:2015-05-12 07:57:17
【问题描述】:
我想知道, 无论如何强制写入“只读”Modbus寄存器? 将寄存器定义为“只读”是否足够安全或可以被绕过??
感谢您的回答!
【问题讨论】:
-
我不知道,但是......还要记住,寄存器有时使用不同的地址来读取和写入地址。 (例如,使用 WAGO 750 设备)
-
嘿,我面对的设备有一些寄存器只保存为 r,一些寄存器保存为 r/w
我想知道, 无论如何强制写入“只读”Modbus寄存器? 将寄存器定义为“只读”是否足够安全或可以被绕过??
感谢您的回答!
【问题讨论】:
在 Modbus 中定义“只读”模拟变量的正确方法是将其映射为输入寄存器。 Modbus 中没有定义写入输入寄存器的功能代码。
由于历史原因,一些供应商将他们所有的变量映射为保持寄存器,理论上是读/写的,即有一个写入多个寄存器的功能。每当他们将只读变量映射为保持寄存器时,他们必须断言写入函数失败。但是,没有标准的异常代码,因为保持寄存器应该是读/写的。这只是 Modbus 的特性之一。
回到你的问题,如果你将你的变量映射为一个输入寄存器,你可以确定协议不会允许主机写入它。如果出于互操作性问题将其映射为保持寄存器,则协议将允许主设备使用写入函数来更改其值,并且由您来阻止设备实现。
【讨论】: