发明内容
本发明所要解决的技术问题是,提出一种动态获取GOOSE订阅信息的方法,基于IEC 61850标准的服务器能够正确区分不同的客户端应该与哪个访问点关联,利用IEC61850在线服务的方式获取GOOSE订阅的完整信息。
为了解决上述问题,本发明采用了以下技术方案。
一种动态获取GOOSE订阅信息的方法,其特征是:基于IEC 61850标准的服务器在系统配置期间依据客户端IP地址建立访问点与对应客户端之间的关联关系表;
服务器在系统解析期间将数据信息模型依据不同的访问点分别进行存储管理;
在服务器响应客户端的连接请求时,记录对侧的IP地址,以这个IP地址作为索引查找访问点与对应客户端之间的关联关系表,从而确定该连接关联的访问点及其相应的数据模型;
GOOSE订阅方确定Input中每一外部输入信号对应的GOOSE控制块索引GoCBRef,利用获取GOOSE控制块属性值服务GetGoCBValues()得到GOOSE标识GOOSEID、GOOSE控制块所引用数据集的索引DataSetRef、版本号ConfRev、组播地址Addr和通信标识Appid,利用获取数据集目录服务GetDataSetDirectory()得到数据集数据成员个数numDatSetEntries,根据Input中的外部信号描述查找这个变量在所在数据集中的数据成员序号GoCBEntryIndex,利用获取数据定义服务GetDataDefinition()得到Input中的外部信号的数据类型Type。
如果Input中没有源GOOSE发布控制块的描述,则根据IEC 61850提供的获取服务器目录服务GetServerDirectory()、获取逻辑设备目录服务GetLogicalDeviceDirectory()和获取数据定义服务GetDataDefinition()得到GOOSE发布方的GOOSE发布控制块列表和数据集列表;
利用获取数据集目录服务GetDataSetDirectory()得到每个数据集的数据成员索引,利用获取GOOSE控制块属性值服务GetGoCBValues()得到每个GOOSE控制块的属性值;
根据Input中的外部信号描述确定这个变量属于哪一个数据集,以找到的数据集名为索引,进一步查找确定这个数据集位于哪一个GOOSE发布控制块;
如果Input中有源GOOSE发布控制块的描述,则GOOSE发布控制块属性值中的数据集索引就是Input中外部信号所在的数据集。
GOOSE订阅方保存Input中所有外部输入信号所在装置与 GOOSE订阅方进行通信的IP地址,以利于建立连接进行在线服务。
本发明的积极效果在于:建立服务器不同访问点与不同客户端的关联关系,使站控层客户端与间隔层、过程层需要GOOSE订阅的客户端能分别访问相对应的服务器访问点下的信息模型;利用IEC 61850提供的在线服务,动态获取完整的GOOSE订阅信息,从而避免了静态配置GOOSE订阅信息所引入的各厂家私有格式文本,也能避免由于现场经常修改全站SCD文件引起的信息不一致现象,有利于装置间的互操作及标准的推广应用。
具体实施方式
下面结合附图和具体实施例进一步说明本发明。
如图1所示,访问点S1可以对应后台、远动、保信子站的A、B网IP地址;访问点G1可以对应过程层智能终端或者间隔层其它保护装置的A、B网IP地址。
本发明实现方法举例如下:
1、建立客户端与特定访问点的关联
服务器使用的CID文件中关于不同访问点及其所属Server的层次关系如下所示:
<AccessPoint name="S1" desc="断路器失灵起动及辅助保护装置">
<Server>
<Authentication/>
<LDevice inst="LD0" desc="公用">
<LN0 lnType="NRR_LLN0_90X" lnClass="LLN0" inst="">
……
<AccessPoint name="G1" desc="断路器失灵起动及辅助保护装置">
<Server>
<Authentication/>
<LDevice inst="PI">
<LN0 lnType="NRR_LLN0_90X" lnClass="LLN0" inst="">
……
按照工程规范的实施要求,一个继电保护装置应该为站控层和过程层分别建立ConnectedAP(访问点)S1、G1或M1。在ICD模型文件中,Server标签在AccessPoint标签之下,站控层客户端和过程层客户端(GOOSE订阅方)都可以获取保护装置的目录信息和数据定义信息,过程层客户端也可以读取和设置GOOSE控制块属性值。以获取服务器目录服务GetServerDirectory()为例,站控层客户端获取的应该是访问点S1下的信息,过程层客户端获取的应该是访问点G1下的信息。
在当前的工程应用中服务器端无法区分客户端应该与哪个访问点关联,在响应目录服务GetServerDirectory()时,服务器端将本地访问点S1和G1下的所有逻辑设备全都送出去,由客户端根据逻辑设备名中的特定字段来进行过滤。这种方式占用了额外的通信带宽,也增加了客户端的负担。另外如果服务器根据逻辑设备的命名约定对外只传送站控层的信息,则无法达到在线传送过程层信息的要求。因此首先需要解决服务器访问点与客户端的关联问题。
(1)服务器在系统配置期间依据客户端IP地址建立访问点与对应客户端之间的关联关系表,这是一个一对多的关系表,如访问点S1可以对应后台、远动、保信子站的A、B网IP地址;访问点G1可以对应过程层智能终端或者间隔层其它保护装置的A、B网IP地址。
(2)服务器在系统解析期间将数据信息模型依据不同的访问点分别进行存储管理。
(3)在服务器响应客户端的连接请求时,记录对侧的IP地址,以这个IP地址作为索引查找访问点与对应客户端之间的关联关系表,从而确定该连接关联的访问点及其相应的数据模型。
2、根据Input描述利用在线服务的方式获取GOOSE订阅信息
CID文件中的Input部分描述了装置的外部输入信号与内部信号的关联关系,如下所示:
<Inputs>
<ExtRef daName="stVal" doName="Pos" iedName="IE2207A" ldInst="RPIT" lnClass="XCBR" lnInst="1" prefix="Q0" intAddr="PI/krGGIO141.Ind0.stVal"/>
<ExtRef daName="stVal" doName="Alm1" iedName="ME2207A" ldInst="PI"lnClass="GGIO" lnInst="1" prefix="" intAddr="PI/krGGIO31.Ind0.stVal"/>
</Inputs>
GOOSE订阅装置需要具备的订阅信息如表1所示:
表1 GOOSE订阅信息
GOOSE订阅方保存Input中所有外部输入信号所在装置与 GOOSE订阅方进行通信的IP地址,以利于建立连接进行在线服务。
GOOSE订阅方确定Input中每一外部输入信号对应的GOOSE控制块索引GoCBRef,利用获取GOOSE控制块属性值服务GetGoCBValues()得到GOOSE标识GOOSEID、GOOSE控制块所引用数据集的索引DataSetRef、版本号ConfRev、组播地址Addr、通信标识Appid,利用获取数据集目录服务GetDataSetDirectory()得到数据集数据成员个数numDatSetEntries,根据Input中的外部信号描述查找这个变量在所在数据集中的数据成员序号GoCBEntryIndex,利用获取数据定义服务GetDataDefinition()得到Input中外部信号的数据类型Type。
3、如果CID文件Input中无源GOOSE发布控制块的描述,则GOOSE订阅方需要完成以下工作:
(1)根据IEC 61850提供的目录服务和数据定义服务获取GOOSE发布方的数据集列表、GOOSE发布控制块列表;
(2)利用数据集目录服务获取每个数据集的数据成员索引;利用读GOOSE控制块属性值服务获取GOOSE控制块属性值;
(3)根据Input中的外部信号描述确定这个变量属于哪一个数据集,这是一个字符串匹配的过程,从而能够确定数据集数据成员个数、数据集数据成员序号;
(4)以找到的数据集名为索引,进一步查找确定这个数据集位于哪一个GOOSE发布控制块,将GOOSE发布控制块中的属性值作为GOOSE订阅信息;
(5)利用获取数据定义服务来获取Input中的外部信号数据类型。
在处理Input中每一外部输入信号的订阅信息时,同一GOOSE发布装置的数据集列表、GOOSE发布控制块列表、每个GOOSE发布控制块的属性值、每个数据集的数据成员索引以及数据集和GOOSE发布控制块之间的对应关系保存下来以供重复使用。
4、IEC 61850(Ed2.0)规定Input可以有源GOOSE发布控制块的描述,在这种情况下GOOSE订阅方需要完成的工作相对简单:
(1)根据Input中的源GOOSE发布控制块描述,利用读GOOSE控制块属性值服务获取GOOSE控制块属性值,将GOOSE发布控制块中的属性值作为GOOSE订阅信息;
(2)根据GOOSE控制块属性值中的数据集索引,利用数据集目录服务获取数据集的数据成员索引,从而确定数据集数据成员个数、Input中外部信号在数据集中的数据成员序号;
(3)利用获取数据定义服务来获取Input中的外部信号数据类型。