Activate で Modelica を使ってみる(その 10) - スーパーブロック
Activate で Modelica を使ってみる(その10)
Modelica コンポーネントのスーパーブロック化
スーパーブロックは、複数のブロックをまとめて1つのブロックとして使えるようにする機能です。スーパーブロックを使うことにより、複雑になったダイアグラムを見た目上でシンプルにしたり、モデルを階層構造にして管理しやすくしたりすることが可能です。また、スーパーブロックを C コード化することにより処理スピードを上げたり内容を秘匿化したりすることも可能になります。FMU を用いて外部ツールで Activate モデルを利用する場合もスーパーブロックを作成することが前提となります。
スーパーブロックの作成方法
いつものバネマスモデル(添付:SpringMass_SuperBlock_2DOF_1.scm)をベースにした以下のモデルを使ってスーパーブロックの作成方法を紹介します。ちなみに、上半分と下半分は全く同じモデルです。
下の左側の部分の Mass、Spring、Damper を以下のように選択します。
リボンの “スーパーブロック” アイコンをクリックします。
以下のように、選択された部分がスーパーブロックになりました(添付:SpringMass_SuperBlock_2DOF_2.scm)。
作成されたスーパーブロックをダブルクリックすると内部のダイアグラムが以下のように表示されます。
ここで、ImplicitInput と ImplicitOutput ブロックは、それぞれスーパーブロックの左側と右側のポートに対応していて、このポートを通して内部のダイアグラムと外部のコンポーネントの間でデータをやり取りします。ブロックの名前や形状が入力/出力っぽくなっていますが、Modelica の因果的なダイアグラムなので入力/出力という概念はありません。
モデルの空白部分をダブルクリックすると上位階層のダイアグラムに戻ります。
スーパーブロックのマスク
マスクはスーパーブロックを通常のブロックと同じように使えるようにするための機能です。
スーパーブロックを選択した状態でリボンの “マスク” アイコンをクリックします。
スーパーブロックがマスクされ、ダブルクリックしても内部に入れなくなります(注:スーパーブロックを右クリックして表示されるメニューから “マスクされたスーパーブロックに入る” で入ることは可能です)。代わりに、以下のようなブロックダイアログが表示されます。これはスーパーブロック内部のダイアグラムが持つ定数を自動的に表示してくれています。この機能により、スーパーブロックを通常の単一のブロックと同じように使用することが可能となります。
ブロックダイアログの表示をもう少し分かりやすくするために、リボンの “マスクの編集” アイコンをクリックします。
表示された “Mask Editor” ダイアログにおいて “概要” フィールドを以下のように分かりやすいタイトルに変更します。次に、”オブジェクト” フィールドの右側にある アイコンをクリックします。
表示された “Parameters Creator” ダイアログの “説明” フィールドにパラメータの説明を入力します(ここでは “Damping” としました)。
同様に、K1 と M1 についても適当に説明を入力します。
この結果、スーパーブロックのブロックダイアログは以下のようになります。
次に、モデル下半分の右側の Mass-Spring-Damper 部分を削除し、そこに先ほどマスクされたスーパーブロックをコピーします。モデルは以下のようになります(添付:SpringMass_SuperBlock_2DOF_3.scm)。
そのスーパーブロックをダブルクリックし、表示されたブロックダイアログの変数名を以下のように変更します(添付:SpringMass_SuperBlock_2DOF_4.scm)。
これで、上半分と下半分は等価なモデルになりました。実行の結果も以下のようになっています。
プロジェクトブラウザ
プロジェクトブラウザはモデルの構成をツリービューで表示するためのウィンドウです。ツリーでは、モデルとブロック、スーパーブロック、リンクなどのモデル階層内のオブジェクトが表示され、あるオブジェクトを選択するとモデルエリアでも選択されたオブジェクトが表示され選択状態になります。また、オブジェクトの名前をここで変更することもできます(他に、プロパティエディターでも変更できます。もしくは、オブジェクトを選択して F2 を押しても変更が可能です)。
このモデルの現在のモデルのプロジェクトブラウザは以下のようになっています。
ディフォルトではスーパーブロックのみが表示されていますが(シミュレーション終了後は Scope による図もリストされます)、以下のように、”検索とフィルター” アイコンをクリックし、表示される検索フィールドの右端の “フィルター適用” アイコンをクリックして、表示されたウィンドウで “Block” をオンにすることによって、含まれているブロックを全て表示するように設定を変更することができます。
プロジェクトブラウザではオブジェクトの検索や名前の変更、ブロックダイアログの表示等が可能であり、オブジェクトをダブルクリックすれば、モデルエリア上でそのオブジェクトが含まれるスーパーブロック内部のダイアグラムが表示され、そのオブジェクトが選択された状態になります。
スーパーブロックへのイメージの貼り付け
以下の手順でスーパーブロックの枠内に絵を張り付けることができます。絵を張り付けたいスーパーブロックを右クリックし、表示されたメニューから “イメージ” è “セット” を選択し、表示されたファイルブラウザであらかじめ用意されたイメージファイル(添付:MBK.png)を選択します。必要に応じて、ブロックのサイズを変更してください(添付:SpringMass_SuperBlock_2DOF_5.scm)。
MoCustomComponent ブロックのスーパーブロック化
前回で紹介した MoCustomComponent ブロックも、上述のマスク機能を使って通常のブロックと同じような単一のブロックとして使用することが可能です。手順は同じで、MoCustomComponent ブロックを単体で選択してスーパーブロック化し、マスクするだけです(添付:SpringMass_SuperBlock_2DOF_MoCustom.scm)。
次回からは最適化を取り上げます。次回は最適化の前段階の知識として必要となる、シミュレーションの反復実行の方法について紹介する予定です。