加湿器のシミュレーション

<< 目次を表示 >>

ページ位置:  シミュレーション > 数学的なシミュレーション > SysPhS シミュレーション > シミュレーションの設定と実行 > SysPhSシミュレーションのサンプル >

加湿器のシミュレーション

この例では、部屋の加湿器のSysPhSモデルを作成して、信号の流れと状態マシンの使い方を説明します。このサンプルでのシグナルは物理量を反映していますが、流量や電位を持つ物理的な物質の意味での物理的な相互作用とは異なります。

 

このサンプルでは、SysMLの状態マシンを使用して、Modelicaと同様にStateflowを使用してMATLABでどのように構成して実行するかを見ていきます。

 

 

前提条件

このシミュレーションを実行するには、以下のいずれかが必要です。

 

 

概要

今回のシミュレーションで利用する状態マシンの内容は以下の通りです。

 

MATLABのStateflowに変換した場合の結果は以下の通りです。

 

Modelicaに変換した場合の結果は以下の通りです。

 

 

SysMLの状態マシンを作成する

下の表の内容は、SysMLの状態マシンを構築して、スイッチングの状態を表現する方法を示しています。

 

なお、SysMLの状態マシンの全機能は、StateflowやModelicaでは部分的にしかサポートされていません。したがって、これらの製品でシミュレーション用の状態図を作成するためには、Enterprise Architectの状態マシンで利用する要素や接続が、StateflowやModelicaでサポートされている対応するもののみを含んでいる必要があります。

 

構成要素

説明

ブロック

SysPhSを用いたSysMLで、加湿器を構成するコンポーネントをブロックで表現します。状態マシンのシミュレーションを作成するこのサンプルでは、「Control」ブロックに焦点を当てて説明します。Controlブロックは、加湿器を定義するブロックの1つに過ぎません。

 

 

Controlブロックには、その下に子要素として「ControlStateMachine」という状態マシンを持ちます。

 

Controlブロックには、加湿器制御のためのポートとPhS定数も定義されています。ポートはRealInSignal型で、信号の流れを表します。

共通型

Common Typesのパッケージとモデルのパッケージをインポートの接続で結ぶことで、このライブラリ内で定義されている要素を利用できます。詳細については、「SysPhSライブラリへの参照の設定」のヘルプトピックを参照してください。

Phsポート

ポートの型として利用するバリュー型要素は、SysPhSシミュレーションライブラリに定義されています。このサンプルで使用する型は、RealInSignalのバリュー型要素です。この要素をモデルブラウザからドラッグし、ダイアグラム内のブロックにドロップして、ポートとして配置することができます。配置後にはポートの名前を変更します。

 

ブロックにポートを設定する例として、ここではfanPowerOutポートを設定する場合が次の画像です。RealInSignalElement要素を対象のブロックにドラッグし、ポートとして配置します。

 

 

注意:

  • このポートについて、Modelica や Simulink のステレオタイプを追加することで、シミュレーション対象となります。両方のステレオタイプを設定することもできます。

状態マシンの作成

ブロックに状態マシンを追加するには、対象のブロックをダイアグラム内で右クリックし、「子ダイアグラムの追加 | 状態マシン」を選択してください。

状態と遷移の作成

状態マシン要素が持つステートマシン図で、このページ上部の図のように、開始状態・4つの状態・終了状態を配置します。また、名前も適切に設定します。

 

なお、ツールボックスから要素を配置する方法の他に、ダイアグラム内でスペースキーやInsertキーを押すことで、ツールボックスの内容と同じ要素を作成できます。開始状態をこの方法で作成し、クイックリンクで他の状態要素を作成すると効率的です。

ガード条件の指定

状態間の遷移に対して、ガード条件として遷移条件を指定できます。プロパティサブウィンドウの制約タブで設定できます。

 

 

この条件で使用できる変数は、この状態マシンを持つControlブロックが保持するPhs定数とポートになります。先ほどのブロックの説明にある画像もご覧ください。

振る舞いの割り当て

それぞれの状態には、振る舞いをスクリプトで設定することもできます。こうした振る舞いはEntryアクションとして設定します。

 

 

追加したEntryアクションの実際の処理をスクリプトとして記述する場合には、そのアクションを右クリックして「振る舞いの編集」を選択してください。

 

 

 

シミュレーション動作の設定

以下の手順で、SysMLSimの設定を行います。

手順

説明

SysMLSimConfiguration 要素を作成する

  1. ブロック定義図を開きます。
  2. ツールボックスの「シミュレーション」グループにある「SysMLシミュレーションの設定」要素をダイアグラム内にドラッグ&ドロップして配置します。

パッケージを指定する

  1. SysMLシミュレーションの設定要素をダブルクリックします。
    これにより、SysMLシミュレーションの設定タブが開きます。
  2. パッケージの欄の [...] ボタンを押し、今回作成したSysMLブロック定義図が含まれるパッケージを選択します。

対象のシミュレーションツールを指定する

ツールバーのドロップダウンリストから、シミュレーションで利用するツールを選択します。

  • Modelica
  • Simulink

シミュレーション対象のブロックを指定する

  1. タブ内左側の一覧から'InvertOpAmp'のブロックを探します。
  2. 'Value'の列のセルをクリックし、ドロップダウンリストから 'SysMLSimModel' を選択します。

グラフとして出力する値を指定する

グラフとして出力する値を指定します。

  • 右側の「プロットするプロパティ」の一覧に移動し、以下のようにチェックを入れます。

 

 

シミュレーションの実行

SysMLシミュレーションの設定タブの解析ボタンを押します。

 

Modelica

 

Simulink

 

なお、Simulinkモデルのデフォルトの精度がこのサンプルの内容の場合は十分ではないため、Simulinkでの出力はModeclicaとは異なって見えます。Simulinkの設定は、生成されたファイルをSimulinkで直接開くことで変更できます。

 

 

生成されたモデルをModelicaやSimulinkで表示する

生成されたモデルを外部アプリケーションであるModelicaまたはSimulinkで表示するには、「生成した内容の参照」のヘルプトピックと、「シミュレーションが実行できない場合の確認事項」のヘルプトピックをご覧ください。

 

 

参照: