产品定价 立即试用
社区版
如何将Modbus设备连接至ThingsBoard CE?
入门 文档 指南 安装 架构 API 常见问题
目录

如何将Modbus设备连接至ThingsBoard CE?

概述

本指南将介绍如何使用ThingsBoard IoT Gateway将Modbus设备连接至ThingsBoard CE。 无论您是刚接触Modbus协议,还是希望优化现有配置,本指南都将帮助您快速上手。

介绍

ThingsBoard IoT Gateway是一款开源方案,在接入既有或第三方系统的物联网设备与ThingsBoard平台之间架起桥梁。它让无法直接与ThingsBoard通信的设备得以无缝集成,确保数据可实时采集、处理与展示。借助IoT Gateway,您可以连接多台设备、聚合遥测数据并集中管理配置。它支持灵活的部署场景,尤其适用于Modbus广泛使用的工业自动化、监控和智能能源系统。

什么是Modbus?

Modbus支持多种通信模式,包括串口(Modbus RTU和ASCII)与网络(Modbus TCP/IP),可适应多种工业环境。其简洁性与开放标准促成了广泛采用,使不同厂商的设备可以互通。尽管已问世数十年,Modbus凭借可靠、易实现及与现代工业系统的兼容性,至今仍在使用。此外,它常作为数据采集、过程监控及控制的主干协议,用于从工厂到楼宇自动化等场景。

您将学到什么?

本指南将分步骤说明如何使用ThingsBoard IoT Gateway将Modbus设备连接至ThingsBoard CE。您将学会如何配置网关、设置Modbus连接器、映射数据点并发送至ThingsBoard。完成本指南后,您将掌握利用ThingsBoard IoT Gateway将Modbus设备纳入物联网生态的方法,并建立起可在ThingsBoard CE中无缝监控与分析Modbus设备数据的运行环境。

前提条件

-在配置网关前,请确保ThingsBoard服务已运行。您可参考 安装指南手动安装ThingsBoard CE。 -继续前请确保本机已安装并正确配置Docker。若尚未安装,可从Docker官网下载并按您所用系统的安装指南完成安装。

Modbus演示设备结构概览

本指南将使用ThingsBoard Modbus演示设备,该设备可模拟Modbus设备,并提供一种便捷的方式来测试和演示与ThingsBoard的Modbus通信。演示设备已预配置了一组寄存器和数据点,模拟真实Modbus设备的行为。用户可以与设备进行交互,读写数据,并观察数据在ThingsBoard中的处理与可视化效果。

ThingsBoard Modbus演示设备旨在帮助用户理解Modbus协议以及如何使用ThingsBoard将Modbus设备集成到物联网方案中。它提供了一种实践性的方式来探索ThingsBoard在Modbus通信场景下的能力。

Modbus演示设备具有以下结构:

变量名称 寄存器类型 数据类型 地址
Temperature Holding 16int 0
Humidity Holding 16int 1
Power Holding 16int 2
Pressure Holding 16int 3
Relay Coil bits 1

要启动并运行Modbus演示设备,您可以使用Docker并执行以下命令:

1
docker run -it -p 5021:5021 thingsboard/tb-gw-modbus-server:latest

服务器将在0.0.0.0:5021上可用。

文档信息图标

我们将在网关连接器配置中使用host.docker.internal代替0.0.0.0,以允许Docker容器访问另一个Docker容器。

通过使用演示设备及其寄存器,您将了解如何提取实时遥测数据并将其转发至ThingsBoard进行监控和分析。

步骤1.在ThingsBoard上创建新的网关设备

首先,按照以下步骤向您的ThingsBoard实例添加一个网关设备:

要启动网关,请按照以下步骤操作:

运行网关Docker镜像后,您可以在终端中看到以下日志:

步骤2.添加新的Modbus连接器

接下来添加一个Modbus连接器,该连接器将从模拟Modbus设备读取前面描述的数据并发送到已创建的网关。要创建连接器,请按照以下步骤操作:

Modbus连接器配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
{
  "master": {
    "slaves": [
      {
        "host": "host.docker.internal",
        "port": 5021,
        "type": "tcp",
        "method": "socket",
        "timeout": 35,
        "byteOrder": "BIG",
        "wordOrder": "LITTLE",
        "retries": true,
        "retryOnEmpty": true,
        "retryOnInvalid": true,
        "pollPeriod": 1000,
        "unitId": 1,
        "deviceName": "Modbus PLC",
        "deviceType": "default",
        "connectAttemptTimeMs": 5000,
        "connectAttemptCount": 5,
        "waitAfterFailedAttemptsMs": 300000,
        "attributes": [
          {
            "tag": "power",
            "type": "16int",
            "functionCode": 3,
            "objectsCount": 1,
            "address": 2,
            "divider": 10
          }
        ],
        "timeseries": [
          {
            "tag": "temperature",
            "type": "16int",
            "functionCode": 3,
            "objectsCount": 1,
            "address": 0,
            "divider": 10
          },
          {
            "tag": "humidity",
            "type": "16int",
            "functionCode": 3,
            "objectsCount": 1,
            "address": 1,
            "divider": 10
          },
          {
            "tag": "pressure",
            "type": "16int",
            "functionCode": 3,
            "objectsCount": 1,
            "address": 3,
            "divider": 10
          },
          {
            "tag": "relay",
            "type": "bits",
            "functionCode": 1,
            "objectsCount": 1,
            "address": 1
          }
        ],
        "attributeUpdates": [],
        "rpc": []
      }
    ]
  }
}

下面将连接器配置拆解为各个部分并逐一说明:

  • master.slaves -网关将通信的Modbus”设备”列表。此处我们只有一个。
  • host: "host.docker.internal" – Modbus服务器的IP/主机名。此值使Docker化的网关能够访问宿主机。
  • pollPeriod: 1000 – 每1000毫秒(1秒)轮询一次设备。
  • unitId: 1 – 目标设备的Modbus单元/从站ID(对于TCP,许多网关仍需使用此参数)。
  • deviceName: "Modbus PLC" – 将接收数据的ThingsBoard设备名称。
  • attributes -将作为ThingsBoard设备属性读取的Modbus寄存器列表。
  • timeseries -将作为ThingsBoard设备遥测数据读取的Modbus寄存器列表。
  • tag -在ThingsBoard中显示的键名。
  • type -原始数据的解码方式(例如,16int为有符号16位整数;bits为线圈/位域)。
  • functionCode -读取数据时使用的Modbus功能码(例如,3用于保持寄存器,1用于线圈)。
  • address -要读取的Modbus地址(例如,0对应温度,1对应湿度等)。
  • divider -修饰符,将读取值除以10以获取实际值。
文档信息图标

有关Modbus连接器的更多信息,请参阅此处

步骤3.查看设备数据

要查看从网关上传的数据,请按照以下步骤操作:

总结

本指南带您完成了使用ThingsBoard IoT Gateway将Modbus设备连接至ThingsBoard CE的全过程。按照本指南中的步骤,您已成功搭建网关、配置Modbus连接器,并映射数据点将遥测和属性数据发送至ThingsBoard。您还学会了如何在ThingsBoard CE中监控和可视化Modbus设备数据。 借助ThingsBoard IoT Gateway作为Modbus设备与ThingsBoard之间的桥梁,您现在可以利用ThingsBoard的强大功能来有效分析和管理设备数据。无论是监控环境状况、追踪能耗还是管理工业流程,将Modbus设备与ThingsBoard集成都为数据驱动的决策和自动化开辟了新的可能。

随着您继续探索ThingsBoard和ThingsBoard IoT Gateway的功能,您可以通过添加更多设备、实现高级数据处理以及创建自定义仪表板来进一步增强物联网方案。ThingsBoard的灵活性和可扩展性使其成为构建稳健物联网应用的理想平台。

我们鼓励您尝试不同的配置,探索ThingsBoard IoT Gateway的更多功能,并在物联网项目中充分利用Modbus设备的强大能力。凭借本指南中获得的知识,您已做好充分准备,将物联网方案推向更高水平。

下一步

探索与ThingsBoard主要功能相关的指南: