MQTT代理功能
本教程介绍的是海为云设备如何使用 MQTT 代理功能,实现局域网的二次组态以及将数据上报并存储到数据库,实现对远程数据的采集。
一、简介
海为物联云 HMI/网关,支持 MQTT 协议,支持接入数据库服务器,轻松实现数据采集上报,对接 ERP/MES 等系统。
海为物联云 HMI/网关 设备内置 MQTT 服务端,可开启 MQTT 代理功能,轻松实现 MQTT 自组网。
注:使用此功能进行二次组态时只针对局域网设备有效;且仅 HMI/网关 支持该功能。
二、功能设置
进入 HMI/网关 后台设置-本机设置-其他设置,开启 MQTT 代理功能;
当 MQTT 代理功能开启后,当前 HMI/网关 设备相当于一台 MQTT 服务器,此时的设备网络 IP 为服务器 IP,当前与该设备处于同一局域网中的其他 HMI/网关 设备可将此设备作为 MQTT 服务器进行数据上报。
三、场景应用
1. 二次组态
使用该设备作为 MQTT 主站,对该局域网中其他设备进行集中控制。
1.1 建立异地工程:
新建工程
打开海为组态软件 Haiwell SCADA Develop,新建工程,添加设备及变量。
添加数据组
双击左边工程树的数据组,选择添加数据组。
在弹出的数据组编辑窗口添加通道变量,存储方式必须勾选远程上报 MQTT。这里添加的变量为 switch、value。如需对数据进行写入操作,我们需要勾选上允许远程写入。组标识和通道标识需要留意下,在后面的远程组态工程里会用到。
MQTT 服务器配置
双击左边工程树的数据上报服务器并添加服务器,勾选启用,输入开启 MQTT 代理功能设备的 IP 地址。EMQ 服务器的默认端口为 1883。服务器项目标识可以使用随机生成的标识,也可以自己进行命名,但是必须具有唯一性,在后面的远程组态工程里会用到,上报验证的启用根据需求即可。
下载工程
完成服务器的配置后,做好画面,下载工程到 HMI 上。
终端配置
进入 HMI 后台,选择本机设置,为 HMI 设置终端名以及终端编号。
我们也可以通过在画面上添加图元并绑定系统变量$TerminalName(终端名)、$TerminalCode(终端编号)进行设置。
1.2 建立远程集中控制工程:
新建工程
打开海为组态软件 Haiwell SCADA Develop,新建工程。
添加 MQTT 设备
右键点击左边工程树的设备->MQTT,添加 MQTT 设备。IP 地址为开启 MQTT 代理功能设备 IP 地址,这里需要与代理设备处于同一局域网,EMQ 默认端口为 1883。项目标识也需要对应上,上报验证的启用根据需求即可。
添加变量
添加 MQTT 设备后对变量进行定义。填写 HMI/网关 上需要被监控数据对应的组标识,并填写上终端名称以及终端编号。通道标识也需要对应上。
运行工程
完成变量的添加后,在画面里添加图元、绑定变量,下载并运行工程。组态即可对异地 HMI/网关 的数据进行远程操控。
2. 数据采集上报数据库
此时该设备作为 MQTT 服务器,局域网中的设备可以通过该设备,将采集的数据上报至已配置的数据库中进行存储。
2.1 编写组态程序:
新建工程
打开海为组态软件 Haiwell SCADA Develop,新建工程,添加设备及变量。
添加数据组
双击左边工程树的数据组,然后选择添加数据组。
在弹出的数据组编辑窗口添加通道变量,存储方式必须勾选远程上报 MQTT。这里添加的变量为 switch、value。上报服务质量(QoS)有三种等级:
至多一次(QoS 0)- 发送者只发送一次消息;
至少一次(QoS 1)- 消息至少送达接收者一次,但也有可能会多发;
只有一次(QoS 2)- 保证消息只被接收一次。
组标识对应数据库中的表格名称,通道标识对应数据库表格中的字段, MySQL 数据库中无需提前建立表格及字段。
服务器配置
双击左边工程树的数据中心数据上报服务器并添加服务器,勾选启用,输入服务器地址,即为开启 MQTT 代理功能设备的 IP 地址。EMQ 服务器的默认端口为 1883。服务器项目标识可以使用随机生成的标识,也可以自己进行命名,但是必须具有唯一性。上报验证的启用根据需求即可,这里启用了上报验证方便在接下来进行验证。
下载工程
完成服务器的配置后,做好画面,下载工程到 HMI 上。
2.2 海为数据互联工具
海为数据互联工具是海为开发的数据库对接工具,在组态软件中相应位置打开配置使用即可。
配置工具
点击左上角的数据上报服务器进行 MQTT 服务器配置,与 Haiwell SCADA Develop 中数据上报服务器的服务器配置类似,这里填写开启 MQTT 代理功能设备的 IP 地址。
添加任务
点击海为数据互联工具右上角的添加任务进行 MySQL 数据库的配置。添加任务后点击设置进行任务设置。
工程项目标识应与组态数据中心的服务器项目标识保持一致,组标识为组态中数据组的组标识。数据库设置与通过MySQL-front 远程访问数据库的设置类似。主机填写已经配置完成的 MySQL 服务器的主机 IP 地址,端口默认为 3306,用户和密码为 MySQL 数据库的 root 用户和密码,数据库则根据需求自行配置 (qqq555)。
开始任务
添加完任务后,点击右下角的开始执行任务。如果任务成功执行,下方的开始会变成红色的终止。
3. 验证
MySQL 数据库
通过 MySQL-front 远程访问 MySQL 服务器,点开名为 qqq555 数据库,在这里可以看到,qqq555 数据库已经生成了一个名称为 group1 的表格。双击 group1 表格,并选择数据浏览器,这里可以看到 switch、value 的数值已经存储到数据库并在不断更新。因此我们可以验证,HMI/网关 的历史数据已经成功存储到 MySQL 数据库。