How to pass multiple (>50) variables between blocks in Simulink

11 views (last 30 days)
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
Sayan
Sayan on 4 Dec 2023
Edited: Sayan on 4 Dec 2023
If you are asking about taking 50 outputs and use them in different blocks ,you can use the MATLAB function block to output 50 variables and demux it to use further in othr blocks.Does this answer the query?

Sign in to comment.

Answers (1)

Ayush
Ayush on 5 Dec 2023
Edited: Ayush on 5 Dec 2023
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:
  1. Simulink.Parameter refer: https://www.mathworks.com/help/simulink/slref/simulink.parameter.html
  2. Data Store Memory: https://www.mathworks.com/help/simulink/slref/datastorememory.html
Thank you

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!