Excel VBA,静态变量?

时间:2016-04-13 09:24:15

标签: excel vba excel-vba

我正在尝试编写一个模拟交流发电机激活功能(为电池充电)。简而言之,我的功能“Alt”根据电池的充电状态(SOC)来调节交流发电机的激活。一旦 SOC< 开启 30 并保持不变直到 SOC> 40 即可。因此,交流发电机将对电池充电至40%,之后再次进入关闭状态。

到目前为止,这是我的代码:

Function SOC(PrevSoc As Double, Power As Double)
    Static Alt_State As Integer

    If PrevSoc >= 40 Then
        Alt_State = 0
    ElseIf PrevSoc <= 30 Then
        Alt_State = 1
    End If

    If Alt_State = 0 Then
        SOC = PrevSoc - ((350 - Power) / (12 * 360))
    ElseIf Alt_State = 1 Then
        SOC = PrevSoc - ((350 - (Power + 3500)) / (14 * 360))
    End If
End Function

请注意,根据交流发电机的状态,我会有一个特定的等式,它会考虑或不考虑交流发电机的额外功率输入。

现在我的问题是行为非常奇怪,例如我观察到36%的激活。在我看来,它是相关的静态变量“alt state”。是否有另一种方法可以在Excel中解决此问题?任何帮助都将非常感激。

PS:我可以根据需要上传excel文件

PS2(编辑):变量“Power”表示来自另一个来源的电源输入,该电源也将为电池充电。当功率= 0时,电池按照简单的等式放电,因此具有恒定的速率(alt_state = 0且考虑功率= 0的情况)。

0 个答案:

没有答案