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

32 次查看(过去 30 天)
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?

采纳的回答

Rob Graessle
Rob Graessle 2011-1-25
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.

更多回答(2 个)

R
R 2011-1-26
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 2011-1-25
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

类别

Help CenterFile Exchange 中查找有关 Programmatic Model Editing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by