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

📄 mainfrm.frm

📁 用于控制氧乐果生产的程序
💻 FRM
📖 第 1 页 / 共 4 页
字号:
'End With

frmPassword.EventChar = "fyf3touliao"
frmPassword.Show vbModal

End Sub

Private Sub mnuCreat3ChuLiang_Click()
On Error Resume Next
With Batchlsrs(3)
    .MoveLast
    If (Not IsNull(.Fields("pici"))) And (Not IsNull(.Fields("banci"))) And _
    (Not IsNull(.Fields("toulufang"))) And (Not IsNull(.Fields("yansuan"))) _
    And (Not IsNull(.Fields("bujialufang"))) And (Not IsNull(.Fields("zdph"))) _
    And (Not IsNull(.Fields("hcyzongliang"))) And _
    (Not IsNull(.Fields("chuliang"))) Then
        Call Inform(72)
    End If
End With
With frmPassword
    .EventChar = "fyf3chuliang"
    .Show vbModal
End With
End Sub
Private Sub mnuExit1_Click()
With frmPassword
    .EventChar = "end"
    .Show vbModal
End With
End Sub

Private Sub mnuExitAbout_Click()
With frmAbout
    .Show vbModal
End With
End Sub

Private Sub mnuGoOn1_Click()
With frmPassword
    .EventChar = "fyf1goon"
    .Show vbModal
End With
End Sub

Private Sub mnuGoOn2_Click()
With frmPassword
    .EventChar = "fyf2goon"
    .Show vbModal
End With
End Sub

Private Sub mnuGoOn3_Click()
With frmPassword
    .EventChar = "fyf3goon"
    .Show vbModal
End With
End Sub

Private Sub mnuHelp_Click()
With frmHelp
    .Show
    .SetFocus
End With
End Sub

Private Sub mnuMainBlackBox_Click()
With frmBlackBox
    .Show
    .SetFocus
End With
End Sub

Private Sub mnuMainUser_Click()
With frmUser
    .Show
    .SetFocus
End With
End Sub

'**********************************************
'年改变时,如果三个釜都不在投料,删除两年前的批次、
'连续黑匣子和报警记录
'**********************************************
Private Sub tmrDeleteRec_Timer()
On Error Resume Next
If (Not (gGongZuoZhuangTai(1))) And (Not (gGongZuoZhuangTai(2))) And Not ((gGongZuoZhuangTai(3))) Then
Select Case Year(Date)
    Case Else
    With Lsdb
        .Execute "delete * from detaills1 where riqi <" & "#" & Year(Now) - 1 & "/" & 1 & "/" & 1 & "#"
        .Execute "delete * from continous1 where riqi <" & "#" & Year(Now) - 1 & "/" & 1 & "/" & 1 & "#"
        .Execute "delete * from detaills2 where riqi <" & "#" & Year(Now) - 1 & "/" & 1 & "/" & 1 & "#"
        .Execute "delete * from continous2 where riqi <" & "#" & Year(Now) - 1 & "/" & 1 & "/" & 1 & "#"
        .Execute "delete * from detaills3 where riqi <" & "#" & Year(Now) - 1 & "/" & 1 & "/" & 1 & "#"
        .Execute "delete * from continous3 where riqi <" & "#" & Year(Now) - 1 & "/" & 1 & "/" & 1 & "#"
        .Execute "delete * from blackbox where riqi <" & "#" & Year(Now) - 1 & "/" & 1 & "/" & 1 & "#"
    End With
    Baojingdb.Execute "delete * from bjjl where date <" & "#" & Year(Now) - 1 & "/" & 1 & "/" & 1 & "#"
End Select

For i = 1 To 3
    Detaillsrs(i).Update
    Continousrs(i).Update
Next

BlackBoxRec.Update

End If
End Sub

Private Sub tmrSample_Timer()
'*****************************
'采样,报警
'*****************************
'********************
'一号反应釜
'********************
'反应釜温度
With fyf1_fyfWenDu
    '采样
    .Sample
    mfyf1WenDu(1) = .Value
    If fyf1_Control.WorkState Then
        '温度越上限报警
        If (mfyf1WenDu(0) <= .SheDingValue + .AlarmUp) And _
        (mfyf1WenDu(1) > .SheDingValue + .AlarmUp) Then Call nowAlarm( _
        "fyf1_fyfWenDu", True)
        '温度恢复正常提示
        If (mfyf1WenDu(1) <= .SheDingValue + .AlarmUp) And (mfyf1WenDu(0) _
        >= .SheDingValue + .AlarmUp) Then Call nowAlarm("fyf1_fyfWenDu", False)
    End If
    mfyf1WenDu(0) = mfyf1WenDu(1)
End With
'计量罐液位
With fyf1_jlgYeWei
    .Sample
    '投料过程中滤掉虚假液位
    If Not (gblnBeginSet(1)) Then mjlgYeWei(1) = .Value
    If (fyf1_Control.WorkState) And (.Value < mjlgYeWei(1)) Then .Value = mjlgYeWei(1)
    mjlgYeWei(1) = .Value
End With
'判断投料完毕
With fyf1_Control
    If (.WorkState) And (fyf1_jlgYeWei.Value >= .jlgjsYeWei - .jlgjsYeWei_TiQianLiang) Then
        Call A_out(.tlfBaseAddress, .tlfChannel, 0, 0)
        gintkdSheDing(1) = 0
        Call TouLiaoWanBi(1)
    End If
End With
'投料阀开度
fyf1_tlfKaiDu.Sample
'********************
'二号反应釜
'********************
With fyf2_fyfWenDu
    .Sample
    mfyf2WenDu(1) = .Value
    If fyf2_Control.WorkState Then
        If (mfyf2WenDu(0) <= .SheDingValue + .AlarmUp) And _
        (mfyf2WenDu(1) > .SheDingValue + .AlarmUp) Then Call nowAlarm( _
        "fyf2_fyfWenDu", True)
        If (mfyf2WenDu(1) <= .SheDingValue + .AlarmUp) And (mfyf2WenDu(0) _
        > .SheDingValue + .AlarmUp) Then Call nowAlarm("fyf2_fyfWenDu", False)
    End If
    mfyf2WenDu(0) = mfyf2WenDu(1)
End With

'计量罐液位
With fyf2_jlgYeWei
    .Sample
    '投料过程中滤掉虚假液位
    If Not (gblnBeginSet(2)) Then mjlgYeWei(2) = .Value
    If (fyf2_Control.WorkState) And (.Value < mjlgYeWei(2)) Then .Value = mjlgYeWei(2)
    mjlgYeWei(2) = .Value
End With

'判断投料完毕
With fyf2_Control
    If (.WorkState) And (fyf2_jlgYeWei.Value >= .jlgjsYeWei - .jlgjsYeWei_TiQianLiang) Then
        Call A_out(.tlfBaseAddress, .tlfChannel, 0, 0)
        gintkdSheDing(2) = 0
        Call TouLiaoWanBi(2)
    End If
End With

fyf2_tlfKaiDu.Sample
'********************
'三号反应釜
'********************
With fyf3_fyfWenDu
    .Sample
    mfyf3WenDu(1) = .Value
    If fyf3_Control.WorkState Then
        If (mfyf3WenDu(0) <= .SheDingValue + .AlarmUp) And _
        (mfyf3WenDu(1) > .SheDingValue + .AlarmUp) Then Call nowAlarm( _
        "fyf3_fyfWenDu", True)
        If (mfyf3WenDu(1) <= .SheDingValue + .AlarmUp) And (mfyf3WenDu(0) _
        > .SheDingValue + .AlarmUp) Then Call nowAlarm("fyf3_fyfWenDu", False)
    End If
    mfyf3WenDu(0) = mfyf3WenDu(1)
End With
'计量罐液位
With fyf3_jlgYeWei
    .Sample
    '投料过程中滤掉虚假液位
    If Not (gblnBeginSet(3)) Then mjlgYeWei(3) = .Value
    If (fyf3_Control.WorkState) And (.Value < mjlgYeWei(3)) Then .Value = mjlgYeWei(3)
    mjlgYeWei(3) = .Value
End With
'判断投料完毕
With fyf3_Control
    If (.WorkState) And (fyf3_jlgYeWei.Value >= .jlgjsYeWei - .jlgjsYeWei_TiQianLiang) Then
        Call A_out(.tlfBaseAddress, .tlfChannel, 0, 0)
        gintkdSheDing(3) = 0
        Call TouLiaoWanBi(3)
    End If
End With
fyf3_tlfKaiDu.Sample
fyf_lqysWenDu.Sample
'****************************************
'1#赋采样值、手动判断反应终点
'****************************************
With fyf1_Control
    .fyfWenDu = fyf1_fyfWenDu.Value
    .jlgYeWei = fyf1_jlgYeWei.Value
    .lqysWenDu = fyf_lqysWenDu.Value
    If (gblnIsAuto(1) = False) And (.jlgYeWei >= _
    .jlgjsYeWei - .jlgjsYeWei_TiQianLiang) And (.WorkState) Then
        Call A_out(.tlfBaseAddress, .tlfChannel, 0, 0)
        Call TouLiaoWanBi(1)
    End If
'倒计时
    If .WorkState Then
        zkhmfrm.lblDaoJiShi(0).Caption = CStr(Format(Abs(.jlgYeWei - .jlgjsYeWei), "0.0"))
        If Abs(.jlgYeWei - .jlgjsYeWei) <= 10 Then
            zkhmfrm.lblDaoJiShi(3).Visible = Not (zkhmfrm.lblDaoJiShi(3).Visible)
            zkhmfrm.lblDaoJiShi(3).ForeColor = RGB(255, 0, 0)
        Else
            zkhmfrm.lblDaoJiShi(3).Visible = True
            zkhmfrm.lblDaoJiShi(3).ForeColor = RGB(0, 0, 0)
        End If
    Else
        zkhmfrm.lblDaoJiShi(3).Visible = True
        zkhmfrm.lblDaoJiShi(0).Caption = "x"
        zkhmfrm.lblDaoJiShi(3).ForeColor = RGB(0, 0, 0)
    End If
    If .WorkState Then
        .Counter = .Counter + tmrSample.interval / 1000
    End If
End With
'****************************************
'2#赋采样值、手动判断反应终点
'****************************************
With fyf2_Control
    .fyfWenDu = fyf2_fyfWenDu.Value
    .jlgYeWei = fyf2_jlgYeWei.Value
    .lqysWenDu = fyf_lqysWenDu.Value
    If (gblnIsAuto(2) = False) And (.jlgYeWei >= _
    .jlgjsYeWei - .jlgjsYeWei_TiQianLiang) And (.WorkState) Then
        Call A_out(.tlfBaseAddress, .tlfChannel, 0, 0)
        Call TouLiaoWanBi(2)
    End If
'倒计时
    If .WorkState Then
        zkhmfrm.lblDaoJiShi(1).Caption = CStr(Format(Abs(.jlgYeWei - .jlgjsYeWei), "0.0"))
        If Abs(.jlgYeWei - .jlgjsYeWei) <= 10 Then
            zkhmfrm.lblDaoJiShi(4).Visible = Not (zkhmfrm.lblDaoJiShi(4).Visible)
            zkhmfrm.lblDaoJiShi(4).ForeColor = RGB(255, 0, 0)

        Else
            zkhmfrm.lblDaoJiShi(4).Visible = True
            zkhmfrm.lblDaoJiShi(4).ForeColor = RGB(0, 0, 0)
        End If
    Else
        zkhmfrm.lblDaoJiShi(4).Visible = True
        zkhmfrm.lblDaoJiShi(1).Caption = "x"
        zkhmfrm.lblDaoJiShi(4).ForeColor = RGB(0, 0, 0)
    End If
    If .WorkState Then
        .Counter = .Counter + tmrSample.interval / 1000
    End If
End With
'****************************************
'3#赋采样值、手动判断反应终点
'****************************************
With fyf3_Control
    .fyfWenDu = fyf3_fyfWenDu.Value
    .jlgYeWei = fyf3_jlgYeWei.Value
    .lqysWenDu = fyf_lqysWenDu.Value
    If (gblnIsAuto(3) = False) And (.jlgYeWei >= _
    .jlgjsYeWei - .jlgjsYeWei_TiQianLiang) And (.WorkState) Then
        Call A_out(.tlfBaseAddress, .tlfChannel, 0, 0)
        Call TouLiaoWanBi(3)
    End If
'倒计时
    If .WorkState Then
        zkhmfrm.lblDaoJiShi(2).Caption = CStr(Format(Abs(.jlgYeWei - .jlgjsYeWei), "0.0"))
        If Abs(.jlgYeWei - .jlgjsYeWei) <= 10 Then
            zkhmfrm.lblDaoJiShi(5).Visible = Not (zkhmfrm.lblDaoJiShi(5).Visible)
            zkhmfrm.lblDaoJiShi(5).ForeColor = RGB(255, 0, 0)
        Else
            zkhmfrm.lblDaoJiShi(5).Visible = True
            zkhmfrm.lblDaoJiShi(5).ForeColor = RGB(0, 0, 0)
        End If
    Else
        zkhmfrm.lblDaoJiShi(5).Visible = True
        zkhmfrm.lblDaoJiShi(2).Caption = "x"
        zkhmfrm.lblDaoJiShi(5).ForeColor = RGB(0, 0, 0)
    End If
    If .WorkState Then
        .Counter = .Counter + tmrSample.interval / 1000
    End If
End With
'******************************
'读取实际值,赋给全局变量
'******************************

gfyfWenDu(1) = fyf1_fyfWenDu.Value
gtlfaKaiDu(1) = fyf1_tlfKaiDu.Value
gjlgYeWei(1) = fyf1_jlgYeWei.Value
glqysWenDu = fyf_lqysWenDu.Value
gGongZuoZhuangTai(1) = fyf1_Control.WorkState

gfyfWenDu(2) = fyf2_fyfWenDu.Value
gtlfaKaiDu(2) = fyf2_tlfKaiDu.Value
gjlgYeWei(2) = fyf2_jlgYeWei.Value
gGongZuoZhuangTai(2) = fyf2_Control.WorkState

gfyfWenDu(3) = fyf3_fyfWenDu.Value
gtlfaKaiDu(3) = fyf3_tlfKaiDu.Value
gjlgYeWei(3) = fyf3_jlgYeWei.Value
gGongZuoZhuangTai(3) = fyf3_Control.WorkState
'计算一甲胺流量
Dim intN As Integer
intN = 16
For i = 1 To 3
    '***************************************
    'intN的最大值可以设定到19,如果
    '还需要大,需要修改gjlgYeWei2()数组的定义
    '***************************************
    gjlgYeWei2(1, intN) = fyf1_jlgYeWei.Value
    gjlgYeWei2(2, intN) = fyf2_jlgYeWei.Value
    gjlgYeWei2(3, intN) = fyf3_jlgYeWei.Value
    
    Sum(i) = 0
    For K = 1 To intN
        Sum(i) = Sum(i) + (gjlgYeWei2(i, K) - gjlgYeWei2(i, 0)) / K
    Next
    '*************************
    '采样值(由液位变化计算得到)
    mYeWeiToLiuLiang(i) = 3600 * Sum(i) / (intN * N)
    '*************************
    If Not (gblnBeginSet(i)) Then myjaLiuLiang(i) = mYeWeiToLiuLiang(i)
    gblnBeginSet(i) = True
    '滤波值
    mYeWeiToLiuLiang(i) = (1 - gsngLiuLiangLvBo(i)) * mYeWeiToLiuLiang(i) + _
                       gsngLiuLiangLvBo(i) * myjaLiuLiang(i)
    '**********************************
    '保存当前滤波值,作为下一个滤波的输入
    myjaLiuLiang(i) = mYeWeiToLiuLiang(i)
    For K = 0 To intN - 1
        gjlgYeWei2(i, K) = gjlgYeWei2(i, K + 1)
    Next
    '求取流量的加权均值(10个点)
    Dim KKK As Integer
    For KKK = 0 To 8
        mUsedForLiuLiang(i, KKK) = mUsedForLiuLiang(i, KKK + 1)
    Next
    mUsedForLiuLiang(i, 9) = mYeWeiToLiuLiang(i)
    gyjaLiuLiang(i) = 0.05 * (mUsedForLiuLiang(i, 0) + _
            mUsedForLiuLiang(i, 1) + mUsedForLiuLiang(i, 2) + _
            mUsedForLiuLiang(i, 3)) + _
        0.1 * (mUsedForLiuLiang(i, 4) + mUsedForLiuLiang(i, 5) + _
            mUsedForLiuLiang(i, 6)) + _
        0.15 * (mUsedForLiuLiang(i, 7) + mUsedForLiuLiang(i, 8)) + _
        0.2 * mUsedForLiuLiang(i, 9)

    If gtlfaKaiDu(i) <= 0 Then gtlfaKaiDu(i) = 0
    If gyjaLiuLiang(i) <= 40 Then gyjaLiuLiang(i) = 0
    If gyjaLiuLiang(i) > 1200 Then gyjaLiuLiang(i) = 1200
Next
glqysWenDu = fyf_lqysWenDu.Value

'计算温度斜率
Dim XieLv(1 To 3) As Single
Dim KK As Integer
For i = 1 To 3
    For KK = 0 To 4
        mfyfWenDuForXieLv(i, KK) = mfyfWenDuForXieLv(i, KK + 1)
    Next
    mfyfWenDuForXieLv(i, 5) = gfyfWenDu(i)
    XieLv(i) = (mfyfWenDuForXieLv(i, 5) - mfyfWenDuForXieLv(i, 0)) / (5 * N)
Next
fyf1_Control.fyfWenDuXieLv = XieLv(1)
fyf2_Control.fyfWenDuXieLv = XieLv(2)
fyf3_Control.fyfWenDuXieLv = XieLv(3)

'********************************
'为dataviewfrm赋属性值
'********************************
For i = 1 To 3
With dataviewfrm
    .Index = i
    .fyfWenDu = gfyfWenDu(i)
    .tlfaKaiDu = gtlfaKaiDu(i)
    .jlgYeWei = gjlgYeWei(i)
    .yjaLiuLiang = gyjaLiuLiang(i)
Select Case i
    Case 1

⌨️ 快捷键说明

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