# IEC60870-5-101

IEC 60870-5-101是一个国际标准，定义了电力变电站控制和监控系统之间的通信协议。它是IEC 60870-5系列的一部分，该系列包括电力系统自动化领域常用的各种协议。

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

具体而言，IEC 60870-5-101适用于通过串行接口进行点对点通信，通常使用EIA-232或EIA-485标准。它允许主站（如控制中心）与位于变电站的远程终端单元（RTU）之间进行实时数据和命令交换。这些RTU负责监测和控制变电站内的设备和过程。

## 添加驱动

在 **数据采集 → 南向设备** 页点击 **添加设备**，驱动类型选择 **IEC60870-5-101**。

## 连接参数

在 **南向设备** 页，点击设备卡片进入设备配置页，配置设备参数。

| 参数          | 说明                  |
| ------------ | --------------------- |
| **串口设备** | 串口模式下，串口设备的路径，如 Linux 系统中 /dev/ttyS0。 |
| **停止位** | 串口模式下，串口连接参数。 |
| **校验位** | 串口模式下，串口连接参数。 |
| **波特率** | 串口模式下，串口连接参数。 |
| **数据位** | 串口模式下，串口连接参数。 |
| **设备 IP 地址** | 设备的 IPv4 地址                |
| **设备端口**     | 设备端口号，默认为 2404  |
| **公共地址**       |  公共地址，唯一标识数据对象               |
| **总召唤间隔** | 发送总招唤指令的间隔         |

## 点位配置

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

点位属性配置为`Read`，则代表该点位不仅会根据配置的`总召唤间隔`，定期上报101 Server发出的数据点的值，同时还会根据组的`采集间隔`，定期上报数据。

点位属性配置为`Subscribe`，则代表该点位不仅会根据配置的`总召唤间隔`，定期上报101 Server发出的数据点的值，同时当数据点位变化后，EMQX Neuron 也会收到变化的数据点，并通过北向应用配置将数据点北向上报。

::: tip 提示
由于101协议的实时性要求，配置为`Subscribe`的点位，EMQX Neuron 会在收到数据点位变化后，立即将变化的数据点位上报到北向应用，并且不受采集组的`采集间隔`限制。
::: 

::: tip 提示
当采集组的数据点位都配置为`Subscribe`类型，即使数据点位没有任何变化，总召唤上报仍会触发。
::: 

点位属性配置为`Write`，则代表该点位支持EMQX Neuron 主动写入数据到101 Server，注意，101协议的读地址与写地址是分离的，一个点位地址位要么是读点位要么是写点位，不存在同时可读可写的点位，具体信息可查阅101协议相关文档。

点位属性`Subscribe`、`Read`、`Write`只可单独配置。

::: tip 提示
建议在同一个采集组中，只配置一种点位属性，例如，一个采集组中，只配置`Subscribe`属性的点位，或者只配置`Read`属性的点位，或者只配置`Write`属性的点位。
::: 

### 数据类型

* UINT8
* INT8
* UINT16
* INT16
* UINT32
* INT32
* FLOAT
* BIT

### 地址格式

> IOA

#### IOA
在 IEC60870-5-101 协议中，IOA (Information Object Address) 指的是信息对象地址，是用于唯一标识一个数据对象的地址，用于指定一个信息对象（遥信、遥测、遥控等）的地址。

| IEC 60870-5-101  类型 ID         | 数据类型  |
| :------------------------------ | :------------ |
| M_ME_NA_1、M_ME_TD_1、M_ME_ND_1、M_ME_NB_1、M_ME_TE_1            | uint16/int16 |
| M_IT_NA_1 | int32/uint32|
| M_ME_NC_1、M_ME_TF_1            | float        |
| M_SP_NA_1、M_SP_TB_1            | bit/int8/uint8          |

::: tip
IEC60870-5-101 协议中，一个 IOA 标识的地址只属于一种类型，且能读的点位如遥测等与控制点位如遥控等的 IOA 并不相同，例如，遥测点位 IOA 为 100，这个点位对应的遥控点位 IOA 并不是 100，而是映射到其他的 IOA。
::: 

### 数据订阅
IEC60870-5-101 在协议层面支持点位发生改变时，设备主动上报点位值。在 EMQX Neuron 侧需要给点位配置 Subscribe 属性，当设备向 EMQX Neuron 发送变化数据时，EMQX Neuron 才会及时把此变化消息发送到对应的北向应用中。

### 地址示例

| IOA         | 类型  | 说明 |
| :-------- | :------------ | :---- |
| 100 | M_SP_NA_1 | 读取 IOA 为 100 的一位开关量（单点信息） |
| 1000| C_SC_NA_1 | 单点遥控，对 IOA 为 1000 的信息对象进行一位开关量进行控制写入 |
| 400 | M_ME_NA_1 | 读取 IOA 为 400 的测量值 |
| 4000|C_SE_NA_1 | 单点控制，对 IOA 为 4000 的信息对象进行控制写入 |
如上表中 100 与 1000 存在映射关系，则对 1000 进行控制写入后，能从 100 中读到写入的值；或是 400 与 4000 存在映射关系，则对 4000 进行控制写入后，能从 400 中读到写入的值。

::: tip
支持点位时间以及点位质量的数据点，在北向发送数据时，将会可选的增加对应点位的质量以及时间。
:::
