华中科技大学电力系统分析课程设计报告 基于matlab的短路电流计算.docx

上传人:b****5 文档编号:7916632 上传时间:2023-01-27 格式:DOCX 页数:33 大小:483.54KB
下载 相关 举报
华中科技大学电力系统分析课程设计报告 基于matlab的短路电流计算.docx_第1页
第1页 / 共33页
华中科技大学电力系统分析课程设计报告 基于matlab的短路电流计算.docx_第2页
第2页 / 共33页
华中科技大学电力系统分析课程设计报告 基于matlab的短路电流计算.docx_第3页
第3页 / 共33页
华中科技大学电力系统分析课程设计报告 基于matlab的短路电流计算.docx_第4页
第4页 / 共33页
华中科技大学电力系统分析课程设计报告 基于matlab的短路电流计算.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

华中科技大学电力系统分析课程设计报告 基于matlab的短路电流计算.docx

《华中科技大学电力系统分析课程设计报告 基于matlab的短路电流计算.docx》由会员分享,可在线阅读,更多相关《华中科技大学电力系统分析课程设计报告 基于matlab的短路电流计算.docx(33页珍藏版)》请在冰豆网上搜索。

华中科技大学电力系统分析课程设计报告 基于matlab的短路电流计算.docx

华中科技大学电力系统分析课程设计报告基于matlab的短路电流计算

2012-2013第二学期课程设计

电力系统短路故障的计算机

算法程序设计

 

姓名

学号

班级

指导教师张凤鸽

一、课程设计说明……………………………………………3

二、选择所用计算机语言的理由……………………………3

三、程序主框图、子框图及主要数据变量说明……………5

四、三道计算题及网络图…………………………………9

五、设计体会…………………………………………………21

六、参考文献…………………………………………………22

七、附录(主程序及其注释)………………………………23

电分课设报告

一、课程设计说明

根据所给的电力系统,编制短路电流计算程序,通过计算机进行调试,最后完成一个切实可行的电力系统计算应用程序。

通过自己设计电力系统短路计算的程序,加深对电力系统短路计算的理解,同时培养自己在计算机编程方面的能力,提示自我的综合素质。

短路电流(short-circuitcurrent)电力系统在运行中,相与相之间或相与地(或中性线)之间发生非正常连接(即短路)时流过的电流。

其值可远远大于额定电流,并取决于短路点距电源的电气距离。

例如,在发电机端发生短路时,流过发电机的短路电流最大瞬时值可达额定电流的10~15倍。

大容量电力系统中,短路电流可达数万安。

这会对电力系统的正常运行造成严重影响和后果。

三相系统中发生的短路有4种基本类型:

三相短路,两相短路,单相对地短路和两相对地短路。

其中三相短路虽然发生的机会较少,但情况严重,又是研究其它短路的基础。

所以我们先研究最简单的三相短路电流的暂态变化规律。

二、选择所用计算机语言的理由

MATLAB是一套功能强大的工程计算软件,被广泛的应用于自动控制、机械设计、流体力学和数理统计等工程领域。

工程技术人员通过使用MATLAB提供的工具箱,可以高效的求解复杂的工程问题,并可以对系统进行动态的仿真,用强大的图形功能对数值计算结果进行显示。

MATLAB是必备的计算与分析软件之一,也是研究设计部门解决工程计算问题的重要工具。

我这次选用的是MATLAB R2009b计算软件。

MATLAB实现的优势:

MATLAB语言有不同于其他高级语言的特点,被称为第四代计算机语言。

正如第三代计算机语言如FORTRAN与C等使人们摆脱了对计算机硬件的操作一样,MATLAB语言使人们从繁琐的程序代码中解放出来。

它的丰富的函数是开发者无需重复编程,只要简单地调用和使用即可。

MATLAB语言最大的特点是简单和直接。

MATLAB语言的主要特点有:

1.编程效率高

MATLAB语言是一种面向科学与工程计算的高级语言,允许用数学形式的语言编写程序,且比BASIC、FORTRAN和C等语言更加接近我们书写计算公式的思维方式,用MATLAB编写程序犹如在演算纸上排列公式与求解问题。

因此,也可通俗地称MATLAB语言为演算纸式科学算法语言。

由于它编程简单,所以编程效率高,易学易懂。

2.高效方便的矩阵和数组运算

MATLAB语言像BASIC、FORTRAN和C语言一样规定了矩阵的算术运算符、关系运算符、逻辑运算符、条件运算符及赋值运算符,而且这些运算符大部分可以毫无改变的照搬到数组建的运算中。

有些如算术运算符只要增加“.”就可以用于数组建间的运算。

另外,它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解数字图像处理问题时显得大为简洁、高效、方便,这是其他高级语言所不能相比的。

3.用户使用方便

MATLAB语言是一种解释执行的语言(在没有被专门的工具编译之前),它灵活、方便,起跳时程序手段丰富,调试速度快,需要学习时间少。

人们用任何一种语言编程和调试一般都要经过四个步骤:

编辑、编译、连接,以及执行和调试。

各个步骤之间是顺序关系,编程的过程就是在他们之间作瀑布型的循环。

MATLAB语言与其它语言相比,较好的解决了上述问题,把编辑、编译、连接和执行融为一体。

它能在同一画面上进行灵活操作,快速排除输入程序的书写错误、语法错误甚至语义错误,从而加快了用户编写、修改和调试程序的速度,可以说在编程和调试过程中它是一种比VB还要简单的语言,更不用谈C和C++。

4.扩充性强,交互性好

MATLAB语言有丰富的库函数,在进行复杂的数学运算时可以直接调用,且这些库函数同用户文件在形式上一样,所以用户文件也可以作为MATLAB的库函数来调用。

婴儿,用户可以根据自己的需要方便的建立和扩充新的库函数,提高MATLAB使用效率和扩充它的功能。

另外,为了充分利用FORTRAN、C等语言的资源,包括用户自己编好的FORTRAN、C语言程序,通过建立M文件的形式,混合编程,方便地调用有关的FORTRAN、C语言子程序,还可以在C语言和FORTRAN语言中方便的使用MATLAB的数值计算功能。

良好的交互性增加了代码的重用性。

综上所述,MATLAB最适用的范围是科学计算,对于本文需要处理矩阵运算来实现图像处理算法来说,MATLAB再合适不过了。

MATLAB实现的缺点:

然而,较之于C语言MATLAB也有自己的劣势。

1.循环运算效率低

MATLAB中所有的变量均为向量形式,这样一方面在对向量进行整体的计算时,表现出其他语言难以相比的高效率,但是对于向量中的单个元素,或是将向量作为单个的循环变量来处理时,其处理过程相当复杂.解决的办法之一是尽量发掘处理数据中的向量特征。

另一种办法是利用MATLAB的扩展特性,将迭代过程和其他的循环过程放在“低级”语言中来实现。

2.封装性不好

一方面,所有的变量均保存在公共工作区中,任何语句都可以调用。

另一方面作为一件完备的软件,而不是实现算法的程序,编程人员需要花相对多的时间考虑如何设计用户界面。

虽然,MATLAB提供了一定量的交互界面制作途径如GUI等,但是作为一件真正的商品,最终的代码将不可避免的移植到较为“低级”的语言中,例如C、C++。

综合MATLAB的优劣,选择MATLAB作为编程的平台,实际上是编程效率和程序运行效率两者之间的妥协。

在现阶段,对图象处理后的运行结果有严格要求,而对运行时间没有特别的限定。

因此选择MATLAB来编程便无可厚非了。

而更重要的是,由于MATALAB编程简单易行,我们可以很方便的对现有的算法进行改进。

作者在编程的过程中充分体会到了这一优势。

三、程序主框图、子框图及主要数据变量说明

算法说明:

利用节点阻抗矩阵计算短路电流如图所示,假定系统中的节点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

图三题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*

 

 

图四题6—3软件界面显示

图五题6—3输出结果显示

 

②习题6-10

图六题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=

漏导纳矩阵(第一列为漏导纳节点号,第二列为漏导纳数值)

0.0309

0.0231

0.0293

 

louy=

 

输出数据及说明:

短路点电流

-3.1246

各支路电流矩阵

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—10软件界面显示

     

图八题6—10输出结果显示

 

③习题6-11

图九题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*

 

 

图十题6—11软件界面显示

图十一题6—11输出结果显示

 

五、设计体会

这次电分课设的主题是电力系统短路故障的计算机算法程序设计,我选择了对称短路计算来研究。

经过不懈努力与完善,最终形成的可执行文件可以对各种简单电力网络的对称短路故障进行分析计算,取得了较为满意的效果。

我编写了9个回流函数,分别执行不同的功能:

1.读取函数select_file:

读取.csv文件,读取成功有提示。

确定参数矩阵后,在右上侧显示各种已知参数。

各种读取结果申公共。

2.计算函数calculate_start:

精确算法,计算完毕将结果显示在右下侧。

各种计算结果申公共。

3.导入函数input1:

可任意修改短路点序号、小z矩阵,手动导入过程人性化。

4.导入函数input2:

可任意修改发电厂阻抗矩阵。

5.导入函数input3:

可以任意修改发电厂电压矩阵。

6.导入函数input3:

可以任意修改漏抗导纳矩阵。

通过以上四个导入函数,还能实现不导入文件,完全手动输入所有参数。

7.存储函数save_result_txt:

详细地以文本形式,记录网络参数与短路计算结果,汉字说明与数字结果夹杂混排。

电力系统分析课程设计是一项很有挑战性的工作。

在选择这个课程设计之前,我就听学长说电力系统分析课程设计的难度,但是为了锻炼自己的能力,我还是迎难而上,选择了电力系统分析的课程设计。

在期末考试结束后,我就开始着手准备课程设计。

经过了再三比较候,我选择了MATLAB作为编程的语言,以前虽然接触过MATLAB,但接触的不深,只是用MATLAB画一些简单的图形之类的,这次用MATLAB语言开发软件,确实有相当大的难度。

从最开始从图书馆借书,上网上查找MATLABGUI的相关资料,一步步的深入,也开始意识到课程设计的难度所在。

一开始完全无从下手,纠结了好几天完全不知所云,后来在网上找到了MATLAB中文论坛和罗华飞老师编写的MATLAB GUI设计学习手记,才开始对MATLABGUI有一些最初的了解,也许是灵光一闪,就突然对MATLABGUI设计有了一些感觉,从CSV文档的输入,到手动输入,从将文件读取的计算,在到保存文件为TXT格式,每一步都走得异常苦难,尤其是后期的调试,将各个部分组成一个系统的程序,兼顾各个部分的兼容性,可是说是经历过一次次失败之后才走向成功的。

过程是艰辛的,结果是令人满意的,大约花了两个星期的时间,我终于将软件成功的设计了出来,在调试成功的那一刻,我分外高兴,认为自己做了一件特别有意义的事情,回首这段时间,要感谢老师的悉心指导,一同做课程设计同学的悉心帮助,没有你们,我的课程设计就不可能完成,在此,像老师和同学们表示感谢。

 

六、参考文献

(1)、电力系统分析(上册)何仰赞温增银,华中科技大学出版社,2002

(2)、MATLABGUI设计学习手记罗华飞,北京航空航天大学,2011

(3)、MATLAB程序设计与应用张智星,清华大学出版社,2002

(4)、MATLAB电力系统设计与分析吴天明,国防工业出版社,2004

七、附录(主程序及其注释)

1.读取函数select_file:

读取.csv文件,读取成功有提示。

确定参数矩阵后,在右上侧显示各种已知参数。

各种读取结果申公共。

2.导入函数input1:

可任意修改短路点序号、小z矩阵,手动导入过程人性化。

3.导入函数input2:

可任意修改发电厂阻抗矩阵。

4.导入函数input3:

可以任意修改发电厂电压矩阵。

5.导入函数input3:

可以任意修改漏抗导纳矩阵。

通过以上四个导入函数,还能实现不导入文件,完全手动输入所有参数。

6.计算函数calculate_start:

精确算法,计算完毕将结果显示在右下侧。

各种计算结果申公共。

7.存储函数save_result_txt:

详细地以文本形式,记录网络参数与短路计算结果,汉字说明与数字结果夹杂混排。

 

1、文件导入模块:

[filename,pathname]=uigetfile({'*.csv','csv-files(*.csv)'},'选择文件');

iffilename==0

msgbox('您未成功选择.csv文件!

','对话框','warn');

return

elsemsgbox('成功载入!

请继续操作!

','对话框','help');

end

filename=[pathname,filename];%带有路径的文件名

A=csvread(filename);%从文件中读入各种网络参数

ifA(9,1)~=0

imagz=zeros(10,10);

forw=2:

10%以下步骤为确定节点间阻抗矩阵在A中的最大行数

ifA(w,1)==0%如果某元素为0,则减一得到最终值

w=w-1;

break;

end

end

imagz=A(1:

w,:

);

set(handles.imagz,'Data',imagz);

handles.imagz=imagz;

g_z=zeros(10,10);

g_z=A(7:

8,1:

2);

set(handles.g_z,'Data',g_z);

handles.g_z=g_z;

g_v=zeros(10,10);

g_v=A(7:

8,3:

3);

set(handles.g_v,'Data',g_v);

handles.g_v=g_v;

loukang=handles.loukang;

louy=handles.louy;

loukang=zeros(10,10);

ifA(11,1)~=0

loukang=A(9:

11,1:

2);

else

loukang=A(9:

10,1:

2);

end

set(handles.louy,'Data',loukang);

handles.louy=louy;

handles.loukang=loukang;

else

imagz=zeros(10,10);

forw=2:

10%以下步骤为确定节点间阻抗矩阵在A中的最大行数

ifA(w,1)==0%如果某元素为0,则减一得到最终值

w=w-1;

break;

end

end

imagz=A(1:

w,:

);

set(handles.imagz,'Data',imagz);

handles.imagz=imagz;

g_z=zeros(10,10);

g_z=A(7:

8,1:

2);

set(handles.g_z,'Data',g_z);

handles.g_z=g_z;

g_v=zeros(10,10);

g_v=A(7:

8,3:

3);

set(handles.g_v,'Data',g_v);

handles.g_v=g_v;

loukang=handles.loukang;

louy=handles.louy;

loukang=zeros(1,1);

set(handles.louy,'Data',loukang);

handles.louy=louy;

handles.loukang=loukang;

end

guidata(hObject,handles);

2、手动录入模块:

又细分为四个模块:

(1)、节点间阻抗录入:

imagz=handles.imagz;

A=ones(10,10);

A=str2num(get(handles.edit2,'String'));

set(handles.imagz,'Data',A);

z=zeros(10,10);

handles.imagz=imagz;%更新参数矩阵

z=sqrt(-1)*imagz;

handles.z=z;

(2)、发电机阻抗录入

g_z=handles.g_z;

B=ones(10,10);

B=str2num(get(handles.fadian,'String'));

set(handles.g_z,'Data',B);

handles.g_z=g_z;

(3)、发电机电压录入

g_v=handles.g_v;

C=ones(10,10);

C=str2num(get(handles.fadianv,'String'));

set(handles.g_v,'Data',C);

handles.g_v=g_v;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1