2011-06-30 38 views
1

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 | 

究竟是谁被允许读取和写入?它适用于主站(客户端)还是从站(服务器)。如果访问限制适用于主设备,则只读寄存器中的“输入”一词对我来说没有多大意义。如果这是另一种方式,那么为什么奴隶有注册它不能修改?

官方协议规范文档在这个问题上不清楚,所以请帮助。

由于

回答

1

的从设备典型地具有多个输入接口,它是监视一些外部单元。你想知道这些输入的状态是什么,以便你可以根据它们的状态做出一些决定。这些输入不能被你修改,所以是只读的。从机接受输入状态并将它们作为寄存器中的只读值传递给您。从站根据输入的物理状态创建报告。

读写元件是允许您将状态信息发送到将出现在控制器输出上的从站的寄存器。它们是可写的,所以你可以控制它们的状态和可读性,以便你可以检查你写的东西到底在哪里。

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

+0

所以输入方向是从从机到主机。这使得它更清楚。 – udushu

+0

此答案不适用于按照Modbus协议规范[位于此链接](http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf)第7页上的实例2实现Modbus数据模型的设备, – helioz

0

了Modbus数据模型的权威性解释是在可用的Modbus应用协议规范第4.3节通过该链路发现从modbus.org: http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf

重要的是要注意,本说明书中示出的两个例子是重要Modbus数据模型实施。每个寄存器类型位于不同的存储器位置,而另一个寄存器位于同一个存储器中。 在后者的情况下输入寄存器#1(16位)将包含到#16

0
  1. 的离散输入#1的状态离散输入 - 读布尔输入(如0V/5V,0V/24V,与数字传感器输出,闭合电路...)
  2. 线圈 - 写入布尔输出(强制输出电压,打开/关闭继电器...)
  3. 输入寄存器 - 读取模拟输入(读取原始温度,流量,压力。 ..通常通过电压或电流)
  4. 保持寄存器 - 写模拟输出(强制一些原始输出值...通常是电压或电流)

请注意,您可能需要处理原始值,您必须在您的侧面进行缩放,或者使用以工程单位表示的已缩放值。由于字类型对此不太好,通常将2个16位寄存器组合起来以获得一个浮点32位寄存器。