我在一个MODBUS
项目中工作了2个月,现在发现了一个问题。
我的客户要我写一个输入寄存器(地址30001至40000)。
我认为这对我来说不是问题,因为每个modbus
文档都说30001至40000个寄存器。
甚至有可能写入那些寄存器?提前致谢
与保持和输入寄存器相关的功能都包含一个2字节的地址值。这意味着您可以在一个设备中同时拥有65536个输入寄存器和65536个保持寄存器。
如果您的客户端正在开发从站的固件,则他们可以将保持寄存器放入3xxxx-4xxxx区域。他们不需要遵循原始Modicon设备的内存布局。
如果可以负担得起与Modbus标准的差异,甚至可以增加寄存器的数量。在我的一个项目中,我正在考虑将Preset Single Register (06)
功能用作库选择命令。当然,您不能再将其称为Modbus。但是,主机仍可以使用标准库或诊断工具访问从机。
您的回答帮助我找到了我做错了什么。如您所说,有65536个输入寄存器。限制在3xxxx和4xxxx之间只是一个惯例,他们可以做任何想做的事情。因此,我可以使用功能fx03编写30120。谢谢!
如果您说3xxxx地址是持有人I,那么许多其他人会说您错了,这是一种更干净的解决方案。施耐德(Modicon的当前所有者)和其他制造商也要超过9999寄存器限制,现在使用4位数字(如4xxxxx)代替4xxxx这样的6位地址,因此无需跳过Modbus寻址规则。在我写的最后一个Modbus驱动程序中,我还使用了6位地址
我同意你的爱。但这是我使用Modbus的第一个项目,我没有开发从站...给了我一组我必须读取/写入的地址,如果他们不想遵循Modicon协议,那我就不在手中...相信我,这很烂,因为我花了更多时间来意识到他们的要求。每个人都应该遵循Modicon协议