Modbus协议数据模型中的访问限制

时间:2011-06-30 15:57:31

标签: embedded protocols modbus

Modbus协议数据模型中寄存器之间的区别是什么?

该协议定义了以下数据模型:

| Discretes Input   | Single bit | Read-only  |
| Coils             | Single bit | Read-write |
| Input Registers   | 16-bit     | Read-only  |
| Holding Registers | 16-bit     | Read-write |

谁准确读写?它适用于主(客户端)还是从(服务器)。如果访问限制适用于主设备,则只读寄存器中的“输入”一词对我来说没有多大意义。如果是其他方式,那么为什么奴隶会有无法修改的寄存器?

官方协议规范文档在该问题上尚不清楚,请帮助。

由于

3 个答案:

答案 0 :(得分:1)

从设备通常有一些输入接口连接到它正在监控的某个外部设备。您想知道这些输入的状态是什么,以便您可以根据其状态做出一些决定。您无法修改这些输入,因此它们是只读的。从器件获取输入状态并将它们作为寄存器中的只读值传递给您。从站根据输入的物理状态创建报告。

读写元素是寄存器,允许您将状态信息发送到将出现在控制器输出上的从站。它们是可写的,因此您可以控制它们的状态并且可读,这样您就可以检查您写的内容实际上是在那里。

道路下有交通传感器的交通灯控制器示例。传感器只读,光控(红色,琥珀色,绿色)可读/写,因此您可以设置和检查照明状态。

答案 1 :(得分:0)

Modbus数据模型的权威解释见Modbus.org的Modbus应用协议规范4.3节,可通过以下链接获得: http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf

值得注意的是,该规范显示了Modbus数据模型实现的两个示例。一种寄存器类型位于不同的存储器位置,另一种寄存器类型位于同一存储器中。 在后一种情况下,输入寄存器#1(16位)将包含离散输入#1至#16的状态

答案 2 :(得分:0)

  1. 离散输入 - 读取布尔输入(如0V / 5V,0V / 24V,带数字输出的传感器,闭路......)
  2. 线圈 - 写布尔输出(强制输出一些电压,打开/关闭继电器......)
  3. 输入寄存器 - 读取模拟输入(读取原始温度,流量,压力......通常通过电压或电流)
  4. 保持寄存器 - 写入模拟输出(强制一些原始输出值...通常是电压或电流)
  5. 请注意,您可能需要处理您必须在您身边缩放的原始值,或者使用以工程单位表示的已缩放值。由于字类型不太好,通常将2个16位寄存器组合在一起得到一个浮点32位寄存器。