# 连接南向设备

本章将介绍如何通过 Neuron 对各种工业协议的转化支持，实现对各类南向设备的数据收集。本节将通过 PeakHMI Slave Simulators 来模拟 Modbus TCP 设备，完整演示南向设备添加和配置流程。

Modbus TCP 是一种基于以太网的 Modbus 协议版本，它使用 TCP/IP 协议进行通信。

## 添加插件

创建南向设备节点，用于连接到真实设备或模拟器。

在 **配置 -> 南向设备**，点击**添加设备**来创建设备节点，您可选择以插件方式添加南向设备，通过[模版](../templates/templates.md)安装和配置插件。这里将以插件方式为例进行演示。

* 名称：输入设备名称，例如 `modbus-tcp-1`。
* 插件：Neuron 支持两类 Modbus TCP 插件，**Modbus TCP** 和 **Modbus TCP QH**，这里将选择 **Modbus TCP** 插件。

点击**创建**后，将跳转至**设备配置**页面，我们将在这里配置 Neuron 与设备建立连接所需的参数。您也可点击南向设备卡片上的设备配置图标进入**设备配置**界面。

## 设备配置

配置 Neuron 与设备建立连接所需的参数。

::: tip

为实现 Neuron 与南向设备之间的通信，请确认 IP 与 Port 正确设置，防火墙关闭。

:::

- **连接模式**：选择以太网 TCP 连接时，可以选择 Neuron 作为 TCP 的客户端或是服务端。

* **指令发送间隔**：发送每条读写指令之间的等待时间。单位为毫秒。注意：如间隔时间设置较小，某些串口设备在较短时间内接收到连续指令时，可能会丢弃某些指令，因此请合理设置该参数。

* **IP 地址**：填写安装 PeakHMI Slave Simulators 软件的 PC 端 IP 地址，服务端模式中填写本地 IP，客户端模式中填写目标设备 IP。

* **端口号**：填写 Modbus 模拟器所使用的端口，默认为 502 端口。

* **连接超时时间**：单位 ms，默认为 3000，超过设置时间未接收到消息则报错。

* 点击**提交**，完成设备配置，设备卡片自动进入 **运行中** 的工作状态。

  

  <img src="./assets/south-devices.png" alt="south-devices" style="zoom:50%;" />

## 设备卡片

在**南向设备**页，在右上角可以选择列表或卡片展示南向设备，这里将以设备卡片为例介绍其中各选项的含义。

* **名称**：用户为南向设备提供的唯一名称。
* **设备配置**：点击该按钮进入配置界面，用于设置 Neuron 连接南向设备所需的参数设置。
* **编辑**：在希望更改名称的目标节点，点击**编辑**图标，在弹出的**编辑设备**对话框，修改节点名称。
* **数据统计**：统计节点卡片信息。
* **DEBUG 日志**：打印当前节点的 DEBUG 级别日志，十分钟后，Neuron 将恢复打印默认级别日志。
* **删除**：从南向设备列表中删除该节点。
* **工作状态**：显示设备节点的当前状态，目前节点分为五种工作状态：
    * **初始化**：首次添加南向设备后，将进入初始化状态。
    * **配置中**：进入设备配置，并进入配置状态。
    * **就绪**：配置成功后，进入就绪状态。
    * **运行中**：运行设备卡片。
    * **停止**：停止设备卡片。
* **工作状态切换按钮**：是否打开与设备的连接：
    * 打开：Neuron与设备/应用建立连接，开始收集数据。
    * 关闭：断开设备连接，停止收集数据。
* **连接状态**：显示设备的连接状态。设置组和标签后，Neuron 会连接设备采集数据，状态自动切换为**已连接**。
* **延时**：发送和接收指令之间的时间间隔。
* **插件**：该设备使用的插件模块名称。

## 设置组和点位

完成南向插件的添加和配置后，要建立设备与 Neuron 之间的通信，首先应为南向驱动程序添加组和点位。

点位是分配给一条信息的非分层唯一关键字，其中定义了设备中的数据存储位置和数据操作属性，还包含有关数据的一些元数据信息，如缩放、精确度和读/写属性等。点位将被分配到组中。同一个组的数据以相同的频率进行采集以及上报。创建好组和点位，即可从数据监控中获取点位的实时值。

::: tip

Neuron 支持通过 Excel 文件批量实现组和数据标签点位的配置，具体可参考[批量点位配置](../import-export/import-export.md)。

:::

### 创建组

在**南向设备**页，点击设备卡片/设备列进入**组列表**页。

点击**创建**来创建组。

- **组名称**: 填入组名，如 group-1。
- **间隔**：这组点位的采集和上报频率，以毫秒为单位，100 表示每 100 ms 采集一次，整组点位的值上报一次。

### 创建点位

在**组列表**页，点击组名称进入**点位列表**页，添加需要采集的设备点位，包括点位地址，点位属性，数据类型等。

点击**创建**，进入**添加点位**页面并进行如下设置：

- **名称**：填写点位名称，例如，tag1；
- **属性**：下拉选择点位属性，例如，read，write，subscribe，static，支持配置多个点位类型。
  - Read：用于读取数据
  - Write：用于写入数据
  - Subscribe：仅会在数据变化时发送消息。例如，默认数据为 0，当该数据改为 2 时，则将发送消息
  - Static：需要在配置时赋值，配置完成后在监控页面中也可以看到对应的赋值
- **类型**：下拉选择数据类型，例如，INT16、UINT16、INT32、UINT32、INT64、UINT64、FLOAT、DOUBLE、BIT、STRING
- **地址**：填写驱动地址，例如，1!40001。1 代表 Modbus 模拟器中设置的点位站点号，40001 代表点位寄存器地址，详细的驱动地址使用说明请参阅 [Modbus 介绍与使用](./modbus-tcp/modbus-tcp.md)；
- **乘系数**：默认不填；当点位属性包含 write 时，支持设置乘系数，此时 `设备值 * 乘系数 = 显示值`，如点位乘系数值为 0.1，写入设备中的值为 234，页面显示值为 23.4。
- **精度**：点位类型选择 `float` 或 `double` 时配置精度，精度范围为 0 ～17
- **描述**：默认不填。

::: tip

点位创建完成后，设备卡片的工作状态处于 **运行中**，连接状态应处于**已连接**。若此时连接状态仍然处于**未连接** 的状态，请先在 Neuron 运行环境终端执行以下指令，以确认运行环境能否访问到到对应的 IP 及端口：

```bash
telnet <运行 Modbus 模拟器 PC 端的 IP> 502
```

:::

## 数据监控

完成点位的配置后，您可点击 **监控** -> **数据监控**查看设备信息以及反控设备，具体可参考[数据监控](../../admin/monitoring.md)。

## 运行与维护

### 数据统计

在设备卡片或设备列，您可点击数据统计图表查看及应用运行情况、接受和发送的数据情况

![south_statistics](./assets/south_statistics.png)

其中关键字段说明如下：

| 参数                  | 说明                                                         |
| --------------------- | ------------------------------------------------------------ |
| last_rtt_ms           | 收发一次指令的时间间隔，以毫秒为单位                         |
| send_bytes            | 发送指令的总字节数                                           |
| recv_bytes            | 接收指令的总字节数                                           |
| tag_reads_total       | 读取点位的总指令数，包括读失败                               |
| tag_read_errors_total | 读取点位失败的总指令数                                       |
| group_tags_total      | 组的总点位数                                                 |
| group_last_send_msgs  | 调用一次 group timer 发送的消息数                            |
| group_last_timer_ms   | 调用一次 group timer 的时间，以毫秒为单位                    |
| link_state            | 节点连接状态 <br />DISCONNECTED = 0<br />CONNECTED = 1       |
| running_state         | 节点状态 <br />INIT = 1<br />READY = 2<br />RUNNING = 3<br />STOPPED = 4 |

### 故障诊断

如果设备运行出现任何问题，您可点击 DEBUG 日志图表，此时系统将自动打印该节点的 DEBUG 级别日志，十分钟后将切回系统默认级别日志。稍后，您可点击页面顶部功能栏的**系统信息** -> **日志**查看日志，并进行故障诊断。有关系统日志的详细解析，见[管理日志](../../admin/log-management.md)。
