MATLAB Answers

I want this code to run only once. Battery Charge/Discharge

68 ビュー (過去 30 日間)
Alexandre Correia
Alexandre Correia 2019 年 4 月 15 日
コメント済み: Mustafa Ahmed 2021 年 4 月 19 日 16:13
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?
  1 件のコメント
Nergiz Soyak
Nergiz Soyak 2020 年 3 月 10 日
ıt runs the full code.can you send it back?very urgent needed

サインインしてコメントする。

採用された回答

Ben Cunningham
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
  4 件のコメント
Mustafa Ahmed
Mustafa Ahmed 2021 年 4 月 19 日 16:13
can anyone do me a matlab code for battery charging and discharging
i want the results like voc , i battery , time .. etc

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by