送電線の前後での瞬時電力[GW]の計算をするブロックを作りました。メーターはそれぞれkV、kA単位で測定しているので、GWにするには単純に掛け算するだけでなく、1/1000倍しないといけません。この計算、たったの2回しか使わないならよいのですが、回路のそこかしこで同じ瞬時電力の計算をするとなると、コピペするだけとはいえなかなかに面倒です。また、やっぱりMWやkWで測りたい、となったときには、一度作ったブロック全ての*0.001を修正することになるのでこれまた大変です。
こういったときのためによく使うカタマリや意味のあるカタマリをまとめて一つのモジュールとして再利用したり、まとめて変更を加えたり、意味やはたらきをわかりやすくしたりすることができます。
モジュールの作成
まず、回路図上のどこでもいいので右クリックして、Component Wizard(図の右側)を選択します。すると、左下にComponent Wizardという枠が現れます(図の左側)。この枠は実は初めから存在していて、右クリックしなくても左下の枠のComponent Wizardをクリックすることで表示させることができます。
ここからモジュールの設定をしていきます。Nameにモジュールの名前、Titleにモジュールの箱につける説明を最大3行、Moduleのチェックボックスにチェックを入れると、これまでと同じような回路図でモジュールの定義を書きます(チェックを入れない場合は後述)。下のところに数字を入れると外部端子の数を決められます。この場合、モジュールの左側に2本の端子が、モジュールの右側に1本の端子が飛び出すことになります。Add Portsをクリックすると右図に示す画面が下部に出てきます。ここでは、各端子の設定をすることができます。順に、端子の名前、端子の次元(このマニュアル内で触れるかは未定ですが、複数の信号を1本の線にまとめることができます。そういった線を端子として使う場合、次元を設定する必要があります。)、端子の種類(入力、出力、電気信号(電気回路に直接つなげるときに使います))、信号の型(実数、整数、論理値(0 or 1))です。最後の×で端子を選択できます。誤って消してしまってももう一度該当の場所に1を入れて、Add Portsすれば、端子の数は元に戻せます(端子名や順番は変わってしまいます)。
左側に電圧(E)、電流(I)の入力端子を、右側に電力(P)の出力端子を作るときは左図のようになります。これでFinishを押すと、右のようなブロックができます。これを適当なところに配置します。
モジュールの編集
ダブルクリックをするとブロックの中身や外面を編集できます。こちらの手順だと、Schematicの背景が白になります。
WorkspaceのCase001をクリック→Definitionsをクリック→instantPをダブルクリックしても可能です。こちらの手順だと、Schematicの背景がベージュ色になります。
モジュールを作っただけの段階ではSchematicは入力と出力だけです。ここにつながるようにモジュールを作成します。
先ほど作った瞬時電力を計算するブロックをコピペしてつなげるとこのようになります。むろん、コピペ以外の編集もできます。
外面の編集
次に、ブロックの外面の編集をします。画面下部のGraphicタブをクリックすると左図のような形が出てきます。緑の文字と点が入力端子や出力端子などの外部端子です。外部端子と文字が重なったり文字が枠いっぱいになったりしているので、幅を広げるなどの調節をしたのが右図です。この画面で端子の数を増減させたりすることもできます。画面上部のタブにはそれらしきものがないので、既存の端子をコピペして、ダブルクリックで編集すると新しい端子を作ることができます。
できたモジュールを元の回路図内に貼りつけた例がこの図です。先ほどは瞬時電力の計算を別々だけど同じブロックで動かしていましたが、これで全く同じ計算が行われていることがわかりやすくなりました。kWやMWで見たいときもこのブロックの中身だけ編集すればいいので簡単です。
モジュールのインポート
他のプログラムで作ったモジュールをコピーしたいときは、Workspace枠内でコピーしたいモジュールを右クリックし、Copyします。そして、コピー先にしたいプログラムのDefinitionsを右クリックして、Paste Definition(s)します。結果が右下図です。無事にcalcRMS60(60Hzで実効値を計算するモジュールです。)というモジュールがコピーできました。
モジュールの中にモジュールを設置することもできます。ただし、相互依存にはできません。また、内部に別のモジュールがあるモジュールをコピペするときは何らかの方法で下位のモジュールもコピペしないとうまく動作しません。
このモジュールを設置するには、先ほどと同様に、Workspace枠内で設置したいモジュールを右クリックし、Create Instanceします。あとは、設置したい場所にPasteする(Ctrl+VでもOK)だけです。
プログラミングによるモジュールの作成
ブロックを組み合わせていると、ときどき、ブロックを組み合わせるより普通のプログラムで書いた方が速いしわかりやすいんだよなあと思うことがあります。そういうときの方法を説明します。
まず、モジュールを作るときにModuleというチェックボックスを外します。端子の設定などをしてFinishしてできたモジュールには下図のようにSchematicが選択できなくなり、代わりにScriptが選択できるようになっています。また、Workspace内でも他の定義と違ってMの文字が入っていないことがわかります。これにより、回路図ではなく、Fortranによるプログラムで動くモジュールを作ることができました。
Fortranのサンプルプログラムを示します。これは、ステップ注入付周波数フィードバック単独運転検出方式の周波数偏差と無効電力注入量の関係を表す関数です。折れ線型になっているため、If文を使うのが最も効率的だったのでFortranでのスクリプトという形をとりました。外部端子の宣言の仕方($+端子名)、変数の宣言の仕方(冒頭で#LOCAL REAL **(実数の場合))
、定数の置き方(data 変数名1,変数名2/変数名1の値,変数名2の値/)、IF文の使い方などを見て学んでください。