我正在尝试编写一个模拟交流发电机激活功能(为电池充电)。简而言之,我的功能“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的情况)。