基于matlab 的电力系统潮流仿真计算毕业论文
潮流计算是电力系统的一项重要分析功能,是进行故障计算,继电保护整定,安全分析的必要工具。传统的潮流计算程序缺乏图形用户界面,结果显示不直观,难于与其他分析功能集成。网络原始数据输入工作量大且易于出错。随着计算机技术的飞速发展,MICROSOFT WINDOWS操作系统早已被大家所熟悉,其友好的图形用户界面已成为PC机的标准,而DOS操作系统下的应用程序因其界面不够友好,开发具有WINDOWS风格界面的电力系统分析软件已成为当前的主流趋势。另外,传统的程序设计方法是结构化程序设计方法,该方法基于功能分解,把整个软件工程看作是一个个对象的组合,由于对某个特定问题域来说,该对象组成基本不变,因此,这种基于对象分解方法设计的软件结构上比较稳定,易于维护和扩充。本文介绍了图形化潮流计算软件的开发设计思想和总体结构,阐述了该软件所具备的功能和特点。结合电力系统的特点,软件采用 MATLAB语言运行于WINDOWS操作系统的图形化潮流计算软件。本系统的主要特点是操作简单,图形界面直观,运行稳定.计算准确。计算中,算法做了一些改进,提高了计算速度,各个类的有效封装又使程序具有很好的模块性.可维护性和可重用性。
电力工业发展初期,电能是直接在用户附近的发电站(或称发电厂)中生产的,各发电站孤立运行。随着工农业生产和城市的发展,电能的需要量迅速增加,而热能资源(如煤田)和水能资源丰富的地区又往往远离用电比较集中的城市和工矿区,为了解决这个矛盾,就需要在动力资源丰富的地区建立大型发电站,然后将电能远距离输送给电力用户。同时,为了提高供电可靠性以及资源利用的综合经济性,又把许多分散的各种形式的发电站,通过送电线路和变电所联系起来。这种由发电机、升压和降压变电所,送电线路以及用电设备有机连接起来的整体,即称为电力系统。
电力系统加上发电机的原动机(如汽轮机、水轮机),原动机的力能部分(如热力锅炉、水库、原子能电站的反应堆)、供热和用热设备,则称为动力系统。
现代电力系统提出了“灵活交流输电与新型直流输电”的概念。灵活交流输电技术是指运用固态电子器件与现代自动控制技术对交流电网的电压、相位角、阻抗、功率以及电路的通断进行实时闭环控制,从而提高高压输电线路的输送能力和电力系统的稳定水平。新型直流输电技术是指应用现电力电子技术的最新成果,改善和简化变流站的造价等。
运行方式管理中,潮流是确定电网运行方式的基本出发点;在规划领域,需要进行潮流分析验证规划方案的合理性;在实时运行环境,调度员潮流提供了电网在预想操作情况下电网的潮流分布以校验运行可靠性。在电力系统调度运行的多个领域都涉及到电网潮流计算。潮流是确定电力网络运行状态的基本因素,潮流问题是研究电力系统稳态问题的基础和前提。
电力系统潮流计算是研究电力系统稳态运行情况的一种计算,它根据给定的运行条件及系统接线情况确定整个电力系统各部分的运行状态:各母线的电压,各元件中流过的功率,系统的功率损耗等等。在电力系统规划的设计和现有电力系统运行方式的研究中,都需要利用潮流计算来定量地分析比较供电方案或运行方式的合理性。可靠性和经济性。此外,电力系统潮流计算也是计算系统动态稳定和静态稳定的基础。所以潮流计算是研究电力系统的一种很重要和基础的计算。
电力系统潮流计算也分为离线计算和在线计算两种,前者主要用于系统规划设计和安排系统的运行方式,后者则用于正在运行系统的经常监视及实时控制。
利用电子数字计算机进行电力系统潮流计算从50年代中期就已经开始。在这20年内,潮流计算曾采用了各种不同的方法,这些方法的发展主要围绕着对潮流计算的一些基本要求进行的。对潮流计算的要求可以归纳为下面几点:
(1)计算方法的可靠性或收敛性;
(2)对计算机内存量的要求;
(3)计算速度;
(4)计算的方便性和灵活性。
电力系统潮流计算问题在数学上是一组多元非线性方程式求解问题,其解法都离不开迭代。因此,对潮流计算方法,首先要求它能可靠地收敛,并给出正确答案。由于电力系统结构及参数的一些特点,并且随着电力系统不断扩大,潮流计算的方程式阶数也越来越高,对这样的方程式并不是任何数学方法都能保证给出正确答案的。这种情况成为促使电力系统计算人员不断寻求新的更可靠方法的重要因素。
牛顿—拉夫逊法潮流计算程序
%本程序的功能是用 牛顿--拉夫逊法进行潮流计算
n=input('请输入节点数:n=');
n1=input('请输入支路数:n1=');
isb=input('请输入平衡母线节点号:isb=');
pr=input('请输入误差精度:pr=');
B1=input('请输入由支路参数形成的矩阵:B1=');
B2=input('请输入各节点参数形成的矩阵:B2=');
X=input('请输入由节点参数形成的矩阵:X=');
Y=zeros(n);e=zeros(1,n);f=zeros(1,n);V=seros(1,n);O=zeros(1,n);S1=zeros(n1);
for i=1:n
if X(i,2)~=0;
p=X(i,1);
Y(p,p)=1./X(i,2);
end
end
for i=1:n1
if B1(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(p,q)=Y(p,q);
Y(p,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2;
Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2;
end %求导纳矩阵
G=real(Y);B=imag(Y);
for i=1:n
e(i)=real(B2(i,3));
f(i)=imag(B2(i,3));
V(i)=B2(i,4);
end
for i=1:n
S(i)=B2(i,1)-B2(i,2);
B(i,i)=B(i,i)+B2(i,5);
end
P=rea(S);Q=imag(S);
ICT1=0;IT2=1;NO=2*n;N=NO+1;a=0;
while IT2~=0
IT2=0;a=a+1;
for i=1:n;
if i~=isb
C(i)=0;
D(i)=0;
for j1=1:n
C(i)=C(i)+G(i,j1)*e(j1)-B(i,j1)*f(j1);
D(i)=D(i)+G(i,j1)*f(j1)+B(i,j1)*e(j1);
end
P1=C(i)*e(i)+f(i)*D(i);
Q1=f(i)*C(i)-D(i)*e(i); %求'P,Q'
V2=e(i)^2+f(i)^2;
if B2(i,6)~=3
DP=P(i)-P1;
DQ=Q(i)-Q1;
for j1=1:n
if j1~=isb&j1~=i
X1=-G(i,j1)*e(i)-B(i,j1)*f(i);
X2=B(i,j1)*e(i)-G(i,j1)*f(i);
X3=X2;
X4=-X1;
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;
end
end
else
DP=P(i)-P1;
DV=V(i)~2-V2;
for j1=1:n
if j1~=isb&j1~=i
X1=-G(i,j1)*e(i)-B(i,j1)*f(i);
X2=B(i,j1)*e(i)-G(i,j1)*f(i);
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;
elseif j1==i&j1~=isb
X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);
X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);
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 %求雅可比矩阵
for k=3:N0
k1=k+1;N1=N;
for k2=k1:N1
J(k,k2)=J(k,k2)./J(k,k);
end
J(k,k)=1;
if k~=3
k4=k-1;
for k3=3:k4
for k2=k1:N1
J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);
end
J(k3,k)=0;
end
end
for k3=k1:N0
for k2=k1:N1
J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);
end
J(k3,k)=0;
end
end
end
for k=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
for k=3:N0
DET=abs(J(k,N));
if DET>=pr
IT2=IT2+1
end
end
ICT2(a)=IT2
ICT1=ICT1+1;
for k=1:n
dy(k)=sqrt(e(k)^2+f(k)^2);
end
for i=1:n
Dy(k)=sqrt(e(k)^2+f(k)^2);
end
for i=1:n
Dy(ICT1,i)=dy(i);
end
end %用高斯消去法解“w=-J*V”
disp('迭代次数');
disp(ICT1);
disp('没有达到精度要求的个数');
disp(ICT2);
for k=1:n
V(k)=sqrt(e(k)^2+f(k)^2);
O(k)=atan(f(k)./e(k))*180./pi;
end
E=e+f*j;
disp('各节点的实际电压标么值E为(节点号从小到大的排列):');
disp(E);
disp('各节点的电压大小V为(节点号从小到大的排列):');
disp(V);
disp('各节点的电压相角O为(节点号从小到大的排列):');
disp(O);
for p=1:n
C(p)=0;
for q=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('各条支路的首端功率Si为(顺序同您输入B1时一样):‘);
for i=1:n1
if B1(i,6)==0
p=B1(i,1);q=B1(i,2);
else p=B1(i,2);q=B1(i,1);
end
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))));
disp(Si(p.q));
end
disp('各条支路的末端功率Sj为(顺序同您的输入B1时一样):‘);
for i=1:n1
if B1(i,6)==0
p=B1(i,1);q=B1(i,2);
else p=B1(i,2);q=B1(i,1);
end
Sj(q,p)=E(q)*(conj(E(q))*conj(B1(i,4)./2)+(xonj(E(q)./B1(i,5))-conj(E(p)))*xonj(1./(B1(i,3)*B1(i,5))));
disp(Sj(q,p));
end
disp('各条支路的功率损耗DS为(顺序同您输入B1时一样):’);
for i=1:n1
if B1(i,6)==0
p=B1(i,1);q=B1(i,2);
else p=B1(i,2);q=B1(i,1);
end
DS(i)=Si(p,q)+Sj(q,p);
disp(DS(i));
end
for i=1:ICT1
Cs(i)=i;
end
disp('以下是每次迭代后各节点的电压值(如图所示)‘);
plot(Cs,Dy),xlabel('迭代次数’),ylabel('电压'),title('电压迭代次数曲线');