信息工程学院
电力系统分析课程设计报告书
题目: 电力系统短路故障的计算机算法程序设计
专 业:
班 级:
学 号:
学生姓名:
指导教师:
年 月 日
信息工程学院课程设计任务书
目 录
1 任务提出与方案论证................................................ 1
1.1 任务提出 .................................................... 1
1.2 方案论证 .................................................... 1
2设计思路 .......................................................... 2
2.1 项目分析 .................................................... 2
3 详细设计.......................................................... 4
3.1 VB界面制作详细程序......................................... 4
3.2 测试算例 .................................................... 9
4 总 结........................................................... 18
参 考 文 献........................................................ 19
附 录..........................................................................................................................20
信息工程学院课程设计(论文)
1 任务提出与方案论证
1.1 任务提出
电力系统的故障有很多种,而短路则是最为严重的一种,包括一相短路接地,两相短路,两相短路接地,三相短路,其中三相短路在电力系统中虽然发生的概率很小,但一旦发生产生的影响非常严重,电力系统中设备的动稳定和热稳定校验都要以三相短路电流为依据,因此我选择做电力系统三相短路的计算程序更有意义。
电力系统发生短路故障造成的危害性是最大的。作为电力系统三大计算之一,分析短路故障的参数更为重要。通过课程设计, 使学生巩固电力系统三相短路计算的基本原理与方法,掌握短路电流的数值求解方法,开发系统短路故障电流的计算程序。同时,通过软件开发,也有助于计算机操作能力和软件开发能力的提高。
1.2 方案论证
本课程设计根据电力系统分析课程中所讲的基于节点方程的三相短路计算的原理和方法,编程实现了三相短路计算。本程序输入含有网络拓扑信息和电器元件的参数,输出三相短路的短路电流和短路后网络各节点的电压参数和各支路的电流参数,并以文件的形式保存,方便用户的读取、打印,实现了设计的要求。
对于编程语言的选择有很多种,目前比较流行的是C语言和MATLAB两种,因为这两种语言相对较简单,而MATLAB作为专门的数学软件又更具简介性和直观性,是一种基于解释的语言,目标在于用户方便,开发简单,但编译器则承担了更大重任,因此程序执行效率方面也有损失。VB语言是目前世界上最为流行使用最为广泛的面向对象设计语言用他来设计界面,很多软件的界面都使用VB编写的,能起到美化界面的作用,就我个人而言,我学过VB课程,相对于其他语言来说,VB的运用更为熟悉和了解,因此,在本课程设计中我选择VB语言进行界面的美化,MATLAB在后台调用函数对电力系统对称短路计算,从而实现VB和MATLAB联合编程。
1
信息工程学院课程设计(论文)
2设计思路
2.1 项目分析
电力系统短路电流的实际工程计算中,许多实际问题的解决并不需要十分精确地结果,因此采用近似计算法,在建立系统节点方程时,采用网络模型和参数做简化处理,等值电路的制定通常将发电机作为含源支路,表示为节点注入电流源和节点电抗的形式,系统中存在同步发电机时,按发电机支路处理,同时忽略发电机、变压器和输电线路的电阻,不计线路的电容,略去变压器的励磁电流,负荷忽略不计,在标幺参数计算时,选取各级平均额定电压作为基准电压,忽略元件的额定电压和平局电压的差别,认为变压器变比的标幺值为1,假定所有的发电机的电势具有相同的相位,所有的元件仅用电抗表示,避免复数运算。 本课程设计的关键部分是利用系统节点导纳矩阵形成节点阻抗矩阵,本程序采用LDU分解法,然后利用节点导纳矩阵和阻抗矩阵的乘积为单位矩阵列些方程,节点导纳矩阵经LDU分解后,回代求解系统阻抗矩阵。利用节点阻抗矩阵进行短路计算,首先利用故障前的节点注入电流和系统节点阻抗矩阵求取故障前系统的各节点电压,然后利用金属短路时短路点残压为0、对地点电阻为0,计算短路点电流,最后利用故障前节点电压、节点阻抗和短路点电流求得短路后各节点电压和各支路电流。
应用计算机进行电力系统计算,首先要建立电力系统相应的数学模型,如建立电力系统等效网络和节点方程,其次是运用合理的计算方法计算结果,如三角分解发,LDU分解法等,第三则是选择合适的计算机语言编制计算程序,实现程序的准确性,提高精确度。
本设计利用节点方程来实现电力系统三相短路计算。首先,根据给定的电力系统运行方式制定系统的一相等值网络,计算出各元器件的参数,其次根据网络方程利用变压器和线路参数形成不含发电机和负荷的节点导纳矩阵Y,然后利用系统形成的节点导纳矩阵求解系统阻抗矩阵Z,最后应用节点阻抗矩阵计算短路电流。
2
信息工程学院课程设计(论文)
2.2 总流程图
程序的总流程图如图2-1所示。
3
信息工程学院课程设计(论文)
3 详细设计
3.1 VB界面制作详细程序
Dim n%
Dim f%
Dim z_data() As Double
Dim cnt%
Private Sub cmmd1_Click()
n = Val(Text1.Text)
f = Val(Text2.Text)
If n <> 0 And f <> 0 Then
cmmd1.Enabled = False
Cmmd3.Enabled = True
Lab1.Caption = "总共" & Str(n) & "个节点" & Space(5) & "当前输入" & Str(cnt) & "个" End If
ReDim z_data(n, n) '重定义大小
End Sub
Private Sub cmmd2_Click()
n = 0
f = 0
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
cmmd1.Enabled = True
Cmmd3.Enabled = False
Cmmd4.Visible = False
Lab1.Caption = ""
Pic.Cls
Pic.Cls
4
信息工程学院课程设计(论文)
End Sub
Private Sub Cmmd3_Click()
Dim I%
If (cnt < n) Then
For I = 0 To n - 1
z_data(cnt, I) = Val(Split(Text3.Text, ",")(I))
Next
End If
cnt = cnt + 1
Lab1.Caption = "总共" & Str(n) & "个节点" & Space(5) & "当前输入" & Str(cnt) & "个" If (cnt = n) Then
cmmd1.Enabled = False
cmmd2.Enabled = False
Cmmd4.Visible = True
cnt = 0
Text3.Text = ""
End If
End Sub
Private Sub Cmmd4_Click()
Dim Y As Variant
Dim I1 As Variant
Dim I As Variant
Dim X As Integer
Dim j As Integer
Dim qiu As New current_c.current
Dim temp As Double
Call qiu.curren_cat(3, Y, I1, I, n, f, z_data)
Pic.Print
Pic.Print "导纳矩阵:"
5
信息工程学院课程设计(论文)
Dim strout As String
Dim s As String
For X = 1 To n
For j = 1 To n
temp = Round(Y(X, j), 4) s = Str(temp)
If Abs(temp) < 1 And temp <> 0 Then s = Str(Abs(temp))
If temp > 0 Then
s = "0" & Trim(s)
Else
s = "-0" & Trim(s)
End If
End If
Pic.Print s,
Next j
Pic.Print
s = ""
Next X
Pic.Print
Pic.Print "各支路电流:"
Pic.Print
For X = 1 To n
For j = 1 To n
temp = Round(I(X, j), 4)
s = Str(temp)
If Abs(temp) < 1 And temp <> 0 Then s = Str(Abs(temp))
If temp > 0 Then
s = "0" & Trim(s)
Else
s = "-0" & Trim(s)
End If
End If
Pic.Print s,
Next j
Pic.Print
s = ""
Next X
Pic.Print
strout = Chr(10) & Str(Round(I1, 4))
6
信息工程学院课程设计(论文)
Pic.Print "短路点电流:", strout
Cmmd4.Enabled = False
cmmd2.Enabled = True
End Sub
Private Sub Command1_Click()
Dim stra As String
Dim Y%
Dim d%
Dim temp() As String
Dim tdata() As Double
With CommonDialog1
.CancelError = True
.InitDir = App.Path '予设存档路径
.Filter = "文档文件(*.txt)|*.txt"
.ShowSave '或commonDialog1.Action = 2 保存文件 End With
Open CommonDialog1.FileName For Input As #1 stra = StrConv(InputB$(LOF(1), #1), vbUnicode) Close #1
temp = Split(stra, ",")
ReDim tdata(UBound(temp))
For Y = 0 To UBound(temp)
tdata(Y) = Val(temp(Y))
Next
n = tdata(0)
f = tdata(1)
Text1.Text = n
Text2.Text = f
For Y = 2 To UBound(tdata)
tdata(Y - 2) = tdata(Y)
Next
ReDim z_data(n, n)
7
信息工程学院课程设计(论文)
For Y = 0 To n - 1
For d = 0 To n - 1
z_data(Y, d) = tdata(Y * n + d)
Next
Next
Cmmd4.Enabled = True
Cmmd4.Visible = True
cmmd1.Enabled = False
End Sub
Private Sub Form_Load()
Cmmd3.Enabled = False
Cmmd4.Visible = False
cnt = 0
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then KeyAscii = 0
End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
End If
End Sub
8
信息工程学院课程设计(论文)
3.2 测试算例
【例6-3】在如图3-5所示的电力系统中分别在节点1和节点5接入发电机支路,其标幺值参数为:
??E??1.0,z?j0.15,z?j0.22。在节点3发生三相短路,计算短路电流及网络中的E1515
电流分布。线路的电阻和电容略去不计,变压器的标幺变比等于1。各元件参数的标幺值如下:
z12?j0.105,k12?1.05,z45?j0.184,k45?0.96,z24?0.03?j0.08,z23?0.024?j0.065,z34?0.018?j0.05,y240?y420?j0.02,y230?y320?j0.016,y340?y430?j0.013
图3-5 电力系统等值网络图
其三相短路时的等值网络图如图3-6所示。
1:k12y240y420k45:1z45z12y230y320z23z24z34y430y340z12z24z5?E?E5
图3-6 三相短路时的等值网络图
9
信息工程学院课程设计(论文)
由以上网络图可得计算过程如下:
(1)、形成输入文件:
系统参数如下所示:
1.系统的节点数为5
2.系统的支路数为5
3.系统的短路点为3
支路电抗参数如下
z12=0.1050 z23=0.0650 z24=0.0800 z43=0.0500 z54=0.1840 发电机接入点及其电抗如下:共2台发电机进入系统
z1=0.1500 z5=0.2200
e1=1.0000 e5=1.0000
共0个节点有接地电容
(2)、计算后得到的输出文件:
计算结果如下:
1、节点导纳矩阵:
-16.1905 9.5238
9.5238 -37.4084 15.3846 12.5000 15.3846 -35.3846 20.0000 12.5000 20.0000 -37.9348 5.4348
5.4348 -9.9802
2、节点阻抗矩阵:
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
3、短路节点是:3
4、短路电流:If=5.3767
5、各节点电压:
V1=0.5152 V2=0.1758 V3=0 V4=0.1336 V5=0.5282
6、发电机支路电流如下:
Ig[1][0]=-3.2321
Ig[5][0]=-2.1445
7、各支路电流:
10
信息工程学院课程设计(论文)
I12=-3.2321 I23=-2.7046 I24=-0.5275 I43=-2.6720 I54=-2.1445 程序运行结果如图3-7所示。
图3-7 程序运行结果
11
信息工程学院课程设计(论文)
【习题6-10】如图3-8所示网络,略去负荷,试用节点阻抗矩阵法求节点5发生三相短路时,短路点的短路电流及线路L-2、L-3的电流。已知各元件参数如下:
发电机G-1: SN = 120 MVA, x”d = 0.23; G-2: SN = 60 MVA, x”d = 0.14
变压器T-1: SN = 120 MVA, Vs = 10.5%; T-2: SN = 60 MVA, Vs = 10.5%
线路参数 x1 = 0.4Ω/km, b1 = 2.8×10-6 S/km
线路长度 L-1: 120 km, L-2: 80 km, L-3: 70 km
取SB = 120 MVA, VB = Vav
图3-8 电力系统网络图
其三相短路时的等值网络图如图3-9所示。
3 G2?E1?E2
图3-9 三相短路时的等值网络图
由以上网络图可得计算过程如下:
(1)、形成输入文件:
系统参数如下所示:
1.系统的节点数为:5
12
信息工程学院课程设计(论文)
2.系统的支路数为:5
3.系统的短路点为:5 支路电抗参数如下: z3 5=0.29036
z4 5=0.25406 z3 4=0.43554
z1 3=0.1050 z2 4=0.2100
发电机接入点及其电抗如下:共2台发电机进入系统: z1=0.2300 z2=0.2800 e1=1.0500
e2=1.0500
共3个节点有接地电容: Y3=-32.372299
Y4=-34.077000
Y5=-43.185200
(2)、得到的输出文件: 计算结果如下: 1、节点导纳矩阵:
-13.8716 9.5238 -8.3333 4.7619 9.5238 -15.2329 2.2960 3.4440 4.7619 2.2960 -10.9646 3.9361 3.4440 3.9361 -7.3569 2、节点阻抗矩阵:
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 3、短路节点是:5 4、短路电流:If=3.1263 5、各节点电压: V1=0.6471
V2=0.6723
V3=0.4632
V4=0.3890
6、发电机支路电流如下: Ig[1][0]=-1.7516 Ig[2][0]=-1.3491 7、各支路电流:
I35=-1.5954 I45=-1.5310 I34=-0.1705 I13=-1.7516 程序运行结果如图3-10所示。
V5=0
I24=-1.3491 13
信息工程学院课程设计(论文)
图3-10 程序运行结果
14
信息工程学院课程设计(论文)
【习题6-11】电力系统等值电路如图3-11所示,支路阻抗的标幺值已注明图中。
(1)形成节点导纳矩阵(或节点阻抗矩阵),并用以计算节点3的三相短路电流。
(2)另选一种方法计算短路电流,并用以验证(1)的计算结果。
?
?图3-11 电力系统等值电路图
由以上网络图可得计算过程如下:
(1)、形成输入文件:
系统参数如下所示:
1.系统的节点数为:3
2.系统的支路数为:2
3.系统的短路点为:3
支路电抗参数如下:
z1 2=0.2000 z2 3=0.1000
发电机接入点及其电抗如下:共2台发电机进入系统:
z1=0.2000 z3=0.130435
e1=1.0500 e3=0.913043
共1个节点有接地电容:
15
信息工程学院课程设计(论文)
Y2=-2.000000
(2)、得到的输出文件: 计算结果如下:
1、节点导纳矩阵:
-10.0000 5.0000 5.0000 -14.5000 10.0000 10.0000 -17.6667
2、节点阻抗矩阵:
0.1394 0.0789 0.0446 0.0789 0.1577 0.0893 0.0446 0.0893 0.1071
3、短路节点是:3
4、短路电流:If=9.1875
5、各节点电压:
V1=0.6344 V2=0.2188 V3=0
6、发电机支路电流如下:
Ig[1][0]=-2.0781
Ig[3][0]=-7.0000
7、各支路电流:
I12=-2.0781 I23=-2.1875
运行结果如图3-12所示。
16
信息工程学院课程设计(论文)
图3-12 程序运行结果
程序运行结果与算例标准答案一样,说明本程序的计算方法和思路的准确性,程序基本符合设计的要求。
17
信息工程学院课程设计(论文)
4 总 结
本次课程设计使我感受最深的是计算机在电力系统领域里的巨大应用价值。在这次设计中,用手工计算是相当麻烦的,短路电流所涉及的参数众多,计算公式也是相当繁冗,手工计算起来十分地乏味,且需要有相当的耐心和精力,稍有不慎,即会出错。而通过计算机来进行计算,我们只需要把计算的流程搞懂了,设计出相关的程序,简简单单地敲击键盘就可以得出答案来了,且答案与实际值相差无几。我想,计算机不仅仅在这一次设计中体现出其价值,在今后的学习里,我们还一定会用到计算机编程来解决问题的情况。因此,我觉得学好计算机,掌握好一门计算机语言是非常有必要的。
电力系统短路电流故障是电力系统三大计算之一,学好它对于学好电力系统这门课程,对以后的毕业设计和实际工作具有十分重要的意义。而利用计算机来计算和分析其大小、流向是十分方便的。因此,在今后的学习中,我会继续努力学好《电力系统分析》这门课程,并学习另外一些相关的课外知识,开阔自己的视野。该课程设计给出了基于组合故障模型的电力系统不对称短路故障通用算法公式的推导过程a一方面解决了任意过渡阻抗的故障计算问题a另一方面拓宽了故障的计算范围a计及了组合型故障发生的可能a因此涵盖了短路故障所有特殊情形O 该算法针对不对称短路故障而言具有严格意义上的通用性a大大简化了计算机的编程实现a有效地实现了任意基本故障型短路及组合故障型短路的统一计算a具有应用价值。
18
信息工程学院课程设计(论文)
参 考 文 献
[1]何仰赞. 电力系统分析(上册). 武汉:华中科技大学出版社,2002
[2]米麟书等. 电力系统故障的计算机辅助分析. 重庆:重庆大学出版社,1992
[3]周作仁等. 电网计算与程序设计. 长沙:湖南科学技术出版社,1983
[4]Visual Basic 程序设计教程. 北京:人民邮电出版社,2007.2
[5]康华光,陈大钦. 电子技术基础—模拟部分(第五版)[M].北京:高等教育出版社,2005
[6]皮文兵. 一种宽输入范围的Gillbert模拟乘法器设计[J]. 电子设计应用.2007.13
[7] 焦春生.新型绿色能效D类音频放大器设计应用[EB/OL]
[8] 张筑生. 微分半动力系统的不变集 [D]. 北京: 北京大学数学系数学研究所, 1983
[9] MATLAB 7.0从入门到精通(修订版). 北京:人民邮电出版社 ,2010.5
19
信息工程学院课程设计(论文)
附 录
主要数据变量说明如下:
n :总节点数
f :短路点
z :系统阻抗矩阵
zij :节点i和节点j之间的阻抗,如无连接,则zij=0 Z :系统的阻抗Z矩阵
Y :系统的导纳矩阵
If :短路电流
Vi :短路后节点i电压的向量
Iij :短路后节点i和j之间的支路电流
计算主程序如下:
load impedance.dat; 载入阻抗矩阵
load point.dat; 载入短路节点,节点总数 n=point(1,2); 赋节点总数值
f=point(1,1); 赋短路节点值
z=1j.*impedance;
Y=zeros(n,n);
I=zeros(n,n); 初始定义Y,I阵为零矩阵 for i=1:n
for j=1:n
if z(i,j)~=0
20
信息工程学院课程设计(论文)
Y(i,i)=Y(i,i)+1/z(i,j); 求出Y阵中的对角线上元素,自导纳
end
end
end
for i=1:n
for j=i+1:n
if z(i,j)==0
Y(i,j)=0;
else Y(i,j)=-1/z(i,j); 求出Y阵中非对角线上元素,互导纳 end
Y(j,i)=Y(i,j);
end
end
Z=inv(Y); 导纳矩阵求逆,得出阻抗矩阵 If=1/Z(f,f); 计算短路电流,公式来源(6-10)
V=ones(1,n); 产生长度为n的全1行数组,定义各节点电压为额定制 for i=1:n 求解短路后各节点电压,公式来源(6-8) V(i)=V(i)-If*Z(i,f);
end
for i=1:n
for j=1:n
I(i,j)=(V(j)-V(i))*Y(i,j); 求出各支路电流,公式来源(6-9) end
end
21
信息工程学院课程设计(论文)
Y=imag(Y); 取出导纳矩阵的虚部为导纳矩阵 Z=imag(Z);
If=imag(If);
I=imag(I);
save daona.dat Y -ascii 保存Y阵结果存于daona文件中 save zukang.dat Z -ascii
save current.dat I -ascii
save voltage.dat V -ascii
save d-currentt.dat If -ascii
save zong.m Y Z I V If -ascii
保存Z阵结果存于zukang文件中 保存支路电流存于currrent文件中 保存各节点电压存于voltage文件中 保存短路电流信息存于d-current文件中 保存所有信息于总文件中 22