电力系统分析课程设计报告.docx
- 文档编号:29716615
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:37
- 大小:410.48KB
电力系统分析课程设计报告.docx
《电力系统分析课程设计报告.docx》由会员分享,可在线阅读,更多相关《电力系统分析课程设计报告.docx(37页珍藏版)》请在冰豆网上搜索。
电力系统分析课程设计报告
课程设计
电力系统短路故障的计算机
算法程序设计
姓名
学号
班级
指导教师
一、课程设计说明……………………………………………3
二、选择所用计算机语言的理由……………………………3
三、程序主框图、子框图及主要数据变量说明……………4
四、三道计算题及网络图…………………………………8
五、设计体会…………………………………………………15
六、参考文献…………………………………………………16
七、附录(主程序及其注释)………………………………17
电分课设报告
一、课程设计说明
根据所给的电力系统,编制短路电流计算程序,通过计算机进行调试,最后完成一个切实可行的电力系统计算应用程序。
通过自己设计电力系统计算程序使同学对电力系统分析有进一步理解,同时加强计算机实际应用能力的训练。
所谓短路,是指电力系统正常运行情况以外的相与相之间或相与地之间的“短接”。
在电力系统正常运行时,除中性点外,相与相或相与地之间是绝缘的。
如果由于某种原因使其绝缘破坏而构成了通路,我们就称电力系统是发生了短路故障。
在三相系统中,短路故障可分为两大类:
即对称短路(三相短路)和不对称短路(两相短路、两相接地短路、单相接地短路)。
其中三相短路虽然发生的机会较少,但情况严重,又是研究其它短路的基础。
所以我们先研究最简单的三相短路电流的暂态变化规律。
二、选择所用计算机语言的理由
我使用的是第四代计算机语言的MATLAB,利用其丰富的函数资源,它的优点如下:
1)语言简洁紧凑,使用方便灵活,库函数极其丰富。
MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。
由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。
可以说,用MATLAB进行科技开发是站在专家的肩膀上。
2)运算符丰富。
由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。
3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。
4)程序限制不严格,程序设计自由度大。
例如,在MATLAB里,用户无需对矩阵预定义就可使用。
5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。
6)MATLAB的图形功能强大。
在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。
MATLAB还具有较强的编辑图形界面的能力。
7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。
由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
8)功能强大的工具箱是MATLAB的另一特色。
MATLAB包含两个部分:
核心部分和各种可选的工具箱。
核心部分中有数百个核心内部函数。
其工具箱又分为两类:
功能性工具箱和学科性工具箱。
功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。
功能性工具箱用于多种学科。
而学科性工具箱是专业性比较强的,如control,toolbox,signlproceessingtoolbox,commumnicationtoolbox等。
这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高,精,尖的研究。
9)源程序的开放性。
开放性也许是MATLAB最受人们欢迎的特点。
除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。
三、程序主框图、子框图及主要数据变量说明
算法说明:
利用节点阻抗矩阵计算短路电流如图所示,假定系统中的节点f经过过渡阻抗发生短路。
对于正常状态的网络而言,发生短路相当于在故障节点f增加了一个注入电流。
因此,网络中任一节点i的电压可表示为:
由式可见,任一节点电压i的电压都由两项叠加而成。
第一项是当时由网络内所有电源在节点i产生的电压,也就是短路前瞬间正常运行状态下的节点电压,记为。
第二项是当网络中所有电流源都断开,电势源都短接时,仅仅由短路电流在节点i产生的电压。
这两个分量的叠加,就等于发生短路后节点i的实际电压,即
公式二
公式二也适用于故障节点f,于是有
是故障节点f的自阻抗,也称输入阻抗。
方程式含有两个未知量,根据故障的边界条件:
由以上两个方程式解出:
而各节点初始电压
求出
后,节点i电压
为了得到精确计算结果,本程序计算过程中,使用精确算法。
任一支路的电流
对于非变压器支路,令k=1即可。
程序主框图:
其中计算模块包含一个子流程图:
主要数据变量说明:
程序中:
n节点数
f短路节点序号
z任意节点间阻抗矩阵
g_z发电厂阻抗矩阵
g_v发电厂电压矩阵
louy网络漏抗导纳矩阵
Z网络节点阻抗矩阵
Y网络节点导纳矩阵
If短路点电流
V网络节点电压矩阵
I网络支路电流矩阵
A文件导入时存入的矩阵名称
p发电机阻抗矩阵存放在A中的行序号,所以p-1就是发电机台数
Q漏抗导纳矩阵存放在A中的行序号,所以q-1就是漏抗数
四、三道计算题及网络图
①例题6-3
其中3号节点发生三相短路。
输入数据及说明:
节点总数n=5
短路节点序号f=3
输入节点间阻抗矩阵
Inf
0.1050
Inf
Inf
Inf
0.1050
Inf
0.0650
0.0800
Inf
Inf
0.0650
Inf
0.0500
Inf
Inf
0.0800
0.0500
Inf
0.1840
Inf
Inf
Inf
0.1840
Inf
z=j*
发电机阻抗矩阵(第一列是发电厂节点序号,第二列是发电厂阻抗,第三列为发电厂电压)
1
0.1500
1
5
0.2200
1
g_z=
输出数据及说明:
短路点电流
-5.3767
各支路电流矩阵
0
3.2321
0
0
0
-3.2321
0
2.7046
0.5275
0
0
-2.7046
0
-2.6720
0
0
-0.5275
2.6720
0
-2.1445
0
0
0
2.1445
0
I=j*
各节点电压矩阵
0.5152
0.1758
0
0.1336
0.5282
V=
-16.1905
9.5238
0
0
0
9.5238
-37.4084
15.3846
12.5000
0
0
15.3846
-35.3846
20
0
0
12.5000
20
-37.9348
5.4348
0
0
0
5.4348
-9.9802
节点导纳矩阵
Y=j*
0.1181
0.0958
0.0902
0.0858
0.0467
0.0958
0.1629
0.1533
0.1459
0.0794
0.0902
0.1533
0.1860
0.1611
0.0877
0.0858
0.1459
0.1611
0.1729
0.0941
0.0467
0.0794
0.0877
0.0941
0.1515
节点阻抗矩阵
Z=j*
软件界面显示
(打码处遮挡为一个edittext,里面可以默认放置姓名班级学号信息)
②习题6-10
其中节点5发生三相短路
输入数据及说明:
节点总数n=5
短路节点序号f=5
Inf
Inf
0.1050
Inf
Inf
Inf
Inf
Inf
0.2100
Inf
0.1050
Inf
Inf
0.4355
0.2904
Inf
0.2100
0.4355
Inf
0.2541
Inf
Inf
0.2904
0.2541
Inf
输入节点间阻阵
z=j*
发电机阻抗矩阵(第一列是发电厂节点序号,第二列是发电厂阻抗,第三列为发电厂电压)
1
0.2300
1.0500
2
0.2800
1.0500
g_z=
漏导纳矩阵(第一列为漏导纳节点号,第二列为漏导纳数值)
3
0.0309
5
0.0231
4
0.0293
louy=
输出数据及说明:
短路点电流
-3.1263
各支路电流矩阵
0
0
-1.7516
0
0
0
0
0
-1.3491
0
1.7516
0
0
-0.1705
-1.5953
0
1.3491
0.1705
0
-1.5310
0
0
1.5953
1.5310
0
I=j*
各节点电压矩阵
0.6471
0.6723
0.4632
0.3890
0
V=
-13.8716
0
9.5238
0
0
0
-8.3333
0
4.7619
0
9.5238
0
-15.2330
2.2960
3.4440
0
4.7619
2.2960
-10.9647
3.9361
0
0
3.4440
3.9361
-7.3569
节点导纳矩阵
Y=j*
节点阻抗矩阵
0.1819
0.0616
0.1600
0.1079
0.1326
0.0616
0.2078
0.0898
0.1536
0.1242
0.1600
0.0898
0.2330
0.1571
0.1932
0.1079
0.1536
0.1571
0.2689
0.2174
0.1326
0.1242
0.1932
0.2174
0.3427
Z=j*
软件界面显示
③习题6-11
其中节点3发生三相短路。
输入数据及说明:
节点总数n=3
短路节点序号f=3
输入节点间阻抗矩阵
Inf
0.2000
Inf
0.2000
Inf
0.1000
Inf
0.1000
Inf
z=j*
发电机阻抗矩阵(第一列是发电厂节点序号,第二列是发电厂阻抗,第三列为发电厂电压)
1
0.2000
1.0500
3
0.1500
1.0500
g_z=
漏导纳矩阵(第一列为漏导纳节点号,第二列为漏导纳数值)
2
0.5000
3
-1
louy=
输出数据及说明:
短路点电流
-9.1875
各支路电流矩阵
0
-2.0781
0
2.0781
0
-2.1875
0
2.1875
0
I=j*
各节点电压矩阵
0.6344
0.2187
0
V=
节点导纳矩阵
-10
5
0
5
-14.5000
10
0
10
-17.6667
Y=j*
节点阻抗矩阵
0.1394
0.0789
0.0446
0.0789
0.1577
0.0893
0.0446
0.0893
0.1071
Z=j*
软件界面显示
五、设计体会
这次电分课设的主题是电力系统短路故障的计算机算法程序设计,我选择了对称短路计算来研究。
经过不懈努力与完善,最终形成的可执行文件可以对各种简单电力网络的对称短路故障进行分析计算,取得了较为满意的效果。
我编写了9个回流函数,分别执行不同的功能:
1.读取函数select_file:
读取.csv文件,读取成功有提示。
确定参数矩阵后,在右上侧显示各种已知参数。
各种读取结果申公共。
2.计算函数calculate_start:
精确算法,计算完毕将结果显示在右下侧。
各种计算结果申公共。
3.导入函数input1:
可任意修改短路点序号、小z矩阵,支持报错功能。
手动导入过程人性化,可以下标自动加1。
4.导入函数input2:
可任意修改发电厂矩阵,支持报错功能。
同样,下标也能自动加1。
5.导入函数input3:
可以任意修改漏抗导纳矩阵,下标也能自动加1.
通过以上三个导入函数,还能实现不导入文件,完全手动输入所有参数。
6.存储函数save_result_csv:
以文件形式存储短路计算结果,仍以工程上常用的.csv文件保存。
7.存储函数save_result_txt:
详细地以文本形式,记录网络参数与短路计算结果,汉字说明与数字结果夹杂混排。
8.重置函数clear_all:
重置所有矩阵和显示框,将程序复位到最初状态。
9.点选函数setHvisible以及附带的pushbutton1-3:
可以自由切换I、Y、Z矩阵显示。
在设计程序的时候,我还特意设置了输入报错功能,当输入节点序号超出节点总数,程序将会报错,以防没发现造成最后结果错误。
在设计程序的过程中,碰到了很多困难,但是我也从中发现问题,解决问题。
往往是,检查了很多遍的程序,在运行中还是会报错。
MATLAB有着非常好的问题诊断功能,在编写过程中,它就会自动检查程序中潜在的问题,并用红色下划线标注出来,让编程者从源头揪出代码错误。
在运行中,如果发生错误,MATLAB也会在命令界面定位出错误位置,指引我改正代码中的错误。
就这样,通过大量地查阅书籍、复核代码,最终形成了没有明显运行问题的程序,基本达到了要求,我心中充满了成就感。
通过这次电分课设,我对电力系统的实用短路计算有了深刻的理解,对短路电流、节点导纳矩阵等概念有了更加清晰的把握,同时对用MATLAB进行GUI编程有了初步的了解。
由于以前从未进行过MATLAB编程,所以刚上手时有些难,但是经过一段时间的熟悉,我逐渐对MATLAB的强大功能感到惊奇和赞叹,MATLAB是一门大学问,我今后一定会更加注意将电气工程课程与工具软件结合运用,更好地在应用中掌握知识。
六、参考文献
【1】电力系统分析(上册)何仰赞温增银,华中科技大学出版社,2002
【2】MATLABR2006a基础敎程刘慧颖,清华大学出版社,2007
【3】MATLAB7.6从入门到精通张琨毕靖丛滨,电子工业出版社,2009
【4】精通MATLAB葛哲学,电子工业出版社,2008
七、附录(主程序及其注释)
共计9个回流函数:
1.读取函数select_file:
读取.csv文件,读取成功有提示。
确定参数矩阵后,在右上侧显示各种已知参数。
各种读取结果申公共。
2.计算函数calculate_start:
精确算法,计算完毕将结果显示在右下侧。
各种计算结果申公共。
3.导入函数input1:
可任意修改短路点序号、小z矩阵,支持报错功能。
手动导入过程人性化,可以下标自动加1。
4.导入函数input2:
可任意修改发电厂矩阵,支持报错功能。
同样,下标也能自动加1。
5.导入函数input3:
可以任意修改漏抗导纳矩阵,下标也能自动加1.
通过以上三个导入函数,还能实现不导入文件,完全手动输入所有参数。
6.存储函数save_result_csv:
以文件形式存储短路计算结果,仍以工程上常用的.csv文件保存。
7.存储函数save_result_txt:
详细地以文本形式,记录网络参数与短路计算结果,汉字说明与数字结果夹杂混排。
8.重置函数clear_all:
重置所有矩阵和显示框,将程序复位到最初状态。
9.点选函数setHvisible以及附带的pushbutton1-3:
可以自由切换I、Y、Z矩阵显示。
①程序启动初始化模块:
handles.imagz=zeros(15,15);%初始化参数矩阵,防止调用未定义矩阵出错
handles.g_z=zeros(1,2);
handles.g_v=zeros(1,1);
handles.louy=zeros(1,2);
handles.q=1;%q为接地漏抗在读入矩阵中最大行数
set(handles.startn,'String','1');%设置显示序号默认值
set(handles.endn,'String','1');
set(handles.fadiann,'String','1');
set(handles.loukangnn,'String','1');
setHvisible(handles,1,[2,3])%设置最初显示电流I矩阵
②文件导入模块:
[filename,pathname]=uigetfile({'*.csv','csv-files(*.csv)'},'选择文件');
iffilename==0
msgbox('您未成功选择.csv文件!
','对话框','warn');
return
elsemsgbox('成功载入!
请继续操作!
','对话框','help');
end
filename=[pathname,filename];%带有路径的文件名
A=csvread(filename);%从文件中读入各种网络参数
n=A(1,1);%读取节点数
f=A(1,2);%读取短路点节点号
compen=zeros(1,8);
A=[A;compen];%最后一行添零便于找出几种矩阵的最大行数
imagz=zeros(n,n);
forw=2:
20%以下步骤为确定节点间阻抗矩阵在A中的最大行数
ifA(w,6)==0%如果某元素为0,则减一得到最终值
w=w-1;
break;
end
end
forww=2:
w%生成节点间阻抗矩阵
imagz(A(ww,6),A(ww,7))=A(ww,8);
imagz(A(ww,7),A(ww,6))=A(ww,8);
end
z=sqrt(-1)*imagz;%z是复数表示的节点间阻抗矩阵
forp=2:
20%读取发电机台数
ifA(p,1)==0
p=p-1;
break;
end
end
g_z=A(2:
p,1:
2);%g_z存放发电机节点序号与阻抗
g_v=A(2:
p,3:
3);%g_v存放发电机电压
gg=A(2:
p,1:
3);
set(handles.g_zz,'Data',gg);%刷新显示发电厂参数
forq=2:
20%确定漏抗个数
ifA(q,4)==0
q=q-1;
break;
end
end
ifq>1%如果存在漏抗则显示出来,否则初始化为一个向量
louy=A(2:
q,4:
5);
set(handles.louyy,'Data',louy);
elselouy=zeros(1,2);
end
set(handles.jiedian,'String',num2str(n));%显示节点数
set(handles.duanludian,'String',num2str(f));%显示短路点序号
imagzdisp=imagz;%将节点间矩阵中的0置换为inf无穷大
fori=1:
n
forj=1:
n
ifimagzdisp(i,j)==0
imagzdisp(i,j)=1/0;
end
end
end
set(handles.zzz,'Data',imagzdisp);%显示任意节点间阻抗矩阵
handles.p=p;%申公共,为其他函数调用做准备
handles.q=q;
handles.g_z=g_z;
handles.g_v=g_v;
handles.louy=louy;
handles.z=z;
handles.imagz=imagz;
guidata(hObject,handles);
③手动录入或修改模块:
又细分为三个模块:
1)节点间阻抗录入或修改:
imagz=handles.imagz;
n=str2num(get(handles.jiedian,'String'));
testimagz=imagz(1,:
);%以下步骤判断目前操作是修改还是首次创建
iflength(testimagz)~=n
imagz=zeros(n,n);
end
startn=str2num(get(handles.startn,'String'));%读取两节点序号
endn=str2num(get(handles.endn,'String'));
ifstartn>n||endn>n%报错功能
msgbox('所选结点已超出最大结点!
','错误','warn');
return
end
imagz(startn,endn)=str2num(get(handles.jiediankang,'String'));%存储节点间阻抗
imagz(endn,startn)=imagz(startn,endn);%对折特性
z=sqrt(-1)*imagz;
imagzdisp=imagz;%同理将0置换为inf
fori=1:
n
forj=1:
n
ifimagzdisp(i,j)==0
imagzdisp(i,j)=1/0;
end
end
end
set(handles.zzz,'Data',imagzdisp);%显示任意节点间阻抗矩阵
ifendn==n%自动节点序号递增,方便输入
endn=1;
startn=startn+1;
else
endn=endn+1;
end
set(handles.endn,'String',num2str(endn));
set(handles.startn,'String',num2str(startn));
handles.imagz=imagz;%更新参数矩阵
handles.z=z;
guidata(hObject,handles);
2)发电机阻抗及电压录入或修改
n=str2num(get(handles.jiedian,'String'));
g_z=handles.g_z;
g_v=handles.g_v;
gg=[g_zg_v];
gg=[gg;zeros(1,3)];%以下步骤区分当前操作是首次创建、添加、修改发电机参数这三种情况
forp=1:
n+1
ifgg(p,1)==0
p=p-1;
break;
end
end
ii=str2num(get(handles.fadiann,'String'));
ifp~=0
ifii>p
g_z=[g_z;zeros(1,2)];
g_v=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电力系统 分析 课程设计 报告