How to pass multiple (>50) variables between blocks in Simulink
29 views (last 30 days)
Show older comments
I'm looking for a method to pass multiple variables of different type (double, vector, string etc.) between blocks in Simulink. If I have several, I can pass it separately, or even better pack to structure like (for example if I pass it from Function block):
var_holder=struct('VarA',VarA,'VarB',VarB,'VarC',VarC);
And set manually a Bus to pass it to next block. However what can I do if I work with very big model, where I have to solve over 50 ODEs, and pass the result to the next step? Setting manually this endless Bus does not sounds like correct way to do so. What is recommended way to work with multivariable Simulink models?
1 Comment
Answers (1)
Ayush
on 5 Dec 2023
Edited: Ayush
on 5 Dec 2023
Hi @Karol P.
I understand that you want to pass multiple variables of different type (double, vector, string etc.) between blocks in Simulink without relying upon buses. You can use Parameter Structures to pass multiple variables of different types.
Define a structure in MATLAB workspace containing all the variables and use Simulink.Parameter objects to link to the structure fields.
% Define a Simulink.Parameter in the MATLAB workspace
myParam = Simulink.Parameter;
myParam.Value = 10;
If the next block in your Simulink model accepts Simulink.Parameter objects directly, you can connect the Simulink.Parameter directly to the input of that block.
% Create a new Simulink model or open an existing one
open_system('myModel');
% Add a block to the Simulink model that accepts Simulink.Parameter objects
% For example, if the block is a Gain block, you can directly connect myParam to it
add_block('simulink/Commonly Used Blocks/Gain', 'myModel/GainBlock');
% Connect the Simulink.Parameter to the input of the block
set_param('myModel/GainBlock', 'Gain', 'myParam');
You can also use Data Store Memory Block:
- Place a Data Store Memory block in your Simulink model. Double-click the block and enter the name of the Simulink.Parameter in the "Data store name" field.
- Connect the Data Store Memory block to the input of the next block in your Simulink model.
For more information on:
- Simulink.Parameter refer: https://www.mathworks.com/help/simulink/slref/simulink.parameter.html
- Data Store Memory: https://www.mathworks.com/help/simulink/slref/datastorememory.html
Thank you
0 Comments
See Also
Categories
Find more on Simulink Functions in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!