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

11 visualizaciones (últimos 30 días)
Katsuya Sano
Katsuya Sano el 15 de Jun. de 2021
Comentada: Katsuya Sano el 16 de Jun. de 2021
SimulinkのLineのルーティングをコマンドウィンドウから操作したいです。
図のようにライン名を持った信号線の間にブロックを挿入する場合、どのようなコマンドを記述すれば良いでしょうか。

Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 15 de Jun. de 2021
Editada: Atsushi Ueno el 15 de Jun. de 2021
下記はエラー処理の無い場当たり的なコードです
  • 質問の条件を外れたモデルでは恐らく想定通りに動きません
  • 重複したラベルを持つ等の複雑なモデルでは想定通りに動きません
  • ブロックを追加する位置(座標)の考慮はしていません
% 添付モデルを開く(既にモデルを開いている場合は不要)
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 comentario
Katsuya Sano
Katsuya Sano el 16 de Jun. de 2021
回答ありがとうございます。
やはり、add_block、add_line等を駆使する形になるのですね。
個人的にはSimulinkをマウス操作で編集する際、ライブラリからブロックをライン上にドラッグ&ドロップすると、画像のような形になるので、それに対応したコマンドがないかなと思っているのですが。
もしくは、既にSimulink上に存在しているラインのルーティングを変更できれば、信号名などのプロパティそのままにブロック追加ができそうだと考えているのですが。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre 対話型のモデル編集 en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2016b

Community Treasure Hunt

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

Start Hunting!