CHAPTER 6 POWER FLOW ANALYSIS潮流分析潮流分析OUTLINE6.1 概述概述 6.2 节点导纳矩阵节点导纳矩阵 6.3 非线性代数方程算法非线性代数方程算法 6.4 潮流计算潮流计算 6.5 高斯高斯-赛德尔迭代法潮流计算赛德尔迭代法潮流计算 6.6 线路潮流与损耗线路潮流与损耗 6.7 可调分接头变压器可调分接头变压器 6.8 潮流程序潮流程序 6.9 数据准备数据准备 6.10 牛顿牛顿-拉夫逊迭代法潮流计算拉夫逊迭代法潮流计算 6.11 快速解耦法潮流计算快速解耦法潮流计算 6.1 INTRODUCTION 上述章节讲述了电力系统重要组成部分的模型,本章主要讨论在正常运行情况下互联电力系统的稳态分析问题假设系统处在平衡条件下,并以单相网络为代表,网络中包含上百个节点和支路,并且阻抗都以标幺值表示 网络方程可以有多种形式,但是节点电压方程法对于大多数电力系统分析问题都较为合适,并且已经被广泛地应用于电力系统分析中以节点导纳矩阵形成的网络方程是一个针对节点电流的线性、复数代数联立方程当节点电流已知时,用一组线性代数方程就可以解得电压,但在电力系统中给定的是功率而不是电流,导致出现了功率潮流方程(power flow equation),这是一个非线性方程,需要迭代求解。
潮流分析,通常指负荷潮流,是电力系统分析和设计的主要组成部分,对系统规划、安全运行、经济调度和电力公司的功率交换非常重要此外,潮流分析还是其它电力系统分析的基础,比如暂态稳定,突发事件处理等 本章讲述了节点电压方程中节点导纳矩阵的形成,MATLAB中形成节点导纳矩阵的两个函数ybus1和lfbus, 两种广泛应用的解非线性代数方程的迭代方法:高斯-塞德尔法(Gauss-Seidel)和牛顿-拉夫逊法(Newton- Raphson),这些技术应用于求解功率潮流问题三个程序 lfgauss、 lfnewton 、decouple分别用高斯法、牛顿法和解耦的牛顿法,求解功率潮流方程6.2 BUS ADMITTANCE MATRIX节点导纳矩阵节点导纳矩阵 为获得节点电压方程,我们来考虑简单电力系统如图6.1所示,这里阻抗用标幺值表示,为简化线路,忽略电阻由于要求解节点电压,需要应用基尔霍夫电流定律,所以将阻抗转化为导纳 图6.1 简单系统阻抗图在图6.2中以导纳和电流源的形式重新画出电路,节点0(一般接地)是参考节点,对节点1至节点4应用KCL,得将方程整理得 图6.2 图6.1的导纳图引入以下导纳节点方程简化为在上述网络中,由于节点1与节点4没有联系, ,同样 ,扩展到n节点系统,矩阵形式的节点电压方程为(6.1)或者 是输入节点电流向量(例如外部电流源),电流方向定义为流向节点为正,流出节点为负。
是相对于参考节点的节点电压向量(例如节点电压), 是节点导纳矩阵,对角元素是与该节点有联系的导纳之和,称为自导纳(self-admittance),或驱动点导纳(driving point admittance),例如 非对角元素是两节点间导纳的负值,称为互导纳(mutual admittance),或转移导纳(transfer admittance),例如电流已知时对式(6.2)求解,直接得到节点电压节点导纳矩阵的逆叫节点阻抗矩阵,以一个节点为参考节点得到的导纳矩阵是非奇异矩阵(非奇异矩阵有逆矩阵),否则,节点导纳矩阵是奇异的(奇异矩阵没有逆矩阵)6.2)(6.3)(6.4)(6.5) 观察节点导纳矩阵可以看出其是沿主对角线对称的,我们只需要存储上三角部分在典型的电力系统网络中,一个节点仅与周围的几个节点相联系,从而使得许多的非对角元素值为0,这种矩阵叫做稀疏矩阵,可用有效值方法计算其逆矩阵通过近似三角分解,稀疏矩阵的逆可表示成其系数乘积的形式,有利于提高计算速度,储存能力和降低舍入误差但是, 是短路分析所必需的,可直接由建立算法得到,无需进行求逆计算,这将在第9章进行讨论根据式(6.3)和式(6.4),图6.2的节点导纳矩阵为函数Y=ybus1(zdata )用来形成节点导纳矩阵,zdata是线路数据输入变量,包括四项,前两项是节点编号,后两项是线路电阻和电抗,均以标幺值表示,函数返回节点导纳矩阵。
对于电力系统程序来说,节点导纳矩阵算法是非常简单和基础的,因此这里详细讲解,要求读者了解并掌握这种算法编程时先将线路阻抗转换为导纳,然后将矩阵Y初始化为零,执行第一次循环时,查找线路数据,输入非对角元素,最后,在嵌套循环中寻找与节点有关的元素,对角元素随之形成下面是建立节点导纳矩阵的具体程序 functionY=ybus1(zdata)nl=zdata(:,1);nr=zdata(:,2);R=zdata(:,3);X=zdata(:,4);nbr=length(zdata(:,1);nbus=max(max(nl),max(nr);Z=R+j*X; %支路阻抗y=ones(nbr,1)./Z; %支路导纳Y=zeros(nbus,nbus); %将Y初始化为0For k=1:nbr; %费对角元素的数值 if nl(k)0&nr(k)0 Y(nl(k),nr(k)=Y(nl(k),nr(k)-y(k); Y(nr(k),nl(k)=Y(nl(k),nr(k); endendfor n=1:nbus %对角元素数值 for k=1:nbr if nl(k)=n|nr(k)=n Y(n,n)=Y(n,n)+y(k); else ,end endend例例6.1(chp6ex1)图6.1所示的电动势 和 ,使用函数Y=ybus1(zdata)求节点导纳矩阵,再求其逆,得到节点阻抗矩阵,求解节点电压。
应用电压转换,等效电流源为输入以下命令 % FROM TO R Xzdata= 0 1 0 1.0 0 2 0 0.8 1 2 0 0.4 1 3 0 0.2 2 3 0 0.2 3 4 0 0.8;Y=ybus1(zdata) %节点导纳矩阵Ibus=-j*1.1;-j*1.25;0;0; % 节点电流向量 Zbus=inv(Y) % 节点阻抗矩阵 Vbus=Zbus*Ibus结果是Y = 0 - 8.5000i 0 + 2.5000i 0 + 5.0000i 0 +0.0000i 0 + 2.5000i 0 - 8.7500i 0 + 5.0000i 0 +0.0000i 0 + 5.0000i 0 + 5.0000i 0 -11.2500i 0 + 1.2500i 0 0 0 + 1.2500i 0 - 1.2500iZbus = 0 + 0.5000i 0 + 0.4000i 0 + 0.4500i 0 + 0.4500i 0 + 0.4000i 0 + 0.4800i 0 + 0.4400i 0 + 0.4400i 0 + 0.4500i 0 + 0.4400i 0 + 0.5450i 0 + 0.5450i 0 + 0.4500i 0 + 0.4400i 0 + 0.5450i 0 + 1.3450iVbus = 1.0500 1.0400 1.0450 1.0450通过求逆,解方程 的效率很低,实际上没有必要去求 的逆。
可替代的方法是,由最优序列的三角因数分解可直接得到方程的解在MATLAB中,线性方程AX=B的解,可以通过矩阵除法得到,这是基于三角因子分解和高斯消除法的算法,这种方法无论在执行时间还是数值的精度上都比较好在例题6.1中,可由Vbus =YIbus代替Zbus= inv(Y)和 Vbus=Zbus*Ibus,直接得到方程的解6.3 SOLUTION OF NONLINEAR ALGEBRAIC EQUATIONS非线性代数方程算法非线性代数方程算法 最常用的迭代求解非线性代数方程的方法有:高斯塞德尔迭代法、牛顿拉夫逊迭代法、类牛顿迭代法下面讨论用高斯塞德尔迭代法和牛顿拉夫逊迭代法解一维非线性方程,然后拓展到解n维非线性方程6.3.1 GAUSS-SEIDEL METHOD 高斯塞德尔迭代法可认为是连续迭代的方法,既可用来解线性方程组也可解非线性方程组为了说明这种方法,设有非线性方程组将上述方程整理得如果 是变量x的初始估计值,于是迭代格式变为当连续迭代结果的差的绝对值小于某一特定值时,就得到方程的解6.6)(6.7)(6.8)(6.9)例例6.2(chp6ex2)用高斯塞德尔迭代法求下例方程的根 为求x,上述等式可写成使用MATLAB的plot指令画 ,的范围是0到4.5,如图6.3所示, 和x的交点即为 的两个根,这两个根是1和4,实际上在 处是二重根。
应用高斯塞德尔迭代法,并设初始值为由式(6.8),第一次迭代值第二次迭代值 接下来的迭代结果分别是2.8966,3.3376,3.7398,3.9568,3.9988,4.000一直重复迭代过程直到变化量满足期望的精度可以看到,高斯塞德尔迭代法需要很多次迭代才能获得需要的精度,并且不能保证收敛例题中,由于初始估计值在“盒中”区域,解字形收敛到其中一个根实际上,如果初始估计值在这个区域之外,比说 ,迭代过程将是发散的 检验收敛性,特别是对于n维的情况,是比较困难的,没有通用的方法可以使用初始估计值为 ,下面的指令指明了计算过程dx=1; % 变量置一个高值x=2; % 初始估计值iter = 0; % 迭代计数disp(Iter g dx x) % 解的题头while abs(dx) = 0.001 & iter ); % 初始估计值iter = 0; % 迭代计数disp(iter Dc J dx x) % 解的题头while abs(dx) = 0.001 & iter 6iter Dc J dx x1 -50.0000 45.0000 -1.1111 4.88892 -13.4431 22.0370 -0.6100 4.27893 -2.9981 12.5797 -0.2383 4.04054 -0.3748 9.4914 -0.0395 4.00115 -0.0095 9.0126 -0.0011 4.00006 -0.0000 9.0000 -0.0000 4.0000现在考虑n元非线性代数方程组的情况。
在未知量x的初始估计值附近,将式(6.11)泰勒级数展开并略去二阶及以上的高阶项,得到如下线性化的方程组写成矩阵形式如下将上述方程简写为或者元情况下,牛顿法迭代公式为其中 (6.19)(6.20)(6.21)(6.22) 叫做雅可比矩阵,矩阵的元素是在估计值 点的偏导数假设在迭代过程中 可逆,牛顿法作为一种求解非线性方程组的方法,把问题简化为求解一个线性方程组的问题, 解线性方程组的目的是提高估计计算的精度 用求逆矩阵的方法来求解式(6.19),效率比较低,没有必要求解 的逆矩阵实际上,一种直接的解法是三角因子法,并通过优化节点排序简化雅可比矩阵 在MATLAB中,线性方程组 可以通过矩阵相除(例如 )的方法求解,矩阵相除的方法是基于三角分解和高斯消元法的方法例例6.5(cha6ex5)用牛顿-拉夫逊法找出下面两个曲线的交点的坐标值如图所示,圆 和曲线 的交点即为方程的根,两个根在 和 附近 图 6.6 例6.5的图示说明求上述方程组的偏导数,可得雅可比矩阵为用下面的MATLAB指令求解iter = 0; % 迭代计数x=input(Enter initial estimates, col. vector x1; x2 - );Dx = 1; 1;C=4; 1;disp(Iter DC Jacobian matrix Dx x); % 结果题头while max(abs(Dx) = .0001 & iter 0.5;-1Iter DC Jacobian matrix Dx x1 2.7500 1.0000 -2.0000 0.8034 1.3034 0.3513 1.6。