Borrar filtros
Borrar filtros

How do I set the initial state of a Simulink block programatically?

12 visualizaciones (últimos 30 días)
I am trying to set the initial state for selected blocks in my Simulink model (not for the whole model). According to MATLAB manual, you can use getBlockSimState & setBlockSimState to access and modify SimState of individual blocks.
However, this is not very well documented and I always get an error when trying to use those functions. Is there an example of the correct syntax or is there another recommended way of setting the state?

Respuesta aceptada

MarkB
MarkB el 1 de Feb. de 2011
The easiest way to set the initial state of a block from MATLAB code is to use the "set_param" command. This is essentially the programmatic way to populate a block's dialog. The command uses the following format:
set_param( 'model_name/system_name/block_name', 'parameter_name', 'new_parameter_value' )
The "parameter_name" will vary from block-type to block-type, but you can find out the name of a give block's state (It is usually close to the text in the dialog) in the help under "Block-Specific Parameters". The "new_parameter_value" is usually a string that represents the text that you would have typed in the dialog fields.
  5 comentarios
MarkB
MarkB el 3 de Feb. de 2011
The issue might be addressable by changing your configuration parameters. Specifically, older releases of Simulink offered a lot of places to enter initial conditions, so much so that there was a potential for users to enter contradictory/competing initial conditions (e.g. initial values for an outport and a unit delay immediately upstream from it). I would recommend that you go to the Configuration Parameters->Diagnostics->Data Validity section, and make the following changes:
* Change "Underspecified initialization detection" from "Classic" to "Simplified"
* Enable all three of the diagnostics below it.
This should hopefully provide you with more detailed feedback for any initialization issues that you encounter.
With regards to Paulo's comments about difficulty with more complex "set_param" commands, I would recommend that he use MATLAB workspace variables instead of putting long text in the dialog box. Specifically, you can make MATLAB variables in the workspace and use them in the dialog. For example:
>>Km = 42; % Random example number
>>Tm = 2112; % Random example number
>>den = [Tm, 1];
and then the "set_param" commands become:
set_param('T2/TF1','Numerator', 'Km');
set_param('T2/TF1','Denominator',den);
(By the way, we still support and default to the old style of initialization for compatibility, but encourage people to do it the new way.)
K E
K E el 16 de Feb. de 2012
Very useful tip, Mark, thanks.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Programmatic Model Editing en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by