[新手教程] Modbus 设备通过 DTU 透传接入 ThingsCloud
[新手教程] Modbus 设备通过 DTU 透传接入 ThingsCloud
很多 DTU/RTU 产品都支持 Modbus 透传功能,您可以用 DTU 来连接任意 Modbus 从机设备,例如:温湿度传感器、光照传感器、继电器、行程开关、智能电表等。
当这些 Modbus 设备通过 DTU 的透传模式,成功连接到 ThingsCloud 后,下一步您会关心的是,如何在云平台上解析 Modbus 消息,以及如何从云平台下发 Modbus 消息到设备,用于实时控制。
这里我们以 ThingsEdge DTU 为示,介绍几个常见的 Modbus 设备如何无缝的接入 ThingsCloud,实现数据上报和控制下发。这些方法也同样适用于其它 DTU 产品。
接线示例
在这个示例中,我们在 DTU 的 RS485 总线上连接了两个 Modbus 设备:
- 8进8出 IO 控制器,从机站号是 1,波特率 9600
- 温湿度传感器,从机站号是 2,波特率 9600
其中,在 IO 控制器的继电器端,我们连接了两个指示灯,在IO输入端,连接了两个行程开关。
温湿度传感器
添加属性定义
首先,我们在 DTU 的设备类型中,找到 功能定义,添加温度和湿度两个属性,如下图:
属性添加成功后,如下图:
配置 Modbus 寄存器
接着在设备类型的 Modbus 配置中,设置温度、湿度属性对应的传感器寄存器,如下图:
不同厂家的温湿度传感器,支持的 Modbus 寄存器略有不同,请您参考实际产品手册。
接下来,记得开启 属性智能转换,并绑定自定义数据流。如下图:
通过 Modbus 任务查询温湿度
普通的温湿度传感器,只有上报数据的功能,我们来建立一个 Modbus 任务,定时查询温湿度。如下图:
这里我们用到任务的定时功能,我们选 间隔时间重复,如下图:
保存任务后,任务自动启动运行,等待我们设置的间隔时间后,任务首次运行,温湿度数据成功获得。
IO 控制器
添加 IO 控制器的属性定义
类似温湿度传感器的属性定义,我们继续添加 8 个 IO 输入开关量属性,和 8 个继电器输出开关量属性。
创建好的属性定义如下:
配置 IO 控制器的 Modbus 寄存器
然后在 DTU 的设备类型中,找到Modbus 配置,将刚创建的属性加入 IO 寄存器。如下图:
然后配置正确的从机地址和寄存器地址,如下图:
下发 Modbus 开关量控制
现在我们回到设备的概览面板,可以直接下发继电器输出。
在设备的调试功能中,可以看到属性下发被自动转成了 Modbus 指令,通过自定义数据流下发到了 DTU,再被透传到 IO 控制器,然后接收到了 DTU 回传的 Modbus 回复消息。如下图:
到目前为止,我们已经可以通过 ThingsCloud 控制台远程控制继电器开关。
通过 Modbus 任务查询继电器状态
有时候继电器断电会归位,云平台可能不知道继电器的最新状态,所以我们来建立一个继电器状态查询的 Modbus 任务。如下图:
这里我们将任务的目标类型选为设备类型,而不是设备,这使得任务对该设备类型下的所有设备生效,未来有更多设备添加后不需要再单独创建同样的任务。
推送方式选择 MQTT,自定义数据流填写 stream
,这是 DTU 内置连接 ThingsCloud 的默认自定义数据流标识符。
选择 Modbus RTU 下发 任务,用 01
功能码查询继电器状态,这里需要略懂 Modbus 指令,通常可以从设备手册中找到 Modbus 协议。
任务创建成功后,我们可以手动运行一次。如下图:
可以在设备调试中看到 3 条消息,分别是:
- 下发的 Modbus 查询指令
- 收到 Modbus 回复指令
- 解析后转换成属性上报消息