首页 > 解决方案 > 我需要每分钟捕获一个值才能在 vba (Visual Basic) 中进行计算

问题描述

正如您在下面看到的,我需要每分钟捕获一个值才能在 Visual Basic 中进行计算。

LEF_F - 当前效率值,1 分钟后,LEF_F 需要传输到最后一分钟测量的值 LEF_LM,LEF_F 更新其值。

拜托,你能帮我解决这个问题吗?

我在没有上述微积分的情况下发送低于我的草稿计算。

"macro_command main()

short a, Reset, Counter, Speed, LEF_F, LEF_LM, Sum, Time

GetData(a, "Local HMI", "LEF_C", 1)

GetData(Reset, "KHS - Filler", "DB_Data_MainPLC_To_Ferru.fResetProductionHours", 1) 
// Need to confirm reset bit with KHS

GetData(Counter, "KHS - Filler", "CcPLCInnofill.Tag0692", 1)

GetData(Speed, "KHS - Filler", "CcPLCInnofill.Tag0254", 1)

GetData(Time, "KHS - Filler", "CcPLCInnofill.Tag0694", 1)

if Reset >= 1 then
LEF_F == 100
else if Reset == 0 then
LEF_F = a
else
end if

LEF_LM = LEF_F * (Time/(Time - 1))
// In case of Time is in minutes use "1" other way need to verify which unit Time is using

Sum = (LEF_F + LEF_LM)/2

SetData(Sum, "Local HMI", "EFF_Line", 1)

end macro_command"

非常感谢您的帮助和支持。

此致,

蒂亚戈·莫拉斯·多斯桑托斯

标签: vba

解决方案


Private Sub DoWork()

    '"macro_command main()

    Dim a, Reset, Counter, Speed, LEF_F, LEF_LM, Sum, Time As Short

    GetData(a, "Local HMI", "LEF_C", 1)
    GetData(Reset, "KHS - Filler", "DB_Data_MainPLC_To_Ferru.fResetProductionHours", 1)

    ' Need to confirm reset bit with KHS
    GetData(Counter, "KHS - Filler", "CcPLCInnofill.Tag0692", 1)
    GetData(Speed, "KHS - Filler", "CcPLCInnofill.Tag0254", 1)
    GetData(Time, "KHS - Filler", "CcPLCInnofill.Tag0694", 1)

    If Reset >= 1 Then
        LEF_F = 100
    ElseIf Reset = 0 Then
        LEF_F = a
    Else

    End If

    LEF_LM = LEF_F * (Time / (Time - 1))
    ' In case of Time is in minutes use "1" other way need to verify which unit Time is using

    Sum = (LEF_F + LEF_LM) / 2

    SetData(Sum, "Local HMI", "EFF_Line", 1)

    'end macro_command"

End Sub

推荐阅读