适用于FPGA平台电磁暂态实时仿真的数据处理方法与流程

文档序号:12470625阅读:489来源:国知局
适用于FPGA平台电磁暂态实时仿真的数据处理方法与流程

本发明涉及一种电磁暂态实时仿真的数据处理方法。特别是在现场可编程门阵列(Field-Programmable Gate Array,简称为FPGA)平台对电网进行电磁暂态实时仿真的数据处理方法。



背景技术:

在电力系统的发展过程中,仿真一直占据着非常重要的地位。而作为仿真的重要组成部分,电磁暂态仿真具有现象刻画准确、应用广泛、数值稳定性好等众多优点,是了解电力系统暂态复杂行为的必要工具。仿真可以对未来电网系统的可行性进行研究,预测电网性能和可能存在的瓶颈,可以分析电网运行中出现的各种故障,并据此制定正确的保护和限制措施,还可以优化电网,提高系统的经济性和有效性。

近年来,新能源和新型电子设备如风力发电、光伏发电、柔性交流输电系统(Flexible Alternative Current Transmission Systems,简称为FACTS)、高压直流输电(High Voltage Direct Current Transmission,简称为HVDC)等已成为国际上电网运行和电子设备制造业关注的热点,为电力系统带来了新的机遇和挑战。

在大电网背景下的新能源和新型电子设备的实时数字仿真面临着新的问题:由于器件对系统频率影响范围的提高,电磁暂态实时仿真要求仿真步长达到微秒量级。这无疑是对电磁暂态实时仿真技术的挑战。由于仿真步长的减小,基于软件平台的电磁暂态仿真系统往往都达不到实时性要求。所以,FPGA由于有高并行度计算性能和接口丰富的优势,非常适合作为电磁暂态实时仿真的平台。但是,每一块FPGA开发板上的资源都是有限的,所以要在同样的资源限制内扩大仿真规模,就必须高效率地利用FPGA的硬件资源;同时,要利用FPGA平台进行电磁暂态仿真,还需要用一定的方法将仿真数据输入仿真系统并从仿真系统中获取仿真结果。

通常,电磁暂态实时仿真需要经过初始化、通过矩阵乘法求解节点电流向量、判断是否更换矩阵、通过矩阵乘法求解节点电压向量、计算各个元件各自等值历史电流源并进行累加、对每个节点上不同元件的等值历史电流源进行累加,然后进行循环迭代并通过交互模块输出仿真结果。其中,进行矩阵乘法的模块称作核心计算区,进行矩阵乘法的结构为乘累加结构,每个乘累加结构称为一个Process Element,简称PE。在这种方法里,对每个节点上的等值历史电流源进行累加需要消耗大量的加法器资源。考虑到在进行等值历史电流源累加的过程中,核心计算区其实是闲置的,所以现有的这种方法无法达到高效率的资源利用。



技术实现要素:

本文提供一种适用于FPGA平台电磁暂态实时仿真的数据处理方法。该方法能够高效率地复用FPGA上的硬件资源,在保证实时性的同时,间接地扩大了仿真规模;并且,该方法能够保证FPGA系统与外部进行高速且稳定的数据交互,为电磁暂态实时仿真的可靠性与精确性打下基础。

本发明以FPGA为平台,对电磁暂态实时仿真系统的数据处理进行了优化,在保证仿真的实时性和精度的同时,提高了硬件资源的利用率,同时也对仿真数据的交互提供了具体可行的方案。

本发明的技术解决方案如下:

一种适用于FPGA平台的电磁暂态实时仿真系统的数据处理方法,其特点在于该方法包含以下步骤:

步骤1,外部发送初始化数据,包含系统网络电导矩阵及其逆矩阵、元件配置信息、电磁暂态仿真所需的常量和元件变量,到FPGA平台的电磁暂态实时仿真系统的数据交互接收模块,数据交互采用Aurora协议,其具体过程如下:

步骤1-1,外部发送数据到电磁暂态实时仿真系统数据交互模块的Aurora界面,该Aurora界面根据Aurora协议将数据还原为接收数据(rx_data);

步骤1-2,所述的接收数据(rx_data)通过数据接收界面(rx_fifo_interface)进入异步先入先出接收数据隔离异步时钟域(rx_fifo);

步骤1-3,接收数据帧解析模块(frame_recv)将一帧数据从先入先出接收数据隔离区(rx_fifo)取出,并进行解析,称为帧解析;

步骤1-4,根据所述的帧解析内容进行数据写操作,元件仿真数据存储在各个元件区内,仿真用常量以及电导矩阵、逆矩阵存储在公共存储区;

步骤2,仿真开始;

步骤3,所述的电磁暂态实时仿真系统的核心计算区通过电导矩阵与节点电压向量的矩阵乘法求解节点电流向量;该操作由控制信号(pe_input_sel)选择电导矩阵(G2)与节点电压向量(BUS_U),通过乘法器进行乘法操作,之后再由多路复用器控制信号(pe_mux1_sel)和(pe_mux2_sel)控制多路复用器(Mux)通过加法器来进行循环累加;

步骤4,根据开关动作状态判断是否选取新的电导矩阵,并完成相应配置;

步骤5,所述的核心计算区通过电导逆矩阵和节点电流向量的矩阵乘法求解节点电压向量;该操作由控制信号(pe_input_sel)选择电导逆矩阵(GAC)与节点电流向量(I0),通过乘法器进行乘法操作,之后再由多路复用控制信号(pe_mux1_sel)和(pe_mux2_sel)控制多路复用器(Mux)通过加法器来进行循环累加;

步骤6,在各个元件区独立且并行地完成计算更新等值历史电流源的工作,并对每种元件对其两端节点的等值历史电流源进行累加,;

步骤7,通过复用核心计算区的乘累加结构(PE单元)对每个节点上的不同元件的等值历史电流源进行累加操作,其具体过程如下:

步骤7-1,设置两个控制信号(pe_mux1_sel和pe_mux2_sel)分别控制第一多路复用器(Mux1)和第二多路复用器(Mux2),选择各元件区节点电流1和各元件区节点电流2,各元件区节点电流1和各元件区节点电流2即为需要进行累加的等值历史电流源,每个输入级的PE单元输入两个等值历史电流源,同级的PE单元并行工作;

步骤7-2,由PE单元中的加法树结构完成每个节点上的等值历史电流源累加操作;

步骤8,判断是否接收外部发送的新的仿真数据,若是,进入步骤9;否则,返回步骤3进行迭代运算;

步骤9,接收外部发送的新的仿真数据,其过程同步骤1-1至1-4;

步骤10,返还仿真结果数据,其具体过程如下:

步骤10-1,外部要通过数据交互模块发送新的仿真数据时,对需要本系统输出的数据进行相应配置,各元件区将需要发送的数据存储在各自的存储器(Memory)中;

步骤10-2,从总线上将需要返还的仿真结果数据组发送到数据组帧发送模块(frame_send);

步骤10-3,所述的数据组帧发送模块(frame_send)将仿真结果数据组发送帧进入先入先出发送数据隔离异步时钟域(FIFO tx_fifo);

步骤10-4,所述的仿真结果数据组发送帧经过数据先入先出发送界面(tx_fifo_interface)转化为发送数据(tx_data)通过Aurora界面,发送到外部;

步骤11,返回步骤3,直到电磁暂态实时仿真的数据处理结束。

所述的核心计算区的PE单元复用,多路复用器上增加需进行累加的等值历史电流源作为输入,在等值历史电流源累加操作过程中,复用PE结构进行累加操作。

所述的PE单元构成树结构。

所述的开关动作状态由外部通过数据交互发送到FPGA平台的电磁暂态实时仿真系统上。

所述步骤6中,各元件区的等值历史电流源求解依据EMTP算法完成。

所述步骤7-1中,各元件区节点电流1和各元件区节点电流2是指该节点上不同元件的等值历史电流源。

本发明的优点是:

1、本发明针对基于FPGA平台的电磁暂态实时仿真系统,利用仿真过程中进行等值历史电流源累加时核心计算区处于闲置状态的特点,对核心计算区中的乘累加结构PE单元进行了复用,在原有基础上新增少量控制信号,高效率地利用硬件资源,减少了系统对硬件资源的占有量。同时,提供了此类系统与外部进行数据交互的手段,在异步时钟域下保证了数据交互的高效性和可靠性。

2、在交互中实时配置需要本系统发送的仿真结果数据,并且将仿真结果数据预先存储在Memory中,避免仿真结果数据在新一轮仿真迭代运算中被更新,保证了仿真运算和数据交互并行工作的同时不影响仿真结果数据的同步性。

附图说明

图1数据交互模块示意图

图2核心计算区结构及PE单元设计示意图

图3系统数据流程图

具体实施方式

本发明适用于FPGA平台电磁暂态实时仿真的数据处理方法,该方法能够高效率地利用FPGA的硬件资源,并且能够高速且稳定地在异步时钟域下同外部进行数据交互。

下面结合实施例以及附图对本发明提出的一种适用于FPGA平台电磁暂态实时仿真的数据处理方法进行说明:

步骤1,外部发送初始化数据到FPGA平台的电磁暂态实时仿真系统,数据交互采用Aurora协议,数据交互模块如图1所示,其具体过程如下:

步骤1-1,外部发送数据到Aurora界面,Aurora界面根据Aurora协议将数据还原为接收数据rx_data。

步骤1-2,接收数据rx_data通过数据接收FIFO(First Input First Output,先入先出队列)界面rx_fifo_interface进入异步FIFO rx_fifo。rx_fifo对FPGA平台上的电磁暂态仿真系统和外部的异步时钟域进行了隔离。

步骤1-3,数据帧解析模块frame_recv将一帧数据从rx_fifo取出,并进行解析;

步骤1-4,根据帧解析内容通过总线进行数据写操作,元件仿真数据存储在各个元件区内,仿真用常量以及电导矩阵、逆矩阵存储在公共存储区;

步骤2,仿真开始:

步骤3,通过电导矩阵与节点电压向量的矩阵乘法求解节点电流向量。该操作由核心计算区完成,如图2,该操作由控制信号pe_input_sel选择电导矩阵G2与节点电压向量BUS_U,通过乘法器进行乘法操作,之后再由多路复用控制信号pe_mux1_sel和多路复用控制信号pe_mux2_sel控制多路复用器(Multiplexer,简称Mux)通过加法器来进行循环累加;当第一个乘法器输出结果到达后,前三个周期pe_mux1_sel为0,之后pe_mux1_sel一直为1表示将流水线加法器的输出拿到其输入端进行累加,对于三级流水线而言,最后得到三个部分和,三个部分和在控制器下的合并流程如表1所示,其中,Adder Stage1,Adder Stage2,Adder Stage3分别表示加法器的三级,s1,s2和s3分别表示3个部分和,寄存器Register用来将加法器输出的缓存一个周期用于循环累加。

表1三级加法器累加策略

步骤4,根据开关动作状态判断是否选取新的电导矩阵,并完成相应配置;

步骤5,核心计算区通过电导逆矩阵和节点电流向量的矩阵乘法求解节点电压向量。如图2,该操作由控制信号pe_input_sel选择电导逆矩阵GAC与节点电流向量I0,通过乘法器进行乘法操作,之后再由控制信号pe_mux1_sel和pe_mux2_sel控制多路复用器(Multiplexer,简称Mux)通过加法器来进行循环累加;循环累加过程与步骤3所述的循环累加过程相同。

步骤6,在各个元件区独立且并行地完成计算更新等值历史电流源的工作,并对每种元件的两端节点的等值历史电流源进行累加;

步骤7,通过复用核心计算区的PE单元的方式对每个节点上不同元件的等值历史电流源进行累加操作,其具体过程如下:

步骤7-1,如图2所示,设置控制信号pe_mux1_sel和pe_mux2_sel控制多路复用器Mux1和Mux2选择各元件区节点电流1和各元件区节点电流2,各元件区节点电流1和各元件区节点电流2即为需要进行累加的等值历史电流源,每个输入级的PE单元可以输入两个等值历史电流源,同级的PE单元并行工作;

步骤7-2,由PE单元中的加法树结构完成每个节点上的等值历史电流源累加操作;此时每个PE单元等效于一个加法器,PE单元的排列结构等效于加法树,等值历史电流源累加操作在等效的加法树上完成;

步骤8,判断是否接收外部发送的新的仿真数据:若是,进入步骤9;否则,返回步骤3进行迭代运算。

步骤9,接收外部发送的新的仿真数据,其过程同步骤1-1至1-4;

步骤10,返还仿真结果数据,如图1所示,其具体过程如下:

步骤10-1,在步骤9中外部通过交互发送新的仿真数据时对本系统需要发送的仿真结果进行相应配置,本系统各元件区将相应数据存储在各自的存储器Memory中。

步骤10-2,通过总线将各元件区Memory中需要返还的仿真结果发送到发送数据组帧模块frame_send。

步骤10-3,发送数据组帧模块frame_send将仿真数据组帧并存入异步FIFO tx_fifo。tx_fifo对FPGA平台上的电磁暂态仿真系统和外部的异步时钟域进行了隔离。

步骤10-4,数据经过数据发送FIFO界面tx_fifo_interface转化为发送数据tx_data。

步骤10-5,tx_data经进入Aurora界面,发送到外部。

步骤11,返回步骤3进行迭代运算。

系统的整体数据流处理方式如图3所示。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1