发明内容
本发明所要解决的技术问题是,提供一种基于FPGA的有源配电网暂态实时仿真***设计方法。其能够充分发挥FPGA硬件并行性以及流水线架构技术优势,保证了整个***暂态仿真过程中的实时性,并为采用较小步长精确求解有源配电网的详细动态过程提供了可靠基础。
本发明所采用的技术方案是:一种基于FPGA的有源配电网暂态实时仿真***设计方法,有源配电网暂态实时仿真***分为离线仿真环境和在线仿真环境,其中离线仿真环境负责实时仿真用时ttotal的计算,根据实时仿真用时ttotal设置仿真步长Δt,并将根据仿真步长Δt计算出的相关参数以及读取到的基本参数信息上传至基于FPGA的在线仿真环境;在线仿真环境完成仿真的实时计算,包括每个步长中各类元件的历史项电流源列向量计算、总历史项电流源列向量形成、线性方程组求解以及更新步骤,具体包括如下步骤:
第一步:在离线环境下,采用基本元件对有源配电网进行建模,读取基本无源元件、线路元件、电源元件、断路器元件、电力电子开关元件的基本参数信息,统计得到所述各类元件的数量;
第二步:在离线环境下,分别计算基本无源元件、线路元件、电源元件、断路器元件、电力电子开关元件的历史项电流源列向量求解的时钟周期数:nh,RLC,nh,LINE,nh,SOURCE,nh,BREAKER,nh,PE,以及更新步骤的时钟周期数:nu,RLC,nu,LINE,nu,SOURCE,nu,BREAKER,nu,PE,其中,nh表示历史项电流源列向量求解的时钟周期数,取大于等于0的整数,nu表示更新步骤的时钟周期数,取大于等于0的整数,RLC表示基本无源元件,LINE表示线路元件,SOURCE表示电源元件,BREAKER表示断路器元件,PE表示电力电子开关元件;
第三步:在离线环境下,计算第一步所述的各类元件历史项电流源列向量形成总历史项电流源列向量所需的时钟周期数nhist,计算采用并行的矩阵向量乘法实现线性方程组求解的时钟周期数nmatrix;
第四步:在离线环境下,计算每一步仿真所需的计算时钟周期总数为ntotal=max(nh,RLC,nh,Line,nh,SOURCE,nh,BREAKER,nh,PE)+nhist+nmatrix+max(nu,RLC,nu,Line,nu,SOURCE,nu,BREAKER,nu,PE)+nother,其中第一步所述的各类元件的历史项电流源列向量求解以及更新步骤的计算并发进行,max函数表示取最大值,nother表示一些零散操作的总时钟周期数;
第五步:在离线环境下,根据FPGA的驱动时钟频率f以及时钟周期总数ntotal,得到第四步中每一步仿真所需的实际时间ttotal,ttotal=ntotal/f,设定仿真计算步长Δt,Δt需满足ttotal<Δt以保证仿真实时性;
第六步:在离线环境下,根据仿真步长Δt计算第一步所述的各类元件的等效电导,形成节点电导矩阵,计算所述的各类元件模型中历史项电流源以及更新运算所需的计算参数,计算节点电导矩阵的逆矩阵;
第七步:将第六步已得到的等效电导、各类元件模型中历史项电流源以及更新运算所需的计算参数、节点电导矩阵的逆矩阵、第一步所述的基本参数信息、第五步所述的仿真步长Δt上传至基于FPGA的在线仿真环境;
第八步:在在线环境下,设置仿真时刻t=0,全局控制模块中有限状态机的仿真状态为空闲状态,启动仿真;
第九步:在在线环境下,仿真状态进入状态一,仿真计时器开始计时,计算第一步所述的各类元件的历史项电流源,生成历史项电流源列向量,其中所述的各类元件的计算是并行的,各类元件的计算任务完成后将各自的结束信号置高电平;
第十步:在在线环境下,对第九步所述的各类元件的结束信号进行逻辑与操作,当该信号为高电平,即所有元件完成历史项电流源计算后,将所有元件生成的历史项电流源列向量组合,得到总的历史项电流源列向量Ih,并进行存储,生成状态一结束信号;
第十一步:在在线环境下,仿真状态进入状态二,根据断路器开关状态读取相应的节点电导矩阵的逆矩阵G-1,采用并行的矩阵向量乘法由逆矩阵G-1及总的历史项电流源列向量Ih计算节点电压列向量v,生成状态二结束信号;
第十二步:在在线环境下,仿真状态进入状态三,对所述的各类元件分别进行更新运算,计算每个元件的端电压以及支路电流,并进行存储,其中所述的各类元件的更新计算是并行的;
第十三步:在在线环境下,将用户指定的仿真结果传回离线环境,以便于用户查看;
第十四步:在在线环境下,判断仿真计时器是否计时至Δt时,如满足条件,则生成步长结束信号,否则仿真器等待直至计时至Δt;
第十五步:判断仿真时间是否达到仿真终了时刻,如达到仿真终了时刻,则仿真结束,否则返回第九步。
第一步所述的基本元件包括:基本无源元件、线路元件、电源元件、断路器元件、电力电子开关元件。
第一步所述的基本参数信息包括:基本无源元件的电阻、电感和电容参数,线路元件的电阻和电感矩阵,电源元件的幅值、频率和初始相位,断路器元件的开路电阻、闭合电阻、断路器动作时间,电力电子开关元件表示开路的电阻、电容以及表示闭合的电感,各类元件的节点编号,节点电导矩阵维数。
实时仿真中的仿真状态一、仿真状态二和仿真状态三的控制调度,是由有限状态机实现的。
本发明的基于FPGA的有源配电网暂态实时仿真***设计方法,能够充分发挥FPGA硬件并行性以及流水线架构的技术优势,保证了整个***暂态仿真过程中的实时性,并为采用较小步长精确求解有源配电网的详细动态过程提供了可靠的基础。本发明的仿真结果与商业仿真软件的仿真结果在稳态与暂态过程中都能够完全吻合,二者的动态响应特性保持了高度一致,体现出了良好的仿真精度,充分验证了本发明提出的适于FPGA实现的有源配电网暂态实时仿真***框架设计方法的可行性。本发明具有较好的可行性与适用性,为实现含分布式电源、储能设备的有源配电网暂态实时仿真中提供了一种很好的解决思路。
具体实施方式
下面结合实施例和附图对本发明的基于FPGA的有源配电网暂态实时仿真***设计方法做出详细说明。
本发明的基于FPGA的有源配电网暂态实时仿真***设计方法,如附图2所示,有源配电网暂态实时仿真***分为离线仿真环境和在线仿真环境,其中离线仿真环境负责实时仿真用时ttotal的计算,根据实时仿真用时ttotal设置仿真步长Δt,并将根据仿真步长Δt计算出的相关参数以及读取到的基本参数信息上传至基于FPGA的在线仿真环境;在线仿真环境完成仿真的实时计算,包括每个步长中各类元件的历史项电流源列向量计算、总历史项电流源列向量形成、线性方程组求解以及更新步骤,具体如图9所示,包括如下步骤:
第一步:在离线环境下,采用基本元件对有源配电网进行建模,读取各类基本元件的基本参数信息,统计得到所述各类元件的数量,其中,所述的基本元件包括:基本无源元件、线路元件、电源元件、断路器元件、电力电子开关元件等;所述的基本参数信息包括:基本无源元件的电阻、电感和电容参数,线路元件的电阻和电感矩阵,电源元件的幅值、频率和初始相位,断路器元件的开路电阻、闭合电阻、断路器动作时间,电力电子开关元件表示开路的电阻、电容以及表示闭合的电感,各类元件的节点编号,节点电导矩阵维数。
第二步:在离线环境下,分别计算基本无源元件、线路元件、电源元件、断路器元件、电力电子开关元件等各类元件的历史项电流源列向量求解的时钟周期数:nh,RLC,nh,LINE,nh,SOURCE,nh,BREAKER,nh,PE,以及更新步骤的时钟周期数:nu,RLC,nu,LINE,nu,SOURCE,nu,BREAKER,nu,PE,其中,nh表示历史项电流源列向量求解的时钟周期数,取大于等于0的整数,nu表示更新步骤的时钟周期数,取大于等于0的整数;
有源配电网中包括电源、电机、变压器、线路与开关模型等多类基本元件。考虑到有源配电网中涉及的元件较多,这里仅针对具有典型处理方式的基本无源元件、线路元件、电源类元件和电力电子开关元件进行说明,并给出离线环境下这几类元件的历史项电流源列向量求解和更新步骤的时钟周期总数的计算方法。
(1)基本无源元件
基本无源元件包括电阻R、电感L和电容C以及由它们组成的RL、RC复合元件等。对于此类元件,其历史量求解和更新步骤的一般形式如式(5)和式(6)所示。式中,根据R、L、C组合形式不同,A1、A2、Geq的具体表达式也有所不同,如表1所示。
Ih(t-Δt)=A1v(t-Δt)+A2i(t-Δt) (5)
i(t)=Geqv(t)+Ih(t-Δt) (6)
表1基本无源元件计算参数表达式
对于基本无源元件的仿真,可充分利用FPGA的高度并行性并实现深度流水线结构。以历史项求解为例,如附图4所示。根据历史项求解计算公式,A1、A2及上一时步的支路电压v(t-Δt)和支路电流i(t-Δt)可同时从4个RAM中读出,并通过2个浮点数乘法器同时进行乘法运算,最后通过浮点数加法器求出历史项Ih(t-Δt),存入RAMhist中,用于下一时步计算。在该模块中,由RAM读取数据需要2个时钟周期,浮点数乘法和加法运算使用了集成编译环境自带的IP核,其计算时钟数nmultiply和nadd分别为5和7个时钟周期。因此,模块初始延时为14个时钟周期。在流水线架构下,第一个基本无源元件的计算结果将在14个时钟周期后得到,当NRLC个无源元件依次通过历史项求解模块进行处理时,其总时钟周期数nh,RLC=14+(NRLC-1)个时钟周期。同理,其更新步骤包含两个浮点数加法和一个浮点数乘法,其总时钟周期数nu,RLC=21+(NRLC-1)个时钟周期。
(2)线路元件
线路元件的历史项计算公式以及更新计算公示如式(7)和式(8)所示:
以历史项求解为例,如附图5所示。[A]和[B]均为3x3矩阵,可分别使用RAMA1、RAMA2、RAMA3、RAMB1、RAMB2、RAMB3存储每一个线路元件[A]和[B]矩阵的一行。仿真开始时,[A]和[B]以及上一时步的支路电压向量和支路电流向量同时从RAM中读出,并依照附图5所示流程进行并行矩阵向量点乘运算以及并行向量加法运算。当每一个线路元件的历史项电流源Ih1(t-Δt)、Ih2(t-Δt)、Ih3(t-Δt)计算得到后,将其重新转化为浮点数,并通过延时、整合、提取操作后存入存储器RAMhist。附图5中的Delay_nclk模块表示进行n个时钟周期的延时,多为数据对齐而设置,Fix2Float和Float2Fix模块用于定点数和浮点数的相互转换。当NLINE个线路元件依次通过历史项求解模块进行处理时,求解过程的时钟周期数nh,LINE=22+(3*NLINE-1)。另外,其更新过程的时钟周期数nu,LINE=33+(3*NLINE-1)。
(3)电源类元件
电源模块可以处理包括单相电压源、单相电流源、三相电压源、三相电流源以及受控电压源和受控电流源等多种电源。以交流源为例,其输出量一般都如式(9)所示:
f(t)=Asin(ωt+θ) (9)
其中,A表示幅值,ω表示角频率,θ表示初始相位。采用查表法实现这一函数的求解,其原理如附图6所示。
首先使用小于仿真步长Δt的采样步长Ts提前计算出一个周期内所有的单位正弦值sin(ωt+θ),并存入RAMsin,同时每一个交流源的初始相位θ推算出对应于RAMsin的初始地址并依次存入RAMθ中,同时RAMθ中存储的每一个相位都随仿真推进而递增,其增量Inc为仿真步长与采样步长的比值Δt/Ts。这样就无需通过复杂的算法计算非线性正弦函数,只需通过RAMθ的地址数据从RAMsin中读取单位正弦值并与幅值A进行浮点数乘法即可,每个交流源的幅值A同样提前存入存储器RAMA中。当NSOURCE个电源元件依次通过历史项求解模块进行处理时,求解过程的时钟周期数nh,SOURCE=9+(NSOURCE-1)。另外,其更新步骤用于求解的时钟周期数nu,SOURCE=7+(NSOURCE-1)。
(4)电力电子开关元件
本发明使用如下方法进行开关建模,具体方法为:开关闭合时使用小电感模拟,开关断开时使用小电容与电阻串联形式模拟,式(10)列写了使用梯形法差分得到的开关断开和闭合时的特性方程。
式(10)中Ls表示开关闭合时的电感,Cs表示开关断开时的电容,Rs表示开关断开时的电阻,i(t)和i(t-Δt)表示本时步以及上一时步的开关电流,u(t)和u(t-Δt)表示本时步以及上一时步的开关两侧电压,Δt表示仿真步长。若式(10)中开关断开和闭合时的导纳满足式(11)则保证了开关状态切换时导纳矩阵不变,仅依靠历史量变化即可切换开关状态。
使用该方法时,不论开关如何变化,导纳矩阵始终保持不变,因此只需存储一个逆矩阵即可,极大地缓解了逆矩阵的存储压力。
对于开关元件的仿真实现可充分利用FPGA的高度并行性,并实现深度流水线结构。以其历史量求解为例进行说明,其求解公式如式(12)所示,由式(10)中的两个表达式综合而成,具体FPGA实现框图如附图7所示。
i(t)=Gu(t)+Ih(t-Δt) (12)
Ih(t-Δt)=A1u(t-Δt)+A2i(t-Δt)
式(12)中,A1和A2的取值由开关状态决定,RAMv、RAMi及RAMhist用于存储开关电压、开关电流以及历史量,RAMA1_open、RAMA1_closed、RAMA2_open和RAMA2_closed分别用于存储每一个开关断开或闭合时A1和A2的取值A1_open、A1_closed、A2_open和A2_closed,RAMstate用于存储每个IGBT的开关状态state。如附图8所示,每一时步计算开始时,A1_open、A1_closed、A2_open、A2_closed以及state同时从存储器中读出,其中A1_open、A1_closed、A2_open和A2_closed分别通过两个数据分配器,并由通过开关状态state判断该时步A1和A2的取值。上一时步的开关端电压v(t-Δt)和开关电流i(t-Δt)延迟一个时钟读出,与数据分配器的输出结果A1、A2保持数据对齐,并同时通过2个浮点数乘法器进行乘法运算,最后通过浮点数加法器求出历史量Ih(t-Δt),存入RAMhist中,用于下一时步计算。当NPE个电力电子开关元件依次通过历史项求解模块进行处理时,求解过程的时钟周期数nh,PE=15+(NPE-1)。另外,其更新过程的时钟周期数nu,PE=21+(NPE-1)。
第三步:在离线环境下,计算第一步所述的各类元件历史项电流源列向量形成总历史项电流源列向量所需的时钟周期数nhist,计算采用并行的矩阵向量乘法实现线性方程组求解的时钟周期数nmatrix;
附图2中包含总历史项电流源列向量生成模块以及基于并行矩阵向量乘法的线性方程组求解模块,其所需的时钟周期数如下面所述。
在总历史项电流源列向量生成模块中,需要根据各类元件计算出的历史项电流源列向量,叠加求出总历史项电流源。在该过程中叠加运算是在定点数数制下完成的,需要考虑浮点数与定点数的相互转换所消耗的时钟周期nconvert,叠加运算的时钟周期数等于矩阵维数Nmatrix,其中浮点数与定点数的相互转换使用了集成编译环境自带的IP核,其计算时钟数nconvert为6,因此该步骤的时钟周期数nhist=2*nconvert+Nmatrix。
线性方程组求解往往是暂态仿真中最为耗时的部分,为了达到较快的计算速度,保证仿真实时性,可以预存电导矩阵逆矩阵,其计算公式如式(10)所示。对于维数为Nmatrix的矩阵,使用Nmatrix个RAM进行存储,每个RAM存储矩阵的一行数据。此时,可将线性方程组求解转化为Nmatrix个可并行的向量点乘运算,如式(11)所示。该模块在累加处理上与线路元件相同,这里不再赘述,其计算需要先后考虑浮点数乘法、浮点数与定点数的相互转换以及定点数累加,因此其时钟周期数nmatrix=nmultiply+2nconvert。模块实现方式如附图8所示,通过该模块可计算得到每个节点的瞬时电压值。
v=YIh,Y=G-1 (10)
考虑到断路器使用双电阻模型进行模拟,即断路器断开时,使用阻值较大的电阻表示,断路器闭合时,使用阻值很小的电阻表示,断路器状态变化造成了***电导矩阵的变化。因此在实时仿真中,所有可能的矩阵结构都需要提前计算并存储至RAM中,需要存储的计算矩阵个数为2Nbreaker,其中Nbreaker为断路器个数,通过每个断路器的当前状态形成状态序列,从而读取相应的电导矩阵逆矩阵。
第四步:在离线环境下,如附图2所示,第一步所述的各类元件的历史项电流源列向量求解以及更新步骤的计算并发进行,它们的求解时钟周期数由耗时最长者确定,因此计算每一步仿真所需的计算时钟周期总数为ntotal=max(nh,RLC,nh,Line,nh,SOURCE,nh,BREAKER,nh,PE,......)+nhist+nmatrix+max(nu,RLC,nu,Line,nu,SOURCE,nu,BREAKER,nu,PE,......)+nother,max函数表示取最大值,nother表示一些零散操作的总时钟周期数,如生成功能模块结束信号的操作等;
第五步:在离线环境下,根据FPGA的驱动时钟频率f以及时钟周期总数ntotal,得到第四步中每一步仿真所需的实际时间ttotal,ttotal=ntotal/f,设定仿真计算步长Δt,Δt需满足ttotal<Δt以保证仿真实时性;
第六步:在离线环境下,根据仿真步长Δt计算第一步所述的各类元件的等效电导,形成节点电导矩阵,计算所述的各类元件模型中历史项电流源以及更新运算所需的计算参数,计算节点电导矩阵的逆矩阵;
第七步:将第六步已得到的等效电导、各类元件模型中历史项电流源以及更新运算所需的计算参数、节点电导矩阵的逆矩阵、第一步所述的基本参数信息、第五步所述的仿真步长Δt等上传至基于FPGA的在线仿真环境;
如上所述的第一步~第七步,是在离线环境下完成的,而在线环境中的仿真状态控制是通过有限状态机实现的,如附图3所示,设置了四种运行状态并为每种状态分配一个3位二进制数表示,分别为空闲状态(IDLE:000);仿真状态一(STEP_I:001);仿真状态二(STEP_II:010);仿真状态三(STEP_III:100)。
该有限状态机的运行流程为:仿真器初始处于空闲状态IDLE,当仿真开始信号Start拉高后,***进入仿真状态一STEP_I;当总历史项电流源列向量生成后,仿真状态一结束信号end_STEP_I置1,促使仿真进入仿真状态二STEP_II;当线性方程组求解完成后,***拉高仿真状态二结束信号end_STEP_II,促使仿真进入仿真状态三STEP_III;当仿真计时器计时至Δt,拉高步长结束信号end_Δt,该时步计算结束,促使仿真重新回到仿真状态一STEP_I并开始下一时步的仿真。由此,实时仿真在仿真状态一STEP_I、状态二STEP_II、状态三STEP_III三个状态间循环推进,直至仿真结束。当复位信号Reset拉高时,***可重新回到空闲状态。具体流程如下所述。
第八步:在在线环境下,设置仿真时刻t=0,全局控制模块中有限状态机的仿真状态为空闲状态(IDLE),启动仿真;
第九步:在在线环境下,仿真状态进入状态一(STEP_I),仿真计时器开始计时,计算第一步所述的各类元件的历史项电流源,生成历史项电流源列向量,其中所述的各类元件的计算是并行的,各类元件的计算任务完成后将各自的结束信号置高电平;
第十步:在在线环境下,对第九步所述的各类元件的结束信号进行逻辑与操作,当该信号为高电平,即所有元件完成历史项电流源计算后,将所有元件生成的历史项电流源列向量组合,得到总的历史项电流源列向量Ih,并进行存储,生成状态一结束信号(end_STEP_I);
第十一步:在在线环境下,仿真状态进入状态二(STEP_II),根据断路器开关状态读取相应的节点电导矩阵的逆矩阵G-1,采用并行的矩阵向量乘法由逆矩阵G-1及总的历史项电流源列向量Ih计算节点电压列向量v,生成状态二结束信号(end_STEP_II);
第十二步:在在线环境下,仿真状态进入状态三(STEP_III),对所述的各类元件分别进行更新运算,计算每个元件的端电压以及支路电流,并进行存储,其中所述的各类元件的更新计算是并行的;
第十三步:在在线环境下,将用户指定的仿真结果传回离线环境,以便于用户查看;
第十四步:在在线环境下,判断仿真计时器是否计时至Δt时,如满足条件,则生成步长结束信号(end_Δt),否则仿真器等待直至计时至Δt;
第十五步:判断仿真时间是否达到仿真终了时刻,如达到仿真终了时刻,则仿真结束,否则返回第九步。
该设计方法提出的***框架能够充分发挥FPGA硬件并行性以及流水线架构的技术优势,保证了整个***暂态仿真过程中的实时性,并为采用较小步长精确求解有源配电网的详细动态过程提供了可靠的基础。
本发明中所述的实时仿真中的仿真状态一(STEP_I)、仿真状态二(STEP_II)和仿真状态三(STEP_III)的控制调度,是由有限状态机实现的。
本发明提出的基于FPGA的有源配电网暂态实时仿真***设计方法,属于电力***仿真领域,特别适用于含分布式电源、储能装置的有源配电网实时暂态仿真。本发明提出了基于FPGA的有源配电网暂态实时仿真***RTDG(Real-Time Transient Simulator for DistributedGeneration and Microgrid)。这里以欧盟低压有源配电网算例***为例进行说明,如附图10所示,***中含有多种线路与负荷类型。实施步骤详细说明如下:
第一步:在离线环境下,采用基本元件对有源配电网进行建模,读取基本无源元件、线路元件、电源元件、断路器元件、电力电子开关元件等各类基本元件的基本参数信息,统计得到各类元件的数量,在该算例中,电源元件3个、基本无源元件42个、线路元件15个,断路器元件1个,电力电子开关元件0个;
第二步:在离线环境下,计算基本无源元件、线路元件、电源元件、断路器元件、电力电子开关等元件的历史项电流源列向量求解的时钟周期总数(nh,RLC,nh,LINE,nh,SOURCE,nh,BREAKER,nh,PE,......)以及更新步骤的时钟周期总数(nu,RLC,nu,LINE,nu,SOURCE,nu,BREAKER,nu,PE,......)。在该算例中nh,RLC=55,nh,LINE=66,nh,SOURCE=11,nh,BREAKER=0,nh,PE=0,nu,RLC=62,nu,LINE=77,nu,SOURCE=13,nu,BREAKER=22,nu,PE=0;
第三步:在离线环境下,计算各类元件历史项电流源列向量形成总历史项电流源列向量所需的处理时钟周期数nhist,计算采用并行矩阵向量乘法实现线性方程组求解的时钟周期数nmatrix;在该算例中Nmatrix=67,nhist=79,nmatrix=17;
第四步:在离线环境下,计算每一步仿真所需的总计算时钟周期数为ntotal=max(nh,RLC,nh,Line,nh,SOURCE,nh,BREAKER,nh,PE,......)+nhist+nmatrix+max(nu,RLC,nu,Line,nu,SOURCE,nu,BREAKER,nu,PE,......)+nother,其中各类元件的历史项电流源列向量求解以及更新步骤的计算并发进行,max函数表示取最大值,nother=25,在该算例中,依照公式计算出的ntotal为264;
第五步:在离线环境下,根据FPGA的驱动时钟频率f以及ntotal,得到每一步计算所需的实际时间ttotal,ttotal=ntotal/f,设定仿真计算步长Δt,Δt需满足ttotal<Δt以保证仿真实时性。在该算例中,时钟频率f为135MHz,因此ttotal为1.956μs,Δt设定为2μs;
第六步:在离线环境下,根据仿真步长Δt计算第一步所述的各类元件的等效电导,形成节点电导矩阵,计算所述的各类元件模型中历史项电流源以及更新运算所需的计算参数,计算节点电导矩阵的逆矩阵;
第七步:将第六步已得到的等效电导、各类元件模型中历史项电流源以及更新运算所需的计算参数、节点电导矩阵的逆矩阵、第一步所述的基本参数信息、第五步所述的仿真步长Δt上传至基于FPGA的在线仿真环境;
第八步:在在线环境下,设置仿真时刻t=0,全局控制模块中有限状态机的仿真状态为空闲状态(IDLE),启动仿真;
第九步:在在线环境下,仿真状态进入状态一(STEP_I),仿真计时器开始计时,计算第一步所述的各类元件的历史项电流源,生成历史项电流源列向量,其中所述的各类元件的计算是并行的,各类元件的计算任务完成后将各自的结束信号置高电平;
第十步:在在线环境下,对第九步所述的各类元件的结束信号进行逻辑与操作,当该信号为高电平,即所有元件完成历史项电流源计算后,将所有元件生成的历史项电流源列向量组合,得到总的历史项电流源列向量Ih,并进行存储,生成状态一结束信号(end_STEP_I);
第十一步:在在线环境下,仿真状态进入状态二(STEP_II),根据断路器开关状态读取相应的节点电导矩阵的逆矩阵G-1,采用并行的矩阵向量乘法由逆矩阵G-1及总的历史项电流源列向量Ih计算节点电压列向量v,生成状态二结束信号(end_STEP_II);
第十二步:在在线环境下,仿真状态进入状态三(STEP_III),对所述的各类元件分别进行更新运算,计算每个元件的端电压以及支路电流,并进行存储,其中所述的各类元件的更新计算是并行的;
第十三步:在在线环境下,将用户指定的仿真结果传回离线环境,以便于用户查看;
第十四步:在在线环境下,判断仿真计时器是否计时至Δt时,如满足条件,则生成步长结束信号(end_Δt),否则仿真器等待直至计时至Δt;
第十五步:判断仿真时间是否达到仿真终了时刻,如达到仿真终了时刻,则仿真结束,否则返回第九步。
该算例的执行环境为Altera公司的IV GX FPGA530官方开发板。开发板配有Stratix IV系列FPGA EP4SGX530KH40C2N,该芯片包含531200个逻辑单元,212480个自适应逻辑模块,1280个M9K存储器,64个M144K存储器,1024个18x18专用乘法器,8个PLL以及744个I/O。除了EP4SGX530KH40C2N芯片,开发板还提供了多个频率的时钟电路,3个用户可配置按钮,大量外部存储器,PCI Express插槽,10/100/1000Ethernet接口等***电路。
在仿真速度方面,通过本发明提出的基于FPGA的有源配电网暂态实时仿真***设计方法,能够充分发挥FPGA硬件并行性以及流水线架构,保证整个***暂态仿真的实时性;附图11~12比较了采用本发明方法的基于FPGA的有源配电网暂态实时仿真***与商业仿真软件Matlab/SimPowerSystems的仿真结果。从附图中可以看出,Matlab/SimPowerSystems的仿真结果与FPGA的仿真结果在稳态与暂态过程中都能够完全吻合,二者的动态响应特性保持了高度一致,体现出了良好的仿真精度,充分验证了本发明提出的适于FPGA实现的有源配电网暂态实时仿真***框架设计方法的可行性。
以上算例测试结果证明,本发明提出的一种基于FPGA的有源配电网暂态实时仿真***设计方法具有较好的可行性与适用性,为实现含分布式电源、储能设备的有源配电网暂态实时仿真中提供了一种很好的解决思路。