哈工大电力系统分析短路及潮流计算实验上机程序.docx
《哈工大电力系统分析短路及潮流计算实验上机程序.docx》由会员分享,可在线阅读,更多相关《哈工大电力系统分析短路及潮流计算实验上机程序.docx(17页珍藏版)》请在冰点文库上搜索。
![哈工大电力系统分析短路及潮流计算实验上机程序.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/020745d9-0262-4b90-b8a4-94084aa14960/020745d9-0262-4b90-b8a4-94084aa149601.gif)
哈工大电力系统分析短路及潮流计算实验上机程序
上机实验
实验一节点导纳阵生成和短路电流计算
实验二简单系统的牛顿法潮流计算
姓名:
班级:
141班
学号:
实验说明:
本程序的电路结构来自翁增银、
何仰赞主编的《电力系统分析》的例题
实验一节点导纳阵生成和短路电流计算
一、实验目的
根据所给的电力系统,编制短路电流计算程序,通过计算机进行调试,最后完成一个切实可行的电力系统计算应用程序。
通过自己设计电力系统计算程序加深对电力系统分析的理解,同时加强计算机实际应用能力。
二、实验内容
1、编写数据输入、形成导纳阵程序
2、电力系统短路计算实用公式的计算程序及编制和调试
三、实验过程
1、程序代码及说明
%清屏
clear
%读数据
fid=fopen('node5.txt','r');
A=fscanf(fid,'%d',2);
B=fscanf(fid,'%f',[5,A(2,1)]);
fclose(fid);
B=B';
%求节点导纳矩阵
Y=zeros(A(1,1));%形成5X5的0阵
%%%%%====================================================%导纳阵元素计算fora=1:
1:
A(2,1)
m=B(a,1);
n=B(a,2);
ifB(a,5)>0
Y(m,m)=Y(m,m)+1/(B(a,3)+j*B(a,4));
Y(n,n)=Y(n,n)+1/(B(a,3)+j*B(a,4))/(B(a,5)A2);
Y(m,n)=-1/(B(a,3)+j*B(a,4))/B(a,5);
Y(n,m)=Y(m,n);
elseifB(a,5)<0
Y(m,m)=Y(m,m)+1/(B(a,3)+j*B(a,4))-j*B(a,5);
Y(n,n)=Y(n,n)+1/(B(a,3)+j*B(a,4))-j*B(a,5);
Y(m,n)=-1/(B(a,3)+j*B(a,4));
Y(n,m)=Y(m,n);
end
end
%%%%%=======================================================
Y(2,2)=Y(2,2)+j*0.01;
Z=inv(Y);
If=1/Z(3,3);%接金属短路,Zf=0
fori=1:
1:
5
V(1,i)=1-Z(i,3)/Z(3,3);
end
%%%========================================================%计算各支路电流
fora=1:
1:
A(2,1)
m=B(a,1);
n=B(a,2);
ifB(a,5)>0I(m,n)=(B(a,5)*V(1,m)-V(1,n))/(B(a,3)+j*B(a,4));
elseifB(a,5)<0
I(m,n)=(V(1,m)-V(1,n))/(B(a,3)+j*B(a,4));
end
end
%%%=======================================================
fid=fopen('ans.txt','w');fprintf(fid,'Y_matrix\n');
%%%=======================================================%输出导纳阵
fori=1:
1:
5
forj=1:
1:
5
k=Y(i,j);
re=real(k);
fprintf(fid,'%8.4f',re);
im=imag(k);
ifim<0
fprintf(fid,'%8.4fj\t',im);
elseifim>=0
fprintf(fid,'+%8.4fj\t',im);
end
end
fprintf(fid,'\n');
end
%%%==========================================================
%%%==========================================================%输出阻抗阵,导纳阵求逆
fprintf(fid,'Z_matrix\n');
fori=1:
1:
5
forj=1:
1:
5k=Z(i,j);re=real(k);fprintf(fid,'%8.4f',re);im=imag(k);
ifim<0fprintf(fid,'%8.4fj\t',im);
elseifim>=0fprintf(fid,'+%8.4fj\t',im);
end
endfprintf(fid,'\n');
end
%%%=========================================================
%%%=========================================================%打印输出短路电流fprintf(fid,'If=');re=real(If);
fprintf(fid,'%8.4f',re);im=imag(If);
ifim<0fprintf(fid,'%8.4fj\t',im);
elseifim>=0fprintf(fid,'+%8.4fj\t',im);endfprintf(fid,'\nV\n');
%%%========================================================
%%%========================================================%打印输出节点电压
fori=1:
1:
5fprintf(fid,'Note%d:
V%d=',i,i);k=V(1,i);re=real(k);fprintf(fid,'%8.4f',re);im=imag(k);
ifim<0fprintf(fid,'%8.4fj\t',im);
elseifim>=0fprintf(fid,'+%8.4fj\t',im);endfprintf(fid,'\n');
end
%%%
%%%========================================================
%输出打印支路电流
fprintf(fid,'lbr\n');
fori=1:
1:
5
forj=1:
1:
4
k=l(i,j);
re=real(k);
im=imag(k);
if(re~=0||im~=0)
fprintf(fid,'Branch%d--%d:
l%d%d=',i,j,i,j);
fprintf(fid,'%8.4f,re);
ifim<0
fprintf(fid,'%8.4fj\n',im);
elseifim>=0
fprintf(fid,'+%8.4fj\n',im);
end
end
end
end
%%%==========================================================
fclose(fid);%关闭文件附:
'node5.txt'
1
-2
0.0
0.105
L05
2
3
0.024
0.065
0.016
3
q
0.018
0.05
0.013
4
2
0.03
0.08
0.02
5
_q
0-0
0.184
0.S0
2、程序输出结果节点导纳阵:
0.DDfla-9.5238j
100004
$.07D1j
Q.ODOtH-
nooooj
o.oooc*
o.aocoj
3.C00C4
O.OOOOj
0.ODCO
?
D7O3j
9.10B5-33.D90lj
-4.9O9D+
13.5288j
ymgs+
L0.958€j
a.tooc+
D.MOOj
0.OOCQ4-
0.1000]
-4.99B0+
13.53B8J
11.3729-31.
T.3F3舛
□.tcoc+
O.OOOftj
0.QOCLH-
n.DOriQj
7.109C+
in.EKRCj
-a.3?
3SF
177C54j
10.4835-34,528flj
u.tmc-F
S.6612J
n.Qdooj
1.00004
n.tnnijj
n.OQODf
nnrnnj
n.
n.conn-5
1.
节点阻抗阵:
l_jh.itrix
D.0040
-S.282Sj
CL0042
-8.BC70j
-0.J028
-0.033d
-s.asrej
-0.0036
-fl.1954:
d0042
-S.8070J
QL0044
-氏3473j
-0.CIQ29-S.2671J
-0,0030
-工西紂」
-0.0038
-9.鸽BL;
-0.C02B
-6.S25^j
-0,0023
-9.2«71j
0.0067-S,2436j
-o.wio
-p.362(]j
-0,0010
-9.6430j
-0.0034
-E,827Sj
-aoo3s
-9r!
«90j
-0.a010-0.252OJ
0.OOGD
2431j
0.00^]
-0.0036
-0,1064j
-a0033
-0.B651j
-aloio-o+ei30j
O.OJ61
-S.62S6j
0.0054
-9+S4呂巧
短路电流:
If=0.0001+0.1082j
节点电压:
四、实验总结
这是我的第一次上机实验,感觉稍微有点难,主要还是在工具软件一C语言或
者MATLAB的运用上,但是我相信,以后学习中,我会努力掌握的,这是我把理论应用于实际中的必要桥梁!
实验二简单系统的牛顿法潮流计算
一、实验目的
根据所给的电力系统,编制牛顿法潮流计算程序,通过计算机进行调试,最后完成一个
切实可行的电力系统计算应用程序。
通过自己设计电力系统计算程序加深对电力系统分析的理解,同时加强计算机实际应用能力。
二、实验内容
电力系统潮流计算的计算程序设计及编制和调试。
三、程序框图
四、实验过程
1、实验程序及说明clear
%打开输入数据
%读8个数
%得4X4的0阵
fid=fopen('node4.txt','r');
A=fscanf(fid,'%f',8);
B=fscanf(fid,'%f',[5,A(2,1)]);C=fscanf(fid,'%f',[3,(A(1,1)-1)]);
fclose(fid);
B=B';
C=C';
B(2,5)=1/B(2,5);
Y=zeros(A(1,1));
%%%===============================================================
%与前一实验同法求导纳阵fora=1:
1:
A(2,1)m=B(a,1);n=B(a,2);ifB(a,5)>0Y(m,m)=Y(m,m)+1/(B(a,3)+j*B(a,4));
Y(n,n)=Y(n,n)+1/(B(a,3)+j*B(a,4))/(B(a,5)A2);
Y(m,n)=-1/(B(a,3)+j*B(a,4))/B(a,5);Y(n,m)=Y(m,n);
elseifB(a,5)<0
Y(m,m)=Y(m,m)+1/(B(a,3)+j*B(a,4))-j*B(a,5);Y(n,n)=Y(n,n)+1/(B(a,3)+j*B(a,4))-j*B(a,5);Y(m,n)=-1/(B(a,3)+j*B(a,4));Y(n,m)=Y(m,n);
end
endend%%%=================================================================
%%%=================================================================
%节点电压赋初值
Q=zeros(2*A(1,1),1);
fori=1:
1:
(A(1,1)-1)
ifC(i,3)>0
Q(2*i-1,1)=C(i,3);
Q(2*i,1)=0;
else
Q(2*i-1,1)=1;
Q(2*i,1)=0;
end
Q(2*A(3,1)-1,1)=A(4,1);
Q(2*A(3,1),1)=0;
endfid=fopen('answer.txt','w');
fprintf(fid,'====================节点电压V=============================\n');fprintf(fid,'迭代计数\t\tV1=e1+jf1\t\t\t\tV2=e2+jf2\t\t\t\tV3=e3+jf3\t\t\n');
%%%=======================求W阵===================================W=zeros(2*(A(1,1)-1),50);
forx=1:
1:
50%设置迭代次数为50次
fori=1:
1:
A(7,1)
k=C(i,1);
p=0;
q=0;
m=0;
n=0;
forj=1:
1:
A(1,1)
g=real(Y(k,j));
b=imag(Y(k,j));
e=Q(2*j-1,1);
f=Q(2*j,1);
p=p+g*e-b*f;
q=q+g*f+b*e;
m=m+g*e-b*f;
n=n+g*f+b*e;
end
W(2*k,x)=C(k,2)-Q(2*k-1,1)*p-Q(2*k)*q;
W(2*k-1,x)=C(k,3)-Q(2*k)*m+Q(2*k-1,1)*n;
End%%%=========================PQ节点
%%%=========================PV节点
forl=1:
1:
A(8,1)
k=C(l+A(7,1),1);
p=0;
q=0;
m=0;
n=0;
forj=1:
1:
A(1,1)g=real(Y(k,j));b=imag(Y(k,j));e=Q(2*j-1,1);f=Q(2*j,1);p=p+g*e-b*f;q=q+g*f+b*e;
end
W(2*k,x)=C(k,2)-Q(2*k-1,1)*p-Q(2*k)*q;
W(2*k-1,x)=(C(k,3))A2-(Q(2*k-1,1)A2+Q(2*k)A2);
End
%%%================================================================
%%%===============================================================
%比较是否符合条件
Max=0;
fori=1:
1:
2*(A(1,1)-1)
Max=max(abs(W(i,x)),Max);
end
ifMaxbreak;
end
%%%=================================================================
%%%=================================================================
%求雅克比行列式
fori=1:
1:
A(1,1)-1%===========================================forj=1:
1:
A(1,1)-1
%===========================i~=j
ifi~=j
k=C(i,1);
g=real(Y(k,j));
b=imag(Y(k,j));
e=Q(2*k-1,1);f=Q(2*k,1);J(2*k-1,2*j-1)=-(g*e+b*f);J(2*k-1,2*j)=b*e-g*f;
ifi~=3
J(2*k,2*j)=-J(2*k-1,2*j-1);
J(2*k,2*j-1)=J(2*k-1,2*j);
else
J(2*k,2*j-1)=0;
J(2*k,2*j)=0;
end
end
%===============================i=j=================ifi==j
k=C(i,1);
p=0;
q=0;
m=0;
n=0;
g=real(Y(k,k));b=imag(Y(k,k));
J(2*k-1,2*j-1)=-g*Q(2*i-1,1)-b*Q(2*i,1);
J(2*k-1,2*j)=b*Q(2*i-1,1)-g*Q(2*i,1);
ifk~=3
J(2*k,2*j-1)=b*Q(2*i-1,1)-g*Q(2*i,1);J(2*k,2*j)=g*Q(2*i-1,1)+b*Q(2*i,1);
end
forr=1:
1:
A(1,1)g=real(Y(k,r));b=imag(Y(k,r));e=Q(2*r-1,1);f=Q(2*r,1);p=p+g*e-b*f;q=q+g*f+b*e;
endJ(2*k-1,2*j-1)=-p+J(2*k-1,2*j-1);J(2*k-1,2*j)=-q+J(2*k-1,2*j);ifi~=3
J(2*k,2*j-1)=q+J(2*k,2*j-1);J(2*k,2*j)=-p+J(2*k,2*j);
else
J(2*k,2*j-1)=-2*Q(2*i-1,1);J(2*k,2*j)=-2*Q(2*i,1);
end
end
end
end
%%%==============================================================%%%=================
%解修正方程得修正量Q0
fori=1:
2:
5
J0(i+1,:
)=J(i,:
);
J0(i,:
)=J(i+1,:
);
end
J=J0;
Q0=-inv(J)*W(:
x);
fori=1:
1:
6Q(i,1)=Q(i,1)+Q0(i,1);
End
fprintf(fid,'\t%d\t\t',x);
fori=1:
A(1,1)-1
k=C(i,1);
ifQ(2*k,1)>=0
fprintf(fid,'%8.4f+%8.4fj\t\t',Q(2*k-1,1),Q(2*k,1));
else
fprintf(fid,'%8.4f%8.4fj\t\t',Q(2*k-1,1),Q(2*k,1));
end
end
fprintf(fid,'\n');
end%%%=================================================================
%%%==================================平衡点功率======================
k=A(3,1);
v=0;
j=sqrt(-1);
forb=1:
A(1,1)
m=conj(Y(k,b));
p=Q(2*b-1,1)+Q(2*b,1)*j;
n=conj(p);
v=v+m*n;
endWp=(Q(2*k-1,1)+j*Q(2*k,1))*v;
end
%%%===========================节点电压V===========================%fid=fopen('answer.txt','w');
fprintf(fid,'节点电压V\n');
fori=1:
A(1,1)-1
k=C(i,1);
ifQ(2*k,1)>=0
fprintf(fid,'node%d:
%8.4f+%8.4fj\n',k,Q(2*k-1,1),Q(2*k,1));else
fprintf(fid,'node%d:
%8.4f%8.4fj\n',k,Q(2*k-1,1),Q(2*k,1));end
end
fprintf(fid,'平衡点功率P+jQ=%8.4f+%8.4fj',real(Wp),imag(Wp));
fclose(fid);
附注:
node4.txt%输入数据
4441.050.000015021
1
20,1
0.4
-0.01528
3
10
0.3
1.1
1
40.L2
0.5
-0.01S20
2
40.08
0.4
-CL01413
1
-0.3
-0.18
2
-0,55
—Q.13
3
CL5
L1
2、程序输出结果
迭代计数
V2=e2+j£2
V3=e3+jf3
1
0.093&-0.0088J
0.9763-0.1078j
1.1000+D.12575
2
-O.OOSfij
0.9590-0.1084j
1.0924+0.1289j
3
0.9846-0.0080j
0.95S7-0.1084j
1.09244-0.lSgiOj
节点电压〒
node!
:
0.9846-0.008^3node2:
0.9587-0.1084j
node3:
1.0924+0,12P0;i
平衡点功率P+jQ=0.3679+0.
五、实验总结
本次实验是我把应用理论知识的重要实践,经过实验,我有两点感想,首先,
作为一名工科学生,应该能熟练运用C语言和MATLAB等工具,其次,理论如果不
用于实践,就永远不知道理论是用来干什么的,学到头一直是满脑子的浆糊,所以,以我的切身经历建议,把这门实验放在跟课程平行的时间上进行,这样不仅有利于实
验开展,也有利于学生更加深刻地学习!