104/101协议-104协议如何保证通信报文不丢失?

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

IEC 60870-5-104(简称104协议)作为电力自动化领域广泛使用的标准协议,其通信可靠性机制设计得非常经典和严谨。它主要通过 "确认重传"机制 来保证报文不丢失,这属于 TCP/IP协议族提供的可靠传输服务 的自然延伸和专业化应用。

下面将从 机制原理、关键字段、具体流程 几个层面来详细解释。

一、核心基石:TCP协议

这是104协议可靠性的根本前提

  • 104协议 = IEC 60870-5-101的应用层 + TCP/IP传输层/网络层

  • TCP(传输控制协议) 本身就提供了面向连接、可靠、有序的字节流服务。它的核心机制包括:

    1. 三次握手建立连接:保证通信双方就绪。

    2. 序列号和确认应答:每个发送的字节都有编号,接收方必须对收到的数据返回确认。

    3. 超时重传:发送方在一定时间内未收到确认,会重新发送数据。

    4. 数据校验和:检测数据在传输过程中是否损坏。

  • 因此,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。为了保证通信的兼容性,接收方在接收数据时只检查接收序列号,发送序列号不予检查。

三、具体工作流程与防丢失场景

主站(控制中心)子站(变电站/终端) 的通信为例:

场景一:子站主动上送变化数据(如通信变位)

  1. 子站产生一个通信变位,将其放入发送缓冲区,封装成 I格式帧 ,发送序列号为 Seq=10,发送给主站。

  2. 主站正确收到该帧,应用层处理此变位信息。

  3. 主站需要回复确认。它可以通过两种方式:

    • 显式确认 :立即发送一个 S格式帧 ,其中的接收序列号 Rcv=11

    • 隐式确认 :稍后主站如有下发命令或总召,其下发的 I格式帧 的控制域里会携带接收序列号 Rcv=11

  4. 子站收到确认(Rcv=11),就知道 Seq=10 的报文已被主站可靠接收,可以从发送缓冲区中清除。

  5. 如果子站发送后,在规定时间内未收到任何包含 Rcv=11 的确认 (超时,t1 超时参数,通常15秒),子站会 自动重传 Seq=10 的报文,直到收到确认为止或达到重传次数上限(触发连接复位)。

场景二:主站下发重要命令(如遥控选择)

  1. 主站下发遥控选择命令,封装成 I格式帧 ,发送序列号为 Seq=50

  2. 子站收到后,检查序列号是否正确,执行校验,然后:

    • 先回复一个 I格式帧 (如单点通信信息)或 S格式帧 ,其中的接收序列号 Rcv=51,确认收到。

    • 再处理应用层逻辑,生成"遥控选择确认"的 I格式帧 (发送序列号为子站自己的 Seq),上送给主站。

  3. 主站收到

  4. 子站对命令的确认回复(Rcv=51),才知道命令已送达子站应用层。

  5. 同样,如果主站未在 t

  6. 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 帧确认后才清除缓存数据。

四、协议的其他可靠性设计

  1. 三种帧格式协同

    • I格式 :传输实际数据。是确认机制作用的主体

    • S格式:纯确认帧。专门用于在不需传输数据时,对已收到的I帧进行确认,避免对方长时间等待而触发超时重传。

    • U格式:控制帧。用于启动、停止、测试连接,有单独的确认机制。

  2. 链路测试与保持

    • 如果通道长期空闲,为防止中间网络设备断开连接,协议规定在没有I帧需要发送时,需要定期发送 U格式的"测试帧" 并得到确认,以保持链路活性。这间接保证了通信通道本身的可用性。
  3. 连接管理与重复检测

    • 每次新建连接,发送和接收序列号都从0开始。TCP的重连机制和104自身的启动过程,保证了新旧连接数据的隔离,防止旧连接的重复报文被误认。

获取104和61850资料和调试工具,关注后发送

61850:iec61850调试工具

104:104测试专用软件

欢迎关注

相关推荐
keven-wang1 天前
104/101协议-SOE与COS有啥区别?
soc·104·101·soe
keven-wang2 天前
104/101协议-电力配电自动化中的遥脉是什么?
自动化·104·五遥·101·遥脉
keven-wang23 天前
104/101协议-电力配电自动化中的五遥是指什么?
104协议·104·五遥
keven-wang2 个月前
储能系统-集装箱储能系统通信架构和协议
modbus tcp·储能系统·61850·储能系统通信协议·104
御风@户外10 个月前
win10下github libiec61850库编译调试sntp_example
c·sntp·61850
keven-wang1 年前
IEC61850实现方案和测试-2-UCA
iec61850 uca·uca测试用例·61850一致性测试用例·61850·uca