Removing a block and making connections

9 ビュー (過去 30 日間)
Michael Joslin
Michael Joslin 2012 年 2 月 20 日
コメント済み: Marco Baratelli 2016 年 1 月 22 日
Lets say I have a simple subsystem that is just an inport, an outport and a gain block. I want to get rid of the gain block and just have the inport connected to the outport. If i use replace_block I can only replace the gain with another block and if I use delete_block it will remove the gain but leave two disconnected lines. How can I remove this block and make the connection between the remaining two using code?

採用された回答

Jarrod Rivituso
Jarrod Rivituso 2012 年 2 月 20 日
I've run into this before. My solution was to find port handles and reconnect. I'm not sure if there is an easier way.
Here's a function that should do the trick:
function removeAndReconnectBlock(blockHandle)
%Get port handles and parent system
portHandles = get_param(blockHandle,'PortHandles');
sys = get_param(blockHandle,'Parent');
%Get source port
srcSignal = get_param(portHandles.Inport,'Line');
srcPort = get_param(srcSignal,'SrcPortHandle');
%Get destination port
destSignal = get_param(portHandles.Outport,'Line');
destPort = get_param(destSignal,'DstPortHandle');
%Remove
delete_line(destSignal);
delete_line(srcSignal);
delete_block(blockHandle);
%Reconnect
add_line(sys,srcPort,destPort)
Note that this only works for single input, single output blocks, but I'm sure you could see how you would extend it further.
  1 件のコメント
Michael Joslin
Michael Joslin 2012 年 2 月 20 日
This really help, thanks a lot!

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

その他の回答 (1 件)

chandu
chandu 2014 年 12 月 8 日
May I know how to disconnect SimPowerSystems blocks using PortHandles? Please help me ASAP.....
  1 件のコメント
Marco Baratelli
Marco Baratelli 2016 年 1 月 22 日
The following works for me using SimScape! Hope it helps.
sbh = getSimulinkBlockHandle([sys '/NameOfYourSpecificBlock']);
ph = get_param(sbh,'PortHandles');
srcSignal = get_param(ph.RConn,'Line'); % or LConn for left connection of the block
delete_line(srcSignal);

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

カテゴリ

Help Center および File ExchangeSources についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by