MATLABプログラミング Simulink基礎編(7)
MATLABプログラミング Simulink基礎編シリーズです。
今回は、信号線の追加と削除です。
信号線の追加
信号線を追加するとは、「出力ポート」から「入力ポート」へ結線を行うことです。ここで、出力ポート、入力ポートとはブロックの出入り口のことです。
ですから、信号線を追加する際には「出力ポート」と「入力ポート」の指定を行います。
ここで注意しないといけないのは、引数の渡し方です。get_paramやadd_block とは、ブロックの指定の仕方がちょっと違います。
get_paramだと、ブロックを指定するのに ‘model/subsystem/SrcBlock’ などと指定していたのですが、add_lineでは ‘model/subsystem’ と、’SrcBlock/1′ という風に2つの引数に分かれています。
別に、こう書けてもいい気がするのですが、残念ながら対応していません。
<<ダメな例>>
>> add_line( ‘model/subsystem/SrcBlock/1’, ‘model/subsystem/DstBlock/1’, ‘autorouting’, ‘on’ )
信号線の削除
信号線を追加するとは、「出力ポート」から「入力ポート」へ結線を取り除くことです。ですから、追加の場合と同じように「出力ポート」と「入力ポート」の指定を行います。
演習:信号線を追加し、次に削除する
事前準備
モデル ex1_9.mdl を用意し、サブシステムを1つ追加し、名前を「Subsystem」とします。
さらにその中に、サブシステムを3つ配置してください。名前は、「Subsystem」「Subsystem1」「Subsystem2」とします。(何も考えずに配置すると、こういう名前になると思います)
手順1
手順1:MATLABコマンドウィンドウにて、SubsystemからSubsystem1へ信号線を1本追加します
>> add_line( ‘ex1_9/Subsystem’, ‘Subsystem/1’, ‘Subsystem1/1’, ‘autorouting’, ‘on’ )
結果1:SubsystemからSubsystem1に結線が行われました
手順2
手順2:MATLABコマンドウィンドウにて、こんどはSubsystemからSubsystem2へ信号線を追加します
>>add_line( ‘ex1_9/Subsystem’, ‘Subsystem/1’, ‘Subsystem2/1’, ‘autorouting’, ‘on’ )
結果2:SubsystemからSubsystem2に結線が行われました
手順3
手順3:MATLABコマンドウィンドウにて、SubsystemからSubsystem1の結線を削除します
>>delete_line( ‘ex1_9/Subsystem’, ‘Subsystem/1’, ‘Subsystem1/1’ )
結果3:結線が削除されました
手順4
手順4:MATLABコマンドウィンドウにて、SubsystemからSubsystem2への結線を削除します
>>delete_line( ‘ex1_9/Subsystem’, ‘Subsystem/1’, ‘Subsystem2/1’ )
結果4:結線がさらに削除されました
オマケ
これまで、おまじないで付けてきた autorouting ですが、これをつけないとどうなるのでしょうか?
先ほどの例で、autorouting指定なしでSubsystemからSubsystem2に結線すると
>>add_line( ‘ex1_9/Subsystem’, ‘Subsystem/1’, ‘Subsystem2/1’ )
こうなります。
さすがに、これはヒドい!というわけで、autoroutingの指定をおすすめしています。
オマケ2
autoroutingでは満足できない!というあなたには、さらなるオプションも用意されています。
Simulinkの画面にはX-Y座標があって、「こういう X-Y 座標を通るような信号線を追加しろ」という指定もできます。
たとえば、座標 (200 , 200 ) → ( 200 , 300 ) → ( 300, 300 ) →(400,300)という経路を通る信号線を追加するには、
>>add_line( ‘ex1_9/Subsystem’, [ 200 200; 300 200; 300 300; 400 300 ] )
とすることで、こうなります。
信号線が浮いちゃっていますね。これは、信号線の始点・終点を、うまーく出力ポートの位置、入力ポートの位置にあわせれば、つながります。面倒ですね。
あと、この方法は色々な危険があって、あまりお勧めできません。
まとめ
これまで、ブロックパラメータの読み書き、ブロックや信号線の追加と削除を行ってきました。Simulinkプログラミング基礎編としては、必要最低限の領域をカバーできていると思います。
あと1回の記事で、ツール化にあたっての小技をご紹介して、このシリーズを〆る予定です。