📄 calculate.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 + -