电分课设-PQ分解法计算潮流及其仿真结果.docx
《电分课设-PQ分解法计算潮流及其仿真结果.docx》由会员分享,可在线阅读,更多相关《电分课设-PQ分解法计算潮流及其仿真结果.docx(18页珍藏版)》请在冰点文库上搜索。
![电分课设-PQ分解法计算潮流及其仿真结果.docx](https://file1.bingdoc.com/fileroot1/2023-5/16/cc593c0e-7f15-425d-b21e-b6a4886803f8/cc593c0e-7f15-425d-b21e-b6a4886803f81.gif)
摘要
潮流计算是研究电力系统稳态运行情况的一种基本电气计算,通过潮流计算可以就给定的运行条件和网路结构确定整个系统的运行状态,确定各母线上的电压(幅值及相角)、网络中的功率分布以及功率损耗等参数。
常用的潮流计算方法有牛顿-拉弗逊法、P-Q分解法、直流潮流法、并行处理法等。
P-Q分解法速度快,计算效率高,实用性强,Matlab编程与C语言相似,而且极其适合计算矩阵。
因此,本设计采用P-Q分解法并使用Matlab软件编程进行潮流计算,获得简单电力系统各节点电压,功率分布,功率损耗等参数。
关键词:
潮流计算,P-Q分解法,Matlab编程计算
1潮流计算背景
1.1潮流计算意义
电力系统潮流计算是研究电力系统稳态运行情况的一种基本电气计算。
它的任务是根据给定的运行条件和网路结构确定整个系统的运行状态,如各母线上的电压(幅值及相角)、网络中的功率分布以及功率损耗等。
电力系统潮流计算的结果是电力系统稳定计算和故障分析的基础。
潮流计算几点意义如下:
(1)在电网规划阶段,通过潮流计算,合理规划电源容量及接入点,合理规划网架,选择无功补偿方案,满足规划水平的大、小方式下潮流交换控制、调峰、调相、调压的要求。
(2)在编制年运行方式时,在预计负荷增长及新设备投运基础上,选择典型方式进行潮流计算,发现电网中薄弱环节,供调度员日常调度控制参考,并对规划、基建部门提出改进网架结构,加快基建进度的建议。
(3)正常检修及特殊运行方式下的潮流计算,用于日运行方式的编制,指导发电厂开机方式,有功、无功调整方案及负荷调整方案,满足线路、变压器热稳定要求及电压质量要求。
(4)预想事故、设备退出运行对静态安全的影响分析及作出预想的运行方式调整方案。
在电力系统运行方式和规划方案的研究中,都需要进行潮流计算以比较运行方式或规划供电方案的可行性、可靠性和经济性。
同时,为了实时监控电力系统的运行状态,也需要进行大量而快速的潮流计算。
因此,潮流计算是电力系统中应用最广泛、最基本和最重要的一种电气运算。
1.2潮流计算方法要求
电网潮流计算方法的要求是:
(1)具有可靠的收敛性,对不同的网络结构及不同的运行条件都能收敛。
(2)计算速度快。
(3)使用灵活方便,参数调整容易,能满足工程上的各种要求。
(4)内存占容量少等[6]。
由于配电网中的收敛问题比较突出,因此对配电网潮流算法进行评价时,首先看它能否可靠收敛,然后在此基础上可对计算速度提出进一步的要求,即尽可能地提高计算速度。
2牛顿-拉弗逊法原理
首先对一般的牛顿—拉夫逊法作一简单的说明。
已知一个变量X函数为:
到此方程时,由适当的近似值出发,根据:
反复进行计算,当满足适当的收敛条件就是上面方程的根。
这样的方法就是所谓的牛顿—拉夫逊法。
这一方法还可以做下面的解释,设第次迭代得到的解语真值之差,即的误差为时,则:
把在附近对用泰勒级数展开
上式省略去以后部分
的误差可以近似由上式计算出来。
比较两式,可以看出牛顿—拉夫逊法的休整量和的误差的一次项相等。
用同样的方法考虑,给出个变量的个方程:
对其近似解得修正量可以通过解下边的方程来确定:
式中是对于的值。
这一矩阵称为雅可比矩阵。
按上述得到的修正向量后,得到如下关系
这比更接近真实值。
这一步在收敛到希望的值以前重复进行,一般要反复计算满足
为预先规定的小正数,是第n次迭代的近似值。
牛顿拉弗逊法计算步骤如下:
(1)给这各节点电压初始值;
(2)将以上电压初始值代入公式,求修正方程的常数项向量;
(3)将电压初始值在带入上述公式,求出修正方程中系数矩阵的各元素。
(4)解修正方程式;
(5)修正各节点电压,;
(6)将,在带入方程式,求出;
(7)检验是否收敛,即
如果收敛,迭代到此结束,进一步计算各线路潮流和平衡节点功率,并打印输出结果。
如果不收敛,转回②进行下次迭代计算,直到收敛为止。
计算流程框图如下:
开始
输入初始值
形成节点导纳矩阵
分解各节点初始电压的实部和虚部
迭代次数K=0
求PQ节点的,,求PV节点的,
置节点号i=0
雅克比矩阵是否形成,i>n
求得雅克比矩阵各元素
增大节点号i=i+1
把雅克比矩阵单位化
求解修正方程,得,
求解最大修正量,
是否收敛
回带各电压新值,K=K+1
计算电压及相角,节电功率及支路损耗等参数
输出
否
是
否
是
3P-Q分解法原理
电力系统中常用的PQ分解法派生于以极坐标表示的牛顿—拉弗逊法,其基本思想是把节点功率表示为电压向量的极坐标形式,以有功功率误差作为修正电压向量角度的依据,以无功功率误差作为修正电压幅值的依据,把有功和无功分开进行迭代其主要特点是以一个(n-1)阶和一个m阶不变的、对称的系数矩阵代替原来的(n+m-2)阶变化的、不对称的系数矩阵M,以此提高计算速度,降低对计算机贮存容量的要求。
牛顿法潮流程序的核心是求解修正方程式,当节点功率方程式采取极坐标系统时,修正方程式为:
或展开为:
电力系统中有功功率主要与各节点电压向量的角度有关,无功功率则主要受各节点电压幅值的影响。
大量运算经验也告诉我们,矩阵N及J中各元素的数值相对是很小的,因此对牛顿法的第一步简化就是把有功功率和无功功率分开来进行迭代,即将上式化简为:
把2n阶的线性方程组变成了二个n阶的线性方程组,计算量和内存方面都有改善。
一般线路两端电压的相角差是不大的(通常不超过10~20度),因此可以认为:
此外,与系统各节点无功功率相应的导纳必定远远小于该节点自导纳的虚部,即:
因此系数矩阵中的元素表达式可以化简为:
这样,系数矩阵可表示为:
(10)
将它代入原系数矩阵中,利用乘法结合率,将修正方程式变为:
将以上两式的左右两侧用以下矩阵左乘
=
得到
(14)
以上两式就是P-Q分解法的修正方程式,其中系数矩阵是系统导纳矩阵的虚部,而且在迭代过程中维持不变。
它们与功率误差方程式构成了P-Q分解法基本计算公式。
P-Q分解法计算步骤如下:
1)形成系数矩阵,并求其逆矩阵。
2)设各节点电压的初值为(i=1,2,…,n,i≠s)和(i=1,2,…,m,i≠s)。
3)通过有功功率的不平衡方程计算有功功率的不平衡量,从而求出(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分解法,编写程序流程框图如下:
输入原始数据
建立节点导纳矩阵
形成矩阵和
置迭代次数
有功与无功的迭代偏差均大于
计算无功不平衡量
计算相角修正量,求得
计算有功不平衡量
计算电压修正量,求得
计算平衡节点功率以及全部线路功率
有功迭代偏差小于
无功迭代偏差小于
无功迭代偏差是否小于
有功迭代偏差是否小于
输出数据
是
否
是
是
否
否
开始
4P-Q分解法源程序
n=4;%节点数为4
nl=4;%支路数为4
isb=1;%平衡母线节点编号为1
pr=0.0001;%精度为0.0001
B1=[130.02+0.08i010;140.04+0.12i010;240.05+0.14i010;340.04+0.12i010];
B2=[0-0.6-0.25i1.0002;0-0.8-0.35i1.0002;0.400.950.9503;001.01.001];
X=[10;20;30;40];
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);
fori=1:
n
ifX(i,2)~=0;
p=X(i,1);
Y(p,p)=1./X(i,2);
end
end
fori=1:
nl
ifB1(i,6)==0
p=B1(i,1);q=B1(i,2);
elsep=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(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);
fori=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);
fori=1:
n
e(i)=real(B2(i,3));
f(i)=imag(B2(i,3));
V(i)=B2(i,4);
end
fori=1:
n
ifB2(i,6)==2
V(i)=sqrt(e(i)^2+f(i)^2);
O(i)=atan(f(i)./e(i));
end
end
fori=2:
n
ifi==n
B(i,i)=1./B(i,i);
elseIC1=i+1;
forj1=IC1:
n
B(i,j1)=B(i,j1)./B(i,i);
end
B(i,i)=1./B(i,i);
fork=i+1:
n
forj1=i+1:
n
B(k,j1)=B(k,j1)-B(k,i)*B(i,j1);
end
end
end
end
p=0;q=0;
fori=1:
n
ifB2(i,6)==2
p=p+1;k=0;
forj1=1:
n
ifB2(j1,6)==2
k=k+1;
A(p,k)=BI(i,j1);
end
end
end
end
fori=1:
na
ifi==na
A(i,i)=1./A(i,i);
elsek=i+1;
forj1=k:
na
A(i,j1)=A(i,j1)./A(i,i);
end
A(i,i)=1./A(i,i);
fork=i+1:
na
forj1=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;
whileICT2~=0|ICT3~=0
ICT2=0;ICT3=0;
fori=1:
n
ifi~=isb
C(i)=0;
fork=1:
n
C(i)=C(i)+V(k)*(G(i,k)*cos(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));
ifDET>=pr
ICT2=ICT2+1;
end
end
end
Np(K)=ICT2;
ifICT2~=0
fori=2:
n
DP(i)=B(i,i)*DP(i);
ifi~=n
IC1=i+1;
fork=IC1:
n
DP(k)=DP(k)-B(k,i)*DP(i);
end
else
forLZ=3:
i
L=i+3-LZ;
IC4=L-1;
forMZ=2:
IC4
I=IC4+2-MZ;
DP(I)=DP(I)-B(I,L)*DP(L);
end
end
end
end
fori=2:
n
O(i)=O(i)-DP(i);
end
kq=1;L=0;
fori=1:
n
ifB2(i,6)==2
C(i)=0;L=L+1;
fork=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
DQ1(i)=Q(i)-V(i)*C(i);
DQ(L)=DQ1(i)./V(i);
DET=abs(DQ1(i));
ifDET>=pr
ICT3=ICT3+1;
end
end
end
elsekp=0;
ifkq~=0;
L=0;
fori=1:
n
ifB2(i,6)==2
C(i)=0;L=L+1;
fork=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
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;
ifICT3~=0
L=0;
fori=1:
na
DQ(i)=A(i,i)*DQ(i);
ifi==na
forLZ=2:
i
L=i+2-LZ;
IC4=L-1;
forMZ=1:
IC4
I=IC4+1-MZ;
DQ(I)=DQ(I)-A(I,L)*DQ(L);
end
end
else
IC1=i+1;
fork=IC1:
na
DQ(k)=DQ(k)-A(k,i)*DQ(i);
end
end
end
L=0;
fori=1:
n
ifB2(i,6)==2
L=L+1;
V(i)=V(i)-DQ(L);
end
end
kp=1;
K=K+1;
else
kq=0;
ifkp~=0
K=K+1;
end
end
fori=1:
n
Dy(K-1,i)=V(i);
end
end
disp('迭代次数K')
disp(K);
disp('每次迭代后有功功率未达到精度要求的节点个数');
disp(Np);
disp('每次迭代后无功功率未达到精度要求的节点个数');
disp(Nq);
fork=1:
n
E(k)=V(k)*cos(O(k))+V(k)*sin(O(k))*j;
O(k)=O(k)*180./pi;
end
disp('各节点的电压标么值E');
disp(E);
disp('各节点的电压');
disp(V);
disp('各节点的电压相角');
disp(O);
forp=1:
n
C(p)=0;
forq=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('各支路的首端功率');
fori=1:
nl
ifB1(i,6)==0
p=B1(i,1);q=B1(i,2);
elsep=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('各支路的末端功率');
fori=1:
nl
ifB1(i,6)==0
p=B1(i,1);q=B1(i,2);
elsep=B1(i,2);q=B1(i,1);
end
Sj(q,p)=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('各支路的功率损耗');
fori=1:
nl
ifB1(i,6)==0
p=B1(i,1);q=B1(i,2);
elsep=B1(i,2);q=B1(i,1);
end
DS(i)=Si(p,q)+Sj(q,p);
disp(DS(i));
end
fori=1:
K
Cs(i)=i;
forj=1:
n
Dy(K,j)=Dy(K-1,j);
end
end
disp('各节点的电压-迭代次数曲线图');
plot(Cs,Dy,'LineWidth',3)
gridon
xlabel('迭代次数K')
ylabel('电压V')
title('电压-迭代次数曲线');
5实验结果分析
迭代次数K
7
每次迭代后有功功率未达到精度要求的节点个数
3333220
每次迭代后无功功率未达到精度要求的节点个数
2222110
各节点的电压标么值E
0.9641+0.0000i1.0658+0.1659i0.9484+0.0546i0.9978+0.0666i
各节点的电压
0.96411.07870.95001.0000
各节点的电压相角
08.84503.29363.8196
各节点的功率
-1.1374+0.2500i0.7999+0.3500i0.4000-0.6290i0.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.0194i
各节点的电压-迭代次数曲线图
图1精度为0.0001时电压-迭代次数曲线
经过七轮迭代,节点功率不平衡量下降到0.00010以下,电压幅值和相角都满足计算精度要求,迭代结束。
实验中:
当精度调整为0.001时K=6