チュートリアル:Modelica Custom Componentの作成

モデルに存在するModelica Standard Libraryブロックを置き換えるためにMoCustomComponentブロックをカスタマイズするプロセスを学習します。

Modelica言語を使用して陰的コンポーネントを定義できるように、Modelica Custom Componentブロックが用意されています。このブロックは、そのポート、パラメーター、シミュレーション関数を含め、自由にカスタマイズできます。このブロックを使用すると、既存のModelicaコードを利用して、新しいコンポーネントの作成や既存のModelicaブロックの変更が可能です。

このチュートリアルのファイル

ActiveRC.scm

このチュートリアルで使用するモデルは次の場所にあります。<installation_directory>/hwx/databases/activate/toolboxes/Modelica/demos/Electrical/ActiveRC.scm

Modelica Custom Componentの定義

MoCustomComponentブロックのポート、パラメーター、およびシミュレーション関数を定義します。

  1. デモブラウザ#menucascade-separatorModelica#menucascade-separatorElectricalから、ActiveRC.scmを選択します。
    このモデルが新しいウィンドウで表示されます。
  2. パレットブラウザ#menucascade-separatorActivate#menucascade-separatorCustomBlocksからMoCustomComponentブロックをメインダイアグラムの外にドラッグ&ドロップした後、このブロックをダブルクリックします。
    ブロックダイアログが開き、このブロックのポート、パラメーター、およびシミュレーション関数を定義するためのタブが表示されます。
  3. ブロックダイアログで、ポート(Ports)タブを選択して、入力ポート1つと出力ポート1つを定義する情報を次の図のとおりに入力します。
    ImportantColonSymbol ModelicaのMOコードを参照すると、どのポートがこのコンポーネントに必要なのかを理解する上で効果的です。
  4. ブロックダイアログで、パラメーター(Parameters) タブを選択します。オブジェクトパラメーターの数(Number of Object Parameters)に1と入力します。名前(Name)に'R'、値(Value)にRをそれぞれ入力します。
  5. ブロックダイアログで、シミュレーション関数(SimFunction)タブを選択します。
    NoteColonSymbol シミュレーション関数を書くには、Modelica言語とその継承(拡張)方法に関する一定の知識が必要です。
  6. シミュレーション関数タブで、次の操作を実行します:
    • 関数名をResistorに設定します。
    • 関数コード(Function code)欄の横にあるをクリックします。開いたテキストエディターで、次のModelicaコードをコピー&ペーストします。
      
      model Resistor "Ideal linear electrical resistor"
       //MSL 2.2.1
       extends Modelica.Electrical.Analog.Interfaces.OnePort;
       parameter Real R "Resistance";
      equation
       R * i = v;
      end Resistor;
    • OKをクリックします。
    Modelica Custom Componentブロックが定義されて、モデルに接続できるようになります。

Modelica Custom Componentの実装

既存のR=1 ResistorブロックをModelica Custom Componentに置き換えます。

  1. モデルから、Modelica Componentを選択してカットします。左側のResistor R=1を選択して、カットしたModelica Componentブロックをそこにペーストします。
    2つあるResistorブロックの1つがModelica Componentに置き換えられます。モデルは次の図のようになります。
  2. ダイアグラムの外で右クリックしてコンテキストを選択します。
  3. コンテキストメニューでR=10と入力してOKをクリックします。
    NoteColonSymbol コンテキストに入力した値は、この後でスーパーブロックをマスクするステップを実行するために必要です。
  4. モデルで、Modelica Componentを選択します。
  5. リボンのスーパーブロックツールを選択するか、右クリックしてコンテキストメニューからスーパーブロックを選択します。
    選択したModelica Componentがスーパーブロックに変換されます。
  6. リボンのマスクツールグループで自動マスクツールをクリックします。
    スーパーブロックがマスクされます。
  7. メインダイアグラムの外で右クリックしてコンテキストを選択し、R=10を削除します。
  8. ダイアグラムで、SuperBlockをコピーして、残っているResistorブロックR=1を選択して、そこにSuperBlockをペーストします。
    2つ目のResistorブロックがSuperBlockに置き換えられます。この結果として、モデルにはSuperBlockとSuperBlock_1という2つのスーパーブロックが存在しています。
  9. ダイアグラムでSuperBlock_1をダブルクリックします。
  10. ダイアログで、Rに1.25を入力します。