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

📄 calculate.bas

📁 主要用于控制三相电能表检验装置
💻 BAS
字号:
Attribute VB_Name = "Calculate"
Function GetStandVariable()
    If Text1.Text = "" Then
        MsgBox ("输入标准值")
        Exit Function
    End If
    If Text2.Text = "" Then
        MsgBox ("输入标准值")
        Exit Function
    End If
    If Text3.Text = "" Then
        MsgBox ("输入标准值")
        Exit Function
    End If
    If Text4.Text = "" Then
        MsgBox ("输入标准值")
        Exit Function
    End If
    If Text5.Text = "" Then
        MsgBox ("输入标准值")
        Exit Function
    End If
    If Text6.Text = "" Then
        MsgBox ("输入标准值")
        Exit Function
    End If
    If Text7.Text = "" Then
        MsgBox ("输入标准值")
        Exit Function
    End If
    If Text8.Text = "" Then
        MsgBox ("输入标准值")
        Exit Function
    End If
    If Text9.Text = "" Then
        MsgBox ("输入标准值")
        Exit Function
    End If
        If Text10.Text = "" Then
        MsgBox ("输入标准值")
        Exit Function
    End If
            If Text11.Text = "" Then
        MsgBox ("输入标准值")
        Exit Function
    End If
            If Text12.Text = "" Then
        MsgBox ("输入标准值")
        Exit Function
    End If
    StandMeterData.Voltage(0) = Val(XiaoChuxiaoshudian(Text9.Text, 2))
    StandMeterData.Voltage(1) = Val(XiaoChuxiaoshudian(Text10.Text, 2))
    StandMeterData.Voltage(2) = Val(XiaoChuxiaoshudian(Text11.Text, 2))
    StandMeterData.Current(0) = Val(XiaoChuxiaoshudian(Text12.Text, 3))
    StandMeterData.Current(1) = Val(XiaoChuxiaoshudian(Text13.Text, 3))
    StandMeterData.Current(2) = Val(XiaoChuxiaoshudian(Text14.Text, 3))
    StandMeterData.PF(1) = Val(XiaoChuxiaoshudian(Text15.Text, 3))
    StandMeterData.PF(2) = Val(XiaoChuxiaoshudian(Text16.Text, 3))
    StandMeterData.PF(3) = Val(XiaoChuxiaoshudian(Text17.Text, 3))
    StandMeterData.Power(1) = Val(XiaoChuxiaoshudian(Text18.Text, 5)) '4
    StandMeterData.Power(2) = Val(XiaoChuxiaoshudian(Text19.Text, 5)) '4
    StandMeterData.Power(3) = Val(XiaoChuxiaoshudian(Text20.Text, 5)) '4
End Function

Function CalCoeff()
Dim i As Byte
Dim M_OLD As Long '旧值
Dim TST As Long '测试值
Dim STD As Long '标准值
Dim M_NEW As Long '新值
Dim datad(3) As Byte
Dim NUM As Byte
For i = 0 To 23
    If Comm = CommSetJ(i).Comm Then
        Exit For
    End If
Next i
NUM = i
GetStandVariable
For i = 0 To ZongHangShu - 1
    If JiaoZhengCanShu(i, 3) = Form1.Combo1.Text Then
        M_OLD = StringHexToLong(JiaoZhengCanShu(i, 4))
        If M_OLD >= 0 Then '原值已经取出
            Select Case JiaoZhengCanShu(i, 0) '根据相关的获取
                Case "A相电压补偿系数"  '取A相电压
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Voltage(0), 2))
                     STD = BiaoZhunData.DianYa(0)
                Case "A相谐波电压补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).HarmonicWave(0), 2))
                     STD = BiaoZhunData.DianYa(0)
                
                Case "B相电压补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Voltage(1), 2))
                     STD = BiaoZhunData.DianYa(1)
                Case "B相谐波电压补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).HarmonicWave(1), 2))
                     STD = BiaoZhunData.DianYa(1)
                     
                Case "C相电压补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Voltage(2), 2))
                     STD = BiaoZhunData.DianYa(2)
                Case "C相谐波电压补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).HarmonicWave(2), 2))
                     STD = BiaoZhunData.DianYa(2)
                     
                Case "A相电流补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Current(0), 3))
                     STD = BiaoZhunData.DianLiu(0)
                     
                 Case "A相谐波电流补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).HarmonicWave(3), 3))
                     STD = BiaoZhunData.DianLiu(0)
                     
                Case "B相电流补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Current(1), 3))
                     STD = BiaoZhunData.DianLiu(1)
                      
                Case "B相谐波电流补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).HarmonicWave(4), 3))
                     STD = BiaoZhunData.DianLiu(1)
                     
                Case "C相电流补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Current(2), 3))
                     STD = BiaoZhunData.DianLiu(2)
                      
                 Case "C相谐波电流补偿系数"
                      TST = Val(XiaoChuxiaoshudian(MeterData(NUM).HarmonicWave(5), 3))
                      STD = BiaoZhunData.DianLiu(2)
                      
                Case "零序电流"
                
                Case "A相功率补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Power(1), 4))
                      STD = BiaoZhunData.GongLv(1)
                Case "B相功率补偿系数"
                    TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Power(2), 4))
                    STD = BiaoZhunData.GongLv(2)
                Case "C相功率补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Power(3), 4))
                     STD = BiaoZhunData.GongLv(3)
                Case "A相相角补偿系数"
                      TST = Val(XiaoChuxiaoshudian(MeterData(NUM).PF(1), 3))
                      STD = BiaoZhunData.YinShu(0)
                Case "B相相角补偿系数"
                      TST = Val(XiaoChuxiaoshudian(MeterData(NUM).PF(2), 3))
                      STD = BiaoZhunData.YinShu(1)
                Case "C相相角补偿系数"
                      TST = Val(XiaoChuxiaoshudian(MeterData(NUM).PF(3), 3))
                      STD = BiaoZhunData.YinShu(2)
            End Select
             Select Case JiaoZhengCanShu(i, 6)
               Case 1
                    M_NEW = DianYaBuChangXiShu(M_OLD, STD, TST)
               Case 2
                    M_NEW = DianLiuBuChangXiShu(M_OLD, STD, TST)
               Case 3
                    M_NEW = GongLvBuChangXiShu(M_OLD, STD, TST)
               Case 4
                    M_NEW = GongLvYinShuBuChangXiShu(M_OLD, STD, TST)
              End Select
              'If M_NEW > 0 Then
              '  JiaoZhengCanShu(i, 5) = LongToStringHex(M_NEW, 2, datad)
              '  Form1.MSFlexGrid1.Col = 4
              '  Form1.MSFlexGrid1.Row = i + 1
              '  Form1.MSFlexGrid1.CellAlignment = 1
              '  Form1.MSFlexGrid1.Text = JiaoZhengCanShu(i, 5)
              'Else
              '  JiaoZhengCanShu(i, 5) = "??"
              '  Form1.MSFlexGrid1.Col = 4
              '  Form1.MSFlexGrid1.Row = i + 1
              '  Form1.MSFlexGrid1.CellAlignment = 1
              '  Form1.MSFlexGrid1.Text = "??"
              'End If
        End If
    End If
Next i
End Function
Function XiaoChuxiaoshudian(BCDD As String, XiaoShuGeShu As Byte) As String
     Dim ts() As String
     Dim st As String
     Dim redata As Long
     'redata = Val(BCDstring)
     Dim BCDstring As String
     BCDstring = Trim(BCDD)
     ts = Split(BCDstring, ".")
     If UBound(ts) = 0 Then
ggggg1:
        ts(0) = ts(0) & "0"
        XiaoShuGeShu = XiaoShuGeShu - 1
        If XiaoShuGeShu = 0 Then
            XiaoChuxiaoshudian = ts(0)
            Exit Function
        End If
        GoTo ggggg1
     End If
ggggg:
     If Len(ts(1)) < XiaoShuGeShu Then
        ts(1) = ts(1) & "0"
        GoTo ggggg
     End If
     BCDstring = ts(0) & ts(1) '消除小数点
     XiaoChuxiaoshudian = BCDstring
     'Dim i As Byte
     'Dim datalen As Byte
     'datalen = Len(BCDstring) '获取
     'redata = 0
     'For i = 0 To datalen - 1
        'st = Mid(ts(0), i, 1) '取
        
     'Next i
End Function

⌨️ 快捷键说明

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