203级电力系统分析课程设计.docx
《203级电力系统分析课程设计.docx》由会员分享,可在线阅读,更多相关《203级电力系统分析课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
![203级电力系统分析课程设计.docx](https://file1.bdocx.com/fileroot1/2023-2/8/b5314b04-f739-462a-bd05-35410f892a05/b5314b04-f739-462a-bd05-35410f892a051.gif)
203级电力系统分析课程设计
2015-2016学年第二学期课程设计
电力系统短路故障的计算机
算法程序设计
姓名
学号
班级
指导教师
目录
一、课程设计说明………………………………………………3
二、选择所用计算机语言的理由……………………………3
三、程序主框图、子框图及主要数据变量说明……………4
四、关键程序及程序注释………………………………………7
五、算例的接线图和输入参数以及输出计算结果与分析……9
六、设计体会…………………………………………………12
七、参考资料…………………………………………………12
八、附录(主程序及其注释)……………………………13
电分课设报告
一、课程设计说明
根据所给的电力系统,设计并开发一个电力系统短路电流计算程序,并用算例验证其正确性。
通过本课程设计,深刻理解电力系统短路计算的基本原理和方法巩固店里系统分析课程知识,培养综合应用应用专业知识和计算机的能力。
所谓短路,是指电力系统正常运行情况以外的相与相之间或相与地之间的“短接”。
在电力系统正常运行时,除中性点外,相与相或相与地之间是绝缘的。
如果由于某种原因使其绝缘破坏而构成了通路,我们就称电力系统是发生了短路故障。
在三相系统中,短路故障可分为两大类:
即对称短路(三相短路)和不对称短路(两相短路、两相接地短路、单相接地短路)。
其中三相短路虽然发生的机会较少,但情况严重,又是研究其它短路的基础。
所以我们先研究最简单的三相短路电流的暂态变化规律。
二、选择所用计算机语言的理由
我使用的是第四代计算机语言的MATLAB,利用其丰富的函数资源,它的优点如下:
1)语言简洁紧凑,语法限制不严,程序设计自由度大,可移植性好。
Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入输出和面向对象编程特点。
Matlab以矩阵为基础,不需要预先定义变量和矩阵(包括数组)的维数,可以方便地进行矩阵的算术运算、关系运算和逻辑运算等。
而且Matlab有特殊矩阵专门的库函数,可以高效地求解诸如信号处理、图像处理、控制等问题。
2)运算符、库函数丰富Matlab的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序,每一个工具箱都是为某一类学科专业和应用而定制的。
3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。
4)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。
5)图形功能强大Matlab具有非常强大的以图形化显示矩阵和数组的能力,同时它能给这些图形增加注释并且可以对图形进行标注和打印。
6)界面友好、编程效率高Matlab程序书写形式自由,被称为“草稿式”语言,这是因为其函数名和表达更接近我们书写计算公式的思维表达方式,编写Matlab程序犹如在草稿纸上排列公式与求解问题,因此可以快速地验证工程技术人员的算法。
7)源程序的开放性。
开放性也许是MATLAB最受人们欢迎的特点。
除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。
三、程序主框图、子框图及主要数据变量说明
算法说明:
利用节点阻抗矩阵计算短路电流如图所示,假定系统中的节点f经过过渡阻抗发生短路。
对于正常状态的网络而言,发生短路相当于在故障节点f增加了一个注入电流。
因此,网络中任一节点i的电压可表示为:
由式可见,任一节点电压i的电压都由两项叠加而成。
第一项是当时由网络内所有电源在节点i产生的电压,也就是短路前瞬间正常运行状态下的节点电压,记为。
第二项是当网络中所有电流源都断开,电势源都短接时,仅仅由短路电流在节点i产生的电压。
这两个分量的叠加,就等于发生短路后节点i的实际电压,即
公式二
公式二也适用于故障节点f,于是有
是故障节点f的自阻抗,也称输入阻抗。
方程式含有两个未知量,根据故障的边界条件:
由以上两个方程式解出:
而各节点初始电压
求出
后,节点i电压
为了得到精确计算结果,本程序计算过程中,使用精确算法。
任一支路的电流
对于非变压器支路,令k=1即可。
程序主框图:
其中计算模块包含一个子流程图:
主要数据变量说明:
程序中:
n节点数
f短路节点序号
z任意节点间阻抗矩阵
g_z发电机电抗矩阵
gs发电厂额定容量矩阵
byqy双绕组变压器参数矩阵
byqy3三绕组变压器参数矩阵
sz系统参数矩阵
Z网络节点阻抗矩阵
Y网络节点导纳矩阵
If短路点电流
V网络节点电压矩阵
I网络支路电流矩阵
四、关键程序及程序注释
fori=1:
n%以下生成节点导纳矩阵
forj=1:
n
ifz(i,j)~=0
Y(i,i)=Y(i,i)+1/z(i,j);
end
end
end
%考虑发电机参数影响
forpp=1:
p
i=gz(pp,1);
Y(i,i)=Y(i,i)+1/sqrt(-1)/gz(pp,2);
end
%考虑系统参数影响
forss=1:
s
i=sz(ss,1);
Y(i,i)=Y(i,i)+1/sqrt(-1)/sz(ss,2);
end
fori=1:
n%计算非对角线元素
forj=i+1:
n
ifz(i,j)==0
Y(i,j)=0;
elseY(i,j)=-1/z(i,j);
end
Y(j,i)=Y(i,j);
end
end
%考虑双绕组变压器参数影响
forqq=1:
q2
i=byqy(qq,1);
j=byqy(qq,2);
Y(i,i)=Y(i,i)+1/sqrt(-1)/byqy(qq,4);
Y(j,j)=Y(j,j)+1/sqrt(-1)/byqy(qq,4);
Y(i,j)=Y(i,j)-1/sqrt(-1)/byqy(qq,4);
Y(j,i)=Y(i,j);
end
%考虑三绕组变压器参数影响
forqq3=1:
q3
i=byqy3(qq3,1);
j=byqy3(qq3,2);
p=byqy3(qq3,3);
q=byqy3(qq3,4);
Y(i,i)=Y(i,i)+1/sqrt(-1)/byqy3(qq3,8);
Y(j,j)=Y(j,j)+1/sqrt(-1)/byqy3(qq3,9);
Y(p,p)=Y(p,p)+1/sqrt(-1)/byqy3(qq3,10);
Y(q,q)=Y(q,q)+(1/byqy3(qq3,8)+1/byqy3(qq3,9)+1/byqy3(qq3,10))/1i;
Y(i,q)=Y(i,q)-1/sqrt(-1)/byqy3(qq3,8);
Y(j,q)=Y(j,q)-1/sqrt(-1)/byqy3(qq3,9);
Y(p,q)=Y(p,q)-1/sqrt(-1)/byqy3(qq3,10);
Y(q,i)=Y(i,q);
Y(q,j)=Y(j,q);
Y(q,p)=Y(p,q);
end
Z=inv(Y);
%计算短路点电流
If=1/Z(f,f);
%计算各节点电压
fori=1:
n
V(i)=1-If*Z(i,f);
end
fori=1:
n%计算各支路电流
forj=1:
n
I(i,j)=(V(i)-V(j))/z(i,j);
end
end
五、输入参数,以及输出计算结果与分析
算例接线图
1.输入
节点总数n=10
短路点序号f=4
发电机台数p=4
双绕组变压器数q2=2
系统数s=1
三绕组变压器数q3=1
线路数x=5
具体参数输入
2.输出数据及分析
短路电流大小:
If=-6.412600
Y矩阵如下
32.619048-33.3333330.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
-33.33333328.7975082.6666671.8691590.0000000.0000000.0000000.0000000.0000000.000000
0.0000002.666667-2.6666670.0000000.0000000.0000000.0000000.0000000.0000000.000000
0.0000001.8691590.000000-8.7907066.9215470.0000000.0000000.0000000.0000000.000000
0.0000000.0000000.0000006.921547-20.1129966.7364516.4549980.0000000.0000000.000000
0.0000000.0000000.0000000.0000006.736451-98.98147682.2450250.0000000.0000000.000000
0.0000000.0000000.0000000.0000006.45499882.245025-95.2983376.5983140.0000000.000000
0.0000000.0000000.0000000.0000000.0000000.0000006.598314-10.2346771.8181821.818182
0.0000000.0000000.0000000.0000000.0000000.0000000.0000001.818182-2.6515150.000000
0.0000000.0000000.0000000.0000000.0000000.0000000.0000001.8181820.000000-2.651515
Zif如下
0.516426
0.535359
0.535359
0.197708
0.106525
0.057251
0.060176
0.051292
0.035171
0.035171
各节点电压为:
U1=0.316899
U2=0.331537
U3=0.331537
U4=0.070494
U5=0.000000
U6=0.462564
U7=0.435105
U8=0.518503
U9=0.669831
U10=0.669831
各支路电流I为
0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
0.0000000.0000000.0000000.000000-0.4879300.0000000.0000000.0000000.0000000.000000
0.0000000.0000000.0000000.4879300.0000003.1160392.8086050.0000000.0000000.000000
0.0000000.0000000.0000000.000000-3.1160390.000000-2.2583220.0000000.0000000.000000
0.0000000.0000000.0000000.000000-2.8086052.2583220.0000000.5502820.0000000.000000
0.0000000.0000000.0000000.0000000.0000000.000000-0.5502820.0000000.0000000.000000
0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
实验的结果比较理想,与实际所算出的结果只有微小的误差,已经足以忽略不计了。
六、设计体会
通过对这次电力系统分析课程设计,我对电力系统分析有进一步理解,同时加强计算机实际应用能力的训练。
刚开始进行的时候,感觉到根本无从下手,难度有点偏大,但是经过老师和同学的指导,我从图书馆借来相关的参考书来进行学习。
Matlab虽然之前做电机课设的时候接触过,但是那次我用的是仿真功能,而这次用的是编程功能,在经过看书和实践操作后,我从人机界面的设计,到手动输入,到Y阵的生成,在到保存文件为TXT格式,每一步都要新的学习,每一步都是新的尝试。
在后期的调试,将各个部分组成一个系统的程序,兼顾各个部分的兼容性,可以说实在一次次的尝试与失败中走过来的。
在最后终于成功的那一刻,感觉之前的付出都是值得的。
能够完成这次课程设计离不开老师和同学的帮助,我也会在以后的学习生活中更加努力。
七、参考文献
【1】电力系统分析(上册)何仰赞温增银,华中科技大学出版社,2002
【2】MATLABGUI设计学习手册罗华飞,北京航空航天大学,2011
【3】MATLAB7.6从入门到精通张琨毕靖丛滨,电子工业出版社,2009
【4】精通MATLAB葛哲学,电子工业出版社,2008
八、附录(主程序及其注释)
Sb=100;
Vb=115;
n=str2num(get(handles.jiedian,'String'));
f=str2num(get(handles.duanludian,'String'));
p=str2num(get(handles.fdj,'String'));
q2=str2num(get(handles.byq2,'String'));
s=str2num(get(handles.xt,'String'));
q3=str2num(get(handles.byq3,'String'));
x=str2num(get(handles.xl,'String'));
%手动输入
F=zeros(10,10);
F=str2num(get(handles.jdz,'String'));
G=zeros(10,10);
G=str2num(get(handles.fdjz,'String'));
H=zeros(10,10);
H=str2num(get(handles.fdjs,'String'));
%I=zeros(10,10);
%I=str2num(get(handles.fdjv,'String'));
J=zeros(10,10);
J=str2num(get(handles.byq2z,'String'));
K=zeros(10,10);
K=str2num(get(handles.byqz3,'String'));
L=ones(10,10);
L=str2num(get(handles.xtz,'String'));
globalimagz;
globalz;
globalgz;
globalgs;
globalbyqy;
globalbyqy3;
globalsz;
imagz=zeros(n,n);
z=zeros(n,n);
gz=zeros(p,2);
gs=zeros(p,1);
byqy=zeros(q2,4);
byqy3=zeros(q3,10);
sz=zeros(s,2);
%标幺化线路阻抗
fornn=1:
x
i=F(nn,1);
j=F(nn,2);
imagz(i,j)=F(nn,3)*F(nn,4)*Sb/Vb^2;
imagz(j,i)=imagz(i,j);
end
z=sqrt(-1)*imagz;
%标幺化发电机参数
forpp=1:
p
gz(pp,1)=G(pp,1);
gz(pp,2)=G(pp,2)/H(pp,1)*Sb;
end
%标幺化变压器参数
forqq=1:
q2
byqy(qq,1)=J(qq,1);
byqy(qq,2)=J(qq,2);
byqy(qq,4)=J(qq,4)/100*Sb/J(qq,3);
end
%标幺化三绕组变压器参数
forqq3=1:
q3
byqy3(qq3,1)=K(qq3,1);
byqy3(qq3,2)=K(qq3,2);
byqy3(qq3,3)=K(qq3,3);
byqy3(qq3,4)=K(qq3,4);
byqy3(qq3,8)=1/2*(K(qq3,8)+K(qq3,9)-K(qq3,10))/100*Sb/K(qq3,5);
byqy3(qq3,9)=1/2*(K(qq3,8)+K(qq3,10)-K(qq3,9))/100*Sb/K(qq3,6);
byqy3(qq3,10)=1/2*(K(qq3,10)+K(qq3,9)-K(qq3,8))/100*Sb/K(qq3,7);
end
%标幺化系统阻抗
forss=1:
s
sz(ss,1)=L(ss,1);
sz(ss,2)=Sb/L(ss,2);
end
Y=zeros(n,n);%节点导纳矩阵
V=zeros(n,1);%节点电压矩阵
I=zeros(n,n);%支路电流矩阵
fori=1:
n%以下生成节点导纳矩阵
forj=1:
n
ifz(i,j)~=0
Y(i,i)=Y(i,i)+1/z(i,j);
end
end
end
%考虑发电机参数影响
forpp=1:
p
i=gz(pp,1);
Y(i,i)=Y(i,i)+1/sqrt(-1)/gz(pp,2);
end
%考虑系统参数影响
forss=1:
s
i=sz(ss,1);
Y(i,i)=Y(i,i)+1/sqrt(-1)/sz(ss,2);
end
fori=1:
n%计算非对角线元素
forj=i+1:
n
ifz(i,j)==0
Y(i,j)=0;
elseY(i,j)=-1/z(i,j);
end
Y(j,i)=Y(i,j);
end
end
%考虑双绕组变压器参数影响
forqq=1:
q2
i=byqy(qq,1);
j=byqy(qq,2);
Y(i,i)=Y(i,i)+1/sqrt(-1)/byqy(qq,4);
Y(j,j)=Y(j,j)+1/sqrt(-1)/byqy(qq,4);
Y(i,j)=Y(i,j)-1/sqrt(-1)/byqy(qq,4);
Y(j,i)=Y(i,j);
end
%考虑三绕组变压器参数影响
forqq3=1:
q3
i=byqy3(qq3,1);
j=byqy3(qq3,2);
p=byqy3(qq3,3);
q=byqy3(qq3,4);
Y(i,i)=Y(i,i)+1/sqrt(-1)/byqy3(qq3,8);
Y(j,j)=Y(j,j)+1/sqrt(-1)/byqy3(qq3,9);
Y(p,p)=Y(p,p)+1/sqrt(-1)/byqy3(qq3,10);
Y(q,q)=Y(q,q)+(1/byqy3(qq3,8)+1/byqy3(qq3,9)+1/byqy3(qq3,10))/1i;
Y(i,q)=Y(i,q)-1/sqrt(-1)/byqy3(qq3,8);
Y(j,q)=Y(j,q)-1/sqrt(-1)/byqy3(qq3,9);
Y(p,q)=Y(p,q)-1/sqrt(-1)/byqy3(qq3,10);
Y(q,i)=Y(i,q);
Y(q,j)=Y(j,q);
Y(q,p)=Y(p,q);
end
Z=inv(Y);
%计算短路点电流
If=1/Z(f,f);
%计算各节点电压
fori=1:
n
V(i)=1-If*Z(i,f);
end
fori=1:
n%计算各支路电流
forj=1:
n
I(i,j)=(V(i)-V(j))/z(i,j);
end
end
%全部求模,便于显示
Y=imag(Y);
Z=imag(Z);
If=imag(If);
I=imag(I);
%显示电流、电压等结果
set(handles.If,'String',num2str(If));
set(handles.dianliu,'Data',I);
set(handles.dianya,'Data',V);
set(handles.y,'Data',Y);
set(handles.z,'Data',Z);
n=str2num(get(handles.jiedian,'String'));
f=str2num(get(handles.duanludian,'String'));
p=str2num(get(handles.fdj,'String'));
q=str2num(get(handles.byq2,'String'));
s=str2num(get(handles.xt,'String'));
q3=str2num(get(handles.byq3,'String'));
globalimagz;
globalz;
globalgz;
globalgs;
globalgv;
globalbyqy;
globalbyqy3;
globalsz;
ge=[gzgsgv];
If=str2num(get(handles.If,'String'));
I=get(handles.dianliu,'Data');
V=get(handles.dianya,'Data');
Y=get(handles.y,'Data');
Z=get(handles.z,'Data');
[filename,pathname]=uiputfile({'*.txt','txt-fil