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

📄 form3.frm

📁 用vb编写的配电网潮流计算程序。使用的方法是前推后代法。
💻 FRM
📖 第 1 页 / 共 2 页
字号:
VERSION 5.00
Object = "{67397AA1-7FB1-11D0-B148-00A0C922E820}#6.0#0"; "MSADODC.OCX"
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   8070
   ClientLeft      =   60
   ClientTop       =   390
   ClientWidth     =   10500
   LinkTopic       =   "Form1"
   ScaleHeight     =   8070
   ScaleMode       =   0  'User
   ScaleWidth      =   10500
   StartUpPosition =   3  '窗口缺省
   Begin VB.TextBox Text1 
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   14.25
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   855
      Left            =   960
      TabIndex        =   3
      Text            =   "Text1"
      Top             =   6000
      Width           =   4935
   End
   Begin MSAdodcLib.Adodc Adodc1 
      Height          =   495
      Left            =   7920
      Top             =   6480
      Visible         =   0   'False
      Width           =   2175
      _ExtentX        =   3836
      _ExtentY        =   873
      ConnectMode     =   0
      CursorLocation  =   3
      IsolationLevel  =   -1
      ConnectionTimeout=   15
      CommandTimeout  =   30
      CursorType      =   3
      LockType        =   3
      CommandType     =   8
      CursorOptions   =   0
      CacheSize       =   50
      MaxRecords      =   0
      BOFAction       =   0
      EOFAction       =   0
      ConnectStringType=   1
      Appearance      =   1
      BackColor       =   -2147483643
      ForeColor       =   -2147483640
      Orientation     =   0
      Enabled         =   -1
      Connect         =   ""
      OLEDBString     =   ""
      OLEDBFile       =   ""
      DataSourceName  =   ""
      OtherAttributes =   ""
      UserName        =   ""
      Password        =   ""
      RecordSource    =   ""
      Caption         =   "Adodc1"
      BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
         Name            =   "宋体"
         Size            =   9
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      _Version        =   393216
   End
   Begin VB.CommandButton Command5 
      Caption         =   "前推回代"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   14.25
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   855
      Left            =   8520
      TabIndex        =   2
      Top             =   2880
      Width           =   1575
   End
   Begin VB.CommandButton Command4 
      Caption         =   "绘  图"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   14.25
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   855
      Left            =   8520
      TabIndex        =   1
      Top             =   960
      Width           =   1575
   End
   Begin VB.CommandButton Command2 
      Caption         =   "结  束"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   14.25
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   855
      Left            =   8520
      TabIndex        =   0
      Top             =   4680
      Width           =   1575
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim lin As Integer
Dim t As Variant, n As Integer, p As Integer               't绘图时标记序号的点/n,p绘图和计算时用到的变量
Dim dq As Integer, z As Integer, w As Integer, f As Integer  '定义dq为当前点/z为间隔/w为步进/f为符号标记
Dim n0 As Integer, n1 As Integer, n2 As Integer                '定义n0,n1,n2为前推回代中用于标记数组元素个数的变量
Dim Ia(69) As Double, Ib(69) As Double                         '定义ia,ib为注入节点的电流的实部和虚部
Dim Ua(69) As Double, Ub(69) As Double                         '定义ua和ub为赋给的节点电压
Dim Ila(69) As Double, Ilb(69) As Double                        '定义ila,ilb为支路电流
Dim Ua1(69) As Double, Ub1(69) As Double '定义ua1,ub1为迭代的节点电压
Dim Ua2(69) As Double, Ub2(69) As Double '定义ua1,ub1为迭代的节点电压
Dim Sa(69) As Double, Sb(69) As Double
Dim Ploss As Double
Dim rr(1 To 68) As Double, xx(1 To 68) As Double, pp(1 To 68) As Double, qq(1 To 68) As Double  '定义支路电阻,电抗/节点有功和无功功率
Dim a(69, 4) As Integer, b(69, 4) As Integer, table(68, 68)             '定义后续数组a,前继数组b和连接表table
Dim DL(69) As Integer, FF(20) As Integer, cc(69) As Integer, s(3) As Integer '定义dl为队列和存放叶子节点的数组/ff为绘图数组/cc为标记已算完支路电流的数组/s为记录当前点的后续的数组
Private Sub Command2_Click()                  'command2,结束按钮
End
End Sub
Private Sub Command4_Click()
n = 1: DL(0) = 0                              'n:队列dl中元素的个数;dl队列,首元素是根节点
For i = 0 To 68                               '给数组a,b第0列赋值,即序号
   a(i, 0) = i
   b(i, 0) = i
Next
Do
  p = 1                                      'p记录叶子节点的个数
  For i = DL(0) To 68
      If table(DL(0), i) = 1 Then            '队列的首元素如果有后续
       
        a(DL(0), p) = i                      '队列首元素的后续为后续数组a赋值
        p = p + 1                            'p标记数组a的下标
         
         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                               '得到前继数组b
   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                                         '得到存放叶子节点的数组dl,p标记叶子节点的个数
For i = 0 To 68
  If a(i, 1) = 0 Then
    DL(p) = i
    p = p + 1
  End If
Next
z = p \ 2                                      '上半个平面分z个间距
w = (5000 - 1000) / z / 2                      '绘图空间的上限和下限分别是1000和5000,w表示纵向的步进值
q = 0                                          'q标记支链上的分支点个数
For i = 0 To DL(0)
    For j = 2 To 3
       If a(i, j) <> 0 Then
          FF(q) = a(i, j)                      'ff数组存放支链上的分支点
          q = q + 1
        End If
    Next
Next
For i = 0 To DL(0)                                            '主链:先划点(单位是50的圆),再序号,最后连线(其中重叠)
Circle (i * 300, 3000), 50
  Line (0, 3000)-(i * 300, 3000)
CurrentX = i * 300 - 20: CurrentY = 3000 + 20: Print i
Next
f = 1
For i = 0 To q - 1
    Circle (b(FF(i), 1) * 300, 3000 - f * z * w), 50             'b(ff(i),1)找到支链上的分支点的前继
    CurrentX = b(FF(i), 1) * 300 - 20: CurrentY = 3000 - f * z * w + 20: Print FF(i)
    Line (b(FF(i), 1) * 300, 3000)-(b(FF(i), 1) * 300, 3000 - f * z * w)            '画竖线
    t = FF(i)                                                                        '由支链上的分支点开始
    j = 1
    Do While a(t, 1) <> 0                                                            '分支点的后续不为0,则按主链画法,绘横线
           Circle (b(FF(i), 1) * 300 + j * 300, 3000 - f * z * w), 50
           CurrentX = b(FF(i), 1) * 300 + j * 300 - 20: CurrentY = 3000 - f * z * w + 20: Print t + 1
           Line (b(FF(i), 1) * 300, 3000 - f * z * w)-(b(FF(i), 1) * 300 + j * 300, 3000 - f * z * w)
           t = t + 1
           j = j + 1
    Loop
    f = -f                            'f只有正负两个值,即在画支链是,保证上面一条,下面一条
    If f > 0 Then
       z = z - 1                      '在f经过两次变换后,支链纵坐标的值需要加上或减去一个步进值
    End If
Next
End Sub
Private Sub Command5_Click()
Adodc1.ConnectionString = "Provider=Microsoft.jet.OLeDB.3.51;Data Source=" & App.Path & "\db2.mdb;" '数据库名
Adodc1.RecordSource = "select * from data" '查询语句
Adodc1.Refresh
     Adodc1.Recordset.MoveFirst '数据读取
     For i = 1 To 68
      rr(i) = Adodc1.Recordset.Fields(4)
      xx(i) = Adodc1.Recordset.Fields(5)
      pp(i) = Adodc1.Recordset.Fields(6)
      qq(i) = Adodc1.Recordset.Fields(7)
      If Not Adodc1.Recordset.BOF Then '判断是否到达记录集的尾部
         Adodc1.Recordset.MoveNext '指针向下移一行

⌨️ 快捷键说明

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