I want this code to run only once. Battery Charge/Discharge
8 次查看(过去 30 天)
显示 更早的评论
Hi guys, newbie here on Simulink, this is my first project.
I'm trying to make a battery charge and discharge simulation, I'm using a project i saw in a youtube amateur tutorial, but the example itself is flawed and I'm trying to do my changes. I have this code here:
What it does is when the SOC is > 80% the system is feeding the Load, when it reaches below 40% it turns of the Load and starts charging the batteries.
function [LoadOn, ChargingOn] = fcn(SOC)
LoadOn = 1;
ChargingOn=0;
if (SOC>80)
LoadOn=1;
ChargingOn=0;
end
if (SOC<40)
LoadOn=0;
ChargingOn=1;
end
The problem that I'm having is that on the iteration that it reaches >40% it correctly changes the variables to Load=0 and Charge=1, but on the next iteration, due to the second and third line of code, it changes back to LoadOn=1 and Charge=0, when I wanted it only to happen at SOC>80%.
And If I remove the 2nd and 3rd line it gives me an error. Basically what I want to do is that the 2nd and 3rd line only run once.
Any suggestions?
0 个评论
采纳的回答
Ben Cunningham
2019-4-15
编辑:Ben Cunningham
2019-4-16
One way of doing this would be using Persistent variables - but just as with global variables you will need to be careful - to get back to your starting condition you should use 'clear fcn'.
Additionally the persistent variable should not be the output of the function.
e.g.
function [LoadOn, ChargingOn] = fcn(SOC)
persistent LoadOnPersistent;
persistent ChargingOnPersistent;
if isempty(LoadOnPersistent) % Initial condition
LoadOnPersistent = 1;
ChargingOnPersistent = 0;
end
if (SOC>80)
LoadOnPersistent=1;
ChargingOnPersistent=0;
end
if (SOC<40)
LoadOnPersistent=0;
ChargingOnPersistent=1;
end
LoadOn = LoadOnPersistent;
ChargingOn = ChargingOnPersistent;
end
6 个评论
SALAH alatai
2022-7-21
Can you please share the simulation work for understanding purpose how and where to use this functio?
更多回答(0 个)
社区
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Propulsion and Power Systems 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!