国内首个开源物联网边缘工业协议网关软件,Neuron v2.0产品解读
ccwgpt 2024-10-11 11:20 29 浏览 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生态内其他产品一起,组成构建现代工业物联网平台的坚实数据基础设施,推动工业物联网行业发展。
相关推荐
- 滨州维修服务部“一区一策”强服务
-
今年以来,胜利油田地面工程维修中心滨州维修服务部探索实施“一区一策”服务模式,持续拓展新技术应用场景,以优质的服务、先进的技术,助力解决管理区各类维修难题。服务部坚持问题导向,常态化对服务范围内的13...
- 谷歌A2A协议和MCP协议有什么区别?A2A和MCP的差异是什么?
-
在人工智能的快速发展中,如何实现AI模型与外部系统的高效协作成为关键问题。谷歌主导的A2A协议(Agent-to-AgentProtocol)和Anthropic公司提出的MCP协议(ModelC...
- 谷歌大脑用架构搜索发现更好的特征金字塔结构,超越Mask-RCNN等
-
【新智元导读】谷歌大脑的研究人员发表最新成果,他们采用神经结构搜索发现了一种新的特征金字塔结构NAS-FPN,可实现比MaskR-CNN、FPN、SSD更快更好的目标检测。目前用于目标检测的最先...
- 一文彻底搞懂谷歌的Agent2Agent(A2A)协议
-
前段时间,相信大家都被谷歌发布的Agent2Agent开源协议刷屏了,简称A2A。谷歌官方也表示,A2A是在MCP之后的补充,也就是MCP可以强化大模型/Agent的能力,但每个大模型/Agent互为...
- 谷歌提出创新神经记忆架构,突破Transformer长上下文限制
-
让AI模型拥有人类的记忆能力一直是学界关注的重要课题。传统的深度学习模型虽然在许多任务上取得了显著成效,但在处理需要长期记忆的任务时往往力不从心。就像人类可以轻松记住数天前看过的文章重点,但目前的...
- 不懂设计?AI助力,人人都能成为UI设计师!
-
最近公司UI资源十分紧张,急需要通过AI来解决UI人员不足问题,我在网上发现了几款AI应用非常适合用来进行UI设计。以下是一些目前非常流行且功能强大的工具,它们能够提高UI设计效率,并帮助设计师创造出...
- 速来!手把手教你用AI完成UI界面设计
-
晨星技术说晨星技术小课堂第二季谭同学-联想晨星用户体验设计师-【晨星小课堂】讲师通过简单、清晰的语言描述就能够用几十秒自动生成一组可编辑的UI界面,AIGC对于UI设计师而言已经逐步发展成了帮助我们...
- 「分享」一端录制,多端使用的便捷 UI 自动化测试工具,开源
-
一、项目介绍Recorder是一款UI录制和回归测试工具,用于录制浏览器页面UI的操作。通过UIRecorder的录制功能,可以在自测的同时,完成测试过程的录制,生成JavaScr...
- APP自动化测试系列之Appium介绍及运行原理
-
在面试APP自动化时,有的面试官可能会问Appium的运行原理,以下介绍Appium运行原理。Appium介绍Appium概念Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序...
- 【推荐】一个基于 SpringBoot 框架开发的 OA 办公自动化系统
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍oasys是一个基于springboot框架开发的OA办公自动化系统,旨在提高组织的日常运作和管理...
- 自动化实践之:从UI到接口,Playwright给你全包了!
-
作者:京东保险宋阳1背景在车险系统中,对接保司的数量众多。每当系统有新功能迭代后,基本上各个保司的报价流程都需要进行回归测试。由于保司数量多,回归测试的场景也会变得重复而繁琐,给测试团队带来了巨大的...
- 销帮帮CRM移动端UI自动化测试实践:Playwright的落地与应用
-
实施背景销帮帮自2015年成立以来,移动端UI自动化测试的落地举步维艰,移动端的UI自动化测试一直以来都未取得良好的落地。然而移动互联网时代,怎样落地移动端的UI自动化测试以快速稳定进行移动端的端到端...
- 编写自动化框架不知道该如何记录日志吗?3个方法打包呈现给你。
-
目录结构1.loguru介绍1.1什么是日志?程序运行过程中,难免会遇到各种报错。如果这种报错是在本地发现的,你还可以进行debug。但是如果程序已经上线了,你就不能使用debug方式了...
- 聊聊Python自动化脚本部署服务器全流程(详细)
-
来源:AirPython作者:星安果1.前言大家好,我是安果!日常编写的Python自动化程序,如果在本地运行稳定后,就可以考虑将它部署到服务器,结合定时任务完全解放双手但是,由于自动化程序与平...
- 「干货分享」推荐5个可以让你事半功倍的Python自动化脚本
-
作者:俊欣来源:关于数据分析与可视化相信大家都听说自动化流水线、自动化办公等专业术语,在尽量少的人工干预的情况下,机器就可以根据固定的程序指令来完成任务,大大提高了工作效率。今天小编来为大家介绍几个P...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- ui自动化框架 (47)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)