ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

動的システムのモデル化

このチュートリアルでは、Simulink® ソフトウェアを使用して動的システムをモデル化する方法を説明します。このモデルは、ヒーター (プラント)、サーモスタット (コントローラー) および部屋 (環境) が含まれる住宅の暖房システムです。

完成したモデルを確認するには、MATLAB® コマンド ウィンドウで次を入力します。

open_system([matlabroot,...
'/help/toolbox/simulink/examples/ex_househeat_modeling'])

住宅の暖房システムの定義

要件と数式を定義します。モデル パラメーター用データとシミュレーション結果を評価するためのデータを収集します。システムの定義方法の詳細については、「基本的なモデル化のワークフロー」のシステムの定義を参照してください。

モデル化の目的の決定

モデルを設計する前に、目的と要件を考慮します。住宅の暖房システムをモデル化する場合、次のような目的があります。

  • 屋外温度の変化が屋内温度に与える影響を観察する。

  • 実験的に測定した屋外温度と屋内温度の測定値を使用して、シミュレーション結果とそれらの値を比較する。

システム コンポーネントの特定

このチュートリアルの住宅の暖房システムは、暖房システムおよび暖房システムと部屋との関係を定義します。以下が含まれます。

  • 住宅の熱特性

  • ヒーターの熱特性

  • ヒーターを制御するサーモスタット

  • 屋外環境

  • 屋内環境

サーモスタット設定を選択したら、屋外と屋内の温度差に応じ、サーモスタットによってヒーターがオンまたはオフに切り替わります。

このシステムのモデルには、ヒーター、サーモスタット、部屋の 3 つのコンポーネントが含まれます。

システム方程式の定義

住宅の暖房モデルを定義する 3 つの変数は以下のとおりです。

  • ヒーターから部屋へ伝達される熱エネルギー (Qgain)

  • 部屋から屋外環境へ伝達される熱エネルギー (Qloss)

  • 部屋の温度 (Troom)

微分方程式によって各変数は定義されますが、熱伝達は温度変化によって定義されるため、室温のみが状態変数です。

熱利得率の方程式

ヒーター内の気温は Theater で、室温は Troom です。部屋に対する熱エネルギーの利得はヒーターから加熱された空気による対流です。ヒーター内の空気の質量 mheaterair に対する熱利得は次のとおりです。

Qgain=mheateraircair(TheaterTroom).

ファンは部屋の空気を取り込み、ヒーターを通過させて部屋に返します。ヒーターからの熱エネルギーの利得は次のとおりです。

dQgaindt=dmheaterairdtcair(TheaterTroom).

ヒーターからの単位時間あたりの空気の質量は一定であるため、dmheaterair/dt を定数 Mheaterair と置き換え、次のように方程式を単純化します。

dQgaindt=Mheateraircair(TheaterTroom).

熱損失率の方程式

部屋からの熱エネルギーの損失は壁と窓を通じた伝導です。

Qloss=kA(TroomToutside)tD.

熱エネルギーの損失率は次のとおりです。

dQlossdt=kA(TroomToutside)D.

kA/D1/R と置き換え、R を熱抵抗とし、次のように方程式を単純化します。

dQlossdt=(TroomToutside)R.

室温変化の方程式

熱利得率から熱損失を減算することにより部屋の温度変化率を定義します。

dTroomdt=1mroomaircair(dQgaindtdQlossdt).

データの収集

住宅の暖房モデルに必要なパラメーター値のほとんどが、標準のプロパティ テーブルに提供されています。ヒーターの流量はメーカーのデータ シートから得ています。

方程式から変数と係数をリストし、単位間の次元の整合性を確認します。モデルで使用する単位は時間なので、材質の熱特性に対して提供された値を秒単位から時間単位に変換します。

方程式の変数と定数-  モデルを作成する際はこの表の定数名と値を使用します。

方程式の変数または係数説明単位
A壁または窓の表面積

A_wall = 914A_window = 6

平方メートル
D壁または窓の厚さ

D_wall = 0.2D_window 0.01

メートル
Q伝達される熱エネルギージュール
dQ/dt伝達される熱エネルギー率ジュール/時
k熱伝導率 (熱伝達を行う材質の特性)

k_fiberglass = 136.8k_glass = 2808

ジュール/メートル·時·度
r熱伝導抵抗 (熱伝達に抵抗する材質の特性)

r = 1/k

メートル·時·度/ジュール
R熱抵抗

R = D/kA = (T1 — T2)Q

R_wall = 1.599e-6, R_window = 5.935e-7

R_equivalent = (R_wall * R_window)/(R_wall + R_window) = 4.329e-7

時·度/ジュール
m部屋またはヒーター内の空気の質量

m_room_air = 1470

ヒーター m_heater_air の質量はこのモデルには必要ありません。

キログラム
dm/dtヒーターを通過する空気の質量流量キログラム/時
Mヒーターを通過する空気の一定の質量流量

M_heater_air = 3600

キログラム/時
c比熱容量

c_air = 1005.4

ジュール/キログラム·度
Theaterヒーターからの一定の気温

T_heater = 50

摂氏
Troom室温

初期の室温 T_roomIC = 20

摂氏

住宅の暖房システムのモデル化

最上位構造と個々のコンポーネントをモデル化します。モデルをシステムのコンポーネントに対応する階層構造に整理します。基本的なモデル化のワークフローを確認してください: システムのモデル化

モデルの最上位構造

住宅の暖房モデルの最上位レベルで Subsystem ブロックを使用してモデルを整理し、構造体を作成します。モデルには、サブシステム Thermostat、Heater、Room が含まれます。

  1. MATLAB ツールストリップから、[Simulink] ボタン をクリックするか、[コマンド ウィンドウ] で以下を入力します。

    simulink
  2. [空のモデル] テンプレートをクリックしてから、[モデルを作成] ボタンをクリックします。

  3. Simulink エディターのツール バーで、[ライブラリ ブラウザー] ボタン をクリックします。

  4. Subsystem ブロックを追加します。3 つの Subsystem ブロックを Ports & Subsystems ライブラリから Simulink エディター内の新しいモデルにドラッグします。

  5. Subsystem ブロックを開きます。ブロックをダブルクリックします。

    新しい Subsystem ブロックにはそれぞれ 1 つの Inport (In1) と 1 つの Outport (Out1) ブロックが含まれます。これらのブロックは、モデルの階層構造における次の上位レベルとのサブシステム インターフェイスを定義します。

    Inport ブロックはそれぞれ Subsystem ブロックに入力端子を作成し、Outport ブロックはそれぞれ出力端子を作成します。入力信号と出力信号にブロックをさらに追加します。

  6. Simulink エディターのツール バーで、[親に移動] ボタン をクリックして最上位レベルに戻ります。次に示すように、Subsystem ブロックの名前を変更します。ブロック名をダブルクリックし、新しい名前を入力します。

ヒーター コンポーネントのモデル化

ヒーター システム コンポーネントのモデル化から始めます。ヒーター モデルは以下のとおりです。

  • 部屋の現在の温度とサーモスタットの制御信号を入力として受け取る

  • ヒーターからの熱利得を計算する

  • 室温が選択した室温を下回ると、熱利得を出力する

Heater サブシステムをモデル化するには、熱利得率の方程式を Simulink ブロックでモデル化します。

dQgaindt=Mheateraircair(TheaterTroom).

ヒーターの気温からの室温の減算-  温度差はヒーターの一定温度 (T_heater) から現在の室温を減算した値です。方程式の変数と定数を参照してください。

  1. Heater サブシステムを開きます。

  2. Heater サブシステムで「Sum」と入力し、名前に Sum を使用したブロックのリストを表示します。リスト上で Sum ブロックをダブルクリックします。符号リストを求めるプロンプトが表示されたら、「|-+」と入力してブロックに - 入力端子と + 入力端子を配置して Enter キーを押します。

    縦棒 (|) は、端子の間にスペースを挿入して入力端子の位置を変更します。符号リストの先頭の縦棒によって、ブロックの最上部にスペースが作られ、端子が反時計回りにシフトします。

  3. Constant ブロックを追加してヒーターからの一定の気温をモデル化します。ブロックの [定数値] パラメーターを T_heater に設定します。モデル ワークスペースで T_heater の値を定義します。

    ブロックに -C- と表示される場合は、ブロックのサイズを変更して変数名を表示します。

  4. Inport ブロックを追加して室温信号をモデルの別の部分に接続します。

  5. ブロック名を変更して、図に示すように接続します。

  6. 信号線にラベルを追加し、モデル コンポーネントを方程式とモデル要件まで追跡する際に役立てます。信号線上をダブルクリックし、ラベルを入力します。

1 度あたり熱利得による温度差の乗算-  1 度あたりの熱利得は、空気の比熱容量 (c_air) で乗算したヒーターからの質量の一定流量 (M_heater_air) です。方程式の変数と定数を参照してください。

  1. Gain ブロックを Heater サブシステムに追加します。[ゲイン] パラメーターを M_heater_air*c_air に設定します。モデル ワークスペースでこれらの変数の値を定義します。

  2. Sum ブロックの出力を Gain ブロックの入力に接続します。

  3. Gain ブロックの名前を Heat Gain/Degree に変更します。

ヒーターのスイッチのモデル化-  サーモスタットは 1 (オン) または 0 (オフ) に等しいオン/オフ信号をヒーターに送信します。入力信号は 2 進数なので、Multiplier ブロックを使用してスイッチをモデル化できます。

  1. In1 ブロックと Out1 ブロック間の接続を削除します。ラインを選択し、[削除] をクリックします。

  2. Product ブロックを追加します。ブロックのサイズを垂直方向に変更して、ブロック線図のブロックを整列します。In1 ブロックを最初のブロック入力に接続し、ブロック出力を Out1 ブロックに接続します。以下に示すように、ブロックの名前を変更します。

  3. Gain ブロックからの出力を 2 番目の入力に接続します。接続されたブロックをすべて一緒に移動します。移動するブロック周囲に選択ボックスを描画したら、新しい場所にドラッグします。

  4. 図に示すようにブロック名を変更して信号にラベルを追加します。

    Inport ブロックと Outport ブロックはモデルでこのサブシステムと他のサブシステムを接続する端子を作成します。

ヒーター モデルのパラメーターの定義-  MATLAB ワークスペースで変数を定義してから、[ブロック パラメーター] ダイアログ ボックスにその名前を入力できます。ただし、Simulink モデル ワークスペースを使用すると変数値がモデルに保存されるので、ロバスト性が高くなります。

  1. Simulink エディターで、[ツール表示][モデル エクスプローラー][モデル ワークスペース] を選択します。

  2. モデル エクスプローラーで、[追加][MATLAB 変数] を選択します。中央のペインで、新しい変数 Var をクリックして、ブロック パラメーターに変数名を入力します。この例では、T_heater と入力します。

  3. 0 をクリックしてこの変数の値を入力します。この例では、50 度を入力します。

  4. 同じ方法で、値が 3600 キログラム/時の変数 M_heater_air および値が 1005.4 ジュール/キログラム· 度の変数 c_air を追加します。

シミュレーションのためのヒーター モデルの準備-  シミュレーションのためにヒーター モデルを設定します。予測される動作と、シミュレーションを使用してどのようにその動作をテストできるかを検討します。サーモスタットの出力が 1 のとき、ゲインから予測される出力は (50 – 25) x 3600 × 1005.3 = 9.05 × 107 です。

  1. Heater サブシステムで、[親に移動] ボタン をクリックしてモデルの最上位に移動します。図に示すように Heater ブロックのサイズを変更できます。

    サブシステムで Heater ブロックに 2 番目の入力端子があり、各端子が Inport ブロックまたは Outport ブロックに対応していることがわかります。

  2. 室温を表す Constant ブロックを追加して、値を 25 (摂氏) に設定します。一時的な Heater (on/off) 信号に Step ブロックを追加します。[ステップ時間]4 に設定します。

  3. Scope ブロックを追加して、Heat Flow 出力に接続します。以下に示すように残りのブロックを接続します。

ヒーター モデルのシミュレーションと結果の検証-  既定のシミュレーション設定を使用してモデル設計を検証します。

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。Simulink エディターで、[シミュレーション][モデル コンフィギュレーション パラメーター] を選択します。

    [終了時間]10[タイプ][可変ステップ][ソルバー]Auto に設定されていることを確認します。

  2. Scope ブロックをダブルクリックして開きます。

  3. モデルのシミュレーションを実行します。[シミュレーション][実行] を選択するか、[実行] ボタン をクリックします。

    シミュレーションを実行すると、Scope によって結果がプロットされます。

  4. スコープ トレースを表示します。y 軸を右クリックし、[コンフィギュレーション プロパティ] を選択します。[表示] タブで、[Y 軸範囲 (最小)]-2e7[Y 軸範囲 (最大)]12e7 に設定します。

  5. この結果が想定どおりであるかを判断します。

    ヒーターのオン/オフ信号が 4 時間で 0 から 1 に反転すると、ヒーター出力は 9.05 × 107 ジュール/時になります。シミュレーションは想定される動作を検証します。

  6. Heater コンポーネントのテストのために追加した Constant ブロック、Step ブロックおよび Scope ブロックを削除します。

サーモスタット コンポーネントのモデル化

システム方程式を使用せずにサーモスタットをモデル化できます。このコンポーネントの要件は以下のとおりです。

  • 室温が設定温度を下回る場合、制御信号は 1 に等しくなります。室温が設定温度を超える場合、制御信号は 0 に等しくなります。

  • 温度指定値の周囲に、摂氏 2 度のヒステリシスがあります。サーモスタットがオンの場合、オフになる前に設定温度より室温が 2 度上昇していなければなりません。

このコンポーネントは、サーモスタットの操作をモデル化し、暖房システムをオンとオフに切り替えるタイミングを決定します。Relay ブロックが唯一のブロックですが、モデル内でサーモスタットを論理的に表します。

室温からの設定室温の減算-  設定室温が室温よりも高い場合、サーモスタット モデルは "オン" 信号をヒーター モデルに送信します。これが適切かどうかを判断するには、まず室温を設定温度から減算します。

  1. Thermostat サブシステムを開きます。Sum ブロックを追加します。[符号リスト] パラメーターを |+– に設定して、+ 入力端子と – 入力端子をブロックに配置します。

  2. Inport ブロックを Sum ブロックの + 入力に接続します。Inport ブロックは室温を設定します。

  3. 2 つ目の Inport ブロックを追加して、Sum ブロックの - 入力に接続します。この 2 つ目の Inport ブロックは Room サブシステムの現在の室温です。出力端子をブロックの一番上に移動します。ブロックを右クリックし、[回転と反転][反時計回り] を選択します。図に示すように、ハンドルをドラッグしてブロックの形状を変更できます。

  4. 以下に示すように、ブロックの名前を変更します。

サーモスタット信号のモデル化-  摂氏 2 度のヒステリシス値を使用してサーモスタットの信号をモデル化します。

  1. Thermostat サブシステムで、Relay ブロックを追加します。[スイッチオン ポイント] パラメーターを 2 に設定し、[スイッチオフ ポイント] パラメーターを -2 に設定します。

  2. 図に示すようにブロックを接続して名前を変更します。

シミュレーションのためのサーモスタット モデルの準備-  シミュレーションに向けて Thermostat サブシステムを準備します。サーモスタットの想定される動作と、シミュレーションを使用してどのようにその動作をテストできるかを検討します。室温がサーモスタットの設定より 2 度高くなると、サーモスタットの出力は 0 になります。室温がサーモスタットの設定より 2 度低くなると、サーモスタットの出力は 1 になります。

  1. Thermostat サブシステムで、[親に移動] ボタン をクリックしてモデルの最上位に移動します。図に示すように、Thermostat ブロックのサイズを変更します。

    これで、Thermostat サブシステムに 2 番目の入力端子が含まれたことがわかります。各入力端子はサブシステムの Inport ブロックに対応しています。

  2. 室温を設定するための Constant ブロックを追加します。[定数] パラメーターを 25 (摂氏) に設定します。

  3. 室温の変化を表す Sine Wave ブロックを追加します。[振幅] パラメーターを 10[バイアス]20[周波数]0.5 に設定します。これらのパラメーターは温度の指定値である 25 の上下に変動幅を与えます。

  4. Floating Scope ブロックを追加して信号を表示します。

  5. 次の図のようにブロックを接続します。

  6. Floating Scope ブロックをダブルクリックします。ツール バーの [信号セレクター] ボタンをクリックします。

  7. [信号セレクター] ダイアログ ボックスで、[定数][正弦波][Thermostat] チェック ボックスをオンにして、[閉じる] をクリックします。

サーモスタット モデルのシミュレーションと結果の検証-  既定のシミュレーション設定を使用してモデル設計を検証します。

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。Simulink エディターで、[シミュレーション][モデル コンフィギュレーション パラメーター] を選択します。[終了時間]10[タイプ]Variable-step[ソルバー]ode45 に設定されていることを確認します。

  2. モデルのシミュレーションを実行します。シミュレーションを実行すると、Floating Scope は結果をプロットします。

  3. Floating Scope を開いてスコープ トレースを表示します。表示領域をクリックし、[コンフィギュレーション プロパティ] を選択します。[表示] タブを選択して、[Y 軸範囲 (最小)]-2[Y 軸範囲 (最大)]35 に設定します。

  4. この結果が想定どおりであるかを判断します。

    最初はリレーがオンで、室温は設定温度を下回っています。室温が設定温度を超える場合、リレーは室温がさらに 2 度上がるまで最初は 0 に切り替わりません。シミュレーションは想定される動作を検証します。

部屋コンポーネントのモデル化

部屋コンポーネントに対する入力はヒーター コンポーネントからの熱流量と外部気温です。部屋コンポーネントはこれらの入力を使用して、壁を通じた熱損失、窓を通じた熱損失、現在の室温を計算します。

Room サブシステムを設計するには、熱損失率の方程式および室温変化の方程式を使用します。

室温の変化のモデル化-  部屋の温度変化率 (dTroom/dt) は次の方程式で定義されます。

dTroomdt=1mroomaircair(dQgaindtdQlossdt).

dQgain/dt は Heater サブシステムからの信号です。

  1. Room Subsystem ブロックを開きます。Room サブシステムで、Sum ブロックを追加します。[符号リスト] パラメーターを |+– に設定します。

  2. In1 を + 入力に接続します。入力はヒーター コンポーネントからの熱利得 (dQgain/dt) です。- 入力は部屋からの熱損失 (dQloss/dt) に接続します。

  3. Gain ブロックを追加します。[ゲイン] パラメーターを 1/(m_room_air*c_air) に設定します。Sum ブロックの出力を Gain ブロックの入力に接続します。図に示すように信号にラベルを付けます。点線の信号は後で接続する信号です。

室温のモデル化-  Gain ブロックの出力は室温の変化 (dTroom/dt) です。現在の室温 (Troom) を取得するには、信号を統合します。

  1. Integrator ブロックを追加します。[初期条件] パラメーターを T_roomIC に設定します。

  2. Integrator ブロックの出力を次に示すように Out1 に接続します。

壁および窓を通じた熱損失のモデル化-  この方程式は壁および窓を通じた熱エネルギーの損失率です。

dQlossdt=(TroomToutside)R.

  1. Room サブシステムで、Sum ブロックを追加します。[符号リスト] パラメーターを |+– に設定します。ブロックを右クリックし、[回転と反転][ブロックの反転] を選択します。

  2. Troom の信号線をクリックして Ctrl キーを押してから、分岐信号線をクリックしてドラッグします。ラインを Sum ブロック上の + 入力に接続します。

  3. 別の Inport ブロックを追加して、それを Sum ブロックの - 入力に接続します。名前を Outside Temperature に変更します。

  4. 別の Gain ブロックを追加します。[ゲイン] パラメーターを 1/R_equivalent に設定します。ブロックを右クリックし、[回転と反転][ブロックの反転] を選択します。

  5. 次の図のようにブロックを接続します。

部屋モデルのパラメーターの定義-  MATLAB ワークスペースでパラメーターを定義してから、[ブロック パラメーター] ダイアログ ボックスにその名前を入力できます。ただし、Simulink モデル ワークスペースを使用するとパラメーター値がモデルとともに保存されるので、ロバスト性が高くなります。

  1. Simulink エディターで、[ツール表示][モデル エクスプローラー][モデル ワークスペース] を選択します。

  2. モデル エクスプローラーで、[追加][MATLAB 変数] を選択します。

  3. 中央のペインで、新しい変数 Var をクリックして名前 m_room_air を入力します。右側のペインで、値 1470 (キログラム) を入力します。

  4. 変数 T_roomIC = 20 (摂氏) および R_equivalent = 4.329e-7 (時· 度/ジュール) を追加します。

シミュレーションのための部屋モデルの準備-  シミュレーションに向けて Room サブシステムを準備します。予測される動作と、シミュレーションを使用してどのようにその動作をテストできるかを検討します。ヒーターがオフ (熱利得 = 0) のときに初期室温 (20) が屋外温度 (10) を上回る場合、室温が屋外温度と等しくなるまで熱損失が継続するはずです。

  1. Room サブシステムで、[親に移動] ボタン をクリックしてモデルの最上位に移動します。図に示すように、Room ブロックのサイズを変更します。

    これで Room ブロックに 2 番目の入力端子が含まれました。各入力端子はサブシステム内の Inport ブロックに対応しています。

  2. Constant ブロックを追加して、それを Heat Gain 入力に接続します。[定数値] パラメーターを 0 (摂氏) に設定し、ヒーターがオフになっていると解釈します。

  3. 別の Constant ブロックを追加し、それを Outside Temperature 入力に接続します。[定数値] パラメーターを 10 (摂氏) に設定します。

  4. Scope ブロックを追加して接続し、室温の変化を表示します。

部屋モデルのシミュレーションと結果の検証

  1. ツール バーで [シミュレーション終了時間]20 に設定します。

  2. モデルのシミュレーションを実行します。

  3. スコープを開き、[オートスケール] ボタン をクリックしてスコープ トレースを表示します。

  4. この結果が想定どおりであるかを判断します。

    室温は Integrator ブロックで設定した初期室温で開始します。熱利得は 0 であるため、信号は屋外温度 (10) に減衰します。シミュレーションは想定される動作を検証します。

2 回目のシミュレーションのための部屋モデルの準備-  定数の屋外温度を初期室温 (20) より高い値に設定します。

  1. Outside Temperature 入力に接続された Constant ブロックで、[定数値]30 (摂氏) に設定します。

モデルのシミュレーションと結果の検証

  1. モデルのシミュレーションを実行します。

  2. スコープを開き、[オートスケール] ボタン をクリックしてスコープ トレースを表示します。

  3. この結果が想定どおりであるかを判断します。

    室温は初期設定温度の 20 から開始しますが、ヒーターがオフ (熱利得 = 0) の場合、室温は屋外温度まで上昇します。

    この動作は明示的にモデル化していないので、これは想定した結果ではありませんでした。ただし、屋外温度が室温よりも高い場合、熱損失をモデル化した方程式によっても、熱利得がモデル化されます。

住宅の暖房モデルの統合

モデル コンポーネントを接続し、現実的な入力を追加して、一定の期間にわたりモデル動作のシミュレーションを行い、設計を検証します。基本的なモデル化のワークフローを確認してください: モデルの統合

ヒーター コンポーネントとサーモスタット コンポーネントの統合

Room サブシステムを使用せずに Heater サブシステムと Thermostat サブシステムをシミュレートするには、室温の変化の信号が必要です。サーモスタットの温度を設定するために Constant ブロックを使用し、現実的な屋外温度の信号用に Sine Wave ブロックを使用します。

シミュレーションのためのモデルの準備

  1. 完了したサブシステムでモデルを開きます。個別のコンポーネントをテストするために追加したブロックはすべて削除します。

  2. Room サブシステムを開きます。Heat Gain というラベルの Inport ブロックをダブルクリックします。[Inport] ダイアログ ボックスで、[端子番号]2 に設定します。Heat Gain 端子が Room サブシステムの下に移動します。

  3. Thermostat サブシステム出力からの Heater (on/off) 信号を Heater サブシステム入力に接続します。

  4. Constant ブロックを追加し、サーモスタットを室温に設定します。[定数値]20 (摂氏) に設定します。

  5. 室温の変化を表す Sine Wave ブロックを追加します。パラメーター [振幅] を 10 (摂氏)、[バイアス]15[周波数]0.5 に設定します。

  6. Floating Scope ブロックを追加して次の図に示すようにブロックを接続します。

  7. [フローティング スコープ] ウィンドウで [コンフィギュレーション パラメーター] ボタン をクリックします。[メイン] タブで [レイアウト] ボタンをクリックします。2 つのボックスを選択します。1 つ目のチャートの下に 2 つ目の空のグラフが表示されます。

  8. ツール バーから [信号セレクター] ボタン をクリックします。

  9. [信号セレクター] ダイアログ ボックスの [オブジェクトの信号を選択] ドロップダウン リストから、[表示 1] を選択します。[Heater] チェック ボックスをオンにします。

  10. [オブジェクトの信号を選択] ドロップダウン リストから、[表示 2] を選択します。[定数] および [正弦波] チェック ボックスをオンにします。[閉じる] をクリックします。

  11. [Floating Scope] ウィンドウで、上の表示領域を右クリックし、[コンフィギュレーション プロパティ] を選択します。[Y 軸範囲 (最小)]0[Y 軸範囲 (最大)]20e7 に設定します。

  12. 下の表示領域を右クリックし、[コンフィギュレーション プロパティ] を選択します。[Y 軸範囲 (最小)]0[Y 軸範囲 (最大)]35 に設定します。

モデルのシミュレーションと結果の検証-  既定の終了時間である 10 と既定のソルバーである ode45 ソルバーを使用してモデルのシミュレーションを実行します。

  1. モデルのシミュレーションを実行します。

  2. Floating Scope を開きシミュレーション結果を表示します。上のグラフはヒーターの熱利得、下のグラフは正弦波でモデル化された室温変化を示しています。

    メモ

    ブロック削減の最適化によって Simulink で信号を表示できないことを示すエラーが表示された場合は、[コンフィギュレーション パラメーター] ダイアログ ボックスで [ブロック削減] チェック ボックスをクリアします。

  3. この結果が想定どおりであるかを判断します。

    約 0 ~ 1.5 時間でヒーターはオンになります。熱利得は定数ではありません。熱利得が変動するのは、熱利得がヒーターの気温と室温との差分の関数だからです。1.5 ~ 5.6 時間でヒーターはオフになり、熱利得 (上のグラフ) は 0 になります。シミュレーションから想定される動作が確認できます。

部屋のコンポーネントの統合

Room サブシステムを使用して Heater サブシステムと Thermostat サブシステムをシミュレートするには、屋外温度の変化の信号が必要です。モデルのシミュレーションによって、サーモスタットの設定と屋外温度が屋内温度にどのように影響するかを観察できます。

シミュレーションのためのモデルの準備

  1. 完了したサブシステムでモデルを開きます。個別のコンポーネントをテストするために追加したブロックはすべて削除します。

  2. 次に示すようにサブシステムを接続します。

  3. 室温を設定するための Constant ブロックを追加します。[定数値] パラメーターを 20 (摂氏) に設定します。

  4. 屋外温度の変化を表す a Sine Wave ブロックを追加します。[振幅]5[バイアス]12[周波数]2*pi/24[位相]180 に設定します。

  5. Floating Scope ブロックを追加してシミュレーション結果を表示します。

  6. Floating Scope で、[信号セレクター] ボタン をクリックします。[信号セレクター] ダイアログ ボックスの左側のペインで、最上位のモデルの階層構造を選択します。右側のペインで、Room 信号と Sine Wave 信号を選択します。

  7. [Floating Scope] でグラフを右クリックし、[コンフィギュレーション プロパティ] を選択します。[Y 軸範囲 (最小)]5[Y 軸範囲 (最大)]25 に設定します。

モデルのシミュレーションと結果の検証

  1. シミュレーション終了時間を 1 日を表す 24 (時間) に設定します。

  2. モデルのシミュレーションを実行します。

  3. Floating Scope を開いて結果を表示します。

  4. シミュレーション結果が予測と一致しているかどうかを判別します。

    屋外温度が設定した室温を下回る場合、室温は設定温度の上下で 2 度変動します。Thermostat サブシステムには 2 度のヒステリシスが含まれるため、このシミュレーション結果が想定されます。

  5. この結果をモデル例と比較できます。MATLAB コマンド ウィンドウで次を入力します。

    open_system([matlabroot,...
    '/help/toolbox/simulink/examples/ex_househeat_modeling_prepared'])
    または ex_househeat_modeling_prepared.slx をクリックします。

モデル パラメーターの調整-  Simulink モデルを使用すると、モデル パラメーターを対話的に変更してからモデルの動作における変化を観察できます。この方法によりモデルをすばやく評価し、設計を検証できます。

上限値がサーモスタットの温度を超えるように Sine Wave ブロック内の屋外温度を変更します。

  1. Sine Wave のダイアログ ボックスで [振幅]5[バイアス]19 に設定します。これらの設定は、屋外温度が屋内温度より高くなるとどうなるかを示します。

  2. モデルのシミュレーションを実行し結果を表示します。

  3. 結果が予測と一致するかどうかを判別します。

    屋外温度がサーモスタットの設定温度を超える場合、室温は屋外温度とほぼ等しくなります。この例の場合の熱損失は、屋外環境から部屋への熱の損失です。

外部インターフェイスのモデル化

今後のテストやより大規模なモデルで使用する場合のために、外部インターフェイスをモデル化します。Simulink では、Inport ブロックおよび Outport ブロックを使用して外部インターフェイスをモデル化します。

  1. Inport ブロックを追加して屋外温度とサーモスタットの設定温度からのデータをモデルに読み取ります。

  2. Outport ブロックを追加して、屋外温度と室温をより大規模なモデルに接続するか、結果を可視化します。

物理単位の指定

モデルの信号に物理単位を指定することにより、モデル コンポーネント間の計算の整合性を確保できます。Simulink では、Inport ブロックと Outport ブロックを介して信号の単位を指定します。

  1. In1 ブロックをダブルクリックして [ブロック パラメーター] ダイアログ ボックスを開きます。[信号属性] タブを選択します。

  2. [単位] ボックスで「degree」の入力を開始します。シンボルと名前のリストから [°C degree_Celsius] を選択します。

    残りの温度の Inport ブロックおよび Outport ブロックについて、[単位] パラメーターを [°C degree_Celsius] に設定します。

  3. ブロックの端子の単位を表示します。メニューから [情報表示][信号と端子][端子の単位] を選択します。

  4. Heater Subsystem ブロックをダブルクリックします。Heat Gain Outport ブロックをダブルクリックして [ブロック パラメーター] ダイアログ ボックスを開きます。[信号属性] タブを選択します。

  5. [単位] ボックスで「joule/hour」の入力を開始します。シンボルと名前のリストから [joule/h joule/hour] を選択します。

  6. モデルをコンパイルし、単位の整合性チェックを実行します。Ctrl + D を押します。

次の手順ではシミュレーションを実際のシステムのデータと比較して、モデルの正確性を検証します。動的システムのシミュレーションを参照してください。

関連するトピック

この情報は役に立ちましたか?