DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

异步蝉翼
• 阅读 937

[小 迪 导读]
本教程在掌握基础modbusRTU标准协议概念和业务流程之后,通过真实的支持ModbusRTU标准协议的设备和DTU来进行实战演练。

系统需要使用两个设备以及若干导线:

  • 温湿度传感器:采用的是SHT20传感器 Modbus工业级
  • DTU:采用的是有人的口红CAT-1 DTU DR154

系统架构逻辑图如下,包括设备模拟,通道通信,模型设置,应用显示部分
DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

操作步骤:

1.设备接线

电表信息

模块温湿度变送器
型号SHT20传感器
类型Modbus 工业级 高精度 温湿度监测
  • SHT20传感器

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

DTU信息

品牌有人
型号DR154(RS485)
密码(Pwd)usr_cn
  • dtu图片

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

操作步骤

SHT20传感器连接电源

SHT20传感器根据端口图正负连接电源正负,电源可以选用电源适配器。

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

DTU连接电源

根据DTU上的端口图,红色线(电源线)连接DC+,黑色线(地线)连接DC-

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

连接DTU和SHT20传感器

根据端口图,SHT20传感器的A端口连接DTU端口的RX(A),SHT20传感器的B端口连接DTU端口的TX(B)

说明 RX为接收,TX为发送

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

2.dtu配置

1.DTU正面二维码下方标识正负极连接电源,A,B端连接电表,到开手机微信扫码,扫描DTU二维码进入小程序,打开蓝牙连接与DTU背部IMEI相同编号的蓝牙,进入连接,密码为usr_cn
DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

2.打开参数设置,设置工作模式:地址设为部署的平台地址;端口号设为20111。

说明 地址为服务器地址,端口号为服务器端口号,若无自己的物联网服务器,可选择地址:prod.dgiotcloud.cn,端口号设为20111
警告 设置dtu时,工作模式设置完后需保存再设置串口,不能一次性设置,一次性设置会导致设置不完全

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

勾选注册包功能,注册包数据类型选择IMEI码,将会自动生成一个IMEI码。

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

3.打开参数设置,设置串口设置:波特率设为9600,校验位选择NONE。

说明 支持ModbusRTU的设备:参数可以询问商家或者商品介绍获取设备的参数

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程
DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

3.创建采集通道

1.创建ModbusRTU采集通道。位置在通道管理-创建通道
DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程
2.选择Modbus采集通道并配置
DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

3.产品添加通道后需对通道进行重启

4.通道日志查看

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程
DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

5.创建产品

1.要连接ModbusRTU,创建一种产品即可
2.创建产品
DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程
ModbusRTU
DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

3.产品物模型配置
将以下物模型代码直接复制即可
ModbusRTU

{
    "events": [],
    "properties": [
        {
            "accessMode": "r",
            "dataForm": {
                "address": "0X10",
                "afn": "",
                "byteType": "",
                "bytelen": "",
                "collection": "%%humid/10",
                "control": "%d",
                "countcollection": "%s",
                "countround": "all",
                "countstrategy": 20,
                "da": "",
                "data": "null",
                "dt": "",
                "iscount": "0",
                "offset": 0,
                "operatetype": "readCoils",
                "order": 0,
                "originaltype": "short16_AB",
                "protocol": "MODBUSRTU",
                "rate": 1,
                "round": "all",
                "slaveid": "0X10",
                "strategy": "计算值"
            },
            "dataSource": {
                "": [],
                "_dlinkindex": "",
                "address": "1",
                "dis": [
                    {
                        "data": "2",
                        "key": "0000",
                        "undefined": "0000"
                    }
                ],
                "operatetype": "readIregs",
                "originaltype": "short16_AB",
                "registersnumber": "1",
                "slaveid": "temp_humid"
            },
            "dataType": {
                "das": [],
                "specs": {
                    "max": 100,
                    "min": 0,
                    "precision": 3,
                    "step": 0,
                    "unit": "%"
                },
                "type": "float"
            },
            "devicetype": "温湿度传感器",
            "identifier": "humid",
            "index": 0,
            "isaccumulate": false,
            "isshow": true,
            "isstorage": true,
            "moduleType": "properties",
            "name": "湿度",
            "required": true,
            "updateAt": "1659081134998"
        },
        {
            "accessMode": "r",
            "dataForm": {
                "address": "0X10",
                "afn": "",
                "byteType": "",
                "bytelen": "",
                "collection": "%%temp/10",
                "control": "%d",
                "countcollection": "%s",
                "countround": "all",
                "countstrategy": 20,
                "da": "",
                "data": "null",
                "dt": "",
                "iscount": "0",
                "offset": 0,
                "operatetype": "readCoils",
                "order": 0,
                "originaltype": "short16_AB",
                "protocol": "MODBUSRTU",
                "rate": 1,
                "round": "all",
                "slaveid": "0X10",
                "strategy": "计算值"
            },
            "dataSource": {
                "": [],
                "_dlinkindex": "",
                "address": "0",
                "dis": [
                    {
                        "data": "2",
                        "key": "0000",
                        "undefined": "0000"
                    }
                ],
                "operatetype": "readIregs",
                "originaltype": "short16_AB",
                "registersnumber": "1",
                "slaveid": "temp_humid"
            },
            "dataType": {
                "das": [],
                "specs": {
                    "max": 100,
                    "min": -100,
                    "precision": 3,
                    "step": 0,
                    "unit": "℃"
                },
                "type": "float"
            },
            "devicetype": "温湿度传感器",
            "identifier": "temp",
            "index": 1,
            "isaccumulate": false,
            "isshow": true,
            "isstorage": true,
            "moduleType": "properties",
            "name": "温度",
            "required": true,
            "updateAt": "1659081126141"
        },
        {
            "accessMode": "r",
            "dataForm": {
                "address": "0X10",
                "afn": "",
                "byteType": "",
                "bytelen": "",
                "collection": "%s",
                "control": "%d",
                "countcollection": "%s",
                "countround": "all",
                "countstrategy": 20,
                "da": "",
                "data": "null",
                "dt": "",
                "iscount": "0",
                "offset": 0,
                "operatetype": "readCoils",
                "order": 0,
                "originaltype": "short16_AB",
                "protocol": "MODBUSRTU",
                "rate": 1,
                "round": "all",
                "slaveid": "0X10",
                "strategy": "3"
            },
            "dataSource": {
                "": [],
                "_dlinkindex": "",
                "address": "0X0001",
                "dis": [
                    {
                        "data": "2",
                        "key": "0000",
                        "undefined": "0000"
                    }
                ],
                "operatetype": "readIregs",
                "originaltype": "bit",
                "registersnumber": "2",
                "slaveid": "0X01"
            },
            "dataType": {
                "das": [],
                "specs": {
                    "max": 10000000000000000,
                    "min": 0,
                    "precision": 3,
                    "step": 0,
                    "unit": ""
                },
                "type": "int"
            },
            "devicetype": "温湿度传感器",
            "identifier": "temp_humid",
            "index": 2,
            "isaccumulate": false,
            "isshow": false,
            "isstorage": false,
            "moduleType": "properties",
            "name": "温湿度",
            "required": true,
            "updateAt": "1656584724858"
        }
    ],
    "services": [],
    "tags": []
}

4.如何复制物模型

在产品管理-配置-物模型-查看物模型处

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

将物模型代码复制粘贴即可

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

复制完后可以点击编辑查看配置情况,dgiot针对modbusRTU多个数据的情况提供一次性全部读取的方案。
DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

负责采集的物模型的下方数据来源与设备参数配置的一致
DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

6.SHT20传感器设备连接的DTU注册成功

1.SHT20传感器设备连接的DTU注册成功

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程
2.SHT20传感器设备连接的DTU上线成功

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

3.设备地图显示成功

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

7.ModbusRTU数据采集成功

1.SHT20传感器实时数据

DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程
DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程
2.ModbusRTU历史数据
DGIOT国内首家轻量级物联网开源平台——真实ModbusRTU接入实战教程

[小 迪 提醒]
没有多个数据的modbusRTU设备的用户可以使用虚拟modbus软件自行模拟。
虚拟modbus连接点击了解详情

[小 迪 点评]

  • dgiot支持ModbusRTU协议的设备接入,有真实设备的用户尝试进行设备接入演练。
  • 真实设备的接入针对新手玩家,dgiot的接线步骤将会提供很大的帮助。

想了解更多 dgiot 的具体细节,欢迎大家在GitHub上查看相关源代码。

点赞
收藏
评论区
推荐文章
物联网云平台盘点
物联网云平台是一个专门为物联网定制的云平台,物联网与普通的互联网是不同的:物联网终端设备比普通互联网手机端,电脑端多出几个数量级;普通互联网对http,https协议访问相对单一,而对https有些设备不能访问,需要轻量级的访问协议。物联网场景的多样,使得没有任何一个产品能解决所有问题。物联网平台也一样,今天来盘点一下国内一些物联网平台的主要特点。一站式托管
Stella981 Stella981
3年前
ARKit入门
ARKit介绍ARKit是iOS11引入的一个全新的框架,使用VisualInertialOdometry(VIO,视觉惯性里程计)来精确跟踪现实世界中的真实场景。相比其它设备平台,ARKit中的VIO可以将传感器数据和CoreMotion的数据融合在一起,从而提供更为精确的信息。ARKit可以让iOS设备精确感知它如何在房间内移动,而无需外
Stella981 Stella981
3年前
Linux之lldptool命令
1\.描述当我们想在操作系统里面查看网口和交换机连接的状态信息,我们可以使用lldptool这个工具。2.LLDP协议LLDP是一个数据链路层发现协议,LLDP协议使得接入网络的一台设备可以将其主要的能力,管理地址,设备标识,接口标识等信息发送给接入同一个局域网络的其它设备。lldptool工具采用的是LLDP协
Stella981 Stella981
3年前
Qt编写气体安全管理系统4
一、前言通信协议解析是整个系统的核心灵魂,绝大部分人做软硬件通信开发,第一步估计就是写demo将协议解析好,然后再慢慢写整个界面和操作流程等,在工业控制领域,modbus协议应用还是非常广泛的,这个系统用的也是modbus协议,采用此协议可以方便的用一些第三方的组态软件接入,兼容性更强,modbus只是个协议规约标准,至于使用串口还是网络还是其
Stella981 Stella981
3年前
IEC61850之MMS客户端实现简单分析
<p制造报文规范MMS(ManufacturingMessageSpecification)是由国际标准化组织和国际电工委员会工业自动化技术委员会TC184工作组共同维护管理的一套国际报文规范,主要用于生产设备间的控制信息传送。MMS提供了丰富的针对对等式实时通信网络的一系列服务,已经成为许多通用工业领域的控制设备的通信协议。MMS协议由两个核心标准(
Stella981 Stella981
3年前
EMQ X Neuron V1.1.1 正式发布,增加南北协议报文显示和日志追踪
为解决工业领域数据接入上云过程中所面临的协议繁杂、设备异构化等问题,2020年9月,物联网边缘工业协议网关软件EMQXNeuron(以下简称Neuron)正式发布。Neuron提供了通过对各种工业协议转换实现设备端的数据采集、运行业务逻辑服务、警报判定,并将数据及警报上传及存储到云平台。再通过Web服务等部署和客户端应用
智慧物流设备和物联网组件化
与人工智能算法一样,智能物流设备和物联网近年来发展迅速,其在仓储、物流、运输、制造(阿里的灰犀牛)等领域的应用加速了自动化和无人供应链的进程。物联网开启万物互联时代,打通现实世界与数字世界的通道。通过传感器,物联网可以将真实的光电信号转化为数据,这