Simulink - replace_block only works with SOME components?

Hi all
I have a virtual subsystem with a mask. The mask allows the user to select either Enable or Disable for an option (see screenshot). Depending on the option chosen, I want the mask to replace a Constant with a Repeating Sequence or the other way around.
I have the following code:
switch get_param(gcb,'control')
case 'Enable'
replace_block([gcb,'/controlSequence'],'Constant','simulink/Sources/Repeating Sequence','noprompt');
case 'Disable'
replace_block([gcb,'/controlSequence'],'Repeating Sequence','Constant','noprompt');
end
This code works perfectly when I replace 'Repeating Sequence' with 'Inport', or 'Step' (which is in the SAME 'Sources' section!), just not with Repeating Sequence.
Any ideas why?

2 commentaires

If you put the Repeating Sequence in a model, and have it selected and go to the MatLab command window and type get_param(gcb, 'BlockType') you'll see it return that it's a subsystem. That's why it's not working for you, because there is no such block as a Repeating Sequence, it's just a masked subsystem.
You should be able to replace it with a subsystem and just use get_param and set_param with add_block to excatly relacate the block you need. I've done it with compare to constant blocks before.
So, you suggest that I should create the Repeating Sequence block using it's constituents, and then set their values as necessary?
I think I can do that, but wouldn't it then be easier to just delete the constant and add_block the repeating sequence, and vice versa, depending on the user's input? Or is that what you were suggesting?

Connectez-vous pour commenter.

Réponses (0)

Catégories

Question posée :

le 8 Jan 2014

Commenté :

le 8 Jan 2014

Community Treasure Hunt

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

Start Hunting!

Translated by