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

与之前的 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 组成。这些节点既可以是内置固有的,如轻量级的 Web Server;也可以是动态增加的,如各种设备驱动、MQTT 客户端、eKuiper 接口等。这样的设计隔离了各个设备驱动和北向应用的功能模块之间的耦合,另外采用订阅-发布机制来实现数据流的分发和聚合,使得 Neuron v2.0 有着极大的灵活性。用户可以根据现场的工作情况动态增加和减少设备驱动的节点,具有良好的可配置性。另外,当运行 Neuron v2.0 的硬件 CPU 性能好、核心多、内存大时,Neuron v2.0 能支持更多的设备驱动节点、海量的数据点位、更大的数据吞吐量、更低的响应时间,具有良好的系统可伸缩性。

Neuron v2.0 采用了插件机制来支持变化多端的用户功能需求,用户可以根据应用场景的功能需求动态的加载不同功能的插件,得到有不同功能的节点。当设备驱动有 Bug 需要修复,或者有新的功能需要升级时,可以通过动态更新插件来解决问题,升级新功能。每个节点的运行是独立的,当升级一个节点的插件时,不会影响其他节点的运行,Neuron 2.0 也不需要重新启动。

国内首个开源物联网边缘工业协议网关软件,Neuron v2.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​​、eKuiper(由 EMQ 发起,现归属于 LF Edge 基金会维护运营) 等。无缝产品集成使用体验,统一管理控制台,实现在线多节点管理与产品配置,安全控制,统一用户认证、操作权限控制。

未来规划

未来 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 生态内其他产品一起,组成构建现代工业物联网平台的坚实数据基础设施,推动工业物联网行业发展。

版权声明: 本文为 EMQ 原创,转载请注明出处。​