AI 摘要

使用Node-Red与西门子PLC进行通信并将数据上传至云服务器的步骤可分为几个主要部分:首先,在Ubuntu或Windows中安装Node-Red,并在浏览器中打开Node-Red界面。接着,安装S7模块并配置S7命令,包括添加S7 endpoint节点和编辑PLC地址以及变量地址信息。然后,配置MQTT命令,设置主题、服务器地址以及安全验证信息。最后,进行PLC和阿里云服务器的相关设置,包括在PLC中设置数据块和变量,以及在服务器端安装和启动EMQX服务器、打开端口、配置防火墙等。最终,在Node-Red界面点击部署即可实现通信和上传功能。

在Ubuntu中安装node-red:

sudo apt-get install nodejs

sudo apt-get install npm

sudo npm install -g node-red

在Windows中安装node-red:

下载 Node.js 安装包并运行

在Power Shell中分别输入

node --version npm --version

若输出版本号则安装成功

安装Node-Red模块,在Power Shell中输入

npm install -g --unsafe-perm node-red

运行Node-red并安装S7模块:

在终端中输入:

node-red

在浏览器中输入 {安装有node-red的设备的地址}:1880

在界面右上角 三杠-节点管理-控制板-安装 中搜索 node-red-contrib-s7 并安装第一个

编辑S7命令:

在主界面左侧找到 S7 control 并拖动至流程区后双击

在弹出的属性界面 PLC 处选择添加新的 S7 endpoint 节点,并点击后面的笔编辑,在Address处输入PLC地址,可在Cycle time处设置发送周期

img
img

Variables地址填写方式:

n 为数据区域偏移量 x 为数据字节偏移量 y 为数据位偏移量 确保 “STRING” 或 “S” 的数据字节偏移量非 0,length 替换为字符串长度

img

拖出 S7 in 命令,PLC处选择刚才新建的PLC,Mode选择 All variables (读取全部变量,可用 Debug 命令查看) 拖出S7 out 命令,PLC处选择刚才新建的PLC,Variable选择要写入的变量

img
img

编辑MQTT命令:

在主界面左侧找到 mqtt out 并拖动至流程区后双击编辑

主题和名称填写OUT,在服务端处新建并填写服务器公网IP地址

img
img

安全处的用户名和密码为部署在阿里云上的MQTT服务器的密码

(默认用户名为admin,密码为password)

之后拖出 mqtt in 命令选择刚才新建的服务端,主题和名称填写INT

大致部署如图:

img

PLC处设置:

PLC在组态后 设置-防护与安全-连接机制 处勾选允许来自远程对象的PUT/GET访问

新建DB1数据块,在数据块属性中取消勾选优化块的访问并新建变量

img

阿里云服务器处设置:

云端(ubuntu18.04)安装EMQX服务器:

curl https://repos.emqx.io/install_emqx.sh | bash

后台启动EMQX:

emqx start

在阿里云控制台的安全组中添加1883,8083,18083端口

若服务器装有ufw防火墙,需在终端打开相应端口

sudo ufw allow 1883,8083,18083

通过浏览器访问服务器:IP:18083

默认用户名:admin 默认密码:public

在界面左侧工具-Websocket-连接中更改主机地址为服务器IP并点击连接

在界面左侧工具-Websocket-订阅中分别输入主题名称( INT 和 OUT )并点击订阅

在Node-Red网页界面右上角点击部署即可实现阿里云与本地PLC通信

img