Is there a way to abort Simulink simulation programatically if it takes a long time?

19 vues (au cours des 30 derniers jours)
I have a model that, depending on some variable values sometimes runs very slowly. Typically I try out many different variable values in a loop, i.e. I start the simulation from a MATLAB script. Is there a way to abort the simulation without breaking the loop if the simulation takes too long?

Réponse acceptée

Rob Graessle
Rob Graessle le 25 Jan 2011
Walter is correct about using a timer object that is configured to fire at the end of the wait period. In the timer callback you can use the following command to stop the simulation:
set_param('ModelName', 'SimulationCommand', 'stop')
where ModelName is the name of the model you are simulating.
For more information, check out Running a Simulation Programmatically.

Plus de réponses (2)

R
R le 26 Jan 2011
The way I solved was basically like this.
myTimer = timer('StartDelay',10, 'TimerFcn','set_param(''ModelName'',''SimulationCommand'',''stop'')');
for KpGain = 1:10
start(myTimer);
sim('ModelName');
stop(myTimer);
end
delete(myTimer);
I guess that in a parfor loop you would have to be a little more careful of having different timers for different workers, right?

Walter Roberson
Walter Roberson le 25 Jan 2011
In the MATLAB routine you could start a timer that would fire at the end of your wait. In the timer callback, you would instruct the simulation to stop.
I do not know the details at all, as I have not used simulink. It might involve setting a parameter and using a STOP block; see a recent cssm post
There appears to be some other useful information in this cssm post

Catégories

En savoir plus sur Programmatic Model Editing dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by