〜誰でもできる! ATPにおけるデータベースモジュール〜
"ATP RULE BOOK"
p.589〜598
このページはMicrosoft
Wordによって作られています。したがって、Html形式に落とす時に見にくくなっている部分があります。
Word形式のファイルを置いておきますので、こちらをダウンロードしていただいても結構です。
<目次>
・第1章 データベースモジュール(DBM)とは?
・第2章 データベースモジュール(DBM)の決まり
・第3章 素子群のDBM化と使用の手順
・第4章 例題集(まだ未完成)
・第5章 動かない! 場合
第1章
データベースモジュール(DBM)とは?
〜 MODELSを知っているあなた、DBMを知っていますか? 〜
第2章 データベースモジュール(DBM)の決まり
C言語のプログラムで
と記述するのと同じように、DBMでも一種のプログラム(以下、DBM fileと呼びます)を記述しなければなりません。
3相サイリスタブリッジ整流回路を例に、DBM fileについて説明します。
下のように回路を組んだ場合のDBM fileを示します。
以下のように、各部を@〜Iと定義します。
@ BEGIN NEW DATA CASE ----NOSORT----
NOSORTオプションの指定。プログラムの始まりであることを宣言する。
A DATA BASE MODULE
このプログラムが DATA BASE MODULE であることを宣言する。
B $ERASE
$ERASEカード。このカードはパンチカード出力が保持するバッファをクリアする。
C ARG,NUM,DUM独立変数宣言
データベースモジュールで使用される引数を宣言する。
引数(独立変数)には
@ノード名
A数的な値
Bダミー(モジュール内でのみ使われるノード名)
の3種類がある。
独立変数名は基本的に6文字にする。独立変数名の長さを調節に"_"(アンダーバー)を用いる。
a,ARG :外部入出力ノード名、NUMで宣言する独立変数を宣言する
3-phaseの場合、独立変数名は5文字にする
b,NUM :数的な値を持つ独立変数を宣言する
c,DUM :モジュール内部ノード名 (ダミーの独立変数)
D テンプレート(/BRUNCH,/SWITCH,/SOURSE,/....)
ノード間に接続されている素子・スイッチ(バルブ)・電源などのデータが記載される部分。
接続されている場所・素子の種類・値がここで決められる。
E BEGIN NEW DATA CASE
F C Comment card
G $PUNCH
.adpファイルを .pchファイルにコンパイルするための命令。FORTRANのパンチカード
の作成に由来する。
H BEGIN NEW DATA CASE
I BLANK
「終わり」であることを示す。
DBMでは、上に示した@〜Iの情報が必要となります。
第3章 素子群のDBM化と使用の手順
例として、RL直列回路の場合を示します。
<libファイルの作成>
1.まず、DBM化する回路をATPDrawで描く。
このとき『決まり』に従って、すべてのノードにノード名を付ける。
→『決まり』とは
ノード名は6文字(3相を1本の線にまとめるときは5文字)。よって、6文字未満の時はアンダーバーで文字数を稼ぐ。
この回路図で言うと、ARGで宣言する外部入出力端子はA_____,B_____、DUMで宣言するダミー端子はN_____となります。(ここでは、3相ではないのですべて6文字)
2.ATPDraw上で"Make File"を実行し、描いた回路をadpファイルに落とす。
3.このadpファイルを第2章で書いた形式に、TXTエディタで編集します。下のツールバーからエディタを起動します。
基本的に@〜Iの項目を付け加えるだけなのですが、以下の手順で行うと間違えにくくなります。
(1)
@〜Bを付け加える。
(2)不必要なコメント行を削除する。
ただし, テンプレート部 /BRANCH /SWITCH /SOURCEのコメント行は削除しない。
(3)
E〜Iを付け加える。
Fのコメントも省略してはならない。
(4)C変数宣言部 で、ARG,NUM,DUM を宣言する。
ARG:外部入出力ノード名+素子データ入力のあるもの
NUM:素子データ入力させるもの
DUM:ダミーノード名(外部入出力ノード以外のノード名)
この場合、
となります。
(5)Dテンプレート部 の編集 (素子データ入力がある場合)
RL直列回路の例では、RとLの値を外部から任意に設定できるようにする場合、この作業が必要になります。
そしてC変数宣言部に、新たに加える変数(ここではRESISTとINDUCT)を付け加えます。
NUM RESIST,CAPACI
今,素子値は10Ω,5mH.
実は数的な値も6文字で、それはコメント行C <素子>に右寄せで対応しているのが分かります。この数値の部分をNUMで宣言した変数(RESISTとINDUCT)に置き換えます。
この時注意しなければならないのは、コメント行の < R >< L >< C >に6文字の変数名の位置をしっかり合わせることです。
(1)〜(5)に従って書き換えたadpファイルを示します。
(6)書き換えたadpファイルを、そのまま .adpの拡張子で保存する。
(7)ATPDraw上で"run ATP"する。すると .pchという拡張子の、下のようなファイルが出力される。
(8)拡張子を .pch → .libに変更する。
このとき、私はlibファイルをatp\uspというフォルダに移動させます。
<supファイルの作成>
作成したlibファイルは、supファイルから呼び出すことによって実際に素子として扱えるようになります。まずlibファイルに対応するsupファイルを作成します。
(1)"Objects"→"User Specified"→"New sup-file"を選択する
(2)作成したlibファイルのNum. dataとNum. nodesの個数を設定する。
Num. dataは(4)の変数宣言部 NUMで宣言した変数の数,Num. nodesはARGで宣言した外部入出力ノードの数である。
今、RとLの値を上の(5)で入力できるようにしているならば、Num. dataは2(個),Num. nodesは2(個)、していないならば0(個)、2(個)である。
(3)”Data” ,”Nodes”部の設定
"Name"の部分はARGなどで宣言した名前通りでなくてよいが、必ず順番は宣言時の順番と対応させること!
・ "Data"部でデフォルトの素子データを入力する。(NUMを宣言していなければ必要なし)
Digitsはすべて6
Min,Maxはすべて0
ここではデフォルトの素子値は10Ω、3mHとしてみました。
・"Nodes"部で外部入出力端子の位置,属性を設定する。
Kind はすべて1でよい。(すべて1でちゃんと動かなかったことはない)
しつこいですが、ここで重要なのは『Nameは順番さえ合っていれば適当で良い』ということなのです。
(4)セーブして"Exit"を押す。
<作成したDBMを素子として利用>
(1)右クリックして素子メニューを表示し、"User Specified"→"Files"を選択する。
先ほど作成した .supファイルを呼び出す。
(2)現れた素子を右クリックし,#includeの項目に作成したlibファイルを指定する。
"send parameter"の項目は必ずチェックすること。
3-phaseの外部入出力が存在する場合、Old 3-phaseの項目もチェックする。
VALUEを変更すれば、DBM内の素子の値を変更できる!
(3)"OK"を押す。
以上でデータベースモジュールを回路素子として使用できる。
第4章 例題集(まだ未完成)
・3相の場合
・TACSを3相でまとめ、端子数を節約する
・入れ子式の話
第5章 動かない! 場合
動かない場合は、必ずどこかで記述ミスをしていると考えられます。以下に間違えやすい部分を示しておきます。チェックしてみて下さい!
Q.第2章に示した、@〜Iの形式通りに記述しましたか?
DBMの最大の問題点は、DBM fileが多少間違っていても、何のエラーも出さずに、pch fileへコンパイルしてしまうところにあります。
DBM fileのコンパイルに対してはエラーチェックは甘いのですが、実際に素子として使う場合のエラーは非常に厳しく、そのとき引っかかるのです。
よくある間違えは
などです。
Q.変数宣言が長すぎませんか?
C変数宣言部 で
ARG
VS___,...........................NODE1_,..............................
と記述しますが、あまり長々と記述すると、きちんと変数宣言が行われません。この場合、次のように2つに分けて宣言します。
ARG
VS___,.........................
ARG NODE1_,...............…