我可以写入输入寄存器吗?通讯总线

Can I write in an Input Register? Modbus

我在一个 MODBUS 项目中工作了 2 个月,现在我发现了一个问题。

我的客户要求我写入一个输入寄存器(地址 30001 到 40000)。

我认为这对我来说不是问题,因为每个 modbus 文档都说 30001 到 40000 个寄存器是只读的。

甚至可以写入那些寄存器吗?提前致谢

  • 您不能写入输入触点或输入寄存器,没有可写入它们的 Modbus 功能,根据定义它们是只读的

  • Modbus 是一种协议,在任何情况下都不会指定值的存储位置,仅指定它们的传输方式

  • 目前有设备支持6位地址,因此每组最多可寻址65536个寄存器

与保持和输入寄存器相关的函数都包含一个 2 字节的地址值。这意味着您可以在一个设备中同时拥有 65536 个输入寄存器和 65536 个保持寄存器。

如果您的客户正在开发从机的固件,他们可以将保持寄存器放入 3xxxx - 4xxxx 区域。他们不需要遵循原始 Modicon 设备的内存布局。

如果可以承受与 Modbus 标准的差异,甚至可以增加寄存器的数量。在我的一个项目中,我正在考虑使用 Preset Single Register (06) 函数作为银行 select 命令。当然,你不能再叫它Modbus了。但是,master 仍然可以使用标准库或诊断工具访问 slave。