基于MThings实现MODBUS寄存器中位数据的读写操作

背景


寄存器中按位定义数据的方法存在于很多厂家设备的MODBUS数据协议中。区别于线圈状态(RW)和离散输入(RO),寄存器中通过定义组合位数据,更有利于高效传输状态信息和设置开关量。

由于位数据被定义在寄存器中,其读写操作必须遵循寄存器的读写流程。RO位数据要求从机以拼装的方式同时上报相关的位数据,而在向RW位数据写入位数据时,主机需要携带其他位数据的当前值一并下发至从机。这些处理过程相比较线圈状态(RW)和离散输入(RO)的读写操作更加复杂。

目前普通的MODBUS调试调测软件都不具备这种情形下的主从机模拟能力。

MThings提供的能力


  1. 读写寄存器位数据(BIT),同时支持输入寄存器和保持寄存器。

  2. 不仅支持单BIT数据,而且支持寄存器范围内的多BIT定义。

  3. 支持BIT数据定义跨寄存器。

  4. 支持位数据仿真模拟。

  5. 支持位数据曲线绘制。

寄存器位数据的设计约束


  1. 寄存器位数据的传输类型必须为无符号整形。

  2. 寄存器位数据的呈现类型必须为十进制整形。

  3. 位数据的位数 < 寄存器个数*16。

  4. 基于寄存器所配置的字节序或字序,位序的编号从0开始,0代表最低位。

数据配置方法


寄存器数据中增加“位偏移”、“位数”配置项。

位偏移即为起始位号,默认为0;位数代表该数据所占用BIT数据,默认为寄存器个数*16。

数据配置默认状态下非启用位数据,需要用户编辑指定。

示例:

寄存器位数据可以解决什么问题


  1. MThings提供的位数据读写方法可以直观的将寄存器位数据拆分为独立数据进行操作,工具软件保证了各项操作的准确性。
  2. 将寄存器位数据同等视为一项协议数据,提供对等的服务支持,包含曲线、仿真模拟等。
  3. 独立的位数据操作不影响轮询性能,MThings后台智能组合位数据,不会额外增加交互次数。

猜你喜欢

转载自blog.csdn.net/zhoutanliang/article/details/106612836