跳至主要內容

Modbus 寄存器设置

约 1555 字大约 5 分钟

Modbus 寄存器设置

开启 Modbus 寄存器设置

当设备类型的接入协议选择 Modbus RTU 透传 时,便可以在设备类型详情页中显示 Modbus 配置,用于将设备属性和 Modbus 寄存器进行绑定,实现设备属性和 Modbus 消息之间的自动转换,例如:

提示

Modbus RTU(Remote Terminal Unit)是一种在工业环境中广泛使用的串行通信协议。它基于 Modbus 协议的一种实现,通过串行线(如RS-232或RS-485)进行通信,主要用于设备间的简单通信。由于其开放性、简单性和广泛的支持,Modbus RTU 成为了工业通信中的事实标准之一。

  • 当云平台对设备下发一个开关量属性,由于这个属性绑定了一个设备上的读写类 IO 寄存器,那么实际下发到设备的消息,是一个 Modbus 写入寄存器的消息报文。
  • 当云平台通过任务向设备下发 Modbus 查询消息后,设备立即回应 Modbus 响应消息,这时候云平台通过配置好的 Modbus 寄存器,将自动解析 Modbus 消息,生成相应的属性值。

使用 Modbus 寄存器设置

属性智能转换

这是一个全局的开关,开启后,ThingsCloud 将使用 Modbus 寄存器地址表,自动解析设备上报的 Modbus 消息,并将属性下发转换为 Modbus 消息。

设置自定义数据流

Modbus 配置中需要设置自定义数据流,需要和 Modbus 透传用到的自定义数据流标识符保持一致。

推送方式支持 MQTT 和 TCP,请选择设备实际接入的方式。

设置 IO 寄存器

IO 寄存器的设置比较简单,这里我们以4路继电器输出为例:

其中的属性,需要先在功能定义中创建,然后在添加 Modbus 寄存器时直接选择即可。

需要注意的是,IO 寄存器必须绑定到开关量(Boolean)属性上,且只支持 设备上报设备云端共享 两种属性类型。

设置数据寄存器

需要注意的是,数据寄存器只可以绑定到数值型(Number)属性上,且只支持 设备上报设备云端共享 两种属性类型。

我们以一个电表传感器为例,先在功能定义中创建属性,如下:

然后在 Modbus 配置中,添加这些属性,并根据设备手册的 Modbus 地址说明,填写相应的寄存器地址、读写类型、数据类型等。

可以批量添加寄存器,如下:

配置完成的数据寄存器列表如下:

数值寄存器数据类型

ThingsCloud 对 Modbus 数值寄存器进行消息生成和自动解析时,支持以下数据类型:

数据类型寄存器个数字节数位数支持字节序
16 位整数1216AB/BA
16 位无符号整数1216AB/BA
32 位整数2432ABCD/BADC/CDAB/DCBA
32 位无符号整数2432ABCD/BADC/CDAB/DCBA
32 位浮点数2432ABCD/BADC/CDAB/DCBA

寄存器读写类型

在配置寄存器时,需要为寄存器选择准确的读写类型,那么如何选择呢?

  • 对于 IO 寄存器,读写类型表示以下含义:
读写类型寄存器类型读取功能码写入功能码用途
只读离散输入状态寄存器02不支持读取开关输入状态,例如:行程开关、按键开关。
读写线圈状态寄存器0105读取继电器状态,控制继电器通断。

例如下图:

  • 对继电器属性(开关量类型)设置为读写类型。
    • 下发属性时,会自动生成 05 功能码的 Modbus 控制指令。
    • 通过建立任务,下发 01 功能码的 Modbus 查询指令,获得继电器的最新状态。
  • 对 DI 属性(开关量类型)设置为只读类型。
    • 通过建立任务,下发 02 功能码的 Modbus 查询指令,获得开关量输入的最新状态。
    • 若需要实时获取开关量输入状态,可使用带有边缘轮询功能的网关,当检测到开关量输入变化时,实时向云平台上报 JSON 属性。请参考 ThingsEdge DTU 教程中的边缘功能部分。
  • 对于 数据寄存器,读写类型表示以下含义:
读写类型寄存器类型读取功能码写入功能码用途
只读输入寄存器04不支持读取传感器数值,例如:温湿度、大气压、光照强度。
读写保持寄存器0306写入或读取配置数值,例如:修改温度恒定值、本地报警阈值。
值得说明的是,很多厂商也用 03 功能码读取传感器数值,请您以设备手册为准。

Modbus 下发任务

接下来,需要创建 Modbus 下发类任务,来读取设备数据,例如:

有了配置好的 Modbus 寄存器,ThingsCloud 将设备上报的 Modbus RTU 报文自动转换成绑定的属性值,如下:

在控制台的设备详情页可以看到属性数据正在实时更新,如下:

通过任务的定时功能,我们可以实现固定间隔时间的读取设备数据。

属性下发自动转换

Modbus 的另一个重要用途是对设备寄存器的写入,当我们在控制台对设备下发一个开关量属性时,设备会收到 Modbus 写寄存器的消息。数值型属性的下发也同样支持。

用户 App

最后,我们用零代码生成用户 App,放置开关量和数值型属性下发的组件,在手机上轻轻点击,便可以控制 Modbus 设备的数据更新,如下图: