Simulinkモデルを階層化するために、複数のSimulinkブロックを1つのサブシステムにまとめる事があります。

さて、他人の書いたモデルを解析していると入力ポートが20も30もあるサブシステムに出くわすことがありますが、これがチョットだけ困り者です。というのも、サブシステムの「とある入力信号」が、サブシステム内のどこに繋がっているのかパッと見て分からないからです。

入力がいっぱいあるサブシステム

(当然)入力ポートがいっぱいある

 

Simulinkに付属の機能もある

さて、実は最近のSimulinkには、影響解析機能が搭載されています。

気になる信号線を右クリックして「伝播先の強調」をクリックすると、

こんな感じで接続先を表示してくれます。

これはこれでいいのですが、私のやりたい事とはちょっと違います。というのも、実はこの例では、サブシステムがこんな感じになっているからです。

奥へ奥へと追いかけていって、最終的に実ブロックに当たるまで解析をしてくれます。ここでいう「実ブロック」とは、信号線や、Inport、Outportのように信号のルーティングをするだけの仮想ブロックではなく、「AND」のように実際に何らかの処理をしてくれるブロック、という意味です。

ちなみに、「どういう経路でここまできたか?」も上図のように色をつけて表示してくれます。

私のやりたい事

私はここまでして欲しくありません。単純に、サブシステムへの入力を指定したら、そのサブシステムの中にある入力ポートをパカパカ点滅させてくれるだけでよいのです。奥へ奥へと追いかけていく必要はありません。

これには理由があります。たとえば下図では、シアン色の入力ポート(passenger_down1)から信号線が延びていて、サブシステム(validate_passenger1)に接続されています。

「入力ポート(passenger_down1)が、サブシステム(validate_passenger1)の「down」端子に繋がっている」事が分かっただけで、何がどうなっているか理解できるようなモデルになっているのが普通です。「このサブシステムって何するやつなのか」を知るのに、サブシステムの中へ中へと追っていかないといけないようではダメです。

基本的に、

・サブシステムに適切な名前や、コメントがつけられていること
・サブシステムの入出力ポートに、適切な名前がつけられていること

この2点さえ守られていれば、 そのサブシステムをみただけで「あー、そういう仕事をしてるんだなー」と分かるはずです。それなのに奥へ奥へと追いかけてしまうと、かえって何のことやら分かりにくくなってしまいます。(万が一、何のためにあるのか分からないサブシステムを見つけたら、私はすぐにそれを解体してしまいます。)

さて、残念ながらこういう事をしてくれる「ぷち影響解析ツール」は存在しないように思います。単純すぎて高い値段がつけられないでしょうから、きっと作っても儲からないんでしょうね。。。

仕方が無いですから、自分で作ることにします。そのうち。