# Modbus TCP

Neuron HollySys Modbus TCP 插件使用 Modbus TCP 协议，用于采集和利时 PLC 标签的数据，支持 LK/LE 系列 PLC 型号。

Modbus TCP 是一种基于以太网的 Modbus 协议版本，它使用 TCP/IP 协议进行通信。与传统的 Modbus RTU 协议不同，Modbus TCP 允许设备直接通过以太网互联，不需要任何专用的硬件或通信接口。因此，Modbus TCP 具有更高的通信速率和更广泛的应用范围。


## 添加插件

在 **配置 -> 南向设备**，点击**添加设备**来创建设备节点，输入插件名称，插件类型选择 **HollySys Modbus TCP** 启用插件。


## 设备配置

点击插件卡片或插件列，进入**设备配置**页。配置 Neuron 与设备建立连接所需的参数，下表为插件相关的配置项。

| <div style="width:100pt">字段</div> | 说明                                                    |
| -------------------- | ------------------------------------------------------- |
| **最大重试次数** | 发送读取指令失败后最大重试次数。 |
| **指令重新发送间隔** | 发送读取指令失败后重新发送读指令时间间隔，单位为毫秒。 |
| **字节序**   | 32 位数据类型字节序，ABCD 对应 1234。 |
| **指令发送间隔** | 发送每条读写指令之间的等待时间。某些串口设备在较短时间内接收到连续指令时，可能会丢弃某些指令。 |
| **IP 地址** | TCP 连接时，设备的 IP 地址（Neuron 作为客户端）。|
| **端口号** | TCP 连接时，设备的端口号（Neuron 作为客户端）。|
| **连接超时时间** | 等待设备返回指令响应的时间。 |
| **校验报文头** | 选择是否对报文头进行校验。选择校验后，遇到报文头错误时 neuron 与设备会重新连接。 |


## 设置组和点位

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

完成设备配置后，在**南向设备**页，点击设备卡片/设备列进入**组列表**页。点击**创建**来创建组，设定组名称以及采集间隔。完成组的创建后，点击组名称进入**点位列表**页，添加需要采集的设备点位，包括点位地址，点位属性，数据类型等。

公共配置项部分可参考[连接南向设备](../south-devices.md)，本页将介绍支持的数据类型和地址格式部分。


### 数据类型

* BIT
* BOOL
* INT16
* UINT16
* WORD


### 地址格式

> SLAVE!ADDRESS[#ENDIAN]

#### **SLAVE**

必填，指从机地址或者是站点号。

#### **ADDRESS**

和利时 PLC 将数据单元映射到 Modbus 地址空间，以通过 Modbus TCP 协议进行访问。
Neuron HollySys Modbus TCP 插件将 PLC 数据单元名称指定为 **ADDRESS**，用户不需要关心地址映射的细节。

| 数据区                          | Modbus 地址范围                             | 属性       | 寄存器大小    | 数据类型  |
| ------------------------------- | ------------------------------------------- | ---------- | ------------- | --------- |
| IX (Input)                      | IX0.0 ... IX0.7, IX1.0 ... IX1.7 ...        | Read       | 1Bit          |  BOOL/BIT     |
| IW (Input Registers)            | IW0, IW1, ...                               | Read       | 16Bit,2Byte   |  INT16/UINT16 |
| QX (Coils)                      | QX0.0 ... QX0.7, QX1.0 ... QX1.7 ...        | Read/Write | 1Bit          |  BOOL/BIT     |
| QW (Hold Registers)             | QW0, QW1, ...                               | Read/Write | 16Bit,2Byte   |  INT16/UINT16 |
| MX (Coils)                      | MX0.0 ... MX0.7, MX1.0 ... MX1.7 ...        | Read/Write | 1Bit          |  BOOL/BIT     |
| MW (Hold Registers)             | MW0, MW1, ...                               | Read/Write | 16Bit,2Byte   |  INT16/UINT16 |


#### **#ENDIAN**

选填，字节顺序，适用于 int16/uint16 数据类型，详细说明见下表。

| 符号 | 字节顺序 | 支持的数据类型        | 备注 |
| --- | ------- | ------------------ | ----- |
| #B  | 2,1     | int16/uint16       |       |
| #L  | 1,2     | int16/uint16       | 不填，默认字节顺序 |

::: tip
点位字节序优先级高于节点字节序配置。即点位配置字节序后，字节序按照点位的配置，忽略节点配置。
字节顺序可能用 ABCD 表示，只需将 1234 对应 ABCD 即可。例如 ABCD 对应默认字节序 1234 (#LL)。
:::


### 地址示例

| 地址           | 数据类型  | 说明                                               |
| -------------- | --------- | -------------------------------------------------- |
| 1!IX1.0        | bit       | 指站号为 1，PLC 数据单元 IX1.0, 只读。             |
| 1!QW0          | int16     | 指站号为 1，PLC 数据单元 QW0, 支持读写。           |
| 2!MW1          | int16     | 指站号为 2，PLC 数据单元 MW1, 支持读写。           |


## 数据监控

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