独自のSysPhSコンポーネントの作成

<< 目次を表示 >>

ページ位置:  シミュレーション > 数学的なシミュレーション > SysPhS シミュレーション >

独自のSysPhSコンポーネントの作成

ModelicaやSimulinkのモデルが既に存在し、そのモデルに既に存在するコンポーネントをEnterprise ArchitectのSysPhSモデルでで利用するためには、そのコンポーネントを定義する必要があります。ツールボックスから適切なブロック・パラメータ・ポートの要素をダイアグラム上にドラッグし、そのコンポーネントを定義します。

 

プロパティやパーツの表示

SysMLダイアグラムでプロパティを扱う際には、ダイアグラムに配置した直後はパートプロパティの要素として表示されます。この表示のままにしておくこともできますし、区画内のテキストとして表示するように設定することもできます。以下にその例を示します。

 

 

Property1・2・3・5は、要素としてダイアグラムにドラッグされた後、ダイアグラムから削除されました(モデルブラウザからは削除していません)。削除すると、ダイアグラム上では、それぞれのブロックの区画のテキストとして表示されます。Property4はプロパティ要素としてダイアグラム上に残されています。もし、ダイアグラムから削除すると、区画内のテキストとして表示されます。。

 

 

ブロックの型

ツールボックスからModelica あるいは Simulink ブロックをダイアグラムに配置することで、具体的なコンポーネントと結びついていないSysPhSブロックが作成できます。このブロックに、特定のModelicaないしはSimulinkのコンポーネントを結びつけるには、プロパティサブウィンドウのSimulinkBlock ( SysPhS ) あるいは ModelicaBlock ( SysPhS ) グループにある、名前欄に情報を入力する必要があります。

 

 

詳細は、「Modelica固有のブロックの作成」「SimulinkあるいはSimscape固有のブロックの作成」のヘルプページをご覧ください。

 

なお、上の画像のように、1つのブロックに2つのSysPhSステレオタイプを適用し、両方のツールで利用可能なブロックを定義することもできます。

 

 

パラメータの型

Parameter要素は、SimulinkParameterまたはModelicaParameterのステレオタイプを持つプロパティ要素を作成します。この要素をダイアグラムから削除すると、親のブロック要素のphs constants区画に表示されます。次の画像は、ModelicaとSimulinkの両方に設定されたSysPhSパラメータの例を示し、それぞれのステレオタイプと、「Name」フィールドにあるそれぞれの製品のパラメータ名への参照を示しています。

 

 

 

Phs定数とPhs変数

ブロック要素の定数および変数のプロパティを定義するには、ツールボックスの「PhS定数」あるいは「PhS変数」をダイアグラム内の要素にドラッグします。繰り返しになりますが、これらの要素をブロックに追加後、ダイアグラムから要素を削除すると、phs constants あるいは phs variablesの区画に表示されます。

 

モデル内で定数の値を設定する場合、その値はブロック内の要素、あるいはブロックを型として持つプロパティで設定することができます。例えば、絶対定数としての重力の場合、これはブロック要素が直接保持するプロパティ要素で定義するのが最適です。なお、いずれにしても、設定した値は、シミュレーション時にデータセットの機能を利用することで、動的に変更することができます。

 

次の図は、Fluid Density(流体密度)の値を水を示すものとしてブロック要素で設定した例ですが、これを、このブロックを型とするプロパティ要素や、シミュレーション時のデータセットで上書きして、他の流体(油など)の密度に変更してシミュレーションを実行することができます。例えば、3.3kΩの抵抗器と5.6kΩの抵抗器のように、1つのブロックの型を持つ多数のプロパティがそれぞれ異なる値で使用される場合、初期値はブロック側では設定せず、初期値を持たないブロックを型として持つ、内部ブロック図に配置されるプロパティ要素の初期値として定義するのが最適です。

 

 

プロパティサブウィンドウのプロパティタブからは、以下の2つの値が設定できます。

 

型は、boolなど標準的な型を利用することもできますし、SysMLのバリュー型を利用することもできます。

 

なお、Phs定数やPhs変数が初期値を持つ場合、ブロックの区画内でもその初期値が表示されます。

 

 

参照: