システムとモデリング

SysML, Matlab/Simulink,他モデリング全般について。たまにプロジェクトマネジメント。

SysML練習 バッファタンクモデル simulinkモデル

これまでSysMLで記述してきたモデルをsimulink上で実装し

シミュレーションしました。

 

まずはじめに想定していたフローは↓

f:id:Otepipi:20171221210009p:plain

はじめに考えていたフロー

 

先日制作したシーケンスダイアグラムは↓

f:id:Otepipi:20171224200456p:plain

シーケンスダイアグラム

 

そして今回作成したsimlink上でのモデルはこちらになります。

f:id:Otepipi:20171225212603j:plain

 

タンク初期液量を50Lとして、Pump1を流量1 L/s Pump2を5 L/sとしています。

またブロックRelayのパラメーターは下記になります。

f:id:Otepipi:20171225213052p:plain

Relayパラメーター

挙動としては

1.まず初期50Lから、Pump1の動作により毎秒-1L液量が減っていく。

 このときRelayは値0を返すため、Pump2の流量は5×0=0とみなせる

2.液量が10Lを下回った時、Relayが値1を返すようになり、このときPump2の流量は

 5×1=5となり、液量はむしろ増加をはじめる

3.液量が90Lを上回るとRelayが値0を返すようになり、このときPump2の流量は

 5×0=0となる。

4. [1.]にもどる。以後これを繰り返す。

 

最後に、このモデルを2000秒シミュレーションしたときのタンク内の液量グラフを示します。(図のscopeです)

f:id:Otepipi:20171225212549p:plain

タンク内液量

激しく上下している様子がわかりますね!