このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
住宅の暖房システムのモデル化
このチュートリアルでは、Simulink® ソフトウェアを使用して動的システムをモデル化してシミュレーションする方法を説明します。このモデルは、ヒーター (プラント モデル)、それを制御するサーモスタット (コントローラー モデル)、それらを使用して部屋 (環境モデル) を設定された温度に暖房する暖房システムのものです。これはシンプルなモデルではあるものの、モデル構造の作成とアルゴリズムの設計のプロセスは、さらに複雑なモデルで使用するプロセスと同じです。
完成したモデルをレビューするには、MATLAB® コマンド ウィンドウで次を入力します。
open_system(fullfile(matlabroot,... 'help', 'toolbox', 'simulink', 'examples', 'ex_househeat_modeling'))

住宅の暖房システムの定義
モデル化は、Simulink ソフトウェア環境外のタスクの完了をもって開始します。モデルの要件を定義し、方程式を派生させます。モデル パラメーターのデータと出力信号データの計測値を収集して、シミュレーション結果を検証します。
モデル化の目的の決定
モデルを設計する前に、目的と要件を考慮します。住宅の暖房システムをモデル化する場合、次のような目的があります。
屋外温度の変化が屋内温度に与える影響を観察する。
パラメーターの変化が屋内温度に与える影響を調べる。
システム コンポーネントの特定
モデル化の要件を理解したら、システムのコンポーネントの特定を開始できます。
このチュートリアルの住宅の暖房システムは、暖房システムおよび暖房システムと部屋との関係を定義します。以下が含まれます。
住宅の熱特性
ヒーターの熱特性
ヒーターを制御するサーモスタット
屋外の環境
屋内の環境
サーモスタットは室温を定期的に監視し、設定温度と室温との差によってヒーターのオン/オフを行います。
このシステムのモデルには、ヒーター、サーモスタット、部屋という 3 つのコンポーネントが含まれます。
システム方程式の定義
3 つの時間依存変数が室内の熱交換を定義します。
部屋の温度 ()
熱利得: ヒーターから部屋へ伝達される熱エネルギー ()
熱損失: 部屋から屋外環境へ伝達される熱エネルギー ()
微分方程式によってこれらの変数間の関係が定義されますが、熱伝達は温度変化によって定義されるため、室温のみが状態変数です。
熱利得率の方程式
ヒーター内の気温は Theater で一定であり、室温は Troom です。部屋に対する熱エネルギーの利得はヒーターからの加熱された空気による対流であり、熱容量は cair です。ヒーター内の空気の質量 に対する熱利得は、ヒーターと室内の温度差に比例します。
ヒーターからの熱エネルギーの利得の比率は次のとおりです。
ファンは部屋の空気を取り込み、ヒーターを通過させて部屋に返します。ヒーターを流れる単位時間あたりの空気量は一定であるため 、その定数で を置換することで次のように方程式を単純化します。
熱損失率の方程式
部屋からの熱エネルギーの損失は壁と窓を通じた伝導であり、室温と屋外温度の温度差に比例します。
熱エネルギーの損失率は次のとおりです。
を と置き換え、 を熱抵抗とし、次のように方程式を単純化します。
室温変化の方程式
熱利得率から熱損失を減算することにより部屋の温度変化率を定義します。
パラメーター データの収集
住宅の暖房モデルに必要なパラメーター値のほとんどが、標準のプロパティ テーブルに提供されています。ヒーターの流量はメーカーのデータ シートから得ています。
方程式から変数と係数をリストし、単位間の次元の整合性を確認します。モデルで使用する単位は時間なので、材質の熱特性に対して提供された値を秒単位から時間単位に変換します。
方程式の変数と定数. モデルを作成する際はこの表の定数名と値を使用できます。
方程式の変数または係数 | 説明 | 単位 |
---|---|---|
A | 壁または窓の表面積 | 平方メートル |
D | 壁または窓の厚さ | メートル |
Q | 伝達される熱エネルギー | ジュール |
dQ/dt | 伝達される熱エネルギー率 | ジュール/時 |
k | 熱伝導率 (熱伝達を行う材質の特性) | ジュール/メートル·時·度 |
r | 熱伝導抵抗 (熱伝達に抵抗する材質の特性) | メートル·時·度/ジュール |
R | 熱抵抗
| 時·度/ジュール |
m | 部屋またはヒーター内の空気の質量 ヒーター | キログラム |
dm/dt | ヒーターを通過する空気の質量流量 | キログラム/時 |
M | ヒーターを通過する空気の一定の質量流量 | キログラム/時 |
c | 比熱容量 | ジュール/キログラム·度 |
Theater | ヒーターからの一定の気温 | 摂氏 |
Troom | 初期の室温 | 摂氏 |
住宅の暖房システムのモデル化
最上位の構造体のモデル化は、個別のコンポーネント間でデータを受け渡しするためのインターフェイスを含むコンポーネントによって行います。モデルは、システムのコンポーネントに対応する階層構造に整理されている必要があります。
最上位の構造体のモデル化
住宅の暖房モデルの最上位レベルで Subsystem ブロックを使用してモデルを整理し、構造体を作成します。モデルには、サブシステム Thermostat、Heater、Room が含まれます。
新しい Simulink モデルを開きます。新しいモデルを開く
ライブラリ ブラウザーを開きます。Simulink ライブラリ ブラウザーを開く
Subsystem ブロックを追加します。3 つの Subsystem ブロックを Ports & Subsystems ライブラリから Simulink エディター内の新しいモデルにドラッグします。
Subsystem ブロックを開きます。ブロックをダブルクリックします。
新しい Subsystem ブロックにはそれぞれ 1 つの Inport (In1) ブロックと 1 つの Outport (Out1) ブロックが含まれます。これらのブロックは、モデルの階層構造における次の上位レベルとの信号インターフェイスを定義します。
Inport ブロックはそれぞれ Subsystem ブロックに入力端子を作成し、Outport ブロックはそれぞれ出力端子を作成します。入力信号と出力信号にブロックをさらに追加します。
Simulink ツールストリップで、[親に移動する] ボタン
をクリックして最上位レベルに戻ります。次に示すように Subsystem ブロックの名前を変更します。ブロック名をダブルクリックし、新しい名前を入力します。
各コンポーネントに対して、方程式のモデル化、パラメーターの定義、シミュレーション用のサブシステムの準備、シミュレーションによる動作検証を行います。
ヒーター コンポーネントのモデル化
ヒーター システム コンポーネントのモデル化から始めます。ヒーター モデルは以下のとおりです。
部屋の現在の温度とサーモスタットの制御信号を入力として受け取る
ヒーターからの熱利得を計算する
制御信号がオンのときに、熱利得を出力する
ヒーター サブシステムをモデル化するには、Simulink ブロックを使用した熱利得率の方程式をモデル化します。
ヒーターの温度から室温を減算. 温度差はヒーターの一定温度 (T_heater
) から現在の室温を減算した値です。
Heater サブシステムを開きます。
モデルをクリックして Sum と入力し、名前に Sum を使用したブロックのリストを表示します。リスト上で Sum ブロックをクリックします。符号リストを求めるプロンプトが表示されたら、「
|-+
」と入力してブロックに - 入力端子と + 入力端子を配置して Enter キーを押します。縦棒 (
|
) は、端子の間にスペースを挿入して入力端子の位置を変更します。符号リストの先頭の縦棒によって、ブロックの最上部にスペースが作られ、端子が反時計回りにシフトします。Constant ブロックを追加してヒーターからの一定の気温をモデル化します。ブロックの [定数値] パラメーターを
T_heater
に設定します。モデル ワークスペースでT_heater
の値を定義します。ブロックに
-C-
と表示される場合は、ブロックのサイズを変更して変数名を表示します。2 番目の Inport ブロックを追加して、モデルの別の部分から室温信号を取得します。
Gain ブロックを Heater サブシステムに追加します。[ゲイン] パラメーターを
M_heater_air*c_air
に設定します。モデル ワークスペースでこれらの変数の値を定義します。Sum ブロックの出力を Gain ブロックの入力に接続します。
信号線にラベルを追加し、モデル コンポーネントを方程式とモデル要件まで追跡する際に役立てます。信号線上をダブルクリックし、ラベルを入力します。
ブロック名を変更して、図に示すように接続します。
ヒーターのスイッチのモデル化. サーモスタットは 1 (オン) または 0 (オフ) に等しいオン/オフ信号をヒーターに送信します。入力信号は 2 進数なので、Product ブロックを使用してスイッチをモデル化できます。
In1 ブロックと Out1 ブロック間の接続を削除します。ラインを選択し、[削除] をクリックします。
Product ブロックを追加します。ブロックのサイズを垂直方向に変更して、ブロック線図のブロックを整列します。In1 ブロックを最初のブロック入力に接続し、ブロック出力を Out1 ブロックに接続します。以下に示すように、ブロックの名前を変更します。
Gain ブロックからの出力を 2 番目の入力に接続します。接続されたブロックをすべて一緒に移動します。移動するブロックの周囲に選択ボックスを描画して、新しい場所にドラッグします。
図に示すようにブロック名を変更して信号にラベルを追加します。
Inport ブロックと Outport ブロックはモデルでこのサブシステムと他のサブシステムを接続する端子を作成します。
ヒーター モデルのパラメーターの定義. MATLAB ワークスペースでパラメーターを定義してから、[ブロック パラメーター] ダイアログ ボックスにその名前を入力できます。ただし、Simulink モデル ワークスペースを使用すると変数値がモデルに保存されるので、ロバスト性が高くなります。
Simulink エディターの [モデル化] タブの [設計] で、[モデル ワークスペース] をクリックします。
モデル エクスプローラーで、[追加] 、 [MATLAB 変数] を選択します。中央のペインで、新しい変数
Var
をクリックして、ブロック パラメーターに変数名を入力します。この例では、T_heater
と入力します。値
0
をクリックしてこの変数の値を入力します。この例では、50
度を入力します。同じ方法で、値が
3600
キログラム/時の変数M_heater_air
および値が1005.4
ジュール/キログラム· 度の変数c_air
を追加します。
シミュレーションのためのヒーター モデルの準備. シミュレーションのためにヒーター モデルを設定します。予測される動作と、シミュレーションを使用してどのようにその動作をテストできるかを検討します。サーモスタットの出力が 1 (オン) のとき、室温が 25 で一定であると仮定すると、想定されるゲインからの出力は (50 – 25) x 3600 × 1005.3 = 9.05 × 107 です。以下の入力を使用してモデルを実行することで、この出力を検証します。
4 時間後に
0
から1
に変化するヒーターのオン/オフ信号25
で一定の室温
Heater サブシステムで、[親に移動する] ボタン
をクリックしてモデルの最上位に移動します。図に示すように Heater ブロックのサイズを変更できます。
サブシステムで Heater ブロックに 2 番目の入力端子があり、各端子が Inport ブロックまたは Outport ブロックに対応していることがわかります。
室温を表す Constant ブロックを追加して、値を
25
(摂氏) に設定します。一時的な Heater (on/off) 信号に Step ブロックを追加します。[ステップ時間] を4
に設定します。Scope ブロックを追加して、それを Heat Gain 出力に接続します。
ヒーター モデルのシミュレーションと結果の検証. 既定のシミュレーション設定を使用してモデル設計を検証します。
Scope ブロックをダブルクリックして開きます。
モデルをシミュレートします。[実行] ボタン
をクリックします。
シミュレーションを実行すると、Scope によって結果がプロットされます。
スコープ トレースを表示します。
この結果が想定どおりであるかを判断します。
ヒーターのオン/オフ信号が 4 時間で 0 から 1 に反転すると、ヒーター出力は 9.05 × 107 ジュール/時になります。シミュレーションは想定される動作を検証します。
Heater コンポーネントのテストのために追加した Constant ブロック、Step ブロックおよび Scope ブロックを削除します。
サーモスタット コンポーネントのモデル化
システム方程式を使用せずにサーモスタットをモデル化できます。このコンポーネントの要件は以下のとおりです。
室温が設定温度を下回る場合、ヒーターがオンになり、制御信号は 1 に等しくなります。室温が設定温度を超える場合、制御信号は 0 に等しくなります。
設定温度の周辺での切り替えが繰り返されるのを防ぐため、サーモスタットは温度指定値を中心に摂氏 2 度のヒステリシスを許容します。サーモスタットがオンの場合、オフになる前に設定温度より室温が 2 度上昇していなければなりません。サーモスタットがオフの場合、オンになる前に室温が設定温度より 2 度低下していなければなりません。
このコンポーネントは、サーモスタットの操作をモデル化し、暖房システムをオンとオフに切り替えるタイミングを決定します。Relay ブロックが唯一のブロックですが、モデル内でサーモスタットを論理的に表します。
室温からの設定室温の減算. 設定室温が室温よりも高い場合、サーモスタット モデルは "オン" 信号をヒーター モデルに送信します。これが適切かどうかを判断するには、まず室温を設定温度から減算します。
Thermostat サブシステムを開きます。Sum ブロックを追加します。パラメーター [符号リスト] を
|+-
に設定します。Inport ブロックを Sum ブロックの + 入力に接続します。Inport ブロックは室温を設定します。
2 番目の Inport ブロックを追加して、Sum ブロックの - 入力に接続します。この 2 番目の Inport ブロックは Room サブシステムの現在の室温です。出力端子をブロックの最上位に移動します。ブロックを選択します。ツールストリップの [書式設定] タブで、[反時計回りに 90 度回転]
を選択します。図に示すように、必要に応じてハンドルをドラッグしてブロックの形状を変更できます。
以下に示すように、ブロックの名前を変更します。
サーモスタット信号のモデル化. 摂氏 2 度のヒステリシス値を使用してサーモスタットの信号をモデル化します。
Thermostat サブシステムで、Relay ブロックを追加します。[スイッチオン ポイント] パラメーターを
2
に、[スイッチオフ ポイント] パラメーターを-2
に設定します。図に示すようにブロックを接続して名前を変更します。
シミュレーションのためのサーモスタット モデルの準備. シミュレーションに向けて Thermostat サブシステムを準備します。サーモスタットの想定される動作と、シミュレーションを使用してどのようにその動作をテストできるかを検討します。室温がサーモスタットの設定より 2 度高くなると、サーモスタットの出力は 0 になります。室温がサーモスタットの設定より 2 度低くなると、サーモスタットの出力は 1 になります。
Thermostat サブシステムで、[親に移動する] ボタン
をクリックしてモデルの最上位に移動します。図に示すように、Thermostat ブロックのサイズを変更します。
これで、Thermostat サブシステムに 2 番目の入力端子が含まれたことがわかります。各入力端子はサブシステムの Inport ブロックに対応しています。
設定温度に Constant ブロックを追加します。[定数] パラメーターを
25
(摂氏) に設定します。室温の変化を表す Sine Wave ブロックを追加します。[振幅] パラメーターを
10
、[バイアス] を20
、[周波数] を0.5
に設定します。これらのパラメーターは温度の指定値である 25 の上下に変動幅を与えます。Heater 端子で Scope ビューアーを作成および接続します。信号ビューアーの追加を参照してください。
2 つの入力信号をスコープ ビューアーに接続します。
サーモスタット モデルのシミュレーションと結果の検証. 既定のシミュレーション設定を使用してモデル設計を検証します。
モデルのシミュレーションを実行します。シミュレーションを実行すると、スコープ ビューアーによって結果がプロットされます。
Scope を開いてスコープ トレースを表示します。
この結果が想定どおりであるかを判断します。
最初は室温は設定温度を下回っていて、リレーがオンです。室温が設定温度に達すると、リレーは室温がさらに 2 度上がるまで引き続きオンになります。シミュレーションは想定される動作を検証します。
部屋コンポーネントのモデル化
部屋コンポーネントに対する入力はヒーター コンポーネントからの熱流量と外部気温です。部屋コンポーネントはこれらの入力を使用して、壁を通じた熱損失、窓を通じた熱損失、現在の室温を計算します。
Room サブシステムを設計するには、熱損失率の方程式と室温変化の方程式を使用します。
室温の変化のモデル化. 部屋の温度変化率 (dTroom/dt) は次の方程式で定義されます。
項 dQgain/dt
は Heater サブシステムからの信号です。
Room Subsystem ブロックを開きます。Room サブシステムで、Sum ブロックを追加します。[符号リスト] パラメーターを
|+–
に設定します。In1 を + 入力に接続します。入力はヒーター コンポーネントからの熱利得 (
dQgain/dt
) です。- 入力は部屋からの熱損失 (dQloss/dt
) に接続します。Gain ブロックを追加します。[ゲイン] パラメーターを
1/(m_room_air*c_air)
に設定します。Sum ブロックの出力を Gain ブロックの入力に接続します。図に示すように信号にラベルを付けます。点線の信号は後で接続する信号です。
室温のモデル化. Gain ブロックの出力は室温の変化 (dTroom/dt
) です。現在の室温 (Troom
) を取得するには、信号を統合します。
Integrator ブロックを追加します。[初期条件] パラメーターを
Troom_IC
に設定します。Integrator ブロックの出力を次に示すように Out1 に接続します。
壁および窓による熱損失のモデル化. この方程式は壁および窓による熱エネルギーの損失率です。
Room サブシステムで、Sum ブロックを追加します。[符号リスト] パラメーターを
|+–
に設定します。ブロックを選択します。ツールストリップの [書式設定] タブで、[左右を反転]をクリックします。
Troom
を Sum ブロックに接続します。Troom
の信号線と Sum ブロックの + 入力をクリックします。別の Inport ブロックを追加して、それを Sum ブロックの - 入力に接続します。名前を Outside Temperature に変更します。
別の Gain ブロックを追加します。[ゲイン] パラメーターを
1/R_equivalent
に設定します。ブロックを選択します。ツールストリップの [書式設定] タブで、[左右を反転]をクリックします。
次の図のようにブロックを接続します。
部屋モデルのパラメーターの定義. MATLAB ワークスペースでパラメーターを定義してから、[ブロック パラメーター] ダイアログ ボックスにその名前を入力できます。ただし、Simulink モデル ワークスペースを使用するとパラメーター値がモデルとともに保存されるので、ロバスト性が高くなります。
Simulink エディターの [モデル化] タブの [設計] で、[モデル ワークスペース] をクリックします。
モデル エクスプローラーで、[追加] 、 [MATLAB 変数] を選択します。
中央のペインで、新しい変数
Var
をクリックして名前m_room_air
を入力します。右側のペインで、値1470
(キログラム) を入力します。変数
T_roomIC
=20
(摂氏) およびR_equivalent
=4.329e-7
(時· 度/ジュール) を追加します。
シミュレーションのための部屋モデルの準備. シミュレーションに向けて Room サブシステムを準備します。予測される動作と、シミュレーションを使用してどのようにその動作をテストできるかを検討します。ヒーターがオフ (熱利得 = 0) のときに初期室温 (20) が屋外温度 (10) を上回る場合、室温が屋外温度と等しくなるまで熱損失が継続するはずです。
Room サブシステムで、[親に移動する] ボタン
をクリックしてモデルの最上位に移動します。図に示すように、Room ブロックのサイズを変更します。
これで Room ブロックに 2 番目の入力端子が含まれました。各入力端子はサブシステムの Inport ブロックに対応しています。
Constant ブロックを追加して、それを Heat Gain 入力に接続します。[定数値] パラメーターを
0
(摂氏) に設定し、ヒーターがオフになっていると解釈します。別の Constant ブロックを追加し、それを Outside Temperature 入力に接続します。[定数値] パラメーターを
10
(摂氏) に設定します。Scope ブロックを追加して接続し、室温の変化を表示します。
部屋モデルのシミュレーションと結果の検証
ツールストリップで [終了時間] を
20
に設定します。モデルをシミュレートします。
スコープを開き、[オートスケール] ボタン
をクリックしてスコープ トレースを表示します。
この結果が想定どおりであるかを判断します。
室温は Integrator ブロックで設定した初期室温で開始します。熱利得は 0 であるため、信号は屋外温度 (10) に減衰します。シミュレーションは想定される動作を検証します。
2 回目のシミュレーション向けの部屋モデルの準備. 定数の屋外温度を初期室温 (20) より高い値に設定します。
Outside Temperature 入力に接続された Constant ブロックで、[定数値] を 30
(摂氏) に設定します。
モデルのシミュレーションと結果の検証
モデルをシミュレートします。
スコープを開き、[オートスケール] ボタン
をクリックしてスコープ トレースを表示します。
この結果が想定どおりであるかを判断します。
室温は初期設定温度の 20 から開始しますが、ヒーターがオフ (熱利得 = 0) の場合、室温は屋外温度まで上昇します。これはモデルが明示的に指定していない動作であり、予期しない動作と見なされる場合があります。
屋外温度が室温よりも高い場合、熱損失をモデル化する方程式は、熱利得もモデル化します。モデルはヒーターがオフのとき、この動作を明示的に指定していませんでしたが、結果は物理的に理にかなっています。
住宅の暖房モデルの統合
モデル コンポーネントを接続し、現実的な入力を追加して、一定の期間にわたりモデル動作のシミュレーションを行い、モデル設計を検証します。
ヒーター コンポーネントとサーモスタット コンポーネントの統合
Room サブシステムを使用せずに Heater サブシステムと Thermostat サブシステムをシミュレートするには、室温の変化の信号が必要です。サーモスタットの温度を設定するために Constant ブロックを使用し、現実的な屋外温度の信号用に Sine Wave ブロックを使用します。
シミュレーションのためのモデルの準備
完成したサブシステムを使用してモデルを開きます。個別のコンポーネントをテストするために追加したブロックはすべて削除します。
Room サブシステムを開きます。Heat Gain というラベルの Inport ブロックをダブルクリックします。Inport ブロック ダイアログ ボックスで、[端子番号] を
2
に設定します。Heat Gain 端子が Room サブシステムの下に移動します。Thermostat サブシステム出力からの Heater (on/off) 信号を Heater サブシステム入力に接続します。
Constant ブロックを追加し、サーモスタットを室温に設定します。[定数値] を
20
(摂氏) に設定します。室温の変化を表す Sine Wave ブロックを追加します。パラメーター [振幅] を 10 (摂氏)、[バイアス] を
15
、[周波数] を0.5
に設定します。次の図のようにブロックを接続します。
スコープ ビューアーを追加し、Heater ブロック、Constant ブロック、Sine Wave ブロックからの出力信号を追加します。信号ビューアーの追加を参照してください。
スコープ ビューアー ウィンドウの [コンフィギュレーション プロパティ] ボタン
で、矢印をクリックしてから [レイアウト] アイコン
をクリックします。2 つのボックスを選択します。1 つ目のチャートの下に 2 つ目の空のグラフが表示されます。
[シミュレーション] タブの [準備] で、[ビューアー マネージャー] を選択します。
ビューアーおよびジェネレーター マネージャーで [スコープ] を選択します。[接続された信号] で、[Constant] と [Sine Wave] の行の [表示] エントリを選択し、[表示] を [2] に変更します。
モデルのシミュレーションと結果の検証. 既定の終了時間である 10 を使用してモデルのシミュレーションを実行します。
モデルのシミュレーションを実行します。
スコープ ビューアーを開いてシミュレーション結果を表示します。上のグラフはヒーターの熱利得、下のグラフは正弦波でモデル化された室温変化を示しています。
この結果が想定どおりであるかを判断します。
約 0 ~ 1.5 時間でヒーターはオンになります。熱利得は一定ではありません。熱利得が変動するのは、熱利得がヒーターの気温と室温との差分の関数だからです。1.5 ~ 5.6 時間でヒーターはオフになり、熱利得 (上のグラフ) は 0 になります。想定される動作がシミュレーションで確認できます。
部屋のコンポーネントの統合
Room サブシステムを使用して Heater サブシステムと Thermostat サブシステムをシミュレートするには、屋外温度の変化の信号が必要です。モデルのシミュレーションによって、サーモスタットの設定と屋外温度が屋内温度にどのように影響するかを観察できます。
シミュレーションのためのモデルの準備
完成したサブシステムを使用してモデルを開きます。個別のコンポーネントをテストするために追加したブロックはすべて削除します。
次に示すようにサブシステムを接続します。
室温を設定するための Constant ブロックを追加します。[定数値] パラメーターを
20
(摂氏) に設定します。屋外温度の変化を表す a Sine Wave ブロックを追加します。[振幅] を
5
、[バイアス] を12
、[周波数] を2*pi/24
、[位相] を180
に設定します。Scope Viewer ブロックを追加してシミュレーション結果を表示します。
信号ビューアーで [信号セレクター] ボタン
をクリックします。[信号セレクター] ダイアログ ボックスの左側のペインで、最上位のモデルの階層構造を選択します。右側のペインで、Room 信号と Sine Wave 信号を選択します。
モデルのシミュレーションと結果の検証
シミュレーション終了時間を 1 日を表す
24
(時間) に設定します。モデルのシミュレーションを実行します。
スコープ ビューアーを開いて結果を表示します。
シミュレーション結果が予測と一致しているかどうかを判別します。
屋外温度が設定した室温を下回る場合、室温は設定温度の上下で 2 度変動します。Thermostat サブシステムには 2 度のヒステリシスが含まれるため、このシミュレーション結果は想定されたものです。
この結果をモデル例と比較できます。MATLAB コマンド ウィンドウで次を入力します。
またはopen_system(fullfile(matlabroot,... 'help','toolbox','simulink','examples','ex_househeat_modeling_prepared'))
ex_househeat_modeling_prepared.slx
をクリックします。
モデル パラメーターの調整. Simulink モデルを使用すると、モデル パラメーターを対話的に変更してからモデルの動作における変化を観察できます。この方法によりモデルをすばやく評価し、設計を検証できます。
上限値が設定温度を超えるように Sine Wave ブロック内の屋外温度を変更します。
Sine Wave のダイアログ ボックスで [振幅] を
5
、[バイアス] を19
に設定します。これらの設定は、屋外温度が屋内温度より高くなるとどうなるかを示します。モデルのシミュレーションを実行し結果を表示します。
結果が予測と一致するかどうかを判別します。
屋外温度が設定温度を上回るときは、室温はわずかに遅れて屋外温度に従って上昇します。この場合、熱損失は逆方向に機能し、屋外環境から部屋への熱の損失を表します。
外部インターフェイスのモデル化
今後のテストやより大規模なモデルで使用する場合のために、外部インターフェイスをモデル化します。Simulink では、Inport ブロックおよび Outport ブロックを使用して外部インターフェイスをモデル化します。
Inport ブロックを追加して屋外温度とサーモスタットの設定温度からのデータをモデルに読み取ります。
Outport ブロックを追加して、屋外温度と室温をより大規模なモデルに接続するか、結果を可視化します。
物理単位の指定
モデルの信号に物理単位を指定することにより、モデル コンポーネント間の計算の整合性を確保できます。Simulink では、Inport ブロックと Outport ブロックを介して信号の単位を指定します。
In1
ブロックをダブルクリックして [ブロック パラメーター] ダイアログ ボックスを開きます。[信号属性] タブを選択します。[単位] ボックスで
degree
と入力します。シンボルと名前のリストから[°C degree_Celsius]
を選択します。残りの温度の Inport ブロックおよび Outport ブロックについて、[単位] パラメーターを
[°C degree_Celsius]
に設定します。ブロックの端子の単位を表示します。[デバッグ] タブで [情報のオーバーレイ] 、 [単位] を選択します。
Heater Subsystem ブロックをダブルクリックします。Heat Gain Outport ブロックをダブルクリックして [ブロック パラメーター] ダイアログ ボックスを開きます。[信号属性] タブを選択します。
[単位] ボックスで
joule/hour
と入力します。シンボルと名前のリストから[joule/h joule/hour]
を選択します。モデルを更新します。Ctrl+D を押します。
次の手順ではシミュレーションを実際のシステムのデータと比較して、モデルの正確性を検証します。
シミュレーションの準備
最初のシミュレーション後は、その結果を使用してモデルを改善し、モデルの動作を測定データに合わせることができます。シミュレーション用にモデルを準備した後で、インターフェイスを使用して測定されたシステム データの入力や室温の設定を行うことができます。
完成したモデル例を読み込むには、MATLAB コマンド ウィンドウで以下のように入力します。
copyfile(fullfile(matlabroot,... 'help', 'toolbox', 'simulink', 'examples', 'ex_househeat_measured_data.mat'))
open_system(fullfile(matlabroot,... 'help', 'toolbox', 'simulink', 'examples', 'ex_househeat_simulation_prepared'))
モデル化したシステムの動作をシミュレーションが表現していることを確認します。モデル内に比較可能な信号をもつシステムの物理特性を試験的に計測することから始めます。
物理システムからのデータの収集
シミュレーションのためのモデルの準備
システム データの収集とプロット
実際の住宅の暖房システムから動的な特性を測定します。モデル シミュレーションで測定データを使用し、モデルの動作と精度を検証します。
24 時間にわたって 6 分ごとに家の屋外と屋内の温度を測定します。
測定データを Microsoft® Excel® のワークシートに入力するか、スプレッドシートの例を開きます。MATLAB コマンド ウィンドウで次を入力します。
winopen(fullfile(matlabroot,... 'help', 'toolbox', 'simulink', 'examples', 'ex_househeat_measured_data.xls'))
測定データのプロットを確認します。室温データは温風ヒーターがオンになると温度スパイクを示します。これは温風暖房システムに一般的なパターンです。
シミュレーションのためのモデルの準備
データ入力用の外部インターフェイスと入力制御信号を追加して、シミュレーションに向けてモデルを準備します。
「住宅の暖房システムのモデル化」チュートリアルで作成したモデルを使用するか、モデル例を開きます。MATLAB コマンド ウィンドウで次を入力します。
open_system(fullfile(matlabroot,... 'help', 'toolbox', 'simulink', 'examples', 'ex_househeat_modeling'))
Inport ブロック
In2
を Constant ブロックで置き換え、[定数] パラメーターを20
に設定します。Constant ブロックはサーモスタットの温度を設定します。Inport ブロックを追加します。[端子番号] を
1
に設定します。また、この操作により、屋外温度信号の [端子番号] が2
に設定されます。1 番目の Inport ブロックの名前を
Inside Temperature
に変更します。2 番目の Inport ブロックの名前をOutside Temperature
に変更します。Outport ブロックを追加して 1 番目の Inport ブロック (室温) に接続します。Outport ブロックは、信号を保存 (ログ記録) するために必要です。[端子番号] を
1
に設定します。
シミュレーションの実行と評価
モデルの正確性を検証し、パラメーターを最適化します。最適化を検討するパラメーターは、ヒーターのヒステリシス、温度のオフセット、熱損失に対する住宅の抵抗です。以下の手順に従ってモデルを検証します。
データのインポート
シミュレーションの実行
シミュレーション結果の評価
モデル パラメーターの変更
シミュレーションの再実行
ルート Inport のマッピングによるデータのインポート
ルート Inport マッパー ツールを使用して測定済みの信号データを Excel のスプレッドシートから Simulink モデルに取り込むことができます。
Inport ブロックを開きます。[入力の接続] ボタンをクリックしてルート Inport マッパーを開きます。
ツールストリップの [スプレッドシートから] をクリックします。
[スプレッドシートから] ダイアログ ボックスで [参照] ボタンをクリックします。ファイル
を参照して選択します。[開く] をクリックします。[OK] をクリックしてスプレッドシートをインポートします。matlabroot
\help\toolbox\simulink\examples\ex_househeat_measured_data.xls左側にある [
Sheet1
] を選択します。[シナリオ信号] 列に Excel スプレッドシートからの 2 つの信号が表示され、アイコンによってこれらの信号がマッピングされていないことが示されます。
ツールストリップの [マッピング モード]、[端子の順序] オプションを選択します。[オプション] ドロップダウン リストの [モデルの自動更新] チェック ボックスをオンにします。
[マップの準備状態のチェック] ドロップダウン リストから
[未接続のものをマッピング]
を選択します。[マッピングの概要] に、Excel のスプレッドシートからの信号が Input 端子ブロックにマッピングされていることが示されます。[マッピングの概要] に、
Sheet1
がシミュレーション用にマークされ、Dataset
オブジェクトが MATLAB ワークスペースに作成されたことが示されます。信号データを MAT ファイルに保存します。MATLAB コマンド ウィンドウで以下のように入力します。
save('ex_househeat_measured_data.mat', 'Sheet1')
信号データを読み込むようにモデルを設定する
入力端子にマッピングされた信号データは MATLAB ワークスペース変数内にあります。新しい MATLAB セッションごとに手動でデータを再読み込みするか、モデルのプリロード関数を使用して再読み込みしなければなりません。
Simulink エディターの [モデル化] タブで [モデル設定] 、 [モデル プロパティ] を選択し、[モデル プロパティ] ダイアログ ボックスを開きます。
[コールバック] タブを選択します。
[モデルのコールバック] セクションで [
PreLoadFcn
] を選択します。[モデル プリロード関数] ボックスで次を入力します。
load('ex_househeat_measured_data.mat')
[OK] をクリックします。
シミュレーション結果を保存するモデルの構成
シミュレーション中に信号データを保存 (ログ記録) するモデルを構成します。シミュレーションでログ記録された信号を、シミュレーション データ インスペクターを使用して表示できるようになります。
モデル内の [モデル化] タブで [モデル設定] をクリックします。
左側のペインで、[データのインポート/エクスポート] を選択します。
右側のペインの [時間] および [出力] チェック ボックスをオフにします。
[信号のログ] チェック ボックスをオンにします。
[ワークスペース データのログをシミュレーション データ インスペクターに記録] チェック ボックスをオンにします。
[OK] をクリックします。
保存する信号の選択
シミュレーション データ インスペクターに表示する信号を特定し、名前がない場合は名前を付けて、ログ パラメーターを設定します。
Inside Temperature 信号線を右クリックして [プロパティ] を選択します。
[信号名] ボックスに「
Measured Room Temperature
」と入力します。[信号データのログ] チェック ボックスをオンにします。ログ バッジが信号線の上に表示されます。
これらの信号に名前を付け、ログを選択します。
信号の位置 信号名 出力端子 2 からの屋外温度 Measured Outside Temperature
Room サブシステムの出力端子からの室温 Room Temperature
シミュレーションの実行
データをインポートし、信号に対してデータのログを有効にすると、シミュレーションを実行できます。
シミュレーション用に準備したモデルを使用するかモデル例を開きます。MATLAB コマンド ウィンドウで次を入力します。
open_system(fullfile(matlabroot,... 'help', 'toolbox', 'simulink', 'examples', 'ex_househeat_simulation_prepared'))
Simulink ツールストリップで [終了時間] を
24
(時間) に設定します。[実行] ボタン
をクリックします。
モデル シミュレーションが、
0.0
~24.0
時間の間 root import block からの屋外温度データを入力として使用して実行されます。
シミュレーション結果と測定システム データの比較
シミュレーション データ インスペクターを使用して、シミュレーションの出力信号と測定データを比較します。
Simulink ツールストリップで [シミュレーション データ インスペクター] ボタン
をクリックします。
モデルをシミュレーションするたびに、[実行] ペインに別の実行の様子が表示されます。
すべての信号のチェック ボックスをオンにします。選択した各信号のプロットがグラフに表示されます。
一番上の信号は Measured Room Temperature です。中央の信号は Measured Outside Temperature です。一番下の信号はシミュレーションの Room Temperature です。
モデルへの変更の決定
モデルに対する明確な変更はサーモスタットのヒステリシスです。シミュレーションの室温は温度の指定値である 20 度前後の 18 ~ 22 度で変動します。測定した室温は同じ指定値を使用して 20 ~ 25 度で変動します。
Thermostat サブシステム内で Relay ブロックを開きます。
室温と指定値との差分は 0 なので、[スイッチオン ポイント] を
2
から0
に変更します。[スイッチオフ ポイント] を
-2
から-5
に変更します。室温が指定値より 5 度高い場合、ヒーターをオフにするようにします。指定値は室温より 5 度低くなっています。
シミュレーション間での結果の比較
シミュレーション データ インスペクターを使用して、異なるモデル パラメーターを使用する 2 つのシミュレーション間の相違点を比較します。この比較は、変更によってモデルの精度が改善されたことを示します。
モデルのシミュレーションを実行します。
シミュレーション データ インスペクターを開きます。
実行の左側にある矢印を選択して、ログ信号のリストを展開します。[Run1] について、
Measured Outside Temperature
チェック ボックスおよびMeasured Room Temperature
チェック ボックスをオンにします。[Run2] について、[Room Temperature
] チェック ボックスをオンにします。信号を確認します。シミュレートした室温の最小値と最大値が測定した室温値と一致します。