[新手教程] Modbus 设备通过 DTU 透传接入 ThingsCloud


[新手教程] Modbus 设备通过 DTU 透传接入 ThingsCloud

很多 DTU/RTU 产品都支持 Modbus 透传功能,您可以用 DTU 来连接任意 Modbus 从机设备,例如:温湿度传感器、光照传感器、继电器、行程开关、智能电表等。

当这些 Modbus 设备通过 DTU 的透传模式,成功连接到 ThingsCloud 后,下一步您会关心的是,如何在云平台上解析 Modbus 消息,以及如何从云平台下发 Modbus 消息到设备,用于实时控制。

这里我们以 ThingsEdge DTU 为示,介绍几个常见的 Modbus 设备如何无缝的接入 ThingsCloud,实现数据上报和控制下发。这些方法也同样适用于其它 DTU 产品。

提示

关于 DTU 如何连接 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 回复指令
  • 解析后转换成属性上报消息

更多功能