Node-Red在工业物联网的应用研究

2022-09-06 02:52卢小锦
今日自动化 2022年8期
关键词:云端联网服务器

卢小锦

(广东开放大学广东理工职业学院,广东广州 510091)

随着工业4.0的到来,物联网和大数据的应用成为制造业升级改造的重要技术,如何高效解决异构工业通信网络的互联互通成为了重要的研究课题。Node-Red 正是解决这一难题的利器。Node-Red 基于Node.js 开发,将应用程序封装成节点模块,每个节点都有特殊的功能,通过连线实现节点间数据流的交互,简单易用,更重要的是Node-Red 有一个开放的生态环境,提供了丰富的API,支持MQTT,OPC UA,TCP 等众多通信协议,支持在PC、嵌入式平台以及PLC 等终端运行,支持阿里云、亚马逊等云平台,具有良好的扩充性和开放性。Node-Red 的这些特点使得它被用作物联网、边缘设备以及工业云数据流控制的开发工具,并已经在工业物联网、工业控制等场合得到广泛的应用。包括西门子,研华等知名企业的产品均支持Node-Red。

本文以工业物联网应用为场景,通过设计开发Node-Red 的OPC UA、MQTT 以及MYSQL 应用实例,实现PLC 的数据采集和交互,以及PLC 数据向云端、数据库的传输。

1 系统框架设计

在工业物联网中,常常需要对控制器、传感器等现场设备进行数据采集,并通过网络进行数据传输,最终将数据传输到云平台或者数据库以便进行数据的分析处理,实现对现场设备运行状态的跟踪、记录和分析。基于这个需求,本文对系统的组成、主要功能和实现方案进行了如下设计。

(1)系统的组成。系统硬件主要包括SIMATIC S7-1500 PLC,SIMATIC IOT2040工业物联网智能网关以及数据库服务器,云端选用阿里云ECS 服务器。

(2)系统的主要功能。SIMATIC IOT2040 作为系统数据交互的中心,可以从SIMATIC S7-1500 PLC采集数据以及向其发送数据;可以将采集的数据发送到云端;可以将采集的数据存入数据库。

(3)系统的实现方案。使用Node-Red 工具开发相关应用。使用Node-Red 的OPC UA 模块设计SIMATIC IOT2040 与SIMATIC S7-1500 PLC的通信程序;使用Node-Red 的MQTT 模块设计SIMATIC IOT2040 与阿里云的通信程序;使用Node-Red 的MYSQL 模块设计SIMATIC IOT2040与数据库的通信程序。系统框架如图1所示。

图1 系统框架图

2 IOT2040与S7-1500 PLC的通信

2.1 IOT2040与S7-1500 PLC的通信方案设计

2.1.1 设备介绍

SIMATIC IOT2040 是一款支持多种高级编程语言的工业物联网智能网关,广泛应用于现场设备数据的采集和传输。SIMATIC IOT2040有丰富的接口,提供了2个USB 接口(USB2.0,USB-Client 各一个),2 个串行接口(RS232,RS485 各1 个),2 个工业以太网接口,常被用作云端,IT 层和生产层之间的网关,可实现数据双向通信,在云平台和现场设备间实现数据的传输。SIMATIC IOT2040 支持Node-Red,具有良好的开放性,可方便地实现各种工业应用定制方案。

2.1.2 通信方案设计

SIMATIC S7-1500 固件自V2.0 版本开始支持OPC UA 服务器功能,可以通过SIMATIC S7-1500 CPU 上集成的PROFINET 接口访问OPC UA 服务器。而SIMATIC IOT2040可以通过Node-Red 的OPC UA模块实现与OPU CA 通信。因此,本文采用OPC UA协议作为SIMATIC IOT2040 和SIMATIC S7-1500 的通信协议。

OPU UA 是一项开源的工业通信标准,独立于平台,具有良好的可扩展性和可靠性,被广泛应用在工业现场设备之间的通信,作为工业物联网的解决方案。OPC UA 协议将通信对象分为客户端和服务器端。本文中,SIMATIC S7-1500 PLC 作为服务器端,SIMATIC IOT2040作为客户端。

2.2 S7-1500 PLC OPC UA服务器功能激活

SIMATIC S7-1500自带OPC UA 服务器功能,在使用的时候需要进行相应的配置激活功能,主要配置步骤如下:①在TIA Portal 软件创建SIMATIC S7-1500工程项目实例(固件版本需在V2.0及以上版本);②打开设备视图,选择相应的PLC 设备;③打开OPC UA“服务器”选项卡中的“常规”选项;④勾选“访问服务器”中“激活 OPC UA 服务器”的复选框;⑤记录“服务器地址”中的“地址”(该IP 地址在SIMATIC IOT2040 OPC UA 客户端配置中需要用到);⑥勾选“标准服务器接口”中“启动SIMATIC 服务器标准接口”的复选框,在“选项”中根据实际应用需要配置连接数和端口;⑦打开“控制参数”选项卡,勾选“常规”属性中的“可从OPC UA 访问DB”复选框。配置好后便可通过OPC UA 访问PLC 变量。

2.3 IOT2040 OPC UA客户端功能配置

SIMATIC IOT2040 OPC UA 客户端功能配置主要包括:在IOT2040 安装Yocto Linux 操作系统;IOT2040 IP 地址设定;Node-Red 安装与配置;OPC UA 节点安装。

2.3.1 Yocto Linux操作系统安装

在SIMATIC IOT2040安装Yocto Linux 操作系统需要用到以下设备:装有企业版WIN7系统的PC 以及Miro-SD 存储卡。用到软件工具有:Win32磁盘映像工具。安装过程如下:①在西门子官网下载Yocto Linux 的镜像文件“Example_Image_V3.1.1”;②将Micro SD-Card 插入PC,使用Win32磁盘映像工具打开镜像文件,并写入目标Micro SD-Card。完成烧写工作后,将Micro SD-Card 装入SIMATIC IOT2040插槽并通电启动。

2.3.2 连接和登录SIMATIC IOT2040

用以太网线缆将PC 的以太网端口与SIMATIC IOT2040的X1P1以太网端口连接,运行PuTTY 工具,在“Session”选项卡中选择SSH 作为连接类型,IP地址设为192.168.200.1,端口设为22,点击“OPEN”即可连接SIMATIC IOT2040并弹出登录对话框,默认用户为root,无密码(如需设置可以在命令行键入“passwd”指令进行设置)。

2.3.3 IP地址的设定

SIMATIC IOT2040默认IP 地址为192.168.200.1,可根据实际需要进行设置。IP 地址设置的方法如下:①在PuTTY 工具命令行输入“iot2000setup”启动IOT2040 配置程序;②在“setup”菜单选择“Networking”;③在“Networking”菜单选择“Configure Interface”;④在“Configure Network Interface”菜单中的“eth0”(eth0对应X1P1端口)栏目键入新地址(如:192.168.200.20);⑤在PuTTY工具命令行输入“reboot”命令重启IOT2040完成设定。

2.3.4 Node-Red 启动配置及OPC UA模块的安装

(1)Node-Red 的自动启动配置。应用中,一般需要在SIMATIC IOT 2040启动时自动启动Node-Red。Node-Red 的自动启动设置方法如下:①启动IOT2040配置程序;②在“setup”菜单选择“Software”;③选 择“Software” 菜单中的“Manage Autostart Options”;④在“Advanced options”菜单中勾选“Auto Start Node-Red”的复选框;⑤在PuTTY 工具命令行输入“reboot”命令重启IOT2040完成配置。配置好后,Node-Red 将在IOT2040启动的时候自动启动。

(2)OPC UA 模块安装.SIMATIC IOT 2040固件在V2.1.2 版本之后已经预先安装Node-Red,不过OPC UA 模块需要另外安装。具体步骤如下:①在PuTTY 工具命令行输入“cd/usr/lib/node_modules”指令进入安装目录;②在命令行输入“npm install Node-Red-contrib-opcua”指令安装Node-Red OPUC UA 模块。

在PuTTY 工具命令行输入“node/usr/lib/node_modules/Node-Red/red &”指令启动Node-Red,随后在浏览器地址栏输入SIMATIC IOT2040 的ip 地址和端口(如:http://192.168.200.20:1880)登录Node-Red 页面,如果安装成功,页面左侧栏目将出现OPCUA 节点。

2.4 Node-Red OPC UA通信程序

SIMATIC IOT2040 的OPC UA 通信通过Node-Red 节点实现,通信程序的主要功能包括:①SIMATIC IOT2040可通过订阅方式读取SIMATIC S7-1500 PLC 的数据;②通过写方式向SIMATIC S7-1500 PLC 写入数据;③通过Node-Red 的inject节点注入流;④通过Node-Red dashborad 模块的dropdown 节点设置传输给SIMATIC S7-1500 PLC 的测试数据;⑤通过Node-Red dashborad 模块的text 节点显示采集回来的数据以及传输给SIMATIC S7-1500 PLC 的测试数据。

2.4.1 SIMATIC S7-1500 PLC数据读取

SIMATIC S7-1500 PLC 数据读取程序用到inject,OpcUa-Client,text 等3个节点,如图2所示。

图2 PLC数据读取程序

inject 节点可实现手动或者周期性向流中注入消息,支持布尔、数值、字符串等数据类型。本文中,inject 节点属性中的“payload”设置为字符串类型,每隔1s 周期性注入消息。

OpcUa-Client 节点可通过inject 节点的TOPIC以及inject 节点控制的OpcUa-Item 节点注入消息。OpcUa-Client 节点的具体配置如下:①将OPC UA 服务器的地址及端口填入Endpoint,如:opc.tcp://192.168.200.21:4080;②将Action 设置为SUBSCRIBE;将Interval 设置为1s。设置好后,该节点将通过订阅的模式读取PLC 的数据。

text 是dashboard 的输出文本框节点,用于显示接收到的数据。

2.4.2 SIMATIC S7-1500 PLC数据写入

SIMATIC S7-1500 PLC 数据写入程序用到dropdown,OpcUa-Item,OpcUa-Client,text 等几个节点,如图3所示。

图3 PLC数据写入程序

dropdown 节点是dashboard 的下拉菜单节点,其配置值将以msg.payload 的形式返回,用于设定向OPC UA 服务器发送的测试数据。

OpcUa-Item 节点的Item 项需包含有效的OPC UA 地址,Type 设置为Int16,Value 留空,程序执行时自动把dropdown 设置的值作为数据输出。

OpcUa-Client1节点通过写模式将数据写入OPC UA 服务器,OpcUa-Client2 节点通过订阅模式读取写入OPC UA 服务器的值,并通过text 节点显示。OpcUa-Client1和OpcUa-Client2节点的Endpoint 均设置为opc.tcp://192.168.200.21:4080;OpcUa-Client1的Action 设置为WRITE;OpcUa-Client1的Action 设置为SUBSCRIBE。

3 向数据库传输数据

Node-Red 支持多种数据库,本文使用的是MYSQL 数据库,用到mysql 节点。在Node-Red 安装mysql 节点的具体方法如下:①在Node-Red 页面打开用户设置菜单中的控制板;②点击“安装”选项卡,搜索“Node-Red-node-mysql”模块并点击安装。

实现向数据库传输数据的程序用到function 节点(名字为insert)和mysql 节点,如图4所示。

图4 数据库数据传输程序

function 节点可以编写JavaScript 代码,实现对接收到的信息的处理。function 节点输入消息的正文保留在msg.payload 属性中,可以通过以下代码构造向数据库写入数据的SQL 语句:

msg.topic="INSERT INTO iot2040Table(value)VALUES("+msg.payload+");";

return msg;

mysql 节点可以实现对数据库的基本访问。需要在节点的属性选项卡配置数据库的地址,端口,用户名,密码,数据库名称等信息。

4 向云端传输数据

4.1 在阿里云部署mqtt-broker

MQTT 是一款应用广泛的物联网通信协议,在阿里云使用MQTT 服务有两种方案。①通过租用方式,我国主流的公用云平台均提供MQTT 租赁服务。②使用开源的MQTT 组建进行搭建。本方案使用第二种方法,利用轻量级的mosquitto 开源项目搭建MQTT 服务器,目前最新版为mosquitto-2.0.9。

在阿里云部署mqtt-broker 的具体过程如下:

①使用PuTTy 工具登录阿里云ECS 服务器,在PuTTy 工具命令行输入“wget http://mosquitto.org/files/source/mosquitto-2.0.9.tar.gz”指令下载软件包;②执行“tar xzvf mosquitto-2.0.9.tar.gz”指令进行解压;③依次执行“cd mosquitto-2.0.9”、“make”、“make intall”指令完成编译安装;(4)执行“mosquitto -v”指令启动mosquitto。mosquitto 启动成功后即可查看到服务的监听端口以及IP 地址。

4.2 云端数据传输程序

向云端传输数据的程序使用mqtt out 节点实现。打开mqtt out 节点属性菜单中的Connection 标签,将阿里云ECS 服务器的地址、端口号写入配置项。将MQTT 服务质量QoS 值设为0。设置好后该节点就可以连接到MQTT代理并发布消息。云端数据传输程序,如图5所示。

图5 云端数据传输程序

5 结论

本文以工业应用为场景,对Node-Red 的物联网应用开发进行了研究,利用Node-Red 的OPC UA 节点、MQTT 节点以及MYSQL 节点编写应用程序,成功实现了SIMATIC IOT2040 智能网关与SIMATIC S7-1500 PLC 的数据交互;成功把PLC 数据上传至云端;成功将PLC 数据存入数据库。基于Node-Red 的物联网应用开发简单高效且功能强大,加之其生态开放,具有很强的应用前景。理论上,Node-Red 可以运行在任何移植了Linux 的平台,因此,如何在自己开发的嵌入式平台实现Node-Red 的物联网应用开发,将是更值得研究的课题。

猜你喜欢
云端联网服务器
“身联网”等五则
《物联网技术》简介
《物联网技术》简介
云端之城
通信控制服务器(CCS)维护终端的设计与实现
抢占物联网
中国服务器市场份额出炉
行走在云端
云端创意
得形忘意的服务器标准