虹科工业树莓派:基于Node-RED的工业物联网改造

1. 工业树莓派与Node-RED简介

1.1 工业树莓派

虹科工业树莓派RevolutionPi是一种DIN导轨安装的小型工控机和智能网关。RevolutionPi(简称RevPi)具有一整套IO和总线模块,可以与所有常见的模拟和数字传感器、执行器和总线系统以及基于TCP-IP的网络进行通信。RevPi运行Linux操作系统,这使得它成为一个功能多样的多功能解决方案。

与经典的可编程逻辑控制器(PLC)相比,软PLC没有一个用于进行编程的预定义软件。Revolution Pi可以用几乎所有语言进行编程:高级语言(例如C,C#,Java,PHP,Python),经典的自动化解决方案(例如Codesys)或图形工具(例如NodeRed)。这就是巨大的潜力所在:您几乎可以在RevPi上运行任何东西。

1.2 Node-RED

Node-RED是构建物联网(IoT)应用程序的强大工具,它使用可视化的编程方法,允许开发人员将预定义的代码块(称为“节点”)连接在一起以执行任务。当连接在一起时,通常由输入节点,处理节点和输出节点组成的连接节点构成一个“流”。RevPi Core模块已经内置Node-RED运行环境,本文将详细介绍Node-RED基本概念与编程逻辑,以及可能的应用方案。

2. Node-RED基本概念

与常见的编程语言比如C,Java,Python不同,Node-RED是一种可视化编程工具,可以快速实现代码块的复用,简单快捷地构建您的IIOT程序。它最重要的几个基本概念是节点、消息结构和“流”。

2.1 节点

节点是指封装好的代码块,通常分为输入节点、处理节点和输出节点三种。

输入节点可以产生消息,并将信息传送给下一个节点。这类节点最重要的特征是只有输出端,没有输入端。

处理节点可以接受来自上一个节点的消息,并对收到的信息进行处理,然后将处理后的信息输出到下一个节点。这类节点通常同时具有输入端和输出段。

输出节点消耗消息,通常只有输入端,可以接收来自其它节点的消息并执行相应操作。通常此类节点具有输出功能,即通过各种协议或方式将Node-RED流中的消息输出。

2.2 消息结构

各节点之间通过称为msg的JavaScript对象传输消息,其典型结构为:

其中最重要的是payload,它是指一条消息的有效负载,一般常见的节点都会涉及到payload内容的操作。其它的都是可选项,可以根据需要自行决定。

2.3 “流”

Node-RED是一种可视化编程工具,可以在可视化面板上将输入节点、处理节点以及输出节点以一定的顺序连接起来,消息在各节点之间流动,这就形成了一个“流”。用户可以通过“流”实现各种功能,对于一些比较复杂的流程也可以将其包装成一个“子流”,简化程序结构。

3. Node-RED应用方案

刚刚简单介绍了Node-RED的基本概念,简单来说Node-RED就是连接不同功能的代码块以实现需要的功能。而Node-RED被称为构建工业物联网的强大工具,能够实现哪些功能呢?下面我举几个简单的例子,可供参考。

3.1 简单的逻辑控制

虹科RevPi针对Node-RED制作了专属节点,可以通过RevPi的Node-RED节点直接控制附属的IO模块或者网关模块。所以可以通过Node-RED建立逻辑关系,从而实现小型控制的功能。比如您可以控制电机的启停、继电器的开闭等等。

Node-RED具有各种各样包装好的节点,可以直接使用。如果没有满足需求功能的节点也可以通过function节点编写自己的功能节点,使用的语言是JavaScript。

3.2 边缘智能网关与数据上云

Node-RED支持很多种传输协议,如串口、TCP、MQTT、HTTP、Modbus、OPC UA、S7等。可以借助于这些节点,采集连接到树莓派的传感器或者PLC等设备的数据并对数据进行处理,然后通过其它协议发送出去,从而可以对接您的SCADA系统或者进行串口虚拟化,协议转换等。工业树莓派可以扩展常见工业以太网和现场总线的网关模块,您可以利用这些模块接入到OT网络中,获取数据之后,再通过Node-RED进行协议转换或数据上云等。

当然不是所有的节点都是预装好的,比如Modbus或者OPC UA功能的节点,您需要在节点管理面板中搜索安装。

Node-RED作为一个开源平台,拥有强大的开发者社区论坛,您可以在其中找到各种功能节点。

3.3 HMI仪表盘

Node-RED还具有一些Dashboard节点,您可以借助它建立您自己的HMI界面。Dashboard节点可以自动生成一个基于web的界面,这样您不仅可以在本地查看设备运行状态,也可以进行远程监控。如果您想要升级工厂,使得产线设备运行状态更加直观,Node-RED是一个很好的选择。

上图是一个简单的示例,不是很精致,只是简单展现一些基本功能。您可以根据实际需要建立自己的仪表盘界面。

4. 总结

通过Node-RED可视化编程工具可以大大减少您的开发工作量。通过其它程序大量代码实现的工作,在这里只需要几个节点就可以配置完成。如果您需要进行小型控制、采集设备或者传感器数据、边缘计算、协议转换、数据上云、建立HMI界面、远程数据监控等等,Node-RED都大有用武之地。关于Node-RED的具体应用示例,可以参考以前的文章。