> 技术文档 > 如何使用Node-RED采集西门子PLC数据通过MQTT协议实现数据交互并WEB组态显示_node-red连接西门子plc发到mqtt

如何使用Node-RED采集西门子PLC数据通过MQTT协议实现数据交互并WEB组态显示_node-red连接西门子plc发到mqtt


需求概述

本章节主要实现一个流程:使用纵横智控EG网关通过Node-red(可视化编程)采集PLC数据,并通过MQTT协议和VISION(WEB组态)实现数据交互。

以采集西门子PLC为例,要采集的PLC的IP、端口和点位地址如下:

PLC

S7-1200

IP

192.168.0.59/102

地址

数据类型

属性

I0.0

Boolean

只读

I0.1

Boolean

只读

DB1.DBD0

Float

读/写

DB1.DBD2

Float

读/写

(!!!本章节不限制PLC类型,全部PLC通用,演示使用的西门子S7-1200)

需求分析

Node-red配置:

第一步:采集PLC数据

第二步:创建MQTT Broker(MQTT服务端)

第三步:创建MQTT发布消息

第四步:创建MQTT订阅消息(需要写变量时创建)

VISION配置:

第一步:创建MQTT设备

第二步:创建MQTT订阅消息

第三步:创建MQTT发布消息(需要写变量时创建)

需求实现

Node-red配置

第一步:采集PLC数据

此处为采集PLC数据,不在过多赘述,可参考PLC对接案例。

此处为语雀内容卡片,点击链接查看:西门子 S7 协议 · IOTRouter

此处为语雀视频卡片,点击链接查看:WEB组态-西门子PLC数据采集2.mp4

💡注入节点用于设置采集周期,根据实际情况调整周期时间。

第二步:建立MQTT Broker(服务端)

使用MQTT Broker节点创建一个本地MQTT服务,创建MQTT服务端的主要目标是搭建一个消息传递平台,该平台能够Node-redVISION作为客户端进行无缝的数据交互。

本示例设置为:端口1883。因为是本机通信,MQTT Client在配置服务器地址时请填:127.0.0.1。

此处为语雀视频卡片,点击链接查看:WEB组态-建立MQTT Broker.mp4

第三步:创建MQTT发布消息

发布消息,即将Node-red采集到的数据,通过MQTT发送给VISION。主题内容可自定义,本示例设置发布主题为:/send

此处为语雀视频卡片,点击链接查看:WEB组态-建立MQTT发布(2).mp4

第四步:创建MQTT订阅消息(不需要控制可以忽略此步骤)

订阅消息,即接收来自VISION组态发送的控制消息并响应给PLC。本示例接收DB1.DBD0DB1.DBD2的控制命令。 订阅主题设置为/X/#形式,可以接收所有符合/X/X格式的发布主题的数据。这种设置便于通过一个订阅主题同时接收多个不同发布主题的数据。

此处为语雀视频卡片,点击链接查看:WEB组态-创建MQTT订阅.mp4

注意:由于写入成功后,PLC节点也会发送响应信息,为避免将写成功的响应误认为是采集数据,需要添加条件判断以过滤数据。可参考以下设置进行配置:

此处为语雀视频卡片,点击链接查看:WEB组态-过滤写响应1.mp4

VISION配置

第一步:创建MQTT设备

创建设备选择MQTT协议,填好MQTT参数,如果连接正常,左下角会有绿色指示灯常亮。

此处为语雀视频卡片,点击链接查看:WEB组态-创建MQTT设备.mp4

第二步:创建MQTT订阅消息

订阅消息,即接收来自Node-red发布的消息。

点击搜索按钮,可以查看到当前可用的主题及其消息内容,选择Node-red创建的MQTT发布主题的消息进行订阅。

此处为语雀视频卡片,点击链接查看:WEB组态-订阅数据1.mp4

第三步:创建MQTT发布消息(不需要控制可以忽略此步骤)

发布消息,即向Node-red发送控制命令。 本示例中需要控制DB1.DBD0DB1.DBD2两个变量,因此需要创建两个发布数据标签,发布主题格式按照Node-red配置第四步设置的/rend/X形式进行配置即可。

注意:向有效荷载添加属性的键值需要设置和Node-red采集PLC时配置的数据名称一致。

此处为语雀视频卡片,点击链接查看:WEB组态-发布数据1.mp4

至此整个读写流程的数据创建就已经创建完成,接下来只需要将控件和数据标签绑定即可实现数据的监测。

👇👇了解更多👇👇