Documentation

Model a Dynamic System

Model Overview for This Tutorial

This tutorial shows how to model a dynamic system using Simulink® software. The completed model is a house heating system that includes a heater (plant), thermostat (controller), and room (environment). In the MATLAB® Command Window, enter

open_system([matlabroot,'/help/toolbox/simulink/examples/ex_househeat_modeling'])
or click ex_househeat_modeling to open and review the model you will build.

Define a House Heating System

Define requirements and mathematical equations. Collect data for model parameters and validating the simulation results. See Basic Modeling Workflow: Define System.

Determine Modeling Goals

Before designing a model, consider your goals and requirements. The goals for modeling the house heating system are:

  • Observe how the changing outdoor temperature affects the indoor temperature.

  • Using experimentally measured outdoor and indoor temperatures, compare simulation results with measured values.

Identify System Components

The house heating system in this tutorial defines a heating system and its relationship to a room. It includes:

  • Thermal characteristics of a house

  • Thermal characteristics of a heater

  • A thermostat to control the heater

  • Outdoor environment

  • Indoor environment

After you select a thermostat setting, the thermostat turns the heater on and off depending on the difference between the outside temperature and the room temperature.

The model for this system includes three components: heater, thermostat, and room.

Define System Equations

Three variables define the house heating model:

  • Thermal energy transferred from the heater (Qgain) to a room

  • Thermal energy transferred from the room (Qloss) to the outdoor environment

  • Temperature of the room (Troom)

A differential equation defines each of the variables, but since heat transfer is defined in terms of changing temperature, only room temperature is a state variable.

Rate of Heat Gain Equation

The temperature of the air in the heater is Theater and the room temperature is Troom. Thermal energy gain to the room is by convection of heated air from the heater. Heat gain for a mass of air in the heater mheaterairis

Qgain=mheateraircair(TheaterTroom).

A fan takes room air, and passes it through the heater and back to the room. The rate of thermal energy gain from the heater is

dQgaindt=dmheaterairdtcair(TheaterTroom).

Since the mass of air per unit time from the heater is constant, replace dmheaterair/dtwith a constant Mheaterair and simplify the equation to

dQgaindt=Mheateraircair(TheaterTroom).

Rate of Heat Loss Equation

Thermal energy loss from the room is by conduction through the walls and windows:

Qloss=kA(TroomToutside)tD.

The rate of thermal energy loss is

dQlossdt=kA(TroomToutside)D.

Replacing kA/D with 1/R where R is the thermal resistance simplifies the equation to

dQlossdt=(TroomToutside)R.

Changing Room Temperature Equation

Define the rate of temperature change in the room by subtracting the rate of heat loss from the rate of heat gain:

dTroomdt=1mroomaircair(dQgaindtdQlossdt).

Collect Data

Most of the parameter values needed for the house heating model are published in standard property tables. The flow rate for the heater is from a manufacturer data sheet.

List the variables and coefficients from your equations and check for dimensional consistency between the units. Since the unit of time for the model is hours, convert published values for the thermal property of materials from units of seconds to hours.

Equation Variables and Constants.  You can use the constant names and values in this table when building the model.

Equation Variable or CoefficientDescriptionUnits
AArea of wall or window surface

A_wall = 914, A_window = 6

square meter
DDepth of wall or window

D_wall = 0.2, D_window 0.01

meter
QThermal energy transferredjoule
dQ/dtRate of thermal energy transferredjoule/hour
kThermal conductivity; property of a material to conduct heat transfer

k_fiberglass = 136.8, k_glass = 2808

joule/meter· hour· degree
rThermal resistivity; property of a material to resist heat transfer

r = 1/k

meter· hour· degree/joule
RThermal resistance

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

hour· degree/joule
mMass of air in the room or heater

m_room_air = 1470

The mass of the heater m_heater_air is not needed for this model.

kilogram
dm/dtRate of air mass passing through the heaterkilogram/hour
MConstant rate of air mass passing through the heater

M_heater_air = 3600

kilogram/hour
cSpecific heat capacity

c_air = 1005.4

joule/kilogram· degree
TheaterConstant air temperature from heater

T_heater = 50

degree Celsius
TroomAir temperature of room

Initial air temperature of room T_roomIC = 20

degree Celsius

Model a House Heating System

Model the top-level structure and individual components. Organize your model into a hierarchical structure that corresponds to the components of the system. See Basic Modeling Workflow: Model System.

Model Top-Level Structure

At the top level of the house heating model, use Subsystem blocks to organize your model and create the structure. The model includes the subsystems Thermostat, Heater, and Room.

  1. From the MATLAB Toolstrip, click the Simulink button , or in the Command Window, enter

    simulink
  2. Click the Blank Model template, and then click the Create Model button.

  3. From the Simulink Editor toolbar, click the Library Browser button .

  4. Add Subsystem blocks. Drag three Subsystem blocks from the Ports & Subsystems library to the new model in the Simulink Editor.

  5. Open a Subsystem block. Double-click the block.

    Each new Subsystem block contains one Inport (In1) and one Outport (Out1) block. These blocks define the subsystem interface with the next higher level in a model hierarchy.

    Each Inport block creates an input port on the Subsystem block, and each Outport block creates an output port. Add more blocks for additional input and output signals.

  6. On the Simulink Editor toolbar, click the Up to Parent button to return to the top level. Rename the Subsystem blocks as shown. Double-click a block name and type the new name.

Model Heater Component

Let's start by modeling the heater system component. The heater model:

  • Takes the current temperature from the room and a control signal from the thermostat as inputs

  • Calculates the heat gain from the heater

  • Outputs the heat gain when the room temperature is lower than the selected room temperature

To model the heater subsystem, model the Rate of Heat Gain Equation with Simulink blocks:

dQgaindt=Mheateraircair(TheaterTroom).

Subtract Room Air Temperature from Heater Air Temperature.  The temperature difference is the current room temperature subtracted from the constant temperature of the heater (T_heater). See Equation Variables and Constants.

  1. Open the Heater subsystem.

  2. In the Heater subsystem, type Sum to display a list of blocks with Sum in the name. Double-click the Sum block on the list. When prompted for a list of signs, type |-+ to place - and + input ports on the block, and press Enter.

  3. Add a Constant block to model the constant air temperature from the heater. Set the block Constant value parameter to T_heater. You will define the value of T_heater in the Model Workspace.

  4. Add an Inport block to connect the room temperature signal to another part of your model.

  5. Rename the blocks and connect them as shown in the figure.

  6. Add labels to the signal lines to help trace model components to the equations and model requirements. Double-click above a signal line and enter a label.

Multiply Temperature Difference by Heat Gain Per Degree.  The heat gain per degree is the constant rate of mass from the heater (M_heater_air) multiplied by the specific heat capacity of air (c_air). See Equation Variables and Constants.

  1. Add a Gain block to the Heater subsystem. Set the Gain parameter to M_heater_air*c_air. You will define the values of these variables in the Model Workspace.

  2. Connect the output of the Sum block to the input of the Gain block.

  3. Rename the Gain block to Heat Gain/Degree.

Model a Heater Switch.  The thermostat sends an on/off signal equal to 1 (on) or 0 (off) to the heater. Because the input signal is binary, you can use a Multiplier block to model a switch.

  1. Remove the connection between the In1 and Out1 blocks. Select the line and press Delete.

  2. Add a Product block. Resize the block vertically to align the block in your diagram. Connect the In1 block to the first block input and the block output to the Out1 block. Rename the blocks as shown.

  3. Connect the output from the Gain block to the second input. Move all the connected blocks together. Draw a selection box around the blocks you want to move, and then drag them to the new location.

  4. Rename blocks and add labels to signals as shown in the figure.

    The Inport and Outport blocks create ports that connect this subsystem to other subsystems in your model.

Define Heater Model Parameters.  You can define variables in the MATLAB Workspace and then enter their names in the block parameter dialog boxes. However, a more robust method is to use the Simulink Model Workspace because variable values are saved with the model.

  1. In the Simulink Editor, select View > Model Explorer > Model Workspace.

  2. In Model Explorer, select Add > MATLAB Variable. In the middle pane, click the new variable Var and enter the variable name for a block parameter. For this example, enter T_heater.

  3. In the right pane, in the Value box, enter the value of the variable. For this example, enter 50 degrees. Click Apply.

  4. Using the same approach, add the variable M_heater_air with a value of 3600 kilogram/hour and c_air with a value of 1005.4 joule/kilogram· degree.

Prepare Heater Model for Simulation.  Set up the heater model for simulation. Think about the expected behavior and how you can test that behavior with a simulation. When the thermostat output is 1, the expected output from the gain is (50 – 25) x 3600 × 1005.3 = 9.05 × 107.

  1. From the Heater subsystem, click the Up to Parent button to navigate to the top level of your model. You can resize the Heater block as shown in the figure.

    Notice the Heater block has a second input port and that each port corresponds to an Inport block or Outport block in the subsystem.

  2. Add a Constant block to represent the room temperature, and set the value to 25 (degrees Celsius). Add a Step block for a temporary Heater (on/off) signal. Set Step time to 4.

  3. Add a Scope block and connect it to the Heat Flow output. Connect the rest of the blocks as shown.

Simulate Heater Model and Evaluate Results.  Use the default simulation settings to validate your model design.

  1. Open the Configuration Parameters dialog box. In the Simulink Editor, select Simulation > Model Configuration Parameters.

    Verify that Stop time is set to 10, Type is set to Variable-step, and Solver to ode45.

  2. Double-click the Scope block to open it.

  3. Simulate the model. Select Simulation > Run, or click the Run button .

    As the simulation runs, the Scope plots the results.

  4. View the scope trace. Right-click the y-axis and select Configuration Properties properties. On the Display tab, set Y-limits (Minimum) to -2e7 and Y-limits (Maximum) to 12e7.

  5. Determine if this result is what you expected.

    When the heater on/off signal flips from 0 to 1 at 4 hours, the heater outputs 9.05 × 107 joule/hour. The simulation validates the expected behavior.

Model Thermostat Component

You can model a thermostat without using system equations. Requirements for this component:

  • When the room temperature is below the set temperature, the control signal equals 1. When the room temperature is above the set temperature, the control signal equals 0.

  • There is a hysteresis of 2 degrees Celsius around the temperature set point. If the thermostat is on, the room temperature must increase 2 degrees above the set temperature before turning off.

This component models the operation of a thermostat, determining when the heating system is on or off. It contains only one Relay block but logically represents the thermostat in the model.

Subtract Set Room Temperature from Room Temperature.  If the set room temperature is warmer than the room temperature, the thermostat model sends an "on" signal to the heater model. To determine if this is the case, begin by subtracting the room temperature from the set temperature.

  1. Open the Thermostat subsystem. Add a Sum block to it. Set the List of signs parameter to |+– to place + and – input ports on the block.

  2. Connect the Inport block to the + input of the Sum block. The Inport block sets the room temperature.

  3. Add a second Inport block and connect it to the – input of the Sum block. This second Inport block is the current room temperature from the room subsystem. Move the output port to the top of the block. Right-click the block and select Rotate & Flip > Counterclockwise. If you want, you can reshape the block as shown in the figure by dragging the handles.

  4. Rename the blocks as shown.

Model Thermostat Signal.  Model the signal from the thermostat with a hysteresis value of 2 s Celsius.

  1. In the Thermostat subsystem, add a Relay block. Set the Switch on point parameter to 2, and the Switch off point parameter to -2.

  2. Connect and rename the blocks as shown in the figure.

Prepare Thermostat Model for Simulation.  Prepare the Thermostat subsystem for simulation. Think about the expected behavior of the thermostat and how you can test that behavior with a simulation. When the room temperature rises above the thermostat setting by 2 degrees, the thermostat output is 0. When the room temperature moves below the thermostat setting by 2 degrees, the thermostat output is 1.

  1. From the Thermostat subsystem, click the Up to Parent button to navigate to the top level of your model. Resize the Thermostat block as shown in the figure.

    Notice the Thermostat subsystem now has a second input port. Each input port corresponds to an Inport block in the subsystem.

  2. Add a Constant block for setting the room temperature. Set the Constant parameter to 25 (degrees Celsius).

  3. Add a Sine Wave block to represent the changing room temperature. Set the Amplitude parameter to 10, the Bias to 20, and the Frequency to 0.5. These parameters give a variation above and below the temperature set point of 25.

  4. Add a Floating Scope block to view signals.

  5. Connect the blocks as show in the figure.

  6. Double-click the Floating Scope. From the toolbar, click the Signal Selector button .

  7. In the Signal Selector dialog box, select the Constant, Sine Wave, and Thermostat check boxes, and then click Close.

Simulate Thermostat Model and Evaluate Results.  Use the default simulation settings to validate your model design.

  1. Open the Configuration Parameters dialog box. In the Simulink Editor, select Simulation > Model Configuration Parameters. Verify Stop time is set to 10, Type to Variable-step, and Solver to ode45.

  2. Simulate the model. As the simulation runs, the Floating Scope plots the results.

  3. Open the Floating Scope to view the scope trace. Right-click the display and select Configuration Properties. Select the Display tab, and then set Y-limits (Minimum) to -2 and Y-limits (Maximum) to 35.

  4. Determine if this result is what you expected.

    Initially the relay is on, and the room temperature is below the set temperature. When the room temperature increases above the set temperature, the relay does not initially switch to 0 until the room temperature increases by 2 more degrees. Simulation validates the expected behavior.

Model Room Component

Inputs to the room component are heat flow from the heater component and the external air temperature. The room component uses these inputs to compute heat loss through the walls, heat loss through the windows, and the current room temperature.

To design the room subsystem, use the Rate of Heat Loss Equation and the Changing Room Temperature Equation.

Model Changing Room Temperature.  The rate of temperature change in the room (dTroom/dt) is defined by the equation

dTroomdt=1mroomaircair(dQgaindtdQlossdt).

The term dQgain/dt is a signal from the Heater subsystem.

  1. Open the Room subsystem block. In the Room subsystem, add a Sum block. Set the List of signs parameter to |+–.

  2. Connect In1 to the + input. The input is the heat gain (dQgain/dt) from the heater component. The – input connects to the heat loss (dQloss/dt) from the room.

  3. Add a Gain block. Set the Gain parameter to 1/(m_room_air*c_air). Connect the output of the Sum block to the input of the Gain block. Label signals as shown in the figure. Dotted signal lines are signals you will connect later.

Model Room Temperature.  The output of the Gain block is the change in room temperature (dTroom/dt). To get the current room temperature (Troom), integrate the signal.

  1. Add an Integrator block. Set the Initial condition parameter to T_roomIC.

  2. Connect the output of the Integrator block to Out1 as shown.

Model Heat Loss Through Walls and Windows.  This equation is the rate of thermal energy loss through the walls and windows:

dQlossdt=(TroomToutside)R.

  1. In the Room subsystem, add a Sum block. Set the List of signs parameter to |+–. Right-click the block and select Rotate & Flip > Flip Block.

  2. Click the signal line for Troom, press Ctrl, and then click and drag a branch signal line. Connect the line to the + input on the Sum block.

  3. Add another Inport block and connect it to the – input of the Sum block. Rename it to Outside Temperature.

  4. Add another Gain block. Set the Gain parameter to 1/R_equivalent. Right-click the block and select Rotate & Flip > Flip Block.

  5. Connect the blocks as shown in the figure.

Define Room Model Parameters.  You can define parameters in the MATLAB Workspace and then enter their names in the block parameter dialog boxes. However, a more robust method is to use the Simulink Model Workspace, which saves parameter values.

  1. In the Simulink Editor, select View > Model Explorer > Model Workspace.

  2. In the Model Explorer, select Add > MATLAB Variable.

  3. In the middle pane, click the new variable Var and enter the name m_room_air. In the right pane, enter the value 1470 (kilograms).

  4. Add the variables T_roomIC = 20 (degrees Celsius) and R_equivalent = 4.329e-7 (hour· degree/joule).

  5. Click Apply.

Prepare Room Model for Simulation.  Prepare the Room subsystem for simulation. Think about the expected behavior and how you can test that behavior with a simulation. When the heater is off (Heat Gain = 0) and the initial temperature of the room (20) is above the outside temperature (10), heat loss should continue until the room temperature is equal to the outside temperature.

  1. From the Room subsystem, click the Up to Parent button to navigate to the top level of your model. Resize the Room block as shown in the figure.

    The Room block now has a second input port. Each inport port corresponds to an Inport block in the subsystem.

  2. Add a Constant block and connect it to the Heat Gain input. Set the Constant value parameter to 0 (degrees Celsius) to mean that the heater is turned off.

  3. Add another Constant block and connect it to the Outside Temperature input. Set the Constant value parameter to 10 (degrees Celsius).

  4. Add and connect a Scope block to view the changing room temperature.

Simulate Room Model and Evaluate Results  

  1. In the toolbar, set the Simulation stop time to 20.

  2. Simulate the model.

  3. Open the Scope and click the Autoscale button to view the scope trace.

  4. Determine if this result is what you expected.

    The room temperature starts at the initial room temperature set in the Integrator block. Because the heat gain is 0, the signal decays to the outside temperature (10). The simulation validates the expected behavior.

Prepare Room Model for Second Simulation.  Set the constant outside temperature to a value above the initial room temperature (20).

  1. In the Constant block that is connected to the Outside Temperature input, set Constant value to 30 (degrees Celsius).

Simulate Model and Evaluate Results  

  1. Simulate the model.

  2. Open the Scope and click the Autoscale button to view the scope trace.

  3. Determine if this result is what you expected.

    Room temperature starts at the initially set temperature of 20, but with the heater off (heat gain = 0) the room temperature rises to the outside temperature.

    This result was unexpected because you didn't explicitly model this behavior. However, the equation that models the heat loss also models the heat gain when the outside temperature is above the inside room temperature.

Integrate a House Heating Model

Connect model components, add realistic input, and then simulate the model behavior over time to validate the design. See Basic Modeling Workflow: Integrate Model.

Integrate Heater and Thermostat Components

To simulate the heater and thermostat subsystems without the Room subsystem, you need a signal for the changing room temperature. Use a Constant block to set the thermostat temperature and a Sine Wave block for a realistic outside temperature signal.

Prepare Model for Simulation  

  1. Open your model with the completed subsystems. Remove any blocks you added to test the separate components.

  2. Open the Room subsystem. Double-click the Inport block labeled Heat Gain. In the Inport dialog box, set Port number to 2. The Heat Gain port moves to the bottom of the Room subsystem.

  3. Connect the Heater (on/off) signal from the Thermostat subsystem output to the Heater subsystem input.

  4. Add a Constant block to set the thermostat room temperature. Set Constant value to 20 (degrees Celsius).

  5. Add a Sine Wave block to represent the changing room temperature. Set the parameters Amplitude to 10 (degrees Celsius), Bias to 15, and Frequency to 0.5.

  6. Add a Floating Scope block and connect the blocks as shown in the figure.

  7. On the Floating Scope window, click the Parameters button . In the Main tab, click the Layout button. Select two boxes. A second empty graph appears below the first.

  8. From the toolbar, click the Signal Selector button .

  9. In the Signal Selector dialog box, and from the Select signals for object drop-down list, select Axes 1. Select the Heater check box.

  10. From the Select signals for object drop-down list, select Axes 2. Select the Constant and Sine Wave check boxes.

  11. In the Floating Scope window, right-click the top display and select Configuration Properties. Set Y-limits (Minimum) to 0 and Y-limits (Maximum) to 20e7.

  12. Right-click the bottom display and select Configuration Properties. Set Y-limits (Minimum) to 0 and Y-limits (Maximum) to 35.

Simulate Model and Evaluate Results.  Simulate the model using the default stop time of 10 and the default solver ode45.

  1. Simulate the model.

  2. Open the Floating Scope and view the simulation results. The top graph is the heater gain while the lower graph shows the changing room temperature modeled with a sine wave.

      Note:   If you get an error indicating Simulink cannot display a signal due to block reduction optimization, clear the Block reduction check box in the Configuration Parameters dialog box.

  3. Determine if this result is what you expected.

    From about 0 to 1.5 hours, the heater is turned on. Heat gain is not constant but changes because heat gain is a function of the difference between the heater air temperature and the room air temperature. From 1.5 to 5.6 hours, the heater is turned off and the heat gain (top graph) is zero. The simulation confirms the expected behavior.

Integrate Room Component

To simulate the Heater and Thermostat subsystems with the Room subsystem, you need a signal for the changing outside temperature. Simulating the model allows you to observe how the thermostat setting and outdoor temperature affect the indoor temperature.

Prepare Model for Simulation  

  1. Open your model with completed subsystems. Remove any blocks you added to test the separate components.

  2. Connect the subsystems as shown.

  3. Add a Constant block for setting the room temperature. Set Constant value parameter to 20 (degrees Celsius).

  4. Add a Sine Wave block to represent the changing outside temperature. Set Bias to 12, Amplitude to 5, Frequency to 2*pi/24, and Phase to 180.

  5. Add a Floating Scope block to view simulation results.

  6. In the Floating Scope, click the Signal Selector button . In the Signal Selector dialog box, select the Room (room temperature) and Sine Wave (outside temperature) signals.

  7. In the Floating Scope, right-click the graph and select Configuration Properties. Set Y-limits (Minimum) to 5 and Y-limits (Maximum) to 25.

Simulate Model and Evaluate Results  

  1. Open the model matlabroot\help\toolbox\simulink\examples\ex_househeat_modeling_prepared.slx or use the model you prepared for simulation.

  2. Set the simulation stop time to 24 (hours) to represent a day.

  3. Simulate the model.

  4. Open the Floating Scope and view results.

  5. Determine if the simulation result matches your expectation.

    When the outside temperature is below the set room temperature, the room temperature fluctuates 2 degrees above and below the set temperature. Since the thermostat subsystem includes a 2 degree hysteresis, this simulation result is expected.

Refine Model Parameters.  With Simulink models, you can interactively change model parameters and then observe changes in the behavior of your model. This approach allows you to evaluate your model quickly and validate your design.

Change the outside temperature in the Sine Wave block so that upper values are above the thermostat temperature.

  1. In the Sine Wave dialog box, set Bias to 19 and Amplitude to 5. These settings show what happens when outside temperature is higher than inside temperature.

  2. Simulate the model and view the results.

  3. Determine if the results match your expectations.

    When the outside temperature is above the set thermostat temperature, the room temperature is about equal to the outside temperature. In this case, heat loss is a loss of heat from the outside environment into the room.

Model External Interface

Model the external interface for further testing and possible use in a larger model. In Simulink, you model the external interfaces using Inport and Outport blocks. For the house heating model, add Inport blocks to read data from the outside temperature and thermostat set temperature into your model. Add Outport blocks to connect the outside temperature and room temperature to a larger model or to visualize results.

After validating the model design, verify the correctness of the model by comparing simulations with real system data. See Simulate a Dynamic System.

More About

Was this topic helpful?