概述
本指南将介绍如何使用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实例添加一个网关设备:
<a href="/images/gateway/dashboard/gateway-getting-started-1-ce.png title:导航至"**实体**" > "**网关**"选项卡。" itemprop="contentUrl"> <img src="/images/gateway/dashboard/gateway-getting-started-1-ce-preview.png title:导航至"**实体**" > "**网关**"选项卡。" itemprop="thumbnail" alt=''> </a>
<a href="/images/gateway/dashboard/gateway-getting-started-2-ce.png title:点击"**+**"按钮,输入网关设备名称(例如"My Gateway"),并选择设备配置文件。点击"**创建**"按钮。" itemprop="contentUrl"> <img src="/images/gateway/dashboard/gateway-getting-started-2-ce-preview.png title:点击"**+**"按钮,输入网关设备名称(例如"My Gateway"),并选择设备配置文件。点击"**创建**"按钮。" itemprop="thumbnail" alt=''> </a>
要启动网关,请按照以下步骤操作:
<a href="/images/gateway/dashboard/gateway-getting-started-3-ce.png title:选择并点击新创建的网关,点击右上角的**"启动命令"**按钮。" itemprop="contentUrl"> <img src="/images/gateway/dashboard/gateway-getting-started-3-ce-preview.png title:选择并点击新创建的网关,点击右上角的**"启动命令"**按钮。" itemprop="thumbnail" alt=''> </a>
运行网关Docker镜像后,您可以在终端中看到以下日志:

步骤2.添加新的Modbus连接器
接下来添加一个Modbus连接器,该连接器将从模拟Modbus设备读取前面描述的数据并发送到已创建的网关。要创建连接器,请按照以下步骤操作:
<a href="/images/gateway/dashboard/gateway-getting-started-7-ce.png title:点击右侧面板上的"**连接器配置**"按钮;" itemprop="contentUrl"> <img src="/images/gateway/dashboard/gateway-getting-started-7-ce-preview.png title:点击右侧面板上的"**连接器配置**"按钮;" itemprop="thumbnail" alt=''> </a>
<a href="/images/gateway/dashboard/gateway-getting-started-8-ce.png title:点击"**+ 添加连接器**"按钮;" itemprop="contentUrl"> <img src="/images/gateway/dashboard/gateway-getting-started-8-ce-preview.png title:点击"**+ 添加连接器**"按钮;" itemprop="thumbnail" alt=''> </a>
<a href="/images/gateway/dashboard/gateway-getting-started-modbus-9-ce.png title:从下拉菜单中选择"**Modbus**"连接器类型,填写"**名称**"字段,将"**日志级别**"选择为"**INFO**",关闭"**使用默认值填充配置**"选项,然后点击"**添加**"按钮;" itemprop="contentUrl"> <img src="/images/gateway/dashboard/gateway-getting-started-modbus-9-ce-preview.png title:从下拉菜单中选择"**Modbus**"连接器类型,填写"**名称**"字段,将"**日志级别**"选择为"**INFO**",关闭"**使用默认值填充配置**"选项,然后点击"**添加**"按钮;" itemprop="thumbnail" alt=''> </a>
<a href="/images/gateway/modbus-connector/guides/connector-configuration.png title:选择"**高级**"配置模式,点击"**配置**"选项卡并粘贴连接器配置(_您可以在这些步骤下方找到_)。" itemprop="contentUrl"> <img src="/images/gateway/modbus-connector/guides/connector-configuration-preview.png title:选择"**高级**"配置模式,点击"**配置**"选项卡并粘贴连接器配置(_您可以在这些步骤下方找到_)。" itemprop="thumbnail" alt=''> </a>
<a href="/images/gateway/modbus-connector/guides/connector-configuration-save.png title:点击"**保存**"按钮以应用更改。" itemprop="contentUrl"> <img src="/images/gateway/modbus-connector/guides/connector-configuration-save-preview.png title:点击"**保存**"按钮以应用更改。" itemprop="thumbnail" alt=''> </a>
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以获取实际值。
步骤3.查看设备数据
要查看从网关上传的数据,请按照以下步骤操作:
<a href="/images/gateway/modbus-connector/guides/review-device-data.png title:导航至**实体** > **设备**页面,点击我们在"**deviceName**"字段中命名的已创建设备"**Modbus PLC**"。这将打开设备详情页面。然后切换到**"最新遥测"**选项卡,查看在连接器中配置的实时数据。" itemprop="contentUrl"> <img src="/images/gateway/modbus-connector/guides/review-device-data-preview.png title:导航至**实体** > **设备**页面,点击我们在"**deviceName**"字段中命名的已创建设备"**Modbus PLC**"。这将打开设备详情页面。然后切换到**"最新遥测"**选项卡,查看在连接器中配置的实时数据。" itemprop="thumbnail" alt=''> </a>
总结
本指南带您完成了使用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主要功能相关的指南: