1

Modbus协议数据模型中的寄存器到底有什么区别?

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

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

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

官方协议规范文档对此问题并不清楚,所以请帮忙。

谢谢

4

3 回答 3

1

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

读写元件是允许您将状态信息发送到将出现在控制器输出上的从站的寄存器。它们是可写的,因此您可以控制它们的状态和可读性,以便您可以检查您所写的内容是否实际到达那里。

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

于 2011-07-01T09:13:07.047 回答
0

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

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

于 2011-09-06T12:24:07.713 回答
0
  1. 离散输入 - 读取布尔输入(如 0V/5V、0V/24V、带数字输出的传感器、闭路...)
  2. 线圈 - 写布尔输出(强制输出一些电压,打开/关闭继电器......)
  3. 输入寄存器 - 读取模拟输入(读取原始温度、流量、压力……通常通过电压或电流)
  4. 保持寄存器 - 写入模拟输出(强制一些原始输出值......通常是电压或电流)

请注意,您可能会处理必须在您身边缩放的原始值,或者已经以工程单位表示的缩放值。由于字类型对此不太好,通常将 2 个 16 位寄存器组合成一个浮点 32 位寄存器。

于 2011-09-06T13:14:36.203 回答