
杨浩(东华大学电气信息学院,上海)
摘要:简单介绍了电力系统潮流计算的几种传统方法,重点讲述了在MATLAB开发环境下,应用电力系统仿真工具箱MATPOWER实现对电力网络的潮流求解,并且给出了基本算例。
关键词:潮流计算;MATPOWER
Introduction on power system flow calculation based on MATLAB
Abstract: The several traditional methods of power system flow calculation are introduced briefly. Typically, the power flow calculation of power network is implemented by MATPOWER, a simulation toolbox of power system in the MATLAB developing environment. And an elementary calculation example is given in this thesis.
Keywords: power flow calculation; MATPOWER
0引言
电力系统潮流计算是研究电力系统稳态运行情况的一种基本电气计算。它的任务是根据给定的运行条件和网路结构确定整个系统的运行状态,如各母线上的电压(幅值及相角)、网络中的功率分布以及功率损耗等。它在电网规划、编制年运行方式、电力系统检修,以及事故预判、设备退出应用方面都有重要意义。在电力系统运行方式和规划方案的研究中,都需要进行潮流计算以比较运行方式或规划供电方案的可行性、可靠性和经济性。同时,为了实时监控电力系统的运行状态,也需要进行大量而快速的潮流计算。因此,潮流计算是电力系统中应用最广泛、最基本和最重要的一种电气运算。
利用电子计算机进行潮流计算从20世纪50年代中期就已经开始。此后,潮流计算曾采用了各种不同的方法,这些方法的发展主要是围绕着对潮流计算的一些基本要求进行的。对潮流计算的要求可以归纳为下面几点:算法的可靠性或收敛性;计算速度和内存占用量 ;计算的方便性和灵活性。
电力系统潮流计算属于稳态分析范畴,不涉及系统元件的动态特性和过渡过程。因此其数学模型不包含微分方程,是一组高阶非线性方程。非线性代数方程组的解法离不开迭代,因此,潮流计算方法首先要求它是能可靠的收敛。随着电力系统规模的不断扩大,潮流问题的方程式阶数越来越高,目前已达到几千阶甚至上万阶,对这样规模的方程式并不是采用任何数学方法都能保证给出正确答案的。这种情况促使电力系统的研究人员不断寻求新的更可的计算方法。
用数字计算机求解电力系统潮流的历史,经历了以节点导纳矩阵为基础的高斯-赛德尔迭代法,求解非线性方程式的典型方法——牛顿拉夫逊法,以及其改进方法快速解耦PQ分解法。近20多年来,潮流算法的研究仍然非常活跃,但是大多数研究都是围绕改进牛顿法和P-Q分解法进行的。此外,随着人工智能理论的发展,遗传算法、人工神经网络、模糊算法也逐渐被引入潮流计算。但是,到目前为止这些新的模型和算法还不能取代牛顿法和P-Q分解法的地位。本文将主要阐述牛顿法和PQ分解法的MATLAB实现,进而分析其性能的可靠性。[]
1电力系统潮流计算
1.1电力系统潮流计算模型
电力系统主要由发电机、变压器、输电线路和负荷构成,它们都是具有物理意义的电气元件。而电力系统分析中,需要对这些元件进行等值数学模型的建立,才能实现稳态下量的计算分析。而电力系统元件根据各自的性能均可以建立R、L、C等值线性模型,变压器可以等效成型网络,输电线路可以等效成型网络等,如下图。
变压器型等值网络
输电线路型等值网络
针对电力系统等值网络可以列些节点电压方程:
式中为导纳矩阵,为节点注入电流矩阵,为节点电压列向量。
在工程实践中,通常已知的既不是节点电压,也不是节点电流,而是各节点的功率和。所以一般建立的是功率方程:
展开式为:
上式含有n个非线性复数方程,是潮流计算问题的基本方程,若用极坐标形式表示,即:
(1)
这样电力系统潮流计算的问题,便成为了根据非线性功率方程解各节点有功功率、无功功率、电压幅值和电压相角的问题。
电力系统中的节点一般分为三种类型:
节点:已知的是节点注入功率、(包括负荷功率和电源功率),待求的是节点电压幅值和电压相角,系统中大部分是这类节点;
节点:已知节点的负荷有功功率和电源有功功率,以及负荷的无功功率、电压幅值,待求的是电源的无功功率和电压相角;
平衡节点:潮流计算时,一般只设一个平衡节点,已知负荷功率和,节点电压幅值和电压相角,待求的是电源功率、。
1.2电力系统潮流计算方法
高斯—赛德尔迭代法:
高斯—赛德尔迭代法是在电力系统中应用最早的一种潮流计算方法,初值选定后,计算每个变量的估计值,每一步迭代过程都利用前一步已求得的最新估计值,直接代入求解下一个变量的估计值,而不是等待一次迭代过程结束后再利用。一个迭代过程结束后得到的每个变量的估计值,再重新代入公式计算变量估计值,如此反复迭代,不断得到新的估计值,直到得出满意的结果为止。这种方法编程简单、占用内存少,但算法收敛性差、计算时间长,后来被牛顿法所取代。
牛顿—拉夫逊法:
牛顿—拉夫逊法是求解非线性代数方程有效的迭代计算方法,已经成为求解电力系统潮流问题应用最为广泛的一种方法。而牛顿型潮流计算的核心问题是修正方程式的建立和求解。
将式中的电压相量改写成复数形式:
并将实部、虚部分别对应:
(2)
此外,由于系统中还有电压大小给定的节点,还应补充一组方程式:
将(2)式改写成残差形式:
(3)
对上式中的、、、分别求导,便可以得到修正方程组的雅可比矩阵:
(4)
应用牛顿—拉夫逊法计算潮流的基本步骤有:
1.形成节点导纳矩阵;
2.设各节点电压的初值、;
3.将各节点电压的初值代入式(3)求修正方程式中的不平衡量、以及;
4.将各节点电压的初值代入式(4)求修正方程式的系数矩阵——雅可比矩阵的各个元素、、、以及、;
5.解修正方程式,求各节点电压的变化量,即修正量、;
6.计算各节点电压的新值,即修正后值:
;
7.运用各节点电压的新值自第三步开始进入下一次迭代;
8.计算平衡节点功率和线路功率。
目前,牛顿法因为具有收敛快、内存较少的优点而普遍应用,但是雅克比矩阵计算量大、编程复杂。
PQ分解法:
针对牛顿法的缺点,在其基础上又提出了快速解耦PQ分解法。其基本思想是:把节点功率表示为电压向量的极坐标方程式,抓住主要矛盾,把有功功率误差作为修正电压向量角度的依据,把无功功率误差作为修正电压幅值的依据,把有功功率和无功功率迭代分开进行。它密切地结合了电力系统的固有特点,无论是内存占用量还是计算速度方面都比牛顿-拉夫逊法有了较大的改进。简单、快速、节省内存和收敛可靠成为该算法的突出优点,是当前国内外优先使用的算法。
与牛顿法相比,分解法具有如下特点:
1.以一个(n-1)阶和一个(m-1)阶系数矩阵、替代原有的(n+m-2)阶系数矩阵,提高了计算速度,降低了对贮存容量的要求;
2.以迭代过程中保持不变的系数矩阵、替代起变化的系数矩阵,显著地提高了计算速度;
3.以对称的系数矩阵、替代不对称的系数矩阵,使求逆等运算量和所需的储存容量都大为减少。
2基于MATLAB的潮流分析
2.1MATPOWER简介
MATPOWER是一个基于MATLAB的M文件的组建包,用来解决电力潮流和优化潮流的问题,是由卡奈尔大学电气学院电力系统工程研究中心RAYD.ZIMMENRman,CARLOS E.Murillo和甘德强在ROBERT THOMAS的指导下开发出来的。它的特点是简单、易懂且代码公开。
MATPOWER所用的所有数据文件均为MATLAB的M文件或者MAT文件,他们用来定义和返回变量:baseMVA,bus,branch,gen,areas和gencost。变量baseMVA 是标量,
其他的都是矩阵。矩阵的每一行都对应于一个单一的母线,线路或者发电机组。列的数据类似于标准的IEEE和PTI列的数据格式。
使用MATPOWER首先需要对电力网络结构的数学模型,建立相应的MATPOWER数据文件,其中包括母线(Bus)数据矩阵、发电机(Generator)数据矩阵以及支路(Branch)数据矩阵,实现对电力系统具体网络,到数学图论模型,再到数字化处理模型的建立。
MATPOWER可以采用潮流计算的四种方法:牛顿法、快速解耦(XB)、快速解耦(BX)、高斯——赛德尔法,通过改变变量“PF_ALG”进行选择。此外,MATPOWER还可以实现直流潮流、最优潮流的计算仿真,在这里主要通过具体实例来介绍复杂网络的潮流计算。
2.2具体算例分析
(IEEE 9-bus test system)
对上图所示的IEEE 9-bus test system,按照MATPOWER的数据文件格式编写数据M文件如下:
function mpc=case9_ieee
%MATPOWER Case Format:Version2
mpc.version='2';
%%----- Power Flow Data -----%%
%% system MVA base
mpc.baseMVA=100;
%%bus data
%bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin
mpc.bus=[
1 3 0 0 0 0 1 1 0 100 1 1.1 0.9;
2 2 0 0 0 0 1 1 0 100 1 1.1 0.9;
3 2 0 0 0 0 1 1 0 100 1 1.1 0.9;
4 1 0 0 0 0 1 1 0 100 1 1.1 0.9;
5 1 125 50 0 0 1 1 0 100 1 1.1 0.9;
6 1 90 30 0 0 1 1 0 100 1 1.1 0.9;
7 1 0 0 0 0 1 1 0 100 1 1.1 0.9;
8 1 100 35 0 0 1 1 0 100 1 1.1 0.9;
9 1 0 0 0 0 1 1 0 100 1 1.1 0.9;
];
%%generator data
%bus Pg Qg Qmax Qmin Vg mBase Status Pmax Pmin
mpc.gen=[
1 0 0 300 -300 1 100 1 250 10;
2 163 0 300 -300 1 100 1 250 10;
3 85 0 300 -300 1 100 1 250 10;
];
%%branch data
%fbus tbus r x b rateA rateB rateC ratio angle status angmin angmax
mpc.branch=[
1 4 0 0.0576 0 0 0 0 0 0 1 -360 360;
4 5 0.01 0.085 0.176 0 0 0 0 0 1 -360 360;
5 7 0.032 0.161 0.306 0 0 0 0 0 1 -360 360;
7 8 0.0085 0.072 0.149 0 0 0 0 0 1 -360 360;
7 2 0 0.0625 0 0 0 0 0 0 1 -360 360;
8 9 0.0119 0.1008 0.209 0 0 0 0 0 1 -360 360;
9 3 0 0.0586 0 0 0 0 0 0 1 -360 360;
9 6 0.039 0.17 0.358 0 0 0 0 0 1 -360 360;
6 4 0.017 0.092 0.158 0 0 0 0 0 1 -360 360;
];
return;
现对各数据矩阵结构进行说明:
baseMVA:设置系统基准容量的标量,此处为100MVA;
bus:母线数据矩阵,用来设置电力网络各母线参数,其中每一行对应系统中的每一个母线,每一列分别对应:bus_i(母线编号)、type(母线类型,1为PQ节点,2为PV节点,3为平衡节点,4为孤立节点)、Pd(注入负荷的有功功率)、Qd(注入负荷的无功功率)、Gs(母线并联电导)、Bs(母线并联电纳)、baseKV(母线基准电压)、Vm和Va(母线电压幅值和初相)、Vmax和Vmin(工作时母线最高、最低电压幅值)、area和zone
(电网断面号和分区号,一般为1);
gen:发电机数据矩阵,设置电网发电机参数,其中每一行对应系统中的每一台发电机,每一列分别对应:bus(与发电机相连的母线编号)、Pg和Qg(发电机的有功功率和无功功率)、Pmax和Pmin(发电机的有功功率最大、最小允许值)、Qmax和Qmin(发电机的无功功率最大、最小允许值)、Vg(发电机工作电压)、mBase(发电机的基准功率,默认值为baseMVA)、status(发电机工作状态,1为投入,0为推出);
branch:支路数据矩阵,设置电网各支路参数,其中每一行对应一条支路,每一列分别对应:fbus和tbus(支路起始和终止母线编号)、r、x和b(支路的电阻、电抗和电纳)、rateA、rateB和rateC(支路长期、短期和紧急允许功率)、ratio(支路变比,有变压器为fbus与tbus两侧基准电压值比;没有变压器为0)、angle(支路相角,元件为变压器为其转角;导线为0)、status(支路工作状态,1为投入,0为退出)、angmin和angmax(支路相角的最小、最大值)。
主要控制选项,通过mpopt=mpoption(‘’,)语句进行设定,如下表:
| 序号 | 变量名 | 默认值 | 功能描述 |
1 | PF_ALG | 1 | 潮流算法: 1—牛顿法 2—快速解耦算法(XB) 3—快速解耦算法(BX) 4—高斯—赛德尔法 |
| 2 | PF_TOL | 1e-8 | 每一个单元的有功和无功最大的允许偏差 |
| 3 | PF_MAX_IT | 10 | 牛顿法的最大迭代次数 |
| 4 | PF_MAX_IT_FD | 30 | 快速解耦算法的最大迭代次数 |
| 5 | PF_MAX_IT_GS | 1000 | 高斯—赛德尔法的最大迭代次数 |
| 6 | ENFORCE_Q_LIMS | 0 | 机组电压无功控制限值[0或者1] |
7 | PF_DC | 0 | 采用直流潮流模型: 1—使用交流模型,采用交流算法选项 2—使用直流模型,忽略交流算法选项 |
3结论
上述潮流计算实例采用了牛顿法,进行了4次迭代,共用时0.04s,其结果与MATPOWER参考实例运算值一致。从中可以看出通过MATPOWER实现电力系统潮流计算,简单、易懂,避免了针对雅可比矩阵的复杂编程,对于初学电力系统潮流分析的学生提供了理论联系实际的可行方法,具有一定的可靠性和现实意义。
参考文献
