📄 复件 chaoliu.frm
字号:
VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 9165
ClientLeft = 60
ClientTop = 450
ClientWidth = 13410
LinkTopic = "Form1"
ScaleHeight = 9165
ScaleWidth = 13410
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Command2
BackColor = &H00FFC0FF&
Caption = "结束"
BeginProperty Font
Name = "楷体_GB2312"
Size = 14.25
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Left = 7560
TabIndex = 6
Top = 120
Width = 2415
End
Begin VB.PictureBox Picture3
Height = 3975
Left = 0
ScaleHeight = 3915
ScaleWidth = 13155
TabIndex = 3
Top = 4560
Width = 13215
End
Begin VB.PictureBox Picture2
Height = 495
Left = 1560
ScaleHeight = 435
ScaleWidth = 11475
TabIndex = 2
Top = 3960
Width = 11535
End
Begin VB.PictureBox Picture1
BackColor = &H80000000&
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H00000000&
Height = 2775
Index = 0
Left = 240
ScaleHeight = 2715
ScaleWidth = 13995
TabIndex = 1
Top = 1080
Width = 14055
End
Begin VB.CommandButton Command1
Caption = " 显示结果"
Default = -1 'True
BeginProperty Font
Name = "楷体_GB2312"
Size = 14.25
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Index = 0
Left = 3480
Style = 1 'Graphical
TabIndex = 0
Top = 120
Width = 2895
End
Begin VB.Label Label2
Caption = "形成的节点导纳阵为:"
Height = 495
Left = 240
TabIndex = 5
Top = 600
Width = 1815
End
Begin VB.Label Label1
Caption = "平衡功率:"
Height = 495
Left = 120
TabIndex = 4
Top = 3960
Width = 1215
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim pi As Single
Private Sub Command1_Click(index As Integer)
pi = 3.1416
Dim Zl(0 To 10, 0 To 10) As Single
Dim Yr(10, 10) As Single
Dim Yv(10, 10) As Single
Dim i As Integer, i1 As Integer
Dim N As Integer, Line As Integer, JD As Single, jd0 As Single
Dim pq As Integer, pv As Integer, dc As Integer
Dim G As Single, B As Single, r, k, e(10) As Single, f(10) As Single
Dim P(10) As Single, P1(10) As Single, Q(10) As Single, Q1(10) As Single '计算节点功率
Dim oP(10) As Single, oQ(10) As Single '计算节点功率的不平衡量
Dim a(10, 10) As Single, bb(10, 10) As Single
Dim H(10, 10) As Single, M(10, 10) As Single, J(10, 10) As Single, L(10, 10) As Single, T(10, 10) As Single, S(10, 10) As Single '雅可比矩阵
Dim dt, sum, J1(20, 20), opq(20), X(20) '解修正方程组
Dim Sumr, Sumv, Sij, sum1(10, 10), sum2(10, 10), sij1(10, 10), sij2(10, 10) '平衡节点功率
Dim U(10), o(10)
G = 1
B = 1
dc = 1
a(10, 10) = 0
bb(10, 10) = 0
Open "chaoliu.txt" For Input As #1
Input #1, N, Line, pq, pv, JD
For i1 = 1 To pq
If Not EOF(1) Then Input #1, P(i1), Q(i1)
Next i1
For i1 = pq + 1 To pv + pq
If Not EOF(1) Then Input #1, P(i1), Q(i1)
Next i1
For i = 1 To Line
If Not EOF(1) Then Input #1, Zl(i, 0), Zl(i, 1), Zl(i, 2), Zl(i, 3), Zl(i, 4)
Next i
For i = 1 To N - 1 '对地的电容只有虚部
If (Zl(i, 0) > 0) And (Zl(i, 4) <> 0) Then Yv(i, 0) = Zl(i, 4)
Next i
Close #1
'*******************形成导纳********************************
For i = 1 To Line
r = Zl(i, 0)
k = Zl(i, 1)
G = Zl(i, 2)
B = Zl(i, 3)
If r > 0 Then
Yr(r, r) = Yr(r, r) + G / (G * G + B * B)
Yr(k, k) = Yr(k, k) + G / (G * G + B * B)
Yv(r, r) = Yv(r, r) - B / (G * G + B * B) + Zl(i, 4)
Yv(k, k) = Yv(k, k) - B / (G * G + B * B) + Zl(i, 4)
Yr(r, k) = Yr(r, k) - G / (G * G + B * B)
Yv(r, k) = Yv(r, k) + B / (G * G + B * B)
Yr(k, r) = Yr(k, r) - G / (G * G + B * B)
Yv(k, r) = Yv(k, r) + B / (G * G + B * B)
Else '变压器支路
r = -r
Yr(r, r) = Yr(r, r) + G / (G * G + B * B) / (Zl(i, 4) * Zl(i, 4))
Yv(r, r) = Yv(r, r) - B / (G * G + B * B) / (Zl(i, 4) * Zl(i, 4))
Yr(r, k) = Yr(r, k) - G / (G * G + B * B) / Zl(i, 4)
Yv(r, k) = Yv(r, k) + B / (G * G + B * B) / Zl(i, 4)
Yr(k, k) = Yr(k, k) + G / (G * G + B * B)
Yv(k, k) = Yv(k, k) - B / (G * G + B * B)
Yr(k, r) = Yr(k, r) - G / (G * G + B * B) / Zl(i, 4)
Yv(k, r) = Yv(k, r) + B / (G * G + B * B) / Zl(i, 4)
End If
Next i
Select Case index
Case 0
Picture1(0).Refresh
' Picture1(0).Visible = True
' Picture1(1).Visible = False
' Picture1(2).Visible = False
' Picture1(0).Print "形成的导纳阵为:"
For i = 1 To N
For r = 1 To N
If Yv(i, r) >= 0 Then
Picture1(0).Print Left$(Str$(Yr(i, r)), 7) & "+j" & Left$(Str$(Yv(i, r)), 7),
Else
Picture1(0).Print Left$(Str$(Yr(i, r)), 7) & "-j" & Left$(Str$(Abs(Yv(i, r))), 7),
End If
Next r
Picture1(0).Print
Next i
'*********************修改电压初值*****************************
e(N) = 1.06
f(N) = 0
e(N - 1) = 1
f(N - 1) = 0
For i = 1 To N - 2
e(i) = 1
f(i) = 0
Next i
'**********注意循环************
abd:
Picture1(0).Print "第" & dc & "次迭代:"
For i = 1 To pq
P1(i) = 0
Q1(i) = 0
For r = 1 To N
P1(i) = P1(i) + e(i) * (Yr(i, r) * e(r) - Yv(i, r) * f(r)) + f(i) * (Yr(i, r) * f(r) + Yv(i, r) * e(r))
Q1(i) = Q1(i) + f(i) * (Yr(i, r) * e(r) - Yv(i, r) * f(r)) - e(i) * (Yr(i, r) * f(r) + Yv(i, r) * e(r))
Next r
oP(i) = P(i) - P1(i)
oQ(i) = Q(i) - Q1(i)
' Picture1(1).Print oP(i),
' Picture1(1).Print oQ(i),
' Picture1(1).Print
Next i
For i = pq + 1 To pq + pv
P1(i) = 0
Q1(i) = 0
For r = 1 To N
P1(i) = P1(i) + e(i) * (Yr(i, r) * e(r) - Yv(i, r) * f(r)) + f(i) * (Yr(i, r) * f(r) + Yv(i, r) * e(r))
Next r
Q1(i) = e(i) * e(i) + f(i) * f(i)
oP(i) = P(i) - P1(i)
oQ(i) = Q(i) * Q(i) - Q1(i)
' Picture1(1).Print oP(i),
' Picture1(1).Print oQ(i),
' Picture1(1).Print
Next i
'Debug.Print "节点注入电流:"
For i = 1 To N - 1
a(i, i) = 0
bb(i, i) = 0
For r = 1 To N
a(i, i) = a(i, i) + Yr(i, r) * e(r) - Yv(i, r) * f(r)
bb(i, i) = bb(i, i) + Yr(i, r) * f(r) + Yv(i, r) * e(r)
Next r
' Debug.Print a(i, i),
' Debug.Print bb(i, i),
' Debug.Print
Next i
'********************雅可比矩阵的各元素***********************
For i = 1 To pq
For r = 1 To N - 1
H(i, r) = -Yv(i, r) * e(i) + Yr(i, r) * f(i) + bb(i, r)
M(i, r) = Yr(i, r) * e(i) + Yv(i, r) * f(i) + a(i, r)
J(i, r) = -Yr(i, r) * e(i) - Yv(i, r) * f(i) + a(i, r)
L(i, r) = -Yv(i, r) * e(i) + Yr(i, r) * f(i) - bb(i, r)
J1(2 * i - 1, 2 * r - 1) = H(i, r)
J1(2 * i - 1, 2 * r) = M(i, r)
J1(2 * i, 2 * r - 1) = J(i, r)
J1(2 * i, 2 * r) = L(i, r)
Next r
Next i
For i = pq + 1 To N - 1
For r = 1 To N - 1
H(i, r) = -Yv(i, r) * e(i) + Yr(i, r) * f(i) + bb(i, r)
M(i, r) = Yr(i, r) * e(i) + Yv(i, r) * f(i) + a(i, r)
If i = r Then
T(i, r) = 2 * f(i)
S(i, r) = 2 * e(i)
End If
J1(2 * i - 1, 2 * r - 1) = H(i, r)
J1(2 * i - 1, 2 * r) = M(i, r)
J1(2 * i, 2 * r - 1) = T(i, r)
J1(2 * i, 2 * r) = S(i, r)
Next r
Next i
Debug.Print "第" & dc & "次迭代:"
Debug.Print spr
For i = 1 To 2 * (pq + pv)
For r = 1 To 2 * (pq + pv)
Debug.Print Tab(r * 20); J1(i, r);
Next r
' Picture1(0).Print
Next i
'***************解修正方程组***************************
For i = 1 To pq + pv
opq(2 * i - 1) = oP(i)
opq(2 * i) = oQ(i)
Next i
For i = 1 To 2 * (N - 1)
dt = J1(i, i)
opq(i) = opq(i) / dt
For r = i To 2 * (N - 1)
J1(i, r) = J1(i, r) / dt
Next r
For k = i + 1 To 2 * (N - 1)
dt = J1(k, i)
For r = i + 1 To 2 * (N - 1)
J1(k, r) = J1(k, r) - dt * J1(i, r)
Next r
opq(k) = opq(k) - dt * opq(i)
J1(k, i) = 0
Next k
Next i
For i = 2 * (N - 1) - 1 To 1 Step -1
sum = 0
For r = i + 1 To 2 * (N - 1)
sum = sum + J1(i, r) * opq(r)
Next r
opq(i) = opq(i) - sum
X(i) = opq(i)
Next i
X(2 * (N - 1)) = opq(2 * (N - 1))
' Picture1(2).Refresh
' Picture1(0).Visible = False
' Picture1(1).Visible = False
' Picture1(2).Visible = True
' Picture1(2).Print "第" & ddcs & "次解出的of,oe:"
' For i = 1 To 2 * pq
' Picture1(2).Print X(i),
' Next i
'***********************找出最大的maxf和maxe***************************
maxf = Abs(X(1))
For i = 1 To 2 * (N - 1) - 1 Step 2
If maxf <= Abs(X(i)) Then maxf = Abs(X(i))
Next i
maxe = Abs(X(2))
For i = 2 To 2 * (N - 1) Step 2
If maxe <= Abs(X(i)) Then maxe = Abs(X(i))
Next i
If maxf > JD Or maxe > JD Then
For i = 1 To pq + pv
f(i) = f(i) + X(2 * i - 1)
Next i
For i = 1 To pq + pv
e(i) = e(i) + X(2 * i)
Next i
' Picture1(0).Print "第" & ddcs & "次迭代算出的f,e:"
' For i = 1 To N - 1
' Picture1(0).Print f(i), e(i),
' Next i
' Picture1(0).Print
ddcs = ddcs + 1
GoTo abd
End If
'***********************计算平衡功率************************
For i = 1 To N
Sumr = Sumr + Yr(1, i) * e(i) - Yv(1, i) * f(i)
Sumv = Sumv - (Yv(1, i) * e(i) + Yr(1, i) * f(i))
Next i
P(1) = e(1) * Sumr - f(1) * Sumv
Q(1) = e(1) * Sumv + f(1) * Sumr
' Picture2.Print "平衡功率:"
Picture2.Print "S1 =" & P(1) & "+j" & Q(1)
'''''''''''''''''''''线路功率''''''''''''''''''''''''''''''
For i = 1 To N
sum1(i, r) = 0
sum2(i, r) = 0
sij1(i, r) = 0
sij2(i, r) = 0
For r = 1 To N
sum1(i, r) = e(i) * Yr(i, 0) - f(i) * Yv(i, 0) + (e(i) - e(r)) * Yr(i, r) - (f(i) - f(r)) * Yv(i, r)
sum2(i, r) = e(i) * Yv(i, 0) + f(i) * Yr(i, 0) + (f(i) - f(r)) * Yr(i, r) + (e(i) - e(r)) * Yv(i, r)
sij1(i, r) = e(i) * sum1(i, r) + f(i) * sum2(i, r)
sij2(i, r) = f(i) * sum1(i, r) - e(i) * sum2(i, r)
Next r
Next i
Picture3.Print "线路功率:"
For i = 1 To N
For r = 1 To N
If sij2(i, r) >= 0 Then
Picture3.Print sij1(i, r) & "+j" & sij2(i, r),
Else
Picture3.Print sij1(i, r) & "-j" & Abs(sij2(i, r)),
End If
Next r
Picture3.Print spr
Next i
'******************网络损耗*****************************
For i = 1 To N
Se1 = P(i) + Se1
Se2 = Q(i) + Se2
Next i
Picture3.Print spr
Picture3.Print "网络总损耗为:"
Picture3.Print "Se=" & Se1 & "+j" & Se2
'******************节点电压*****************************
Picture3.Print "节点电压为:"
For i = 1 To N
U(i) = Sqr(e(i) * e(i) + f(i) * f(i))
o(i) = Atn(f(i) / e(i)) / pi * 180
Picture3.Print spr
Picture3.Print "U(" & i & ")=" & U(i) & "(" & o(i) & ")",
Picture3.Print
Next i
End Select
End Sub
Private Sub Command2_Click()
End
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -