IEC 104规约报文解析

  IEC 104规约(全称IEC 60870-5-104)是国际电工委员会制定的电力自动化领域核心通信协议。它基于TCP/IP网络传输,是IEC 60870-5-101规约的网络化扩展,用于实现控制中心(如调度主站)与变电站、远程终端单元(RTU)等子站之间的实时数据监控与控制。由于其基于标准以太网和TCP/IP协议栈,IEC 104具备实时性强、长连接、易于集成现代网络等优势,被广泛应用于变电站自动化、配电自动化、SCADA系统和新能源发电监控等领域。理解其报文结构是进行系统开发、集成、调试和故障排查的基础。

  一、报文层次结构:APDU / APCI / ASDU

  IEC 104报文遵循清晰的分层结构。其基本传输单元是 应用规约数据单元(APDU,Application Protocol Data Unit)‍ ,作为TCP报文的负载进行传输。APDU本身由两部分组成: 应用规约控制信息(APCI,Application Protocol Control Information)‍ 和 应用服务数据单元(ASDU,Application Service Data Unit)‍ 。

  •   APCI:位于APDU的头部,负责报文传输的控制和管理,如标识报文起始、长度和类型。
  •   ASDU:位于APCI之后,是报文的“数据核心”,包含了实际需要传输的应用层信息,如遥测值、遥信状态、遥控命令等。

  一个APDU的结构可以示意为 [APDU] = [APCI] + [ASDU]。其中,APCI部分固定为6个字节,而ASDU部分长度可变。

  二、三种报文帧格式:I帧、S帧、U帧

  根据APCI中控制域的不同,IEC 104报文分为三种类型的信息帧,每种帧服务于不同的通信功能。

  I帧(Information Format,信息传输帧)

  功能:用于传输包含实际应用数据的报文,如遥测、遥信、遥控、遥调等命令和响应。

  结构:I帧是长帧,长度大于6个字节。它必须包含APCI和ASDU两部分。

  关键字段:APCI的控制域中包含 发送序列号(N(S))‍ 和 接收序列号(N(R))‍ ,用于实现可靠的数据传输和流量控制。

  S帧(Supervisory Format,监视/确认帧)

  功能:主要用于对接收到的I帧进行确认,告知发送方已正确接收了序号为N(R)之前的I帧。当接收方没有I帧需要发送(即无数据点对点回应)时,会发送S帧来确认接收。

  结构:S帧是短帧,长度固定为6个字节。它只包含APCI,不包含ASDU。

  关键字段:APCI的控制域中仅包含接收序列号(N(R)),用于确认已接收的I帧。

  U帧(Unnumbered Format,无编号控制帧)

  功能:用于链路的过程控制,不传输具体的应用数据。主要包括三种命令: 启动数据传输(STARTDT)‍ 、 停止数据传输(STOPDT)‍ 和 测试链路(TESTFR)‍ 。

  结构:U帧也是短帧,长度固定为6个字节。它只包含APCI,不包含ASDU。

  关键字段:APCI的控制域使用特定的比特位(bit)来标识具体的控制命令,如开始、停止或测试。

  三种帧的对比总结:

帧类型长度包含ASDU核心功能控制域包含
I帧>6字节 (长帧)传输实际数据(遥测、遥信、遥控等)N(S) 和 N(R)
S帧6字节 (短帧)确认接收到的I帧仅 N(R)
U帧6字节 (短帧)链路控制(启动、停止、测试)控制命令标识位

  三、报文各关键字段详细解析

  对一个具体的IEC 104报文进行解析,需要逐步解读从APCI到ASDU的各个字段。

  1. 应用协议控制信息(APCI)解析

  APCI由以下字段组成,固定6个字节:

  启动字符(Start Byte)‍ :1个字节。固定为0x68.用于标识一个IEC 104报文的开始。

  APDU长度(Length Field)‍ :1个字节。指示APDU体中剩余字节数,即控制域(4字节)加上ASDU部分的总长度。其值最大为253.

  控制域(Control Field)‍ :4个字节。这是解析帧类型和序列号的核心。根据前两个比特(bit)或比特组合,可以判定帧类型:

  I帧:第一个字节的bit1 (LSB) = 0.

  S帧:第一个字节的bit1 (LSB) = 1. bit2 = 0.

  U帧:第一个字节的bit1 (LSB) = 1. bit2 = 1.

  具体序列号解析

  I帧:控制域的前两个字节的低7位构成 发送序列号 (N(S)) ;后两个字节的低7位构成 接收序列号 (N(R))。每个序列号均为0-127的循环计数。

  S帧:前两个字节固定为特定值(如01 00),后两个字节的低7位构成 接收序列号 (N(R)) 。

  U帧:控制域使用高字节的特定比特位来区分命令,如 STARTDT(07 00 00 00)、STOPDT(13 00 00 00)、TESTFR(43 00 00 00)等。

  2. 应用服务数据单元(ASDU)解析

  只有I帧包含ASDU。ASDU由头部和数据体组成,是报文解析的重点:

  类型标识(Type Identifier, TI)‍ :1个字节。定义后续信息对象的类型和结构,是整个ASDU解析的纲领。例如:

  0x01 (M_SP_NA_1):单点遥信(不带时标)。

  0x0D (M_ME_NB_1):归一化遥测值(不带时标)。

  0x2D (C_SC_NA_1):单点遥控命令。

  0x64 (C_IC_NA_1):总召唤命令。

  可变结构限定词(Variable Structure Qualifier, VSQ)‍ :1个字节。其高比特位(bit8.即SQ位)决定信息对象地址的排列方式:

  SQ=0:信息对象地址非连续,每个信息体都携带自己完整的对象地址。

  SQ=1:信息对象地址连续,只需给出第一个信息体的地址,后续元素的地址依次加1.这种方式能有效节省报文空间。

  该字节的低7位表示ASDU中包含的信息对象个数N

  传送原因(Cause of Transmission, COT)‍ :2个字节。用于解释本次数据传输的起因、目的或结果。例如:

  0x03:突发/自发(Spontaneous)。

  0x06:激活(Activation)。

  0x07:激活确认(Activation Confirmation)。

  0x0A:总召唤/站召唤(Station/Cyclic/General Interrogation)。

  公共地址(Common Address of ASDU)‍ :2个字节。用于标识数据来源或目标的 站地址(RTU地址)‍。在同一个TCP连接中,主站和子站通过此地址区分不同的设备或逻辑单元。

  信息体:这是ASDU的实际数据负载部分。

  信息对象地址(Information Object Address, IOA)‍ :在IEC 104中,IOA固定长度为3个字节。这是唯一的地址,用于在一个站内定位具体的测点或设备,例如遥信的第1个点、遥测的第100个点等。第三个字节通常用于高层次的结构化地址编码,在简单的应用中可设置为0.

  信息对象值(Information Object Value)‍ :根据类型标识的定义,包含具体的数值。例如,单点遥信通常占用1个比特,归一化遥测值占用2个字节(16位有符号整数)等。

  四、典型通信流程与报文交互示例

  理解IEC 104的“握手”和“数据交换”过程,对解析报文至关重要:

  TCP连接建立:客户端(主站)主动向服务器端(子站)的TCP端口2404发起连接请求。

  STARTDT激活(链路启动)‍ :连接建立后,主站向子站发送一个STARTDT的U帧,请求开始数据传输。子站收到后,回复一个STARTDT CON的U帧进行确认。至此,数据传输通道建立。

  总召唤(轮询数据)‍ :主站发送一个类型标识为0x64(总召唤)的I帧。子站收到后,回复一个传送原因为0x07(激活确认)的I帧。随后,子站开始向主站发送全部的点表数据(多个I帧),最后以一个传送原因为0x0A(总召唤结束)的I帧来结束本轮召唤。

  周期数据上送:在正常运行过程中,子站会按照配置,周期性地通过I帧上送遥测、遥信等变化数据。

  报文确认:无论是主站还是子站,在收到对方的I帧后,都需要回复一个S帧(或者在自己发的下一个I帧中携带接收序列号N(R))来进行确认,以保证数据的可靠传输。

  主动上报(突发数据)‍ :当子站检测到事件(如开关变位、遥测越限)时,会主动发送一个传送原因为0x03(突发)的I帧给主站。

  链路测试与关闭:当链路空闲时,任一方可以发送TESTFR的U帧来测试链路是否正常。通信结束后,主站可以发送STOPDT U帧停止数据传输。

  五、总结与进阶建议

  IEC 104规约报文解析是一项结合了标准理解和抓包分析的实践技能。关键点在于:

  •   分层理解:明确APCI负责通信控制,ASDU负责携带具体业务数据。
  •   状态机思维:理解I、S、U帧在不同通信流程(连接、启动、传数、确认)中扮演的角色。
  •   按图索骥:从报文头开始,按照“启动字符 -> 长度 -> 控制域 -> 类型标识 -> 可变结构 -> 传送原因 -> 公共地址 -> 信息对象”的顺序进行逐字节拆解。常用工具如 Wireshark 已经支持对IEC 104协议的深度解析,便于学习。

  深入掌握IEC 104解析,不仅仅能读懂二进制流,更能理解整个电力自动化系统的通信逻辑。对于高级应用,可以进一步研究时间同步机制镜像(Redundancy)连接处理以及根据ASDU类型标识构造通信测试报文,从而在系统集成、调试与安全分析中游刃有余。随着新能源和微电网的普及,IEC 104在复杂拓扑下的扩展应用也将是其未来的重要方向。

滚动至顶部