Simulink fixed-step size protected variable name

6 views (last 30 days)
Hi,
Is there any protected variable name for the Fixed-step size solver property pane that can be used in a block?
For instance, if I specify a number, let's say 0.001, I would like to use the variable name that points to the value in the configuration parameter. I know that a user specify a variable name and call it from workspace, but that is not practical in my model.
Thanks

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 13 May 2022
Edited: Fangjun Jiang on 13 May 2022
If you set the fixed step size to be a particular value, you can get the value using the following command
get_param('ModelName',''FixedStep')
  6 Comments
Fangjun Jiang
Fangjun Jiang on 18 May 2022
What would be your desired "imaginary" approach then? There is no such a term as a "protected variable name" in MATLAB/Simulink. I think you are probably thinking of a "macro" that can be linked to the fixed step size value and then it can be used anywhere else. But the answer is no.
The workspace variable approach is the best. Create such a variable, as if that is your desired "protected variable name".
There is another way to make it happen. That is to put two lines of command in the "InitFcn" callback of the model or block. Every time before the simulation starts, these two commands are executed, which is to get_param() the fixed step size value and then set_param() the block parameter.
These two commands are MATLAB scripts. But once they are set up, you don't have to type and run them in Command Line.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 18 May 2022
Edited: Walter Roberson on 18 May 2022
"Is there any protected variable name for the Fixed-step size solver property pane that can be used in a block?"
No, there is not.
Would using a Datastore be acceptable for your purposes? That is, use the datastore variable to configure the solver step size, and then the same value would be available for reading anywhere else.
I do not know what would happen if you were to change the variable value during execution, especially without using set_param.
You talk about MATLAB scripts in a way that suggests to me that you are thinking of having a MATLAB script that sets the value and then calls sim(). But as you are not being specific on the wording you are also ruling out using a MATLAB Function Block that uses get_param and lets the result be a signal.
Now that I think of it... You could perhaps create a Constant block with an InitFcn callback that used get_param to fetch the step size and set the constant value; then feed the constant to wherever needed. That would be self-contained.
  1 Comment
Fangjun Jiang
Fangjun Jiang on 18 May 2022
I don't see a way that a Datastore can be used to achieve it.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by