当前位置: 首页 > 工具软件 > gse > 使用案例 >

GSE/GOOSE简介与报文格式

尤博达
2023-12-01

简介

GSE主要出现在IEC61850-7-2和IEC61850-8中,前者定义了ACSI(抽象通信服务接口),后者实现了SCSM(具体通信服务映射)到GSE的映射。

在分布式的变电站自动化系统中,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差异不大,但实际上,两者的报文传输内容和实现机制截然不同。

GOOSE采用发布者/订阅者通信结构,此通信结构支持多个通信节点之间的对等直接通信。与点对点通信结构和客户/服务器通信结构相比,发布者/订阅者通信结构是一个或多个数据源(即发布者)向多个接收者(即订阅者)发送数据的最佳解决方案,尤其适合数据流量大且实时性要求高的数据通信。发布者/订阅者通信结构符合GOOSE报文传输本质,是事件驱动的。

功能

GSSE其实是UCA2.0中定义的GOOSE,但它不支持报文优先级和虚拟局域网、无特定的多播地址等。这使得当网络负荷较重时,难以保证报文传输的实时性。GSSE目前较少使用。

从协议解析层面来看,目前已知其报文格式,包括Header,DNA和User Bits三部分,DNA的格式也可以查到,但是源文档GOMSFE .9, January 14, 1999难以获得,其次网上找不到GSSE的PCAP包,故目前暂不支持GSSE的解析。

GSE涉及两个类,10种服务。分别是GOOSE控制块类和GSSE控制块类,每个类下有5种服务。这10种服务中只有SendGSSEMessage没有明确定义,其他均已支持解析。

GoCB类

属性名属性类型FCTrgOp值/值域/解释
GoCBNameObjectNameGO-GoCB实例的实例名
GoCBRefObjectReferenceGO-GoCB实例的路径名
GoEnaBOOLEANGOdchg使能 (TRUE) |停止使能 (FALSE)
AppIDVISIBLE STRING65GO用户赋予发出 GOOSE的应用系统唯一标识,缺省为GoCRef
DatSetObjectReferenceGOdchg数据集,成员从1开始编号,每个成员有唯一数字和MemberReference或功能约束DataAttribute
ConfRevINT32UGOdchg表示由DatSet引用的DATA-SET配置改变次数的计数值
NdsComBOOLEANGOdchg

服务

服务描述
SendGOOSEMessage发送GOOSE报文.
GetGoReference检索和GOOSE报文有关的DATA-SET特定成员的FCD/FCDA
GetGOOSEElementNumber检索和FCD/FCDA的GOOSE报文有关的DATA-SET成员的位置
GetGoCBValues检索GoCB的属性
SetGoCBValuesGoCB的属性

GsCB类

属性名属性类型FC值/值域/解释
GsCBNameObjectNameGsCB实例的实例名
GsCBRefObjectReferenceGsCB实例的路径名
GsEnaBOOLEANGS使能(TRUE) | 停止使能(FALSE)
AppIDVISIBLE STRING65GSGsCB所位于的 LOGICAL-DEVICE
DataLabel [1…n]VISIBLE STRING65GSLastSentData属性内每一个条目所使用的引用
LSentData [1…n]GSSEDataGS取自GSSE报文,代表最近一次GSSE报文发送的数据值

服务

服务描述
SendGSSEMessage发送GSSE报文.
GetGsReference检索和GSSE报文有关的特定值的DataLabel.
GetGSEEDataOffset检索和DataLabelGSSE报文有关的特定值的位置.
GetGsCBValues检索GsCB的属性.
SetGsCBValuesGsCB的属性.

GSE的asn格式描述如下,但其不包含GSSE,来源是IEC61859-8-1,但是原始的代码格式已经不支持现在版本的ASN1编译器,以下代码是参考原始代码和wireshar代码修改过的版本。

IEC61850 DEFINITIONS ::= BEGIN

IEC61850SpecificProtocol ::= CHOICE {
	gseMngtPdu [APPLICATION 0] IMPLICIT GSEMngtPdu,
	goosePdu [APPLICATION 1] IMPLICIT IECGoosePdu
}

GSEMngtPdu ::= SEQUENCE  {
	stateID  	[0] IMPLICIT INTEGER,
	security 	[3] ANY OPTIONAL,
	requestResp	RequestResponse
}

RequestResponse ::= CHOICE{
		requests			[1] EXPLICIT GSEMngtRequests,
		responses			[2] EXPLICIT GSEMngtResponses
}

GSEMngtRequests ::= CHOICE {
	getGoReference   	        [1] IMPLICIT GetReferenceRequestPdu,
	getGOOSEElementNumber 	    [2] IMPLICIT GetElementRequestPdu,
	getGsReference	            [3] IMPLICIT GetReferenceRequestPdu,
	getGSSEDataOffset	        [4] IMPLICIT GetElementRequestPdu,
	...
}


GSEMngtResponses ::= CHOICE {
	gseMngtNotSupported		[0] IMPLICIT NULL,
	getGoReference     	    [1] IMPLICIT GSEMngtResponsePdu,
	getGOOSEElementNumber   [2] IMPLICIT GSEMngtResponsePdu,
	getGsReference			[3] IMPLICIT GSEMngtResponsePdu,
	getGSSEDataOffset		[4] IMPLICIT GSEMngtResponsePdu,
	...
}


GetReferenceRequestPdu ::= SEQUENCE {
	ident	  		[0] IMPLICIT VisibleString,   
	-- 可支持多达 65个八位组
	offset			[1] IMPLICIT SEQUENCE OF INTEGER,
	...
}


GetElementRequestPdu ::= SEQUENCE {
	ident   	[0] IMPLICIT VisibleString,   
	--可支持多达 65个八位组
	references 	[1] IMPLICIT SEQUENCE OF VisibleString,
	...
}

GSEMngtResponsePdu ::= SEQUENCE {
	ident		[0] IMPLICIT VisibleString,
	-- 返回请求的值
	confRev	    [1] IMPLICIT INTEGER OPTIONAL,
	posNeg		PositiveNegative,
	...
}


PositiveNegative ::= CHOICE{
		responsePositive  [2] IMPLICIT SEQUENCE {
			datSet         [0] IMPLICIT VisibleString OPTIONAL,
			result  	[1] IMPLICIT SEQUENCE OF RequestResults
			},
		responseNegative [3] IMPLICIT GlbErrors
}

RequestResults::= CHOICE {
	offset		[0] IMPLICIT INTEGER,
	reference	[1] IMPLICIT IA5String,
	error		[2] IMPLICIT ErrorReason
}


GlbErrors ::= INTEGER {
	other(0),
	unknownControlBlock(1),
	responseTooLarge(2),
	controlBlockConfigurationError (3)
}


ErrorReason ::= INTEGER {
	other (0),
	notFound (1)
}



IECGoosePdu ::= SEQUENCE {
	gocbRef 			[0] IMPLICIT VisibleString,
	timeAllowedtoLive 	[1] IMPLICIT INTEGER,
	datSet 				[2] IMPLICIT VisibleString,
	goID 				[3] IMPLICIT VisibleString OPTIONAL,
	t 					[4]	IMPLICIT UtcTime,
	stNum 				[5] IMPLICIT INTEGER,
	sqNum 				[6] IMPLICIT INTEGER,
	simulation 			[7] IMPLICIT BOOLEAN DEFAULT FALSE,
	confRev 			[8] IMPLICIT INTEGER,
	ndsCom 				[9] IMPLICIT BOOLEAN DEFAULT FALSE,
	numDatSetEntries 	[10] IMPLICIT INTEGER,
	allData 			[11] IMPLICIT SEQUENCE OF GooseData
}

GooseData ::= CHOICE
	{
	-- context tag 0 is reserved for AccessResult
	array			[1] IMPLICIT DataSequence,
	structure		[2] IMPLICIT DataSequence,
	boolean			[3] IMPLICIT BOOLEAN,
	bitstring		[4] IMPLICIT BIT STRING,
	integer			[5] IMPLICIT INTEGER,
	unsigned		[6] IMPLICIT INTEGER, -- shall not be negative
	floatingpoint		[7] IMPLICIT FloatingPoint,
	--			[8] is reserved
	octetstring		[9] IMPLICIT OCTET STRING,
	visiblestring		[10] IMPLICIT VisibleString,
	generalizedtime	[11] IMPLICIT GeneralizedTime,
	binarytime		[12] IMPLICIT TimeOfDay,
	bcd			[13] IMPLICIT INTEGER,
	booleanArray		[14] IMPLICIT BIT STRING,
	--objId			[15] IMPLICIT OBJECT IDENTIFIER
	mMSString		[16] IMPLICIT MMSString, -- unicode string
	utctime		[17] IMPLICIT UtcTime   --UTC Time
	}

DataSequence ::= SEQUENCE OF GooseData

FloatingPoint ::= OCTET STRING

UtcTime ::= OCTET STRING 	-- 格式和大小规定在8.1.3.6.

MMSString ::= UTF8String

TimeOfDay ::= OCTET STRING -- (SIZE (4 | 6))

END


表B1-建议的分组广播地址例子

建议的地址范围
服务起始地址 (十六进制)结束地址 (十六进制)
GOOSE01-0C-CD-01-00-0001-0C-CD-01-01-FF
GSSE01-0C-CD-02-00-0001-0C-CD-02-01-FF
分组广播采样值01-0C-CD-04-00-0001-0C-CD-04-01-FF

表C2-以太网类型值分配

使用以太网类型值 (十六进制)APPID类型
IEC 61850-8-1 GOOSE88-B80 0
IEC 61850-8-1 GSE 管理88-B90 0
IEC 61850-9-2 采样值88-BA0 1

gseMngtPdu报文结构

参见 gseMngtPdu.gmind 文件

GOOSE报文结构

GOOSE和SV报文都是基于ISO/IEC 8802-3框架进行通讯,其基本帧结构如下

字节总体结构字段87654321说明
1报文头7字节前导码
2
3
4
5
6
7
8帧起始1字节
9MAC报头目的地址6字节目的地址
10前四字节固定
11010CCD01
12
13
14
15源地址6字节源地址
16
17
18
19
20
21优先级标记TPID2字节
22(可选)0x8100
23TCI优先级CFIVID优先级4,VID0
24
25以太网类型2字节
260x88B8
27以太网方式PDUAPPID应用标识,全站唯一
28GOOSE的预留值范围是0x000到0x3fff
29长度GSE同上
30
31保留1
32
33保留2
34
35APDU
·
·
·
·
必要的填充字节
帧校验序列

GOOSE的APDU报文格式见下表

字段描述说明
APDU T-L标记61H,长度此长度占用可能为1,2,3…字节,由ASN.1格式而定
GoCBRef标记80H,长度≤65由分层模型中的逻辑设备名、逻辑节点名、功能约束和控制块名级联而成
timeAllowedtoLive标记81H,长度,t该参数值一般为心跳时间T0值的2倍,如果接收端超过2T0时间内没有收到报文则判断报文丢失,
在4T0时间内没有收到下一帧报文即判断为GOOSE通信中断,判出中断后装置会发出GOOSE断链报警。
DatSet标记82H,长度≤65,Datset字符串即GOOSE控制块所对应的GOOSE数据集引用名,由逻辑设备名、逻辑节点名和数据集名级联而成。报文中Data部分传输的就是该数据集的成员值。
GoID标记83H,长度≤65该参数是每个GOOSE报文的唯一性标识,该参数的作用和目的地址、APPID的作用类似。接收方通过对目的地址、APPID和goID等参数进行检查,判断是否是其所订阅的报文。
t标记84H,长度=8,t即Event TimeStamp,事件时标,其值为GOOSE数据发生变位的时间,即状态号stNum加1的UTC时间
StNum标记85H,长度≤5,StNum值即StateNumber,状态序号,用于记录GOOSE数据发生变位的总次数
SqNum标记86H,长度≤5,SqNum值即SequenceNumber,顺序号SqNum,用于记录稳态情况下报文重复发出的帧数,装置每发出一帧GOOSE报文,SqNum应加1;当有GOOSE数据变化时,该值归0,从头开始重新计数。
simulation标记87H,长度=1,test值**布尔型变量,**检修标识,用于表示发出该GOOSE报文的装置是否处于检修状态。当检修压板投入时,test标识应为True。
confRev标记88H,长度≤5配置版本号,Config Revision是一个计数器,代表GOOSE数据集配置被改变的次数。当对GOOSE数据集成员进行重新排序、删除等操作时,GOOSE数据集配置被改变。配置每改变一次,版本号应加1。
ndsCom标记89H,长度=1,Needs commissioning该参数是一个布尔型变量,用于指示GOOSE是否需要进一步配置。
numDatSetEntries标记8aH,长度≤5,总个数即数据集条目数,(alldata中数据链的个数)
allData T-L标记abH,长度该部分是GOOSE报文所传输的数据当前值。Data部分各个条目的含义、先后次序和所属的数据类型都是由配置文件中的GOOSE数据集定义的。
allData具体数据具体格式参见上一节GooseData ::= CHOICE,可以为布尔值,比特串,整型,浮点型,位串,字符串,时间等任意一种或其组合

allData中的数据由DatSet数据集定义,在不同系统中是不一样的,可以有SCL文件配置。

 类似资料: