数字变电站IEC61850?GOOSE报文解码器的FPGA实现
   来源:现代电子技术     2021年01月27日 03:55

颜文 吴洁 李尚柏

摘 要: 在数字化变电站中,面向通用对象变电站事件(GOOSE)报文被用于传输跳合闸命令和状态信息,它直接服务于保护测控装置,记录变电站实时的运行状态,报文的快速解码能及时的排查偶发性故障。在详细地分析IEC61850?GOOSE报文的结构后,考虑到报文传输的实时性要求,提出了GOOSE报文解码的FPGA设计方案。重点叙述解码模块中两个关键状态机的设计,应用Verilog硬件描述语言在Qartus Ⅱ软件平台上实现了对解码模块的编写,最后通过对解码模块的功能仿真和在线调试验证了设计的合理性。

关键词: 数字变电站; 硬件解码; GOOSE报文; FPGA

中图分类号: TN702?34; TP302 文献标识码: A 文章编号: 1004?373X(2015)18?0151?04

Abstract: In digital substation, general object oriented substation event (GOOSE) messages are used to transmit the switch command and status information. The messages are applied to protecting the measuring and control devices, and recording the real?time running state of the substation. The fast decoding to the messages can discover occasional malfunction. After analyzing the structure of IEC61850?GOOSE messages, the FPGA?based design scheme of GOOSE messages decoding is proposed by considering the real?time requirement of messages transmission. The design of two key state machines in decoding module is described emphatically. The compiling of decoding module was realized on Qartus Ⅱsoftware platform by using Verilog hardware description language. The rationality of this design was proved by function simulation of the decoding module and online debugging.

Keywords: digital substation; hardware decoding; GOOSE message; FPGA

0 引 言

变电站作为供电的枢纽,在电力系统中有着重要的地位,随着电力行业的发展,对变电站的智能化要求也越来越高,数字化,网络化成为其发展的趋势。数字化变电站采用IEC61850标准进行建模和通信,实现了站内智能设备间的信息共享和不同设备的统一管理[1],GOOSE作为IEC61850标准中定义的变电站事件模型之一,其报文传输可靠性高,实时性好,广泛地用于传输保护跳闸,信息闭锁等重要信息。

数字变电站中传输的GOOSE报文是按照IEC61850标准的相关协议编码的数据帧,接收信息的设备需要对数据帧进行解码,并将解码的数据保存起来便于后期的数据分析。

目前,国内数字变电站对IEC61850?GOOSE报文的解码主要通过软件形式在操作系统下实现,相比硬件解码而言,这种方式不仅处理速度较慢,而且还增加了成本。FPGA在数字信号处理和控制领域都有着成熟的应用,研究基于FPGA对GOOSE报文的解码对于维护数字变电站的正常运行和保证通信的实时性有着重要的意义。

1 IEC61850标准的GOOSE协议

1.1 BER编码规则

根据标准规定,GOOSE协议报文采用抽象语法记法(ASN.1)的基本编码规则(BER)编码[2],BER的语法格式为TLV三元组。标签域(T)定义一种类型,长度域(L)定义值域的长度,值域(V)定义数据对象的值。根据V域不同,编码结构分为基本类型和结构类型,基本类型只包含一个TLV,而结构类型的V域至少嵌套一个TLV,具体结构如图1所示。

1.2 IEC61850?GOOSE的报文帧结构

GOOSE服务的通信协议栈由应用层、表示层、数据链路层和物理层组成[3],会话层、传输层和网络层均为空,这样可以缩短报文的长度,减少传输的延时。应用层定义了GOOSE报文的应用协议数据单元(APDU),表示层遵循ASN.1 BER对APDU进行编码,数据链路层基于ISO/IEC 8802?3标准设置报文的传输优先级,以太网类型,组播地址等,IEC61850?GOOSE的报文帧结构见图2。

2 系统的工作原理

遵循IEC61850?GOOSE协议的以太网数据帧通过RJ45接口和PHY以太网芯片后传送给MAC太网控制器[4],正常工作时,MAC对实时接收到数据帧进行卸装,对地址匹配的数据帧去除前导码、定界符、填充数据和校验序列后得到MAC帧,再由输出缓冲器接口输出给解码模块。解码模块根据配置信息对数据帧进行解码,将以太网配置信息,APDU配置信息,GOOSE数据集分离,并分类存储在RAM的不同位置,用户可通过应用程序和MCU读取需要的数据[5],工作原理如图3所示。

3 解码模块的设计

GOOSE报文内容包括报头的以太网配置信息,APDU头部的配置信息和GOOSE数据集3个部分[6]。以太网配置信息的数据相对固定,可以直接的解析出来,而APDU 采用BER 编码,数据不固定,需要根据标签类型对APDU中的各个数据项进行解码。

根据GOOSE报文的结构特点,把报文的解码放在Frame_fsm(数据帧解码状态机)和Length_fsm(TLV数据格式L域解码状态机)2个状态机中进行;前者控制整个数据帧解码流程,后者实现对长度域的解码。

3.1 Frame_fsm状态机

Frame_fsm状态机主要实现数据的读取、过滤、分离和分类存储,包括12个状态常量,采用独热码编码[7]。其中Idle是待解码状态,当start信号有效,进入Ready状态;Ready状态下所有输出状态寄存器清零,准备数据帧的解析;Read状态下从Avalon主接口读取数据;Wait_Read状态下等待,直到读取一次数据完成,并在此状态下判断读到的数据是否符合过滤条件;Judge_Type状态下对APDU包含的数据类型进行解析;WR_Heaer和Wait_WR_Header状态下完成对以太网配置信息的存储,如果写传输中有延时则需要等待;同理,WR_APDU和Wait_WR_APDU状态下完成对APDU配置信息的存储;WR_Data和Wait_WR_Data状态下,完成对GOOSE数据集的存储;直到解析完整帧数据,进入End状态,Frame_fsm状态机的状态转移如图4所示。

3.2 Length_fsm状态机

Length_fsm状态机完成对TLV数据格式的L域的解析,包括5个状态常量,采用二进制编码。Length_Idle是APDU中TLV数据格式的L域待解码状态,根据输出标志将结构类型数据和基本数据类型分开解码;Struct状态下对APDU中结构类型数据的L域解码;Basic_Short状态下对基本类型L域编码方式为短定长型的数据解码;Basic_Long状态下对基本类型L域编码方式为长定长型的数据解码;Basic_Indef状态下对基本类型L域编码方式为非定长型的数据解码,Frame_fsm状态机的状态转移如图5所示。

3.3 模块的功能仿真

本文在Quartus Ⅱ9.1环境中完成了解码模块代码的编写,编译后调用ModelSim?Altera 6.5b软件进行了功能的仿真,验证了设计的可靠性,仿真结果如图6所示。从图中可以看出,read_data是解码模块从数据缓冲区依次读取的报文数据,write_data为依次存放到内存中的数据,前26 B是以太网配置的信息,从第27 B开始是GOOSE报文的APDU部分,此时Header_flag标志由1变为0,APDU_flag标志由0变为1,直到APDU配置信息结束,APDU_flag标志变为0,数据集标志Data_flag标志变为1,而Frame_state和Length_state表明解码的状态。

4 解码模块的软件仿真验证

运用SoPC?builder将解码模块集成到Nios Ⅱ系统中[8],再下载到FPGA芯片中进行在线仿真调试,用到的工具有Altera公司的Quartus Ⅱ 9.1,Nios Ⅱ IDE 9.1软件和H3C40?V6 FPGA开发板,验证流程如图7所示。

将用于测试的GOOSE报文数据存储在FPGA的RAM中,通过对存储器初始化完成[9]。在Nios Ⅱ IDE的存储器窗口下查看内存中一帧待解码的GOOSE报文,当报文经过交换机到达网络端口时,已经去掉TPID(0x8100)和TCI(0x4000)标志,该报文长158 B,存放的基地址为0x00020000,如图8所示。

解码完成后,在Nios Ⅱ IDE变量窗口可查看解码的相关信息,如图9所示。图中计时器计数值为793,系统工作时钟50 MHz,可计算出解码所用的时间约为15.86 μs。

为了测试解码模块过滤报文的性能,在RAM中存放30帧数据,包括符合过滤条件的GOOSE数据帧,不符合过滤条件的GOOSE数据帧和非GOOSE数据帧[10]。解码完成后,在Nios Ⅱ IDE变量窗口查看结果,如图10所示。从图中可以看出完全符合条件的数据帧有12帧,不符合条件的数据帧被过滤掉了。Frame_Length数组中存放每1帧GOOSE报文的长度值,Header_base数组中存放报文以太网配置信息基地址,APDU_base数组中存放APDU配置信息基地址,Data_base数组中存放GOOSE数据集基地址,通过读取解码模块返回的基地址,可以访问内存中相应的已解码数据。

5 结 语

本文基于FPGA实现了对IEC61850标准的GOOSE报文的快速解码,通过对解码模块的功能仿真验证了设计逻辑的正确性,在线的数据测试结果表明解码模块实现了对报文的过滤和不同数据类型的分类存储。采用FPGA硬件方式对GOOSE报文解码,其解析报文的速度快,满足实时性的要求,有利于尽早地发现变电站故障,保障变电站的安全运行;FPGA资源丰富,许多功能模块都能集成到一块芯片上,可以方便地移植到数字变电站的智能设备中以实现快速通信。

参考文献

[1] 罗承沐,张贵新.电感式互感器与数字变电站[M].北京:中国电力出版社,2012.

[2] 李永亮,葛维春,王之茗.IEC61850通讯标准中的编码规范ASN.1[J].电力系统保护与控制,2008,36(22):66?70.

[3] 韩明峰,张捷,郑永志.IEC61850?GOOSE实时通信的实现方法[J].电力自动化设备,2009,29(1):143?146.

[4] 杨柳.基于ARM和FPGA的电力光纤信号分析仪的设计[J].现代电子技术,2011,34(4):177?180.

[5] 杨新华,韩永军.基于FPGA的数字化变电站计量仪表研究与设计[J].测控技术与仪器仪表,2012,38(5):91?93.

[6] 张侃君,夏勇军,王晋等.智能变电站GOOSE通信技术[J].湖北电力,2013,37(1):7?10.

[7] 夏宇闻.Verilog数字信号系统设计教程[M].北京:北京航空航天大学出版社,2003.

[8] 李兰英.Nios Ⅱ嵌入式软核SoPC设计原理及应用[M].北京:北京航空航天大学出版社,2006.

[9] 赵倩.Verilog数字系统设计FPGA应用[M].北京:清华大学出版社,2012.

[10] 王松,黄晓明.GOOSE报文过滤方法研究[J].电力系统自动化,2008,32(19):54?57.

报文 文章 数据