咻咻永远 发表于 2013-5-17 11:12:13

配电系统三相潮流计算 matlab仿真 结果不正确 求解答

各位~~我根据下图的一个系统用Matlab编写了一段程序,是电流型前推回代法的三相配电系统潮流计算,但是现在结果不是我想要的,不收敛。请各位帮我看一下,提提建议。图片见附件了。还有个问题:已知的线路都是三相对称线路的阻抗值,那么线路的阻抗矩阵中的互阻抗应该如何计算,是什么样的形式,应用怎样的公式?这里我不是很清楚。%程序名:qiantuihuitui_I_3.m
%功能:支路电流前推回推法求解潮流
clc
clear all;
%--------------输入网络参数--------------
%1-支路编号,2-首节点,3-尾节点,4-自阻抗,5-尾节点复功率,6-支路性质(1-馈线段支路,2-变压器支路),7-尾节点是否带负荷
DB=[1 1 2 0.000167+j*0.000208 0.42+j*0.31 1 1
    2 2 3 0.000151+j*0.000188 6.15 1 0
    3 2 4 0.000066+j*0.000082 0.38+j*0.29 1 1
    4 2 5 0.000249+j*0.000310 0 1 0
    5 2 6 0.000172+j*0.000215 0 1 0
    6 4 7 0.000156+j*0.000195 6.06 1 0
    7 4 8 0.000162+j*0.000202 6.04 1 0
    8 4 9 0.000345+j*0.000430 0 1 0
    9 4 10 0.000287+j*0.000358 0 1 0
    105 11 0.020563+j*0.321594 0 2 0
    116 12 0.020563+j*0.321594 0 2 0
    129 13 0.020563+j*0.321594 0 2 0
    1310 14 0.020563+j*0.321594 0 2 0
    1411 15 0.000237+j*0.000408 5.72+j*0.12 1 1
    1512 16 0.000237+j*0.000408 5.76+j*0.09 1 1
    1613 17 0.000292+j*0.000502 5.86+j*0.11 1 1
    1714 18 0.000274+j*0.000470 5.81+j*0.14 1 1];
=size(DB);
B=;
C=;
U(:,1)=B(1,1)*C';
U(:,2)=B(1,2)*C';
U(:,3)=B(1,3)*C';
%-------------------求解潮流-----------------
for k=1:15
%   I(:,k)=((DB(:,5).')*(diag(1./U(:,k))))';
for i=n:-1:1
%如果尾节点带恒功率负荷,需计算节点上负荷注入的电流
if DB(i,7)==1
c=DB(i,5)/3;
d=c/U(i+1,(3*k-2));
IL(i,3*k-2)=conj(d);
d=c/U(i+1,3*k-1);
IL(i,3*k-1)=conj(d);
d=c/U(i+1,3*k);
IL(i,3*k)=conj(d);
else
IL(i,3*k-2)=0;
IL(i,3*k-1)=0;
IL(i,3*k)=0;
end
%找出所有与尾节点相连的支路,计算进支电流(末端电流),存IKj
A=(find(DB(:,2)==(i+1)));
if isempty(A)~=1
IKj(i,3*k-2)=IL(i,3*k-2)-sum(IKj(A,3*k-2));
IKj(i,3*k-1)=IL(i,3*k-1)-sum(IKj(A,3*k-1));
IKj(i,3*k)=IL(i,3*k)-sum(IKj(A,3*k));
else
IKj(i,3*k-2)=IL(i,3*k-2);
IKj(i,3*k-1)=IL(i,3*k-1);
IKj(i,3*k)=IL(i,3*k);
end
%计算出支电流(始端电流),存IKi
a=DB(i,2);
b=DB(i,3);
Yi=1/DB(i,4)*eye(3);
if DB(A,6)==1
F=0.5*Yi*[(U(a,3*k-2)+U(b,3*k-2)) (U(a,3*k-1)+U(b,3*k-1)) (U(a,3*k)+U(b,3*k))]'+';
IKi(i,3*k-2)=F(1,1);
IKi(i,3*k-1)=F(2,1);
IKi(i,3*k)=F(3,1);
else
YT=1/real(DB(i,4))+j*(1/imag(DB(i,4)));
YI=YT*eye(3);
YII=YT*eye(3);
YIII=-YT*eye(3);
D=inv(YIII)*(-'-YII*('));
U(a,3*k+1)=D(1,1);
U(a,3*k+2)=D(2,1);
U(a,3*k+3)=D(3,1);
E=YI*'-YIII*';
IKi(i,3*k-2)=E(1,1);
IKi(i,3*k-1)=E(2,1);
IKi(i,3*k)=E(3,1);
end
end
%前推电压
for j=2:n
U(1,3*k-2)=1.02;
U(1,3*k-1)=1.02*(sin(2*pi/3)+j*cos(2*pi/3));
U(1,3*k)=1.02*(sin(4*pi/3)+j*cos(4*pi/3));
a=DB(j-1,2);
if DB(j-1,6)==1
Yi=1/DB(j-1,4)*eye(3);
G1=';
G='-DB(j-1,4)*eye(3)*(G1-0.5*Yi*');
U(j,3*k+1)=G(1,1);
U(j,3*k+2)=G(2,1);
U(j,3*k+3)=G(3,1);
else
YT=1/real(DB(i,4))+j*(1/imag(DB(i,4)));
YI=YT*eye(3);
YII=YT*eye(3);
YIII=-YT*eye(3);
H=inv(YIII)*('-YI*');
U(j,3*k+1)=H(1,1);
U(j,3*k+2)=H(2,1);
U(j,3*k+3)=H(3,1);
end
end
dU1=U(:,3*k+3)-U(:,3*k);
dU2=U(:,3*k+2)-U(:,3*k-1);
dU3=U(:,3*k+1)-U(:,3*k-2);
if (max(abs(dU1))<0.001&&max(abs(dU2))<0.001&&max(abs(dU2))<0.001)
break;
else            
k=k+1;
end
end
U
IL
IKj
IKi
k

redplum 发表于 2013-5-17 14:45:43

我运行了楼主的这段代码,发现最后结果矩阵中很多元素都是Nan或Inf,是不是潮流计算阻抗矩阵中多数情况是这样的,还是不应该很多元素是NaN或Inf

咻咻永远 发表于 2013-5-18 08:05:22

回复 2# redplum


    不应该是这样的,这是一个迭代计算,结果不收敛,所以还是哪个环节有问题,但是我还没有找到。

redplum 发表于 2013-5-18 13:43:28

这段代码的原始数据有17行7列,K=1:15计算了15次循环。建议将数据弄少一些,这样才能更好判断到底是哪里不收敛

咻咻永远 发表于 2013-5-21 16:38:26

回复 4# redplum
就是即使我弄成迭代次数为2,结果也不啊~~

魏丹 发表于 2014-6-17 20:04:48

这个问题解决了吗 求答案~
页: [1]
查看完整版本: 配电系统三相潮流计算 matlab仿真 结果不正确 求解答

招聘斑竹