【问题标题】:Writing single bit in modbus在 modbus 中写入单个位
【发布时间】:2014-12-28 13:44:44
【问题描述】:

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

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

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

我可以读取它,修改标志并将其写回,但这是正确的方式吗?

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

【问题讨论】:

  • 您可能想学习一些电子学,并了解您应该控制的实际设备。
  • @JoachimPileborg 我有数据表,但很混乱,我想是从中文翻译过来的。不确定是什么让你认为我应该学习电子学?我怀疑“线圈”在这种情况下的意思是“电感器”,这只是使用继电器完成所有操作时的遗留物。

标签: network-programming protocols network-protocols modbus


【解决方案1】:

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

如果没有,您将不得不执行您最初建议的操作 - 读取/修改/写入。重要的是要意识到这永远不会是安全的操作。无法保证该值在您读取它的时间和您将修改后的值写回的时间之间不会发生变化。

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

【讨论】:

  • 如何实现Modbus Pulse Coils功能?你能在这种情况下提出什么建议吗?
  • 使用实现 WriteMultipleRegisters 函数的库。您应该发布一个新问题,提供有关您的情况的更多信息。
猜你喜欢
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 2015-03-08
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多