I want this code to run only once. Battery Charge/Discharge
4 ビュー (過去 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?
Khalid Massoud
2022 年 11 月 10 日
編集済み: Khalid Massoud
2022 年 11 月 10 日
It gives me an error in the line no.10
その他の回答 (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!