编程计算潮流.docx
《编程计算潮流.docx》由会员分享,可在线阅读,更多相关《编程计算潮流.docx(21页珍藏版)》请在冰豆网上搜索。
![编程计算潮流.docx](https://file1.bdocx.com/fileroot1/2022-12/12/bf011aa1-3f25-4a9a-a668-88d9fd53e35d/bf011aa1-3f25-4a9a-a668-88d9fd53e35d1.gif)
编程计算潮流
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
简单闭式网络潮流计算程序设计
初始条件:
节点数:
4支路数:
4计算精度:
0.00010
支路1:
13(0.0200+j0.0800)
支路2:
14(0.0400+j0.1200)
支路3:
24(0.0500+j0.1400)
支路4:
34(0.0400+j0.1200)
节点1:
PQ节点,S
(1)=-0.6000-j0.2500
节点2:
PQ节点,S
(2)=-0.8000-j0.3500
节点3:
PV节点,P(3)=0.4000V(3)=0.9500
节点4:
平衡节点,U(4)=1.00000.0000
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1)编写计算原理。
(2)编写计算程序。
(3)编写程序并计算结果。
(4)结果分析。
时间安排:
第16周,6月6—10号,指导老师下达任务书,审题、查阅相关资料;
第16周,6月11—16号,分析、计算,编写程序,撰写报告;
第17周,6月17号,论文答辩。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
本文运用matlab软件对给定课设题目进行潮流计算。
潮流计算是电力系统课程最基本最常用的计算。
潮流计算是指对电力系统正常运行状况的分析和计算。
通常需要已知系统参数和条件,给定一些初始条件,从而计算出系统运行的电压和功率等;潮流计算方法很多:
高斯-塞德尔法、牛顿-拉夫逊法、PQ分解法、直流潮流法,以及由高斯-塞德尔法、牛顿-拉夫逊法演变的各种潮流计算方法。
通过潮流计算,可以确定各母线的电压幅值和相角,各元件流过的功率,整个系统的功率损耗。
潮流计算是实现安全经济发供电的必要手段和重要工作环节。
因此潮流计算在电力系统的规划计算,生产运行,调度管理及科学计算中都有广泛的运用。
本课程设计采用PQ分解法进行电力系统分析的潮流计算程序的编制与调试,获得电力系统中各节点电压,为进一步进行电力系统分析作准备。
关键词:
PQ分解法matlab潮流计算
1.题目原始数据及化简
原始数据:
编程计算潮流
节点数:
4支路数:
4计算精度:
0.00010
支路1:
13(0.0200+j0..0800)
支路2:
14(0.0400+j0.1200)
支路3:
24(0.0500+j0.1400)
支路4:
34(0.0400+j0.1200)
节点1:
PQ节点,S
(1)=-0.6000-j0.2500
节点2:
PQ节点,S
(2)=-0.8000-j0.3500
节点3:
PV节点,P(3)=0.4000V(3)=0.9500
节点4:
平衡节点,U(4)=1.00000.0000
根据原始数据所画电路简化图如图1
13
42
图1电路简化图
2.PQ分解法
2.1PQ分解法基本思想
PQ分解法是从改进和简化牛顿法潮流程序的基础上提出来的,它的基本思想是:
把节点功率表示为电压向量的极坐标形式,以有功功率误差作为修正电压向量角度的依据,以无功功率误差作为修正电压幅值的依据,把有功和无功分开进行迭代其主要特点是以一个(n-1)阶和一个m阶不变的、对称的系数矩阵
代替原来的(n+m-1)阶变化的、不对称的系数矩阵M,以此提高计算速度,降低对计算机贮存容量的要求。
牛顿法潮流程序的核心是求解修正方程式,当节点功率方程式采取极坐标系统时,修正方程式为:
或展开为:
(1)
以上方程式是从数学上推倒出来的,并没有考虑电力系统这个具体对象的特点。
电力系统中有功功率主要与各节点电压向量的角度有关,无功功率则主要受各节点电压幅值的影响。
大量运算经验也告诉我们,矩阵N及J中各元素的数值相对是很小的,因此对牛顿法的第一步简化就是把有功功率和无功功率分开来进行迭代,即将式(4)化简为:
(2)
这样,由于我们把2n阶的线性方程组变成了二个n阶的线性方程组,因而计算量和内存方面都有改善。
但是,H,L在迭代过程中仍然不断变化,而且又都是不对称矩阵。
对牛顿法的第二个化简,也是比较关键的一个化简,即把式(5)中的系数矩阵简化为在迭代过程中不变的对称矩阵。
众所周知,一般线路两端电压的相角差是不大的(通常不超过10~20度),因此可以认为:
(3)
此外,与系统各节点无功功率相应的导纳
必定远远小于该节点自导纳的虚部,即:
因此,
(4)
考虑到以上关系后,式(5)中系数矩阵中的元素表达式可以化简为:
(5)
这样,式(5)中系数矩阵可以表示为:
(6)
进一步可以把它们表示为以下矩阵的乘积:
(7)
将它代入(5)中,并利用乘法结合率,我们可以把修正方程式变为:
(8)
及
(9)
将以上两式的左右两侧用以下矩阵左乘
就可以得到
(10)
(11)
以上两式就是P-Q分解法达到修正方程式,其中系数矩阵只不过是系统导纳矩阵的虚部,因而是对称矩阵,而且在迭代过程中维持不变。
它们与功率误差方程式
(12)
(13)
构成了P-Q分解法迭代过程中基本计算公式
2.2PQ分解法潮流计算基本步骤
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)运用各节点电压的新值自第三步开始进入下一次迭代。
10)计算平衡节点功率和线路功率
3编程及运行
3.1PQ分解法潮流计算程序框图
是
是
否
是
否
是
否
图2PQ分解法潮流计算流程框图
3.2源程序代码
n=input('请输入节点数:
n=');
nl=input('请输入支路数:
nl=');
isb=input('请输入平衡母线节点号:
isb=');
pr=input('请输入误差精度:
pr=');
B1=input('请输入由支路参数形成的矩阵:
B1=');%输入B1
B2=input('请输入由支路参数形成的矩阵:
B2=');%输入B2
X=input('请输入由节点号及其对地阻抗形成的矩阵:
X=');%输入X
na=input('请输入PQ节点数na=');
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('迭代次数');
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('各节点的电压V大小(节点号从小到大排)为:
');
disp(V);
disp('各节点的电压相角O(节点号从小到大排)为:
');
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('各节点的功率S(节点号从小到大排)为:
');
disp(S);
disp('各条支路的首端功率Sj(顺序同您输入B1时一样)为:
');
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('各条支路的末端功率Sj(顺序同您输入B1时一样)为:
');
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('各条支路的功率损耗DS(顺序同您输入B1时一样)为:
');
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),xlabel('迭代次数'),ylabel('电压'),title('电压迭代次数曲线');
3.3运行程序及结果分析:
请输入节点数:
n=4
请输入支路数:
nl=4
请输入平衡母线节点号:
isb=1
请输入误差精度:
pr=0.00001
请输入由支路参数形成的矩阵:
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]
请输入PQ节点数na=2
迭代次数
9
每次没有达到精度要求的有功功率个数为
333332220
每次没有达到精度要求的无功功率个数为
222211100
各节点的电压标幺值E为(节点号从小到大排):
0.96411.0658+0.1659i0.9484+0.0546i0.9978+0.0666i
各节点的电压V大小(节点号从小到大排)为:
0.96411.07870.95001.0000
各节点的电压相角O(节点号从小到大排)为:
08.84563.29363.8196
各节点的功率S(节点号从小到大排)为:
-1.1374+0.2500i0.8000+0.3500i0.4000-0.6290i0.0000+0.2198i
各条支路的首端功率Sj(顺序同您输入B1时一样)为:
-0.5746+0.3328i
-0.5628-0.0828i
0.8000+0.3500i
-0.1841-0.3341i
各条支路的末端功率Sj(顺序同您输入B1时一样)为:
0.5841-0.2948i
0.5767+0.1246i
-0.7672-0.2583i
0.1905+0.3535i
各条支路的功率损耗DS(顺序同您输入B1时一样)为:
0.0095+0.0379i
0.0139+0.0418i
0.0328+0.0917i
0.0065+0.0194i
每次迭代后各节点的电压值如图所示
图3电压迭代次数曲线
经过九轮迭代,节点功率不平衡量下降到0.000010以下,迭代到此结束,电压幅值和相角都能够满足计算精度的要求。
4.小结
在这次课程设计中,我强烈感觉到自己在matlab软件应用方面的不足,虽然在大二时候也做个一系列matlab的实验,但当这个软件与我本课程设计结合起来时却感到特别的困难。
由于这课堂上对电力系统潮流计算并没有做过这样深入的了解,因此要具体的更加精确的计算潮流,出现了很多的问题,教科书上关于PQ分解法也作过简单的说明,这样的说明仅限于理论和思路方面,对于用matlab软件怎么样变成没有做详细的介绍,因而许多关于这个软件在电力系统潮流计算方面的运用需要自己查找资料。
在以后的学习中我更深入的学习这个软件的应用,因为我发现就我的专业而言,这个软件是十分重要的。
做完这个课程设计让我感觉电力系统分析是一门很有用的课程,而电力系统潮流计算则在电力系统分析的实际运用中占有着很重要的地位。
运用PQ分解法计算潮流是课堂上老师并没有过多介绍的,牛顿-拉夫逊法计算潮流也是以前没有听说过的,通过此次课程设计,我知道了PQ分解法是牛顿-拉夫逊法的简化算法,而简化也是有条件的,知道了雅可比矩阵这个新名词,熟悉了以前线性代数中学到的三角分解等。
几乎是从无到有的学习,而且时间也很紧,学习查阅资料的过程中并不是一帆风顺,走了很多的弯路,而且完成这个课程设计后我认为自己需要学习的东西实在是太多了。
这次课程设计后,我需要对关于此次课程设计中存在的一系列问题进行深入的研究争取早点对电力系统分析这门课程有个全方位的了解,也为在以后的毕业课程设计早作准备。
一个多星期的课程设计,使我认识到积极查阅相关资料的重要性,只有首先做好充分的准备才能游刃有余,也认识到多余同学交流的重要性,也许一个问题我不明白,而有的同学明白,在请教的过程中不仅节约了时间,也增进了同学之间的友谊。
这不仅是学习上的收获了,更是生活中的收获。
同时在此也感谢指导老师也是电力系统分析课程的代课老师,此次课程设计的完成与老师的指导和课堂详细的讲解是分不开的。
也感谢班上同学给了我很多宝贵的意见和参考,使我收获很多。
5.参考文献
[1]何仰赞等.电力系统分析[M].武汉:
华中理工大学出版社,2002.3
[2]西安交通大学等.电力系统计算[M].北京:
水利电力出版社,1993.12
[3]陈衍.电力系统稳态分析[M].北京:
水利电力出版社,2004.1
[4]李光琦.电力系统暂态分析[M].北京:
水利电力出版社,2002.5
[5]于永源,杨绮雯.电力系统分析(第二版)[M].北京:
中国电力出版社,2004.3
本科生课程设计成绩评定表
姓名
性别
男
专业、班级
课程设计题目:
编程计算潮流
课程设计答辩或质疑记录:
成绩评定依据:
设计原理
(20分)
计算步骤与网络图
(30分)
结果及分析
(20分)
说明书内容和
规范程度
(10分)
答辩
(10分)
考勤
(10分)
总分
(100分)
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字: