# 产品概览

Neuron 是运行在各类物联网边缘网关硬件上的工业协议网关软件，旨在解决工业 4.0 背景下设备数据统一接入难的问题。通过将来自繁杂多样工业设备的不同协议类型数据转换为统一标准的物联网 MQTT 消息，实现设备与工业物联网系统之间、设备彼此之间的互联互通，进行远程的直接控制和信息获取，为智能生产制造提供数据支撑。

Neuron 支持同时为多个不同通讯协议设备、数十种工业协议进行一站式接入及 [MQTT 协议](https://www.emqx.com/zh/mqtt-guide)转换，仅占用超低资源，即可以通过原生或容器的方式部署在 X86、ARM、RISC-V 和其他架构的物理机中。同时，用户可以通过基于 Web 的管理控制台实现在线的网关配置管理。其强大的性能使得它能够连接数百个工业设备，轻松处理超过 10,000 个数据点。



<img src="./introduction/assets/neuron.png" alt="Neuron" style="zoom:40%;" />

## 核心优势

**边缘原生**：Neuron 是一个实时异步处理的服务器，充分利用边缘的低延迟网络方法实现 100 毫秒响应时间。

**多设备连接**：Neuron 提供多种插件模块，例如 Modbus，OPC UA，EtherNet/IP，IEC104，BACnet，Siemens，Mitsubishi 等。这些插件某块被广泛应用于离散制造业、楼宇自动化、数控机床、机器人、电力以及各种 PLC 通信中。

**大规模并发**：Neuron 可以同时与不同的工业设备建立无限的连接。得益于解耦的模块化架构设计，可以单独运行每个连接。并发连接的数量取决于分配的资源。

**便携式部署**：Neuron 具有非常低的内存占用，启动时内存占用不到 7M，适合在低配置架构设备上运行，如 X86、ARM 和 RISC-V 等。Neuron 还支持类似 Docker 的容器化部署，在 K8s 环境中与其他容器一起运行。

**更好的集成**：Neuron 与工业物联网应用、大数据和 AI/ML 分析软件的无缝集成，使得 Neuron 可以通过 API 和 MQTT 连接私有云、EMQX Cloud、AWS、Microsoft Azure 或本地服务器，将实时工业数据直接无缝地流向工业应用，如 MES、ERP、大数据、分析软件等等，实现各类复杂的数据处理和存储场景。

**统一的数据化操作**：Neuron 帮助传统工业设备以异步方式传递数据消息，作为 SparkplugB 标准中指定的边缘节点。SparkPlugB 是一种开放、统一、互操作的工业数据交换标准，通过 MQTT 代理在工业信息系统（如 ERP、MES、SCADA 和历史记录）之间进行数据交换。

**身份验证和安全性**：Neuron 支持 API 服务的 TLS 和 HTTPS 加密，以确保数据在传输中的安全性，并使用 JWT 身份验证机制来验证数据所有者。

## 关键概念

### 核心框架

Neuron 核心框架旨在为各种不同的工业通信协议提供插件构建和应用的基础。这个核心框架包括 NNG 高速总线、数据管理器以控制数据流，以及插件集成的适配器。

### 插件

Neuron 可以分为核心框架和多种可插拔模块。可插拔意味着这些模块可以动态地添加和移除，甚至支持在运行状态下的热插拔。插件可以分为南向驱动程序和北向应用。北向插件通常用于连接到云平台或边缘处理引擎这样的外部应用。南向插件是实现特定协议以访问外部设备的通信驱动程序。为了实现协议格式转换，至少需要一个南向插件和一个北向插件，分别用于数据采集和数据传递。

所有这些模块都是用 C 语言编写，并为那些有兴趣进行二次开发的用户提供 SDK。插件只是由 SDK 构建的动态链接库（.so）文件。具体的插件开发教程请参考 [SKD 教程](./dev-guide/sdk-tutorial/sdk-tutorial.md)。

### 适配器

适配器是为插件数据交换提供两个接口的通信例程：

- NNG 高速总线通信接口，用于和其他适配器交换数据消息。
- 插件接口：用于集成插件模块。

Neuron 提供了两种适配器：

- 驱动程序适配器：用于与南向驱动插件集成。
- 应用程序适配器：用于与北向应用插件集成，与驱动程序适配器在处理数据消息交换时的逻辑不同。

### Node 节点

节点在 Neuron 中被定义为将框架接口与通信例程合并的实体。当一个插件插入核心框架中时，会创建一个连接节点来与外部设备或应用程序通信。在单个运行实例中可能会创建多个节点，用于与各方通信。核心框架负责管理这些节点之间的消息路由。

节点由适配器和插件模块组合而成，节点间的通信基于 NNG 高速消息实现，下图展示了 Neuron 的松耦合设计架构。所有节点独立工作，相互交换数据，并根据其实现的工业协议与外部设备或云进行通信。

<img src="./assets/concepts.png" alt="结构" style="zoom:40%;" />

### 点位（Tag）

Neuron中的点位是对设备中特定数据点或变量的描述。点位信息包括设备中数据的数据类型、数据地址及读写属性等信息，用户可以通过配置点位实现设备内数据与Neuron采集点位之间的关联，从而实现从设备中读取数据或向设备写入数据。

### 组（Group）

设备中的数据点位集合可以在Neuron软件中分成几个采集组以便更好地管理。每个采集组都有独立的轮询频率，用于控制从设备中读取数据时设备轮询的时间间隔。路由机制基于这些组作为信息单元在节点之间进行交换。北向节点可以订阅任何南向节点中的任何组。这些订阅将用于在节点之间路由数据消息。
