Modbus 寄存器设置
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 位整数 | 1 | 2 | 16 | AB/BA |
16 位无符号整数 | 1 | 2 | 16 | AB/BA |
32 位整数 | 2 | 4 | 32 | ABCD/BADC/CDAB/DCBA |
32 位无符号整数 | 2 | 4 | 32 | ABCD/BADC/CDAB/DCBA |
32 位浮点数 | 2 | 4 | 32 | ABCD/BADC/CDAB/DCBA |
寄存器读写类型
在配置寄存器时,需要为寄存器选择正确的读写类型,否则智能解析无法正常工作。那么如何选择呢?以下对两种寄存器分别说明:
IO 寄存器
读写类型表示以下含义:
读写类型 | 寄存器类型 | 读取功能码 | 写入功能码 | 用途 |
---|---|---|---|---|
只读 | 离散输入状态寄存器 | 02 | 不支持 | 读取开关输入状态,例如:行程开关、按键开关。 |
读写 | 线圈状态寄存器 | 01 | 05 | 读取继电器状态,控制继电器通断。 |
例如下图:
- 对继电器属性(开关量类型)设置为读写类型。
- 下发属性时,会自动生成 05 功能码的 Modbus 控制指令。
- 通过建立任务,下发 01 功能码的 Modbus 查询指令,获得继电器的最新状态。
- 对 DI 属性(开关量类型)设置为只读类型。
- 通过建立任务,下发 02 功能码的 Modbus 查询指令,获得开关量输入的最新状态。
- 若需要实时获取开关量输入状态,可使用带有边缘轮询功能的网关,当检测到开关量输入变化时,实时向云平台上报
JSON
属性。请参考 ThingsEdge DTU 教程中的边缘功能部分。
数据寄存器
读写类型表示以下含义:
读写类型 | 寄存器类型 | 读取功能码 | 写入功能码 | 用途 |
---|---|---|---|---|
只读 | 输入寄存器 | 04 | 不支持 | 读取传感器数值,例如:温湿度、大气压、光照强度。 |
读写 | 保持寄存器 | 03 | 06 | 写入或读取配置数值,例如:修改温度恒定值、本地报警阈值。 值得说明的是,很多厂商也用 03 功能码读取传感器数值,请您以设备手册为准。 |
Modbus 下发任务
接下来,需要创建 Modbus 下发类任务,来读取设备数据,例如:
有了配置好的 Modbus 寄存器,ThingsCloud 将设备上报的 Modbus RTU 报文自动转换成绑定的属性值,如下:
在控制台的设备详情页可以看到属性数据正在实时更新,如下:
通过任务的定时功能,我们可以实现固定间隔时间的读取设备数据。
属性下发自动转换
Modbus 的另一个重要用途是对设备寄存器的写入,当我们在控制台对设备下发一个开关量属性时,设备会收到 Modbus 写寄存器的消息。数值型属性的下发也同样支持。
用户 App
最后,我们用零代码生成用户 App,放置开关量和数值型属性下发的组件,在手机上轻轻点击,便可以控制 Modbus 设备的数据更新,如下图: