# Siemens MPI

MPI 是一种基于西门子 MPI 接口的通信协议，它允许 PLC 与其他设备（如 SCADA 系统、HMI 设备、其他 PLC 等）进行数据交换。MPI 接口一般内置于 S7300 和 S7400 PLC。

MPI 需要经过专门的线缆才能被 PC 访问到。首先需要通过 6ES7-972-0CA23-0XA0 模块（或兼容模块）将 MPI 转换到 RS232 串口协议，然后通过 USB-RS232 模块连接到 PC，如果 PC 有 RS232 接口则无需第二步转换。

Neuron 的 MPI 插件可用于S7300 和 S7400 PLC 的数据访问。

## 添加插件

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

## 设备配置

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

| 字段         | 说明                        |
| ------------ | --------------------------- |
| 连接超时时间  |  连接超时时间，单位为毫秒     |
| 指令发送间隔  |  发送协议指令时间间隔，单位为毫秒 |
| 目标站号     |   设备的 MPI 站点号，默认为 2 |
| 串口设备     |   串口设备路径，默认为 /dev/ttyUSB0 |
| 停止位       |   串口停止位，默认且只能为 1 |
| 校验位       |   串口校验位，默认且只能为 Odd |
| 波特率       |   串口波特率，默认为 38400 |
| 数据位       |   串口数据位，默认且只能为 8 |

## 设置组和点位

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

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

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

### 数据类型

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

### 地址格式

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

#### AREA ADDRESS

| 区域 | 数据类型                                                     | 属性  | 备注                    |
| ---- | ------------------------------------------------------------ | ----- | ----------------------- |
| DB.DBB   |int8，uint8，int16，uint16，bit，int32，uint32，int64，uint64，float，double，string | 读    | 主存数据块，以 bytes 读写 |
| M        | int8，uint8，int16，uint16，bit，int32，uint32，int64，uint64，float，double，string | 读/写 | 标志内存 M，以 bytes 读写  |

#### .BIT

选填，指某一地址的某一位, 范围 0~7。

#### .LEN

当数据类型为 string 类型时，是必填项，表示字符串长度。

### 地址示例

| 地址         | 数据类型 | 说明                                         |
| ------------ | -------- | -------------------------------------------- |
| DB1.DBB10 | int16    | DB1 数据块中，起始数据地址为 10 |
| DB2.DBB10 | uint16   | DB2 数据块中，起始数据地址为 10 |
| DB1.DBB12 | float    | DB1 数据块中，起始数据地址为 12 |
| DB1.DBB14 | double   | DB1 数据块中，起始数据地址为 14 |
| DB1.DBB19.1 | bit      | DB1 数据块中，起始数据地址为 19，第 2 位 |
| DB1.DBB19.7 | bit      | DB1 数据块中，起始数据地址为 19，第 8 位 |
| DB1.DBB20.20 | string   | DB1 数据块中，起始数据地址为 20，字符串长度为 20 |
| M98  | int8     | M 区，起始数据地址为 98 |
| M99  | uint8    | M 区，起始数据地址为 99 |
| M100 | int16    | M 区，起始数据地址为 100 |
| M102 | uint16   | M 区，起始数据地址为 102 |
| M104 | float    | M 区，起始数据地址为 104 |
| M106 | double   | M 区，起始数据地址为 106 |
| M111.3 | bit      | M 区，起始数据地址为 111，第 4 位 |
| M112.20 | string   | M 区，起始数据地址为 20，字符串长度为 20 |
| I2.1 | bit   | I 区，起始数据地址为 2，第 1 位 |
| Q0.7 | bit   | Q 区，起始数据地址为 0，第 7 位 |

## 数据监控

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