CN117828243B - 一种fpga潮流并行计算***和方法 - Google Patents
一种fpga潮流并行计算***和方法 Download PDFInfo
- Publication number
- CN117828243B CN117828243B CN202410253725.5A CN202410253725A CN117828243B CN 117828243 B CN117828243 B CN 117828243B CN 202410253725 A CN202410253725 A CN 202410253725A CN 117828243 B CN117828243 B CN 117828243B
- Authority
- CN
- China
- Prior art keywords
- data
- gauss
- calculation
- module
- matrix
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 122
- 238000004364 calculation method Methods 0.000 claims abstract description 206
- 238000013500 data storage Methods 0.000 claims abstract description 17
- 239000011159 matrix material Substances 0.000 claims description 165
- 238000003379 elimination reaction Methods 0.000 claims description 44
- 230000008030 elimination Effects 0.000 claims description 39
- 238000000354 decomposition reaction Methods 0.000 claims description 32
- 238000012937 correction Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 12
- 230000003416 augmentation Effects 0.000 claims description 11
- 238000002360 preparation method Methods 0.000 claims description 4
- 230000000295 complement effect Effects 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 238000003860 storage Methods 0.000 description 15
- 239000000243 solution Substances 0.000 description 12
- 238000009826 distribution Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000009191 jumping Effects 0.000 description 3
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 101100499229 Mus musculus Dhrsx gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 208000014451 palmoplantar keratoderma and congenital alopecia 2 Diseases 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000003449 preventive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H02—GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
- H02J—CIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
- H02J3/00—Circuit arrangements for ac mains or ac distribution networks
- H02J3/04—Circuit arrangements for ac mains or ac distribution networks for connecting networks of the same frequency but supplied from different sources
- H02J3/06—Controlling transfer of power between connected networks; Controlling sharing of load between connected networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
- G06F17/12—Simultaneous equations, e.g. systems of linear equations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/06—Energy or water supply
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Health & Medical Sciences (AREA)
- Economics (AREA)
- Tourism & Hospitality (AREA)
- Computing Systems (AREA)
- General Business, Economics & Management (AREA)
- Public Health (AREA)
- Water Supply & Treatment (AREA)
- Strategic Management (AREA)
- Primary Health Care (AREA)
- Marketing (AREA)
- Human Resources & Organizations (AREA)
- General Health & Medical Sciences (AREA)
- Operations Research (AREA)
- Power Engineering (AREA)
- Supply And Distribution Of Alternating Current (AREA)
Abstract
本发明涉及一种FPGA潮流并行计算***和方法,其中***包括主机端和FPGA计算端,FPGA计算端包括:参数初始化模块,用于将接收到的二进制参数序列按顺序和位宽依次存储至数据存储模块;数据存储模块,用于存储二进制参数序列和中间计算数据;潮流模式判别模块,用于根据二进制参数序列确定潮流求解计算模式,以及根据迭代收敛性确定方程组的求解方法;控制计算模块,用于根据所述潮流模式判别模块的判别结果从所述数据存储模块中获取对应的数据进行潮流计算;结果数据返回模块,用于将所述控制计算模块的计算结果转换为二进制数据序列并传输给所述主机端。本发明能够节约大规模节点网络潮流计算所需要的片上计算资源。
Description
技术领域
本发明涉及电力***潮流计算技术领域,特别是涉及一种FPGA潮流并行计算***和方法。
背景技术
潮流计算是电力***非常重要的分析计算,根据电力***接线方式、参数和运行条件计算电力***稳态运行状态下的电气量,包括有功功率、无功功率及电压在电网中的分布。潮流计算也是进行***安全性、稳定性、可靠性分析的基础,用以研究***规划和运行中提出的各种问题。对规划中的电力***,通过潮流计算可以检验所提出的电力***规划方案能否满足各种运行方式的要求;对运行中的电力***,通过潮流计算可以预知各种负荷变化和网络结构的改变会不会危及***的安全,***中所有母线的电压是否在允许的范围以内,***中各种元件(线路、变压器等)是否会出现过负荷,以及可能出现过负荷时应事先采取哪些预防措施等。
当前,广泛应用的潮流计算方法是基于节点电压法,以节点导纳矩阵作为电力网络的数学模型,节点电压和节点注入电流由节点电压方程联系。但是,在实际的电力***中,已知的运行条件不是节点的注入电流,而是负荷和发电机的功率,这些功率一般不随节点电压的变化而变化。
根据给定节点变量的不同,有三种类型的节点。PU节点:有功功率和电压幅值为给定,这种类型节点相当于发电机母线节点。PQ节点:注入有功功率和无功功率是给定的,相当于实际电力***中的一个负荷节点,或有功和无功功率给定的发电机母线。平衡节点:用来平衡全电网的功率,平衡节点的电压幅值和相角是给定的,通常以它的相角为参考点,取其电压相角为零,一个独立的电力网中只设一个平衡节点。
从数学上说,潮流计算是求解一组由潮流方程描述的线性代数方程组。牛顿-拉夫逊(Newton-Raphson,NR)方法是解线性代数方程组的一种基本方法,在潮流计算中也得到应用。随着计算机技术的发展,NR潮流算法成为电力***潮流计算中的经典算法,仍是各种潮流算法的基础。NR法依据配电网运行特点,分别构建网络中各节点的潮流计算模型,生成雅可比矩阵,并利用NR法求解潮流方程,实现配电网络潮流分布的求解。对于n节点网络规模的电网,生成的雅克比矩阵为2(n-1)维,所构成的线性方程组增广矩阵维数为[2(n-1),2n-1],由于电力网络具有典型的节点中心化特征,每个节点只与少量的节点具有连接关系,矩阵中包含大量的零元素,如果采用常规的存储模式势必会消耗很高的存储资源。同时,雅克比矩阵和线性方程组求解需要消耗大量的存储和逻辑资源,求解线性方程组的LU分解法对现有计算平台的存储资源和计算能力都提出了巨大的挑战。由于潮流计算对实效性和精确性要求较高,在面对电网实时计算场景或是大规模网络潮流计算时,NR方法会因为消耗大量的计算和存储资源而降低运算效率。
此外,除了NR法,还有各种快速潮流计算方法(如直流潮流和快速分解潮流算法)、扩展潮流计算方法(如最优潮流、动态潮流、随机潮流、开断潮流等)、交直流联合***潮流计算、不对称电力***潮流计算和谐波潮流计算方法等,以满足各种特殊要求的潮流计算。
随着电网数字化转型升级,网络中的量测值不断增长,电力网络规模不断扩大,对电网中潮流分布的计算提出了更高的要求。目前一些研究机构和商业公司已经开发出一批专业电力潮流计算软件,如EasyPower、ETAP、Southern CASS、Matpower、PSASP、PSCAD等,但是现有以CPU为架构的软件算法都是在通用CPU上基于通用任务型的计算来设计的,没有专门针对算法的计算特点进行性能优化。指令是按照时钟周期顺序执行,一个时钟只能执行一条指令。因此,在进行数据计算任务时,受限于串行计算流程,计算速度较慢,无法满足大型电力***潮流计算的实效性。
现有文献:[1] Nwankpa C , Johnson J , Nagvajara P ,et al.FPGA hardwareresults for power system computation[C]//2009 IEEE/PES Power SystemsConference and Exposition.0[2023-09-26].DOI:10.1109/PSCE.2009.4839953.,其采用牛顿-拉夫逊方法求解电力潮流,采用了矩阵的LU分解法求解线性方程组,由于方程组每次迭代求解所形成的雅可比矩阵的LU分解需要涉及到大量的矩阵运算,对FPGA芯片的计算能力和存储资源都提出了极大的挑战。而电力***中的潮流计算通常需要满足实效性和精确性,通常所要求解的网络规模达到上千维,在需要精确求解方程组,特别是面对实时计算场景或涉及非常大的功率***时,LU分解法就会消耗大量的芯片存储资源和计算资源。
发明内容
本发明所要解决的技术问题是提供一种FPGA潮流并行计算***和方法,能够节约大规模节点网络潮流计算所需要的计算资源。
本发明解决其技术问题所采用的技术方案是:提供一种FPGA潮流并行计算***,包括主机端和FPGA计算端;
所述主机端包括:
数据准备模块,用于从电网中获取电网数据,并将所述电网数据生成二进制参数序列传输给所述FPGA计算端;
结果数据处理模块,用于将接收到所述FPGA计算端的二进制计算结果解析成标准格式的节点电压和功率;
所述FPGA计算端包括:
参数初始化模块,用于将接收到的二进制参数序列按顺序和位宽依次存储至数据存储模块;
数据存储模块,用于存储二进制参数序列和中间计算数据;
潮流模式判别模块,用于根据二进制参数序列确定潮流求解计算模式,以及根据迭代收敛性确定方程组的求解方法;
控制计算模块,用于根据所述潮流模式判别模块的判别结果从所述数据存储模块中获取对应的数据进行潮流计算;
结果数据返回模块,用于将所述控制计算模块的计算结果转换为二进制数据序列并传输给所述主机端。
所述主机端还包括:缺失数据处理模块,用于根据缺失数据的类型和特点采用预设填充法对缺失数据进行补全处理。
所述潮流判别模块包括:
计算模式确定模块,用于根据所述二进制参数序列中的线路阻抗值和电压初始值确定潮流求解计算模式;
求解确定模块,用于判别线性方程组系数矩阵的迭代收敛性,并根据迭代收敛性确定求解线性方程组的方法。
所述计算模式确定模块包括第一计算单元、第二计算单元、判断单元和第一确定单元;
所述第一计算单元用于根据电压初始值计算所有线路两端节点电压的相位差;
所述第二计算单元用于根据线路阻抗值计算所有线路的电阻和电抗的比值;
所述判断单元用于判断所有线路两端节点电压的相位差是否小于第一预设值,且所有线路的电阻和电抗的比值小于第二预设值;
若所有线路两端节点电压的相位差小于第一预设值,且所有线路的电阻和电抗的比值小于第二预设值,所述第一确定单元确定采用PQ分解法计算潮流;
若所有线路中有任一线路两端节点电压的相位差大于或等于第一预设值,或所有线路中有任一线路的电阻和电抗的比值大于或等于第二预设值,所述第一确定单元确定采用牛顿拉夫逊法计算潮流。
所述求解确定模块包括严格对角占优判断单元、对称正定判断单元和第二确定单元;
所述严格对角占优判断单元,用于判断线性方程组系数矩阵是否为严格对角占优矩阵;
所述对称正定判断单元,用于判断线性方程组系数矩阵是否为对称正定矩阵;
若所述线性方程组系数矩阵为严格对角占优矩阵或对称正定矩阵,所述第二确定单元确定采用迭代法线性方程组求解状态;
若所述线性方程组系数矩阵不是严格对角占优矩,且不是对称正定矩阵,所述第二确定单元确定采用高斯消去线性方程组求解状态。
所述控制计算模块包括控制部分和计算部分;
所述控制部分包括:
稀疏矩阵控制模块,用于负责稀疏矩阵中元素的删除和添加;
PQ分解控制模块,用于负责PQ分解法求解潮流过程中的数据读取和广义雅克比矩阵生成逻辑控制;
迭代法求解控制模块,用于负责迭代法求解线性方程组时迭代序列方程的时序逻辑控制;
循环控制模块,用于负责对功率不平衡量进行收敛判断完成循环求解的控制;
所述计算部分包括:
NR潮流计算模块,用于基于二进制参数序列和/或中间计算数据采用牛顿拉夫逊法计算潮流,得到功率不平衡量;
PQ分解潮流计算模块,用于基于二进制参数序列和/或中间计算数据采用PQ分解法计算潮流,得到功率不平衡量;
线性方程组参数计算模块,用于根据功率不平衡量形成线性方程组系数矩阵,并根据线性方程组系数矩阵和功率不平衡量矩阵的计算,形成增广矩阵;
迭代法求解模块,用于采用迭代法求解出各个节点的电压修正量;
高斯消去法求解模块,用于采用高斯消去法求解出各个节点的电压修正量;
功率计算模块,若功率不平衡量满足收敛精度时,用于采用各个节点的电压修正量对节点电压进行修正,并使用修正后的节点电压计算平衡节点和网络中各条线路的功率,并将计算结果输入给所述结果数据返回模块。
所述高斯消去法求解模块在进行高斯消元时,具体包括:
对于[2(n-1),2n-1]维的增广矩阵[J|delta_PQ]需要进行2n-1轮前向消去,在进行前向消去时,分别取出gauss_indices和gauss_data矩阵中的元素送入相应的数据队列,在第i’轮消去时,i’=1,…,2n-3,n为正整数,取出第i行的首地址gauss_index_pointers[i],依次将gauss_indices矩阵和gauss_data矩阵中第i行的数据列标号值gc i,j 和gd i,j 分别预先送入循环队列Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data中;同时取出gauss_indices和gauss_data矩阵中第k行的首地址gauss_index_pointers[k],依次将第k行元素的列标号值gc k,j 和gd k,j 分别送入队列FIFO_gauss_indices和FIFO_gauss_data中,k=i+1,i+2,…,2(n-1),在队列指针逻辑控制单元的控制下,每消去完成一行元素,Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data完成一次数据循环,然后进入下一行元素的消去过程;第i行共有gnum[i]个非零元素,其中gnum[i]=gauss_index_pointers[i+1]-gauss_index_pointers[i];在队列指针逻辑控制单元的控制下,基于循环队列Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data,以及队列FIFO_gauss_indices和FIFO_gauss_data中的数据进行计算,计算出第k行元素消去后的新数据,并将第k行的新列标号值nc k,j 和nd k,j 写入新元素列标号值矩阵new_indices和新元素矩阵new_data中;
在队列指针逻辑控制单元的控制下,在第i’轮前向消去时,依次消去第k行数据,k=i+1,i+2,…,2(n-1),若k-i>1时,开始数据回写过程,保证新元素列标号值矩阵new_indices和新元素矩阵new_data中的数据按流水线写入gauss_indices和gauss_data矩阵中;若新元素列标号值矩阵new_indices和新元素矩阵new_data中第k行新数据个数小于gauss_indices和gauss_data矩阵中第k行非零元素值时,直接取出队列中数据按时钟顺序进行数据回写,每写完一个数据原始指针indices_ID和data_ID的地址后移一位;若新元素列标号值矩阵new_indices和新元素矩阵new_data中第k行新数据个数大于gauss_indices和gauss_data矩阵中第k行非零元素值时,则需要保证回写时新数据不覆盖gauss_indices和gauss_data矩阵中的原有数据,若数据指针data_ID与第k行非零元素个数gnum[k]相等,则需要等待第k行下一个元素消去的时钟周期后,再进行新数据写入;每写完一次第k行数据,更新gauss_index_pointers地址数据;当第i+1到2(n-1)行数据前向消去和反向回写完成后,第i’轮消去过程结束。
所述基于循环队列Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data,以及队列FIFO_gauss_indices和FIFO_gauss_data中的数据进行计算的计算规则为:
若第k行非零元素gnum[k]=0,则直接进入下一行计算;
若第k行非零元素gnum[k]>0,从队列FIFO_gauss_indices中取出第一个元素进行判断,若列标号值gc k,j >k,则第k行首元素为零,无需计算第k行元素,并将第k行元素依次送入新元素列标号值矩阵new_indices和新元素矩阵new_data中;
若列标号值gc k,j =k,则分别从循环队列Cir_FIFO_gauss_indices和 Cir_FIFO_gauss_data、以及队列FIFO_gauss_indices和FIFO_gauss_data中取出元素gc i,j 、gd i,j 、gc k,j 、gd k,j 进行判断,记录循环队列Cir_FIFO_gauss_data和FIFO_gauss_data中第一个数据值,并将数据队列中的列标号值gd k,j 和gd i,j 存入寄存器mgd k,j 和mgd i,j 中;
若gc i,j <gc k,j ,则将元素gc i,j 作为新数据列标号值nc k,j ,将元素gd i,j 作为新元素值nd k,j ,同时将循环队列Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data的队列指针Cir_FIFO_indices_ID和Cir_ FIFO_data_ID向后移动一位;
若gc i,j >gc k,j ,则将元素gc k,j作为 新数据列标号值nc k,j ,将元素gd k,j 作为新元素值nd k,j ,同时将队列FIFO_gauss_indices和FIFO_gauss_data的队列指针FIFO_indices_ID和FIFO_data_ID向后移动一位;
若gc i,j =gc k,j ,则将元素gc k,j 作为新数据列标号值nc k,j ,令(gd k,j /mgd k,j )mgd i,j + gd i,j 作为新元素值nd k,j ,同时将队列指针Cir_FIFO_indices_ID、Cir_ FIFO_data_ID、FIFO_indices_ID和FIFO_data_ID的队列指针同时向后移动一位。
本发明解决其技术问题所采用的技术方案是:提供一种FPGA潮流计算方法,采用上述的FPGA潮流并行计算***,包括以下步骤:
主机端从网中获取电网数据,并将所述电网数据生成二进制参数序列传输给所述FPGA计算端;
FPGA计算端的参数初始化模块按照预设的数据顺序和位宽序列,将所述二进制参数序列存储至数据存储模块;
FPGA计算端的潮流判别模块根据二进制参数序列确定潮流求解计算模式;
FPGA计算端的控制计算模块根据潮流判别模块确定的潮流求解计算模式从数据存储模块中获取对应的数据进行计算,得到功率不平衡量,根据功率不平衡量形成线性方程组系数矩阵,并根据线性方程组系数矩阵和功率不平衡量矩阵的计算,形成增广矩阵;
FPGA计算端的潮流判别模块对线性方程组系数矩阵的迭代收敛性进行判断,并根据判断结果确定方程组的求解方法;
FPGA计算端的控制计算模块根据确定的方程组的求解方法对线性方程组进行求解,得到各个节点的电压修正量;
FPGA计算端的控制计算模块对功率不平衡量进行收敛判断;
若功率不平衡量不满足收敛精度,FPGA计算端的控制计算模块采用确定的潮流求解计算模式进行循环迭代;
若功率不平衡量满足收敛精度,FPGA计算端的控制计算模块采用各个节点的电压修正量修正对应的节点电压,并根据修正后的节点电压计算平衡节点和网络中各条线路的功率;
FPGA计算端的结果数据返回模块将计算出的平衡节点和网络中各条线路的功率转换为二进制数据序列并传输给所述主机端;
主机端将接收到的二进制数据序列解析成标准格式的节点电压和功率。
所述FPGA计算端的潮流判别模块根据二进制参数序列确定潮流求解计算模式,具体包括:
根据所述二进制参数序列中的电压初始值计算所有线路两端节点电压的相位差;
根据所述二进制参数序列中的线路阻抗值计算所有线路的电阻和电抗的比值;
判断所有线路两端节点电压的相位差是否小于第一预设值,且所有线路的电阻和电抗的比值小于第二预设值;
若所有线路两端节点电压的相位差小于第一预设值,且所有线路的电阻和电抗的比值小于第二预设值,确定采用PQ分解法计算潮流;
若所有线路中有任一线路两端节点电压的相位差大于或等于第一预设值,或所有线路中有任一线路的电阻和电抗的比值大于或等于第二预设值,确定采用牛顿拉夫逊法计算潮流。
所述FPGA计算端的潮流判别模块对线性方程组系数矩阵的迭代收敛性进行判断,并根据判断结果确定方程组的求解方法,具体包括:
判断线性方程组系数矩阵是否为严格对角占优矩阵;
判断线性方程组系数矩阵是否为对称正定矩阵;
若所述线性方程组系数矩阵为严格对角占优矩阵或对称正定矩阵,确定采用迭代法线性方程组求解状态;
若所述线性方程组系数矩阵不是严格对角占优矩,且不是对称正定矩阵,确定采用高斯消去线性方程组求解状态。
有益效果
由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明根据输入节点网络的规模和拓扑类型,选择合适的潮流求解计算模式,并根据功率不平衡量所形成的线性方程组系数矩阵的迭代收敛性选择合适的方法求解线性方程组,从而节约大规模节点网络潮流计算所需要的片上计算资源。
附图说明
图1是本发明第一实施方式FPGA潮流并行计算***的整体架构图;
图2是本发明第一实施方式中潮流并行计算***状态转移逻辑架构图;
图3是本发明第一实施方式中稀疏矩阵线性方程组高斯消去计算流程示意图。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
本发明的第一实施方式涉及一种FPGA潮流并行计算***,如图1所示,该***采用两层架构,包括主机端和FPGA计算端。
主机端包括数据准备模块和结果数据处理模块。数据准备模块用于从电网中获取电网数据,并将所述电网数据生成二进制参数序列通过串口传输给所述FPGA计算端。结果数据处理模块用于通过串口接收FPGA计算端的二级制计算结果,并将接收到的二进制计算结果解析成标准格式的节点电压和功率。
本实施方式中的主机端还包括缺失数据处理模块,该缺失数据处理模块用于根据缺失数据的类型和特点采用预设填充法对缺失数据进行补全处理。其中,预设填充法包括但不限于回归填补法、均值填补法、众数填充法和中位数填充法。
FPGA计算端包括参数初始化模块、数据存储模块、潮流模式判别模块、控制计算模块和结果数据返回模块。
参数初始化模块用于将接收到的二进制参数序列按顺序和位宽依次存储至数据存储模块,其中,二进制参数序列的顺序如下:导纳矩阵、初始设定功率、线路阻抗值、初始节点电压的幅值和相角、初始节点电压的实部和虚部、收敛精度和其它参数,其中,其它参数包括节点数量、网络节点个数n、PQ和PV节点个数,n为正整数。
数据存储模块用于存储二进制参数序列和中间计算数据,其中,中间计算数据包括线性方程组的中间解。
潮流模式判别模块用于根据二进制参数序列确定潮流求解计算模式以及根据迭代收敛性确定方程组的求解方法。本实施方式中的潮流模式判别模块包括计算模式确定模块和求解确定模块。
其中,计算模式确定模块用于根据所述二进制参数序列中的线路阻抗值和电压初始值确定潮流求解计算模式,其包括第一计算单元、第二计算单元、判断单元和第一确定单元。所述第一计算单元用于根据电压初始值计算所有线路两端节点电压的相位差;所述第二计算单元用于根据线路阻抗值计算所有线路的电阻和电抗的比值;所述判断单元用于判断所有线路两端节点电压的相位差是否小于第一预设值,且所有线路的电阻和电抗的比值小于第二预设值;若所有线路两端节点电压的相位差小于第一预设值,且所有线路的电阻和电抗的比值小于第二预设值,所述第一确定单元确定采用PQ分解法计算潮流;若所有线路中有任一线路两端节点电压的相位差大于或等于第一预设值,或所有线路中有任一线路的电阻和电抗的比值大于或等于第二预设值,所述第一确定单元确定采用牛顿拉夫逊法计算潮流。
求解确定模块用于判别线性方程组系数矩阵的迭代收敛性,并根据迭代收敛性确定求解线性方程组的方法,其包括严格对角占优判断单元、对称正定判断单元和第二确定单元。所述严格对角占优判断单元,用于判断线性方程组系数矩阵是否为严格对角占优矩阵;所述对称正定判断单元,用于判断线性方程组系数矩阵是否为对称正定矩阵;若所述线性方程组系数矩阵为严格对角占优矩阵或对称正定矩阵,所述第二确定单元确定采用迭代法线性方程组求解状态;若所述线性方程组系数矩阵不是严格对角占优矩,且不是对称正定矩阵,所述第二确定单元确定采用高斯消去线性方程组求解状态。
本实施方式设计了潮流计算模式判别与线性方程组求解的优化策略,根据线路电阻和电抗比值、线路两端相角差的大小,判断最优潮流计算策略,通过对功率不平衡量所构成的线性方程组系数矩阵的迭代收敛性的判别,判断出快速求解线性方程组的最优策略,确保能够使用最优策略进行潮流计算,节约大规模节点网络潮流计算所需要的片上计算资源。
控制计算模块用于根据所述潮流模式判别模块的判别结果从所述数据存储模块中获取对应的数据进行潮流计算。本实施方式中的控制计算模块包括控制部分和计算部分。
控制部分包括稀疏矩阵控制模块、PQ分解控制模块、迭代法求解控制模块和循环控制模块。其中,稀疏矩阵控制模块用于负责稀疏矩阵中元素的删除和添加;PQ分解控制模块用于负责PQ分解法求解潮流过程中的数据读取和广义雅克比矩阵生成逻辑控制;迭代法求解控制模块用于负责迭代法求解线性方程组时迭代序列方程的时序逻辑控制;循环控制模块,用于负责对功率不平衡量进行收敛判断完成循环求解的控制。
计算部分包括NR潮流计算模块、PQ分解潮流计算模块、线性方程组参数计算模块、迭代法求解模块、高斯消去法求解模块和功率计算模块。其中,NR潮流计算模块用于基于二进制参数序列和/或中间计算数据采用牛顿拉夫逊法计算潮流,得到功率不平衡量;PQ分解潮流计算模块用于基于二进制参数序列和/或中间计算数据采用PQ分解法计算潮流,得到功率不平衡量;线性方程组参数计算模块用于根据功率不平衡量形成线性方程组系数矩阵,并根据线性方程组系数矩阵和功率不平衡量矩阵的计算,形成增广矩阵;迭代法求解模块用于采用迭代法求解出各个节点的电压修正量;高斯消去法求解模块用于采用高斯消去法求解出各个节点的电压修正量;功率计算模块用于在功率不平衡量满足收敛精度时,用于采用各个节点的电压修正量对节点电压进行修正,并使用修正后的节点电压计算平衡节点和网络中各条线路的功率,并将计算结果输入给所述结果数据返回模块。
采用本实施方式的FPGA潮流并行计算***进行潮流计算时,包括以下步骤:
主机端从网中获取电网数据,并将所述电网数据生成二进制参数序列传输给所述FPGA计算端。为确保潮流计算正确性,本实施方式中的主机端还对缺失数据进行填补处理,在进行处理时根据缺失数据的类型和特点采用回归填补法、均值填补法、众数填充法或中位数填充法对缺失数据进行补全。
本实施方式中潮流计算由FPGA计算端实现,如图2所示,FPGA计算端在进行潮流计算时包括11个状态,分别为:等待接收数据状态、参数初始化状态、潮流计算模式判别状态、PQ分解法潮流计算状态、牛顿拉夫逊法潮流计算状态、线性方程组参数计算状态、高斯消去线性方程组求解状态、迭代法线性方程组求解状态、迭代法收敛判断状态、计算平衡节点功率和线路功率状态、以及结果数据返回状态。
FPGA计算端从初始状态开始,直接进入等待接收数据状态。
在等待接收数据状态时,FPGA计算端一直监测串口有无有效的数据序列,若接收到有效数据,则进入参数初始化状态,否则进入终态退出计算。
在参数初始化状态,FPGA计算端的参数初始化模块按照规定的数据顺序和位宽序列,将串口读入的数据序列存储至对应的内部寄存器中,该状态包括八个顺序执行的子状态,分别是导纳矩阵GB存储、设定值set_PQ_PV存储、线路电阻值r和电抗值x存储、电压初始值幅值U和相角δ存储、电压初始值实部e和虚部f存储、收敛精度、其它基本参数存储。当串口数据都存储完成后,进入潮流计算模式判别状态。其中,初始功率设定值存储在set_PQ_PV中,每个存储单元为64位,set_PQ_PV[i][31:0]低32位为每个节点的有功功率P值,set_PQ_PV[i][63:32]高32位为每个节点的无功功率Q值。
在潮流计算模式判别状态中,FPGA计算端的潮流判别模块读取初始参数,并按顺序顺序执行线路电阻电抗比值计算rx_compute和线路两端相角差计算delta_ij_compute两个子状态,若满足所有线路两端节点电压相位差小于10°且线路电阻和电抗的比值r/x小于0.1时,进入PQ分解法潮流计算状态,否则,跳转至牛顿拉夫逊法潮流计算状态。
在PQ分解法潮流计算状态中,FPGA计算端的控制计算模块按照以下两个顺序执行的子状态,等效电纳矩阵B’和B’’计算mat_B_compute和功率不平衡量计算PQ_compute,并在计算完成后,跳转至线性方程组参数计算状态。
在牛顿拉夫逊法潮流计算状态中,FPGA计算端的控制计算模块按照以下两个顺序执行的子状态,导纳矩阵G和B的计算mat_GB_compute和功率不平衡量计算delta_PQ_compute,并在计算完成后,跳转至线性方程组参数计算状态。
在线性方程组参数计算状态中,FPGA计算端的控制计算模块根据功率不平衡量形成线性方程组系数矩阵,并根据线性方程组系数矩阵和功率不平衡量矩阵的计算,形成增广矩阵,其中包括三个并行执行的子状态,分别是雅克比矩阵计算状态jacoby_mat_compute、广义功率不平衡量计算delta_PQ_compute和修正的系数矩阵B计算new_mat_B_compute。当参数计算完成后,跳转至迭代法收敛判断状态。
在迭代法收敛判断状态中,FPGA计算端的潮流判别模块对线性方程组系数矩阵的迭代收敛性进行判断,顺序执行两个子状态,系数矩阵A严格对角占优计算mat_A_compute和计算系数矩阵A对称正定性mat_A_positive_compute。若线性方程组系数矩阵A为严格对角占优矩阵或对称正定矩阵,则采用迭代法收敛,跳转至迭代法线性方程组求解状态,否则,跳转至高斯消去线性方程组求解状态。
在高斯消去线性方程组求解状态中,FPGA计算端的计算模块用高斯消去法求解出各个节点的电压修正量,包括三个顺序执行的子状态,分别是稀疏矩阵高斯消元状态spa_mat_gauss_compute、稀疏矩阵反向求解方程状态spa_mat_x_compute和电压修正值更新量corrected_U_compute。该状态结束,一次循环迭代完成,根据潮流求解类型进入牛顿拉夫逊收敛性判断状态或PQ分解收敛性判断状态。
在迭代法线性方程组求解状态中,FPGA计算端的计算模块用迭代法求解出各个节点的电压修正量,包括三个顺序执行的子状态,分别是jacobi迭代法求解方程、gauss_seidel迭代法求解方程和电压修正值更新量corrected_U_compute。该状态结束,一次循环迭代完成,根据潮流求解类型进入牛顿拉夫逊收敛性判断状态或PQ分解收敛性判断状态。
当参数计算完成后,在牛顿拉夫逊收敛性判断状态和PQ分解收敛性判断状态中,FPGA计算端的控制计算模块判断功率不平衡量是否收敛,若满足收敛精度要求,则迭代完成,进入计算平衡节点功率和线路功率状态,否则,根据潮流计算类型进入PQ分解法潮流计算状态或牛顿拉夫逊法潮流计算状态。
在计算平衡节点功率和线路功率状态中,FPGA计算端的控制计算模块采用各个节点的电压修正量修正对应的节点电压,并根据修正后的节点电压计算平衡节点和网络中各条线路的功率,计算完成后,跳转至结果数据返回模块。
在结果数据返回状态中,FPGA计算端的结果数据返回模块读取内部寄存器中的节点电压数据,并生成二进制数据序列,同时发送至串口,当所有节点数据读取完毕,一次潮流计算全过程完成,进入等待接收数据状态,准备下一次潮流计算。
由此可见,本实施方式能够全流程精确的时钟级节拍控制下,实现***各个状态转移逻辑,复杂的潮流计算过程被分解为各个子状态,为后续算法功能的扩展升级提供便利。将子状态封装为***功能模块,各个模块相互协同运算,在内部时钟控制逻辑和运算求解控制模块的作用下,可以实现数据的并行流水线传输计算,提升计算的速度和吞吐量。
本实施方式中导纳矩阵和雅克比矩阵都采用行压缩格式的稀疏矩阵存储,分别采用三个一维数组来存储矩阵中非零元素,index_pointers[i]表示第i行之前非零元个数,indices和data分别表示非零元素的列序号和数据。以下为稀疏矩阵中***元素和删除元素操作流程:
在[i,j]位置***新元素new,第i行的起始索引位置为[index_pointers[i]:index_pointers[i+1]-1],第i行的元素数量为num[i]=index_pointers[i+1]-index_pointers[i]。确定***位置k,分为两种情况,当num[i]为0时,k为index_pointers[i],并将indices[index_pointers[i]]到indices[index_pointers[n]-1]的元素整体向后移动一个存储位置;当num[i]不为0时,确定地址指针k的范围,依次取出index_pointers寄存器中从第i到i+1中元素的值,并将index_pointers[i+1]元素值-1,即对k=[index_pointers[i]:index_pointers[i+1]-1]中遍历数据,若列标号寄存器indice[k]中的值大于指针变量j,即indice[k]≥j时,则k为新元素new***位置。确定指针变量m的范围,m首地址为列标号指针寄存器index_pointers[n]的值-1,尾地址为指针变量k的值,即m=[index_pointers[n]-1:k]中的元素,执行元素后移操作,indices[m+1]←indices[m],data[m+1]←data[m]。当指针变量m的范围在区间[i+1:n]时,将index_pointers中的元素取出,并执行自身值加1的操作,即index_pointers[m]←index_pointers[m]+1。最后将新元素赋值到指定位置,indices[k]←j,data[k]←new。
将[i,j]位置的元素删除,判断[i,j]在indices中待删除的位置k,确定地址指针k的范围,依次取出index_pointers寄存器中从第i到i+1中元素的值,并将index_pointers[i+1]元素值-1,即对k=[index_pointers[i]:index_pointers[i+1]-1]进行遍历,若列标号寄存器indice[k]中的值等于指针j的值,即indices[k]=j,则k为待删除的位置,将k+1到index_pointers[n]-1位置的元素前移一个位置。确定地址指针m的范围,m首地址为k+1,m尾地址为列标号指针寄存器index_pointers[n]中的值-1,即对m=[ k+1:index_pointers[n]-1]中的元素,分别将列标号值寄存器indices[m]和数据寄存器data[m]中的值前移一个位置,即执行indices[m-1]←indices[m],data[m-1]←data[m],当地址指针m的范围在区间[i+1:n]时,将index_pointers中的元素取出,并执行自身值减1的操作,即index_pointers[m]←index_pointers[m]-1。
本实施方式中高斯消去法求解模块在进行高斯消元时,设计了两层计算框架,将高斯消去流程分解为前向数据消去过程和反向数据回写过程两部分,如图3所示,具体包括:
前向数据消去过程中,对于[2(n-1),2n-1]维的增广矩阵[J|delta_PQ],共需要进行2n-1轮前向消去,分别取出gauss_indices和gauss_data矩阵中的元素送入相应的数据队列,在第i’轮消去时,i’=1,…,2n-3,取出第i行的首地址gauss_index_pointers[i],依次将gauss_indices矩阵和gauss_data矩阵中第i行的数据列标号值gc i,j 和gd i,j 分别预先送入循环队列Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data中,下标j表示矩阵的列。同时取出gauss_indices和gauss_data矩阵中第k行的首地址gauss_index_pointers[k],依次将第k行元素的列标号值gc k,j 和gd k,j 分别送入队列FIFO_gauss_indices和FIFO_gauss_data中,k=i+1,i+2,…,2(n-1),在队列指针逻辑控制单元的控制下,每消去完成一行元素,Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data完成一次数据循环,然后进入下一行元素的消去过程。第i行共有gnum[i]个非零元素,其中gnum[i]=gauss_index_pointers[i+1]- gauss_index_pointers[i]。在队列指针逻辑控制单元的控制下,基于循环队列Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data,以及队列FIFO_gauss_indices和FIFO_gauss_data中的数据进行计算,计算出第k行元素消去后的新数据,并将第k行的新列标号值nc k,j 和nd k,j 写入新元素列标号值矩阵new_indices和新元素矩阵new_data中。
在稀疏矩阵线性方程组高斯消去模块中,根据Cir_FIFO_gauss_indices、 Cir_FIFO_gauss_data、FIFO_gauss_indices和FIFO_gauss_data四个队列中的数据进行逻辑判断,然后采取相应的计算流程。计算规则如下:
若第k行非零元素gnum[k]=0,则直接进入下一行计算;
若第k行非零元素gnum[k]>0,从队列FIFO_gauss_indices中取出第一个元素进行判断,若列标号值gc k,j >k,则该行首元素为零,无需计算该行元素,并将该行元素依次送入新元素列标号值矩阵new_indices和新元素矩阵new_data中;
若列标号值gc k,j =k,则分别从循环队列Cir_FIFO_gauss_indices和 Cir_FIFO_gauss_data、以及队列FIFO_gauss_indices和FIFO_gauss_data中取出元素gc i,j 、gd i,j 、gc k,j 、gd k,j 进行判断,记录循环队列Cir_FIFO_gauss_data和FIFO_gauss_data中第一个数据值,并将数据队列中的列标号值gd k,j 和gd i,j 存入寄存器mgd k,j 和mgd i,j 中,即mgd k,j ←gd k,j ,mgd i,j ←gd i,j ;
若gc i,j <gc k,j ,则将元素gc i,j 作为新数据列标号值nc k,j ,将元素gd i,j 作为新元素值nd k,j ,同时将循环队列Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data的队列指针Cir_FIFO_indices_ID和Cir_ FIFO_data_ID向后移动一位;
若gc i,j >gc k,j ,则将元素gc k,j作为 新数据列标号值nc k,j ,将元素gd k,j 作为新元素值nd k,j ,同时将队列FIFO_gauss_indices和FIFO_gauss_data的队列指针FIFO_indices_ID和FIFO_data_ID向后移动一位;
若gc i,j =gc k,j ,则将元素gc k,j 作为新数据列标号值nc k,j ,令(gd k,j /mgd k,j )mgd i,j + gd i,j 作为新元素值nd k,j ,同时将队列指针Cir_FIFO_indices_ID、Cir_ FIFO_data_ID、FIFO_indices_ID和FIFO_data_ID的队列指针同时向后移动一位。
new_indices和new_data队列中依次保存第i’轮高斯消去后第k行的元素列标号值和元素值,k=i+1,i+2,…,2(n-1),new_index_pointers中保存每行新元素在new_data中起始地址,new_data中第i行非零元素个数为α i ,new_index_pointers中第i行元素值为。
数据回写过程如下,在队列指针逻辑控制单元控制下,在第i’轮前向消去时,依次消去第k行数据,k=i+1,i+2,…,2(n-1),当k-i>1时,开始数据回写过程,保证新元素列标号值矩阵new_indices和新元素矩阵new_data中的数据按流水线写入gauss_indices和gauss_data矩阵中;若若新元素列标号值矩阵new_indices和新元素矩阵new_data中第k行新数据个数小于gauss_indices和gauss_data矩阵中第k行非零元素值时,即α k ≤gnum[k]时,直接取出队列中数据按时钟顺序进行数据回写,每写完一个数据原始指针indices_ID和data_ID地址后移一位;若α k >gnum[k],需要保证回写时新数据不覆盖原有矩阵中数据,若数据指针data_ID与第k行非零元素个数gnum[k]相等,即data_ID=gnum[k],则需要等待第k行下一个元素消去的时钟周期后,再进行新数据写入。每写完一次第k行数据,更新gauss_index_pointers地址数据,gauss_index_pointers[k]= gauss_index_pointers[i]+ new_index_pointers[k]。当第i+1到2(n-1)行数据前向消去和反向回写完成后,第i’轮消去过程结束。
不难发现,本发明根据输入节点网络的规模和拓扑类型,选择合适的潮流求解计算模式,并根据功率不平衡量所形成的线性方程组系数矩阵的迭代收敛性选择合适的方法求解线性方程组,从而节约大规模节点网络潮流计算所需要的片上计算资源。
Claims (10)
1.一种FPGA潮流并行计算***,包括主机端和FPGA计算端,其特征在于,所述主机端包括:
数据准备模块,用于从电网中获取电网数据,并将所述电网数据生成二进制参数序列传输给所述FPGA计算端;
结果数据处理模块,用于将接收到所述FPGA计算端的二进制计算结果解析成标准格式的节点电压和功率;
所述FPGA计算端包括:
参数初始化模块,用于将接收到的二进制参数序列按顺序和位宽依次存储至数据存储模块;所述二进制参数序列的顺序如下:导纳矩阵、初始设定功率、线路阻抗值、初始节点电压的幅值和相角、初始节点电压的实部和虚部、收敛精度和其它参数;
数据存储模块,用于存储二进制参数序列和中间计算数据;
潮流模式判别模块,用于根据二进制参数序列确定潮流求解计算模式,以及根据迭代收敛性确定方程组的求解方法;所述潮流判别模块包括:
计算模式确定模块,用于根据所述二进制参数序列中的线路阻抗值和电压初始值确定潮流求解计算模式;
求解确定模块,用于判别线性方程组系数矩阵的迭代收敛性,并根据迭代收敛性确定求解线性方程组的方法;
控制计算模块,用于根据所述潮流模式判别模块的判别结果从所述数据存储模块中获取对应的数据进行潮流计算;
结果数据返回模块,用于将所述控制计算模块的计算结果转换为二进制数据序列并传输给所述主机端。
2.根据权利要求1所述的FPGA潮流并行计算***,其特征在于,所述主机端还包括:缺失数据处理模块,用于根据缺失数据的类型和特点采用预设填充法对缺失数据进行补全处理。
3.根据权利要求1所述的FPGA潮流并行计算***,其特征在于,所述计算模式确定模块包括第一计算单元、第二计算单元、判断单元和第一确定单元;
所述第一计算单元用于根据电压初始值计算所有线路两端节点电压的相位差;
所述第二计算单元用于根据线路阻抗值计算所有线路的电阻和电抗的比值;
所述判断单元用于判断所有线路两端节点电压的相位差是否小于第一预设值,且所有线路的电阻和电抗的比值小于第二预设值;
若所有线路两端节点电压的相位差小于第一预设值,且所有线路的电阻和电抗的比值小于第二预设值,所述第一确定单元确定采用PQ分解法计算潮流;
若所有线路中有任一线路两端节点电压的相位差大于或等于第一预设值,或所有线路中有任一线路的电阻和电抗的比值大于或等于第二预设值,所述第一确定单元确定采用牛顿拉夫逊法计算潮流。
4.根据权利要求1所述的FPGA潮流并行计算***,其特征在于,所述求解确定模块包括严格对角占优判断单元、对称正定判断单元和第二确定单元;
所述严格对角占优判断单元,用于判断线性方程组系数矩阵是否为严格对角占优矩阵;
所述对称正定判断单元,用于判断线性方程组系数矩阵是否为对称正定矩阵;
若所述线性方程组系数矩阵为严格对角占优矩阵或对称正定矩阵,所述第二确定单元确定采用迭代法线性方程组求解状态;
若所述线性方程组系数矩阵不是严格对角占优矩,且不是对称正定矩阵,所述第二确定单元确定采用高斯消去线性方程组求解状态。
5.根据权利要求1所述的FPGA潮流并行计算***,其特征在于,所述控制计算模块包括控制部分和计算部分;
所述控制部分包括:
稀疏矩阵控制模块,用于负责稀疏矩阵中元素的删除和添加;
PQ分解控制模块,用于负责PQ分解法求解潮流过程中的数据读取和广义雅克比矩阵生成逻辑控制;
迭代法求解控制模块,用于负责迭代法求解线性方程组时迭代序列方程的时序逻辑控制;
循环控制模块,用于负责对功率不平衡量进行收敛判断完成循环求解的控制;
所述计算部分包括:
NR潮流计算模块,用于基于二进制参数序列和/或中间计算数据采用牛顿拉夫逊法计算潮流,得到功率不平衡量;
PQ分解潮流计算模块,用于基于二进制参数序列和/或中间计算数据采用PQ分解法计算潮流,得到功率不平衡量;
线性方程组参数计算模块,用于根据功率不平衡量形成线性方程组系数矩阵,并根据线性方程组系数矩阵和功率不平衡量矩阵的计算,形成增广矩阵;
迭代法求解模块,用于采用迭代法求解出各个节点的电压修正量;
高斯消去法求解模块,用于采用高斯消去法求解出各个节点的电压修正量;
功率计算模块,若功率不平衡量满足收敛精度时,用于采用各个节点的电压修正量对节点电压进行修正,并使用修正后的节点电压计算平衡节点和网络中各条线路的功率,并将计算结果输入给所述结果数据返回模块。
6.根据权利要求5所述的FPGA潮流并行计算***,其特征在于,所述高斯消去法求解模块在进行高斯消元时,具体包括:
对于[2(n-1),2n-1]维的增广矩阵[J|delta_PQ]需要进行2n-1轮前向消去,在进行前向消去时,分别取出gauss_indices和gauss_data矩阵中的元素送入相应的数据队列,在第i’轮消去时,i’=1,…,2n-3,n为正整数,取出第i行的首地址gauss_index_pointers[i],依次将gauss_indices矩阵和gauss_data矩阵中第i行的数据列标号值gci,j和gdi,j分别预先送入循环队列Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data中;同时取出gauss_indices和gauss_data矩阵中第k行的首地址gauss_index_pointers[k],依次将第k行元素的列标号值gck,j和gdk,j分别送入队列FIFO_gauss_indices和FIFO_gauss_data中,k=i+1,i+2,…,2(n-1),在队列指针逻辑控制单元的控制下,每消去完成一行元素,Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data完成一次数据循环,然后进入下一行元素的消去过程;第i行共有gnum[i]个非零元素,其中gnum[i]=gauss_index_pointers[i+1]-gauss_index_pointers[i];在队列指针逻辑控制单元的控制下,基于循环队列Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data,以及队列FIFO_gauss_indices和FIFO_gauss_data中的数据进行计算,计算出第k行元素消去后的新数据,并将第k行的新列标号值nck,j和ndk,j写入新元素列标号值矩阵new_indices和新元素矩阵new_data中;
在队列指针逻辑控制单元的控制下,在第i’轮前向消去时,依次消去第k行数据,k=i+1,i+2,…,2(n-1),若k-i>1时,开始数据回写过程,保证新元素列标号值矩阵new_indices和新元素矩阵new_data中的数据按流水线写入gauss_indices和gauss_data矩阵中;若新元素列标号值矩阵new_indices和新元素矩阵new_data中第k行新数据个数小于gauss_indices和gauss_data矩阵中第k行非零元素值时,直接取出队列中数据按时钟顺序进行数据回写,每写完一个数据原始指针indices_ID和data_ID的地址后移一位;若新元素列标号值矩阵new_indices和新元素矩阵new_data中第k行新数据个数大于gauss_indices和gauss_data矩阵中第k行非零元素值时,则需要保证回写时新数据不覆盖gauss_indices和gauss_data矩阵中的原有数据,若数据指针data_ID与第k行非零元素个数gnum[k]相等,则需要等待第k行下一个元素消去的时钟周期后,再进行新数据写入;每写完一次第k行数据,更新gauss_index_pointers地址数据;当第i+1到2(n-1)行数据前向消去和反向回写完成后,第i’轮消去过程结束。
7.根据权利要求6所述的FPGA潮流并行计算***,其特征在于,所述基于循环队列Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data,以及队列FIFO_gauss_indices和FIFO_gauss_data中的数据进行计算的计算规则为:
若第k行非零元素gnum[k]=0,则直接进入下一行计算;
若第k行非零元素gnum[k]>0,从队列FIFO_gauss_indices中取出第一个元素进行判断,若列标号值gck,j>k,则第k行首元素为零,无需计算第k行元素,并将第k行元素依次送入新元素列标号值矩阵new_indices和新元素矩阵new_data中;
若列标号值gck,j=k,则分别从循环队列Cir_FIFO_gauss_indices和
Cir_FIFO_gauss_data、以及队列FIFO_gauss_indices和FIFO_gauss_data中取出元素gci,j、gdi,j、gck,j、gdk,j进行判断,记录循环队列Cir_FIFO_gauss_data和FIFO_gauss_data中第一个数据值,并将数据队列中的列标号值gdk,j和gdi,j存入寄存器mgdk,j和mgdi,j中;若gci,j<gck,j,则将元素gci,j作为新数据列标号值nck,j,将元素gdi,j作为新元素值ndk,j,同时将循环队列Cir_FIFO_gauss_indices和Cir_FIFO_gauss_data的队列指针
Cir_FIFO_indices_ID和Cir_FIFO_data_ID向后移动一位;
若gci,j>gck,j,则将元素gck,j作为新数据列标号值nck,j,将元素gdk,j作为新元素值ndk,j,同时将队列FIFO_gauss_indices和FIFO_gauss_data的队列指针FIFO_indices_ID和FIFO_data_ID向后移动一位;
若gci,j=gck,j,则将元素gck,j作为新数据列标号值nck,j,令(gdk,j/mgdk,j)mgdi,j+gdi,j作为新元素值ndk,j,同时将队列指针Cir_FIFO_indices_ID、Cir_FIFO_data_ID、FIFO_indices_ID和FIFO_data_ID的队列指针同时向后移动一位。
8.一种FPGA潮流并行计算方法,其特征在于,采用如权利要求1-7中任一所述的FPGA潮流并行计算***,包括以下步骤:
主机端从网中获取电网数据,并将所述电网数据生成二进制参数序列传输给所述FPGA计算端;
FPGA计算端的参数初始化模块按照预设的数据顺序和位宽序列,将所述二进制参数序列存储至数据存储模块;
FPGA计算端的潮流判别模块根据二进制参数序列确定潮流求解计算模式;
FPGA计算端的控制计算模块根据潮流判别模块确定的潮流求解计算模式从数据存储模块中获取对应的数据进行计算,得到功率不平衡量,根据功率不平衡量形成线性方程组系数矩阵,并根据线性方程组系数矩阵和功率不平衡量矩阵的计算,形成增广矩阵;
FPGA计算端的潮流判别模块对线性方程组系数矩阵的迭代收敛性进行判断,并根据判断结果确定方程组的求解方法;
FPGA计算端的控制计算模块根据确定的方程组的求解方法对线性方程组进行求解,得到各个节点的电压修正量;
FPGA计算端的控制计算模块对功率不平衡量进行收敛判断;
若功率不平衡量不满足收敛精度,FPGA计算端的控制计算模块采用确定的潮流求解计算模式进行循环迭代;
若功率不平衡量满足收敛精度,FPGA计算端的控制计算模块采用各个节点的电压修正量修正对应的节点电压,并根据修正后的节点电压计算平衡节点和网络中各条线路的功率;
FPGA计算端的结果数据返回模块将计算出的平衡节点和网络中各条线路的功率转换为二进制数据序列并传输给所述主机端;
主机端将接收到的二进制数据序列解析成标准格式的节点电压和功率。
9.根据权利要求8所述的FPGA潮流并行计算方法,其特征在于,所述FPGA计算端的潮流判别模块根据二进制参数序列确定潮流求解计算模式,具体包括:
根据所述二进制参数序列中的电压初始值计算所有线路两端节点电压的相位差;
根据所述二进制参数序列中的线路阻抗值计算所有线路的电阻和电抗的比值;
判断所有线路两端节点电压的相位差是否小于第一预设值,且所有线路的电阻和电抗的比值小于第二预设值;
若所有线路两端节点电压的相位差小于第一预设值,且所有线路的电阻和电抗的比值小于第二预设值,确定采用PQ分解法计算潮流;
若所有线路中有任一线路两端节点电压的相位差大于或等于第一预设值,或所有线路中有任一线路的电阻和电抗的比值大于或等于第二预设值,确定采用牛顿拉夫逊法计算潮流。
10.根据权利要求8所述的FPGA潮流并行计算方法,其特征在于,所述FPGA计算端的潮流判别模块对线性方程组系数矩阵的迭代收敛性进行判断,并根据判断结果确定方程组的求解方法,具体包括:
判断线性方程组系数矩阵是否为严格对角占优矩阵;
判断线性方程组系数矩阵是否为对称正定矩阵;
若所述线性方程组系数矩阵为严格对角占优矩阵或对称正定矩阵,确定采用迭代法线性方程组求解状态;
若所述线性方程组系数矩阵不是严格对角占优矩,且不是对称正定矩阵,确定采用高斯消去线性方程组求解状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410253725.5A CN117828243B (zh) | 2024-03-06 | 2024-03-06 | 一种fpga潮流并行计算***和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410253725.5A CN117828243B (zh) | 2024-03-06 | 2024-03-06 | 一种fpga潮流并行计算***和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117828243A CN117828243A (zh) | 2024-04-05 |
CN117828243B true CN117828243B (zh) | 2024-05-14 |
Family
ID=90517693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410253725.5A Active CN117828243B (zh) | 2024-03-06 | 2024-03-06 | 一种fpga潮流并行计算***和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117828243B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020032662A (ko) * | 2000-10-25 | 2002-05-04 | 이종훈 | 최적화 조류측정방법을 이용한 전압안정도 해석방법 및 그시스템 |
CN101976835A (zh) * | 2010-10-11 | 2011-02-16 | 重庆大学 | 一种大规模电力***牛顿潮流的并行计算方法 |
CA2677384A1 (en) * | 2009-09-01 | 2011-03-01 | Oliver Romaniuk | Apparatus, methods and systems for parallel power flow calculation and power system simulation |
CN108281967A (zh) * | 2018-01-04 | 2018-07-13 | 国网浙江省电力有限公司电力科学研究院 | 一种改善电力***潮流计算收敛性的算法启动方法 |
CN113452028A (zh) * | 2021-07-29 | 2021-09-28 | 广东电网有限责任公司 | 低压配电网概率潮流计算方法、***、终端和存储介质 |
CN115034675A (zh) * | 2022-06-28 | 2022-09-09 | 贵州电网有限责任公司 | 一种基于全纯函数嵌入的电力***直流最优潮流评估方法 |
CN115658323A (zh) * | 2022-11-15 | 2023-01-31 | 国网上海能源互联网研究院有限公司 | 基于软硬件协同的fpga潮流计算加速架构和方法 |
CN115860170A (zh) * | 2022-10-19 | 2023-03-28 | 国网浙江省电力有限公司宁波供电公司 | 一种考虑电力电子负载的配电***电能质量优化方法 |
CN115940157A (zh) * | 2022-11-24 | 2023-04-07 | 中国南方电网有限责任公司 | 稳控策略校核任务的潮流场景自动生成方法、装置及设备 |
CN116366349A (zh) * | 2023-04-07 | 2023-06-30 | 国网河北省电力有限公司经济技术研究院 | 电力信息物理***连锁故障建模方法及装置 |
CN116436012A (zh) * | 2023-06-07 | 2023-07-14 | 国网上海能源互联网研究院有限公司 | 一种基于fpga的电力潮流计算***和方法 |
WO2023179674A1 (zh) * | 2022-03-25 | 2023-09-28 | 中国华能集团清洁能源技术研究院有限公司 | 风电场考虑有功调节的无功控制优化方法、装置、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2479603A1 (en) * | 2004-10-01 | 2006-04-01 | Sureshchandra B. Patel | Sequential and parallel loadflow computation for electrical power system |
-
2024
- 2024-03-06 CN CN202410253725.5A patent/CN117828243B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020032662A (ko) * | 2000-10-25 | 2002-05-04 | 이종훈 | 최적화 조류측정방법을 이용한 전압안정도 해석방법 및 그시스템 |
CA2677384A1 (en) * | 2009-09-01 | 2011-03-01 | Oliver Romaniuk | Apparatus, methods and systems for parallel power flow calculation and power system simulation |
CN101976835A (zh) * | 2010-10-11 | 2011-02-16 | 重庆大学 | 一种大规模电力***牛顿潮流的并行计算方法 |
CN108281967A (zh) * | 2018-01-04 | 2018-07-13 | 国网浙江省电力有限公司电力科学研究院 | 一种改善电力***潮流计算收敛性的算法启动方法 |
CN113452028A (zh) * | 2021-07-29 | 2021-09-28 | 广东电网有限责任公司 | 低压配电网概率潮流计算方法、***、终端和存储介质 |
WO2023179674A1 (zh) * | 2022-03-25 | 2023-09-28 | 中国华能集团清洁能源技术研究院有限公司 | 风电场考虑有功调节的无功控制优化方法、装置、设备及介质 |
CN115034675A (zh) * | 2022-06-28 | 2022-09-09 | 贵州电网有限责任公司 | 一种基于全纯函数嵌入的电力***直流最优潮流评估方法 |
CN115860170A (zh) * | 2022-10-19 | 2023-03-28 | 国网浙江省电力有限公司宁波供电公司 | 一种考虑电力电子负载的配电***电能质量优化方法 |
CN115658323A (zh) * | 2022-11-15 | 2023-01-31 | 国网上海能源互联网研究院有限公司 | 基于软硬件协同的fpga潮流计算加速架构和方法 |
CN115940157A (zh) * | 2022-11-24 | 2023-04-07 | 中国南方电网有限责任公司 | 稳控策略校核任务的潮流场景自动生成方法、装置及设备 |
CN116366349A (zh) * | 2023-04-07 | 2023-06-30 | 国网河北省电力有限公司经济技术研究院 | 电力信息物理***连锁故障建模方法及装置 |
CN116436012A (zh) * | 2023-06-07 | 2023-07-14 | 国网上海能源互联网研究院有限公司 | 一种基于fpga的电力潮流计算***和方法 |
Non-Patent Citations (3)
Title |
---|
一种基于先进变流器的微电网潮流态势感知方法;肖祥香;段斌;陈明杰;彭寒梅;;电力***保护与控制;20181016(20);100-106 * |
基于并行加速LU分解改进回路电流法的配电网潮流算法;方睿;董树锋;朱炳铨;徐奇锋;宋永华;;电网技术;20190307(06);341-349 * |
潮流计算收敛问题的离散模型校正方法;孟芸;卢志强;马莉;;电力***及其自动化学报;20180315(03);138-143 * |
Also Published As
Publication number | Publication date |
---|---|
CN117828243A (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103970720B (zh) | 基于大规模粗粒度嵌入式可重构***及其处理方法 | |
US9964980B2 (en) | Method and apparatus for optimal power flow with voltage stability for large-scale electric power systems | |
CN106294897B (zh) | 一种适用于电磁暂态多时间尺度实时仿真接口的实现方法 | |
CN116436012B (zh) | 一种基于fpga的电力潮流计算***和方法 | |
CN113139288A (zh) | 基于gpu二次加速的配电网分布式抗差状态估计方法及装置 | |
US20150249381A1 (en) | Controlling an electrical converter | |
Yuan et al. | Graph computing based distributed fast decoupled power flow analysis | |
Jackson et al. | A fast algorithm for performance-driven placement | |
CN117828243B (zh) | 一种fpga潮流并行计算***和方法 | |
Wang et al. | GPU-based power flow analysis with continuous Newton's method | |
CN114336635A (zh) | 基于常项值和先验节点的全纯嵌入潮流计算方法、装置 | |
Yaşar et al. | A modified incremental gravitational search algorithm for short-term hydrothermal scheduling with variable head | |
CN111725812B (zh) | 大规模配电***的潮流计算方法、装置、设备和存储介质 | |
CN113342310A (zh) | 一种应用于格密码的串行参数可配快速数论变换硬件加速器 | |
Chen et al. | Generalised matrix inversion and rank computation by successive matrix powering | |
CN117828242B (zh) | 一种矩阵压缩存储格式的fpga潮流计算*** | |
Debnath | Real-time simulation of modular multilevel converters | |
CN112346704B (zh) | 一种用于卷积神经网络的全流水线型乘加单元阵列电路 | |
CN114936454A (zh) | 一种基于半不变量法的交直流混联***概率潮流计算方法 | |
Stepanov et al. | Parallelization of MMC detailed equivalent model | |
Ma et al. | Real-time simulation of power system electromagnetic transients on FPGA using adaptive mixed-precision calculations | |
Kim et al. | Optimization of multi-core accelerator performance based on accurate performance estimation | |
CN108595148A (zh) | 除法函数实现方法、电路、芯片以及*** | |
CN111614082B (zh) | 一种基于拉格朗日乘子的电力***安全域边界搜索方法 | |
Liu et al. | CUDA-Based Parallel Computation Model for State Estimation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |