使用 Modbus RTU 透传
Modbus RTU 串口传输功能几乎是所有的 DTU 我们还在教程中介绍了一些制造商的标准产品 DTU 接入示例。
ThingsEdge DTU 使用 Modbus 传输功能等 DTU 这里列出了一些常用的方法。
使用 DTU 集成模式
ThingsCloud 对所有 DTU 接入通常支持两种模式:
-
集成模式:即 DTU 以及它连接的所有传感器和其他设备 ThingsCloud 它反映在设备上。这种方法适合 DTU 和子设备相对较少。若数量较多,则不利于设备功能定义的再利用。
-
网关模式:将 DTU 它的多个子设备,在 ThingsCloud 对应独立设备。这样就可以独立定义子设备的功能,方便设备资产的组织和维护管理,非常清晰。
先介绍一下这一节。为便于管理,我们用以前的方法新建设备类型,改名。
接线示例
在这个例子中,我们在 DTU 的 RS485 两个连接在总线上 Modbus 设备:
- 8进8出 IO 从机站号控制器为 1,波特率 9600
- 温湿度传感器,机站号是 2,波特率 9600
其中,在 IO 在控制器的继电器端,我们连接了两个指示灯IO两个行程开关连接到输入端。
添加 IO 控制器的属性定义
我们先在 DTU 在设备类型中找到,找到相应的设备模型,添加标准功能 8 个 IO 输入开关量属性,和 8 继电器输出开关量属性。
创建的属性定义如下:
配置 IO 控制器的 Modbus 寄存器
然后在 DTU 在设备类型中找到,添加新创建的属性 IO 寄存器如下图所示:
然后正确配置和,如下图:
最后,开启,并绑定自定义数据流。如下图:
下发 Modbus 开关量控制
现在我们回到设备的概览面板,可以直接发送继电器输出。
在设备的在功能中,可以看到属性发布自动转换为 Modbus 通过自定义数据流发送指令 DTU,再被透传到 IO 然后接收控制器 DTU 回传的 Modbus 回复信息。如下图所示:
到目前为止,我们已经可以通过了 ThingsCloud 控制台远程控制继电器开关。
通过 Modbus 查询继电器状态
有时继电器断电会归位,云平台可能不知道继电器的最新状态,所以我们将建立继电器状态查询 Modbus 任务如下图所示:
这里我们将任务的目标类型选为,而不是,这使得任务对设备类型下的所有设备都有效,未来更多的设备不需要单独创建相同的任务。
选择推送方式 MQTT,自定义数据流填写 stream
,这是 DTU 内置连接 ThingsCloud 默认自定义数据流标识符。
选择 任务,用 01
查询继电器状态的功能码需要一点了解 Modbus 指令通常可以从设备手册中找到 Modbus 协议。
任务创建成功后,我们可以手动操作一次。如下图所示:
在设备调试中可以看到 3 条消息分别为:
- 下发的 Modbus 查询指令
- 收到 Modbus 回复指令
- 分析后,化为属性报告消息
配有温湿度传感器 Modbus 寄存器
接下来我们再配置另一个连接到 DTU 在温湿度传感器中,还添加功能定义,添加温湿度两个属性,如下图所示:
添加新的属性后,如下图:
接着在 Modbus 传感器寄存器对应于温湿度属性,如下图所示:
支持不同厂家的温湿度传感器 Modbus 寄存器略有不同,请参考实际产品手册。
通过 Modbus 任务查询温湿度
我们将建立一个普通的温湿度传感器,只有报告数据的功能 Modbus 定期检查温湿度,如下图所示:
在这里,我们使用任务的定时功能,我们选择 ,如下图:
保存任务后,任务将自动启动,等待我们设定的间隔,任务将首次运行,并成功获取温湿度数据。
其它透传 DTU 的支持
ThingsCloud 的 Modbus RTU 传输方式适用于所有厂家支持串口传输 DTU 产品,请参考以下示例:
- 有人 4G DTU TCP 接入
- 塔石 4G DTU MQTT 接入