🐈一、基础概念
🐈⬛1.1 GOOSE报文
🐈⬛1.2 GSE模型
🐈二、GOOSE报文发送与链路监测机制
🐈⬛2.1 稳态心跳报文机制
🐈⬛2.2 变位事件报文发送机制
🐈⬛2.3 工程参数配置(重要!实际应用)
🐈⬛2.4 链路中断监测机制
🐈三、GOOSE接收机制
🐈⬛3.1 单网接收机制
🐈⬛3.2 双网接收机制
🐈四、ASN.1编码规则
🐈⬛4.1 Tag(标签)
🐈⬛4.2 Length(长度)
🐈⬛4.3 Value(内容)
🐈五、GOOSE报文结构
GOOSE:Generic Object Oriented Substation Event,即面向对象的通用变电站事件。
GOOSE信息主要包括开关/刀闸位置、控制开关位置、异常/告警信号、闭锁信号等。GOOSE链路相当于传统站中的直流控制和信号电缆,传输的是控制指令和信号,例如设备处于什么状态(正常/异常,分闸/合闸,动作/复归,联锁/解锁,使能/闭锁,投入/退出,非全相,SF6压力降低等)。GOOSE服务器通过重发相同数据主要是为了获得额外的可靠性。
🐈一、基础概念
🐈⬛1.1 GOOSE报文
GOOSE以快速的以太网多播报文传输为基础,代替了传统的智能电子设备IED之间的硬接线的通信方式,为逻辑节点间的通信提供了快速且高效可靠的方法。GOOSE服务主要用于传输变电站内保护跳闸、断路器位置、测控联锁等实时性要求的数据,还可以传输如温湿度等模拟量信息,甚至可以传输时间同步信息等。
GOOSE报文的传输过程与普通的网络报文不同,它是从应用层经过表示层ASN.1编码后,直接映射到底层的数据链路层和物理层,而不经TCP/IP协议,即不经网络层和传输层。这种映射方式避免了通信堆栈造成的传输延时,从而保证了报文传输的快速性。
Goose报文在网络上传输时采用的是OSI模型,但只用到OSI网络模型七层中的四层:应用层、表示层、数据链路层和物理层,传输层和网络层为空。应用层定义协议数据单元PDU,经过表示层编码后,不采用TCP/IP协议,而是直接映射到数据链路层和物理层。这种映射方式的目的是避免通信堆栈造成传输延时,从而保证报文传输、处理的快速性。
🐈⬛1.2 GSE模型
通用变电站事件(GSE)模型包含两种类型:
| 类型 | 全称 | 说明 |
|---|---|---|
| GSSE | 通用变电站状态事件 | 双比特用于传输状态变位信息。GSSE报文传输服务均映射于OSI的7层协议堆栈中,一方面存在协议堆栈传输延时,另一方面此报文仍基于传统的以太网实现,不支持报文优先级和虚拟局域网、无特定的多播地址等。这使得当网络负荷较重时,难以保证报文传输的实时性。(差) |
| GOOSE | 面向通用对象的变电站事件 | 支持由数据集组织的公共数据交换。GOOSE报文传输服务只用到OSI网络模型七层中的四层,以快速的以太网多播报文传输为基础,代替了传统的智能电子设备IED之间的硬接线的通信方式,为逻辑节点间的通信提供了快速且高效可靠的方法。(好) |
🐈二、GOOSE报文发送与链路监测机制
🐈⬛2.1 稳态心跳报文机制
T0为心跳时间。当GOOSE数据集数据无任何变化、装置处于稳态运行时,设备会平均每隔T0时间主动发送一次当前设备状态报文,该报文即为心跳报文。
心跳报文序号规则:
状态序号 StateNumber(stNum:0~FFFFFFFF):数值保持不变,该参数用于记录GOOSE数据发生变位的总次数,稳态无变位时不更新,变位时更新数值。反映出GOOSE报文中数据值与上一帧报文数据值是否有变化。
顺序序号 SequenceNumber(sqNum:0~FFFFFFFF):数值持续递增,该参数用于记录稳态场景下报文的发送帧数。反映出在无变化事件情况下,GOOSE报文发送的次数(到最大值后,将归0重新开始计数)。
🐈⬛2.2 变位事件报文发送机制
当装置发生开关变位、状态变更等事件,GOOSE数据集数据同步更新,设备会立即触发变位报文发送,采用快速重传、间隔递增的发送逻辑,保障变位信息可靠传输。
(1)发送间隔规则
数据变位后,首帧报文瞬时发送,后续报文间隔按倍数规律递增:
| 帧序号 | 发送间隔 | 说明 |
|---|---|---|
| 第1帧 | 瞬时发送 | 变位发生后立即发送 |
| 第2帧 | T1 | 最短重传间隔 |
| 第3帧 | T1 | 最短重传间隔 |
| 第4帧 | T2 = 2T1 | 间隔翻倍 |
| 第5帧 | T3 = 4T1 | 再次翻倍 |
| 后续报文 | 持续以2倍规律递增 | 直至间隔时长等于T0,切换为稳态心跳报文发送模式 |
(2)报文序号规则
变位后第1帧报文:stNum自增1(记录本次变位事件),sqNum归零重启
后续重传报文:stNum保持不变,sqNum持续递增
🐈⬛2.3 工程参数配置(重要!实际应用)
现场工程应用中,固定参数配置如下:
心跳周期T0 = 5s
变位初始重传间隔T1 = 2ms
2248规则(重要!):单次GOOSE状态变位事件,设备固定连续发送5帧数据报文,具体发送间隔序列为:2ms → 2ms → 4ms → 8ms。5帧变位报文发送完成后,设备恢复5s周期的心跳报文发送模式。
反映事件稳态与变化过程的完整序列:
在稳态情况下,GOOSE源将稳定的以T0(5s)时间间隔循环发送GOOSE报文;
当有事件变化时,GOOSE服务器立即发送事件变化报文,此时T0(5s)时间间隔将被缩短;
在变化事件发送完成后,GOOSE服务器将以最短时间间隔T1(2ms)快速重传两次变化报文;
在三次快速传输完成后,GOOSE服务器将以T2(4ms)、T3(8ms)各传输一次变位报文;
最后GOOSE服务器又将进入稳态传输过程,以T0(5s)时间间隔循环发送GOOSE报文。
🐈⬛2.4 链路中断监测机制
依托GOOSE报文心跳机制,可实现装置间二次回路状态在线监测,自动判别链路中断并报警。
(1)监测判定标准
定义报文允许存活时间:TimeAllowedToLive = 2T0
中断判定条件:接收方超过2倍稳态心跳发送周期(即2T0)未收到任何GOOSE报文,即刻判定通信链路中断
(2)联动逻辑
链路中断判定生效后,系统自动触发GOOSE断链报警信号,实现二次回路状态的实时在线监控,保障电力通信回路运行可靠性
🐈三、GOOSE接收机制
🐈⬛3.1 单网接收机制
(1)首先比较新接收帧和上一帧GOOSE报文中的StNum(状态号)参数是否相等。
(2)若两帧GOOSE报文的StNum相等,继续比较两帧GOOSE报文的SqNum(顺序号):
若新接收GOOSE帧的SqNum大于上一帧的SqNum,则判断是重传报文而丢弃;
若新接收GOOSE帧的SqNum小于上一帧的SqNum,判断发送方是否重启装置,是则更新数据,否则丢弃数据。
(3)若新接收GOOSE报文帧的StNum大,则为新状态,更新接收方的数据。
(4)若新接收GOOSE报文帧的StNum小,则为异常或者重启,更新接收方的数据。
🐈⬛3.2 双网接收机制
发送方A、B双网发一模一样的报文。接收方同时监听A、B两网,但全局只维护一套StNum、SqNum。在丢弃报文的情况下,判断该网络故障,通过网络切换装置切换到备用网络进行传输。
这种方法采用双网同时工作的模式,保证了传输的快速性,由接收方判别是否通信中断并决定是否更新数据,当接收到重传或因某一网络故障而传输的错误信息时,并不会更新数据,从而保证了数据的可靠性。
🐈四、ASN.1编码规则
GOOSE/SV报文采用ASN.1 BER(Basic Encoding Rules)编码。
编码结构由三部分组成:标记(Tag)+长度(Length)+内容(Value)。
🐈⬛4.1 Tag(标签)
Tag号是十进制数,但是在报文中的表示是用十六进制表示的。
(1)1 字节(Tag 号0–30):形式——0xMN(M、N为任意十六进制数)
位 8–7:类别
00=Universal(标准类型)
01=Application(应用自定义)
10=Context-specific(上下文相关)
11=Private(私有)
位 6:0 = 原始(Primitive),1 = 构造(Constructed,含子项)
位 5–1:Tag 号(0–30)
(2)多字节(Tag号≥31):形式——0xRF0xMN 0xPQ ……(R、M、N、P、Q为十六进制数)
首字节位 8、7、6规则不变,首字节 5–1 全 1。
后续字节最高位 = 1,表示还有下一字节;最高位 = 0 ,表示最后一个字节。每个字节只使用低 7 位表示数字!
(3)示例
示例一:Tag = 0x61(十六进制数),对应二进制数01100001;
01表示Application,1表示构造,00001表示Tag号为1。
示例二:Tag = 0xFF 0x1F(十六进制数),对应二进制数11111111 00011111;
11表示Private,1表示构造,第二个字节里00011111表示Tag号为31。
示例三:Tag = 0xBF 0x41(十六进制数),对应二进制数10111111 01000001
10表示Context-specific,1表示构造,第二个字节里01000001表示Tag号为65
🐈⬛4.2 Length(长度)
短格式(1 字节):最高位 0,后 7 位表示长度(0–127)。
示例:长度为19,即00010011,即0x13。
长格式(≥2 字节):最高位 1,后 7 位表示后续字节数,再跟长度值(大端)。
示例:长度为139,即1000000110001011,即0x81 0x8B。
不定长(仅 BER/CER):Length=0x80,Value 以 0x0000 结尾(DER 禁止)。
Length字段的字节数不确定。假定数据域的字节数为n,编码规则如下:
| 条件 | 编码方式 |
|---|---|
| n ≤ 127 | 长度 = 1字节,直接写n的值 |
| n > 127 | 第1字节:0x80 + 后续字节个数;后续字节:n的十六进制(高位在前) |
🐈⬛4.3 Value(内容)
原始类型(如 INTEGER、BOOLEAN):直接二进制编码(大端)。
构造类型(如 SEQUENCE、SET):嵌套多个 TLV。
🐈五、GOOSE报文结构
详见GOOSE报文详细解析(下篇)
GOOSE报文详细解析(下篇)https://blog.csdn.net/m0_62876521/article/details/161721228