Load external file in ssc block Simscape

7 views (last 30 days)
Moritz
Moritz on 2 Aug 2024
Commented: Yifeng Tang on 7 Aug 2024
I build a "liquid valve" component (.ssc file) in Simscape which includes a dropdown menu to select different valve types. The parameters for each valve are stored as a structure in a separated .m file. Depending on which valve is selected, I would like to "load" the corresponding values into my "liquid valve" component (.ssc file). Similar to the "Thermal Liquid Properties (TL)" component which loads an external file depending on the selected fluid.
How do I "load/import" my external .m file (structure) into my simscape component?
  1 Comment
Yifeng Tang
Yifeng Tang on 7 Aug 2024
My initial thoughts are to put a mask on the Simscape component(s), and use set_params to pull the values from the data source into the mask.

Sign in to comment.

Answers (1)

Shishir Reddy
Shishir Reddy on 5 Aug 2024
Hi moritz
As per my understanding, you would like to “load” the corresponding values into the “liquid valve” component depending upon the valve selected.
For this, the simscape component should be modified as follows
parameters
% Define the parameters with initial values and units
param1={0, 'unit'}; %unit should be replaced with the actual units of param1
param2 = {0, 'unit'};
% Add more parameters as needed
end
function setup
% Loading the parameters from the external .m file
% Ensure the .m file is on the MATLAB path
params = feval('valveParams', valveType);
% valveParams is the separated .m file which contains a function that returns the structure of parameters based on the valve type.
% valveType is the type of the valve selected from the dropdown.
% Assign the loaded parameters to the component parameters
param1 = params.param1;
param2 = params.param2;
% Assign more parameters as needed
end
By following this method, parameters can be loaded dynamically to the simscape component based on the selected valve type.
For more information regarding the “feval” function kindly refer the following documentation https://www.mathworks.com/help/matlab/ref/feval.html
I hope this helps.
  1 Comment
Moritz
Moritz on 6 Aug 2024
Edited: Moritz on 7 Aug 2024
Thanks! This is, what I was looking for and it works! :)
However, I get the following warning,
Warning: File: Line: 1, the unit of value assigned to 'param1' was changed from '1' to 'Pa'.
when I use this setting.
parameters
param1 = {0, 'Pa'};
end
function setup
params = feval('valveParams', valveType);
param1 = params.param1;
end
I can suppress the warning, by adding the 'unit' in the 'function setup',
parameters
param1={0, 'Pa'};
end
function setup
params = feval('valveParams', valveType);
param1 = {params.param1, 'Pa'};
end
To me, this seems to be redundant. Is this correct or can I solve this differently?
Matlab states that using the setup function is not recommended ((Not recommended) Prepare component for simulation - MATLAB - MathWorks Benelux). Would it be possible to do the same things without using the setup function? I am just curious.
Thanks!

Sign in to comment.

Categories

Find more on Foundation and Custom Domains in Help Center and File Exchange

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!