ドキュメンテーション

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

動的システムのシミュレーション

このチュートリアルでは、Simulink® ソフトウェアを使用した動的システムのモデルをシミュレートする方法と、その結果を使用してモデルを改善する方法を説明します。シミュレーション用にモデルを準備した後で、インターフェイスを使用して測定されたシステム データの入力や室温の設定を行うことができます。

シミュレーションの準備が既に整っているモデル例を確認するために、MATLAB® コマンド ウィンドウで次を入力します。

load([matlabroot,...
'/help/toolbox/simulink/examples/ex_househeat_measured_data.mat'])
open_system([matlabroot,...
'/help/toolbox/simulink/examples/ex_househeat_simulation_prepared'])

シミュレーションの準備

モデル化したシステムの動作をシミュレーションが表現していることを確認します。モデル内に比較可能な信号をもつシステムの物理特性を試験的に計測することから始めます。

  • 物理システムからのデータの収集

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

ワークフローの詳細については、シミュレーションの準備を参照してください。

システム データの収集とプロット

実際の住宅の暖房システムから動的な特性を測定します。モデル シミュレーションで測定データを使用し、モデルの動作と精度を検証します。

  1. 24 時間中 6 分ごとに家の屋外と屋内の温度を測定します。

  2. 測定データを Microsoft® Excel® のワークシートに入力するか、スプレッドシートの例を開きます。MATLAB コマンド ウィンドウで次を入力します。

    winopen([matlabroot,...
    '/help/toolbox/simulink/examples/ex_househeat_measured_data.xls'])

  3. 測定データのプロットを確認します。室温データは温風ヒーターがオンになると温度スパイクを示します。これは温風暖房システムに一般的なパターンです。

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

データ入力用の外部インターフェイスと入力制御信号を追加して、シミュレーションに向けてモデルを準備します。

  1. チュートリアル動的システムのモデル化で作成したモデルを使用するか、モデル例を開きます。MATLAB コマンド ウィンドウで次を入力します。

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

  2. Inport ブロック In2Constant ブロックで置き換え、[定数] パラメーターを 20 に設定します。Constant ブロックはサーモスタットの温度を設定します。

  3. Inport ブロックを追加します。[端子番号]1 に設定します。また、この操作により、屋外温度信号の [端子番号]2 に設定されます。

  4. 1 番目の Inport ブロックの名前を Inside Temperature に変更します。2 番目の Inport ブロックの名前を Outside Temperature に変更します。

  5. Outport ブロックを追加して 1 番目の Inport ブロック (室温) に接続します。Outport ブロックは信号を保存 (ログ記録) するために必要になります。

  6. モデルを保存します。

シミュレーションの実行と評価

モデルの正確性を検証し、パラメーターを最適化します。最適化を検討するパラメーターは、ヒーターのヒステリシス、温度のオフセット、熱損失に対する住宅の抵抗です。以下の手順に従ってモデルを検証します。

  • データのインポート

  • シミュレーションの実行

  • シミュレーション結果の評価

  • モデルのパラメーターの変更

  • シミュレーションの再実行

ワークフローの詳細については、シミュレーションの実行と評価を参照してください。

ルート Inport のマッピングによるデータのインポート

ルート Inport マッパー ツールを使用して測定済みの信号データを Excel のスプレッドシートから Simulink モデルに取り込むことができます。

  1. 任意の Inport ブロックを開きます。[入力の接続] ボタンをクリックしてルート Inport マッパーを開きます。

  2. ツールストリップの [スプレッドシートから] をクリックします。

  3. [スプレッドシートから] ダイアログ ボックスで [参照] ボタンをクリックします。ファイル matlabroot\help\toolbox\simulink\examples\ex_househeat_measured_data.xls を参照して選択します。[開く] をクリックします。[OK] をクリックしてスプレッドシートをインポートします。

  4. [信号] ドロップダウン リストから [信号のプレビュー] を選択します。

  5. 左側にある Sheet1 のツリー ビューを展開します。[Inside Temperature] および [Outside Temperature] チェック ボックスをオンにします。

  6. [信号のプレビューを閉じる] をクリックします。

  7. 左側にある [Sheet1] を選択します。[シナリオ信号] 列に Excel スプレッドシートからの 2 つの信号が表示され、アイコン によってこれらの信号がマッピングされていないことが示されます。

  8. ツールストリップの [端子の順序] オプションを選択します。[オプション] ドロップダウン リストの [モデルの更新] チェック ボックスをオンにします。

  9. [モデルにマッピング] をクリックし、ドロップダウン リストから [未接続のものをマッピング] を選択します。[マッピングの概要] に、Excel のスプレッドシートからの信号が Input 端子ブロックにマッピングされていることが示されます。

  10. [シミュレーション用にマーク] をクリックします。[マッピングの概要] に、Sheet1 がシミュレーション用にマークされ、Dataset オブジェクトが MATLAB ワークスペースに作成されたことが示されます。

  11. 信号データを MAT ファイルに保存します。MATLAB コマンド ウィンドウで以下のように入力します。

    save('ex_househeat_measured_data.mat', 'Sheet1')

信号データを読み込むようにモデルを設定する

入力端子にマッピングされた信号データは MATLAB ワークスペース変数内にあります。新しい MATLAB セッションごとに手動でデータを再読み込みするか、モデルのプリロード関数を使用して再読み込みしなければなりません。

  1. Simulink エディターのメニューから [ファイル][モデル プロパティ][モデル プロパティ] を選択します。

  2. [コールバック] タブを選択します。

  3. [モデルのコールバック] セクションで [PreLoadFcn] を選択します。

  4. [モデル プリロード関数] ボックスで次を入力します。

    load('ex_househeat_measured_data.mat')

  5. [OK] をクリックします。

シミュレーション結果を保存するモデルの構成

シミュレーション中に信号データを保存 (ログ記録) するモデルを構成します。その後、Simulink データ インスペクターを使用してシミュレーションからのログ信号を表示できます。

  1. モデル内で、[シミュレーション][モデル コンフィギュレーション パラメーター] を選択します。左のペインで [データのインポート/エクスポート] を選択します。

  2. 右側のペインの [時間] および [出力] チェック ボックスをオフにします。

  3. [信号のログ] チェック ボックスをオンにします。

  4. [ワークスペース データのログをシミュレーション データ インスペクターに記録] チェック ボックスをオンにします。

  5. [OK] をクリックします。

保存する信号の選択

Simulink データ インスペクターに表示する信号を特定し、名前がない場合は名前を付けて、ログ パラメーターを設定します。

  1. Inside Temperature 信号線を右クリックして [プロパティ] を選択します。

  2. [信号名] ボックスで「Measured Room Temperature」と入力します。[信号データのログ] チェック ボックスをオンにします。ログ バッジ が信号線の上に表示されます。

  3. これらの信号に名前を付け、ログを選択します。

    信号の位置信号名
    出力端子 2 からの屋外温度Measured Outside Temperature
    Room サブシステムの出力端子からの室温Room Temperature

シミュレーションの実行

データをインポートし、信号に対してデータのログを有効にすると、シミュレーションを実行できます。

  1. シミュレーション用に準備したモデルを使用するかモデル例を開きます。MATLAB コマンド ウィンドウで次を入力します。

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

  2. モデル内で、[シミュレーション][モデル コンフィギュレーション パラメーター] を選択します。左側のペインで [ソルバー] を選択します。[終了時間]24 (時間)、[タイプ][可変ステップ][ソルバー][ode45] に設定します。[OK] をクリックします。

  3. [実行] ボタン をクリックします。

    モデル シミュレーションが、0.024.0 時間の間 root import block からの屋外温度データを入力として使用して実行されます。

シミュレーション結果と測定システム データの比較

Simulink データ インスペクターを使用してシミュレートした出力信号を測定データと比較します。

  1. Simulink エディターのツール バーで、[シミュレーション データ インスペクター] ボタン をクリックします。

    モデルをシミュレーションするたびに、[実行] ペインに別の実行の様子が表示されます。

  2. すべての信号のチェック ボックスをオンにします。信号を選択するとグラフにプロットが描画されます。

    一番上の信号は Measured Room Temperature です。中央の信号はシミュレーションの Room Temperature です。一番下の信号は Measured Outside Temperature です。

モデルへの変更の特定

モデルに対する明確な変更はサーモスタットのヒステリシスです。シミュレーションの室温は温度の指定値である 20 度前後の 18 ~ 22 度で変動します。測定した室温は同じ指定値を使用して 20 ~ 25 度で変動します。

  1. Thermostat サブシステム内で Relay ブロックを開きます。

  2. 室温と指定値との差分は 0 なので、[スイッチオン ポイント]2 から 0 に変更します。

  3. [スイッチオフ ポイント]-2 から -5 に変更します。室温が指定値より 5 度高い場合、ヒーターをオフにするようにします。指定値は室温より 5 度低くなっています。

シミュレーション間での結果の比較

シミュレーション データ インスペクターを使用して、異なるモデル パラメーターを使用する 2 つのシミュレーション間の相違点を比較します。この比較は、変更によってモデルの精度が改善されたことを示します。

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

  2. シミュレーション データ インスペクターを開きます。

  3. 実行の左側にある矢印を選択して、ログ信号のリストを展開します。[Run1] について、[Measured Outside Temperature] チェック ボックスおよび [Measured Room Temperature] チェック ボックスをオンにします。[Run2] について、[Room Temperature] チェック ボックスをオンにします。

  4. 信号を確認します。シミュレートした室温の最小値と最大値が測定した室温値と一致します。

シミュレーション結果のレポートとプロット

シミュレーション データ インスペクターからレポートとプロットを作成します。

  1. シミュレーション データ インスペクターのツール バーで [レポートの作成] をクリックします。

  2. [レポートの作成] ダイアログ ボックスで [信号の検証] を選択します。[レポートの作成] をクリックします。レポートが Web ブラウザーで開きます。

  3. レポートを表示します。

  4. シミュレーション データ インスペクターで [Figure に送信] をクリックします。シミュレートした信号のプロットが MATLAB Figure ウィンドウで開きます。

関連するトピック

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