# 数据采集

本节主要介绍如何在 NeuronEX 中添加南向设备、与设备之间的双向通讯，并通过北向插件将其连接到云平台或处理引擎等外部应用。

## 数据采集的核心能力

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

### 低延迟采集与控制
NeuronEX 是一个实时异步处理的服务器，充分利用边缘的低延迟网络方法实现 100 毫秒高速采集及数据分发。

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

### 灵活部署
NeuronEX 具有非常低的内存占用，启动时内存占用不到 100M，适合在低配置架构设备上运行，如 X86、ARM 和 RISC-V 等。NeuronEX 还支持 Docker 容器化部署，以及在 Kubernetes 环境中运行。

### 更好的集成
NeuronEX 支持与工业互联网平台、公有云平台、第三方应用的无缝集成。 NeuronEX 可以通过 MQTT、SparkPlugB、API等各种方式连接私有云、EMQX Cloud、AWS、Microsoft Azure 或本地服务器，将实时工业数据直接无缝地流向工业应用，如 MES、ERP、大数据、分析软件等等，实现各类复杂的数据处理和存储场景。

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


## 关键概念

### [插件 (Plugin)](../introduction/plugin-list/plugin-list.md)

插件可以分为北向应用和南向驱动程序。北向插件通常用于连接到云平台或像处理引擎这样的外部应用程序。南向插件是实现特定协议以访问外部设备的通信驱动程序。为了实现协议格式转换，至少需要一个北向插件和一个南向插件分别用于数据传递和数据采集。

所有插件模块都是基于 C 语言编写，并为希望二次开发的用户提供了 SDK 文件。具体的插件开发教程请参考 [SDK 教程](../dev-guide/sdk-tutorial/sdk-tutorial.md)。

### [节点 (Node)](./south-devices/south-devices.md#添加南向设备)

在 NeuronEX中节点是插件的实例化，在单个NeuronEX运行实例中，可以创建包含各类插件的多个节点，用于相互通信。NeuronEX的核心框架负责管理这些节点之间的消息路由。NeuronEX具备强大的性能，支持上百节点的同时工作运行。

### [数据点位 (Tag)](./south-devices/south-devices.md#在组中添加数据点)

数据点位是描述设备内数据的存储位置、操作属性和元数据的描述符，有助于用户访问和操作数据。<br>
数据点位定义了设备中的数据存储位置和数据操作属性，还包含有关数据的一些元数据信息，如缩放、精确度和读/写属性等。点位信息有助于描述项目，并允许在设备中找到该项目或对其进行处理以自动读取/写入。用户将识别设备中那些感兴趣的点位，以从设备中读取数据或向设备写入数据。

### [组 (Group)](./south-devices/south-devices.md#创建采集组)

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

## 配置流程

以下为如何通过设置 NeuronEX 进行各种工业协议转换、进而完成数据传递和采集的工作流程。

1. [查看所有可用插件](../introduction/plugin-list/plugin-list.md)：使用各种协议插件可以实现 NeuronEX 的数据采集和传递功能。

2. [创建南向驱动](./south-devices/south-devices.md)：根据设备的协议类型，在NeuronEX上选择南向插件驱动并创建节点。对驱动进行参数配置，来建立NeuronEX与设备之间的通讯连接。

3. [建立设备与 NeuronEX 之间的通信](./south-devices/south-devices.md#创建南向驱动)：首先为南向驱动程序添加组和点位。创建好组和点位，即可从数据监控中获取点位的实时值。为方便用户操作，NeuronEX 支持通过离线 Excel 文件[批量导入](./south-devices/south-devices.md#批量点位配置)相关配置信息。

   :::tip

   重复步骤 2 和 3，直到完成所有必要驱动、组和点位的创建。
   :::

4. [创建北向应用并订阅南向设备](./north-apps/north-apps.md)：选择需要的北向插件以实现数据的传送。每个北向插件只能连接到一个目的地，如流处理模块、EMQX消息中间件、工业互联网平台等。创建北向设备后，还需订阅组。在此步骤中，不需要设置组和点位。北向节点可以订阅在南向节点中创建的任何组。建立订阅后，相应组的数据将按照组的频率持续发布到北向节点。

整体流程如下图所示：

<img src="./_assets/config.png" alt="配置步骤" style="zoom:40%;" />

## 配置规范

| 对象                                 | 规范限制                                 | 
| --------------------------------------- | ----------------------------------- | 
|     节点(Node)名长度       | 最大128字符  |
|     点位(Tag)名长度       | 最大128字符  |
| 点位(Tag)地址长度                   | 最大128字符  | 
| 组(Group)名长度           | 最大128字符  | 
|  单个南向驱动最大Group数      | 最大512个  | 
|  北向应用最大订阅Group数      | 无限制  | 
|  插件(Plugin)模块名长度      | 最大32字符  | 
|  插件(Plugin)文件名长度      | 最大64字符  | 
|  插件(Plugin)描述长度      | 最大512字符  | 
|  南向驱动采集周期      | 最快100毫秒  | 



