# Omron FINS TCP

欧姆龙 FINS （Factory Interface Network Service）是一种用于工业自动化领域的通信协议，是欧姆龙公司开发的一种专有协议，此协议提供了一种高效、可靠的通信方式，用于在欧姆龙 PLC、传感器等设备之间进行数据交换。FINS 协议支持多种通信方式，包括串口、TCP、UDP 等。

通用配置步骤见[添加南向驱动](../south-devices.md)与[组与点位](../../groups-tags/groups-tags.md)。

EMQX Neuron 支持 FINS TCP 协议，可以通过 FINS TCP 协议与欧姆龙 PLC 进行通信。

## 添加驱动

在 **数据采集 → 南向设备** 页点击 **添加设备**，驱动类型选择 **Omron FINS TCP**。

## 连接参数

点击驱动卡片进入**设备配置**页填写：

| 字段               | 说明                            |
| ------------------ | ------------------------------- |
| **设备型号**       | PLC 设备型号                    |
| **PLC IP 地址**    | 目标 PLC IPv4 地址              |
| **PLC 端口**       | 目标 PLC 端口，默认为 9600      |
| **包最大字节长度** | 查询数据包最大字节数，默认为 64 |

## 点位配置

以下为本驱动支持的数据类型与地址格式。

### 数据类型

* UINT8
* INT8
* INT16
* UINT16
* INT32
* UINT32
* FLOAT
* INT64
* UINT64
* DOUBLE
* BIT
* STRING

### 地址格式

> AREA ADDRESS\[.BIT]\[.LEN\[H]\[L]]

#### AREA ADDRESS

| 区域 | 数据类型                                    | 属性  | 备注       |
| ---- | ------------------------------------------- | ----- | ---------- |
| CIO  | 除 uint8/int8 外的所有类型                  | 读/写 | CIO 区     |
| A    | 除 uint8/int8 外的所有类型                  | 读    | 辅助区     |
| W    | 除 uint8/int8 外的所有类型                  | 读/写 | 工作区     |
| H    | 除 uint8/int8 外的所有类型                  | 读/写 | 保持区     |
| D    | 除 uint8/int8 外的所有类型                  | 读/写 | 数据存储区 |
| P    | 除 uint8/int8 外的所有类型，但 bit 只支持读 | 读/写 | PVs        |
| F    | int8/uint8                                  | 读    | 标志区域   |
| EM   | 除 uint8/int8 外的所有类型                  | 读/写 | 扩展内存   |

#### .BIT

选填，指某一地址的某一位。

#### .LEN\[H]\[L]

当数据类型是 string 类型时，是必填项，**.LEN** 表示字符串长度，包含 **H** 和 **L** 两种字节顺序，不填默认是 **H** 字节顺序。

### 地址示例

| 地址        | 数据类型 | 说明                                                       |
| ----------- | -------- | ---------------------------------------------------------- |
| F0          | uint8    | F 区域，地址为 0                                           |
| F1          | int8     | F 区域，地址为 1                                           |
| CIO1        | int16    | CIO 区域，地址为 1                                         |
| CIO2        | uint16   | CIO 区域，地址为 2                                         |
| A2          | int32    | A 区域，地址为 2                                           |
| A4          | uint32   | A 区域，地址为 4                                           |
| W5          | float    | W 区域，地址为 5                                           |
| W10         | float    | W 区域，地址为 10                                          |
| H20         | double   | H 区域，地址为 20                                          |
| H30         | uint32   | H 区域，地址为 30                                          |
| D10         | int32    | D 区域，地址为 10                                          |
| D20         | float    | D 区域，地址为 20                                          |
| EM10W100    | float    | EM10 区域，地址为 100                                      |
| CIO0.0      | bit      | CIO 区域，地址为 0，第 0 位                                |
| CIO1.2      | bit      | CIO 区域，地址为 1，第 2 位                                |
| A2.1        | bit      | A 区域，地址为 2，第 1 位                                  |
| A2.3        | bit      | A 区域，地址为 2，第 3 位                                  |
| W3.4        | bit      | W 区域，地址为 3，第 4 位                                  |
| W3.0        | bit      | W 区域，地址为 3，第 0 位                                  |
| H4.15       | bit      | H 区域，地址为 4，第 15 位                                 |
| H4.10       | bit      | H 区域，地址为 4，第 10 位                                 |
| D5.2        | bit      | D 区域，地址为 5，第 2 位                                  |
| D5.3        | bit      | D 区域，地址为 5，第 3 位                                  |
| EM10W100.0  | bit      | EM10 区域，地址为 100，第 0 位                             |
| CIO0.20     | string   | CIO 区域，地址为 0，字符串长度 20 个字节，字节顺序为 L     |
| CIO1.20H    | string   | CIO 区域，地址为 1，字符串长度 20 个字节，字节顺序为 H     |
| A2.10L      | string   | A 区域，地址为 2，字符串长度 10 个字节，字节顺序为 L       |
| A2.30       | string   | A 区域，地址为 2，字符串长度 30 个字节，字节顺序为 L       |
| W3.40H      | string   | W 区域，地址为 3，字符串长度 40 个字节，字节顺序为 H       |
| W3.10       | string   | W 区域，地址为 3，字符串长度 10 个字节，字节顺序为 L       |
| H4.15L      | string   | H 区域，地址为 4，字符串长度 15 个字节，字节顺序为 L       |
| H4.10       | string   | H 区域，地址为 4，字符串长度 10 个字节，字节顺序为 L       |
| D5.20H      | string   | D 区域，地址为 5，字符串长度 20 个字节，字节顺序为 H       |
| D5.30       | string   | D 区域，地址为 5，字符串长度 30 个字节，字节顺序为 L       |
| EM10W200.10 | string   | EM 10 区域，地址为 200，字符串长度 10 个字节，字节顺序为 L |

## 应用场景

本文将使用 Omron FINS TCP 驱动连接欧姆龙 CP2E PLC，实现读写 PLC 中的点位值，具体步骤，见 [CP2E 连接示例](./example/cp2e/cp2e.md)。
