Network programming 在modbus中写入单个位

Network programming 在modbus中写入单个位,network-programming,protocols,network-protocols,modbus,Network Programming,Protocols,Network Protocols,Modbus,我正在通过Modbus协议连接设备 有读写寄存器的命令(寄存器=2字节) 然而,通常一个寄存器包含多个配置标志作为位,我只需要写其中的一个左右 我可以阅读它,修改标志并写回,但这是正确的方法吗 我见过一些写线圈的命令,但我不太确定线圈是什么——是不是有点?如果是,如何获取线圈的地址?此命令称为掩码写入寄存器,功能代码0x16。不幸的是,您必须验证您的设备是否确实支持此功能 如果没有,你将不得不做你最初提议的事情——读/修改/写。重要的是要意识到,这永远不会是一个安全的操作;无法保证该值在您读取它

我正在通过Modbus协议连接设备

有读写寄存器的命令(寄存器=2字节)

然而,通常一个寄存器包含多个配置标志作为位,我只需要写其中的一个左右

我可以阅读它,修改标志并写回,但这是正确的方法吗


我见过一些写线圈的命令,但我不太确定线圈是什么——是不是有点?如果是,如何获取线圈的地址?

此命令称为掩码写入寄存器,功能代码0x16。不幸的是,您必须验证您的设备是否确实支持此功能

如果没有,你将不得不做你最初提议的事情——读/修改/写。重要的是要意识到,这永远不会是一个安全的操作;无法保证该值在您读取它和将修改后的值写回之间不会发生变化


线圈是Modbus中四个数据区域之一(保持寄存器、输入寄存器、线圈、离散输入),是的,它们是一个布尔/位,但如果要读取/写入的值存储为寄存器中的位,这并不重要。

您可能想学学一些电子学,并了解你应该控制的实际设备。@JoachimPileborg我有数据表,但它很混乱,我想是中文翻译的。不知道你为什么认为我应该学电子学?我怀疑“线圈”在这个上下文中的意思是“电感器”,它只是所有事情都使用继电器时的遗物。如何实现该功能?在这种情况下,您有什么建议吗?请使用实现WriteMultipleRegisters函数的库。你应该发布一个新问题,提供更多关于你的情况的信息。