Location : Home > Softwares > Fendi
Title : Fendi Developper Documentation
Toolbox Logo

Fendi Developper Documentation

原則

 Fendi グラフィカルインタフェースにはシミュレーションエンジンと以下の2つのファイルでやりとりを行う。

  • datas.tmp ファイルにはネットワークが記述されている。Fendi グラフィカルエンジンで生成され、シミュレーションエンジンに送られる。
  • results.tmp ファイルには所与のネットワークにおける結果が含まれている。シミュレーションエンジンで生成され、Fendi グラフィカルインタフェースに送られ、表示される。

 シミュレーションプラグインはダイナミックライブラリ(dll)で書かれている。
 これらのファイルは XML ファイルである。

datas.tmp ファイル

 このファイルは3つの部分からなる。

  • XML ヘッダ部:<?xml version='1.0' encoding='UTF16' standalone='yes'?>
    決して変更してはならない。
  • ネットワークノードリスト
  • ラインリスト

 コンポーネントフィールドはタグ <component> と </component> の間に記述する。
 これらのタグの間に3つの固定フィールドがある。

  • タグ <type> と </type> の間のコンポーネントの型番号(type number):
    コンポーネント型番号は Fendi グラフィカルインタフェースのソースコード及びシミュレーションエンジンのソースコードの双方で用いられているファイル CompoConst.lst で定義されている。値は整数である。
  • タグ <systemname> と </systemname> の間のコンポーネントシステム名称(system name of the component)。値は文字列である。
  • タグ <measure> と </measure> の間の計測フラグ(measure flag)。値は false 及び true のブール値である。このフィールドは使われていない。

 これらの固定フィールドの後に、パラメータリストが続く。このリストはタグ <parameternumber> と </parameternumber> の間のパラメータ数(number of parameter)から始まる。この値は整数である。

 このパラメータの後、各パラメータごとに3つのフィールドをもつパラメータリストが続く。

  • タグ <parametername> と </parametername> の間のパラメータ名。値は文字列である。
  • タグ <parametertype> と </parametertype> の間のパラメータ型。パラメータ型番号は、Fendi グラフィカルインタフェースとシミュレーションエンジンの双方のソースコードで利用される ParameterConst.lst において定義されている。値は整数である。
  • タグ <parametervalue> 及び </parametervalue> の間のパラメータ値。そのデータ型はパラメータ型に依存する。
    • ptReal (0) : 浮動小数点実数
    • ptComplex (1) : 現在では使われていない。下の結果値を見よ。
    • ptTable (2) : # と | とで区切られた浮動小数点実数の表。
    • ptBoolean (3) : ブール値
    • ptInteger (4) : 整数

 各ネットワークノードはタグ <netnode> と </netnode> の間に置かれる。これらのタグの間にはこのネットワークノードに接続されるコンポーネントのリストが置かれる。
 各コンポーネントノードはタグ <node> と </node> の間に記述する。これらのタグの間には2つの固定フィールドがある。

  • タグ <component> と </component> との間にこのノードを所有するコンポーネントの名称が入る。値は文字列である。
  • <index>and</index> の間にコンポーネントにおけるこのノードのインデクス番号が入る。値は整数である。

 例えば、 Exemple1AC.sch としてきわめて単純なネットワークを例にとると:

The network

 これに対応した datas.tmp ファイルは以下のようになる。

<?xml version='1.0' encoding='UTF16' standalone='yes'?>

<component>
<type>9</type>
<systemname>SourceAC0</systemname>
<measure>False</measure>
<parameternumber>2</parameternumber>
<parametername>Tension</parametername>
<parametertype>0</parametertype>
<parametervalue>1</parametervalue>
<parametername>Phase</parametername>
<parametertype>0</parametertype>
<parametervalue>0</parametervalue>
</component>

<component>
<type>5</type>
<systemname>Resistor0</systemname>
<measure>False</measure>
<parameternumber>1</parameternumber>
<parametername>resistance</parametername>
<parametertype>0</parametertype>
<parametervalue>1</parametervalue>
</component>

<component>
<type>7</type>
<systemname>Ground0</systemname>
<measure>False</measure>
<parameternumber>0</parameternumber>
</component>

<netnode>
<node>
<component>SourceAC0</component>
<index>0</index>
</node>
<node>
<component>Resistor0</component>
<index>0</index>
</node>
</netnode>

<netnode>
<node>
<component>SourceAC0</component>
<index>1</index>
</node>
<node>
<component>Ground0</component>
<index>0</index>
</node>
<node>
<component>Resistor0</component>
<index>1</index>
</node>
</netnode>

results.tmp ファイル

 このファイルは3つの部分からなる。

  • XML ヘッダ部:<?xml version='1.0' encoding='UTF16' standalone='yes'?>
    決して変更してはならない。
  • コンポーネントシミュレーション結果
  • ネットワークシミュレーション結果

 コンポーネントシミュレーション結果はタグ <component> と </component> の間に記述する。
 これらのタグの間にいくつかの固定フィールドがある。

  • コンポーネントタイプはタグ <type> と </type> の間に記述される。
  • コンポーネントシステム名はタグ <systemname> とd </systemname> の間に記述される。

 これらの後に、表示に関する情報のリストが続く。このリストは情報の数で始まり、タグ <infosnumber> と </infosnumber> の間に記述される。値は整数である。このパラメータの後にそれぞれ3つのフィールドを持つ情報のリストが続く。

  • 情報名(The information name)はタグ <infoname> と </infoname> の間に記述される。
  • 情報型番号はタグ <infotype> と </infotype> の間に記述される。情報型番号は Fendi グラフィカルインタフェースとシミュレーションエンジンの双方のソースコードで利用される ParameterConst.lst において定義されている。値は整数である。
  • 情報単位は(The information unit)タグ <infounit> と </infounit> の間に記述される。
  • 情報値(The information value)はタグ <infovalue> と </infovalue> の間に記述される。その型はパラメータ型に依存する。
    • ptReal (0) : 浮動小数点実数
    • ptComplex (1) : 2つの浮動小数点実数で定義される複素数。一方が実部で他方が虚部を表す。それぞれタグ <infovalue> と </infovalue> の間に記述される。
    • ptTable (2) : 情報値としては現在は使われない。
    • ptBoolean (3) : 情報値としては現在は使われない。
    • ptIntreger (4) : 情報値としては現在は使われない。

 ネットワークシミュレーション家かはタグ <netnode> と </netnode> の間に記述される。フィールドはタイプ名及びシステム名が与えれていない場合を除きコンポーネントの場合と同じである。

 例えば、 Exemple1AC.sch としてきわめて単純なネットワークを例として作成した results.tmp ファイルは以下のようになる。


<?xml version='1.0' encoding='UTF16' standalone='yes'?>

<component>
<type>9</type>
<systemname>SourceAC0</systemname>
<infosnumber>1</infosnumber>
<infoname>Current</infoname>
<infotype>1</infotype>
<infounit>A</infounit>
<infovalue>1</infovalue>
<infovalue>0</infovalue>
</component>

<component>
<type>5</type>
<systemname>Resistor0</systemname>
<infosnumber>1</infosnumber>
<infoname>Current</infoname>
<infotype>1</infotype>
<infounit>A</infounit>
<infovalue>1</infovalue>
<infovalue>0</infovalue>
</component>

<netnode>
<infosnumber>1</infosnumber>
<infoname>Voltage</infoname>
<infotype>1</infotype>
<infounit>V</infounit>
<infovalue>1</infovalue>
<infovalue>0</infovalue>
</netnode>

<netnode>
<infosnumber>1</infosnumber>
<infoname>Voltage</infoname>
<infotype>1</infotype>
<infounit>V</infounit>
<infovalue>0</infovalue>
<infovalue>0</infovalue>
</netnode>

 結果をグラフィカルインタフェースに転記すると以下のようになる。

The results

シミュレーションプラグインのフォーマット

 シミュレーションプラグインはダイナミックライブラリ(dll)である。これは8つの関数を含んでいなければならない。そのうちの主要な3つの関数は以下の通りである。

  • Execute : シミュレーションを実行する関数である。datas.tmp ファイルを読み込み、シミュレーションを実行し、結果を results.tmp ファイルに格納する。この関数はユーザが Fendi グラフィカルインタフェース上で Simulate ボタンを押すことで呼び出される。
  • AllowedComponent : コンポーネントとプラグインの整合性を確認する。
  • GetErrorMsg : Execute 関数が落ちたとき、この関数がエラーメッセージを取得するために呼び出される。

エンジンパラメータを構築するために Fendi グラフィカルインタフェースから呼び出される5つの関数は以下の通りである。

  • GetParamCount : インタフェースに渡すパラメータの数を取得するためにプラグインから呼び出される。
  • GetParamName : インタフェースに渡すパラメータの名称を取得するためにプラグインから呼び出される。
  • GetParamUnit : インタフェースに渡すパラメータの単位を取得するためにプラグインから呼び出される。
  • GetParamDefaultValue : インタフェースに渡すパラメータのデフォルト値を取得するためにプラグインから呼び出される。

 シミュレーションエンジンパラメータを設定するための関数がもう1つある。

  • SetParamValue : インタフェースに渡すパラメータの値を取得するためにプラグインから呼び出される。

 関数の詳細は以下の通りである。

The execute function

 関数の構文は以下の通り。
function Execute:Boolean;
begin;

end;

 計算が成功すれば True を返し、失敗すれば false を返す。

The AllowedComponent function

 関数の構文は以下の通り。

function AllowedComponent(Number:Integer):Boolean;
begin;

end;

 入力の整数 Number はコンポーネントの型番号(後述のリストを見よ)である。プラグインがこのコンポーネントをシミュレートすることができれば True を、失敗すれば False を返さねばならない。

The GetErrorMsg function

 関数の構文は以下の通り。
function GetErrorMsg:PChar;
begin;

end;

 Execute 関数が失敗した場合、この関数は対応するエラーメッセージを返さねばならない。

The GetParamCount function

 関数の構文は以下の通り。
function GetParamCount:Integer;
begin;

end;

 シミュレーションエンジンが要求した場合、パラメータの数を返す。

The GetParamName function

 関数の構文は以下の通り。
function GetParamName(i:Integer):PChar;
begin;

end;

 パラメータ番号 i に対応するパラメータの名称を返す。パラメータ番号の最初の値 0 である。

The GetParamUnit function

 関数の構文は以下の通り。
function GetParamUnit(i:Integer):PChar;
begin;

end;

 パラメータ番号 i に対応するパラメータの単位を返す。パラメータ番号の最初の値 0 である。

The SetParamValue function

 関数の構文は以下の通り。
procedure SetParamValue(i:Integer;Value:Double);
begin;

end;

 パラメータ番号 i に対応するパラメータの値を返す。パラメータ番号の最初の値 0 である。

The GetParamDefault function

 関数の構文は以下の通り。
function GetParamDefaultValue(i:Integer):Double;
begin;

end;

 パラメータ番号 i に対応するパラメータのデフォルト値を返す。パラメータ番号の最初の値 0 である。詳しくはプラグイン例としての DC.dll 及び AC.dll を見よ。

コンポーネントのリスト

Type number Component Parameters
4 Capacitor Capacitance (Farads)
5 Resistor Resistance (Ohms)
6 DC Source Voltage (Volts)
7 Ground
8 Comment
9 AC Source 2 nodes (1 Phase) Voltage (Volts)
Phase (Degrees)
10 Inductor Inductance (Henry)
11 Transformer Ratio (No units)
12 Inductive line Xd=Xi (MilliHenry)
X0 (MilliHenry)
13 6 phases multipole Resistance (Ohms) 6x6 table
Inductance (Ohms) 6x6 table
14 12 phases multipole Resistance (Ohms) 12x12 table
Inductance (Ohms) 12x12 table
15 AC source 6 nodes (3 Phases) Voltage (Volts)
Phase (Degrees)
16 Fault Resistance (Ohms)
Fault present (No units) boolean
17 Impedance measure K0 (No units)
18 3 phases impedance Rd (Ohms)
Xd (MilliHenry)
Ri (Ohms)
Xi (MilliHenry)
R0 (Ohms)
X0 (MilliHenry)
19 3 phase fault R1 (Ohms)
R2 (Ohms)
R3 (Ohms)
Rg (Ohms)
Fault present (No units) boolean
20 Resistive line Xd=Xi (MilliHenry)
Rd=Ri (Ohms)
X0 (MilliHenry)
R0 (Ohms)
21 3 phases Transfer Function Real part 6x6 table
Complex part 6x6 table
22 N phases Transfer Function Number of phases
Real part NxN table
Complex part NxN table
23 3 phase shift transformer Angle (Degrees)
24 3 phases breaker Open (No units) boolean
25 3 winding transformer Ratio (No units)
26 Single phase shift transformer Angle (Degrees)
27 3 phase shift transformer with impedances
Angle (Degrees)
Rd (Ohms)
Xd (MilliHenry)
Ri (Ohms)
Xi (MilliHenry)
R01 (Ohms)
X01 (MilliHenry)
R02 (Ohms)
X02 (MilliHenry)
R03 (Ohms)
X03 (MilliHenry)
28 Load Active Power (W)
Reactive Power (Var)
29 2 Nodes Line Resistance (pu)
Inductance (pu)
Capacitance (pu)
30 1 Node Source Voltage (pu)
Phase (Degrees)


コンポーネントの追加

 新規にコンポーネントを追加するには以下のような手順を踏めばよい。

  • CompoConst.lst を開く。このファイルには全てのコンポーネントの型定数のリストが記述されている。これはインタフェースとシミュレーションエンジンとでコード {$I 'CompoConst.lst'} を共有している。新しいコンポーネント形をこのリストに追加し、コンポーネントの数 NbComponents を1増加させる。新しい型の名称は nc で始まっていなければならない。
  • コンポーネントの1つをカット&ペーストして名前を変更する。
  • 全ての WriteLog 関数呼び出しにおけるコンポーネントの名称を変更する。
  • Create 関数におけるコンポーネントの大きさ Sx:=64; Sy:=16; を変更する。(Sx=Width, Sy=Height)
  • 新しい型を選択し、Create 関数における行 SetType('xxxxxxx') を変更する。
  • Create 関数におけるノードの数とその位置を変更する。順序には注意すること。DC シミュレーションでも AC シミュレーションでも同じである。
  • 新たな汎用名(generic name)を選択し、GetGenericName 関数において変更する。
  • Create 関数における絵(drawing)を変更する。
  • Create 関数におけるパラメータ数・型・名称・単位を変更する。
  • パラメータ値に従って絵を変更しなければならない場合には、Update プロシージャにおける変更を追加する。
  • Image1MouseDown プロシージャにおいて新しいコンポーネント生成を追加する。
  • コンポーネントを使用するシミュレーションエンジンにおけるAllowedComponent を更新する。
  • Charger1Click プロシージャにおいて新しいコンポーネント生成を追加する。
  • エンジン内でシミュレーション部分を記述する。

 パラメータでは表の大きさは整数にリンクされている。表のパラメータリンク値には整数のパラメータ値を設定しなければならない。この特徴はN相伝達関数(N phases Transfer Function)で用いられる。

Toolbox Logo
Updated : 2006/07/02