This example shows how to model a temperature controller in Simulink® by using ladder logic. The example also showcases test case generation using Simulink Design Verifier™, C and ladder code generation, and ladder testbench generation.
The plcdemo_ladder_househeat_data.m file initializes data in the model workspace. To make changes, you can edit the model workspace directly or edit the file and re-load the model workspace. To view the model workspace, select MODELING > Model Explorer from the Simulink editor.
Open the plcdemo_ladder_househeat by using:
>> plcdemo_ladder_househeat_complete
When the model is opened, it loads the information about the house from the plcdemo_ladder_househeat_data.m file. The file does the following:
Defines the house geometry (size, number of windows)
Specifies the thermal properties of house materials
Calculates the thermal resistance of the house
Provides the heater characteristics (temperature of the hot air, ... flow-rate)
Defines the cost of electricity (0.09$/kWhr)
Specifies the initial room temperature (20 deg. Celsius = 68 deg. ... Fahrenheit)
Note: Time is given in units of hours. Certain quantities, like air flow-rate, are expressed per hour (not per second).

Set Point
Set Point is a constant block. It specifies the temperature that must be maintained indoors. It is 70 degrees Fahrenheit by default. Temperatures are given in Fahrenheit, but then are converted to Celsius to perform the calculations.
Range
Range is a constant block. This specifies the range around the Set Point for the room temperature to fluctuate. It is 5 degrees Fahrenheit by default. Hence, the room temperature will fluctuate between
and
where


Temperature Controller
Temperature Controller is a subsystem that has a AOI Runner container. Inside this temperature controller AOI Runner is a Ladder Diagram Function Block. Double click this block and select Logic routine to view the ladder logic for the temperature controller.
House
House is a subsystem which models the outside environment, house and the heater dynamics. Refer to the Thermal Model of House example for more information on these.
Ladder Logic
Open the Temperature Controller > Ladder Diagram Function Block > Logic Routine to view the ladder diagram for the temperature controller

The first rung calculates the
and
values based on the Set Point and Range inputs. The GEQ activates the TEMP_H coil if the Room Temperature is greater than or equal to the SET_H. Similarly, The LEQ activates the TEMPL_L coil if the Room Temperature is less than or equal to the SET_L value.
The lowermost rung turns the heater ON if the TEMP_L output is active and turns the hearer OFF if the TEMP_H output is active.
Click Run button to start simulation. Open HMI and use the following controls:
Temperature Controller Settings: Allows changing the Set Point and Range input values.
Ambient Temperature: Allows changing the average outside temperature and the range of its variation.
Room Temperature: Displays the heater status, and the inside and outside temperature graphs.
Preprocess the Simulink model for SLDV Test Case generation by executing the following command in the MATLAB Command Window:
>> plcladderoption (gcs, 'SLDV', 'on')
Open the Temperature Controller Subsystem and right click on the AOI Runner Block named Temperature Controller. Select Design Verifier > Generate test case for subsystem.
Ensure that an ert.tlc is selected in the Code Generation tab of the Model Configuration Parameters. Preprocess the simulink model for C/C++ code generation by executing the following command in the MATLAB Command Window:
>> plcladderoption(gcs, 'FastSim', 'on');
Open the Temperature Controller Subsystem and right click on the AOI Runner Block named Temperature Controller. Select C/C++ Code > Build This Subsystem.
Open ladder tank control testbench model:
>> plcdemo_ladder_househeat_tb
Select the Temperature Controller/ Temperature Controller Runner block and right-click PLC Coder->Generate Code for Subsystem to generate ladder code.
To generate testbench, select the Generate testbench for subsystem option in the PLC Configuration Parameters Dialog and generate code.