FromModelica関数
Twin Activate Modelicaコンポーネントのパラメータ値を定義するには、FromModelica関数を使用します。
FromModelica関数により、Modelicaリソースにアクセスすることができます。このリソースは、Twin Activate Modelicaコンポーネントのパラメータ値を定義するために使用することができます。これらのリソースには、Modelicaライブラリで利用可能なデータと関数、およびモデル内に存在する他のTwin Activate Modelicaコンポーネントの両方が含まれます。
シンタックス
FromModelica(path [,opt1 [, opt2]])
Inputs
- path
- Modelicaライブラリのエンティティ、またはモデルのコンポーネントのいずれかを指定します。
- opt1
- 文字列、名前、実体(レコードの要素、パッケージの要素、コンポーネントのパラメータなど)の指定、構造体、修飾子の定義、関数呼び出しの引数を含むセルなどがあります。構造体は、名前付き引数を持つ関数呼び出しの場合にも使用されます。
- opt2
- 文字列、名前、実体(レコードの要素、パッケージの要素、コンポーネントのパラメータなど)の指定、構造体、修飾子の定義、関数呼び出しの引数を含むセルなどがあります。構造体は、名前付き引数を持つ関数呼び出しの場合にも使用されます。
例
Modelicaライブラリにアクセスする場合、path
は通常のModelica構文に従ってライブラリ要素を指定するOML文字列で、階層は「ドット」表記で指定され、例えばMSLの場合は「Modelica」をルートとして指定します。パスは、定数、レコード、関数、パッケージなどを指定することができます。
Modelica Constantsパッケージから、絶対零度(摂氏)の値を取得します。
FromModelica(‘Modelica.Constants.T_zero’)
Modelica.Magnetic.FluxTubes.Material.HysteresisEverettParameter
パッケージの要素をM330_50A
とするModelica record
を取得します:
FromModelica('Modelica.Magnetic.FluxTubes.Material.HysteresisEverettParameter.M330_50A')
関数の第2引数として提供されるレコード名としてModelica
record
を取得します:
FromModelica('Modelica.Magnetic.FluxTubes.Material.HysteresisEverettParameter’,’M330_50A')
レコードの名前は、OML変数を用いてパラメータ化することができます。以下の例では、
rec
はコンポーネントを含むダイアグラムのワークスペースに定義されたOML文字列で、パッケージで選択されたレコードを指定しています:
FromModelica('Modelica.Magnetic.FluxTubes.Material.HysteresisEverettParameter’, rec)
例えば、 rec
は、ダイアグラムのコンテキストで、次のように条件付きで定義することができます。
if cond, rec=’M330_50A’, else rec=’M270_50A’; end
また、オプションの引数を用いて修飾子を定義することができます。構造体フィールド名は、例えばレコード要素を修正する場合、次の例のように設定されたエンティティ名に対応します。
FromModelica('Modelica.Magnetic.FundamentalWave.Types','SalientReluctance',struct('d',12, 'q',14))
上記の修飾子は、オプション引数でOML構造体タイプを指定します。引数struct('d',12,'q',14)
は、Modelicaの(q=12, q=14)に対応します。なお、d
とq
のレコード要素の新しい値は、OML式を使用してパラメータ化することができます。Modelicaの関数呼び出しは、名前付き引数がある場合とない場合の両方があります。名前付き引数は、特定の修飾子とみなすことができ、先に示したようにOMLを使用して指定することができます。構造体の代わりにセルを使った位置引数の受け渡しに対応します。
次の例は、引数
m=3
でsymmetricOrientation関数を使用します:FromModelica('Modelica.Electrical.MultiPhase.Functions.symmetricOrientation’,struct(‘m’,3))
また、
m
はsymmetricOrientation関数の一意的な第1引数なので、次の例でも同じ結果が得られます:
FromModelica('Modelica.Electrical.MultiPhase.Functions.symmetricOrientation’, {3})
関数が複数の引数を持つ場合、セルにはすべての引数を順番通りに必要になります。
FromModelica('Modelica.Electrical.MultiPhase.Functions.activePower’, {v,i})
以下の例では、ダイアグラム内のコンポーネント、特にスーパーブロック内のコンポーネントに関数を使用しています。
パス指定において、現在のレベルはピリオドを使用します:
FromModelica('./myModelicaBlock')
2つ上のレベルを指定するには、ピリオドを2つ使用します:
FromModelica('../myModelicaBlock')
トップレベルを指定するには、スラッシュで始めます:
FromModelica('/myModelicaBlock')
Activateブロックのセパレーターにはスラッシュを、Modelicaエンティティのセパレーターにはピリオドを使用してください:
FromModelica('./mySuperBlock/myModelicaBlock')
Modelicaブロックの変数へのアクセス:
FromModelica('./myModelicaBlock').myVar
配列へのアクセス:
FromModelica('./myModelicaBlock').myArray(1)
またはFromModelica('./myModelicaBlock')(1).myVar