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

29 次查看(过去 30 天)
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 个评论
Sayan
Sayan 2023-12-4
编辑:Sayan 2023-12-4
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?

请先登录,再进行评论。

回答(1 个)

Ayush
Ayush 2023-12-5
编辑:Ayush 2023-12-5
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

类别

Help CenterFile Exchange 中查找有关 Simulink Functions 的更多信息

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by