[保姆级教程] RS485/Modbus 设备通过 DTU 透传接入 ThingsCloud


[保姆级教程] RS485/Modbus 设备通过 DTU 透传接入 ThingsCloud

很高兴您将 RS485/Modbus 设备接入 ThingsCloud,这个教程将介绍完整的接入步骤,无论您是否拥有 Modbus 协议有基础知识,都不重要,重要的是认真按以下步骤来操作。

学习该教程后,您将掌握 RS485温湿度传感器RS485继电器 如何接入 ThingsCloud,并完成温湿度数据的采集,和通过云平台远程控制继电器开关。

articles/2023/20231105135948_fa9535c16fa7b7e878ed3ff2981a33c4.png

硬件接线参考图

articles/2023/20231105135851_d2f451d0e1a4a93aecd0fd4cfba76968.png

在本示例中,DTU 的 RS485 总线上连接了两个 Modbus 设备:

  • RS485 8进8出控制器(8个继电器输出,8个开关量输入),从机地址是 1,波特率 9600
  • RS485 温湿度传感器,从机地址是 2,波特率 9600

在控制器的8个继电器输出端,分别连接了8个LED指示灯,用于测试继电器开关。有兴趣可以观看视频 娱乐时间!出圈的继电器定时闹钟,效果为片尾open in new window

如果您对硬件如何接线还是不太熟悉,建议观看 ThingsEdge DTU - 硬件连线指南 或者咨询您的设备厂商。

DTU 接入 ThingsCloud

由于 RS485 设备采用串口通信方式,所以不能直接和云平台通信,需要通过 DTU 来中转。

你可以将 DTU 理解成一个负责传递消息的管道。普通的 DTU 不对从它经过的 Modbus 消息做任何处理,所以也叫 Modbus 透传

提示

很多品牌的 DTU 产品都支持 Modbus 透传功能,您可以用 DTU 来连接成百上千种支持 Modbus 的设备,例如:温湿度传感器、光照传感器、压力传感器、CO2传感器、继电器、控制器、智能电表等。

所以,第一步就是先将 DTU 设备接入 ThingsCloud,在控制台看到 DTU 设备上线

那么,我应该如何选择 DTU 呢?

在本教程开头的硬件连线图中,我们用作演示的 DTU 是 ThingsEdge DTU X1,您也可以用其它任意品牌的 DTU,ThingsCloud 使用开放的接入协议,不限定具体的设备品牌。

学习 DTU 如何连接 ThingsCloud,请跳转到 DTU 接入,您将学习如何在 ThingsCloud 控制台配置 MQTT 和 TCP 两种常用的 DTU 设备接入,并介绍几个常见品牌的 DTU 设备端的配置方法。

扩展知识

ThingsCloud 是开放的物联网平台,支持不同种类和品牌的设备统一接入,学习更多接入协议,请浏览 设备接入

配置 Modbus 设备

当 DTU 在 ThingsCloud 成功上线后,接下来要做的,就是在 ThingsCloud 控制台完成与 Modbus 设备通信的相关配置,在本教程中我们要实现:

  • 从温湿度传感器读取温度和湿度数据。
  • 向继电器下发控制指令,实现实时控制。

这些配置,和具体使用什么 DTU 产品,用的是 MQTT 还是 TCP,几乎没有直接关系。

温湿度传感器

添加属性定义

首先,在 DTU 的设备类型中,找到 功能定义,添加温度和湿度两个属性,使用添加标准功能,如下图:

articles/2023/20231105155427_55091cd7b5ec5763dfd42cc7fdbc4a98.png

扩展知识

标准功能收录了一些常用的设备属性,如果没有您需要的,可以直接点击右侧的 添加属性

属性添加成功后,如下图:

articles/2023/20231105155628_8d0fa8b5cba7a2f48300f139dd41cfee.png

配置 Modbus 寄存器

接着,进入设备类型的 Modbus 配置,如下图:

提示

如果您的设备类型中不显示 Modbus 配置,请确认设备类型的 设备接入协议 是否设置为 Modbus RTU 透传

articles/2023/20231105155710_67590d63ddcecf40f5ca147b3c986aa8.png

在页面最底部的 数据寄存器 部分,点击 编辑寄存器,设置温度、湿度属性对应的 Modbus 寄存器,如下图:

articles/2023/20231105155842_0a584a09799243887701698e35064831.png

请注意!本示例中我们的温湿度传感器从机地址是 2,您的请根据实际情况填写,大多数温湿度传感器出厂时从机地址是 1。

其它的参数,如果您对自己的温湿度传感器不了解,可直接按上图填写,大概率是一样的。

提示

不同厂家的温湿度传感器,Modbus 寄存器地址可能略有不同,请您以厂家提供的产品手册为准。

接下来,记得开启 属性智能转换,并设置用于传输 Modbus 透传消息的自定义数据流。如下图:

articles/2023/20231105160056_3032be207a46969acfe968a92f3c0998.png

通常来说,DTU 接入时已经在设备类型中定义了自定义数据流,这里会自动列出,直接选择即可,如下图:

articles/2023/20231105160243_958f81ed57231017d501be686c1b0722.png

对于 下发推送方式,和 DTU 接入时的方式保持一致。

articles/2023/20231105160439_00aee8f86a898eea0c969d4ec1b58cd3.png

创建 Modbus 查询任务

完事具备,只差最后一步。

在设备类型中,创建任务,如下图:

articles/2023/20231105161256_8b90cc35d017290481c7c3f9b5c55e75.png

任务的基本信息如下图:

articles/2023/20231105161332_bb8b272ddcc65aa03ac35f82bc2e1c94.png

在设置任务的操作部分,参考下图:

articles/2023/20231105161504_79869b4bda4020a1b80f785674c8be74.png

选择 Modbus RTU 下发,打开配置对话框,这里主要是设置 Modbus 查询指令的各部分参数,如下图:

articles/2023/20231105161551_33f549459d49f4d6905dba4b39e19761.png

最后在任务定时设置中,选择关闭定时,保存任务。

articles/2023/20231105161648_c86e44160f7dc60e93d216b9a1af3b53.png

单次测试读取数据

手动点击运行刚刚创建的任务,如下图:

articles/2023/20231105161957_e1290fdb032034c1c0778973738a1b51.png

可以看到温度和湿度数据已经成功读取。

articles/2023/20231105162421_76661db839bcd71c8a3ffb083e6e883f.png

如果没能成功读取,可以打开设备调试日志,如下图:

articles/2023/20231105162347_f05d4d5a24b7f719b8cbf132510d756a.png

看看您的设备消息是否如上图所示。

开启定时任务

单次测试成功后,我们可以开启任务的定时功能。

进入任务详情页,在定时设置中,选 间隔时间重复,如下图:

articles/2023/20231105162534_3f114008dee4dce4bebd61fba1601a44.png

保存任务后,任务自动定时运行。

8进8出控制器

添加属性定义

类似温湿度传感器的属性定义,我们为控制器添加 8 个继电器输出的开关量属性,同时也添加 8 个开关量输入属性,如下图:

articles/2023/20231105165638_ce97d850e2748af648dd810e90271aa5.png

创建好的属性定义如下:

articles/2023/20231105165904_285d29d028d8ff3848e906ed2df6171a.png

配置 Modbus 寄存器

然后在 DTU 的设备类型中,进入 Modbus 配置,将刚创建的属性加入 IO 寄存器。如下图:

articles/2023/20231105170029_73facd47e419337f9cedc73265004b1b.png

然后配置正确的 从机地址寄存器地址,如下图:

继电器输出的属性使用读写类型。

articles/2023/20231105170131_e081879624e51c5d377f84c5fd47e6ef.png

开关量输入属性使用只读类型。

articles/2023/20231105170202_cbe4aea22e9907a376ecd1df1e5f1caa.png

下发控制继电器开关

现在,我们就可以回到设备概览中,直接拨动继电器属性开关,实现继电器开关的控制。

articles/2023/20231105170613_40a2c027c839dceb216d5804ac6393a3.png

在设备的 调试日志 中,可以看到属性下发被自动转成了 Modbus 指令,随后云平台接收到设备的 Modbus 回复消息。如下图:

articles/2023/20231105170813_505a45637e315785cebb3e7254435795.png

到目前为止,我们已经可以通过 ThingsCloud 控制台远程控制继电器开关。

通过 Modbus 任务查询继电器状态

您可能会想到一个问题,假如继电器状态断电重启后归位,如何让云平台知道继电器的最新状态呢?

这就需要云平台来主动定时查询继电器的最新状态,和查询温湿度是同样的原理。

需要创建一个继电器状态查询的 Modbus 任务,创建任务的基本步骤和上文的温湿度传感器部分完全相同,唯一不同的是 Modbus RTU 操作配置的部分。

这里用 01 功能码查询继电器状态,因为有 8 路继电器,所以 线圈个数 填写 8。如下图:

articles/2023/20231105171427_4aa41fb98a48b74a1114f1feac85986d.png

任务创建成功后,手动运行一次,在设备调试日志中,可以看到:

articles/2023/20231105171809_683b6be9c6e828d7f84890a51615fb6c.png

【进阶】多继电器下发控制

您可能要问了,如何同时控制多路继电器呢?

其实,当您完成前边的配置,这个特性已经默认支持。

在设备类型的 Modbus 配置 中,打开 属性转换选项,可以看到已开启多开关量下发转 Modbus,如下图:

articles/2023/20231105182923_3954d970facc437c0026ed5ef6d93ef0.png

来测试一下,在设备的调试页面,打开下发消息对话框,直接输入下发属性 JSON,如下图:

articles/2023/20231105183126_de3f3e14ca4a6bfa3cfee56cd6c4000c.png

在设备调试日志中可以看到,多开关量属性下发会自动转为 Modbus 的 0F 写入多个线圈的指令,如下图:

articles/2023/20231105183138_99889b6b300c098366a828590992d796.png

提示

请特别注意!有些 Modbus 继电器的固件不支持 0F 指令,请在购买前和厂家确认。

更多功能