find and set simulink parameters for several blocks

18 visualizaciones (últimos 30 días)
Rashmil Dahanayake
Rashmil Dahanayake el 17 de Oct. de 2014
Respondida: Orion el 17 de Oct. de 2014
I have a simulink model with number of subsystems. For example I have used simpower systems MOSFET in multiple places within my model.
At the moment I use the following code. But limitation is, that the bock paths/Names should be known.
for x=1:4 %debug_14.slx is the file name%
modd=sprintf('debug_14/HBridge/Mosfet%d',x);
set_param(modd,'Ron','3');
end
Now what if I have several Mosfet blocks, then it hard to specify the block path individually. I need to set Ron=3 for all Mosfets within my model. How can I programatically search mosfet blocks and set_param.

Respuestas (4)

Debarati Banerjee
Debarati Banerjee el 17 de Oct. de 2014
Regarding this question:
Find the attached sample model (‘trial_model.mdl’)where there are multiple ‘Gain’ blocks in the top model and also in subsystem. The path and names of all the ‘Gain’ blocks present in the model ‘trial_model’ can be found by the following command:
>>block_name = find_system('trial_model', 'BlockType', 'Gain')
Here block_name will be an n*1 cell array containing the names of all the ‘Gain’ blocks present in the model ‘trial_model.mdl’.
Then you can consider to run the following loop to change the parameters of each of the block. You can refer to the following sample code:
>> n=length(block_name)
for i=1:1:n
set_param(block_name{i,1},'Gain','15') %%Changing ‘Gain’ of all the ‘Gain’ blocks to 15
end
  1 comentario
Rashmil Dahanayake
Rashmil Dahanayake el 17 de Oct. de 2014
The problem with MOSFET is it comes with sysmpower systems tool box. The block type appears to be a subsystem. Hence what should I specify for the keyword search for 'Blocktype'. Updated mdl file attached with MOSFETs in top level and subsystems.

Iniciar sesión para comentar.


Rashmil Dahanayake
Rashmil Dahanayake el 17 de Oct. de 2014
Editada: Rashmil Dahanayake el 17 de Oct. de 2014
A temporary way around this. Works only if a Tag is specified under block properties.
trial_model;
cc=find_system('trial_model','Regexp', 'on','Tag', 'mo(.*)');
for x=1:length(cc)
block1=cc{x};
set_param(block1,'Ron','3');
end
limitation: Once off Tag set up for blocks required

Orion
Orion el 17 de Oct. de 2014
Editada: Orion el 17 de Oct. de 2014
Hi,
try this
MyMosfetBlock = find_system('trial_model','SourceType','Mosfet')
specific property of your Mosfet block
then you use set_param to change the parameter you want.
  1 comentario
Rashmil Dahanayake
Rashmil Dahanayake el 17 de Oct. de 2014
it returns an empty cell array. Which means the search criteria unable to locate mosfets.

Iniciar sesión para comentar.


Orion
Orion el 17 de Oct. de 2014
I tried
MyMosfetBlock = find_system('trial_model','SourceType','Mosfet')
with the mdl you attached, and I got the result
MyMosfetBlock =
'trial_model/Subsystem/sw1'
'trial_model/Subsystem/sw2'
'trial_model/sw1'
'trial_model/sw2'
i have Matlab 2014a, but this command line should work with every version.
Do you use Libraries, Masks ?

Categorías

Más información sobre Subsystems en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by