SimulinkのL​ineのコマンドウィ​ンドウ上からの操作に​ついて

7 ビュー (過去 30 日間)
Katsuya Sano
Katsuya Sano 2021 年 6 月 15 日
コメント済み: Katsuya Sano 2021 年 6 月 16 日
SimulinkのLineのルーティングをコマンドウィンドウから操作したいです。
図のようにライン名を持った信号線の間にブロックを挿入する場合、どのようなコマンドを記述すれば良いでしょうか。

採用された回答

Atsushi Ueno
Atsushi Ueno 2021 年 6 月 15 日
編集済み: Atsushi Ueno 2021 年 6 月 15 日
下記はエラー処理の無い場当たり的なコードです
  • 質問の条件を外れたモデルでは恐らく想定通りに動きません
  • 重複したラベルを持つ等の複雑なモデルでは想定通りに動きません
  • ブロックを追加する位置(座標)の考慮はしていません
% 添付モデルを開く(既にモデルを開いている場合は不要)
uiopen('sample.slx',1); % open_system('sample.slx');
hlneAdd2 = find_system(bdroot,'FindAll','on','type','line','name','input'); % 'input'信号を検索
hPrtSrc = get_param(hlneAdd2,'SrcPortHandle'); % 'input'信号の生成元端子を取得
hPrtDst = get_param(hlneAdd2,'DstPortHandle'); % 'input'信号の接続先端子を取得
add_path = [regexprep(getfullname(hlneAdd2),'\w+/[0-9]+$','') 'Delay']; % 追加ブロックのパスを作成
hblkNew = add_block('simulink/Discrete/Delay',add_path ,'DelayLength','1'); % Delayブロックを追加
hPrtNew = get_param(hblkNew,'PortHandles'); % 追加したDelayブロックの入出力端子を取得
delete_line(hlneAdd2); % 'input'信号を削除する
add_line(gcs,hPrtSrc,hPrtNew.Inport); % 'input'生成元と追加ブロックを接続する
add_line(gcs,hPrtNew.Outport,hPrtDst); % 追加ブロックと'input'接続先を接続する
  1 件のコメント
Katsuya Sano
Katsuya Sano 2021 年 6 月 16 日
回答ありがとうございます。
やはり、add_block、add_line等を駆使する形になるのですね。
個人的にはSimulinkをマウス操作で編集する際、ライブラリからブロックをライン上にドラッグ&ドロップすると、画像のような形になるので、それに対応したコマンドがないかなと思っているのですが。
もしくは、既にSimulink上に存在しているラインのルーティングを変更できれば、信号名などのプロパティそのままにブロック追加ができそうだと考えているのですが。

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

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeプログラムによるモデル編集 についてさらに検索

タグ

製品


リリース

R2016b

Community Treasure Hunt

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

Start Hunting!