matlab电力系统快速解耦法潮流计算及短路计算程序.docx
- 文档编号:27904129
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:7
- 大小:55.01KB
matlab电力系统快速解耦法潮流计算及短路计算程序.docx
《matlab电力系统快速解耦法潮流计算及短路计算程序.docx》由会员分享,可在线阅读,更多相关《matlab电力系统快速解耦法潮流计算及短路计算程序.docx(7页珍藏版)》请在冰豆网上搜索。
matlab电力系统快速解耦法潮流计算及短路计算程序
电力系统快速解耦法潮流分析及短路计算
一.程序设计的基本思想:
(1)由于电力系统潮流分析中要利用到矩阵运算,复数运算,故采用matlab编程。
采用文件输入,将系统的各个参数以文件的形式输入,便于程序的通用化。
(2)本程序共有两个输入文件,分别为线路参数的文件,和已知的节点状态文件(PQ)
(3)为了使程序不仅仅局限于计算9节点网络,在形成节点导纳的函数Yn()中,利用循环,找出线路首节点中的最大编号数,自动确定节点导纳矩阵的维数。
故对于任意n节点网络,均可以计算出节点导纳矩阵
(4)在(3)的前提下,为了使程序支持系统增加节点,增加负荷等造成的PQ参数改变,或者PQ表的加长。
对程序做了如下优化。
首先,程序执行的基础是PQ表中平衡节点在第一行,接下来是PV节点,最后是PQ节点,如果系统添加节点,或者删除节点,均在PQ表的末端操作,会造成PQ表的顺序不是平衡节点、PV节点、PQ节点的顺序。
故引入了seqencing()函数,其作用就是不论输入的PQ表是什么顺序,在程序读入后均按平衡-PV-PQ的顺序排列。
其次,顺序打乱的PQ表必须与支路参数表对应,故在Yn()函数中加入了两段循环体,使之对应(见相应函数体注释)
(5) 在满足了上述4个条件后,程序便可以通用化了。
当然,由于水平有限,且程序未能由大量数据测试,故缺陷在所难免,这里仅是做了通用化的尝试。
在本文最末附加了该程序通用化的实例。
二、潮流计算框图
三.定义相应的函数
1.形成节点导纳矩阵的函数Yn()
functionY=Yn(x,y)
%定义一名为Yn的函数,其功能是自动识别输入表中节点的个数,形成相应的节点导纳矩阵
[fid,message]=fopen(x,'r') ; %从x文件中读入支路参数
iffid==-1; %判断文件是否正确打开
error(message);
end;
[HeadPoint,HeadNumber,EndPoint,EndNumber,R,X,B,k]=textread(x,'%s%d%s%d%f%f%f%f');
%将读入的参数处理为以列为向量的数组
fclose(fid);%关闭文件
L=length(HeadNumber); %确定输入表的行数
[Pointstyle,PointNumber,Ps,Qs,Uk,Ok]=seqencing(y);
%调用seqencing函数,引入y文件中的PQ参数
A=PointNumber;
fori=1:
L; %通过以下两循环体,实现PQ参数与支路参数的编号对应
forj=1:
L;
ifHeadNumber(i)==j;
HeadNumber(i)=A(j);
break;
end;
end;
end;
fori=1:
L;
forj=1:
L;
ifEndNumber(i)==j;
EndNumber(i)=A(j);
break;
end;
end;
end;
Y=zeros(L,L); %根据txt文件中数据表的长度建立空的节点导纳矩阵
fori=1:
L
m=HeadNumber(i);n=EndNumber(i);
ifk(i)==0; %判断是否何种元件,为输电线元件
ifn~=0;
Y(m,m)=Y(m,m)+1j*B(i)+1/(R(i)+1j*X(i));
Y(n,n)=Y(n,n)+1j*B(i)+1/(R(i)+1j*X(i));
Y(m,n)=Y(m,n)-1/(R(i)+1j*X(i));
Y(n,m)=Y(n,m)-1/(R(i)+1j*X(i));
else
Y(m,m)=Y(m,m)+R(i)+1j*X(i);
end;
else %为变压器元件
ifn~=0;
Y(m,m)=Y(m,m)+1/(R(i)+1j*X(i));
Y(m,n)=Y(m,n)-1/(k(i)*(R(i)+1j*X(i)));
Y(n,n)=Y(n,n)+1/(k(i)*k(i)*(R(i)+1j*X(i)));
Y(n,m)=Y(n,m)-1/(k(i)*(R(i)+1j*X(i)));
else
Y(m,m)=Y(m,m)+R(i)+1j*X(i);
end;
end;
end;
maxm=HeadNumber
(1);
%通过下面两个循环体,确定输入表中节点编号的最大值,及为节点导纳矩阵的维数
fori=1:
L;
ifmaxm<=HeadNumber(i);
maxm=HeadNumber(i);
end;
end;
maxn=EndNumber
(1);
fori=1:
L;
ifmaxn<=EndNumber(i);
maxn=EndNumber(i);
end;
end;
Y=Y(1:
max(maxm,maxn),1:
max(maxm,maxn));%形成导纳矩阵
2.对不满足要求的PQ参数表进行排序的函数seqencing()
function[Pointstyle,PointNumber,Ps,Qs,Uk,Ok]=seqencing(y)
%定义名为seqencing的函数,其功能是在系统添加节点,或输入的PQ参数的顺序不满足要求时,对PQ参数表进行重新排序,保证平衡节点放在第一行,接下来是PV节点,最后是PQ节点
[fid,message]=fopen(y,'r'); %从y文件中读入PQ参数
iffid==-1; %判断文件是否正确打开
error(message);
end;
[Pointstyle,PointNumber,Ps,Qs,Uk,Ok]=textread(y,'%f%f%f%f%f%f');
fclose(fid);
L=length(PointNumber);
%通过以下两个循环体,完成对PQ输入表的重新排序,其思想是,在PQ参数之前加入一列Pointstyle用于标识节点类型,平衡节点为0,PV节点为1,PQ节点为2,以Pointstyle列为基准进行排序
fori=1:
L;
forj=1:
L-i;
ifPointstyle(j)>Pointstyle(j+1);
t=Pointstyle(j+1);
Pointstyle(j+1)=Pointstyle(j);
Pointstyle(j)=t;
t=PointNumber(j+1);
PointNumber(j+1)=PointNumber(j);
PointNumber(j)=t;
t=Ps(j+1);
Ps(j+1)=Ps(j);
Ps(j)=t;
t=Qs(j+1);
Qs(j+1)=Qs(j);
Qs(j)=t;
t=Uk(j+1);
Uk(j+1)=Uk(j);
Uk(j)=t;
end;
end;
end;
3、形成解耦算法B’矩阵的函数 formB1()
functionB1=formB1(x,y)
%定义名为B1的函数形成解耦算法中的B’矩阵,得到的B’矩阵用B1表示
[fid,message]=fopen(x,'r'); %从x文件中读入支路参数
iffid==-1; %判断文件是否正确打开
error(message);
end;
[HeadPoint,HeadNumber,EndPoint,EndNumber,R,X,B,k]=textread(x,'%s%d%s%d%f%f%f%f'); %将读入的参数处理为以列为向量的数组
fclose(fid);
L=length(HeadNumber);
[Pointstyle,PointNumber,Ps,Qs,Uk,Ok]=seqencing(y);
%调用seqencing函数,引入y文件中的PQ参数
A=PointNumber;
%通过以下两循环体,实现PQ参数与支路参数的编号对应
fori=1:
L;
forj=1:
L;
ifHeadNumber(i)==j;
HeadNumber(i)=A(j);
break;
end;
end;
end;
fori=1:
L;
forj=1:
L;
ifEndNumber(i)==j;
EndNumber(i)=A(j);
break;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 电力系统 快速 解耦法 潮流 计算 短路 程序