面向通用对象的变电站事件模型GOOSE
Posted software4y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向通用对象的变电站事件模型GOOSE相关的知识,希望对你有一定的参考价值。
1 面向通用对象的变电站事件模型GOOSE
在分布式的变电站自动化系统中,IED共同协助完成自动化功能的应用场合越来越多,如间隔层的设备之间的防误闭锁、分布式母线保护等,这些功能得以完成的重要前提条件是IED之间数据通信的可靠性和实时性。基于此,IEC61850中定义了通用变电站事件(Generic Substation Event,GSE)模型,该模型提供了在全系统范围内快速可靠地输入、输出数据值的功能。
GSE分为两种不同的控制类和报文结构:①面向通用对象的变电站事件(Generic Object Oriented Substation Event,GOOSE),支持由数据集(Data-Set)组织的公共数据交换:②通用变电站状态事件(Generic Substation State Event,GSSE),用于传输状态变位信息(双比特)。如果只从抽象通信服务模型控制块(Control Block)的属性和服务定义两方面比较,GOOSE和GSSE差异不大,但实际上,两者的报文传输内容和实现机制截然不同。GSSE报文传输服务均映射于OSI的7层协议堆栈中,一方面存在协议堆栈传输延时,另一方面,此报文仍基于传统的以太网实现,不支持报文优先级和虚拟局域网、无特定的多播地址等。这使得当网络负荷较重时,难以保证报文传输的实时性。GSSE目前较少使用。下面主要介绍应用最多的GOOSE的服务。
IEC61850中定义的面向通用对象的变电站事件(GOOSE)以快速的以太网多播报文传输为基础,代替了传统的智能电子设备IED之间的硬接线的通信方式,为逻辑节点间的通信提供了快速且高效可靠的方法。GOOSE服务主要用于传输变电站内保护跳闸、断路器位置、测控联锁等实时性要求的数据,还可以传输如温湿度等模拟量信息,甚至可以传输时间同步信息等。
2 GOOSE发送机制及其特点
GOOSE报文的发送采用心跳报文和变位报文快速重发相结合的机制,按图2-5所示的规律执行。
其中T0又称心跳时间,在GOOSE数据集中的数据没有变化的情况下,装置平均每隔T0时间发送一次当前状态,即心跳报文,报文中的状态序号stNum(StateNumber用于记录GOOSE数据发生变位的总次数)不变,顺序号sqNum(SequenceNumber用于记录稳态情况下报文发出的帧数)递增。
当装置中有事件发生(如开关状态变位)时,GOOSE数据集中的数据就发生变化,装置立刻发送该数据集的所有数据,然后间隔T1发送第2帧及第3帧,间隔T2、T3发送第4、5帧,T2为2T1,T3为4T1,后续报文以此类推,发送间隔以2倍的规律逐渐增加,直到增加到T0,报文再次成为心跳报文。当数据变位后的第1帧报文中stNum增加1,sqNum从零开始,随后报文中stNum不变,sqNum递增。
工程应用中,T0设为5s,T1设为2ms。GOOSE状态变位过程共发5帧数据,即以2ms—2ms—4ms—8ms的时间间隔重发GOOSE报文,连续发5帧后便以5s时间间隔变成心跳报文。
GOOSE接收可以根据报文允许存活时间来检测链路中断,定义报文允许存活时间为2T0,接收方若超过2倍允许存活时间没有收到GOOSE报文即判为中断,发GOOSE断链报警信号。由此,通过GOOSE通信机制也实现了装置间二次回路状态在线监测。
图1 GOOSE报文传输时间
T0—稳定条件下,心跳报文传输间隔;(T0)—稳定条件下,心跳报文传输可能被事件打断;T1—事件发生后,最短的重传间隔;T2、T3一直至获得稳定条件的重传间隔。
GOOSE报文的传输过程与普通的网络报文不同,它是从应用层经过表示层ASN.1编码后,直接映射到底层的数据链路层和物理层(如图2-6所示),而不经TCP/IP协议,即不经网络层和传输层。这种映射方式避免了通信堆栈造成的传输延时,从而保证了报文传输的快速性。其中,ASN.1基本编码规则采用的编码结构由标记(Tag)、长度(Length)以及内容(Value)三个部分组成。
GOOSE采用发布者/订阅者通信结构,此通信结构支持多个通信节点之间的对等直接通信。与点对点通信结构和客户/服务器通信结构相比,发布者/订阅者通信结构是一个或多个数据源(即发布者)向多个接收者(即订阅者)发送数据的最佳解决方案,尤其适合数据流量大且实时性要求高的数据通信。发布者/订阅者通信结构符合GOOSE报文传输本质,是事件驱动的。
图2 GOOSE报文传输过程
3 GOOSE接收机制
3.1 GOOSE单网接收机制
装置的单网GOOSE接收机制,如图3 所示,装置的GOOSE接收缓冲区接收到新的GOOSE报文,接收方严格检查GOOSE报文的相关参数后,首先比较新接收帧和上一帧GOOSE报文中的StNum(状态号)参数是否相等。若两帧GOOSE报文的StNum相等,继续比较两帧GOOSE报文的SqNum(顺序号)的大小关系,若新接收GOOSE帧的SqNum大于上一帧的SqNum,丢弃此报文,否则更新接收方的数据。若两帧GOOSE报文的StNum不相等,更新接收方的数据。
图3 单网GOOSE接收示意图
3.2 GOOSE双网接收机制
装置的GOOSE双网通信方法如图4 所示,接受方和发送方都采用自动信息处理装置并通过双网相连,两个网络同时工作,装置的GOOSE接收缓冲区接收到新的GOOSE报文,接收方严格检查GOOSE报文的相关参数后,首先比较新接收帧和上一帧GOOSE报文中的StNum。若StNum大于上一帧报文,则判断为新数据,更新老数据。若StNum等于上一帧报文,再将SqNum与上一帧进行比较,如果SqNum大于等于上一帧,则判断是重传报文而丢弃,如果SqNum小于上一帧,则判断发送方是否重启装置,是则更新数据,否则丢弃数据。若StNum小于上一帧报文,则判断发送方是否重启装置,是则更新数据,否则丢弃报文。在丢弃报文的情况下,判断该网络故障,通过网络切换装置切换到备用网络进行传输。这种方法采用双网同时工作的模式,保证了传输的快速性,由接收方判别是否通信中断并决定是否更新数据,当接收到重传或因某一网络故障而传输的错误信息时,并不会更新数据,从而保证了数据的可靠性。
图4 双网GOOSE接收示意图
4 GOOSE报文帧结构
根据IEC61850标准,GOOSE报文在数据链路层上采用ISO/IEC 8802-3以太网协议,GOOSE报文由报文头和协议数据单元PDU两部分组成,报文头部分如图5 所示,协议数据单元PDU部分如图6 所示。
图5 GOOSE报文头部分
图6 GOOSE PDU部分
GOOSE报文头各参数含义如下:
(1)6个字节的目的地址“01 0c cd 01 00 33”和6个字节的源地址“00 10 00 00 00 33”。对于GOOSE报文的目的地址,前三个字节固定为“01-0C-CD”,第四个字节为“01”时代表GOOSE。IEC61850规定GOOSE报文目的地址取值范围为01-0C-CD-01-00-00~01-0C-CD-01-01-ff。
(2)地址字段后面是4个字节的Tag标签头信息“81 00 80 00”。“81 00”是TPID的固定值;“8000”换算成二进制数为“1000000000000000”,它包括三个部分的内容,用户优先级占据前三个Bit位“100”,CFI占第四个Bit位“0”,VLAN ID占最后十二个Bit位“000000000000”,换算成十进制数后可以看出优先级为4,VLAN ID为0。
(3)Tag标签头后是以太网类型值“88 b8”,代表该数据帧是一个GOOSE报文。IEC 61850中各种报文的以太网类型已经由IEEE的著作权注册机构进行了注册,是独一无二的,GOOSE报文的以太网类型值是0x88B8。
(4)紧接着是应用标识APPID“00 33”,该值全站唯一。
(5)APPID后面是长度字段“00 b6”,换算成十进制数为182,表示数据帧从APPID开始到应用协议数据单元APDU结束的部分共有182个字节。
(6)保留位1和保留位2共占有4个字节,默认值为“00 00 00 00”。
GOOSE 协议数据单元PDU各参数含义如下:
(1)gocbRef:即GOOSE控制块引用,由分层模型中的逻辑设备名、逻辑节点名、功能约束和控制块名级联而成。
(2)Time Allowed to Live:即报文允许生存时间,该参数值一般为心跳时间T0值的2倍,如果接收端超过2T0时间内没有收到报文则判断报文丢失,在4T0时间内没有收到下一帧报文即判断为GOOSE通信中断,判出中断后装置会发出GOOSE断链报警。
(3)dataset:即GOOSE控制块所对应的GOOSE数据集引用名,由逻辑设备名、逻辑节点名和数据集名级联而成。报文中Data部分传输的就是该数据集的成员值。
(4)goID:该参数是每个GOOSE报文的唯一性标识,该参数的作用和目的地址、APPID的作用类似。接收方通过对目的地址、APPID和goID等参数进行检查,判断是否是其所订阅的报文。
(5)t:即Event TimeStamp,事件时标,其值为GOOSE数据发生变位的时间,即状态号stNum加1的时间。
(6)stNum:即StateNumber,状态序号,用于记录GOOSE数据发生变位的总次数。
(7)sqNum:即SequenceNumber,顺序号SqNum,用于记录稳态情况下报文发出的帧数,装置每发出一帧GOOSE报文,SqNum应加1;当有GOOSE数据变化时,该值归0,从头开始重新计数。
(8)test:检修标识,用于表示发出该GOOSE报文的装置是否处于检修状态。当检修压板投入时,test标识应为True。
(9)confRev:配置版本号,Config Revision是一个计数器,代表GOOSE数据集配置被改变的次数。当对GOOSE数据集成员进行重新排序、删除等操作时,GOOSE数据集配置被改变。配置每改变一次,版本号应加1。
(10)ndsCom:即Needs Commissioning,该参数是一个布尔型变量,用于指示GOOSE是否需要进一步配置。
(11)NumDataSetEntries:即数据集条目数,图中其值为“19”,代表该GOOSE数据集中含有19个成员,相应地报文Data部分含有19个数据条目。
(12)Data:该部分是GOOSE报文所传输的数据当前值。Data部分各个条目的含义、先后次序和所属的数据类型都是由配置文件中的GOOSE数据集定义的。
引用自:http://www.pinlue.com/article/2017/06/0602/072485561456.html
以上是关于面向通用对象的变电站事件模型GOOSE的主要内容,如果未能解决你的问题,请参考以下文章
苏浪浪 201771010120 面向对象程序设计(Java)第13周
冯志霞201771010107《面向对象程序设计(java)》第十三周学习