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

📄 form3.frm

📁 用vb编写的配电网潮流计算程序。使用的方法是前推后代法。
💻 FRM
📖 第 1 页 / 共 2 页
字号:
      End If
     Next
n = 1: DL(0) = 0: Ua1(0) = 10: Ub1(0) = 0 '准备
For i = 0 To 68
   a(i, 0) = i
   b(i, 0) = i
Next
Do
  p = 1
  For i = DL(0) To 68
      If table(DL(0), i) = 1 Then
        a(DL(0), p) = i
        p = p + 1
        DL(n) = i
        n = n + 1
       End If
   Next
   For j = 0 To 68
       DL(j) = DL(j + 1)
   Next
   n = n - 1
Loop While (n <> 0)
For i = 1 To 68
   For j = 0 To 68
      For p = 1 To 3
          If a(j, p) = i Then
            b(i, 1) = j
          End If
      Next
    Next
Next
p = 0
For i = 0 To 68
  If a(i, 1) = 0 Then
    DL(p) = i
    p = p + 1
  End If
Next
nnn = 0 '前推回代
Do
For i = 0 To 68
    Ia(i) = 0
    Ib(i) = 0
    Ila(i) = 0
    Ilb(i) = 0
    cc(i) = 0
Next
For i = 0 To p - 1
    dq = b(DL(i), 1)                     '找到一个叶子节点的前继作为当前点计算支路电流
    Ia(DL(i)) = (pp(DL(i)) * Ua(DL(i)) + qq(DL(i)) * Ub(DL(i))) / (Ua(DL(i)) * Ua(DL(i)) + Ub(DL(i)) * Ub(DL(i)))
    Ib(DL(i)) = (pp(DL(i)) * Ub(DL(i)) - qq(DL(i)) * Ua(DL(i))) / (Ua(DL(i)) * Ua(DL(i)) + Ub(DL(i)) * Ub(DL(i)))
    Ila(DL(i)) = Ia(DL(i))
    Ilb(DL(i)) = Ib(DL(i))
    cc(DL(i)) = 1                        '数组cc存放已经算完的支路的序号
    Do
    n1 = 0
    For j = 1 To 3                       '判断当前点是否有后续(一定有)
        If a(dq, j) <> 0 Then
           s(n1) = a(dq, j)              '数组s存放当前点的后续
           n1 = n1 + 1                   'n1记录后续的个数
        End If
    Next
    n0 = n1
    For j = 0 To n0 - 1
        If cc(s(j)) = 1 Then             '判断当前点的后续是否全部算完
           n0 = n0 - 1                   'n0=0即全部算完
        End If
    Next
    If n1 <> 0 Then
       If n0 = 0 Then
          For j = 1 To n1
              Ila(dq) = Ila(a(dq, j)) + Ila(dq)
              Ilb(dq) = Ilb(a(dq, j)) + Ilb(dq)
          Next
          Ila(dq) = Ila(dq) + (pp(dq) * Ua(dq) + qq(dq) * Ub(dq)) / (Ua(dq) * Ua(dq) + Ub(dq) * Ub(dq))
          Ilb(dq) = Ilb(dq) + (pp(dq) * Ub(dq) - qq(dq) * Ua(dq)) / (Ua(dq) * Ua(dq) + Ub(dq) * Ub(dq))
          cc(dq) = 1
         
          dq = b(dq, 1)                    '得到当前点的前继作为新的当前点
        End If
    End If
    Loop While n0 = 0 And dq <> 0                    '当前点的后续全部算完,则进行do循环,计算前继点(即新的当前点)
Next                                       '后续没有全部算完,则进行for循环,找到下一个叶子节点进行计算
n = 0
Adodc1.ConnectionString = "Provider=Microsoft.jet.OLeDB.3.51;Data Source=" & App.Path & "\结果.mdb;" '数据库名
Adodc1.RecordSource = "select * from 电流" '查询语句
Adodc1.Refresh
Adodc1.Recordset.AddNew '添加
For i = 1 To 68
Adodc1.Recordset.Fields(n) = Sqr(Ila(i) ^ 2 + Ilb(i) ^ 2)
n = n + 1
Next
Adodc1.Recordset.Update
Adodc1.Refresh
For i = 0 To 68
    Ua2(i) = Ua(i)
    Ub2(i) = Ub(i)
Next
For i = 0 To 68                            '由已知当前电压推算它的后继电压
    For j = 1 To 3
        If a(i, j) <> 0 Then
           Ua1(a(i, j)) = Ua(i) - Ila(a(i, j)) * rr(a(i, j)) / 1000 + Ilb(a(i, j)) * xx(a(i, j)) / 1000
           Ub1(a(i, j)) = Ub(i) - Ilb(a(i, j)) * rr(a(i, j)) / 1000 - Ila(a(i, j)) * xx(a(i, j)) / 1000
           Ua(a(i, j)) = Ua1(a(i, j))
           Ub(a(i, j)) = Ub1(a(i, j))
        End If
    Next
Next

n2 = 69
For i = 0 To 68
    If Abs(Ua2(i) - Ua(i)) < 0.000001 And Abs(Ub2(i) - Ub(i)) < 0.000001 Then
       n2 = n2 - 1
    End If
Next

If n2 = 0 Then
For i = 0 To 67
  Sa(i) = Ua(i) * Ila(i + 1) + Ub(i) * Ilb(i + 1)
  Sb(i) = Ua(i) * Ilb(i + 1) - Ub(i) * Ila(i + 1)
Next

For i = 1 To 68
  Ploss = Ploss + Sqr(Ila(i) ^ 2 + Ilb(i) ^ 2) * rr(i)
Next

Text1.Text = Ploss

Adodc1.ConnectionString = "Provider=Microsoft.jet.OLeDB.3.51;Data Source=" & App.Path & "\结果.mdb;" '数据库名
Adodc1.RecordSource = "select * from 潮流计算" '查询语句
Adodc1.Refresh
   For i = 1 To 68
   Adodc1.Recordset.AddNew '添加
     Adodc1.Recordset.Fields(0) = i
     Adodc1.Recordset.Fields(1) = Ua(i)
     Adodc1.Recordset.Fields(2) = Ub(i)
     Adodc1.Recordset.Fields(3) = Sqr(Ua(i) ^ 2 + Ub(i) ^ 2)
     Adodc1.Recordset.Fields(4) = Sqr(Sa(i) ^ 2 + Sb(i) ^ 2)
 Next
 Adodc1.Recordset.Update
 Adodc1.Refresh
 
End If

Loop While n2 <> 0 '不收敛,继续循环前推回代

End Sub
Private Sub Form_Load()
Adodc1.ConnectionString = "Provider=Microsoft.jet.OLeDB.3.51;Data Source=" & App.Path & "\db2.mdb;" '数据库名
Adodc1.RecordSource = "select * from data" '查询语句
Adodc1.Refresh
For i = 0 To 68
  For j = 0 To 68
      table(i, j) = 0
  Next
Next
table(0, 1) = 1
table(1, 0) = 1: table(1, 2) = 1
table(2, 1) = 1: table(2, 3) = 1: table(2, 27) = 1: table(2, 58) = 1
table(3, 2) = 1: table(3, 4) = 1: table(3, 35) = 1
table(4, 3) = 1: table(4, 5) = 1
table(5, 4) = 1: table(5, 6) = 1
table(6, 5) = 1: table(6, 7) = 1
table(7, 6) = 1: table(7, 8) = 1: table(7, 39) = 1
table(8, 7) = 1: table(8, 9) = 1: table(8, 41) = 1
table(9, 8) = 1: table(9, 10) = 1
table(10, 9) = 1:  table(10, 11) = 1: table(10, 54) = 1
table(11, 10) = 1: table(11, 12) = 1: table(11, 56) = 1
table(12, 11) = 1: table(12, 13) = 1
table(13, 12) = 1: table(13, 14) = 1
table(14, 13) = 1: table(14, 15) = 1
table(15, 14) = 1: table(15, 16) = 1
table(16, 15) = 1: table(16, 17) = 1
table(17, 16) = 1: table(17, 18) = 1
table(18, 17) = 1: table(18, 19) = 1
table(19, 18) = 1: table(19, 20) = 1
table(20, 19) = 1: table(20, 21) = 1
table(21, 20) = 1: table(21, 22) = 1
table(22, 21) = 1: table(22, 23) = 1
table(23, 22) = 1: table(23, 24) = 1
table(24, 23) = 1: table(24, 25) = 1
table(25, 24) = 1: table(25, 26) = 1
table(26, 25) = 1
table(27, 2) = 1: table(27, 28) = 1
table(28, 27) = 1: table(28, 29) = 1
table(29, 28) = 1: table(29, 30) = 1
table(30, 29) = 1: table(30, 31) = 1
table(31, 30) = 1: table(31, 32) = 1
table(32, 31) = 1: table(32, 33) = 1
table(33, 32) = 1: table(33, 34) = 1
table(34, 33) = 1
table(35, 3) = 1: table(35, 36) = 1
table(36, 35) = 1: table(36, 37) = 1
table(37, 36) = 1: table(37, 38) = 1
table(38, 37) = 1
table(39, 7) = 1:  table(39, 40) = 1
table(40, 39) = 1
table(41, 8) = 1: table(41, 42) = 1
table(42, 41) = 1: table(42, 43) = 1
table(43, 42) = 1: table(43, 44) = 1
table(44, 43) = 1: table(44, 45) = 1
table(45, 44) = 1: table(45, 46) = 1
table(46, 45) = 1: table(46, 47) = 1
table(47, 46) = 1: table(47, 48) = 1
table(48, 47) = 1: table(48, 49) = 1
table(49, 48) = 1: table(49, 50) = 1
table(50, 49) = 1: table(50, 51) = 1
table(51, 50) = 1: table(51, 52) = 1
table(52, 51) = 1: table(52, 53) = 1
table(53, 52) = 1
table(54, 10) = 1: table(54, 55) = 1
table(55, 54) = 1
table(56, 11) = 1: table(56, 57) = 1
table(57, 56) = 1
table(58, 2) = 1: table(58, 59) = 1
table(59, 58) = 1: table(59, 60) = 1
table(60, 59) = 1: table(60, 61) = 1
table(61, 60) = 1: table(61, 62) = 1
table(62, 61) = 1: table(62, 63) = 1
table(63, 62) = 1: table(63, 64) = 1
table(64, 63) = 1: table(64, 65) = 1
table(65, 64) = 1: table(65, 66) = 1
table(66, 65) = 1: table(66, 67) = 1
table(67, 66) = 1: table(67, 68) = 1
table(68, 67) = 1
For i = 0 To 68
    Ia(i) = 0
    Ib(i) = 0
    Ila(i) = 0
    Ilb(i) = 0
    Ua(i) = 10
    Ub(i) = 0
Next
End Sub



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -