Simulink - replace_block only works with SOME components?

4 ビュー (過去 30 日間)
Viren
Viren 2014 年 1 月 8 日
コメント済み: Viren 2014 年 1 月 8 日
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 件のコメント
Duke
Duke 2014 年 1 月 8 日
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.
Viren
Viren 2014 年 1 月 8 日
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?

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangeAuthor Block Masks についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by