© 2001 Juan Carlos Orozco
For MatPLC project. Uses GPL licence.
The purpose of this project is to demonstrate the capabilities of the MatPLC control using a realistic example. We will put more enphasis in the control part of the machine instead of the exact phisical properties. The project will include the simulation of the plant, for this we will use some simplified models for each part of the machine. The simulation part will also run on the MatPLC plataform.
This oven is a 3 heating zone oven. The material to be heated is trasported with a belt that goes through the 3 heating zones. Each zone is heated using hot air that recirculates in each zone. The air is heated using radiators that radiate the heat of the thermal fluid that flows through the radiator pipes. The thermal fluid is heated using a gas combustion thermal liquid heater. The thermal fluid is continuosly flowing in a primary circuit, ech radiator has a three way valve that controls the flow in the secondary circuits that go through the radiators. Therefore we will have three secondary circuits one for each zone. This three way valves are the ones that control the heat in the recirculating air of each zone.
We will need to control the temperature of the heater, the temperature of the the recirculating air in each zone and the speed of the belt.
Oven
Belt Motor. This motor will have a speed drive system that receives a 0 to 10V command that is proportional to 0 to MaxSpeed.
Hot Air Blowers. This Motors work in a On-Off mode.
Three Way Valves. Proportional valves to control the thermal liquid flow through the radiators.
Heater
Primary Circuit Thermal Fluid Pump. This motor will work in a On-Off mode.
Gas and Air Valve. Proportional valve to controll the amount of gas and combustion air that will flow to the burner.
Combustion Air Fan. This motor will work in a On-Off mode.
Ignition Spark. To ignite the oven.
Oven
Belt Speed Feedback. This reading is obtained from a anolog output of the belt drive.
Air Presure Sensors. Each Zone has an Air Pressure sensor to monitor that the blower is working.
Zone Temperature Sensor. Each zone has an air temperature sensor.
Heater
Primary Circuit Thermal Fluid Temperature.
Flame Detector. For safety digital 1/0 output.
High Fluid Temperature Switch. For safety digital 1/0 output.
Combustion Air Fan. This motor will work in a On-Off mode.
We will divide the project in four sections:
Heater Control
Oven Control
Heater Simulation
Oven Simulation
To have less variable definitions, we will place the values of the sensors in the simulation section and the values of the actuators in the control section.
|
Name |
Description |
Type |
Unit |
Default |
|---|---|---|---|---|
|
Heater Control |
|
|
|
|
|
ControlPeriod |
The period of the control could be different than the period for the simulation. Normally the period for the simulation should be equal or smaller than this period. |
int |
msec |
200 |
|
ThermalFluidTempSP |
Set point for the thermal fluid temperature |
Float |
Cº |
350 |
|
PrimCircuitFluidPump |
|
Bool |
|
0 |
|
GasAirValve |
This is the throthle for the combustion. 0 is low flame (not shut down), 100 is maximum flame. |
Float |
% |
0 |
|
CombustionAirFan |
|
Bool |
|
0 |
|
IgnitionSpark |
|
Bool |
|
0 |
|
Oven Control |
|
|
|
|
|
Zone1TempSP |
Set point for the temperature of the air in zone 1 |
Float |
Cº |
100 |
|
Zone2TempSP |
Set point for the temperature of the air in zone 2 |
Float |
Cº |
100 |
|
Zone3TempSP |
Set point for the temperature of the air in zone 3 |
Float |
Cº |
150 |
|
BeltMotorSpeed |
Speed command to the belt motor drive. |
Float |
m/sec |
0 |
|
BeltMotorSpeedSP |
Set point for the speed of the belt. |
Float |
m/sec |
0.5 |
|
HotAirBlowers |
|
Bool |
|
0 |
|
Z1ThreeWayValveFlow |
Thermal fluid flow rate to the radiator of zone 1. |
Float |
% |
0 |
|
Z2ThreeWayValveFlow |
Thermal fluid flow rate to the radiator of zone2. |
Float |
% |
0 |
|
Z3ThreeWayValveFlow |
Thermal fluid flow rate to the radiator of zone3. |
Float |
% |
0 |
|
Heater Simulation |
|
|
|
|
|
SimulationPeriod |
The simulation will be executed in a discrete way using this period time to recalculate all the variables on the system. |
int |
msec |
200 |
|
ThermalFluidSpecificHeat |
|
Float constant |
kcal/kg*Cº |
0.2 |
|
ThermalFluidMass |
|
Float constant |
kg |
1600 |
|
MaxHeaterHeat |
|
Float constant |
kcal |
25000 |
|
MinHeaterHeat |
|
Float constant |
kcal |
2500 |
|
PrimCircuitToAmbHeatK |
Coeficient to calculate the heat loss of the thermal fluid primary circuit to the Ambient. |
Float constant |
kcal/(sec*Cº) |
1 |
|
AmbientTemperature |
|
Float constant |
Cº |
20 |
|
ThermalFluidTemp |
|
Float |
Cº |
0 |
|
FlameDetector |
Used for safety. |
Bool |
|
0 |
|
HighTempInFluidSwitch |
Used for safety. |
Bool |
|
0 |
|
Oven Simulation |
|
|
|
|
|
RadiatorFluidMass |
The mass of the thermal fluid in each radiator. |
Float constant |
kg |
20 |
|
MaxFlowRateRadiator |
Flow rate of thermal fluid to the radiator when the three way valve flow is 100%. |
Float constant |
kg/sec |
1 |
|
AirSpecificHeat |
|
Float constant |
kcal/kg*Cº |
0.5 |
|
Zone1AirMass |
|
Float constant |
kg |
10 |
|
Zone2AirMass |
|
Float constant |
kg |
10 |
|
Zone3AirMass |
|
Float constant |
kg |
10 |
|
ProductMass |
Mass of the product in each zone. Assuming continuous product. |
Float constant |
kg |
15 |
|
ProductSpecificHeat |
|
Float constant |
kcal/kg*Cº |
0.4 |
|
RadiatorToAirHeatK |
Coeficient to calculate the heat transfer from the radiators to the recirculating air in each zone of the oven |
Float constant |
kcal/(sec*Cº) |
1 |
|
AirToProductHeatK |
Coeficient to calculate the heat transfer from the hot air to the product. |
Float constant |
kcal/(sec*Cº) |
1 |
|
Z1AirToAmbientHeatK |
Coeficient to calculate the heat loss from the hot air inside the zone 1 to the ambient. We could use this factor also to take into consideration the hot air that goes into the ambient and is replaced by fresh air from the ambient. |
Float constant |
kcal/(sec*Cº) |
1 |
|
Z2AirToAmbientHeatK |
Coeficient to calculate the heat loss from the hot air inside the zone 2 to the ambient. We could use this factor also to take into consideration the hot air that goes into the ambient and is replaced by fresh air from the ambient. |
Float constant |
kcal/(sec*Cº) |
1 |
|
Z3AirToAmbientHeatK |
Coeficient to calculate the heat loss from the hot air inside the zone 3 to the ambient. We could use this factor also to take into consideration the hot air that goes into the ambient and is replaced by fresh air from the ambient. |
Float constant |
kcal/(sec*Cº) |
1 |
|
ProductTempZone1 |
|
Float |
Cº |
0 |
|
ProductTempZone2 |
|
Float |
Cº |
0 |
|
ProductTempZone3 |
|
Float |
Cº |
0 |
|
Zone1Temp |
Temperature of the air in zone 1 |
Float |
Cº |
0 |
|
Zone2Temp |
Temperature of the air in zone 2 |
Float |
Cº |
0 |
|
Zone3Temp |
Temperature of the air in zone 3 |
Float |
Cº |
0 |
|
BeltMotorSpeedFeedback |
Speed feedback from the belt motor drive. |
|
|
|
|
Z1RadiatorTemp |
Temperature of the thermal fluid in the radiator at zone 1. |
Float |
Cº |
0 |
|
Z2RadiatorTemp |
Temperature of the thermal fluid in the radiator at zone 2. |
Float |
Cº |
0 |
|
Z3RadiatorTemp |
Temperature of the thermal fluid in the radiator at zone 3. |
Float |
Cº |
0 |
|
Z1AirPressure |
Air presure switch from zone 1. Used for security. |
Bool |
|
0 |
|
Z2AirPressure |
Air presure switch from zone 2. Used for security. |
Bool |
|
0 |
|
Z3AirPressure |
Air presure switch from zone 3. Used for security. |
Bool |
|
0 |
Mathematical Models
The models are not based on real physical units and are used only to simulate in a simplified way the plant to be able to control it.
Q = m*c*DeltaT. Where m - Mass, c - Specific heat.
Heater x BTUs 1 BTU = 0.252 kcal
Combustion Heat
We will assume a linear response from the Gas Air Valve plus an offset to simulate that the low flame is not zero because the flame never shuts down.
CombHeat = (GAValve * HeaterSpan + HeaterMin) * HeaterOn
Not finished...
Files
README.html – This file.
README.txt – How to build and run. It contains a simple explanation of the keyboard functions that are actually implemented.
matplc.config – Point definition, synchronization definition, dsp module definition (Heater).
vitrine.config – Configuration for displaying the variables on the console.
vitrine.txt – Background or static text for the console.
constants.c – Assign values to all constants.
extramath.c – Execution of math functions that could not be implemented in the dsp module at the moment.
kbd.c – Implementation of the keyboard interface.
Makefile – To compile the project.
demo – Perl script to execute the demo. This program executes all the individual modules that are needed for the demo.