IEC 60870-5-104 电力远动规约详解:从帧结构到平衡传输
IEC 60870-5-104 电力远动规约详解:从帧结构到平衡传输

IEC 60870-5-104 电力远动规约详解:从帧结构到平衡传输

前言

做工业物联网,Modbus 几乎是所有人的第一站——简单、普及、好上手。但当你的项目涉及电力调度、变电站自动化、配电网监控时,Modbus 就不够用了:它没有时标、没有事件主动上送、没有链路确认、数据类型全靠寄存器地址”约定俗成”。这时候你就会撞上电力行业的事实标准——IEC 60870-5-104

这篇文章是我从零啃 IEC104 规约 + 实际配通 ECU-1251TL 网关读取 IEC104 从站数据后整理的笔记,力求把规约讲透,不讲废话。


一、IEC104 是什么:101 规约的 TCP 化

IEC 60870-5-104(简称 IEC104)是国际电工委员会(IEC)制定的电力远动通信规约,标准号 IEC 60870-5-104。它的本质是——把原来跑在串口(RS232/RS485)上的 IEC 60870-5-101 规约搬到了 TCP/IP 以太网上

理解这一点很关键:104 的应用层语义和 101 完全一样(同样的 ASDU、同样的 TI/IOA/COT),区别只在传输层——101 用串口链路层(FT1.2 帧),104 用 TCP。所以你可以把 104 理解成”101 的网络版”。

国内电力调度自动化(主站 ↔ 变电站 RTU/测控装置)几乎清一色用 104,国网南网通用。

1.1 在电力通信体系里的定位

电力系统的通信规约不是只有一个,它们各管一段:

链路典型规约说明
调度中心 ↔ 变电站 RTUIEC 60870-5-104站到调度的上行通道,本文主角
调度中心 ↔ 变电站(串口时代)IEC 60870-5-101104 的串口前身
变电站内部 IED 之间IEC 61850保护、测控互联,比 104 更重更现代
配电自动化(FTU/DTU ↔ 主站)IEC 104 / 101也有用 DNP3 的
工业通用Modbus RTU/TCP简单但弱,电力外设备常用

别搞混:104 管”站到调度”这条链路;变电站内部 IED 互联用的是 61850,不是 104。


二、通信架构:主站是客户端,从站是服务端

这是 IEC104 和 Modbus RTU 一个很大的不同点。

2.1 角色与端口

  • 主站(Master,调度中心/SCADA) = TCP 客户端,主动发起连接
  • 从站(Slave,RTU/测控装置/模拟器) = TCP 服务端,监听端口
  • 标准端口:2404

注意角色是反过来的——主站反而要主动连从站。这点和 Modbus RTU 的”主问从答”轮询模型不同,更接近 Modbus TCP 的连接模型,但语义更丰富。

2.2 平衡传输:104 的核心优势

Modbus 是纯轮询——主站不问,从站永远不说话。这意味着开关变位、故障跳闸这种突发事件,最坏要等一个轮询周期才能被主站发现。

IEC104 支持平衡传输:从站不必等主站问,突发事件(开关变位、SOE 事件)可以主动上送。主站照样能发总召、遥控、设定命令。实时性比 Modbus 强一个量级。

这是电力调度选 104 而不是 Modbus 的核心原因之一——保护动作、开关跳闸这种事件,必须秒级甚至毫秒级上送,不能等轮询。

2.3 链路建立流程

一次完整的 IEC104 链路建立是这样的:

STARTDT 是关键:TCP 连上不代表数据就开始传,主站必须发 STARTDT act(启动数据传输),从站回 STARTDT con,数据传输才算真正启动。很多人配完连接发现”链路通了但没数据”,八成是 STARTDT 没发或被关了。


三、链路上的三种帧

IEC104 的链路层帧分三种,靠控制域的头两位区分:

3.1 U 帧(控制帧)—— 管理链路

不携带用户数据,只管链路状态。三种用途:

命令含义
STARTDT act / con启动数据传输(激活/确认)
STOPDT act / con停止数据传输
TESTFR act / con心跳测试(链路保活)

空闲时主从双方靠 TESTFR 互相探测链路是否活着,超时由 t3 参数控制。

3.2 S 帧(监视帧)—— 接收确认

只回接收序号,不带用户数据,做流控和窗口确认。当收到未确认的 I 帧达到 w 个(默认 8)时,就要发 S 帧确认对方。

3.3 I 帧(信息帧)—— 承载业务

带发送序号 + 接收序号 + ASDU(应用服务数据单元)。真正的遥测、遥信、遥控、SOE 全在 I 帧里

三种帧的区别总结:

作用带用户数据带序号
U 帧链路管理(启动/停止/心跳)
S 帧接收确认(流控)只接收序号
I 帧业务数据✅ ASDU发送+接收序号

序号机制是 IEC104 比 Modbus 强的地方——每一帧都有序号,丢了能发现,没确认会重传,可靠性高。


四、ASDU:I 帧里真正承载业务的部分

I 帧的控制域之后就是 ASDU(Application Service Data Unit,应用服务数据单元)。理解 ASDU 的内部结构,是理解 IEC104 的核心。

4.1 ASDU 的字节布局

4.2 各字段含义

公共头部(6 字节)

  • TI(类型标识,Type Identification):1 字节,决定这条数据是什么类型。这是 IEC104 类型化的核心——不像 Modbus 全是寄存器,104 用 TI 明确区分遥信、遥测、遥控、遥脉、SOE。常见值见下表。
  • VSQ(可变结构限定词):1 字节。最高位 SQ 决定信息对象是顺序排列还是非顺序排列,低 7 位是对象个数。一条 ASDU 可以打包多个同类型点,省带宽。
  • COT(传送原因,Cause Of Transmission):2 字节,说明”为啥传这条”——是突发?是响应总召?是遥控激活?这个字段是 Modbus 完全没有的概念,让主站能区分数据的来由。
  • CA(公共地址,Common Address):2 字节,定位是哪个子站装置。相当于”站号”。

信息对象区

  • IOA(信息对象地址,Information Object Address):3 字节,定位装置内具体哪个点。
  • 信息体数据:长度由 TI 决定(单点 1B、浮点 4B 等)。
  • CP56Time2a 时标:7 字节,可选。带时标的用于 SOE(事件顺序记录)。

4.3 两级寻址

IEC104 是两级寻址CA 找装置,IOA 找装置内的点。

这比 Modbus 的单一寄存器地址灵活得多——Modbus 只有一级地址,站号 + 寄存器号是两个独立维度;104 的 CA + IOA 是真正的两级语义寻址。


五、常用 TI 类型标识表

TI 是 IEC104 的灵魂——它把数据类型化。下面是工程中最常用的一批:

5.1 遥信类(单点/双点)

TI名称说明数据长度
1M_SP_NA_1单点遥信1B (0/1)
2M_SP_TA_1单点遥信(带时标)1B + 7B 时标
3M_DP_NA_1双点遥信1B (0~3)
30M_SP_TB_1SOE 带时标单点1B + 7B 时标
31M_DP_TB_1SOE 带时标双点1B + 7B 时标

单点 vs 双点:单点就是 0/1(通/断);双点是 0~3(0=中间态、1=OFF、2=ON、3=中间态),用于断路器这种需要体现”分/合/中间态”的设备。双点是 104 比 Modbus 表达力强的一个体现。

5.2 遥测类

TI名称说明数据长度
9M_ME_NA_1归一化遥测2B (-1.0~1.0)
11M_ME_NB_1标度化遥测2B (-32768~32767)
13M_ME_NC_1短浮点遥测4B (IEEE754)

三种遥测的区别在数值表示方式:

  • 归一化(NA):值域 -1.0~1.0,需要主站配合量程换算
  • 标度化(NB):16 位有符号整数,工程上最常用
  • 短浮点(NC):32 位 IEEE754 浮点,精度最高

5.3 遥脉类

TI名称说明
15M_IT_NA_1累计量(电度)

电度表读数,累加值。

5.4 遥控/设定类

TI名称说明
45C_SC_NA_1单点遥控
46C_DC_NA_1双点遥控
50C_SE_NC_1短浮点设定值命令

遥控是 104 区别于 Modbus 的另一大亮点——它有完整的选择-执行(Select-Execute)两步握手机制,防止误操作。这个后面单独讲。


六、传送原因 COT

COT 让主站知道”这条数据为什么传过来”。常用值:

COT 值含义
3突发/自发(事件主动上送)
6激活(主站发命令时)
7激活确认(从站收到命令确认)
10激活终止(命令执行完毕)
20响应总召
37响应计数召唤

举个例子:开关变位时,从站主动上送,COT=3(突发);主站发总召请求,从站把所有点回一遍,COT=20(响应总召)。主站靠 COT 区分”这是事件”还是”这是全量扫描结果”。


七、遥控的 Select-Execute 两步握手

这是 IEC104 安全性的核心设计。Modbus 写线圈就是直接写,写错就写错了。IEC104 的遥控分两步:

先选择(Select)确认对象正确,再执行(Execute)。两步之间如果选错了对象,可以不发 Execute 中止。电力遥控误操作的后果很严重(带负荷拉刀闸、误跳开关),这个机制是保命用的。

在研华 EdgeLink 的 IEC104 驱动里,这个机制用地址格式的 /SE 后缀开关——加了 /SE 就是选择执行,不加就是直接执行(Direct Execute,一般不建议用于实际遥控)。


八、与 Modbus / IEC61850 对比

维度Modbus RTU/TCPIEC 60870-5-104IEC 61850
传输串口 / TCPTCP(端口 2404)以太网(MMS/GOOSE/SV)
寻址单一寄存器地址CA + IOA 两级LD/LN/DO 三级语义
数据类型无(全是寄存器)TI 明确分类面向对象
时标CP56Time2a,支持 SOE有,更完整
传送原因有 COT
传输模式纯轮询平衡式,事件主动上送事件+报告
链路确认有序号确认
遥控安全直接写Select-Execute 两步Select-Execute
复杂度
典型场景通用工业电力调度(站到调度)变电站内部 IED 互联

一句话总结三者关系:

  • Modbus:笨但简单,通用工业
  • IEC104:重但强,电力站到调度的事实标准
  • IEC61850:更重更现代,变电站内部面向对象互联

九、IEC104 的协议参数(t1~t3, k, w)

配置 IEC104 主从站时,会遇到这几个超时和窗口参数,都是协议规定的:

参数含义典型值
t0连接建立超时30s
t1发送方等待确认超时(发出后多久没 ACK 就重传/断链)15s
t2接收方确认超时(收到后多久内必须回 ACK)10s
t3空闲测试超时(多久没数据就发 TESTFR 心跳)20s
k最大未确认 I 帧数(发送窗口)12
w触发 S 帧确认的阈值(收到 w 帧就回 ACK)8

这几个参数主从站要匹配,尤其是 t1/t2/t3。t1 必须大于 t2,否则接收方还没来得及确认,发送方就超时重传了。


十、小结

特性说明
本质101 规约的 TCP 网络化
角色主站=TCP客户端,从站=TCP服务端,端口 2404
三种帧U(链路管理)/ S(确认)/ I(业务数据)
ASDUTI + VSQ + COT + CA + IOA + 数据 + 时标
两级寻址CA 找装置,IOA 找点
平衡传输事件主动上送,不等轮询
类型化TI 区分遥信/遥测/遥控/遥脉/SOE
时标CP56Time2a,支持 SOE 事件顺序记录
遥控安全Select-Execute 两步握手

IEC104 = 101 的 TCP 化 + 平衡传输 + 类型化数据 + SOE 时标 + 链路序号确认。它是电力 SCADA 上行通道的事实标准,做电力物联网绕不开。


系列文章导航

  • 第一篇:IEC 60870-5-104 电力远动规约详解(本文)
  • 第二篇:IEC104 模拟器仿真环境搭建与 110kV 变电站点位设计
  • 第三篇:研华 ECU-1251TL 配置 IEC104 主站实战
  • 第四篇:研华 IEC104 驱动 Tag 地址格式详解与 70 点配置表

我是散客,工业物联网一线实践者。个人网站 sanker.top,专注通信协议、边缘计算、AIoT。