潮流计算程序.docx
- 文档编号:29018433
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:39
- 大小:25.02KB
潮流计算程序.docx
《潮流计算程序.docx》由会员分享,可在线阅读,更多相关《潮流计算程序.docx(39页珍藏版)》请在冰豆网上搜索。
潮流计算程序
最大负荷时
%本程序的功能是用牛顿——拉夫逊法进行潮流计算
%B1矩阵:
1、支路首端号;2、末端号;3、支路阻抗;4、支路对地电纳
%5、支路的变比;6、支路首端处于K侧为1,1侧为0
%B2矩阵:
1、该节点发电机功率;2、该节点负荷功率;3、节点电压初始值
%4、PV节点电压V的给定值;5、节点所接的无功补偿设备的容量
%6、节点分类标号
clear;
n=12;%input('请输入节点数:
n=');
nl=14;%input('请输入支路数:
nl=');
isb=1;%input('请输入平衡母线节点号:
isb=');
pr=0.00001;%input('请输入误差精度:
pr=');
B1=[123.3+11.48i010;
143.87+15.375i010;
165.8+18.8i010;
232.39+34.95i01.021;
451.59+23.3i01.021;
244.67+18.34i010;
672.39+24.35i01.021;
892.39+24.35i01.021;
10112.39+24.35i01.021;
8101.7+11.2i010;
4124.2+13.9i010;
6124.2+14.64i010;
8122.2+13.9i010;
10122.4+15.2i010];
%input('请输入由支路参数形成的矩阵:
B1=');
B2=[0023123101;
00220002;
0100+75i220002;
00220002;
0100+75i220002;
00220002;
0150+112.5i220002;
00220002;
0150+112.5i220002;
00220002;
0150+112.5i220002;
450023123103];%input('请输入各节点参数形成的矩阵:
B2=');
Y=zeros(n);e=zeros(1,n);f=zeros(1,n);V=zeros(1,n);sida=zeros(1,n);S1=zeros(nl);
%-------修改部分------------
ym=1;
SB=100;UB=220;
%ym=input('您输入的参数是标么值?
(若不是则输入一个不为零的数值)');
ifym~=0
%SB=input('请输入功率基准值:
SB=');
%UB=input('请输入电压基准值:
UB=');
YB=SB./UB./UB;
BB1=B1;
BB2=B2;
fori=1:
nl
B1(i,3)=B1(i,3)*YB;
B1(i,4)=B1(i,4)./YB;
end
disp('B1矩阵B1=');
disp(B1)
fori=1:
n
B2(i,1)=B2(i,1)./SB;
B2(i,2)=B2(i,2)./SB;
B2(i,3)=B2(i,3)./UB;
B2(i,4)=B2(i,4)./UB;
B2(i,5)=B2(i,5)./SB;
end
disp('B2矩阵B2=');
disp(B2)
end
%%%---------------------------------------------------
fori=1:
nl%支路数
ifB1(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));%非对角元
Y(q,p)=Y(p,q);
Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2;%对角元K侧
Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2;%对角元1侧
end
%求导纳矩阵
disp('导纳矩阵Y=');
disp(Y)
%----------------------------------------------------------
G=real(Y);B=imag(Y);%分解出导纳阵的实部和虚部
fori=1:
n%给定各节点初始电压的实部和虚部
e(i)=real(B2(i,3));
f(i)=imag(B2(i,3));
V(i)=B2(i,4);%PV节点电压给定模值
end
fori=1:
n%给定各节点注入功率
S(i)=B2(i,1)-B2(i,2);%i节点注入功率SG-SL
B(i,i)=B(i,i)+B2(i,5);%i节点无功补偿量
end
%===================================================================
P=real(S);Q=imag(S);
ICT1=0;IT2=1;N0=2*n;N=N0+1;a=0;
whileIT2~=0
IT2=0;a=a+1;
fori=1:
n
ifi~=isb%非平衡节点
C(i)=0;D(i)=0;
forj1=1:
n
C(i)=C(i)+G(i,j1)*e(j1)-B(i,j1)*f(j1);%Σ(Gij*ej-Bij*fj)
D(i)=D(i)+G(i,j1)*f(j1)+B(i,j1)*e(j1);%Σ(Gij*fj+Bij*ej)
end
P1=C(i)*e(i)+f(i)*D(i);%节点功率P计算eiΣ(Gij*ej-Bij*fj)+fiΣ(Gij*fj+Bij*ej)
Q1=C(i)*f(i)-e(i)*D(i);%节点功率Q计算fiΣ(Gij*ej-Bij*fj)-eiΣ(Gij*fj+Bij*ej)
%求P',Q'
V2=e(i)^2+f(i)^2;%电压模平方
%=========以下针对非PV节点来求取功率差及Jacobi矩阵元素=========
ifB2(i,6)~=3%非PV节点
DP=P(i)-P1;%节点有功功率差
DQ=Q(i)-Q1;%节点无功功率差
%===============以上为除平衡节点外其它节点的功率计算=================
%=================求取Jacobi矩阵===================
forj1=1:
n
ifj1~=isb&j1~=i%非平衡节点&非对角元
X1=-G(i,j1)*e(i)-B(i,j1)*f(i);%dP/de=-dQ/df
X2=B(i,j1)*e(i)-G(i,j1)*f(i);%dP/df=dQ/de
X3=X2;%X2=dp/dfX3=dQ/de
X4=-X1;%X1=dP/deX4=dQ/df
p=2*i-1;q=2*j1-1;
J(p,q)=X3;J(p,N)=DQ;m=p+1;
J(m,q)=X1;J(m,N)=DP;q=q+1;
J(p,q)=X4;J(m,q)=X2;
elseifj1==i&j1~=isb%非平衡节点&对角元
X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);%dP/de
X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);%dP/df
X3=D(i)+B(i,i)*e(i)-G(i,i)*f(i);%dQ/de
X4=-C(i)+G(i,i)*e(i)+B(i,i)*f(i);%dQ/df
p=2*i-1;q=2*j1-1;J(p,q)=X3;J(p,N)=DQ;%扩展列△Q
m=p+1;
J(m,q)=X1;q=q+1;J(p,q)=X4;J(m,N)=DP;%扩展列△P
J(m,q)=X2;
end
end
else
%===============下面是针对PV节点来求取Jacobi矩阵的元素===========
DP=P(i)-P1;%PV节点有功误差
DV=V(i)^2-V2;%PV节点电压误差
forj1=1:
n
ifj1~=isb&j1~=i%非平衡节点&非对角元
X1=-G(i,j1)*e(i)-B(i,j1)*f(i);%dP/de
X2=B(i,j1)*e(i)-G(i,j1)*f(i);%dP/df
X5=0;X6=0;
p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;
m=p+1;
J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;
J(m,q)=X2;
elseifj1==i&j1~=isb%非平衡节点&对角元
X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);%dP/de
X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);%dP/df
X5=-2*e(i);
X6=-2*f(i);
p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;
m=p+1;
J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;
J(m,q)=X2;
end
end
end
end
end
%=========以上为求雅可比矩阵的各个元素=====================
fork=3:
N0%N0=2*n(从第三行开始,第一、二行是平衡节点)
k1=k+1;N1=N;%N=N0+1即N=2*n+1扩展列△P、△Q
fork2=k1:
N1%扩展列△P、△Q
J(k,k2)=J(k,k2)./J(k,k);%非对角元规格化
end
J(k,k)=1;%对角元规格化
ifk~=3%不是第三行
%============================================================
k4=k-1;
fork3=3:
k4%用k3行从第三行开始到当前行前的k4行消去
fork2=k1:
N1%k3行后各行下三角元素
J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);%消去运算
end
J(k3,k)=0;
end
ifk==N0
break;
end
%==========================================
fork3=k1:
N0
fork2=k1:
N1
J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);%消去运算
end
J(k3,k)=0;
end
else
fork3=k1:
N0
fork2=k1:
N1
J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);%消去运算
end
J(k3,k)=0;
end
end
end
%====上面是用线性变换方式将Jacobi矩阵化成单位矩阵=====
fork=3:
2:
N0-1
L=(k+1)./2;
e(L)=e(L)-J(k,N);%修改节点电压实部
k1=k+1;
f(L)=f(L)-J(k1,N);%修改节点电压虚部
end
%------修改节点电压-----------
fork=3:
N0
DET=abs(J(k,N));
ifDET>=pr%电压偏差量是否满足要求
IT2=IT2+1;%不满足要求的节点数加1
end
end
ICT2(a)=IT2;
ICT1=ICT1+1;
end
%用高斯消去法解"w=-J*V"
disp('迭代次数:
');
disp(ICT1);
disp('没有达到精度要求的个数:
');
disp(ICT2);
fork=1:
n
V(k)=sqrt(e(k)^2+f(k)^2);
sida(k)=atan(f(k)./e(k))*180./pi;
E(k)=e(k)+f(k)*j;
end
%===============计算各输出量===========================
disp('各节点的实际电压标幺值E为(节点号从小到大排列):
');
disp(E);
EE=E*UB;
disp(EE);
disp('-----------------------------------------------------');
disp('各节点的电压大小V为(节点号从小到大排列):
');
disp(V);
VV=V*UB;
disp(VV);
disp('-----------------------------------------------------');
disp('各节点的电压相角sida为(节点号从小到大排列):
');
disp(sida);
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('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
SS=S*SB;
disp(SS);
disp('-----------------------------------------------------');
disp('各条支路的首端功率Si为(顺序同您输入B1时一致):
');
fori=1:
nl
p=B1(i,1);q=B1(i,2);
ifB1(i,6)==0
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))));
Siz(i)=Si(p,q);
else
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))));
Siz(i)=Si(p,q);
end
disp(Si(p,q));
SSi(p,q)=Si(p,q)*SB;
ZF=['S(',num2str(p),',',num2str(q),')=',num2str(SSi(p,q))];
disp(ZF);
%disp(SSi(p,q));
disp('-----------------------------------------------------');
end
disp('各条支路的末端功率Sj为(顺序同您输入B1时一致):
');
fori=1:
nl
p=B1(i,1);q=B1(i,2);
ifB1(i,6)==0
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))));
Sjy(i)=Sj(q,p);
else
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))));
Sjy(i)=Sj(q,p);
end
disp(Sj(q,p));
SSj(q,p)=Sj(q,p)*SB;
ZF=['S(',num2str(q),',',num2str(p),')=',num2str(SSj(q,p))];
disp(ZF);
%disp(SSj(q,p));
disp('-----------------------------------------------------');
end
disp('各条支路的功率损耗DS为(顺序同您输入B1时一致):
');
fori=1:
nl
p=B1(i,1);q=B1(i,2);
DS(i)=Si(p,q)+Sj(q,p);
disp(DS(i));
DDS(i)=DS(i)*SB;
ZF=['DS(',num2str(p),',',num2str(q),')=',num2str(DDS(i))];
disp(ZF);
%disp(DDS(i));
disp('-----------------------------------------------------');
end
figure
(1);
subplot(2,2,1);
plot(V);
xlabel('节点号');ylabel('电压标幺值');
gridon;
subplot(2,2,2);
plot(sida);
xlabel('节点号');ylabel('电压角度');
gridon;
subplot(2,2,3);
bar(S);
ylabel('节点注入无功');
gridon;
subplot(2,2,4);
bar(Siz);
ylabel('支路首端无功');
gridon;
A—2最小负荷时的潮流程序
%本程序的功能是用牛顿——拉夫逊法进行潮流计算
%B1矩阵:
1、支路首端号;2、末端号;3、支路阻抗;4、支路对地电纳
%5、支路的变比;6、支路首端处于K侧为1,1侧为0
%B2矩阵:
1、该节点发电机功率;2、该节点负荷功率;3、节点电压初始值
%4、PV节点电压V的给定值;5、节点所接的无功补偿设备的容量
%6、节点分类标号
clear;
n=12;%input('请输入节点数:
n=');
nl=14;%input('请输入支路数:
nl=');
isb=1;%input('请输入平衡母线节点号:
isb=');
pr=0.00001;%input('请输入误差精度:
pr=');
B1=[123.3+11.48i010;
143.87+15.375i010;
165.8+18.8i010;
232.39+34.95i01.021;
451.59+23.3i01.021;
244.67+18.34i010;
672.39+24.35i01.021;
892.39+24.35i01.021;
10112.39+24.35i01.021;
8101.7+11.2i010;
4124.2+13.9i010;
6124.2+14.64i010;
8122.2+13.9i010;
10122.4+15.2i010];
%input('请输入由支路参数形成的矩阵:
B1=');
B2=[0023123101;
00220002;
080+60i220002;
00220002;
080+60i220002;
00220002;
0120+90i220002;
00220002;
0120+90i220002;
00220002;
0120+90i220002;
360023123103];%input('请输入各节点参数形成的矩阵:
B2=');
Y=zeros(n);e=zeros(1,n);f=zeros(1,n);V=zeros(1,n);sida=zeros(1,n);S1=zeros(nl);
%-------修改部分------------
ym=1;
SB=100;UB=220;
%ym=input('您输入的参数是标么值?
(若不是则输入一个不为零的数值)');
ifym~=0
%SB=input('请输入功率基准值:
SB=');
%UB=input('请输入电压基准值:
UB=');
YB=SB./UB./UB;
BB1=B1;
BB2=B2;
fori=1:
nl
B1(i,3)=B1(i,3)*YB;
B1(i,4)=B1(i,4)./YB;
end
disp('B1矩阵B1=');
disp(B1)
fori=1:
n
B2(i,1)=B2(i,1)./SB;
B2(i,2)=B2(i,2)./SB;
B2(i,3)=B2(i,3)./UB;
B2(i,4)=B2(i,4)./UB;
B2(i,5)=B2(i,5)./SB;
end
disp('B2矩阵B2=');
disp(B2)
end
%%%---------------------------------------------------
fori=1:
nl%支路数
ifB1(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));%非对角元
Y(q,p)=Y(p,q);
Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2;%对角元K侧
Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2;%对角元1侧
end
%求导纳矩阵
disp('导纳矩阵Y=');
disp(Y)
%----------------------------------------------------------
G=real(Y);B=imag(Y);%分解出导纳阵的实部和虚部
fori=1:
n%给定各节点初始电压的实部和虚部
e(i)=real(B2(i,3));
f(i)=imag(B2(i,3));
V(i)=B2(i,4);%PV节点电压给定模值
end
fori=1:
n%给定各节点注入功率
S(i)=B2(i,1)-B2(i,2);%i节点注入功率SG-SL
B(i,i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 潮流 计算 程序