<< 目次を表示 >> ページ位置: シミュレーション > 数学的なシミュレーション > SysMLパラメトリック図のシミュレーション > SysML シミュレーションのサンプル > 貯水タンクと水量 |
この例は、貯水タンクの水圧の調整器をSysMLパラメトリック図を利用してモデリングします。この貯水タンクは、2つのタンクが結合されていて、入水管および2つのコントローラがあります。コントローラは、システムの調整のために水位を測定し値を制御できます。
まず、この対象についてのモデルを説明します。その後、OpenModelicaを利用してシミュレーションを行います。
モデリング対象のシステム
次の図にあるように、2つの貯水タンクは繋がれていて、入水管は最初の貯水タンクにつながっています。それぞれのタンクには、proportional–integral (PI: 比例制御および積分制御)のコントローラが取り付けられています。このコントローラは、貯水タンクの水量を指定レベルになるように制御します。最初のタンクには入水管から水が入ってきますので、コントローラによって出水量を制御し定められた量になるように制御します。1番目の貯水タンクから出た水は2番目の貯水タンクに入ります。ここでも、コントローラによって水量を制御します。
SysMLモデルの作成
ポートの型 |
このタンクには4つのポートがあります。これらのポートは、次の3つのブロックのいずれかを型として定義されています。
|
ブロック定義図 |
LiquidSource: このシステムに供給される水は、どこからか調達されてくることになります。それを示すコンポーネントになります。プロパティflowLevelが定義され、その単位は"m3/s"です。また、ポート qOutを持ち、その型はLiquidFlowです。
Tank: 貯水タンクはコントローラにつながり、ポートを通して水を出し入れいます。
BaseController: 水位を調整するためのPI制御を行うコントローラ
PIcontinuousController: BaseControllerと汎化の関係でつながるブロック
|
制約ブロック
|
時間が150になったら、それまでの流量の3倍になるように流量を増加させます。これにより、貯水タンクのコントローラが状況を適切にするための制御をしなければならないという問題が発生します。
中央にある等式は、貯水タンクの制約として、適切な質量にあるようにすることをしめしています。 出力フローはflowGainパラメータによるバルブの位置に関係します。 センサーは、単にタンクの水量を測定するだけです。
BaseControllerおよびPIcontinuousControllerに定義されている制約は、次の図に示しているとおりです。
|
内部ブロック図
|
次の図は、貯水タンクが1つの場合の内部ブロック図です。
そして、次の図は、貯水タンクが2つの場合の内部ブロック図です。
|
データセットの設定とシミュレーションの実行
シミュレーションの実行
TankPIとTanksConnectedPIが"SysMLSimModel"として定義されているので、SysMLシミュレーションの設定タブ内の「モデル」のドロップダウンリストの選択肢として表示されます。
TanksConnectedPIを選択すると、表示内容は以下のように変わります。
定義の作成と設定
SysMLシミュレーションの設定要素を作成し、SysMLシミュレーションの設定タブで以下のような内容で設定を行います。
注意: |
"SimConstant"として設定しない値は、"SimVariable"として扱います。 |
LiquidSource |
"SysMLSimClass"に指定します。
プロパティの設定:
|
Tank |
"SysMLSimClass"に指定します。
プロパティの設定:
|
BaseController |
"SysMLSimClass"に指定します。
プロパティの設定:
|
PIcontinuousController |
"SysMLSimClass"に指定します。 |
TankPI |
"SysMLSimModel"に指定します。 |
TanksConnectedPI |
"SysMLSimModel"に指定します。 |
データセットの設定
一覧内の要素を右クリックし、データセットを新規に作成します。値は以下のように設定します。
LiquidSource |
flowLevel: 0.02 |
Tank |
h.start: 0 flowGain: 0.05 area: 0.5 maxV: 10 minV: 0 |
BaseController |
T: 10 K: 2 Ts: 0.1 |
PIcontinuousController |
設定の必要はありません。 上位ブロックの既定値を自動的に参照します。 |
TankPI |
シミュレーションデータの設定ダイアログでは、既定値が自動的に読み込まれます。
データセット内で、それぞれのブロックに定義された既定値は、TankPIのプロパティの既定値として利用されます。一覧内の項目を展開することで、それぞれの値を確認できます。
OKボタンを押して管理画面に戻ります。次のような値が設定されます。
|
TanksConnectedPI |
|
シミュレーションと解析の例: 1
次の変数を選択し、解析ボタンを押して下さい。プロット対象としては、次の項目を選択して下さい。
グラフの説明
シミュレーションと解析の例: 2
上の例では、タンクのプロパティのminVとmaxVを、それぞれ0と10に設定しました。
現実の世界では、水量が10 m3/sとなると、とても大きなバルブが必要になります。
そこで、maxVの値を0.05 m3/sとした場合にはどのような挙動になるでしょうか?
前の例を元に、以下の変更を加えました。
既存のデータセット"DataSet_1"に対して、右クリックしてデータセットの複製を実行し、新しいデータセット"Tank2WithLimitValveSize"を作成します。
グラフの説明
これらの例では、既存のデータセットを複製してパラメータの値を調整する方法を説明しました。