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

📄 form2.frm

📁 天津大学电机试验台程序,可以测试电机启动电流
💻 FRM
📖 第 1 页 / 共 3 页
字号:
'form2load = False
'End If



ErrCde = DRV_DeviceOpen(0, DeviceHandle)
'ptDevGetFeatures.buffer = DRV_GetAddress(lpDevFeatures)
'ErrCde = DRV_DeviceGetFeatures(DeviceHandle, ptDevGetFeatures)

lpCounterEventStart.counter = 3
ErrCde = DRV_CounterEventStart(DeviceHandle, lpCounterEventStart)

lpCounterEventStarts.counter = 2
ErrCde = DRV_CounterEventStart(DeviceHandle, lpCounterEventStarts)

lpCounterEventStartc.counter = 5
ErrCde = DRV_CounterEventStart(DeviceHandle, lpCounterEventStartc)

  Timer1.Enabled = False
  Command2.Enabled = False
  Command3.Enabled = False
  Command4.Enabled = False
  Option1.Enabled = False
  Option2.Enabled = False
  Label2.Caption = "电流"
  Label4.Caption = "转矩"
  Label9.Caption = "转速"
  Label7.Caption = "功率"
  
  Dim msg
  msg = MsgBox("请做安全、电气连接、冷却水等项检查", vbOKOnly, "提示窗口")
End Sub

Private Sub Form_Paint()
'Show
 Dim i As Integer, j As Integer
 
 'picture1画图
 Cls
 
 Picture1.Scale (0, 0)-(50, 25)
 For i = 1 To 24
 Picture1.Line (0, i)-(50, i)
 Next i
 Cls
 For j = 1 To 49
 Picture1.Line (j, 0)-(j, 25)
 Next j
 
 Cls
  Picture2.Scale (0, 0)-(50, 20)
 For i = 1 To 19
 Picture2.Line (0, i)-(50, i)
 Next i
 Cls
 For j = 1 To 49
 Picture2.Line (j, 0)-(j, 20)
 Next j
 
 
 Cls
  Picture3.Scale (0, 0)-(50, 20)
 For i = 1 To 19
 Picture3.Line (0, i)-(50, i)
 Next i
 Cls
 For j = 1 To 49
 Picture3.Line (j, 0)-(j, 20)
 Next j
 
X = Picture2.Left - 300
Y = Picture2.Top + Picture2.Height + 50
For reg1 = 0 To 5 Step 1
CurrentX = X + 150
CurrentY = Y + 0
Print reg1;
X = X + Picture2.Width / 5
Next reg1
 
X = Picture2.Left - 440
Y = Picture2.Top + Picture2.Height - 50
For reg1 = 0 To 3000 Step 300
CurrentX = X
CurrentY = Y
Print reg1;
Y = Y - Picture1.Height / 10
Next reg1
 
  'picture2画图
  
 
X = Picture1.Left - 300
Y = Picture1.Top + Picture1.Height + 50
For reg1 = 0 To 5 Step 1
CurrentX = X + 150
CurrentY = Y + 0
Print reg1;
X = X + Picture1.Width / 5
Next reg1
  
X = Picture1.Left - 350
Y = Picture1.Top + Picture1.Height - 50
For reg1 = 0 To 250 Step 25
CurrentX = X
CurrentY = Y
Print reg1;
Y = Y - Picture1.Height / 10
Next reg1

'picture3画图

X = Picture3.Left - 300
Y = Picture3.Top + Picture3.Height + 50
For reg1 = 0 To 5 Step 1
CurrentX = X + 150
CurrentY = Y + 0
Print reg1;
X = X + Picture3.Width / 5
Next reg1
 
 X = Picture3.Left - 350
Y = Picture3.Top + Picture3.Height - 50
For reg1 = 0 To 150 Step 15
CurrentX = X
CurrentY = Y
Print reg1;
Y = Y - Picture3.Height / 10
Next reg1
Exit Sub
End Sub

Private Sub List1_Click()
Dim myfield
If (List1.Text = "额定试验") Then
If (edhavebedone = False) Then
Set eddb = OpenDatabase("F:\天津大学电机试验台程序\试验台数据库\额定2")
Set edtable = eddb.CreateTableDef(reportname)
Set myfield = edtable.CreateField("时间", dbText, 50)
edtable.Fields.Append myfield
Set myfield = edtable.CreateField("速度", dbText, 50)
edtable.Fields.Append myfield
Set myfield = edtable.CreateField("速度频率", dbText, 50)
edtable.Fields.Append myfield
Set myfield = edtable.CreateField("转矩", dbText, 50)
edtable.Fields.Append myfield
Set myfield = edtable.CreateField("转矩频率", dbText, 50)
edtable.Fields.Append myfield
Set myfield = edtable.CreateField("电流", dbText, 50)
edtable.Fields.Append myfield
Set myfield = edtable.CreateField("电流频率", dbText, 50)
edtable.Fields.Append myfield
eddb.TableDefs.Append edtable
Set edrd = eddb.OpenRecordset(reportname, dbOpenTable)
edhavebedone = True
Else
Set eddb = OpenDatabase("F:\天津大学电机试验台程序\试验台数据库\额定2")
Set edrd = eddb.OpenRecordset(reportname, dbOpenTable)
End If
End If

If (List1.Text = "空载试验") Then
If (kzhavebedone = False) Then
Set kzdb = OpenDatabase("F:\天津大学电机试验台程序\试验台数据库\空载2")
Set kztable = kzdb.CreateTableDef(reportname)
Set myfield = kztable.CreateField("时间", dbText, 50)
kztable.Fields.Append myfield
Set myfield = kztable.CreateField("速度", dbText, 50)
kztable.Fields.Append myfield
Set myfield = kztable.CreateField("速度频率", dbText, 50)
kztable.Fields.Append myfield
Set myfield = kztable.CreateField("转矩", dbText, 50)
kztable.Fields.Append myfield
Set myfield = kztable.CreateField("转矩频率", dbText, 50)
kztable.Fields.Append myfield
Set myfield = kztable.CreateField("电流", dbText, 50)
kztable.Fields.Append myfield
Set myfield = kztable.CreateField("电流频率", dbText, 50)
kztable.Fields.Append myfield
kzdb.TableDefs.Append kztable
Set kzrd = kzdb.OpenRecordset(reportname, dbOpenTable)
kzhavebedone = True
Else
Set kzdb = OpenDatabase("F:\天津大学电机试验台程序\试验台数据库\空载2")
Set kzrd = kzdb.OpenRecordset(reportname, dbOpenTable)
End If
End If

If (List1.Text = "启动试验") Then
If (qdhavebedone = False) Then
Set qddb = OpenDatabase("F:\天津大学电机试验台程序\试验台数据库\启动2")
Set qdtable = qddb.CreateTableDef(reportname)
Set myfield = qdtable.CreateField("时间", dbText, 50)
qdtable.Fields.Append myfield
Set myfield = qdtable.CreateField("速度", dbText, 50)
qdtable.Fields.Append myfield
Set myfield = qdtable.CreateField("速度频率", dbText, 50)
qdtable.Fields.Append myfield
Set myfield = qdtable.CreateField("转矩", dbText, 50)
qdtable.Fields.Append myfield
Set myfield = qdtable.CreateField("转矩频率", dbText, 50)
qdtable.Fields.Append myfield
Set myfield = qdtable.CreateField("电流", dbText, 50)
qdtable.Fields.Append myfield
Set myfield = qdtable.CreateField("电流频率", dbText, 50)
qdtable.Fields.Append myfield
qddb.TableDefs.Append qdtable
Set qdrd = qddb.OpenRecordset(reportname, dbOpenTable)
qdhavebedone = True
Else
Set qddb = OpenDatabase("F:\天津大学电机试验台程序\试验台数据库\启动2")
Set qdrd = qddb.OpenRecordset(reportname, dbOpenTable)
End If
End If

If (List1.Text = "堵转试验") Then
If (dzhavebedone = False) Then
Set dzdb = OpenDatabase("F:\天津大学电机试验台程序\试验台数据库\堵转2")
Set dztable = dzdb.CreateTableDef(reportname)
Set myfield = dztable.CreateField("时间", dbText, 50)
dztable.Fields.Append myfield
Set myfield = dztable.CreateField("速度", dbText, 50)
dztable.Fields.Append myfield
Set myfield = dztable.CreateField("速度频率", dbText, 50)
dztable.Fields.Append myfield
Set myfield = dztable.CreateField("转矩", dbText, 50)
dztable.Fields.Append myfield
Set myfield = dztable.CreateField("转矩频率", dbText, 50)
dztable.Fields.Append myfield
Set myfield = dztable.CreateField("电流", dbText, 50)
dztable.Fields.Append myfield
Set myfield = dztable.CreateField("电流频率", dbText, 50)
dztable.Fields.Append myfield
dzdb.TableDefs.Append dztable
Set dzrd = dzdb.OpenRecordset(reportname, dbOpenTable)
dzhavebedone = True
Else
Set dzdb = OpenDatabase("F:\天津大学电机试验台程序\试验台数据库\堵转2")
Set dzrd = dzdb.OpenRecordset(reportname, dbOpenTable)
End If
End If

Option1.Enabled = True
Option2.Enabled = True
Label1.Caption = List1.Text
Label2.Caption = Mid(List1.Text, 1, 2) + "电流"
Label4.Caption = Mid(List1.Text, 1, 2) + "转矩"
Label9.Caption = Mid(List1.Text, 1, 2) + "转速"
Label7.Caption = Mid(List1.Text, 1, 2) + "功率"
End Sub

Private Sub Option1_Click()
Command2.Enabled = True
dirkey = 1
End Sub

Private Sub Option2_Click()
Command2.Enabled = True
dirkey = 2
End Sub



Private Sub Timer1_Timer()
Dim overflow As Integer
Dim count As Long
Dim db As Database
Dim zero
Dim rd

Set db = OpenDatabase("F:\天津大学电机试验台程序\试验台数据库\零点")
Set rd = db.OpenRecordset("零点", dbOpenTable)
zero = Val(rd.Fields("试验台二零点"))


lpCounterEventRead.counter = lpCounterEventStart.counter
lpCounterEventRead.overflow = DRV_GetAddress(overflow)
lpCounterEventRead.count = DRV_GetAddress(count)
ErrCde = DRV_CounterEventRead(DeviceHandle, lpCounterEventRead)
marcount1 = count - marcount2
If (marcount1 < 0) Then marcount1 = marcount1 + 65535
marcount2 = count

lpCounterEventReads.counter = lpCounterEventStarts.counter
lpCounterEventReads.overflow = DRV_GetAddress(overflow)
lpCounterEventReads.count = DRV_GetAddress(count)
ErrCde = DRV_CounterEventRead(DeviceHandle, lpCounterEventReads)
speedcount1 = count - speedcount2
If (speedcount1 < 0) Then speedcount1 = speedcount1 + 65535
speedcount2 = count

lpCounterEventReadc.counter = lpCounterEventStartc.counter
lpCounterEventReadc.overflow = DRV_GetAddress(overflow)
lpCounterEventReadc.count = DRV_GetAddress(count)
ErrCde = DRV_CounterEventRead(DeviceHandle, lpCounterEventReadc)
currentcount1 = count - currentcount2
If (currentcount1 < 0) Then currentcount1 = currentcount1 + 65535
currentcount2 = count

marf = marcount1 * 1000 / Timer1.Interval * 0.909
If (dirkey = 1) Then
mar = (marf - 10000) * 200 / 5000 - zero
End If
If (dirkey = 2) Then
mar = (10000 - marf) * 200 / 5000 + zero
End If
'mard = mar - tempmar
'If (mard > 20 Or mard < -mar) Then mar = tempmar
If (marx1 <= Shape1.Left + Shape1.Width) Then
marx1 = marx1 + Shape1.Width / 50
mary1 = Shape1.Height - mar * Shape1.Height / 250 - Shape1.Height / 50
End If

speedf = speedcount1 * 0.909 * 1000 / Timer1.Interval
speed = speedf
'speedd = speed - tempspeed
'If (speedd > 3000 Or speedd < -speed) Then speed = tempspeed
If (speedx1 <= Shape2.Left + Shape2.Width) Then
speedx1 = speedx1 + Shape2.Width / 50
speedy1 = Shape2.Height - speed * Shape2.Height / 3000
End If

currentf = currentcount1 * 0.909 * 1000 / Timer1.Interval
current = currentf * 150 / 10000
'currentd = current - tempcurrent
'If (currentd > 20 Or currentd < -current) Then current = tempcurrent
If (currentx1 <= Shape3.Left + Shape3.Width) Then
currentx1 = currentx1 + Shape3.Width / 50
currenty1 = Shape3.Height - current * Shape3.Height / 150
End If

If (n = 0) Then
n = 1
Exit Sub
End If

If (t <= 4.9) Then
t = t + 0.1
If (List1.Text = "额定试验") Then
If (edkey = 1) Then
edrd.AddNew
edrd.Fields(0) = Str(t)
edrd.Fields(1) = Str(speed)
edrd.Fields(2) = Str(speedf)
edrd.Fields(3) = Str(mar)
edrd.Fields(4) = Str(marf)
edrd.Fields(5) = Str(current)
edrd.Fields(6) = Str(currentf)
edrd.Update
End If
If (edkey = 2) Then
edrd.Edit
edrd.Fields(0) = Str(t)
edrd.Fields(1) = Str(speed)
edrd.Fields(2) = Str(speedf)
edrd.Fields(3) = Str(mar)
edrd.Fields(4) = Str(marf)
edrd.Fields(5) = Str(current)
edrd.Fields(6) = Str(currentf)
edrd.Update
edrd.MoveNext
End If
End If

If (List1.Text = "空载试验") Then
If (kzkey = 1) Then
kzrd.AddNew
kzrd.Fields(0) = Str(t)
kzrd.Fields(1) = Str(speed)
kzrd.Fields(2) = Str(speedf)
kzrd.Fields(3) = Str(mar)
kzrd.Fields(4) = Str(marf)
kzrd.Fields(5) = Str(current)
kzrd.Fields(6) = Str(currentf)
kzrd.Update
End If
If (kzkey = 2) Then
kzrd.Edit
kzrd.Fields(0) = Str(t)
kzrd.Fields(1) = Str(speed)
kzrd.Fields(2) = Str(speedf)
kzrd.Fields(3) = Str(mar)
kzrd.Fields(4) = Str(marf)
kzrd.Fields(5) = Str(current)
kzrd.Fields(6) = Str(currentf)
kzrd.Update
kzrd.MoveNext
End If
End If

If (List1.Text = "启动试验") Then
If (qdkey = 1) Then
qdrd.AddNew
qdrd.Fields(0) = Str(t)
qdrd.Fields(1) = Str(speed)
qdrd.Fields(2) = Str(speedf)
qdrd.Fields(3) = Str(mar)
qdrd.Fields(4) = Str(marf)
qdrd.Fields(5) = Str(current)
qdrd.Fields(6) = Str(currentf)
qdrd.Update
End If
If (qdkey = 2) Then
qdrd.Edit
qdrd.Fields(0) = Str(t)
qdrd.Fields(1) = Str(speed)
qdrd.Fields(2) = Str(speedf)
qdrd.Fields(3) = Str(mar)
qdrd.Fields(4) = Str(marf)
qdrd.Fields(5) = Str(current)
qdrd.Fields(6) = Str(currentf)
qdrd.Update
qdrd.MoveNext
End If
End If

If (List1.Text = "堵转试验") Then
If (dzkey = 1) Then
dzrd.AddNew
dzrd.Fields(0) = Str(t)
dzrd.Fields(1) = Str(speed)
dzrd.Fields(2) = Str(speedf)
dzrd.Fields(3) = Str(mar)
dzrd.Fields(4) = Str(marf)
dzrd.Fields(5) = Str(current)
dzrd.Fields(6) = Str(currentf)
dzrd.Update
End If
If (dzkey = 2) Then
dzrd.Edit
dzrd.Fields(0) = Str(t)
dzrd.Fields(1) = Str(speed)
dzrd.Fields(2) = Str(speedf)
dzrd.Fields(3) = Str(mar)
dzrd.Fields(4) = Str(marf)
dzrd.Fields(5) = Str(current)
dzrd.Fields(6) = Str(currentf)
dzrd.Update
dzrd.MoveNext
End If
End If
Else
Command3.Enabled = True
Timer1.Enabled = False
End If

tempmar = mar
tempspeed = speed
tempcurrent = current

Picture1.Line (marx0, mary0)-(marx1, mary1), RGB(255, 0, 0)
marx0 = marx1
mary0 = mary1

Picture2.Line (speedx0, speedy0)-(speedx1, speedy1), RGB(255, 0, 0)
speedx0 = speedx1
speedy0 = speedy1

Picture3.Line (currentx0, currenty0)-(currentx1, currenty1), RGB(255, 0, 0)
currentx0 = currentx1
currenty0 = currenty1

End Sub

Private Sub Timer2_Timer()
Dim overflow As Integer
Dim count As Long
Dim db As Database
Dim rd

lpCounterEventRead.counter = lpCounterEventStart.counter
lpCounterEventRead.overflow = DRV_GetAddress(overflow)
lpCounterEventRead.count = DRV_GetAddress(count)
ErrCde = DRV_CounterEventRead(DeviceHandle, lpCounterEventRead)
marcount1 = count - marcount2
If (marcount1 < 0) Then marcount1 = marcount1 + 65535
marcount2 = count

If (ldn < 5) Then
ldn = ldn + 1
Exit Sub
End If

If (ldn < 20) Then
ldn = ldn + 1



ldf = marcount1 * 1000 / Timer1.Interval * 0.909

ld = (ldf - 10000) * 200 / 5000

ldsum = ldsum + ld



Else
Text5.Text = Format(Str(ldsum / 15), "fixed")

ldrd.Edit
ldrd.Fields(1) = Format(Str(ldsum / 15), "fixed")
ldrd.Update

Command5.Enabled = True

Timer2.Enabled = False

End If
End Sub

⌨️ 快捷键说明

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