Modbus协议数据模型中寄存器之间的区别是什么?
该协议定义了以下数据模型:
| Discretes Input | Single bit | Read-only |
| Coils | Single bit | Read-write |
| Input Registers | 16-bit | Read-only |
| Holding Registers | 16-bit | Read-write |
谁准确读写?它适用于主(客户端)还是从(服务器)。如果访问限制适用于主设备,则只读寄存器中的“输入”一词对我来说没有多大意义。如果是其他方式,那么为什么奴隶会有无法修改的寄存器?
官方协议规范文档在该问题上尚不清楚,请帮助。
由于
答案 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)
请注意,您可能需要处理您必须在您身边缩放的原始值,或者使用以工程单位表示的已缩放值。由于字类型不太好,通常将2个16位寄存器组合在一起得到一个浮点32位寄存器。