📄 b.m
字号:
clear;
node=input('请输入网络节点个数:');
e_pre=input('请输入预期精度(小于1):');
sn=input('请输入容量基准值(MW):');
u_n=input('请输入电压基准值(kV):');
mt=input('请输入运行方式(最大->1,最小->0.8)')
display('开始导入关联导纳矩阵...');
g=csvread('d.txt');
g=g*(u_n^2)/sn,
b=csvread('n.txt');
b=b*(u_n^2)/sn,
y=g+j*b,
display('关联导纳矩阵导入成功!');
num=node-1;
display('开始导入PQ矩阵...');
p=csvread('p.txt');
p=p*mt/sn,
q=csvread('q.txt');
q=q*mt/sn,
display('PQ矩阵导入成功!');
delt(1:node)=0;
u(1:num)=1;
display('请输入平衡节点电压(标幺值):')
cons_bal=input('');
k=0;
pre=1;
sl=1;
while pre>e_pre
delt(node)=0;
u(node)=cons_bal;
for m=1:num
for n=1:node
pt(n)=u(m)*u(n)*(g(m,n)*cos(delt(m)-delt(n))+b(m,n)*sin(delt(m)-delt(n)));
qt(n)=u(m)*u(n)*(g(m,n)*sin(delt(m)-delt(n))-b(m,n)*cos(delt(m)-delt(n)));
end
pp(m)=p(m)-sum(pt);
qq(m)=q(m)-sum(qt);
end
for m=1:num
for n=1:node
Hz(n)=u(m)*u(n)*(g(m,n)*sin(delt(m)-delt(n))-b(m,n)*cos(delt(m)-delt(n)));
Nz(n)=-u(m)*u(n)*(g(m,n)*cos(delt(m)-delt(n))+b(m,n)*sin(delt(m)-delt(n)));
Jz(n)=-u(m)*u(n)*(g(m,n)*cos(delt(m)-delt(n))+b(m,n)*sin(delt(m)-delt(n)));
Lz(n)=-u(m)*u(n)*(g(m,n)*sin(delt(m)-delt(n))-b(m,n)*cos(delt(m)-delt(n)));
end
H(m,m)=sum(Hz)-u(m)^2*(g(m,m)*sin(delt(m)-delt(m))-b(m,m)*cos(delt(m)-delt(m)));
N(m,m)=sum(Nz)-2*u(m)^2*g(m,m)+u(m)^2*(g(m,m)*cos(delt(m)-delt(m))+b(m,m)*sin(delt(m)-delt(m)));
J(m,m)=sum(Jz)+u(m)^2*(g(m,m)*cos(delt(m)-delt(m))+b(m,m)*sin(delt(m)-delt(m)));
L(m,m)=sum(Lz)+2*u(m)^2*b(m,m)+u(m)^2*(g(m,m)*sin(delt(m)-delt(m))-b(m,m)*cos(delt(m)-delt(m)));
end
for m=1:num
JJ(2*m-1,2*m-1)=H(m,m);
JJ(2*m-1,2*m)=N(m,m);
JJ(2*m,2*m-1)=J(m,m);
JJ(2*m,2*m)=L(m,m);
end
for m=1:num
for n=1:num
if(m==n)
else H(m,n)=-u(m)*u(n)*(g(m,n)*sin(delt(m)-delt(n))-b(m,n)*cos(delt(m)-delt(n)));
J(m,n)=u(m)*u(n)*(g(m,n)*cos(delt(m)-delt(n))+b(m,n)*sin(delt(m)-delt(n)));
N(m,n)=-J(m,n);
L(m,n)=H(m,n);
JJ(2*m-1,2*n-1)=H(m,n);
JJ(2*m-1,2*n)=N(m,n);
JJ(2*m,2*n-1)=J(m,n);
JJ(2*m,2*n)=L(m,n);
end
end
end
for m=1:num
cpp(2*m-1)=pp(m);
cpp(2*m)=qq(m);
end
uu=-inv(JJ)*cpp';
pre=max(abs(uu));
for n=1:num
delt(n)=delt(n)+uu(2*n-1);
u(n)=u(n)+uu(2*n);
end
k=k+1;
if(k>node^2*100)
display('结果不收敛!')
sl=0;
break;
end
end
if(sl==1)
display('节点电压计算完毕!')
display('迭代次数:')
k=k-1,
display('各节点相角:')
delt',
display('各节点电压:')
u',
for n=1:node
cu(n)=u(n)*(cos(delt(n))+j*sin(delt(n)));
end
for m=1:node
I(m)=y(node,m)*cu(m);
end
display('平衡节点容量')
s_bal=cu(node)*sum(conj(I)),
for m=1:node
for n=1:node
s(m,n)=cu(m)*(conj(cu(m))-conj(cu(n)))*conj(-y(m,n));
end
end
display('潮流分布计算完毕!')
s,
csvwrite('节点电压.txt',u');
csvwrite('功率分布.txt',s);
csvwrite('电压角度.txt',delt');
display('对应结果保存成功!')
else
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -