📄 transmitktd.vb
字号:
iTempflag = 0
iLastSaveTime = Environment.TickCount
Else
iTempflag = 1
' iLastSaveTime = Environment.TickCount
End If
End If
CommStatus = 0
ParseMaster(btData)
SaveSystem()
' SysAlarm()
Select Case Master.iVolType
Case 28
a = 490.5
b = 45.38
Case 32
a = 528.28
b = 43.2
Case 48
a = 630
b = 36.4
Case Else
a = 490.5
b = 45.38
End Select
For i = 0 To iAmpCount - 1 'UBound(Amplifier)
ParseAmplifier(40 + 20 * i, btData, i)
SavePA(i)
' AmpAlarm(i)
Next
ParseSwitch(btData)
'iMainExciter/iStandbyExciter
' If Master.bBackupState = False Then '''主激励器
Select Case iMainExciter
Case 1 '''RVR
ParseRVRInspirit(btData, 0)
Case 2 '''EKA
Case 3 '''KT
ParseInspirit(btData, 0)
SaveExciter(0)
End Select
' Else '''备激励器
Select Case iStandbyExciter
Case 1 '''RVR
ParseRVRInspirit(btData, 1)
Case 2 '''EKA
Case 3 '''KT
ParseInspirit(btData, 1)
SaveExciter(1)
End Select
'SMSalarm(CommStatus)
' End If
Case 3, 4, 14
'CommStatus = btData(15)
'''0--成功
'''0--本控状态
'''0--参数错误
If btData(15) = 0 Then
CommStatus = 1
bOpenClose = True
Else
End If
End Select
'Catch ex As Exception
' MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning)
'End Try
End Sub
'''总功率公式
Function expPo(ByVal para1Value As Integer, ByVal para3Value As Integer) As Double
Dim dTemp1 As Double
Dim dTemp2 As Double
Dim dTemp3 As Double
Dim dTemp4 As Double
Dim dTemp5 As Long
dTemp1 = Round45(para1Value / 500 - 0.35, 2)
If (dTemp1) > 0 Then
dTemp2 = 10 * Log10(20 * (dTemp1 ^ 2))
dTemp3 = CInt(dTemp2 * 100) / 100
dTemp4 = para3Value / 1000
dTemp5 = CInt(10 ^ ((dTemp3 + dTemp4 + 12) / 10))
expPo = CInt((dTemp5 * 25) / 8)
Else
expPo = 0
End If
End Function
'Function expPo1(ByVal para1Value As Integer, ByVal para3Value As Integer) As Double
' Dim dTemp1 As Double
' Dim dTemp2 As Double
' Dim dTemp3 As Double
' Dim dTemp4 As Double
' Dim dTemp5 As Long
' dTemp1 = Round45(para1Value / 500 - 0.35, 2)
' If (dTemp1) > 0 Then
' dTemp2 = 10 * Log10(20 * (dTemp1 ^ 2))
' dTemp3 = CInt(dTemp2 * 100) / 100
' dTemp4 = para3Value / 1000
' dTemp5 = CInt(10 ^ ((dTemp3 + dTemp4 + 14.8) / 10))
' expPo1 = CInt((dTemp5 * 25) / 8)
' Else
' expPo1 = 0
' End If
'End Function
''反射功率公式
Function expPrTotal(ByVal para1Value As Integer, ByVal para3Value As Integer) As Double
Dim dTemp1 As Double
Dim dTemp2 As Double
Dim dTemp3 As Double
Dim dTemp4 As Double
Dim dTemp5 As Long
dTemp1 = Round45(para1Value / 1000 - 0.35, 2)
If (dTemp1) > 0 Then
dTemp2 = 10 * Log10(20 * (dTemp1 ^ 2))
dTemp3 = CInt(dTemp2 * 100) / 100
dTemp4 = para3Value / 1000
dTemp5 = CInt(10 ^ ((dTemp3 + dTemp4 + 12) / 10))
expPrTotal = dTemp5
Else
expPrTotal = 0
End If
End Function
Function expPr(ByVal Po As Double, ByVal para1Value As Integer, ByVal para2Value As Integer) As Integer
Dim k As Double
If para1Value > 0 Then
k = para2Value / para1Value
expPr = CInt(Po * (k ^ 2))
End If
End Function
''驻波比率公式
'Function expDswr(ByVal para1Value As Integer, ByVal para2Value As Integer) As Double
' Dim k As Double
' If para1Value > 0 Then
' k = para2Value / para1Value
' expDswr = Round45((1 + k) / (1 - k), 2)
' End If
'End Function
Function expDswr(ByVal para1Value As Integer, ByVal para2Value As Integer) As Double
Dim k As Double
If para1Value > 0 Then
k = Sqrt(para2Value / para1Value)
expDswr = Round45((1 + k) / (1 - k), 2)
End If
End Function
''遥控公式
Function expControl(ByVal para5Value As Integer) As Boolean
If para5Value > 2000 Then
expControl = True '''遥控
Else
expControl = False '''本控
End If
End Function
''''''新的计算单插件功率公式
Function Po(ByRef btData() As Byte, ByVal i As Integer) As Double ', ByVal transmit As MasterUnit)
Dim V1, V2, V3, V4, V5, V6, V7, V8 As Int16
V1 = V(btData, 40)
V2 = V(btData, 60)
V3 = V(btData, 80)
V4 = V(btData, 100)
V5 = V(btData, 120)
V6 = V(btData, 140)
V7 = V(btData, 160)
V8 = V(btData, 180)
Po = Round45((Master.dPo / (V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8)) * V(btData, i), 0)
End Function
Function V(ByRef btData() As Byte, ByVal i As Integer) As Double ', ByVal transmit As MasterUnit)
V = btData(i + 15)
End Function
'**********解析主控单元数据*************************************************
Private Sub ParseMaster(ByRef btData() As Byte) ', ByVal transmit As MasterUnit)
Dim StatusBinary As String
Dim i As Integer
Master.dPo = expPo(btData(21) * 256 + btData(22), btData(25) * 256 + btData(26)) '''' 总入射功率(W)
Master.dPr = expPrTotal(btData(23) * 256 + btData(24), btData(25) * 256 + btData(26)) '''''总反射功率(W)
Master.dTemputer = Round((btData(27) * 256 + btData(28)) / 10) '''''环境温度
'Master.dVswr = expDswr(btData(21) * 256 + btData(22), btData(23) * 256 + btData(24)) '''''驻波比
Master.dVswr = expDswr(Master.dPo, Master.dPr) '''''驻波比
If btData(29) * 256 + btData(30) > 2000 Then '''''判断主控单元控制方式
Master.bRemote = True '''''遥控
Else
Master.bRemote = False '''''人工
End If
Master.iVolType = btData(31) '''''识别发射机电压类型
If Master.dPo > 0 Then
State = 0
Else
State = 1
End If
End Sub
'**********解析功放单元数据*************************************************
Private Sub ParseAmplifier(ByVal i As Integer, ByRef btData() As Byte, ByVal j As Integer)
Dim StatusBinary As String
Select Case Master.iVolType
Case 28
If btData(i + 2) * 10 > a Then
Amplifier(j).dCurrent2 = Round(((btData(i + 2) * 10 - a) * 1.2) / b, 1) '''''电流2
Else
Amplifier(j).dCurrent2 = 0
End If
If btData(i + 3) * 10 > a Then
Amplifier(j).dCurrent1 = Round(((btData(i + 3) * 10 - a) * 1.2) / b, 1) '''''电流1
Else
Amplifier(j).dCurrent1 = 0
End If
If btData(i + 4) * 10 > a Then
Amplifier(j).dCurrent4 = Round(((btData(i + 4) * 10 - a) * 1.2) / b, 1) '''''电流4
Else
Amplifier(j).dCurrent4 = 0
End If
If btData(i + 5) * 10 > a Then
Amplifier(j).dCurrent3 = Round(((btData(i + 5) * 10 - a) * 1.2) / b, 1) '''''电流3
Else
Amplifier(j).dCurrent3 = 0
End If
If btData(i + 7) * 10 > a Then
Amplifier(j).dTCurrent = Round(((btData(i + 7) * 10 - a) * 1.2) / b, 1) '''''前级电流
Else
Amplifier(j).dTCurrent = 0
End If
Amplifier(j).dVoltage = Round45(btData(i + 15) * 16 / 100, 1) '''''电压
Case 32
If btData(i + 2) * 10 > a Then
Amplifier(j).dCurrent2 = Round(((btData(i + 2) * 10 - a) * 1.2) / b, 1) '''''电流2
Else
Amplifier(j).dCurrent2 = 0
End If
If btData(i + 3) * 10 > a Then
Amplifier(j).dCurrent1 = Round(((btData(i + 3) * 10 - a) * 1.2) / b, 1) '''''电流1
Else
Amplifier(j).dCurrent1 = 0
End If
If btData(i + 4) * 10 > a Then
Amplifier(j).dCurrent4 = Round(((btData(i + 4) * 10 - a) * 1.2) / b, 1) '''''电流4
Else
Amplifier(j).dCurrent4 = 0
End If
If btData(i + 5) * 10 > a Then
Amplifier(j).dCurrent3 = Round(((btData(i + 5) * 10 - a) * 1.2) / b, 1) '''''电流3
Else
Amplifier(j).dCurrent3 = 0
End If
If btData(i + 6) * 10 > a Then
Amplifier(j).dCurrent6 = Round(((btData(i + 6) * 10 - a) * 1.2) / b, 1) '''''电流6
Else
Amplifier(j).dCurrent6 = 0
End If
If btData(i + 7) * 10 > a Then
Amplifier(j).dCurrent5 = Round(((btData(i + 7) * 10 - a) * 1.2) / b, 1) '''''电流5
Else
Amplifier(j).dCurrent5 = 0
End If
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -