# Control Simulibk step size through an internal coondition

3 vues (au cours des 30 derniers jours)
Anfänger le 11 Août 2014
Commenté : Anfänger le 12 Août 2014
I have implemented some blocks (S-Function level-2 using Matlab code, matlab function block...etc) in simulink, and I have an internal stability condition which will determine the step size after each simulation step. I know that I can set the solver to a variable step solver, but how can I make simulink check for the different obtained step sizes, and then, impose the smallest to all blocks? For the time being , I am using the following trick:
set_param(bdroot,'MaxStep',num2str(dT));
set_param(bdroot,'MinStep',num2str(dT*0.9999));
because the minimum and maximum steps cannot be the same. However, this is not working good enough.
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

### Réponses (1)

Christopher Berry le 11 Août 2014
Anfanger,
In order for the parameters MinStep and MaxStep to be enabled, the solver Type must be VariableStep. If you are using a fixed step solver, then these settings will just be ignored. So make sure you are using a variable-step solver, like ode45.
Also, I have no problems setting the MinStep and MaxStep to the same values, what error are you getting when you do:
set_param(bdroot,'MaxStep',num2str(dT));
set_param(bdroot,'MinStep',num2str(dT));
Other than that, this method seems like it should work, so what about it specifically is not good enough?
##### 1 commentaireAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens
Anfänger le 12 Août 2014
hi Christopher,
Thanks for the answer. However, I did use a variable step solver. The thing is that I am solving Partial differential Equations by myself, and hence, I have my stability condition on the time step. I then created a library, so each block can be used more then once. Since, each block will have a different set of inputs, the obtained time steps (for one iteration, from different blocks) will be different. Is there a way to force simulink automatically to compare and take the smallest one?

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Configure Simulation Conditions dans Help Center et File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by