课题组前期培训任务一三阶段826zm阅Word文档格式.docx
《课题组前期培训任务一三阶段826zm阅Word文档格式.docx》由会员分享,可在线阅读,更多相关《课题组前期培训任务一三阶段826zm阅Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
仔细分析,我觉得其实我编写的程序在用牛顿法解潮流的部分还是具有一定的通用性的。
由于这部分大部分的计算是重复的,可以通过循环计算实现其通用性,比如,功率的不平衡量计算部分是具有通用性的,雅可比计算也可以同过一些调整使其具有通用性。
(3)代码量
由于我的程序不具有通用性,并且没有考虑任何其他可能发生的错误,只考虑的潮流计算题目中的变量,所以我编写的程序代码量比matpower小很多,但如果题目更加复杂的话,按照我编程的思路会大大增加程序的代码量,而matpower所使用的代码量是相对固定,当潮流特别复杂的时候,所需要的代码量必然会超过matpower。
(4)执行效率
由于潮流计算题目的计算量不大,迭代次数不多,针对这个题目本身来说,我编写的程序和matpower比较差别并不是特别大。
但如果计算量大了之后,按照我编写的思路,完全没有用到matlab语言中一些相对高级一些的语言,每一步都相对独立,使用的循环和计算方法的效率都相对较低的问题就会显现出来。
(5)输入输出接口
我感觉我编写的程序输入输入接口并不明显,在编写的时候也没有特别考虑这个问题。
我编写的程序输入量是铭牌编号,所以还要通过参数计算才能得到节点和线路参数的有名值和标幺值再参与计算,输出也是在程序计算中直接得到结果,并没有像matpower那样通过读取文件实现输入并将结果以文件形式集中保存并输出,所以思路没有matpower那么严谨,输入输出都显得比较分散。
(6)可读性
我认为由于我编写的程序用的语言都比较简单,而且思路跟书本上完全一样,所以比起复杂的matpower程序更容易读懂,像我这样的matlab菜鸟也可以很容易读懂。
而matpower作为成熟的工具包,里面用了一些比较不常见的函数,没有一定matlab基础读起来会比较困难,不好理解,所以我认为在在程序内容上可读性上我的程序应该会比较好一些。
但由于输入输出接口不明显,所以输入和结果可读性比较弱,需要对程序了解的人才能知道输出结果。
formatcompact
baseMVA=100;
%节点数PV节点数交流线路数直流线路数发电机数
s1=[71702];
%线路编号起节点名终节点名电阻电抗B/2变比
s2=[1260.0054750.04440.0355711;
2360.00330.026650.0213411;
3230.00440.035540.0284611;
4120.00110.05690115.75/220;
5730.00120.0769011;
6740.00075077-0.005301.1110/220;
7750.000792440.050801.0510/220];
%发电机编号发电机所在节点名有功无功
s3=[111.50;
2600];
%节点编号节点名称基准电压节点类型负荷有功无功初始电压相角节点电导电纳
s5=[11220.020.0000000.0000001.00.00.001896-0.0073554;
22220.01-1.000000-1.0000001.00.000;
33220.010.0000000.0000001.00.000;
44220.01-1.000000-0.8000001.00.000;
55220.01-0.200000-0.1500001.00.000;
66220.030.0000000.0000001.00.000;
77220.010.0000000.0000001.00.00.0007475-0.0007992];
%低压侧节点编号高压侧节点编号变比
s6=[1215.75/220;
47110/220;
5710/220];
%计算节点导纳矩阵Y------------------------------------------------------
Y=[];
c=zeros(s1
(1),1);
%s1
(1)为节点数,c对各个节点对地导纳的初值设为0
j=sqrt(-1);
fork=1:
s1(3)%交流线路数
m=s2(k,2);
n=s2(k,3);
bk=s2(k,7);
%bk为标准变比
zt=s2(k,4)+s2(k,5)*j;
Y(m,n)=-1/(zt*bk);
Y(n,m)=-1/(zt*bk);
c(m)=c(m)+s2(k,6)*j+(bk-1)/(bk*zt);
%计算节点m的对地导纳
c(n)=c(n)+s2(k,6)*j+(1-bk)/(bk^2*zt);
%计算节点n的对地导纳
end
b=-sum(Y,2)+c+s5(:
9)+s5(:
10)*j;
s1
(1)
Y(k,k)=b(k);
Y;
G=real(Y);
B=imag(Y);
%输入节点电压初值,并计算节点注入功率-----------------------------------
u=s5(:
7);
theta=s5(:
8);
%各类节点的个数
PQJD=sum(s5(:
4)==1);
PVJD=sum(s5(:
4)==2);
PHJD=sum(s5(:
4)==0);
PS=s5(:
5);
QS=s5(:
6);
s1(5)
PS(s3(k,2))=s5(s3(k,2),5)+s3(k,3);
QS(s3(k,2))=s5(s3(k,2),6)+s3(k,4);
PS;
QS;
%PS、QS所有节点(包括PQ、PV、PH)的给定注入功率
%将外部数据映射到内核中--->
YNGNBNEFPSNQSN--------------------
%对节点导纳矩阵Y先换行再换列,形成YN
nn=1;
mm=PQJD+1;
Vm=zeros(s1
(1),1);
Va=zeros(s1
(1),1);
PSN=zeros(s1
(1),1);
QSN=zeros(s1
(1),1);
YM=zeros(size(Y));
ifs5(k,4)==3
Vm(s1
(1))=u(k);
%平衡节点只有一个所以直接输出到E的最后一个元素
Va(s1
(1))=theta(k);
PSN(s1
(1))=PS(k);
QSN(s1
(1))=QS(k);
YM(s1
(1),:
)=Y(k,:
);
elseifs5(k,4)==1
Vm(nn)=u(k);
Va(nn)=theta(k);
PSN(nn)=PS(k);
QSN(nn)=QS(k);
YM(nn,:
nn=nn+1;
elseifs5(k,4)==2
Vm(mm)=u(k);
Va(mm)=theta(k);
PSN(mm)=PS(k);
QSN(mm)=QS(k);
YM(mm,:
mm=mm+1;
else
end
%%对节点导纳矩阵Y再换列,形成YN
YN=zeros(size(Y));
YN(:
s1
(1))=YM(:
k);
nn)=YM(:
mm)=YM(:
GN=real(YN);
BN=imag(YN);
YN;
GN;
BN;
Vm;
Va;
%---------------------------------------------------------------------
%求不平衡量
pvn=0;
pqn=0;
fori=1:
ifs5(i,4)==2
pvn=pvn+1;
elseifs5(i,4)==1
pqn=pqn+1;
%-------------------------------------------
fortime=1:
20
DW=zeros(2*(s1
(1)-1),1);
n=1;
m=PQJD*2+1;
pvpv=1;
pv=zeros(PVJD,1);
forj=1:
A(i,j)=Va(i)-Va(j);
form=1:
s1
(1)-1
ifm<
=PQJD%PQ节点
DW(2*m-1)=PSN(m)-Vm(m)*(GN(m,:
).*cos(A(m,:
))+BN(m,:
).*sin(A(m,:
)))*Vm;
DW(2*m)=QSN(m)-Vm(m)*(GN(m,:
))-BN(m,:
elseifm>
PQJD%PV节点
DW(2*m)=0;
DW(2*m)=[];
DW;
%形成雅可比矩阵---------------------------------------------------
sJ=2*(s1
(1)-1);
J=zeros(sJ,sJ);
%
form=1:
forn=1:
=PQJD
ifm==n
J((2*m-1):
2*m,(2*n-1):
2*n)=...
Vm(m)*[-(GN(m,:
))*Vm-BN(m,:
))*Vm)-Vm(m)*Vm(m)*BN(m,m)...
(GN(m,:
))*Vm+BN(m,:
))*Vm)+Vm(m)*Vm(m)*GN(m,m);
))*Vm)-Vm(m)*Vm(m)*GN(m,m)...
))*Vm)-Vm(m)*Vm(m)*BN(m,m)];
elseifm~=n
2*n)=Vm(m)*[GN(m,n).*sin(A(m,n))-BN(m,n).*cos(A(m,n))...
GN(m,n).*cos(A(m,n))+BN(m,n).*sin(A(m,n));
-GN(m,n).*cos(A(m,n))+BN(m,n).*sin(A(m,n))...
GN(m,n).*sin(A(m,n))-BN(m,n).*cos(A(m,n))]*Vm(n);
PQJD
ifm==n
00];
elseifm~=n
Vm(m)*[GN(m,n).*sin(A(m,n))-BN(m,n).*cos(A(m,n))...
00]*Vm(n);
ifm>
J(2*m,:
)=[];
J(:
2*m)=[];
J;
%雅可比矩阵------------------------------
%求电压的不平衡量,并修正电压
DV=J\DW;
%DW=-J*DV--->
DV=-J\DW
DVm=zeros(s1
(1),1);
DVa=zeros(s1
(1),1);
PQJD
DVa(n)=DV(2*n-1);
DVm(n)=DV(2*n);
forn=(PQJD+1):
DVm(n)=0;
DVm(s1
(1))=0;
DVa(s1
(1))=0;
Vm=Vm+DVm;
Va=Va+DVa;
%--------------------------------------------------
ifmax(abs(DV))<
1.0e-006
break;
QG(m)=Vm(m)*(GN(m,:
nn=1;
fork=1:
ifs5(k,4)==1
u(k)=Vm(nn);
theta(k)=Va(nn);
u(k)=Vm(mm);
theta(k)=Va(mm);
Qg(k)=QG(mm);
U=u.*cos(theta)+u.*sin(theta)*j;
uy=abs(u).*s5(:
3);
lt=size(s6(:
1),1);
lt
uy(s6(i,1))=uy(s6(i,1))*s6(i,3);
disp('
节点编号电压幅值电压相角'
)
JD_DIAN_YA=cat(2,s5(:
2),uy,theta*180/pi)
VOJD=U(k)*conj(Y(k,:
)*U);
PS(k)=real(VOJD);
QS(k)=imag(VOJD);
Sa=zeros(s1(3),1);
Sb=zeros(s1(3),1);
DSL=zeros(s1(3),1);
%线路上损耗的功率
s1(3)
bk=s2(k,7);
Sa(k)=U(m)*(conj(U(m))*conj((s2(k,6)*j+(bk-1)/(bk*zt))+s5(m,9)+s5(m,10)*j)...
+(conj(U(m))-conj(U(n)))*conj(1/(zt*bk)));
Sb(k)=U(n)*(conj(U(n))*conj((s2(k,6)*j+(1-bk)/(bk^2*zt))+s5(n,9)+s5(n,10)*j)...
+(conj(U(n))-conj(U(m)))*conj(1/(zt*bk)));
DSL(k)=Sa(k)+Sb(k);
线路编号起节点终节点起->
终功率终->
起功率线路损耗'
XLGLV=cat(2,s2(:
1:
3),Sa*baseMVA,Sb*baseMVA,DSL*baseMVA)
UY=U.*s5(:
平衡节点功率'
VOJDY=VOJD*baseMVA
SaY=Sa*baseMVA;
SbY=Sb*baseMVA;
DSLY=DSL*baseMVA;
运行结果:
节点编号电压幅值电压相角
JD_DIAN_YA=
1.000015.75005.1735
2.0000213.82970.1765
3.0000212.8942-0.8977
4.0000106.6839-6.6285
5.00009.1216-7.8200
6.0000220.00000
7.0000193.1059-7.0653
起功率线路损耗
XLGLV=
1.0e+002*
0.01000.02000.0600-0.0081-0.6465i0.0103+0.5950i0.0022-0.0515i
0.02000.03000.0600-0.7028-1.1013i0.7087+1.1073i0.0059+0.0060i
0.03000.02000.03000.5034+0.0317i-0.5022-0.0756i0.0012-0.0439i
0.04000.01000.02001.5000+0.5362i-1.4953-0.3853i0.0047+0.1510i
0.05000.07000.0300-1.2008-0.9434i1.2051+1.1770i0.0042+0.2336i
0.06000.07000.04001.0020+0.7892i-0.9999-0.7998i0.0022-0.0106i
0.07000.07000.05000.2007+0.1548i-0.2001-0.1500i0.0006+0.0048i
平衡节点功率
7.1899e+001+1.7023e+002i
根据matpower修改后的程序是以标幺值为输入量,而PSASP即可以用标幺值也可以用铭牌值作为输入值,结果正确性方面PSASP比较高。
另外,由于在计算过程中取的小数位数不同,所以在电压相角和线路功率的计算中我编的程序算出的结果还存在一定的误差。
我编的程序目前只支持以标幺值为输入,除了题目给出的参数没有设计其他的相关参数,所以只能计算与例题同类型或参数更少的潮流计算题目,但比起之前针对本题目的程序通用性还是有一定的提高。
而PSASP在潮流计算部分综合考虑考虑了潮流计算可能遇到的各种情况,可以做更多元件的计算,作为商业软件有很强的通用性。
(3)输入输出接口
在修改的程序中加入了输入输出接口的编写,但由于不太会在主程序中读取输入接口的数据,输入的部分和主程序写在一起,所以不是特别明显,而输出接口则基本模仿了matpower的输出模式,但这样的输入输出接口必须同时比对模型的电路图。
PSASP是图模一体的软件,先要画出电路图,在对应的元件图上输入参数,输出结果也在对于元件上表示,所以其输入和输出都相对更加直观。
给出至少三种不同类型的调压方案及相应的潮流计算结果
方案一:
结合改变发电机端电压调压和借电容器补偿调压
发电机G1母线采用逆调压,电压升高为104%UN;
发电机GS母线采用逆调压,电压升高为102%UN;
节点5采用电容器补偿容量为35MVA。
潮流计算结果:
JD_DIAN_YA=
1.000016.38004.7417
2.0000220.55230.0960
3.0000219.8699-0.9232
4.0000114.7487-6.1212
5.000010.0284-7.1539
6.0000224.40000
7.0000207.8291-6.4986
0.01000.02000.0600-0.0099-0.4294i0.0108+0.3635i0.0008-0.0659i
0.02000.03000.0600-0.7006-0.7018i0.7037+0.6837i0.0032-0.0181i
0.03000.02000.03000.5051+0.0008i-0.5040-0.0488i0.0011-0.0480i
0.04000.01000.02001.5000+0.7244i-1.4951-0.5714i0.0049+0.1530i
0.05000.07000.0300-1.2014-0.5948i1.2045+0.7506i0.0031+0.1558i
0.060