FromModelica関数

Twin Activate Modelicaコンポーネントのパラメータ値を定義するには、FromModelica関数を使用します。

FromModelica関数により、Modelicaリソースにアクセスすることができます。このリソースは、Twin Activate Modelicaコンポーネントのパラメータ値を定義するために使用することができます。これらのリソースには、Modelicaライブラリで利用可能なデータと関数、およびモデル内に存在する他のTwin Activate Modelicaコンポーネントの両方が含まれます。

シンタックス

FromModelica(path [,opt1 [, opt2]])

Inputs

path
Modelicaライブラリのエンティティ、またはモデルのコンポーネントのいずれかを指定します。
タイプ:string
opt1
文字列、名前、実体(レコードの要素、パッケージの要素、コンポーネントのパラメータなど)の指定、構造体、修飾子の定義、関数呼び出しの引数を含むセルなどがあります。構造体は、名前付き引数を持つ関数呼び出しの場合にも使用されます。
タイプ: string, struct | cell
opt2
文字列、名前、実体(レコードの要素、パッケージの要素、コンポーネントのパラメータなど)の指定、構造体、修飾子の定義、関数呼び出しの引数を含むセルなどがあります。構造体は、名前付き引数を持つ関数呼び出しの場合にも使用されます。
タイプ: string, struct | cell

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)に対応します。なお、dqのレコード要素の新しい値は、OML式を使用してパラメータ化することができます。

Modelicaの関数呼び出しは、名前付き引数がある場合とない場合の両方があります。名前付き引数は、特定の修飾子とみなすことができ、先に示したようにOMLを使用して指定することができます。構造体の代わりにセルを使った位置引数の受け渡しに対応します。

次の例は、引数m=3symmetricOrientation関数を使用します:
FromModelica('Modelica.Electrical.MultiPhase.Functions.symmetricOrientation’,struct(‘m’,3))
また、msymmetricOrientation関数の一意的な第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