⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 复件 chaoliu.frm

📁 这是一个用VB编程的电力系统潮流程序。节点少了点
💻 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 + -