IEC 60870-5是一套专为电力系统监控和控制设计的标准,提供了控制中心和现场设备之间通信的综合框架。
IEC 60870-5定义了主要用于电气工程和电力系统自动化的SCADA(监控与数据采集)系统的协议。
- CS 101:点对点和多点通信的应用层和串行链路层
- CS 104:基于CS 101的应用层,但通过TCP/IP网络传输
这些标准定义了设备之间的通信方式,确保控制系统(主站/客户端)和现场设备(从站/服务器)能够可靠地交换信息。
通信架构
IEC 60870-5遵循分层通信模型,其中控制系统(主站/客户端)与一个或多个现场设备(从站/服务器)进行通信。该协议旨在可靠地传输相对少量的数据,并具有确定的响应时间。

通信主要是异步的,意味着你通过非阻塞函数发送请求,并通过回调函数处理响应,而不是等待即时回复。
链路层通信模式
该协议定义了两种不同的串行通信链路层模式(CS 101)。
平衡模式
- 支持一个主站和一个从站通过专用链路进行通信
- 双方可以随时自发传输消息
- 真正的对等通信模型
- 通常用于控制中心与重要变电站之间的点对点链路
非平衡模式
- 支持一个主站和多个从站在共享介质上进行通信
- 每个从站由唯一的链路层地址标识
- 从站不能自发发送消息 – 只能响应主站请求
- 主站可以通过广播地址一次性寻址多个从站
- 通常用于单主站轮询多个RTU的多点配置
应用层消息结构
IEC 60870-5通信的核心是应用服务数据单元(ASDU),它代表一个完整的应用层消息。
ASDU结构
一个ASDU包含:

- 头部信息:
- 类型标识(数据类型)
- 可变结构限定符(单个或多个对象)
- 传输原因(为何发送消息)
- 发送方地址(谁发送的)
- 公共地址(哪个站/设备)
- 测试和否定标志
- 信息对象:
- 每个对象有一个信息对象地址(IOA)
- 包含一个或多个信息元素
- 可以包括质量描述符和时间戳
传输原因(COT)
传输原因是一个关键字段,解释了为何发送消息。常见的COT值包括:
COT值 | 描述 | 用途 |
PERIODIC | 周期/循环数据 | 定期更新 |
SPONTANEOUS | 自发数据 | 事件驱动更新 |
ACTIVATION | 命令激活 | 向设备发送命令 |
REQUESTED | 请求的数据 | 响应读取请求 |
INTERROGATED | 查询响应 | 响应站/组查询 |
ACTIVATION_CON | 命令确认 | 对命令的肯定响应 |
ACTIVATION_TERMINATION | 过程完成 | 标志过程结束 |
COT帮助双方理解消息的上下文及其处理方式。
消息类型
IEC 60870-5定义了用于不同目的的消息类型,这些类型分为几类:
监控方向消息(M_*)
用于将状态和测量数据从现场设备传输到控制中心:
- M_SP_NA_1:单点信息(二进制状态)
- M_DP_NA_1:双点信息(如开关位置)
- M_ST_NA_1:步位置信息
- M_ME_NA_1:归一化测量值
- M_ME_NB_1:标度化测量值
- M_ME_NC_1:短浮点值
- M_IT_NA_1:综合总计(计数器)
许多类型有带时间戳的变体(TA为短时间戳,TB为长时间戳)。
控制方向消息(C_*)
用于从控制中心向现场设备发送命令:
- C_SC_NA_1:单命令(开/关)
- C_DC_NA_1:双命令(如开关控制)
- C_RC_NA_1:步控制命令
- C_SE_NA_1:设定点命令,归一化值
- C_SE_NB_1:设定点命令,标度化值
- C_SE_NC_1:设定点命令,短浮点
- C_IC_NA_1:查询命令
- C_CS_NA_1:时钟同步命令
参数消息(P_*)
用于参数设置:
- P_ME_NA_1:测量值参数,归一化
- P_ME_NB_1:测量值参数,标度化
- P_ME_NC_1:测量值参数,短浮点
文件传输消息(F_*)
用于文件传输操作:
- F_FR_NA_1:文件就绪
- F_SR_NA_1:段就绪
- F_SC_NA_1:呼叫/选择文件/段
- F_SG_NA_1:文件段
关键通信过程
查询
查询用于通过单个请求请求一组数据项。有两种类型:
- 站查询(QOI=20):请求所有数据点
- 组查询(QOI=21-36):请求特定组的数据
序列包括:
- 主站发送带ACTIVATION的查询命令
- 从站响应ACTIVATION_CON
- 从站发送请求的数据,带INTERROGATED_BY_STATION
- 从站发送ACTIVATION_TERMINATION标志完成
时钟同步
时钟同步对于保持系统时间一致性至关重要:
- 主站发送带当前时间的C_CS_NA_1
- 从站更新其内部时钟
- 从站处理后在C_CS_NA_1发送ACT_CON
命令过程
IEC 60870-5支持两种命令过程:
直接操作
- 主站发送带ACTIVATION的命令
- 从站立即执行命令
- 从站发送确认(肯定或否定)
选择后操作(SBO)
- 主站发送选择命令
- 从站检查命令是否有效并锁定点
- 从站发送确认
- 主站发送执行命令
- 从站执行并发送最终确认
SBO通过防止意外命令提供额外的安全性。

CS104特定概念(TCP/IP)
CS104将CS101的应用层扩展到TCP/IP网络,增加了一些重要概念:
服务器模式
CS104服务器支持三种操作模式来处理客户端连接:
- 单冗余组(CS104_MODE_SINGLE_REDUNDANCY_GROUP)
- 只允许一个活动客户端连接
- 其他连接保持待机
- 所有连接共享单个事件队列
- 连接即冗余组(CS104_MODE_CONNECTION_IS_REDUNDANCY_GROUP)
- 允许多个活动客户端连接
- 每个连接有自己的事件队列
- 连接关闭时队列被删除
- 多冗余组(CS104_MODE_MULTIPLE_REDUNDANCY_GROUPS)
- 多个活动客户端连接按冗余组组织
- 每个冗余组有自己的事件队列
- 每个冗余组只有一个活动连接
协议参数
CS104定义了几个控制通信行为的重要参数:
参数 | 描述 |
k | 发送方在停止前可传输的最大未确认APDU数 |
w | 接收方在发送确认前将接受的最大APDU数 |
t0 | 连接建立超时(秒) |
t1 | 传输APDU超时 – 如果未收到确认,连接关闭 |
t2 | 发送确认的超时 |
t3 | 空闲连接测试报文超时 |
这些参数确保可靠的消息传递和连接维护。
高级功能
文件传输
IEC 60870-5支持文件传输操作,使用特定的消息类型(F_*):
- 目录操作
- 文件选择和传输
- 按段传输
- 确认机制
安全(TLS)
CS104可以使用TLS进行安全加固,提供:
- 加密通信
- 通信伙伴的身份验证
- 防止中间人攻击
通信模型
CS101 平衡模式
CS101平衡模式是lib60870库提供的关键通信模型,实现了通过串行连接的IEC 60870-5-101协议。与其他通信模型不同,平衡模式在站点之间建立对等关系,允许双方独立发起通信。
在IEC 60870-5-101协议中,链路层可以以平衡模式或非平衡模式运行。平衡模式创建了一个平等的通信关系,两个站点都可以在没有对方明确许可的情况下发起数据传输。

这与非平衡模式不同,在非平衡模式中,只有主站可以发起通信,从站仅在轮询时响应。
CS101 非平衡模式
CS101 非平衡模式是 IEC 60870-5-101 协议中定义的一种通信模型,它在站点之间建立了明确的层级关系:一个主站与多个从站进行通信。与双方都可以发起通信的平衡模式不同,在非平衡模式中,只有主站可以发起数据交换,这使得它非常适合传统的 SCADA 系统,其中中央控制站需要从多个现场设备收集数据。
在非平衡模式中,通信遵循明确的模式:
主站必须主动轮询每个从站以接收数据,因为从站不能自发传输信息。这种轮询机制使主站能够在系统收集所有连接设备数据的同时,保持对通信信道的控制。

CS104 TCP/IP通信
CS104协议(IEC 60870-5-104)是IEC 60870-5家族的关键部分,为电力工程和电力系统自动化中的SCADA系统提供基于TCP/IP的通信。
CS104(IEC 60870-5-104)在TCP/IP网络上实现了IEC 60870-5的应用层,使控制中心(客户端/主站)和变电站(服务器/从站)之间能够通信。与基于串行的协议(CS101)不同,CS104利用现代IP网络提供可靠、可扩展的通信。
该协议默认使用TCP端口2404,并提供:
- 客户端和服务器之间的面向连接的通信
- 支持数据的自发传输
- 带有各种安全措施的命令传输
- 文件传输和其他高级功能
CS104遵循客户端-服务器架构。CS104协议使用APCI(应用协议控制信息)参数来控制通信流程,包括定时参数和消息确认的窗口大小。
