请高手指点下列子程序的功能作用(2)。
Sub init()
frmMain.MasterAdapt.Enabled = False
frmMain.MasterExit.Enabled = False
frmMain.TabelMaintain.Enabled = False
frmMain.ControlInit.Enabled = False
Dim h%(31), poll%(99), e%, i As Long, j%
For i = 2 To 31
h%(i) = 0
Next i
h%(1) = 1
For i = 8 To 99
poll%(i) = 0
Next i
For i = 1 To 7
poll%(i) = 1
Next i
Call idcb_int(1, h%(1), poll%(1), &H100, e%)
For j% = 1 To 84
For i = 1 To 360 '1440
DTrend(j%, i) = 0
Next i
Next j%
Call PDefineInit
Call PAlarmInit
Call ACollectInit
Call AdapterInit
TNumber = 0
FTAny = False
FTBT = False
FTOne = False
TrendOneIndex = 1
For i = 1 To 4
VoiceFlag(i) = False
Next i
For i = 1 To 8
AdjustErr5(i) = 0
AdjustErr6(i) = 0
Next i
' frmControl.Show
' frmControl.Hide
' frmFDataList.Show
' frmFDataList.Hide
' frmIndicator.Show
' frmIndicator.Hide
' frmLDataList.Show
' frmLDataList.Hide
' frmPDataList.Show
' frmPDataList.Hide
' frmRDataList.Show
' frmRDataList.Hide
' frmTDataList.Show
' frmTDataList.Hide
' frmTrend4ofANY.Show
' frmTrend4ofANY.Hide
' frmTrend4ofBT.Show
' frmTrend4ofBT.Hide
' frmTrendOne.Show
' frmTrendOne.Hide
frmModel.Show
frmModel.Hide
End Sub
Sub Loop2UpOut()
Dim a As Single, e As Integer, c$
c$ = "SET330;CO;"
If Data(76) < 20 Then Exit Sub
If Data(76) < 38 Then
a = 0.75
Call IdcbTx(5, c$, 1, a, e)
Else
If Data(1) < 4.9 Then
a = 0.75
Call IdcbTx(5, c$, 1, a, e)
End If
If Data(1) > 5 Then
a = 0.95
Call IdcbTx(5, c$, 1, a, e)
End If
End If
End Sub
Sub AdapterInit()
'初始化时必须对调节器的PID参数重新设定
Dim a(10) As Single, CC1 As Single, e As Integer, ad As Integer, c$, sx As Single, xx As Single
With frmCPAdapt.AdodcPIDSet
.Recordset.MoveFirst
ad = .Recordset("调节器地址")
a(1) = .Recordset("比例带1")
a(2) = .Recordset("积分时间1")
a(3) = .Recordset("微分时间1")
c$ = "SET300;CO;"
Call IdcbTx(ad, c$, 1, a(1), e)
c$ = "SET301;CO;"
Call IdcbTx(ad, c$, 1, a(2), e)
c$ = "SET302;CO;"
Call IdcbTx(ad, c$, 1, a(3), e)
a(1) = .Recordset("比例带2")
a(2) = .Recordset("积分时间2")
a(3) = .Recordset("微分时间2")
c$ = "SET320;CO;"
Call IdcbTx(ad, c$, 1, a(1), e)
c$ = "SET321;CO;"
Call IdcbTx(ad, c$, 1, a(2), e)
c$ = "SET322;CO;"
Call IdcbTx(ad, c$, 1, a(3), e)
a(4) = .Recordset("采样周期")
c$ = "SET315;CO;"
Call IdcbTx(ad, c$, 1, a(4), e)
c$ = "SET335;CO;"
Call IdcbTx(ad, c$, 1, a(4), e)
xx = .Recordset("量程下限")
sx = .Recordset("量程上限")
a(5) = (.Recordset("给定值") - xx) / (sx - xx)
c$ = "SET500;CO;"
IdcbTx ad, c$, 1, a(5), e
c$ = "SET210;CO;"
Call IdcbTx(ad, c$, 1, a(5), e)
a(1) = 0
a(2) = 1
a(3) = 100
a(4) = -1
a(5) = 100
a(6) = 20
a(7) = 5
a(8) = 1.8
a(9) = -1
c$ = "SET303;CO;"
IdcbTx ad, c$, 9, a(1), e
a(1) = 0
a(2) = 1
a(3) = 100
a(4) = -1
a(5) = 100
a(6) = 20
a(7) = 5
a(8) = 0.9
a(9) = 0
c$ = "SET323;CO;"
IdcbTx ad, c$, 9, a(1), e
.Recordset.MoveLast
ad = .Recordset("调节器地址")
a(1) = .Recordset("比例带1")
a(2) = .Recordset("积分时间1")
a(3) = .Recordset("微分时间1")
c$ = "SET300;CO;"
Call IdcbTx(ad, c$, 1, a(1), e)
c$ = "SET301;CO;"
Call IdcbTx(ad, c$, 1, a(2), e)
c$ = "SET302;CO;"
Call IdcbTx(ad, c$, 1, a(3), e)
a(1) = .Recordset("比例带2")
a(2) = .Recordset("积分时间2")
a(3) = .Recordset("微分时间2")
c$ = "SET320;CO;"
Call IdcbTx(ad, c$, 1, a(1), e)
c$ = "SET321;CO;"
Call IdcbTx(ad, c$, 1, a(2), e)
c$ = "SET322;CO;"
Call IdcbTx(ad, c$, 1, a(3), e)
a(4) = .Recordset("采样周期")
c$ = "SET315;CO;"
Call IdcbTx(ad, c$, 1, a(4), e)
c$ = "SET335;CO;"
Call IdcbTx(ad, c$, 1, a(4), e)
xx = .Recordset("量程下限")
sx = .Recordset("量程上限")
a(5) = (.Recordset("给定值") - xx) / (sx - xx)
c$ = "SET500;CO;"
IdcbTx ad, c$, 1, a(5), e
c$ = "SET210;CO;"
Call IdcbTx(ad, c$, 1, a(5), e)
a(1) = 0
a(2) = 1
a(3) = 100
a(4) = -1
a(5) = 100
a(6) = 20
a(7) = 5
a(8) = 1.8
a(9) = -1
c$ = "SET303;CO;"
IdcbTx ad, c$, 9, a(1), e
a(1) = 0
a(2) = 1
a(3) = 100
a(4) = -1
a(5) = 100
a(6) = 20
a(7) = 5
a(8) = 0.75
a(9) = 0.35
c$ = "SET323;CO;"
IdcbTx ad, c$, 9, a(1), e
End With
End Sub
Sub CollectAndPermite()
Dim k1 As Single, k2 As Single, j%, i As Long, k As Integer
On Error Resume Next
Call AdjustErrPermit
Call CollectData
' frmMain.AdodcPDefine.Recordset.MoveFirst
With PPP
For i = 1 To PNumber
dfn = .ID(i)
'模拟数据
' Data(dfn) = .VSet(i) + (.MLUp(i) - .DLDown(i)) * 0.1 * (0.5 - 1 * Rnd(1))
If .BDBH(i) = True Then Data(dfn) = (.MLUp(i) - .MLDown(i)) * Data(dfn) + .MLDown(i)
Data(dfn) = IIf(Data(dfn) < .MLDown(i), .MLDown(i), Data(dfn))
Data(dfn) = IIf(Data(dfn) > .MLUp(i), .MLUp(i), Data(dfn))
.Data(i) = Data(dfn)
' frmMain.Text1(i - 1) = Format(Data(i), "0.00")
Next i
Data(80) = Data(1)
.Data(80) = Data(1)
End With
Call FluxPermit
'累计量
With frmMain.AdodcFluxTotal
.Recordset("主汽累计量") = .Recordset("主汽累计量") + Data(76) / 20 / 60
.Recordset("给水累计量") = .Recordset("给水累计量") + Data(77) / 20 / 60
.Recordset("减温水累计量") = .Recordset("减温水累计量") + Data(79) / 20 / 60
.Recordset.Update
End With
For i = 1 To PNumber
frmMain.AdodcRealTime.Recordset(i) = Data(i)
Next i
frmMain.AdodcRealTime.Recordset("时间") = TTT
frmMain.AdodcRealTime.Recordset.Update
Call AlarmPermite
Call Loop2UpOut
frmMain.PercentWaterPosition.PortionValue = Data(75)
If RListFlag Then Call frmRDataList.RListAdd
If TListFlag Then Call frmTDataList.TListAdd
If PListFlag Then Call frmPDataList.PListAdd
If LListFlag Then Call frmLDataList.LListAdd
If FListFlag Then Call frmFDataList.FListAdd
If ControlFlag Then Call ControlPermite
If frmMain.TxtBiger.Visible Then
frmMain.TxtBiger.Text = PPP.PName(PBigerIndex + 1) + " " + frmMain.Text1(PBigerIndex).Text
frmMain.TxtBiger.Width = Len(PPP.PName(Index + 1)) * 27 + (Len(frmMain.Text1(Index).Text) + 1) * 16
End If
End Sub