已更新系列文章包括104、61850、modbus 、储能系统等,欢迎关注

IEC 60870-5-104(简称104协议)作为电力自动化领域广泛使用的标准协议,其通信可靠性机制设计得非常经典和严谨。它主要通过 "确认重传"机制 来保证报文不丢失,这属于 TCP/IP协议族提供的可靠传输服务 的自然延伸和专业化应用。
下面将从 机制原理、关键字段、具体流程 几个层面来详细解释。
一、核心基石:TCP协议
这是104协议可靠性的根本前提。
-
104协议 = IEC 60870-5-101的应用层 + TCP/IP传输层/网络层。
-
TCP(传输控制协议) 本身就提供了面向连接、可靠、有序的字节流服务。它的核心机制包括:
-
三次握手建立连接:保证通信双方就绪。
-
序列号和确认应答:每个发送的字节都有编号,接收方必须对收到的数据返回确认。
-
超时重传:发送方在一定时间内未收到确认,会重新发送数据。
-
数据校验和:检测数据在传输过程中是否损坏。
-
-
因此,104协议在传输层以下 的报文丢失、错序、错误问题,已经由TCP协议解决了。104协议自身要解决的是应用层的"数据不丢失"。
二、104协议应用层的可靠性保障机制
104协议在应用层定义了帧计数和确认规则 ,主要解决"我发出的控制命令或数据,对方应用层是否成功接收并处理?" 的问题。
其核心依赖于发送序列号 和接收序列号 这两个关键字段,它们包含在每个 I格式帧(携带应用数据的报文)的控制域中。

1. 关键概念:帧编号
-
发送序列号 :发送方每发出一个 I格式 报文(无论是遥测、遥信还是遥控命令),这个序号就 +1(从0到65535循环)。
-
接收序列号 :发送方通过这个序号来 确认 自己已经成功收到了对方发来的哪些 I格式 报文。它等于 期望接收到的下一个报文的发送序列号。
2. 核心机制:确认与窗口
-
确认机制:
-
接收方在收到有效的 I格式 报文后,必须在一个合理的延迟内,回复一个 S格式帧 (只包含接收序列号的控制帧,用于确认)或一个反向传输的 I格式帧(其控制域中会携带最新的接收序列号)。

- 例如,主站收到子站发来的发送序列号为
N的报文,它回复的S格式帧中的接收序列号就是N+1,意思是:"我已经正确收到了序列号N及之前的所有报文,下次请从N+1开始发。"
-
-
发送/接收窗口 :为了流量控制,协议规定在未收到确认的情况下,连续发送的I格式报文数量不能超过一个预设的"窗口大小" (通常默认
k=12,w=8)。这能防止发送方淹没接收方,也便于重传管理。
注意事项:
在创建一个 TCP 连接后,发送和接收序列号都被设置成0。为了保证通信的兼容性,接收方在接收数据时只检查接收序列号,发送序列号不予检查。
三、具体工作流程与防丢失场景
用 主站(控制中心) 和 子站(变电站/终端) 的通信为例:
场景一:子站主动上送变化数据(如通信变位)
-
子站产生一个通信变位,将其放入发送缓冲区,封装成 I格式帧 ,发送序列号为
Seq=10,发送给主站。 -
主站正确收到该帧,应用层处理此变位信息。
-
主站需要回复确认。它可以通过两种方式:
-
显式确认 :立即发送一个 S格式帧 ,其中的接收序列号
Rcv=11。 -
隐式确认 :稍后主站如有下发命令或总召,其下发的 I格式帧 的控制域里会携带接收序列号
Rcv=11。
-
-
子站收到确认(
Rcv=11),就知道Seq=10的报文已被主站可靠接收,可以从发送缓冲区中清除。 -
如果子站发送后,在规定时间内未收到任何包含
Rcv=11的确认 (超时,t1超时参数,通常15秒),子站会 自动重传Seq=10的报文,直到收到确认为止或达到重传次数上限(触发连接复位)。
场景二:主站下发重要命令(如遥控选择)
-
主站下发遥控选择命令,封装成 I格式帧 ,发送序列号为
Seq=50。 -
子站收到后,检查序列号是否正确,执行校验,然后:
-
先回复一个 I格式帧 (如单点通信信息)或 S格式帧 ,其中的接收序列号
Rcv=51,确认收到。 -
再处理应用层逻辑,生成"遥控选择确认"的 I格式帧 (发送序列号为子站自己的
Seq),上送给主站。
-
-
主站收到
-
子站对命令的确认回复(
Rcv=51),才知道命令已送达子站应用层。 -
同样,如果主站未在
t -
1超时内收到确认,会重发Seq=50的遥控选择命令。
场景三:遥信报文异常场景
1、上行数据报文丢失
如果遥信报文在传送过程中由于某种错误而丢失,主站无法接收到遥信变位信息,此时当终端向主站发出下一帧 I 格式报文数据后,配电主站将发现终端报文序列号出错,此时主站关闭通道并进行重连,重连成功后依次进行8.1.1和8.1.2所描述的初始化和总召唤过程,以上过程完成后配电终端将缓存的遥信数据重新上送,直到收到配电主站的 S 帧确认后才清除缓存数据。

2:序列号出错
如果遥信报文在传送过程中由于上一帧报文出现某种错误而丢失,配电主站在接收到遥信报文后将发现终端报文序列号出错,此时主站关闭通道并进行重连,重连成功后依次进行 8.1.1 和 8.1.2 所描述的初始化和总召唤过程,以上过程完成后配电终端将缓存的遥信数据重新上送,直到收到配电主站的 S 帧确认后才清除缓存数据。

3:K 值超限
如果遥信报文在传送过程中由于某种错误而导致主站回复的 S 帧报文丢失,配电终端将继续发送剩下的数据,直到 K 值等于 12 后停止发送。此时等待 t1 超时,t1 超时后配电终端将关闭 TCP 连接,此时主站进行重连,重连成功后依次进行 8.1.1 和 8.1.2 所描述的初始化和总召唤过程,以上过程完成后配电终端将缓存的遥信数据重新上送,直到收到配电主站
的 S 帧确认后才清除缓存数据。

四、协议的其他可靠性设计
-
三种帧格式协同:
-
I格式 :传输实际数据。是确认机制作用的主体。
-
S格式:纯确认帧。专门用于在不需传输数据时,对已收到的I帧进行确认,避免对方长时间等待而触发超时重传。
-
U格式:控制帧。用于启动、停止、测试连接,有单独的确认机制。
-
-
链路测试与保持:
- 如果通道长期空闲,为防止中间网络设备断开连接,协议规定在没有I帧需要发送时,需要定期发送 U格式的"测试帧" 并得到确认,以保持链路活性。这间接保证了通信通道本身的可用性。
-
连接管理与重复检测:
- 每次新建连接,发送和接收序列号都从0开始。TCP的重连机制和104自身的启动过程,保证了新旧连接数据的隔离,防止旧连接的重复报文被误认。
获取104和61850资料和调试工具,关注后发送
61850:iec61850调试工具
104:104测试专用软件
欢迎关注
