在Ubuntu中安装node-red:

[highlight lanaguage="语言"]
sudo apt-get install nodejs
sudo apt-get install npm
sudo npm install -g node-red
[/highlight]

在Windows中安装node-red:

下载 Node.js安装包并运行

在Power Shell中分别输入

[highlight lanaguage="语言"]
node --version
npm --version
[/highlight]

若输出版本号则安装成功

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

[highlight lanaguage="语言"]
npm install -g --unsafe-perm node-red
[/highlight]

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

在终端中输入:

[highlight lanaguage="语言"]
node-red
[/highlight]

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

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

编辑S7命令:

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

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

Variables地址填写方式:

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

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

编辑MQTT命令:

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

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

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

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

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

大致部署如图:

PLC处设置:

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

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

阿里云服务器处设置:

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

[highlight lanaguage="语言"]

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

[/highlight]

后台启动EMQX:

[highlight lanaguage="语言"]

emqx start

[/highlight]

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

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

[highlight lanaguage="语言"]

sudo ufw allow 1883,8083,18083

[/highlight]

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

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

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

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

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

届ける言葉を今は育ててる
最后更新于 2023-03-18