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

📄 calculatekey.bas

📁 主要用于控制三相电能表检验装置
💻 BAS
字号:
Attribute VB_Name = "CalculateKEY"

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

Function Cal_main(Comm As String)
Dim i As Byte
Dim j 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 11
    If Comm = BiaoWei(i).Comm Then
        Exit For
    End If
Next i
NUM = i
For i = 0 To ZongHangShu - 1
    If JiaoZhengCanShu(i, 3) = AdjustOperate(AdOpNUM1 - 1) Then
        M_OLD = StringHexToLong(JiaoZhengCanShu(i, 7 + 2 * NUM))
        If M_OLD >= 0 Then '原值已经取出
            Select Case JiaoZhengCanShu(i, 0) '根据相关的获取
                Case "A相电压补偿系数"  '取A相电压
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Voltage(0), 2))
                     STD = StandMeterData.Voltage(0)
                Case "A相谐波电压补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).HarmonicWave(0), 2))
                     STD = StandMeterData.Voltage(0)
                
                Case "B相电压补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Voltage(1), 2))
                     STD = StandMeterData.Voltage(1)
                Case "B相谐波电压补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).HarmonicWave(1), 2))
                     STD = StandMeterData.Voltage(1)
                     
                Case "C相电压补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Voltage(2), 2))
                     STD = StandMeterData.Voltage(2)
                Case "C相谐波电压补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).HarmonicWave(2), 2))
                     STD = StandMeterData.Voltage(2)
                     
                Case "A相电流补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Current(0), 3))
                     STD = StandMeterData.Current(0)
                     
                 Case "A相谐波电流补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).HarmonicWave(3), 3))
                     STD = StandMeterData.Current(0)
                     
                Case "B相电流补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Current(1), 3))
                     STD = StandMeterData.Current(0)
                      
                Case "B相谐波电流补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).HarmonicWave(3), 3))
                     STD = StandMeterData.Current(0)
                     
                Case "C相电流补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Current(2), 3))
                     STD = StandMeterData.Current(0)
                      
                 Case "C相谐波电流补偿系数"
                      TST = Val(XiaoChuxiaoshudian(MeterData(NUM).HarmonicWave(3), 3))
                      STD = StandMeterData.Current(0)
                      
                Case "零序电流"
                
                Case "A相功率补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Power(1), 4))
                      STD = StandMeterData.Power(1)
                Case "B相功率补偿系数"
                    TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Power(2), 4))
                    STD = StandMeterData.Power(2)
                Case "C相功率补偿系数"
                     TST = Val(XiaoChuxiaoshudian(MeterData(NUM).Power(3), 4))
                     STD = StandMeterData.Power(3)
                Case "A相相角补偿系数"
                      TST = Val(XiaoChuxiaoshudian(MeterData(NUM).PF(1), 3))
                      STD = StandMeterData.PF(1)
                Case "B相相角补偿系数"
                      TST = Val(XiaoChuxiaoshudian(MeterData(NUM).PF(2), 3))
                      STD = StandMeterData.PF(2)
                Case "C相相角补偿系数"
                      TST = Val(XiaoChuxiaoshudian(MeterData(NUM).PF(3), 3))
                      STD = StandMeterData.PF(3)
            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, 7 + 2 * NUM + 1) = LongToStringHex(M_NEW, 2, datad)
              '  Form1.MSFlexGrid2.Col = 4
              '  Form1.MSFlexGrid2.Row = i + 1
              '  Form1.MSFlexGrid2.CellAlignment = 1
              '  Form1.MSFlexGrid2.Text = JiaoZhengCanShu(i, 5)
              'Else
              '  JiaoZhengCanShu(i, 5) = "??"
              '  Form1.MSFlexGrid2.Col = 4
              '  Form1.MSFlexGrid2.Row = i + 1
              '  Form1.MSFlexGrid2.CellAlignment = 1
              '  Form1.MSFlexGrid2.Text = "??"
              'End If
        End If
    End If
Next i
End Function
Function LongToStringHex(daaa As Long, GeShu As Byte, datat() As Byte) As String
        Dim temp As Long
        Dim rest As String
        
        rest = ""
        If GeShu = 3 Then
            temp = daaa And &HFF0000
            temp = temp / &H10000
            datat(2) = temp And &HFF
            rest = HextoString(datat(2))
        End If
        temp = daaa And &HFFFF
        temp = temp And &HFF00
        temp = temp / &H100
        datat(1) = temp And &HFF
        rest = rest & HextoString(datat(1))
        temp = daaa And &HFF
        datat(0) = temp And &HFF
        rest = rest & HextoString(datat(0))
        LongToStringHex = rest
End Function

'M_NEW= M_OLD*(V_STD / V_TST)计算电压补偿系数
Function DianYaBuChangXiShu(M_OLD As Long, V_STD As Long, V_TST As Long) As Long
   Dim M_NEW As Long
   If V_TST = 0 Then
      'DianYaBuChangXiShu = 0
      DianYaBuChangXiShu = M_OLD
      Exit Function
   End If
   M_NEW = M_OLD * (V_STD / V_TST)
   DianYaBuChangXiShu = M_NEW
End Function


'M_NEW= M_OLD*(A_STD / A_TST)'电流补偿系数
Function DianLiuBuChangXiShu(M_OLD As Long, A_STD As Long, A_TST As Long) As Long
   Dim M_NEW As Long
   If A_TST = 0 Then
      'DianLiuBuChangXiShu = 0
      DianLiuBuChangXiShu = M_OLD
      Exit Function
   End If
   M_NEW = M_OLD * (A_STD / A_TST)
   DianLiuBuChangXiShu = M_NEW
End Function
'M_NEW= M_OLD*(P_STD / P_TST)'功率补偿系数
Function GongLvBuChangXiShu(M_OLD As Long, P_STD As Long, P_TST As Long) As Long
   Dim M_NEW As Long
   If P_TST = 0 Then
      'GongLvBuChangXiShu = 0
      GongLvBuChangXiShu = M_OLD
      Exit Function
   End If
   M_NEW = M_OLD * (P_STD / P_TST)
   GongLvBuChangXiShu = M_NEW
End Function
'M_NEW= M_OLD - 50000*( PF_STD - PF_TST )'功率因数
Function GongLvYinShuBuChangXiShu(M_OLD As Long, PF_STD As Long, PF_TST As Long) As Long
   Dim M_NEW As Long
   If M_OLD And &H8000 = &H8000 Then
        M_OLD = &H10000 - M_OLD
        M_OLD = 0 - M_OLD
   End If
   If PF_TST = 1 Then 'TST = 1
      GongLvYinShuBuChangXiShu = 0
      Exit Function
   End If
   If PF_TST = PF_STD Then
        M_NEW = M_OLD
   Else
        M_NEW = M_OLD - 74500 * (PF_STD - PF_TST) / 1000
   End If
   If M_NEW < 0 Then
      M_NEW = &H10000 + M_NEW
   End If
   GongLvYinShuBuChangXiShu = M_NEW
End Function

⌨️ 快捷键说明

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