1、电分课设-PQ分解法计算潮流及其仿真结果 摘要 潮流计算是研究电力系统稳态运行情况的一种基本电气计算,通过潮流计算可以就给定的运行条件和网路结构确定整个系统的运行状态,确定各母线上的电压(幅值及相角)、网络中的功率分布以及功率损耗等参数。常用的潮流计算方法有牛顿-拉弗逊法、P-Q分解法、直流潮流法、并行处理法等。 P-Q分解法速度快,计算效率高,实用性强,Matlab编程与C语言相似,而且极其适合计算矩阵。因此,本设计采用P-Q分解法并使用Matlab软件编程进行潮流计算,获得简单电力系统各节点电压,功率分布,功率损耗等参数。 关键词:潮流计算,P-Q分解法,Matlab编程计算 1
2、潮流计算背景 1.1潮流计算意义 电力系统潮流计算是研究电力系统稳态运行情况的一种基本电气计算。它的任务是根据给定的运行条件和网路结构确定整个系统的运行状态,如各母线上的电压(幅值及相角)、网络中的功率分布以及功率损耗等。电力系统潮流计算的结果是电力系统稳定计算和故障分析的基础。潮流计算几点意义如下: (1)在电网规划阶段,通过潮流计算,合理规划电源容量及接入点,合理规划网架,选择无功补偿方案,满足规划水平的大、小方式下潮流交换控制、调峰、调相、调压的要求。 (2)在编制年运行方式时,在预计负荷增长及新设备投运基础上,选择典型方式进行潮流计算,发现电网中薄弱环节,供调度员日常调度控制参
3、考,并对规划、基建部门提出改进网架结构,加快基建进度的建议。 (3)正常检修及特殊运行方式下的潮流计算,用于日运行方式的编制,指导发电厂开机方式,有功、无功调整方案及负荷调整方案,满足线路、变压器热稳定要求及电压质量要求。 (4)预想事故、设备退出运行对静态安全的影响分析及作出预想的运行方式调整方案。 在电力系统运行方式和规划方案的研究中,都需要进行潮流计算以比较运行方式或规划供电方案的可行性、可靠性和经济性。同时,为了实时监控电力系统的运行状态,也需要进行大量而快速的潮流计算。因此,潮流计算是电力系统中应用最广泛、最基本和最重要的一种电气运算。 1.2潮流计算方法要求 电网潮流计算
4、方法的要求是:(1)具有可靠的收敛性,对不同的网络结构及不同的运行条件都能收敛。(2)计算速度快。(3)使用灵活方便,参数调整容易,能满足工程上的各种要求。(4)内存占容量少等[6]。由于配电网中的收敛问题比较突出,因此对配电网潮流算法进行评价时,首先看它能否可靠收敛,然后在此基础上可对计算速度提出进一步的要求,即尽可能地提高计算速度。 2牛顿-拉弗逊法原理 首先对一般的牛顿—拉夫逊法作一简单的说明。已知一个变量X函数为: 到此方程时,由适当的近似值出发,根据: 反复进行计算,当满足适当的收敛条件就是上面方程的根。这样的方法就是所谓的牛顿—拉夫逊法。 这一方法还可以做下面的解
5、释,设第次迭代得到的解语真值之差,即的误差为时,则: 把在附近对用泰勒级数展开 上式省略去以后部分 的误差可以近似由上式计算出来。 比较两式,可以看出牛顿—拉夫逊法的休整量和的误差的一次项相等。 用同样的方法考虑,给出个变量的个方程: 对其近似解得修正量可以通过解下边的方程来确定: 式中是对于的值。这一矩阵称为雅可比矩阵。按上述得到的修正向量后,得到如下关系 这比更接近真实值。这一步在收敛到希望的值以前重复进行,一般要反复计算满足 为预先规定的小正数,是第n次迭代的近似值。 牛顿拉弗逊法计算步骤如下: (1) 给这各节点电压初始值; (2
6、) 将以上电压初始值代入公式,求修正方程的常数项向量; (3) 将电压初始值在带入上述公式,求出修正方程中系数矩阵的各元素。 (4) 解修正方程式; (5) 修正各节点电压,; (6) 将,在带入方程式,求出; (7) 检验是否收敛,即 如果收敛,迭代到此结束,进一步计算各线路潮流和平衡节点功率,并打印输出结果。如果不收敛,转回②进行下次迭代计算,直到收敛为止。 计算流程框图如下: 开始 输入初始值 形成节点导纳矩阵 分解各节点初始电压的实部和虚部 迭代次数K=0 求PQ节点的,,求PV节点的, 置节点号i=0 雅克比矩阵是否形成,i>n 求得雅克
7、比矩阵各元素 增大节点号i=i+1 把雅克比矩阵单位化 求解修正方程,得, 求解最大修正量, 是否收敛 回带各电压新值,K=K+1 计算电压及相角,节电功率及支路损耗等参数 输出 否 是 否 是 3P-Q分解法原理 电力系统中常用的PQ分解法派生于以极坐标表示的牛顿—拉弗逊法,其基本思想是把节点功率表示为电压向量的极坐标形式,以有功功率误差作为修正电压向量角度的依据,以无功功率误差作为修正电压幅值的依据,把有功和无功分开进行迭代其主要特点是以一个(n-1)阶和一个m阶不变的、对称的系数矩阵 代替原来的(n+m-2)阶变化的、不对称的系数矩阵M,以此
8、提高计算速度,降低对计算机贮存容量的要求。 牛顿法潮流程序的核心是求解修正方程式,当节点功率方程式采取极坐标系统时,修正方程式为: 或展开为: 电力系统中有功功率主要与各节点电压向量的角度有关,无功功率则主要受各节点电压幅值的影响。大量运算经验也告诉我们,矩阵N及J中各元素的数值相对是很小的,因此对牛顿法的第一步简化就是把有功功率和无功功率分开来进行迭代,即将上式化简为: 把2n阶的线性方程组变成了二个n阶的线性方程组,计算量和内存方面都有改善。一般线路两端电压的相角差是不大的(通常不超过10~20度),因此可以认为: 此外,与系统各节点无功功率相应的导纳必定远远
9、小于该节点自导纳的虚部,即: 因此系数矩阵中的元素表达式可以化简为: 这样,系数矩阵可表示为: (10) 将它代入原系数矩阵中,利用乘法结合率,将修正方程式变为: 将以上两式的左右两侧用以下矩阵左乘 = 得到 (14) 以上两式就是P-Q分解法的修正方程式,其中系数矩阵是系统导纳矩阵的虚部,而且在迭代过程中维持不变。它们与功率误差方程式构成了P-Q分解法基本计算公式。 P-Q分解法计算步骤如下: 1) 形成系数矩阵,并求其逆矩阵。 2) 设各节点电压的初值为(i=1,2,…,n,i≠s)和(i=1,2,…,m,i≠s)。 3) 通过有功功
10、率的不平衡方程计算有功功率的不平衡量,从而求出 (i=1,2,…,n,i≠s)。 4) 解修正方程式,求各节点电压相位角的变量(i=1,2,…,n,i≠s) 5) 求各节点电压相位角的新值(i=1,2,…,n,i≠s)。 6) 通过无功功率的不平衡方程计算无功功率的不平衡量,从而求出 (i=1,2,…,m,i≠s)。 7) 解修正方程式,求各节点电压大小的变量(i=1,2,…,m,i≠s)。 8) 求各节点电压大小的新值(i=1,2,…,m,i≠s)。 9) 若不收敛,运用各节点电压的新值自第三步开始进入下一次迭代。若收敛,计算平衡节点功率和线路功率并输出。 本设计采用P-Q分解
11、法,编写程序流程框图如下: 输入原始数据 建立节点导纳矩阵 形成矩阵和 置迭代次数 有功与无功的迭代偏差均大于 计算无功不平衡量 计算相角修正量,求得 计算有功不平衡量 计算电压修正量,求得 计算平衡节点功率以及全部线路功率 有功迭代偏差小于 无功迭代偏差小于 无功迭代偏差是否小于 有功迭代偏差是否小于 输出数据 是 否 是 是 否 否 开始 4P-Q分解法源程序 n=4;%节点数为4 nl=4;%支路数为4 isb=1;%平衡母线节点编号为1 pr=0.0001; %精度为0.0001 B1=[1 3 0.02
12、0.08i 0 1 0;1 4 0.04+0.12i 0 1 0;2 4 0.05+0.14i 0 1 0;3 4 0.04+0.12i 0 1 0]; B2=[0 -0.6-0.25i 1.0 0 0 2;0 -0.8-0.35i 1.0 0 0 2;0.4 0 0.95 0.95 0 3;0 0 1.0 1.0 0 1]; X=[1 0;2 0;3 0;4 0]; na=2;%PQ节点数 Y=zeros(n);YI=zeros(n);e=zeros(1,n);f=zeros(1,n);V=zeros(1,n);O=zeros(1,n); for i=1:n if X(
13、i,2)~=0; p=X(i,1); Y(p,p)=1./X(i,2); end end for i=1:nl if B1(i,6)==0 p=B1(i,1);q=B1(i,2); else p=B1(i,2);q=B1(i,1); end Y(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5)); YI(p,q)=YI(p,q)-1./B1(i,3); Y(q,p)=Y(p,q); YI(q,p)=YI(p,q); Y(q,q)=Y(
14、q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2; YI(q,q)=YI(q,q)+1./B1(i,3); Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2; YI(p,p)=YI(p,p)+1./B1(i,3); end %求节点导纳矩阵 G=real(Y);B=imag(YI);BI=imag(Y); for i=1:n S(i)=B2(i,1)-B2(i,2); BI(i,i)=BI(i,i)+B2(i,5); end P=real(S);Q=imag(S); for i=1
15、n e(i)=real(B2(i,3)); f(i)=imag(B2(i,3)); V(i)=B2(i,4); end for i=1:n if B2(i,6)==2 V(i)=sqrt(e(i)^2+f(i)^2); O(i)=atan(f(i)./e(i)); end end for i=2:n if i==n B(i,i)=1./B(i,i); else IC1=i+1; for j1=IC1:n B(i,j1)
16、B(i,j1)./B(i,i); end B(i,i)=1./B(i,i); for k=i+1:n for j1=i+1:n B(k,j1)=B(k,j1)-B(k,i)*B(i,j1); end end end end p=0;q=0; for i=1:n if B2(i,6)==2 p=p+1;k=0; for j1=1:n if B2(j1,6)
17、2 k=k+1; A(p,k)=BI(i,j1); end end end end for i=1:na if i==na A(i,i)=1./A(i,i); else k=i+1; for j1=k:na A(i,j1)=A(i,j1)./A(i,i); end A(i,i)=1./A(i,i); for k=i+1:na
18、 for j1=i+1:na A(k,j1)=A(k,j1)-A(k,i)*A(i,j1); end end end end ICT2=1;ICT1=0;kp=1;kq=1;K=1;DET=0;ICT3=1; while ICT2~=0|ICT3~=0 ICT2=0;ICT3=0; for i=1:n if i~=isb C(i)=0; for k=1:n C(i)=C(i)+V(k)*(G(i,k)*cos
19、O(i)-O(k))+BI(i,k)*sin(O(i)-O(k))); end DP1(i)=P(i)-V(i)*C(i); DP(i)=DP1(i)./V(i); DET=abs(DP1(i)); if DET>=pr ICT2=ICT2+1; end end end Np(K)=ICT2; if ICT2~=0 for i=2:n DP(i)=B(i,i)*DP(i); if i~=n
20、 IC1=i+1; for k=IC1:n DP(k)=DP(k)-B(k,i)*DP(i); end else for LZ=3:i L=i+3-LZ; IC4=L-1; for MZ=2:IC4 I=IC4+2-MZ; DP(I)=DP(I)-B(I,L)*DP(L);
21、 end end end end for i=2:n O(i)=O(i)-DP(i); end kq=1;L=0; for i=1:n if B2(i,6)==2 C(i)=0;L=L+1; for k=1:n C(i)=C(i)+V(k)*(G(i,k)*sin(O(i
22、)-O(k))-BI(i,k)*cos(O(i)-O(k))); end DQ1(i)=Q(i)-V(i)*C(i); DQ(L)=DQ1(i)./V(i); DET=abs(DQ1(i)); if DET>=pr ICT3=ICT3+1; end end
23、 end else kp=0; if kq~=0; L=0; for i=1:n if B2(i,6)==2 C(i)=0;L=L+1; for k=1:n C(i)=C(i)+V(k)*(G(i,k)*sin(O(i)-O(k))-BI(i,k)*cos(O(i)-O(k))); end
24、 DQ1(i)=Q(i)-V(i)*C(i); DQ(L)=DQ1(i)./V(i); DET=abs(DQ1(i)); end end end end Nq(K)=ICT3; if ICT3~=0 L=0; for i=1:na DQ(i)=A(i,i)*DQ(i); if i==na for LZ=2:i
25、 L=i+2-LZ; IC4=L-1; for MZ=1:IC4 I=IC4+1-MZ; DQ(I)=DQ(I)-A(I,L)*DQ(L); end end else IC1=i+1; for k=IC1:na
26、 DQ(k)=DQ(k)-A(k,i)*DQ(i); end end end L=0; for i=1:n if B2(i,6)==2 L=L+1; V(i)=V(i)-DQ(L); end end kp=1; K=K+1; else kq=0; if kp~=0
27、 K=K+1; end end for i=1:n Dy(K-1,i)=V(i); end end disp('迭代次数K') disp(K); disp('每次迭代后有功功率未达到精度要求的节点个数'); disp(Np); disp('每次迭代后无功功率未达到精度要求的节点个数'); disp(Nq); for k=1:n E(k)=V(k)*cos(O(k))+V(k)*sin(O(k))*j; O(k)=O(k)*180./pi; end disp('各节点的电压标么值E'
28、); disp(E); disp('各节点的电压'); disp(V); disp('各节点的电压相角'); disp(O); for p=1:n C(p)=0; for q=1:n C(p)=C(p)+conj(Y(p,q))*conj(E(q)); end S(p)=E(p)*C(p); end disp('各节点的功率'); disp(S); disp('各支路的首端功率'); for i=1:nl if B1(i,6)==0 p=B1(i,1);q=B1(i,2); e
29、lse p=B1(i,2);q=B1(i,1); end Si(p,q)=E(p)*(conj(E(p))*conj(B1(i,4)./2)+(conj(E(p)*B1(i,5))-conj(E(q)))*conj(1./(B1(i,3)*B1(i,5)))); disp(Si(p,q)); end disp('各支路的末端功率'); for i=1:nl if B1(i,6)==0 p=B1(i,1);q=B1(i,2); else p=B1(i,2);q=B1(i,1); end Sj(q,p)=
30、E(q)*(conj(E(q))*conj(B1(i,4)./2)+(conj(E(q)./B1(i,5))-conj(E(p)))*conj(1./(B1(i,3)*B1(i,5)))); disp(Sj(q,p)); end disp('各支路的功率损耗'); for i=1:nl if B1(i,6)==0 p=B1(i,1);q=B1(i,2); else p=B1(i,2);q=B1(i,1); end DS(i)=Si(p,q)+Sj(q,p); disp(DS(i)); end for i=1
31、K Cs(i)=i; for j=1:n Dy(K,j)=Dy(K-1,j); end end disp('各节点的电压-迭代次数曲线图'); plot(Cs,Dy,'LineWidth',3) grid on xlabel('迭代次数K') ylabel('电压V') title('电压-迭代次数曲线'); 5实验结果分析 迭代次数K 7 每次迭代后有功功率未达到精度要求的节点个数 3 3 3 3 2 2 0 每次迭代后无功功率未达到精度要求的节点个
32、数 2 2 2 2 1 1 0 各节点的电压标么值E 0.9641 + 0.0000i 1.0658 + 0.1659i 0.9484 + 0.0546i 0.9978 + 0.0666i 各节点的电压 0.9641 1.0787 0.9500 1.0000 各节点的电压相角 0 8.8450 3.2936 3.8196 各节点的功率 -1.1374 + 0.2500i 0.7999 + 0.3500i 0.4000 - 0.6
33、290i 0.0001 + 0.2198i 各支路的首端功率 -0.5746 + 0.3328i -0.5628 - 0.0828i 0.7999 + 0.3500i -0.1841 - 0.3341i 各支路的末端功率 0.5841 - 0.2948i 0.5767 + 0.1246i -0.7672 - 0.2583i 0.1905 + 0.3535i 各支路的功率损耗 0.0095 + 0.0379i 0.0139 + 0.0418i 0.0328 + 0.0917i 0.0065 + 0.
34、0194i 各节点的电压-迭代次数曲线图 图 1精度为0.0001时电压-迭代次数曲线 经过七轮迭代,节点功率不平衡量下降到0.00010以下,电压幅值和相角都满足计算精度要求,迭代结束。 实验中: 当精度调整为0.001时K=6 当精度调整为0.00001时K=9 当精度调整为0.000001时K=10以上几种情况输出曲线相似 当精度调整为0.0000001时K=12此时输出曲线也与上面曲线有所不同,如下图所示 图 2精度为0.0000001时电压-迭代次数曲线 6小结 通过本次课程设计,我认真学习查阅了资料,透彻的学习并理解了电力网的潮流计算方法,对牛
35、顿拉弗逊法和P-Q分解法都有了更深刻的体会。平时的学习中,课本上大段的数学推导和矩阵,还有大量的数学变化和概念让人望而生畏,每次看到这里时也是走马观花囫囵吞枣的看一下,没有深刻的理解。着手开始做此次课设时才发现最重要的还是课本上详细的理论推导。静下心来一步步看,觉得书本之描述言简意赅而又易懂,大片的雅各比矩阵也没有那么难以理解。在反复理解学习理论知识后,我对牛顿拉弗逊法和P-Q分解法的关系和区别有了更深刻的理解。 牛顿拉弗逊法更为精确,但是计算效率不高算法冗长。而在工程运用中(满足P-Q分解法使用条件的情况下),制定一定精度要求后,使用P-Q分解法计算更快捷,计算效率更高,更符合工程实际运用
36、但是从实验结果可以看到,精度也不是取得越精密越好,精度过于精细时可能会出错,也会因为迭代次数过多而降低速度,违背了使用P-Q分解法的初衷。 本次设计采用了Matlab编程,Matlab编程语言本身与C语言非常相似,很好上手。而且Matlab中矩阵运算十分方便,很适合P-Q分解法编程。Matlab的输出与绘图功能十分强大,输出结果直观形象。 感谢这段时间以来老师的无私教授,同学们的帮助和自己的摸索,让我对电力系统分析这门课程有了更加深刻的体会,让我体验到了如何利用现代化数字工具来解决课本上的问题! 参考文献 [1] 何仰赞等.电力系统分析[M]. 武汉:华中理工大学出版社,2002.
37、3 [2] 西安交通大学等.电力系统计算[M].北京:水利电力出版社,1993.12 [3] 刘军,刘学军。MATLAB在电力系统分析中的应用。电力系统及其自动化学报, 2000,12(2)23~25,31。 [4] 李光琦.电力系统暂态分析[M].北京: 水利电力出版社,2002.5 [5] 于永源,杨绮雯. 电力系统分析(第二版)[M]. 北京:中国电力出版社,2004.3 [6] 刘宏友,彭峰等编著。Matlab6.x 符号运算及其应用,机械工业出版社,2003。 [7] 王忠礼,段慧达,高玉峰编著。MATLAB应用技术-在电气工程与自动化专业中的应用。清华大学出版社,2007.1。 18 / 18






