Infinite while loop in Matlab function block
Ältere Kommentare anzeigen
I have made this programm to implemente it in a Matlab function block in Simulink :
function Open_area1 = fcn(Moisture_Sensor_area_1_OUT,Moisture_instruction_min,Moisture_instruction_max)
Open_area1 = 0;
if (Moisture_Sensor_area_1_OUT<Moisture_instruction_min)
while(Moisture_Sensor_area_1_OUT<Moisture_instruction_max)
Open_area1 = 1;
end
end
end
But the while loop make an infinite simulation time.
2 Kommentare
KALYAN ACHARJYA
am 5 Okt. 2018
That means the following condition is always true
Moisture_Sensor_area_1_OUT<Moisture_instruction_max
Do same sort of modification (update), so that it not true after some required iteration
Matthieu GATINE
am 5 Okt. 2018
Bearbeitet: Matthieu GATINE
am 5 Okt. 2018
Akzeptierte Antwort
Weitere Antworten (1)
TAB
am 8 Okt. 2018
0 Stimmen
I guess, you are trying to run the loop for checking Moisture_Sensor_area_1_OUT<Moisture_instruction_min condition for every sample time.
But Simulink's Matlab Function runs in different way. It is invoked at every sample time during model execution.
At t=0, Get the 3 function inputs from previous blocks, Call fcn with inputs, collect fcn output and send to next block
At t=1, Get the 3 function inputs from previous blocks, Call fcn with inputs, collect fcn output and send to next block
At t=2, Get the 3 function inputs from previous blocks, Call fcn with inputs, collect fcn output and send to next block
...
... and so on.
Inputs to fcn remains same during the a sample time, so loop will always run into infinity.
You don't need to use while loop. You can just use if condition to set output.
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!