📄 clsinputdata.cls
字号:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "clsInputData"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
Public Name As String
Public Unit As String
'*************************
'类属性,局部变量保存属性值
'*************************
Private mvarBaseAddress As Integer '本地复本,基地址
Private mvarChannel As Integer '本地复本,通道号
Private mvarValue As Single '本地复本,实际值
Private mvarAlarmUp, mvarAlarmDown As Single
Private mvarSheDingValue As Single
Private mvarLvBoXiShu As Single
Private mvarProjectMax, mvarProjectMin As Single
Private mvarMaxMinusMin As Single
Private mvarSignalMax, mvarSignalMin, mvarSmaxMinusSmin As Single
Private Y1, Y0 As Single
Private SampleValue As Single
'*************************
'局部变量
'*************************
Private interval(0 To 9) As Integer
Private i As Integer
Private HighByte, LowByte As Byte
Public Event yjaTouLiaoWanBi()
'***********************************************
'采样过程,从A/D卡读取数据,并转化成十进制真实数据
'***********************************************
'Public Sub Sample()
'Dim j As Integer
'Dim a As Byte
'Dim mProjectValue, mSignalValue, Average, Sum As Single
'Dim Value(1 To 5) As Single
'Sum = 0
'For j = 1 To 5
' **********************
'写通道代码,选通道
'**********************
' a = MyInportb(mvarBaseAddress + 3)
' Call MyOutportb(mvarBaseAddress, mvarChannel)
' For i = 0 To 5000: Next
'**********************
'启动A/D转换
'**********************
' Call MyOutportb(mvarBaseAddress + 1, 0)
'**********************
'查询A/D转换状态,
'读高4位转换结果
'**********************
' Do While MyInportb(mvarBaseAddress + 2) > 128
' loop
' For i = 0 To 5000: Next
' HighByte = MyInportb(mvarBaseAddress + 2)
'**********************
'读A/D低8位转换结果,
'清A/D转换状态及中断标志
'**********************
' LowByte = MyInportb(mvarBaseAddress + 3)
' mvarMaxMinusMin = mvarProjectMax - mvarProjectMin
' mvarSmaxMinusSmin = mvarSignalMax - mvarSignalMin
' mSignalValue = (HighByte * 256 + LowByte) * 10 / 4096 - 5
'A/D修正
' mSignalValue = Aad * mSignalValue - Bad
' Value(j) = mvarProjectMin + (mSignalValue - mvarSignalMin) * mvarMaxMinusMin / mvarSmaxMinusSmin
'由斜率和平移量计算工程量
' Value(j) = mvarSignalMax * mSignalValue + mvarSignalMin
' Sum = Sum + Value(j)
'Next
'SampleValue = (Sum - Max(Value(1), Value(2), Value(3), Value(4), Value(5)) - _
'Min(Value(1), Value(2), Value(3), Value(4), Value(5))) / 3
'mvarValue = LvBoValue
'For i = 1 To 5000: Next
'End Sub
'*************************************
'以下过程Sample()用于仿真,实际应用时请
'注释掉,并解注释上面的Sample()过程。
'*************************************
Public Sub Sample()
Select Case mvarChannel
' Case 1 '1#釜温度
'Case 2 '1#阀开度
'Case 0 '1#罐液位
'Case 4 '2#釜温度
'Case 5 '2#阀开度
'Case 3 '2#罐液位
'Case 7 '3#釜温度
'Case 8 '3#阀开度
'Case 6 '3#罐液位
Case 2, 5, 8
mvarValue = 30
Case 9 '冷却水温度
mvarValue = -34
Case 0, 3, 6
mvarValue = (mvarSignalMax * 400 * (1 - Exp(-interval(mvarChannel) / 800)) + mvarSignalMin) / 50
Case 1, 4, 7
mvarValue = (mvarSignalMax * (-24) * Exp(-interval(mvarChannel) / 1200) + mvarSignalMin - 13) / 40
End Select
interval(mvarChannel) = interval(mvarChannel) + 1
If interval(mvarChannel) > 3600 Then interval(mvarChannel) = 0
End Sub
Private Function Max(ByVal V1 As Single, ByVal V2 As Single, _
ByVal V3 As Single, ByVal V4 As Single, ByVal V5 As Single)
Dim Max0 As Single
Max0 = V1
If Max0 < V2 Then Max0 = V2
If Max0 < V3 Then Max0 = V3
If Max0 < V4 Then Max0 = V4
If Max0 < V5 Then Max0 = V5
Max = Max0
End Function
Private Function Min(ByVal V1 As Single, ByVal V2 As Single, _
ByVal V3 As Single, ByVal V4 As Single, ByVal V5 As Single)
Dim Min0 As Single
Min0 = V1
If Min0 > V2 Then Min0 = V2
If Min0 > V3 Then Min0 = V3
If Min0 > V4 Then Min0 = V4
If Min0 > V5 Then Min0 = V5
Min = Min0
End Function
'*************************
'滤波
'*************************
Private Function LvBoValue() As Single
Y1 = (1 - mvarLvBoXiShu) * SampleValue + mvarLvBoXiShu * Y0
LvBoValue = Y1
Y0 = Y1
End Function
'*************************
'实际值
'*************************
Public Property Let Value(ByVal vData As Single)
mvarValue = vData
End Property
Public Property Get Value() As Single
Value = mvarValue
End Property
'*************************
'通道号
'*************************
Public Property Let Channel(ByVal vData As Integer)
mvarChannel = vData
End Property
Public Property Get Channel() As Integer
Channel = mvarChannel
End Property
'*************************
'基地址
'*************************
Public Property Let BaseAddress(ByVal vData As Integer)
mvarBaseAddress = vData
End Property
Public Property Get BaseAddress() As Integer
BaseAddress = mvarBaseAddress
End Property
'*************************
'报警上限
'*************************
Public Property Let AlarmUp(ByVal vData As Single)
mvarAlarmUp = vData
End Property
Public Property Get AlarmUp() As Single
AlarmUp = mvarAlarmUp
End Property
'*************************
'报警下限
'*************************
Public Property Let AlarmDown(ByVal vData As Single)
mvarAlarmDown = vData
End Property
Public Property Get AlarmDown() As Single
AlarmDown = mvarAlarmDown
End Property
'*************************
'预设定值
'*************************
Public Property Let SheDingValue(ByVal vData As Single)
mvarSheDingValue = vData
End Property
Public Property Get SheDingValue() As Single
SheDingValue = mvarSheDingValue
End Property
'*************************
'工程最大值
'*************************
Public Property Let ProjectMaxValue(ByVal vData As Single)
mvarProjectMax = vData
End Property
Public Property Get ProjectMaxValue() As Single
ProjectMaxValue = mvarProjectMax
End Property
'*************************
'工程最小值
'*************************
Public Property Let ProjectMinValue(ByVal vData As Single)
mvarProjectMin = vData
End Property
Public Property Get ProjectMinValue() As Single
ProjectMinValue = mvarProjectMin
End Property
'*************************
'原信号最大值,改为斜率
'*************************
Public Property Let SignalMaxValue(ByVal vData As Single)
mvarSignalMax = vData
End Property
Public Property Get SignalMaxValue() As Single
SignalMaxValue = mvarSignalMax
End Property
'*************************
'原信号最小值,改为平移量
'*************************
Public Property Let SignalMinValue(ByVal vData As Single)
mvarSignalMin = vData
End Property
Public Property Get SignalMinValue() As Single
SignalMinValue = mvarSignalMin
End Property
'*************************
'滤波系数
'*************************
Public Property Let LvBoXiShu(ByVal vData As Single)
mvarLvBoXiShu = vData
End Property
Public Property Get LvBoXiShu() As Single
LvBoXiShu = mvarLvBoXiShu
End Property
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -