百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

国内首个开源物联网边缘工业协议网关软件,Neuron v2.0产品解读

ccwgpt 2024-10-11 11:20 18 浏览 0 评论

作者|Joey,Neuron产品总监

不久前,我们宣布了物联网边缘工业协议网关软件Neuron正式开源的消息。随着Neuron v2.0的正式发布,大家现在已经可以在GitHub仓库中找到这一开源项目,根据自己的需求进行定制和修改。

与v1.x相比,Neuron v2.0无论是在产品功能定位还是架构设计上都进行了较大的改动。今天这篇文章将为大家进行详细解读,帮助大家更好地理解和使用Neuron v2.0。

项目简介

Neuron是运行在各类物联网边缘网关硬件上的工业协议网关软件,旨在解决工业4.0背景下设备数据统一接入难的问题。

通过将来自繁杂多样工业设备的不同协议类型数据转换为统一标准的物联网MQTT消息,实现设备与工业物联网系统之间、设备彼此之间的互联互通,进行远程的直接控制和信息获取,为智能生产制造提供数据支撑。

Neuron支持同时为多个不同通讯协议设备、数十种工业协议进行一站式接入及MQTT协议转换,仅占用超低资源,即可以原生或容器的方式部署在X86、ARM等架构的各类边缘硬件中。同时,用户可以通过基于Web的管理控制台实现在线的网关配置管理。

发展历程

Neuron的产品雏形始于工业物联网IIoT尚在起步阶段的2018年,那时IIoT场景中的数据采集很多都是通过SCADA去完成,简单说就是在SCADA中增加将数据上报到IIoT平台的功能,从而实现设备操作员操作设备的数据同步实时上报。

所以我们最早将Neuron定位成SCADA软件+MQTT协议数据上报功能。在功能上,我们选择了单连接设备,因为一般SCADA软件都只会连接一台PLC或设备,但可替换各种协议,以便对接不同品牌PLC或设备,进行数据交换。

一般情况下,SCADA必须具有一定基本数据处理能力,包括警报系统、业务规则处理及历史数据。这些功能在Neuron v1.x中均得到实现。

Neuron v1.0发布后,我们持续进行着维护与升级,也根据很多用户的需求反馈陆续增加了不少功能,包括Dashboard页面重整优化、API增加JWT鉴权认证、新的驱动、DTU Server模式连接、字符串支持、与EMQ其他产品集成等等。

Neuron开始被广泛应用到油田服务、半导体生产等工业项目中,发挥了设备数据采集的作用。

随着用户与应用场景的不断增加,我们逐渐发现最初多协议、单连接的设计开始无法适应多样的场景需求。以油田服务数据采集为例,要将所有油井数据汇聚到同一服务器上,需要Neuron同时提供多个连接到不同地区的油井。这是流程型工业生产,和离散型工业利用SCADA批量生产的情况有很大不同。而为了满足这些场景需求提供多连接功能,则需要在设计上重构整个Neuron的架构。

同时,有越来越多的用户希望在Neuron的基础上进行私有协议、个性化功能等的二次开发,而现有的Neuron v1.x为闭源项目,没有将驱动程序的数据交换做成统一接口,小部分驱动程序代码放在核心层内。

除了多连接和定制开发需求,我们还注意到Neuron v1.x中的SCADA相关功能(如工业级警报系统、业务规则)并未得到用户很充分的使用。Neuron更多地被应用于与EMQ生态内其他产品(如云原生分布式MQTT消息中间件EMQX和轻量级物联网边缘分析/流式处理软件eKuiper)集成,构建一套完整的数据采集、边缘计算与云边协同方案。因此我们也开始思考是否需要对Neuron的部分功能进行精简,使其更轻巧、更专注于数据采集功能。

综合以上诸多考虑,我们决定从v2.0开始对Neuron的架构进行重新设计,同时将其开源,以满足更多用户的多样化需求。

全新设计理念与架构

随着技术的演进,现代的硬件大都采用是多核CPU架构,即便是用在嵌入式系统中比较低端的ARM和Risc-V架构的CPU,也都拥有多核心的芯片。因此,我们能够利用这些多核心CPU能力去处理并发任务。

在Neuron v2.0架构设计中我们也充分考虑支持多核多线程。为此,我们使用了NNG这个基础消息库,这是一个多线程的IO处理和消息处理的异步并发库,能够充分利用CPU的多个核心。

我们采用了星型总线这一组织形式:有一个消息路由中心,该消息路由基于NNG提供高效率的消息转发。消息的发送和接收是线程间通讯,使用共享Buffer和智能指针,没有任何的内存拷贝,具有非常高的效率。围绕着这个路由中心,是各个具体功能的节点,由Adapter和Plugin组成。这些节点既可以是内置固有的,如轻量级的WebServer;也可以是动态增加的,如各种设备驱动、MQTT客户端、eKuiper接口等。

这样的设计隔离了各个设备驱动和北向应用的功能模块之间的耦合,另外采用订阅-发布机制来实现数据流的分发和聚合,使得Neuron v2.0有着极大的灵活性。用户可以根据现场的工作情况动态增加和减少设备驱动的节点,具有良好的可配置性

另外,当运行Neuron v2.0的硬件CPU性能好、核心多、内存大时,Neuron v2.0能支持更多的设备驱动节点、海量的数据点位、更大的数据吞吐量、更低的响应时间,具有良好的系统可伸缩性

Neuron v2.0采用了插件机制来支持多样化的用户功能需求,用户可以根据应用场景的功能需求动态的加载不同功能的插件,得到有不同功能的节点。

当设备驱动有Bug需要修复,或者有新的功能需要升级时,可以通过动态更新插件来解决问题,升级新功能。每个节点的运行是独立的,当升级一个节点的插件时,不会影响其他节点的运行,也不需要重新启动Neuron 2.0。

Neuron v2.0亮点特性

  • 支持多种工业设备协议

南向支持从各类品牌PLC制造商到全球技术标准委员会发布的数十种协议接入,包括:西门子、罗克韦尔自动化、欧姆龙、三菱、Modbus、OPC、Siemens、Mitshibishi、Omron、IEC、EtherNet/IP等。北向支持互联网协议,如MQTT、HTTP、HTTPS等。

  • 支持同时连接多个设备

支持南北向同时接入多个相同或不同协议的设备,无需购买大量硬件网关,只需部署一套Neuron服务器即可对海量设备进行管理。同时支持运行期更新设备驱动,可随时动态更改应用和驱动,便于及时响应业务需求调整。

  • 超低内存占用

Neuron具有极少的内存占用和极低的CPU占用,既可以在低端嵌入式Linux设备中运行,也可以运行在有较大内存的Linux主机中,以支持大规模的连接设备和海量的数据点位。同时具有良好的可伸缩性,可满足不同运行资源条件下的需求。

  • 插件服务拓展

通过加载更多的插件模块来扩展更多的功能服务,例如北向数据处理引擎和南向PLC驱动程序。支持Neuron运行期更新设备驱动插件。

  • 提供SDK二次插件

开源后用户也可基于Neuron插件框架进行二次开发,定制自己的私有协议。这样满足了用户在不同项目中对私有协议与其他工业厂商协议的扩展需求。

  • 基于Web的人机界面

通过友好的Web UI提供可视化的网关配置以及采集数据查看功能。用户可以很方便地使用浏览器直接在本地网络内查看设备的状态和数据,并可以通过Web UI来控制和配置Neuron。

  • Restful API控制和配置

内置有轻量级的Web Server,可以通过浏览器来配置和控制、监听设备,或通过API服务控制工业设备或更改参数或标签配置。

  • 集成流处理引擎

在集成的eKuiper引擎中建立流式SQL脚本,通过AI/ML、控制逻辑、公式和交易,可以处理所有从各种连接源收集的工业数据。

  • 高度融合EMQ产品生态

Neuron可与EMQ其他产品高度融合,包括EMQX、NanoMQ、eKuiper(由EMQ发起,现归属于LFEdge基金会维护运营)等。无缝产品集成使用体验,统一管理控制台,实现在线多节点管理与产品配置,安全控制,统一用户认证、操作权限控制。

未来规划

未来Neuron v2.0将与v1.x分别独立运营维护,EMQ对现有的商业版Neuron v1.x仍提供缺陷修复与维护,但后续将不再基于1.x版本提供功能更新。

在后续的2.1版本中,我们将实现eKuiper流式处理引擎与Neuron的集成,eKuiper的功能将会统一无缝集成在Neuron的Dashboard页面

和eKuiper集成后,Neuron将成为一个功能强大且非常轻巧的边缘数据流处理服务器。用户可以为自己的控制逻辑、公式和事务在eKuiper内创建一些SQL规则。

eKuiper流处理引擎会对每个由Neuron采集到的数据流进行每秒数个循环扫描,实现用户定义的业务逻辑,输出的数值可以发回PLC进行反控。这些SQL脚本支持在机器运行时进行即时修改,业务处理和计算基本上已在本地边缘侧完成并且存入回本地eKuiper连接数据库。用户亦可以选择将数据发送到IIoT平台,并在发送前进行预处理。

在2.2版本,我们则计划提供统一驱动接口包SDK,用户可通过其自行为私有协议开发驱动插件,或针对某些特定行业、功能去开发应用插件。

写在最后

Neuron是我们开发团队十几年行业经验的结晶。我们的目标是使Neuron更加可靠、灵活、易用、可扩展、易迁移,尽可能多地适应各类自动化系统与工业设备,帮助解决工业物联网中海量异构设备的连接问题。同时与EMQ生态内其他产品一起,组成构建现代工业物联网平台的坚实数据基础设施,推动工业物联网行业发展。

相关推荐

NestJS入门教程系列一

介绍Nest(NestJS)是用于构建高效,可扩展的Node.js服务器端应用程序的框架。它使用渐进式JavaScript,内置并完全支持TypeScript(但开发人员仍然能够使用JavaScrip...

【推荐】一个网盘资源搜索与转存工具,支持移动端与PC端!

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍CloudSaver是一个基于Vue3和Express的网盘资源搜索与转存开源实用工具。它支持...

Appium原理精讲

目前使用Appium新版本和旧版本的企业数目都很多,而两个版本的安装过程和api的使用又有较大的区别。但是无论表面上的东东如何变化,内部原理都是一样的。在这里我给大家介绍一下appium的核心,增进大...

Kubernetes最小部署单元Pod

一、Kubernetes与Pod简介在当今云计算和容器化技术盛行的时代,Kubernetes已然成为容器编排领域的中流砥柱。它是一个开源的容器编排平台,由Google基于其内部使用的Bo...

最常用的四种跨域解决方案

前置知识什么是跨域?浏览器发送的请求地址(URL)与所在页面的地址不同(端口/协议/域名其一不同)。简言之,浏览器发出的请求url,与其所在页面的url不一样。此时,同源策略会让浏览器拒收服务器...

Bolt.New —— 全栈AI Web自动编程

Bolt.New是由StackBlitz公司推出的,全栈AI工具,代码编辑、运行、部署,通通一站式搞定。它使用WebContainers技术,无需任何本地安装或配置,在浏览器中,就可以运行完整的No...

Nodejs Express新手教程&高手进阶

NodejsExpress新手教程&高手进阶Express是一个NodeJS平台的框架,主要用于构于Web服务器项目。本文将通过示例介绍适合新手入门的Express基础使用,以及高手进阶知识,如:c...

Express.js 创建Node.js Web应用

Express.js是一个基于Node.js的Web应用框架,框架的设计目的是构建应用的架构和简化应用的开发。框架会解决一些通用的问题,在Express.js中,Express框架会处理如:中间件、代...

JavaScript 的 Express.js 功能及应用场景详解

Express.js是一个基于Node.js的轻量级Web应用框架,主要用于快速构建服务器端应用和API。它的核心功能包括以下关键点:1.路由管理URL路径与HTTP方法映射:通过...

nodejs的express4文件下载

在nodejs的express框架中,下载变得非常简单,就一个方法,res.download()首先express命令行生成项目基本框架:不会的看这里:http://blog.csdn.net/zz...

Express 系列:快速生成一个项目

系列预告本系列将以一个项目入手结合相关技术细节来带领大家一起学习Express这个基于Node.js的后端框架。本文首先将介绍:如何快速的生成一个具有一定结构的Express项目。Express项目结...

nodejs的express自动生成项目框架

nodejs版本为:4.X,express版本为4.X1.全局安装2个模块express、express-generator在命令行输入:npminstall-gexpressnpminsta...

express开发(一)简介与搭建

上周末去了趟上海书城,不愧是上海数得上号的书城,流行的科技书应有尽有,话不多说直接上图。最经典的C语言O(∩_∩)O最流行的java(づ ̄3 ̄)づ超酷的R语言/(ㄒoㄒ)/~~然而,身为一个坚定的前...

Vue+Echarts可视化大屏系统后端框架搭建(附代码)

各位同学,大家好。上节课,前面我们讲解了Vue+Echarts前端部分的设计方法。这节课程,我们开始讲解使用Express进行后端设计的方法。01项目相关理论介绍什么是expressExpress是...

Shopify电商API接口开发

Shopify电商API接口开发上线流程主要包括以下步骤。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎洽谈合作。前期准备-注册Shopify账号:在Shopify官网注册,用于后续开发测试...

取消回复欢迎 发表评论: