Simulinkモデル 接続先ポート番号の取得

34 views (last 30 days)
shota
shota on 27 Feb 2019
Answered: Etsuo Maeda on 28 Mar 2019
Simulinkモデル 接続先ブロックについて質問です。
あるブロックの"LineHandles"から"DstHandle"まで取得し、出力先を確認できますが、
出力先ブロックの上から何番目に接続されているかを確認したいです。
”PortConnectivity”から"Dstport"を使用し、何番目に接続されていることは確認できました。(1番目に接続:0で出力)
しかし、信号線が枝分かれした際、それぞれが違うブロックに接続され、[1,2]の順で取得したい時に[2,1]と出力されます。
”PortConnectivity”を使用せずに接続先ブロックの上から何番目に接続されているかわかるプロパティまたは
方法はありますでしょうか。
少し分かりづらい質問で申し訳ないですがご回答をお願いいたします。
  1 Comment
Shoumei
Shoumei on 4 Mar 2019
サンプルモデルと、そのモデルのどの情報を取得したいかを教えてもらえると助かります。

Sign in to comment.

Answers (1)

Etsuo Maeda
Etsuo Maeda on 28 Mar 2019
Shoumeiさんのおっしゃる通り、何をどうされているのかよく分かりませんが、"Lineの接続先ブロックの何番目に接続されているのか"を判定するなら接続先のブロックのプロパティを使えばいいのではないでしょうか。
vdp
hx2 = get_param('vdp/x2', 'Handle');
PcMux = get_param('vdp/Mux', 'PortConnectivity');
PcMux(1).SrcBlock == hx2
PcMux(2).SrcBlock == hx2
組み込みサンプルのvdpであれば、x2からLineは複数分岐して、MuxやOutPortにつながっています。
Mux側でPortConnectivityを取得し、SrcBlockのハンドルとx2のハンドルの一致を順に比較すれば、x2からのLineがMuxの2番目のInputにつながっていることが分かります。
実モデルや実コードを見せたくない場合は、vdpやf14などの公知のモデルと、vdpやf14に合わせたコードで質問された方がよりよい回答が得られます。
チュートリアル: MATLAB Answersで早く的確な回答を得るためのポイント
HTH

Categories

Find more on プログラムによるモデル編集 in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!