Advanced Thermal Management For Internal Combustion Engines PDF
Advanced Thermal Management For Internal Combustion Engines PDF
Advanced Thermal Management For Internal Combustion Engines PDF
TigerPrints
All Theses Theses
8-2007
Recommended Citation
Mitchell, Thomas, "Advanced Thermal Management for Internal Combustion Engines" (2007). All Theses. 179.
https://tigerprints.clemson.edu/all_theses/179
This Thesis is brought to you for free and open access by the Theses at TigerPrints. It has been accepted for inclusion in All Theses by an authorized
administrator of TigerPrints. For more information, please contact [email protected].
ADVANCED THERMAL MANAGEMENT FOR INTERNAL
COMBUSTION ENGINES
A Thesis
Presented to
the Graduate School of
Clemson University
In Partial Fulfillment
of the Requirements for the Degree
Master of Science
Mechanical Engineering
by
Tom Mitchell
August 2007
Accepted by
Dr. John Wagner, Committee Chair
Dr. Darren Dawson
Dr. Gregory Mocko
ABSTRACT
controllable actuators (e.g., smart thermostat valve, variable speed water pump, and
improve engine temperature tracking over most operating ranges. To optimize advanced
control engine temperature. The design and placement of cooling components should
In this research project, two distinct vehicle thermal management issues were
explored. First, a set of nonlinear control architectures were proposed for transient
prescribed temperature profiles and minimizing electrical power usage. Second, four
factory, two-way valve, three-way valve, and no valve. In both studies, experimental
events and examine the effectiveness of each valve configuration and control designs.
ii
A series of four real time thermal management controllers (backstepping robust,
robust, normal radiator, and adaptive) were developed. Although they performed
had the best performance when compared to the others. The test results demonstrate that
in the normal radiator operation, steady state temperature errors may be reduced to less
then 0.2°K while consuming an average instantaneous power of 19.334 watts. The
backstepping robust control had similar temperature tracking with the lowest overall
instantaneous power consumption of 16.449 watts. Results for the thermostat valve study
seconds, 0.175°K, and 24.31 watts, respectively. In contrast, the factory wax-based
thermostat with emulated mechanical actuators configuration never reached its operating
temperature and consumed nearly four times the instantaneous power at 109.37 watts.
Some recommendations for future work include in-vehicle and dynamometer testing of
iii
DEDICATION
I dedicate this work to my wife, Kate Mitchell. Your patience, love and support
iv
ACKNOWLEDGMENTS
I would first like to thank my advisor, Dr. John R. Wagner for his guidance
throughout this process. I would also like to thank Dr. Darren Dawson and Dr. Greg
Salah deserves many thanks and recognition for assisting with this research and enduring
my continuous ranting.
Special thanks must go to Michael Justice, Jamie Cole, and Gerald Nodine for the
immense amount of knowledge, wisdom and help they provided. Rest assured I will be
leaving Clemson with the skill necessary to start a small displacement pressure washer.
Also, the support of fellow graduate students Jesse Black, Erhun Iyasere, Peyton Frick
and Ryan Lusso was much appreciated and allowed me to see the light at the end of the
friends was necessary in guiding me through this period in my life and deserves my
v
TABLE OF CONTENTS
Page
ABSTRACT........................................................................................................ ii
DEDICATION .................................................................................................... iv
ACKNOWLEDGMENTS ................................................................................... v
LIST OF FIGURES............................................................................................. ix
NOMENCLATURE LIST................................................................................... x
CHAPTER
1. INTRODUCTION ................................................................................ 1
vi
Table of Contents (Continued)
Page
6. CONCLUSION .................................................................................... 53
APPENDICES .................................................................................................... 58
REFERENCES.................................................................................................... 95
vii
LIST OF TABLES
Table Page
viii
LIST OF FIGURES
Figure Page
3.2 First experimental test for the robust backstepping controller ................ 20
3.5 First experimental test for the normal radiator operation ....................... 24
3.6 Second experimental test for the normal radiator operation ................... 25
5.5 Valve absent configuration with radiator baffles experimental results ... 48
ix
NOMENCLATURE LIST
α control gain
x
Ess steady state error [ºK]
εe valve constant
εr valve constant
xi
Ke positive control gain
m additional coolant mass flow rate control input for mo in radiator [kg/sec]
xii
P2 water pump power sensor
ρ control gain
ρe positive constant
xiii
to initial time [sec]
Tvr control input that affects the radiator loop mass flow rate [ºK]
τ constant of integration
ue control input
ur control input
xiv
Vo fluid volume per pump rotation [m3/Rad]
xv
CHAPTER ONE
INTRODUCTION
The internal combustion engine has undergone extensive developments over the
past three decades with the inception of sophisticated components and integration of
2004). For instance, stratified charge and piston redesign offer improved thermal
efficiency through lean combustion, directly resulting in lower fuel consumption and
higher power output (Evans, 2006). Further, variable valve timing adjusts engine valve
events to reduce pumping losses on a cycle-to-cycle basis (Mianzo and Peng, 2000; Hong
et al., 2004). However, the automotive cooling system has been overlooked until
recently (Couëtouse and Gentile, 1992; Wagner et al., 2002a). Although the
conventional automotive cooling system (i.e., wax thermostat mechanical water pump,
and mechanical radiator fan) has proven satisfactory for many decades, servomotor
controlled cooling components have the potential to reduce fuel consumption, parasitic
losses, and tailpipe emissions (Brace et al., 2001; Melzer et al., 1999; Redfield et al.,
2006; Choukroun and Chanfreau, 2001). This action decouples the water pump and
radiator fan from the engine crankshaft. Hence, the problem of having over/under
cooling, due to the mechanical coupling, is solved as well as parasitic losses reduced
which arose from operating mechanical components at high rotational speeds (Chalgren
(1999). Chanfreau et al. (2001) studied the benefits of engine cooling with fuel economy
and emissions over the FTP drive cycle on a dual voltage 42V-12V minivan. Cho et al.
(2004) investigated a controllable electric water pump in a class-3 medium duty diesel
engine truck. It was shown that the radiator size can be reduced by replacing the
mechanical pump with an electrical one. Chalgren and Allen (2005) and Chalgren and
Traczyk (2005) improved the temperature control, while decreasing parasitic losses, by
replacing the conventional cooling system of a light duty diesel truck with an electric
cooling system.
cooling system behavior and transient response must be analyzed. Wagner et al. (2001,
2002, and 2003) pursued a lumped parameter modeling approach and presented multi-
node thermal models which estimated internal engine temperature. Eberth et al. (2004)
descriptions were developed to describe the smart cooling system components. Henry et
al. (2001) presented a simulation model of powertrain cooling systems for ground
vehicles. The model was validated against test results which featured basic system
components (e.g., radiator, water pump, surge (return) tank, hoses and pipes, and engine
thermal load).
introduced by Setlur et al. (2005) to support controller studies. The proposed simplified
2
cooling system used electrical immersion heaters to emulate the engine’s combustion
process and servomotor actuators, with nonlinear control algorithms, to regulate the
temperature. In their experiments, the water pump and radiator fan were set to run at
constant speeds, while the smart thermostat valve was controlled to track coolant
temperature set points. Cipollone and Villante (2004) tested three cooling control
schemes (e.g., closed-loop, model-based, and mixed) and compared them against a
management system. The authors investigated improvements in the engine’s peak fuel
consumption and thermal operating conditions. Finally, Redfield et al. (2006) operated a
class 8 tractor at highway speeds to study potential energy saving and demonstrate engine
Aside from modeling and controller design, the thermostat valve configuration
and design has a large affect on the performance of thermal management systems. In
particular, the main function of the thermostat valve (Wanbsganss, 1999) is to control
coolant flow to the radiator. Traditionally, this is achieved using a wax-based thermostat
which is passive in nature (Allen and Lasecki, 2001) and cannot be integrated in an
engine management system (Wagner et al., 2002b). A smart thermostat valve offers
improved coolant flow control since it can be controlled to operate at optimal engine
3
circuit (Chastain and Wagner, 2006). Similarly, a solenoid controlled three-way valve
by the engine control module (ECM). In general, the valve design dictates its placement
in the cooling system since valve geometry contributes to the dynamics of the overall
cooling system. It should be noted that the thermostat valve may be located on the
engine block with internal passages for coolant flow or external to the block with
Thesis Organization
engines by presenting two studies on the topic. The first chapter consists of an
introduction to both studies. Chapter Two presents multiple control strategies for the
Systems. Experimental results are given in Chapter Three. Chapter Four discusses
thermostat valve configurations and how they apply to the engine warm-up condition:
Performance. The experimental results for this valve study are shown in Chapter Five.
Chapter six concludes this thesis. The Appendices present a Lyapunov-based stability
analysis, which was needed for the controller designs, as well as a complete
nomenclature list.
4
CHAPTER TWO
In this chapter, nonlinear control strategies are presented to actively regulate the
system has been implemented on a laboratory test bench that featured a smart thermostat
valve, variable speed electric water pump and fan, radiator, engine block, and a steam-
based heat exchanger to emulate the combustion heating process. The proposed
backstepping robust control strategy has been verified by simulation techniques and
presented to describe the automotive cooling components and thermal system dynamics.
The nonlinear tracking control strategies are introduced in Section 2.2. Section 2.3
behavior of the advanced cooling system. The system components include a 6.0L diesel
engine with a steam-based heat exchanger to emulate the combustion heat, a three-way
smart valve, a variable speed electric water pump, and a radiator with a variable speed
electric fan.
Cooling System Thermal Descriptions
A reduced order two-node lumped parameter thermal model (refer to Figure 2.1)
describes the cooling system’s transient response and minimizes the computational
burden for in-vehicle implementation. The engine block and radiator behavior can be
described by
The variable Qin and Qo represent the input heat generated by the combustion process
and the radiator heat loss due to uncontrollable air flow, respectively. An adjustable
double pass steam-based heat exchanger delivers the emulated heat of combustion at a
combustion process will generate this heat which is transferred to the coolant through the
P1
Te
T1
3-Way
T3 Te Valve
Engine Block
Figure 2.1: Advanced cooling system which features a smart valve, variable speed
pump, variable speed fan, engine block, radiator, and sensors (temperature, mass flow
rate, and power)
For a three-way servo-driven thermostat valve, the radiator coolant mass flow
rate, m& r (t ) , is based on the pump flow rate and normalized valve position as m& r = Hm& c
6
where the variable H ( t ) satisfies the condition 0 ≤ H (t ) ≤ 1 . Note that H (t ) = 1(0)
corresponds to a fully closed (open) valve position and coolant flow through the radiator
(bypass) loop. To facilitate the controller design process, three assumptions are imposed:
A1: The signals Qin (t ) and Qo (t ) always remain positive in (1) and (2) (i.e.,
Qin (t ), Qo (t ) ≥ 0 ). Further, the signals Qin (t ) and Qo (t ) , and their first two time
derivatives remain bounded at all time, such that
Qin (t ), Q& in (t ), Q
&& (t ), Q (t ), Q& (t ), Q
in o o
&& (t ) ∈ L .
o ∞
A2: The surrounding ambient temperature T∞ (t ) is uniform and satisfies
Te (t ) − T∞ (t ) ≥ ε1 , ∀t ≥ 0 where ε1 ∈ ℜ+ is a constant.
A3: The engine block and radiator temperatures satisfy the condition
Te (t ) − Tr (t ) ≥ ε 2 , ∀t ≥ 0 where ε 2 ∈ ℜ+ is a constant. Further, Te (0) ≥ Tr (0) to
facilitate the boundedness of signal argument.
This final assumption allows the engine and radiator to initially be the same temperature
(e.g., cold start). The unlikely case of Te (0) < Tr (0) is not considered.
position smart thermostat valve. The compact motor, with integrated external
connected to the valve’s piston. The governing equation for the motor’s armature
diav 1 dθ
= Vv − Rav iav − K bv v . (3)
dt Lav dt
d 2θv 1 dθ v dh
2
= −bv + K mviav + 0.5dN . Ap ∆P + c sgn (4)
dt Jv dt dt
7
Note that the motor is operated by a high gain proportional control to reduce the position
A computer controlled electric motor operates the high capacity centrifugal water
diap 1
dt
=
Lap
(
V p − Rap iap − K bpω p ) (5)
dω p
dt
=
1
Jp
(( )
− b p + R f Vo2 ω p + K mpiap . ) (6)
The coolant mass flow rate for a centrifugal water pump depends on the coolant density,
shaft speed, system geometry, and pump configuration. The mass flow rate may be
( )
computed as m& c = ρc ( 2π rbv ) where v ( t ) = rω p tan β . It is assumed that the inlet
radiator velocity, v ( t ) , is equal to the inlet fluid velocity and that the flow enters normal
to the impeller.
A cross flow heat exchanger and a dc servo-motor driven fan form the radiator
assembly. The electric motor directly drives a multi-blade fan that pulls the surrounding
air through the radiator assembly. The air mass flow rate going through the radiator is
dω f 1
dt
=
Jf
(
−b f ω f + K mf iaf − ρ a A f R f Vaf2 ) (7)
8
(( K )
0.3
where Vaf = mf η f ρa A f ) iaf ω f . The corresponding air mass flow rate is written
as m& f = β r ρ a A f Vaf + m& ram . The last term denotes the ram air mass flow rate effect due to
vehicle speed or ambient wind velocity. The fan motor’s armature current, iaf , can be
described as
diaf 1
dt
=
Laf
(
V f − Raf iaf − Kbf ω f . ) (8)
Note that a voltage divider circuit has been inserted into the experimental system to
measure the current drawn by the fan and estimate the power consumed.
desired engine block temperature, Ted (t ) . The controller’s main objective is to precisely
track engine temperature set points while compensating for system uncertainties (i.e.,
controlling the system actuators. Referring to Figure 2.1, the system servo-actuators are a
three-way smart valve, a water pump, and a radiator fan. Another important objective is
to reduce the electric power consumed by these actuators, PM (t ) . The main concern is
pointed towards the fact that the radiator fan consumes the most power of all cooling
system components followed by the pump. It is also important to point out that in (1) and
9
Backstepping Robust Control Objective
The control objective is to ensure that the actual temperatures of the engine,
Te (t ) , and the radiator, Tr (t ) , track the desired trajectories Ted (t ) and Tvr (t ) ,
while compensating for the system variable uncertainties Qin (t ) and Qo (t ) where ε e and
A4: The engine temperature profiles are always bounded and chosen such that their first
three time derivatives remain bounded at all times (i.e., Ted (t ), T&ed (t ), T&&ed (t ) and
T&&& (t ) ∈ L ). Further, T (t ) >> T at all times.
ed ∞ ed ∞
Remark 1: Although it is unlikely that the desired radiator temperature setpoint, Tvr (t ) ,
is required (or known) by the automotive engineer, it will be shown that the
radiator setpoint can be indirectly designed based on the engine’s thermal
conditions and commutation strategy (refer to Remark 2).
By adding and subtracting MTvr ( t ) to (1), and expanding the variables M = C pc mo and
m& r ( t ) = mo + m = H o m& c + Hm& c , the engine and radiator dynamics can be rewritten as
where η ( t ) was introduced in (10), and mo and H o are positive design constants.
10
Closed-Loop Error System Development and Controller Formulation
The open-loop error system can be analyzed by taking the first time derivative of
both expressions in (10) and then multiplying both sides of the resulting equations by Ce
and Cr for the engine and radiator dynamics, respectively. Thus, the system dynamics
described in (11) and (12) can be substituted and then reformatted to realize
Remark 2: The control inputs m ( t ) , Tvr ( t ) and m& f ( t ) are uni-polar. Hence,
commutation strategies are designed to implement the bi-polar inputs ue ( t )
and ur ( t ) as
ue sgn ( ue ) − 1 ue 1 + sgn ( ue ) F 1 + sgn ( F )
m= , Tvr = , m& f =
2C pc (Te − Tr ) 2M 2ε C pa ( Te − T∞ )
(15)
where F ( t ) = C pc m ( Te − Tr ) − ur . The control input, m f ( t ) is obtained
&
from (15) after m ( t ) is computed. From these definitions, it is clear that if
ue ( t ) , ur ( t ) ∈ L∞∀t ≥ 0 , then m ( t ) , Tvr ( t ) , m& f ( t ) ∈ L∞ ∀t ≥ 0 .
To facilitate the subsequent analysis, the expressions in (13) and (14) are
rewritten as
N% e = N e − N ed , N% r = N r − N rd . (17)
11
Further, the signals N e (Te , t ) and N r (Te , Tr , t ) are defined as
Based on (17) through (19), the control laws ue ( t ) and ur ( t ) introduced in (16) are
designed as
ue = K e e, ur = − K rη + ur (20)
where ur ( t ) is selected as
relationships of (15) to be calculated which provides m& r ( t ) and m& f ( t ) . Finally, the
voltage signals for the pump and fan are prescribed using m& r ( t ) and m& f ( t ) with a priori
empirical relationships.
Stability Analysis
management system will be stable when applying the control laws introduced in (20) and
(21).
12
Theorem 1: The controller given in (20) and (21) ensures that: (i) all closed-loop signals
stay bounded for all time; and (ii) tracking is uniformly ultimately bounded
(UUB) in the sense that ( e ( t ) ≤ ε e , η ( t ) ≤ ε r as t → ∞ ).
The electric radiator fan must be controlled harmoniously with the other thermal
backstepping robust control strategy, a virtual reference for the radiator temperature,
Tvr ( t ) , is designed to facilitate the radiator fan control law (refer to Remark 1). A
tracking error signal, η ( t ) , is introduced for the radiator temperature. Based on the
radiator’s mathematical description in (2), the radiator may operate normally, as a heat
exchanger, if the effort of the radiator fan ε C pa m& f (Te − T∞ ) , donated by ur ( t ) in (22), is
set to equal the effort produced by the water pump C pc m& r (Te − Tr ) , donated by ue ( t ) in
(23). Therefore, the control input ue ( t ) provides the signals m& r ( t ) and m& f ( t ) .
To derive the operating strategy, the system dynamics (1) and (2) can be written
as
13
where the last term in (24) compensates for the variable unmeasurable input heat, Qin ( t ) .
Refer to Setlur et al. (2005) for more details on this robust control design method.
Remark 3: The control input m& r ( t ) is uni-polar. Again, a commutation strategy may be
designed to implement the bi-polar input ue ( t ) as
ue 1 + sgn ( ue )
m& r = . (25)
2C pc (Te − Tr )
From this definition, if ue ( t ) ∈ L∞∀t ≥ 0 , then m& r ( t ) ∈ L∞∀t ≥ 0 . The
choice of the valve position and water pump’s speed to produce the required
control input m& r ( t ) , defined in (25), can be determined based on energy
optimization issues. Further, this allows m& r ( t ) to approach zero without
stagnation of the coolant since m& r = Hm& c and 0 ≤ H ( t ) ≤ 1 . Another
commutation strategy is needed to compute the uni-polar control input
m& f ( t ) so that
ur 1 + sgn ( ur )
m& f = (26)
2ε C pa (Te − T∞ )
where ur ( t ) = ue ( t ) . From this definition, if ur ( t ) ∈ L∞ ∀t ≥ 0 , then
m& f ( t ) ∈ L∞∀t ≥ 0 .
An experimental test bench (refer to Figure 2.2) was fabricated to demonstrate the
proposed advanced thermal management system controller design. The assembled test
bench offers a flexible, rapid, repeatable, and safe testing environment. Clemson
University facilities generated steam is utilized to rapidly heat the coolant circulating
within the cooling system via a two-pass shell and tube heat exchanger. The heated
coolant is then routed through a 6.0L diesel engine block to emulate the combustion
process heat. From the engine block, the coolant flows to a three-way smart valve and
then either through the bypass or radiator to the water pump to close the loop. The
thermal response of the engine block to the adjustable, externally applied heat source
14
emulates the heat transfer process between the combustion gases, cylinder wall, and
water jacket in an actual operating engine. As shown in Figure 2.1, the system sensors
temperature, and T3 = ambient temperature), two mass flow meters (e.g., M1 = coolant
mass flow meter, and M2 = air mass flow meter), and electric voltage and current
steam (412 kPa) is routed from the campus facilities plant to the steam test bench, where
a pressure regulator reduces the steam pressure to 172 kPa before it enters the low
pressure filter. The low pressure saturated steam is then routed to the double pass steam
heat exchanger to heat the system’s coolant. The amount of energy transferred to the
system is controlled by the main valve mounted on the heat exchanger. The mass flow
Condensed steam may be collected and measured to calculate the rate of energy transfer.
From steam tables, the enthalpy of condensation can be acquired. To facilitate the
analysis, pure saturated steam and condensate at approximately T=100ºC determines the
energy transferred to the coolant at various steam control valve positions. The coolant
temperatures were initialized at Te = 67ºC before measuring the condensate. Each test
15
Steam Heat
Exchanger
Pump
Three-Way Engine
Radiator
Valve Block
Figure 2.2: Experimental thermal test bench that features a 6.0L diesel engine block,
three-way smart valve, electric water pump, electric radiator fan, radiator, and steam-
based heat exchanger
16
CHAPTER THREE
In this chapter, the numerical and experimental results are presented to verify and
validate the mathematical models and control design. First, a set of Matlab/Simulink™
simulations have been created and executed to evaluate the backstepping robust control
design and the normal radiator operation strategy. The proposed thermal model
experimental tests have been conducted on the steam-based thermal test bench to
chapter two, has been performed on the system dynamics (1) and (2) to demonstrate the
performance of the proposed controller in (20) and (21). For added reality, band-limited
white noise was added to the plant. To simplify the subsequent analysis, a fixed smart
valve position of H ( t ) = 1 (e.g., fully closed for 100% radiator flow) has been applied to
investigate the water pump’s ability to regulate the engine temperature. An external ram
air disturbance was introduced to emulate a vehicle traveling at 20km/h with varying
input heat of Qin ( t ) = [50kW, 40kW, 20kW, 35kW] as shown in Figure 3.1. The initial
simulation conditions were Te ( 0 ) = 350 ºK and Tr ( 0 ) = 340 ºK. The control design
constants are Tvro = 356 ºK and mo = 0.4 . Similarly, the controller gains were selected as
Ted ( t ) = 363 + sin ( 0.05t ) ºK. This time varying setpoint allows the controller’s tracking
performance to be studied.
370 0
Desired Engine Temperature Ted
a b
Engine Temperature vs. Radiator Temperature [ºK]
368
Actual Engine Temperature Te -0.2
366
360 -0.8
358 -1
356
-1.2
354
-1.4
352
350 -1.6
50kW 40kW 20kW 35kW 50kW 40kW 20kW 35kW
348 -1.8
0 200 400 600 800 1000 1200 0 200 400 600 800 1000 1200
Time [Sec] Time [Sec]
c d
Coolant Mass Flow Rate Through the Pump [kg/sec]
1.2
Air Mass Flow Rate Through the Fan [kg/sec]
2.5
1
2
0.8
1.5
0.6
1
0.4
0.5 0.2
0 0
0 200 400 600 800 1000 1200 0 200 400 600 800 1000 1200
Time [Sec] Time [Sec]
Figure 3.1: Numerical response of the backstepping robust controller for variable engine
thermal loads. (a) Simulated engine temperature response for desired engine temperature
profile Ted ( t ) = 363 + sin ( 0.05t ) ºK; (b) Simulated engine commanded temperature
tracking error; (c) Simulated mass flow rate through the pump; and (d) Simulated air
mass flow rate through the radiator fan.
In Figure 3.1a, the backstepping robust controller readily handles the heat
Qin ( t ) = 50kW (heavy thermal load) is applied from 0 ≤ t ≤ 200 sec, as well as when
18
Qin ( t ) = 20kW (light thermal load) is applied at 500 ≤ t ≤ 800 sec, the controller is able to
maintain a maximum absolute value tracking error of 1.5ºK. Under the presented
operating condition, the error in Figure 3.1b fluctuates between –0.4ºK and –1.5ºK. In
Figures 3.1c and 3d, the coolant pump (maximum flow limit of 2.6kg/sec) expends more
effort than the radiator fan which is ideal for power minimization.
Remark 4: The error fluctuation in Figure 3.1b is quite good when compared to the
overall amount of heat handled by the cooling system components.
on the experimental test bench. The first case applies a fixed input heat of
Qin ( t ) = 35kW and a ram air disturbance which emulates a vehicle traveling at 20km/h as
shown in Figure 3.2. From Figure 3.2b, the controller can achieve a steady state absolute
value temperature tracking error of 0.7ºK. In Figures 3.2c and 3.2d, the water pump
works harder than the radiator fan which again is ideal for power minimization. Note that
the water pump reaches its maximum mass flow rate of 2.6kg/sec, and that the fan runs at
73% of its maximum speed (e.g., maximum air mass flow rate is 1.16kg/sec). The
fluctuation in the coolant and air mass flow rates during 0 ≤ t ≤ 400 sec (refer to Figures
3.2c and 3.2d) is due to the fluctuation in the actual radiator temperature about the
The second scenario varies both the input heat and disturbance. Specifically
Qin ( t ) changes from 50kW to 35kW at t = 200sec while Qo ( t ) varies from 20km/h to
40km/h to 20km/h at t =400sec and 700sec (refer to Figure 3.3). From Figure 3.3b, it is
clear that the proposed control strategy handles the input heat and ram air variations
nicely. During the ram air variation between 550sec and 750sec, the temperature error
19
fluctuates within 1ºK due to the oscillations in the water pump and radiator fan flow rates
per Figures 3.3c and 3.3d. This behavior may be attributed to the supplied ram air that
causes the actual radiator temperature, Tr ( t ) , to fluctuate about the radiator temperature
375 1.5
Engine Temperature T
370
a e
Radiator Temperature T 1
b
r
360
0
355
-0.5
350
-1
345
340 -1.5
335 -2
0 200 400 600 800 1000 1200 0 200 400 600 800 1000 1200
Time [Sec] Time [Sec]
3 1.4
Air Mass Flow Rate Through the Radiator Fan [kg/sec]
c d
Coolant Mass Flow Rate Through the Pump [kg/sec]
1.2
2.5
1
2
0.8
1.5
0.6
1
0.4
0.5
0.2
0 0
0 200 400 600 800 1000 1200 0 200 400 600 800 1000 1200
Time [Sec] Time [Sec]
Figure 3.2: First experimental test for the backstepping robust controller with emulated
vehicle speed of 20km/h and Qin ( t ) = 35 kW. (a) Experimental engine and radiator
temperatures with a desired engine temperature Ted ( t ) = 363 ºK; (b) Experimental engine
temperature tracking error; (c) Experimental coolant mass flow rate through the pump;
and (d) Experimental air mass flow rate through the radiator fan.
20
375 2
Engine Temperature Te
370
a Radiator Temperature Tr
1.5 b
360
0
355
-0.5
350 -1
345
-1.5
-2
340 20 km/h 40 km/h 20 km/h
20 km/h 40 km/h 20 km/h
50 kW 35 kW -2.5
335 50 kW 35 kW
0 200 400 600 800 1000 1200 -3
Time [Sec] 0 200 400 600 800 1000 1200
Time [Sec]
3 1.4
1.2
d
2.5
1
2
0.8
1.5
0.6
1
0.4
0.5
20 km/h 40 km/h 20 km/h
0.2
20 km/h 40 km/h 20 km/h
50 kW 35 kW
0 50 kW 35 kW
0 200 400 600 800 1000 1200 0
Time [Sec] 0 200 400 600 800 1000 1200
Time [Sec]
Figure 3.3: Second experimental test scenario for the backstepping robust controller
where the input heat and ram air disturbance vary with time. (a) Experimental engine and
radiator temperatures with a desired engine temperature Ted ( t ) = 363 ºK; (b)
Experimental engine temperature tracking error; (c) Experimental coolant mass flow rate
through the pump; and (d) Experimental air mass flow rate through the radiator fan.
The normal radiator operation strategy, introduced in chapter two, has been
numerically simulated using system dynamics (1) and (2) to investigate the robust
parameters, initial simulation conditions, and desired engine temperature were equivalent
to Section 3.1. Again, a band-limited white noise was added to the plant. A fixed 100%
radiator flow smart valve position allows the water pump’s ability to regulate the engine
temperature to be studied. The external ram air emulated a vehicle traveling at 20km/h;
21
the input heat was varied as shown in Figure 3.4 (e.g., Qin ( t ) = [50kW, 40kW, 20kW,
35kW]). The control gains were set as K e = 10 , α e = 0.005 , and ρe = 0.1 . Although the
normal radiator operation accommodated the heat variations in Figure 3.4a, its
performance was inferior to the backstepping robust control. However, the normal
radiator operation achieved less tracking error under the same operating condition when
Figure 3.1b and 3.4b are compared. In this case, the maximum temperature tracking error
fluctuation was 1ºK. In Figures 3.4c and 3.4d, the pump works harder than the fan which
is preferred for power minimization. Note that the power consumption is larger than that
achieved by the backstepping robust controller (refer to Figures 3.1c, 3.1d, 3.4c, and
3.4d).
The same two experimental scenarios presented for the backstepping robust
controller are now implemented for the normal radiator operation strategy on the thermal
test bench. In the first scenario, a fixed input heat and ram air disturbance,
Qin ( t ) = 35kW and 20km/h vehicle speed, were applied. In Figure 3.5a, the normal
radiator operation overshoot and settling time are larger than the backstepping robust
control (refer to Figure 3.2a). As shown in Figure 3.5b, an improved engine temperature
tracking error was demonstrated but with greater power consumption in comparison to
the backstepping robust control (refer to Figure 3.2b). Finally, the water pump operated
For the second test scenario, the input heat and disturbance are both varied as
previously described for the backstepping robust control. The normal radiator operation
maintained the established control gains. In Figure 3.6b, the temperature error remains
within a ±0.4ºK neighborhood of zero despite variations in the input heat and ram air.
22
Although the temperature tracking error is quite good, this strategy does not minimize
370 2
Desired Engine Temperature Ted
b
Engine Temperature vs. Radiator Temperature [ºK]
368 1
Actual Engine Temperature Te
366
352 -6
350 -7
50kW 40kW 20kW 35kW 50kW 40kW 20kW 35kW
348 -8
0 200 400 600 800 1000 1200 0 200 400 600 800 1000 1200
Time [Sec] Time [Sec]
c 1.2
d
Coolant Mass Flow Rate Through the Pump [kg/sec]
2
0.8
1.5
0.6
1
0.4
0.5 0.2
0 0
0 200 400 600 800 1000 1200 0 200 400 600 800 1000 1200
Time [Sec] Time [Sec]
Figure 3.4: Numerical response of the normal radiator operation for variable engine
thermal loads. (a) Simulated engine temperature response for desired engine temperature
profile Ted ( t ) = 363 + sin ( 0.05t ) ºK; (b) Simulated engine commanded temperature
tracking error; (c) Simulated mass flow rate through the pump; and (d) Simulated air
mass flow rate through the radiator fan.
23
375 1
Engine Temperature Te
370
a Radiator Temperature Tr
0
-1 b
Temperatures [ºK]
360
355 -2
350
-3
345
-4
340
335 -5
0 200 400 600 800 1000 1200 0 200 400 600 800 1000 1200
Time [Sec] Time [Sec]
3 1.4
1.2
2.5
1
2
0.8
1.5
0.6
1
0.4
0.5
0.2
0 0
0 200 400 600 800 1000 1200 0 200 400 600 800 1000 1200
Time [Sec] Time [Sec]
Figure 3.5: First experimental test results for the normal radiator operation controller
with emulated vehicle speed of 20km/h and Qin ( t ) = 35 kW. (a) Experimental engine and
radiator temperatures with a desired engine temperature Ted ( t ) = 363 ºK; (b)
Experimental engine temperature tracking error; (c) Experimental coolant mass flow rate
through the pump; and (d) Experimental air mass flow rate through the radiator fan.
24
375 1
Engine Temperature Te
370
a Radiator Temperature Tr 0
360
-2
355
-3
350
-4
345
50 kW 35 kW 50 kW 35 kW
335 -6
0 200 400 600 800 1000 1200 0 200 400 600 800 1000 1200
Time [Sec] Time [Sec]
3 1.4
1.2
2.5
1
2
0.8
1.5
0.6
1
0.4
0.5
20 km/h 40 km/h 20 km/h 0.2 20 km/h 40 km/h 20 km/h
50 kW 35 kW 50 kW 35 kW
0 0
0 200 400 600 800 1000 1200 0 200 400 600 800 1000 1200
Time [Sec] Time [Sec]
Figure 3.6: Second experimental test scenario for the normal radiator operation
controller where the input heat and ram air disturbance vary with time. (a) Experimental
engine and radiator temperatures with a desired engine temperature Ted ( t ) = 363 ºK; (b)
Experimental engine temperature tracking error; (c) Experimental coolant mass flow rate
through the pump; and (d) Experimental air mass flow rate through the radiator fan.
The simulation and experimental results are summarized in Table 3.1 to compare
the controller strategies. To ensure uniform operating conditions, all reported data
corresponds to the first scenario thermal conditions. Further, the controller gains, initial
conditions, and temperature set points were maintained for both the simulation and
experimental tests. Note that adaptive and robust controllers were also designed and
implemented (Salah et al., 2006) for comparison purposes. However, the designs are not
25
reported in this paper. For these two controllers, the radiator temperature set point was
Overall, the normal radiator operation strategy was better than the adaptive and
robust control strategies. However, it is not as good as the backstepping control when
error. Therefore, the backstepping robust control strategy is considered to be the best
among all controllers and operation strategies. The power measure is the minimum, the
heat change handling is more satisfactory, and a set point for the radiator temperature is
not required. From Table 3.1 it is clear that the variations in the actual coolant
temperature about the set point, quantified by the steady state tracking error, are
relatively minor given that the maximum absolute tracking error is 0.3% (e.g., adaptive
control).
1 t 1 1
Remark 5: The power measure PM = ∫ 2 2 ( )+
3
m& c τ
2 2 ()
3
m& f τ + Pv dτ
calculates
T t
o
2 ρc Ac
2ρ f A f
the average power consumed by the system actuators over the time
T=20min. Power measure is performed for the duration of the experimental
test (T) using the trapezoidal method of integration. The power consumed by
the smart valve is considered to be quite small so it is neglected. The
following parameters’ values are used: ρc = 1000kg/m3, ρ a = 1.2kg/m3,
Ac = 1.14mm2, Aa = 114mm2, and Pv ≅ 0.
26
CHAPTER FOUR
different thermostat valve scenarios as shown in Figure 4.1. The valve and radiator baffle
configurations considered include: factory mode (Case 1); two-way valve (Case 2);
three-way valve (Case 3); valve absent without radiator baffles (Case 4); and valve absent
with radiator baffles (Case 5). The factory configuration has the mechanically driven
water pump and radiator fan emulated by an electric variable speed pump and fan. The
two-way valve operates by regulating coolant flow in either the bypass or radiator branch
of the cooling circuit. The three-way valve proportionally directs the flow through either
the bypass and/or radiator loop. The proper utilization of a variable speed pump
potentially allows the thermostat valve to be removed since the coolant flow rate may be
predominantly controlled by the pump. The introduction of radiator baffles in the valve
absent configuration provides external radiator airflow control (due to vehicle speed)
Hypothesis: The automotive thermostat valve’s primary role is to route the coolant flow
between the bypass and radiator branches during warm-up conditions. The
best thermostat valve cooling system configuration utilizes a computer
controlled three-way valve since it offers the most precise coolant flow
regulation for warm-up scenarios.
the predominant cooling system configurations and the thermostatic valve’s operation
will be discussed. A model-based nonlinear control law, with underlying system thermal
model, will be introduced in Section 4.2 to regulate the coolant pump and radiator fan
servo-motor actuators. Two valve control strategies will also be introduced. In Section
4.3, the experimental test bench which creates a repeatable testing environment will be
reviewed.
Te Te
Radiator
Flow
Meter
Tr
Variable
Variable Speed Fan Speed
Radiator Temperature Pump
+
5. Valve Absent
With Radiator Baffles
Figure 4.1: Five valve configurations to enhance fluid flow control; note the two
thermocouples, Te (t ) and Tr (t ) , and fluid flow meter after the pump
The typical automotive cooling system has two main thermal components: engine
and radiator. The coolant flow through the engine loop transports excess combustion
heat to the radiator loop which dissipates this heat. Controlling and directing coolant
28
flow between these two loops is the main function of most thermostat valves. This
architectures.
The common cooling system has three key components working to regulate
engine temperature: thermostat, water pump, and radiator fan (refer to Figure 4.2). In
operation, when the engine is cold, the thermostat is closed and coolant is forced to flow
through an internal engine bypass (usually a water passage parallel to the engine water
jackets). Once the coolant reaches the desired operating temperature, the thermostat
begins to open and allow coolant to flow through the radiator where excess heat can be
rejected. Coolant flowing through the radiator is further cooled by the radiator fan
pulling air across the radiator. When the coolant has dropped below the thermostat
temperature rating, the valve closes (via spring force) directing the coolant again through
the bypass. Conventional thermostats are wax based; their operation depends on the
material properties of the wax in the thermostat housing and the coolant temperature
surrounding it (Choukroun and Chanfreau, 2001). Traditional water pumps and radiator
fans are generally mechanically driven by the engine’s crankshaft. Specifically, the water
pump is driven as an accessory load while the radiator fan is often connected directly to
29
Wax Thermostat
Engine
Radiator
Figure 4.2: Factory cooling system configuration demonstrating the use of mechanically
driven water pump and radiator fan with a wax thermostat (Case 1).
Factory cooling systems typically present two problems (Chalgren and Barron,
2003). First, large parasitic losses are associated with operating mechanical components
at high rotational speeds due to their mechanical linkages. This not only decreases the
overall engine power, but increases the fuel consumption. Additionally, these parasitic
losses are compounded since the traditional cooling system components are designed for
maximum (and often infrequent) cooling loads. Second, over/under cooling may occur
since the water pump speed is directly proportional to the engine speed (again due to the
mechanical linkages). At low engine speeds, the water pump may not be circulating
coolant fast enough to properly cool the engine at higher loads. Similarly, the water
pump may be circulating the coolant too fast, causing the engine to be overcooled and
lose efficiency at higher speeds. Fundamentally, the traditional cooling system is passive
The two-way smart valve controls flow by blocking the coolant from entering an
external bypass as shown in Figure 4.3. When the engine is cold, the valve is open and
coolant flows through the bypass at a rate proportional to the pressure drop across the
bypass and valve. Therefore, the pressure drop can be partially controlled by the valve
30
position. During this time, the radiator is also receiving a portion of the coolant flow.
Once the engine has reached operating temperature, the valve begins to close and coolant
Tr
Variable
Variable Speed Fan Speed
Pump
Figure 4.3: Advanced thermal management system with two-way valve configuration
which emphases design simplicity while providing non-precise fluid flow control
between radiator and bypass loops (Case 2).
When the valve is oriented in the bypass mode, some coolant will always flow
through the radiator which is a major drawback when trying to rapidly warm the engine
to operating temperature. Further, the amount of coolant flow through the bypass and
radiator is determined by the valve’s geometry and location within the cooling circuit.
Therefore, a two-way valve would be specific to a particular cooling system and would
valves in many locations for an advanced cooling system that would alter the thermal
dynamics. For instance, the valve could be shifted to the inlet of the radiator, completely
preventing flow from entering the radiator (when fully closed) to aid in engine warm-up
times. However, a pressure drop has been added in series with the radiator and some
31
Three-Way Valve Fluid Control (Case 3)
The operation of a smart three-way valve is very similar to the two-way valve.
However, a three-way valve controls coolant flow through the bypass and radiator loops
as shown in Figure 4.4. Unlike the two-way valve, the coolant flow can be completely
blocked from entering the radiator or bypass which aids in engine warm-up time
(Chalgren, 2004). This is the primary advantage of utilizing a three-way valve in the
with greater functionality can be expensive. In addition, valve geometries can become
complicated when designing a three-way valve that proportionally controls coolant flow
&r )
(m Three-Way Valve
&c )
(m Engine
Te
Radiator Flow
&b )
(m
Meter
Tr
Variable
Speed
Variable Speed Fan Pump
Figure 4.4: Advanced thermal management system with three-way valve configuration
which offers precise fluid flow regulation (Case 3).
When control over the coolant pump speed (and therefore flow rate) can be
mentioned earlier, the thermostat’s main roll is to regulate the coolant flow rate and
direction. Therefore, the valve loses one of its primary purposes due to active pump
speed control. The valve is now reduced to controlling fluid flow between the bypass and
radiator loops, which is only required during warm-up conditions. That is, when the
32
engine is cold, coolant is routed through the bypass via valve position to reduce warm-up
times. However, the valve could potentially be eliminated if the pump circulates coolant
as required by the engine (refer to Figure 4.5). Note that coolant must be circulated at all
Engine
&c )
(m
Te
Radiator Flow
Meter
Tr
Variable
Variable Speed Fan Speed
Pump
Radiator Baffles
Fully Open Fully Closed
Figure 4.5: The thermostat valve is removed which eliminates the need for a bypass;
temperature control achieved by the coolant pump and radiator fan. Note that the radiator
baffles range from fully open to fully closed (Cases 4 and 5).
Temperature control is handled by varying the pump speed (or flow rate). During
quickly. Once the engine reaches its operating temperature, the pump speed would then
be adjusted according to the heat load. The radiator fan becomes active when the pump
alone cannot control the thermal input from the engine and is adjusted to match the
necessary amount of heat rejection. Overall, this configuration simplifies the cooling
achieved with servo-motor driven radiator baffles. Radiator baffles control ram-air
effects acting on the radiator (due to the vehicle speed). In essence, the baffles serve as a
33
valve for external air flow. In warm-up conditions, the baffles would be closed to block
airflow across the radiator and minimize the amount of heat rejected. Once the engine
has reached its operating temperature, the baffles may be opened and the radiator
functions normally. The coolant pump operation would be similar to the no baffle case.
A reduced order lumped parameter thermal model may be used to describe the
transient response of the engine thermal management system. The thermal dynamics for
the engine and radiator nodes, Te (t ) and Tr (t ) , in Figure 4.1 may be written as (Setlur et
al., 2005)
CeT&e = Qin − c pc m& r (Te − Tr ) , Cr T&r = c pc m& r (Te − Tr ) − ε c pa m& a (Te − T∞ ) − Qo . (27)
In the two-way valve configuration (refer Figure 4.3), a flow rate exists through the
radiator branch, m& r (t ) , at all times so that m& r = (1 − ε ) Hm& c + ε m& c . The coolant mass
flow rate through the bypass branch, m& b (t ) , becomes m& b = (1 − ε )(1 − H ) m& c . Note that
the parameter ε ( ∆p ) depends on the pressure drop, ∆p (t ) , across the radiator and bypass
dependant on the actual valve position, x(t ) . Finally, the overall coolant mass flow rate
The cooling circuit dynamic behavior varies slightly when a three-way valve is
introduced as shown in Figure 4.4. The three-way valve may be modeled using a linear
relationship between the normalized valve position, H ( x) , and the coolant flow rate
through the radiator branch, m& r (t ) , for a given water pump speed. In this case, the flow
34
rates through the radiator and bypass branches become m& r = Hm& c and m& b = (1 − H ) m& c ,
respectively. If the valve and bypass are completely removed from the cooling system
(refer to Figure 4.5), then the flow rate through the radiator branch and water pump will
The three-way valve dynamics may be applied to evaluate the traditional factory
thermostat behavior (Case 1) by adjusting the smart valve’s operation. The valve
position, H ( x ) , will respond in a linear manner to the coolant temperature so that (Zou
et al., 1999)
The parameters Tl and Th represent the temperatures at which the wax in the thermostat
begins to soften and fully melt. In an actual wax thermostat, hysteresis occurs while the
wax is changing states such that the valve’s operation is nonlinear. For this paper, the
hysteresis has been neglected. For on/off (or bang-bang) valve control (Cases 2 and 3),
where ∆T is the boundary layer about the desired engine temperature, Ted (t ) . The
boundary layer was introduced to reduce valve dithering. Note in equations (28) and (29)
complete coolant flow through the bypass occurs when H = 0 . Remember that Cases 4
35
and 5 remove the thermostat valve.
combustion process heat input, Qin (t ) and the uncontrollable air flow heat loss across the
developed so that the engine’s coolant temperature, Te (t ) , tracks the desired temperature,
Ted (t ) , by regulating the system actuators (variable speed electric water pump and
radiator fan) in harmony with each other. Note that in equation (27), the signals Te (t ) ,
engine’s operation. The controller objective is to ensure that the actual engine
To formulate the control law, the thermal system dynamics described in equation
A Lyapunov based nonlinear controller can be developed and applied to regulate the
engine temperature (similar to Setler et al., 2005) so that the control law (which
36
t
ue = − ( K + α ) [ e − eo ] − ∫ α ( K + α ) e(τ ) + ρ sgn(e(τ )) dτ . (32)
to
In this expression, the final term, ρ sgn(e) , compensates for the variable un-measurable
input heat, Qin ( t ) . The error, e(t ) , is the difference between the desired and actual
error.
normally (i.e., as a heat exchanger) if the effort of the radiator fan, denoted by ur ( t ) in
equation (30), is set equal to the effort produced by the water pump, denoted by ue ( t ) .
Therefore, the control input ue ( t ) provides the signal m& r ( t ) and the control input
ur (t ) = ue ( t ) provides the signal m& a ( t ) as shown in equation (31). The signal m& r ( t ) is
uni-polar, so a commutation strategy determines the radiator coolant mass flow rate as
ue 1 + sgn ( ue )
m& r = . (33)
2c pc ( Te − Tr )
The coolant mass flow rate, m& c (t ) , or pump effort, is now determined using equation (7)
and the valve configuration with its normalized position, H . For Cases 2 and 3, the
m& r m&
coolant flow rates become m& c = and m& c = r , respectively. If a valve does
H − ε ( H + 1) H
not exist for Cases 4 and 5, then m& c = m& r . Note that the coolant pump command voltage
From equation (33), if ue (t ) is bounded for all time, then m& r (t ) is bounded for all time.
37
A second commutation strategy is proposed to compute the uni-polar control
ur 1 + sgn ( ur )
m& a = . (8)
2ε c pa ( Te − T∞ )
As stated earlier, ur ( t ) = ue ( t ) . The radiator fan speed determines the radiator air flow
rate which does not include the ram air flow due to vehicle speed. The ram air effects are
determined the fan motor voltage. From this definition, if ur (t ) is bounded for all time,
then m& a (t ) is bounded for all time. Note that equation (31) is utilized to develop
equations (33) and (38). For further details, the reader is referred to Salah et al. (2007).
configurations (Cases 1-5) shown in Figure 4.1. This custom bench offered maximum
Facilities steam was used to rapidly heat engine coolant which flowed through a double
pass shell and tube heat exchanger, to emulate combustion, and the engine block. The
integration of a 6.0L International V-8 engine block into the test bench offered a thermal
capacitance similar to actual operation. From the engine, the coolant flowed to the smart
thermostat valve which can be selected to operate in either the traditional (Case 1), two-
way (Case 2), three-way (Case 3), or no valve with/without baffles (Cases 4 and 5)
through a series of valves shown in Figure 4.6. For Cases 1 and 3, Valve A is closed and
Valve B is opened. In contrast, Case 2 operation occurs when Valve A is opened and
38
Valve B is closed. This action forces the coolant to flow through either the smart
thermostat valve or Valve A as it would in the two-way valve operation per Section 4.1.
Also, when Valve A is opened and Valve B is closed, Cases 4 and 5 may be explored by
Valve A
&r )
(m Valve B J-TC ( Te ) Engine
Radiator ( Qout )
Flow
Meter
(m&c )
J-TC ( Tr )
Electric
Fan
Steam Inlet a
Heat
Exchanger ( Qin )
Condensate
Outlet
Figure 4.6: Schematic of thermal test bench with actual cooling system components,
engine block, sensors, and steam heat exchanger.
To calculate the rate of heat transfer, Qin (t ) , condensed steam was collected and
measured. It has been assumed that the amount of condenser condensate is proportional
to the amount of heat transferred to the circulating coolant (Incropera and DeWitt, 1990).
The inlet steam control valve regulates the flow of incoming steam to the condenser
which in turn regulates heat transfer. Overall, heat transfer rates of up to 60 kW can be
39
achieved with the current steam heat exchanger. Two J type Omega thermocouples, with
Omega OM5-LTC signal conditioners, measure the coolant temperatures at the engine,
Te (t ) , and radiator, Tr (t ) , outlets. The coolant mass flow, m& c (t ) , was determined using
an Omega FP7001A paddle-wheel mass flow meter placed after the pump.
eight digital-to-analog (DA) outputs and eight analog-to-digital (AD) inputs. This
controller board provides signals for the smart valve, variable speed electric pump, and
radiator fan. The custom steel body smart valve, with Teflon filled Delrin (Delrin AF)
piston, was linearly actuated by a Litton servo-motor driven worm gear. The pump was a
standard brass centrifugal pedestal pump (3.2cm outlet and 3.8cm inlet) driven by a
Reliance Electric 240VAC three phase electric motor. The electric radiator fan (Summit
SUM-G4904) has a diameter d=45.7cm and can handle flow rates up to 850 liters/sec.
40
CHAPTER FIVE
Five different valve and radiator baffle configurations were investigated on the
steam test bench using the proposed control strategies in Chapter four to study
temperature warm-up time, tracking error, and overshoot, as well as total actuator power
consumption. The configuration tests are presented in Table 5.1 with Case 5 reflecting
the radiator blocked by baffles during warm-up. The warm-up time, twu , is the time
required for the engine temperature, Te (t ) , to reach its desired set point, Ted (t ) . The
absolute steady-state temperature error, Ess , represents the difference between Te (t ) and
Ted (t ) at steady-state operation. The temperature overshoot, Osh , denotes the difference
between the engine temperature, Te (t ) , at its peak value and the desired engine
temperature, Ted (t ) . The total power consumption, Ptotal , is the average power consumed
by the water pump and radiator fan during the test ( 0 < t < 40 minutes). Note that the
power consumed by the valve is negligible and has been ignored. All the tests began at
and load, the input heat has been selected as Qin ( t ) = 35kW . Further, the wind speed
associated with Qo ( t ) was approximately 100 km/hr. The control gains, selected
responses are shown in Figure 5.1a with no apparent temperature overshoot since the set
point, Ted (t ) , was not achieved. A steady-state temperature offset of Ess = 0.777 ˚K was
observed. Constant radiator air flow, m& a ≅ 1.53 kg/sec, corresponded to fixed engine
speed and clutch operation as displayed in Figure 5.1b. The water pump flow rate was
maintained at approximately m& c ≅ 1.50 kg/sec to emulate constant engine speed (refer to
Figure 5.1c). Operation of the thermostat valve was controlled by equation (2) with
Tl =358˚K and Th =368˚K; the normalized valve position is displayed in Figure 5.1d. The
approximately t ≅ 2000 seconds. Coolant flow rate through the entire cooling circuit
decreased when the valve opened and reflects different pressure drops between the
42
370 1.8
a b
1.4
350
1.2
Temperatures [ºK]
340
1
330
0.8
320
0.6
310
0.4
c d
Coolant Mass Flow Rate Through the Pump [kg/sec]
100
80
60
1.5
40
20
0.5
0
0 500 1000 1500 2000 0 500 1000 1500 2000
Time [Sec] Time [Sec]
Figure 5.1: Case 1 - Factory configuration with (a) Engine and radiator temperatures for
a desired engine temperature Ted (t ) ; (b) Air mass flow rate through the radiator fan; (c)
Coolant mass flow rate through the pump; and (d) Normalized valve position.
The two-way valve configuration located the smart valve in the bypass loop as
shown in Figure 4.3. Transient response of the engine and radiator (refer to Figure 5.2a)
display slower temperature dynamics when compared to the factory setting in Figure 5.1a
(e.g., t ≅ 380 versus t ≅ 270 seconds for the engine temperature to reach Te = 350 ˚K).
The steady-state temperature error between the engine and prescribed value is
Ess = 0.245 ˚K. This thermal behavior may be explained by the lack of control over the
fluid flow through the radiator. In Figure 5.2d, the valve changes position only once at
43
the desired temperature Ted =363˚K when reached. In Figures 5.2b and 5.2c, the valve
position change (routing from the bypass to the radiator) produces oscillations in the air
and coolant mass flow rates. These fluctuations may be attributed to the high gain
370 1.8
1.2
Temperatures [ºK]
340
1
330
0.8
320
0.6
310
0.4
c 100
d
Coolant Mass Flow Rate through the Pump [kg/sec]
2.5
80
60
1.5
40
20
0.5
0
0 500 1000 1500 2000 0 500 1000 1500 2000
Time [Sec] Time [Sec]
Figure 5.2: Case 2 - Two-way valve configuration with (a) Engine and radiator
temperatures for a desired engine temperature Ted ( t ) ; (b) Air mass flow rate through the
radiator fan; (c) Coolant mass flow rate through the water pump; and (d) Normalized
valve position.
The main attribute of the three-way valve resides in the ability to route coolant
proportionally through the bypass and the radiator loops (refer to Figure 4.4). In Figure
5.3a, the thermal response of the engine and radiator coolant temperatures is displayed.
The three-way valve switches between the bypass and radiator at t ≅ 359 , t ≅ 428 , and
44
t ≅ 471 seconds (refer to Figure 5.3d) to realize a short warm-up time of twu = 363.9
seconds. A minimum steady-state error was demonstrated with Ess = 0.175 ˚K which
may be attributed to the improved coolant flow control associated with the three-way
valve as discussed in Section 4.1. The fan and coolant mass flow rates (refer to Figures
5.3b and 5.3c) again display flow oscillations during the valve’s operation due to the high
control gains. It is important to note that these gains were selected to minimize the
temperature tracking error with the understanding that flow oscillations may occur.
Finally, a correlation exists between the valve’s initial position change and the
temperature profile which indicates that the restricted radiator flow allowed the radiator’s
fluid volume to be cooled and waiting to be released into the engine block to quickly
45
370 1.8
1.2
Temperatures [ºK]
340
1
330
0.8
320
0.6
310
0.4
1.8
c 100
d
Coolant Mass Flow Rate through the Pump [kg/sec]
1.4 80
1.2
60
40
0.8
0.6 20
0.4
0
0.2
0 500 1000 1500 2000 0 500 1000 1500 2000
Time [Sec] Time [Sec]
Figure 5.3: Case 3 - Three-way valve configuration with (a) Engine and radiator
temperatures for a desired engine temperature Ted ( t ) ; (b) Air mass flow rate through the
radiator fan; (c) Coolant mass flow rate through the water pump; and (d) Normalized
valve position.
The elimination of the bypass and thermostat valve results in a simplified, single
loop cooling circuit composed of the engine block, radiator fan, and coolant pump (refer
to Figure 4.5). In Figure 5.4a, the temperature profiles demonstrate that the warm-up
time, twu ≅ 594.1 seconds, is larger when compared to the three-way valve configuration
(Cases 1, twu ≅ 363.9 seconds) but very similar to the two-way valve architecture (Case
2, twu ≅ 558.0 seconds). Note that the steady-state temperature error is Ess = 0.276 ˚K.
The radiator fan and water pump responses are shown in Figures 5.4b and 5.4c. Once
again the signal oscillations may be attributed to the high control gains for the pump and
46
radiator fan.
370 1.8
1.2
Temperatures [ºK]
340
1
330
0.8
320
0.6
310
0.4
c
Coolant Mass Flow Rate through the Pump [kg/sec]
2.5
1.5
0.5
0
0 500 1000 1500 2000
Time [Sec]
Figure 5.4: Case 4 - Valve absent configuration with (a) Engine and radiator
temperatures for a desired engine temperature Ted ( t ) ; (b) Air mass flow rat through the
radiator; and (c) Coolant mass flow rate through the pump.
blocked the air flow through the radiator until the engine coolant temperature reached the
desired temperature. As shown in Figure 5.5a, the warm-up time, twu ≅ 382.9 seconds,
integration of servo-actuated baffles into the radiator would add to system complexity
and power consumption. Note that these experimental results do not reflect the power
required to drive the radiator baffles so the power consumption value reported in Table
5.2 should be slightly larger. For this test, the baffles were removed at t ≅ 406 seconds
47
as noted by the decrease in radiator temperature due to the enhanced cooling process via
370
1.8
a
1.2
Temperatures [ºK]
340
1
330
0.8
320
0.6
310
0.4
c
Coolant Mass Flow Rate through the Pump [kg/sec]
2.5
1.5
0.5
0
0 500 1000 1500 2000
Time [Sec]
Figure 5.5: Case 5 - Valve absent and baffles present configuration with (a) Engine and
radiator temperatures for a desired engine temperature Ted ( t ) ; (b) Air mass flow rate
through the radiator; and (c) Coolant mass flow rate through the pump.
The experimental data presented in Figures 5.1 through 5.5 has been summarized in
Table 5.2. To aid in the selection of an advanced cooling system architecture focused on
48
|Ess| [˚K] Ptotal
Case Configuration twu [sec] Osh [˚K] Rank
[W]
Traditional 0.777
1 n/a 1 n/a 109.37 4
factory
2 Two-way valve 558.0 0.245 4.3 33.14 5
3 Three-way valve 363.9 0.175 3.6 24.31 1
4 No valve 594.1 0.276 4.3 24.72 3
No valve with 0.254
5 382.9 3.2 36.56 2
baffles
Table 5.2: Summary of the valve configuration tests performance in terms of warm-up
time, absolute steady state error, temperature overshoot, average power consumption, and
relative rank. Case 5 does not consider energy required to operate the baffles.
The comparison of warm-up times, twu , between the various cooling system
configurations reveals that the three-way valve architecture achieved the shortest time
followed by the valve absent with baffles configuration. Note that the factory thermostat
(Case 1) did not reach the desired temperature due to overcooling so its warm-up time
was not reported. A short warm-up time can be primarily attributed to restricting the
coolant flow to the bypass allowing minimal heat loss. This effect is especially evident
when the two-way and no valve (Cases 2 and 4) warm-up times are considered given that
some coolant will flow through the radiator during warm-up. It is interesting to observe
that the two-way valve configuration warm-up time, twu = 558.0 seconds, is similar to
the valve absent, twu = 594.1 seconds. Hence, the two-way valve is largely ineffective
during the warm-up scenario. When air flow across the radiator is blocked (Case 5), the
1
The engine coolant temperature never reached the desired value of Ted = 363˚K.
49
warm-up time is on par with that of the three-way valve configuration ( twu = 363.9
as possible to the set point temperature to facilitate combustion efficiency. The steady-
state temperature error, Ess , ranking can be stated as Case 3, 2, 5, 4 and 1, respectively.
The three-way valve offered a 28.6% improvement over the two-way valve. Similar
observations may be made for Case 3 when compared to the valve absent (Case 4) and
the valve absent with baffles (Case 5) with 36.6% and 31.1% improvements. An
explanation for this behavior may be attributed to the improved fluid control in the three-
way valve configuration. The factory configuration (Case 1) had the highest relative
error measure due to the fact that the engine temperature was realized by overcooling the
system through elevated coolant pump and radiator fan operation. The emulated wax
thermostat valve only allowed 42% of maximum radiator flow to control the coolant
1 t 1
The power measure Ppump = ∫ 2 2 ( ) dτ
3
m& c τ and
∆t t
o
2 ρ c Ac
50
1 t 1
Pfan = ∫ 2 2 a ( ) dτ
3
m& τ calculates the average power consumed by the water pump
∆t t
o
2 ρa A f
and radiator fan, respectively, over the time period ∆t = t − to = 40 minutes. The total
average power consumption has been reported in column 6 of Table 5.2. As stated
earlier, power consumed by the valve is minimal and has been neglected. Observing the
power consumption values, the three-way configuration (Case 3) consumed the least
power, Ptotal = 24.31 W, followed closely by the valve absent configuration (Case 4) at
Ptotal = 24.72 W. However, the trade-off between the lower power consumption for the
valve absent configuration were longer warm-up times and increased error measure. The
factory configuration consumed the most power during testing, Ptotal = 109.37 W, due to
the constant pump and fan operation. In the valve absent with baffles configuration
(Case 5), the total power consumption does not consider the power required to operate
the baffles which would increase the reported value in Table 5.2.
Observation 4: The three-way valve configuration provides the most benefits, with very
few drawbacks in system design, and outperforms all other valve
configurations. If simplicity is desired, completely removing the valve
negatively impacts the cooling system performance. The addition of
baffles, while removing the thermostat valve, provides similar
performance to the three-way valve configuration at the cost of
additional radiator hardware.
From a design perspective, the valve absent configuration (Case 4) would be ideal
for cooling system simplicity. Extra hardware is eliminated by removing the valve which
reduces cost and engineering time associated with its development. However, this
architecture comes with the penalty of increased warm-up times, and therefore, results in
the valve absent configuration being ranked third. The addition of baffles helped to
improve the warm-up time when the valve was removed (Case 5) resulting in the
51
configuration being ranked second. For maximum control and flexibility, the three-way
valve configuration (Case 3) was ideal and ranked the highest in Table 5.2. During
testing, it performed very well by providing low warm-up times and tracking error while
consuming little power compared to the other cases. The two-way valve configuration
(Case 2) may be labeled obsolete when compared to the three-way valve’s performance
and carries the same relative cost and time for integration into the cooling system.
Further, the two-way valve configuration warm-up time was very similar to the valve
absent configuration, leading to the fifth rank. The fact that the factory configuration
(Case 1) had a favorable relative warm-up time compared to the other cases at the critical
cost of total power consumption and steady-state temperature error resulted in the fourth
rank.
52
CHAPTER SIX
CONCLUSION
gasoline and diesel engine cooling systems. In this study, a suite of servo-motor based-
cooling system components have been assembled and controlled using a Lyapunov-based
nonlinear control technique. The control algorithm has been investigated using both
simulation and experimental tests. Two detailed and two supplemental controllers were
applied to regulate the engine coolant temperature. In each instance, the controllers
successfully maintained the engine block to prescribed setpoint temperatures with small
error percentages. It has also been shown that the power consumed by the system
actuators can be reduced. Overall, the findings demonstrated that setpoint temperatures
valve configurations were examined and tested for effectiveness: factory, two-way valve,
three-way valve, and valve absent. Summarizing the findings, the three-way valve
time when compared to the other cases. The two-way valve and valve absent
configurations were very similar in performance, leading to the conclusion that a two-
way valve can possibly be eliminated entirely form the cooling system. Finally, a
tradeoff exists between the three-way valve and valve absent configurations. The
inherent cost of designing and implementing a three-way valve must be weighted against
the improved performance. Overall, the results and observations made in Chapter 5
Future Work
1) In-Vehicle Testing: Advanced thermal management systems testing must include in-
were all obtained from testing performed on a steam-based thermal test bench. This
the coolant. In an actual engine, many variables go into the amount of heat
affect the cooling system would still need to be simulated (such as vehicle speed).
This leads to in-vehicle testing, which would be ideal for future continuation of
2) Cold Weather Testing: The bulk of this research was conducted at ambient operating
vehicles address issues with elevated temperature engine cooling due to the fact that
the cooling system components are designed to maintain operating conditions at the
54
conditions are often not considered when designing cooling systems because warm
weather effects have a large impact on the lifespan of an engine. One of the major
problems with the operation of cooling systems in cold weather is the cold coolant
charge that develops in the radiator when the thermostat is in the bypass position.
When the thermostat switches positions to allow flow through the radiator, this cold
coolant charge is introduced into the hot engine. Due to these large temperature
fluctuations, high thermo-cyclic stresses are created which distort the engine block
and head leading to possible damage (Heisler, 1995). Design of cooling system
components that allow ideal operation in both cold and warm weather offers further
environment. Current radiator baffle designs are either manually operated by the
al., 1982). The shutterstat is usually located on the engine block and controls the
opening and closing of the radiator baffles/shutters via pneumatic pressure from an
engine powered air pump. Typically, the shutterstat operates in a similar manner to
the conventional wax based thermostat. When the engine is cold wax in the
shutterstat is solid and a spring holds a pneumatic spool valve in the closed position
as shown in Figure 6.1. When the engine reaches its operating condition, the wax in
the shutterstat begins to melt and expand, compressing the retaining spring and
55
Radiator
(Top View) DC motor controls shutter
position and velocity through the
Warm Coolant gear train
Air Flow
Radiator Fan
Shutterstat
– controls
pneumatic
actuator
Cold Coolant
Many of the problems associated with the typical thermostat are also present in
the shutterstat. Namely, the passive nature of such a system. The opportunity exists
the radiator into a variable rate heat exchanger by allowing complete airflow
regulation. In theory, variable control of airflow through the radiator would eliminate
the need for any type of thermostat valve because heat rejection is controlled by the
shutters/baffles. Although the possibility of this refinement exists, both actuators and
controller would need to be designed based on the radiator and engine performance.
This additional electric motor control would need to be controlled by the Engine
4) Investigation of Mixing Tanks: Yet another solution for dealing with a cold
environment exists in the introduction of a coolant mixing tank. The mixing tank
would combine coolant from the radiator and engine allowing a mean temperature to
develop before reintroducing it to the engine (Page et al., 2005). This would
effectively eliminate the temperature gradient seen in cold environments and reduce
56
the system complexity involved with radiator shutters/baffles. Research could be
57
APPENDICES
Appendix A
Proof of Theorem 1
1 1
V = Ce e 2 + Crη 2 (A.1)
2 2
where z (t ) ∈ ℜ2 is defined as
z = [e η ] T . (A.2)
2 2
λ1 z (t ) ≤ V ( z, t ) ≤ λ2 z (t ) (A.3)
where λ1 , and λ2 are positive constants. After taking the time derivative of (A.1), then
where (16) was utilized. From Appendix B, an expression for η ( t ) CrT&vr ( t ) becomes
1
η CrT&vr = 1 + sgn ( ue ) x, x = η Cr ( β1 N e − β 2e − β 3η ) (A.5)
2
where β1 , β2 , and β3 are defined in (B.3). From (A.5), it is clear that η ( t ) CrT&vr ( t ) ,
introduced in (A.4), changes with respect to the sign of the control input ue ( t ) .
where (20) and (21) were utilized. To facilitate the subsequent analysis, the auxiliary
59
N% e = − Me (A.7)
N% r = − Me − Mη (A.8)
where (18) and (19) were used as well as M introduced in (11). Application of (A.7),
2 2 2 2
V& ≤ − K e e − K r η + e N ed − M e + η N rd − M η . (A.9)
By using (A.2) and completing the squares for the last four terms on the right-
hand side of (A.9), the following inequality can be obtained (Qu, 1998) as
2
V& ≤ −λ3 z + ε o (A.10)
2 2
N N
where λ3 = min {K e , K r } and ε o = ed + rd . From (A.1), (A.3), and (A.10), then
4M 4M
e(t ),η (t ) ∈ L∞ and ue (t ), ur (t ) ∈ L∞ based on (20) and (21). Thus, Tvr (t ) ∈ L∞ can be
realized using (15) in Remark 2 and the relation Tvr = Tvro + Tvr . From the previous
m& r = mo + m = H o m& c + Hm& c and the information in (10), (15), and (16).
C
V& = eN ed + eN% e − K e e2 + η N r − K rη 2 − η Cr β1N e + eMη − K e r eη (A.11)
Ce
where (17), (20), (21), and (A.5) were applied. For convenience, the expression in (A.11)
may be rewritten as
60
C
V& = − K e e2 − K rη 2 + eN% e + eN ed + η N% + η N d + eMη − K e r eη (A.12)
Ce
N% = N − N d . (A.13)
N = N r − Cr β1N e (A.14)
computed as
C
N% = − M − K e r e − Mη (A.16)
Ce
based on (17), (18), (19), and (B.3). By utilizing (A.7), (A.16), and the triangle
2 2 2 2
V& ≤ − K e e − K r η + e N ed − M e + η N d − M η . (A.17)
The final step of the proof follows the same argument presented in Case I to
2 2
2 N N
demonstrate that V& ≤ −λ3 z + ε o and all signals are bounded where ε o = ed + d .
4M 4M
61
Appendix B
where (15) and the relation Tvr = Tvro + Tvr were utilized. The parameter M was
introduced in (11). After taking the first time derivative of (B.1), the following
where (16), (17), and (20) were applied. The coefficients β1 , β2 and β3 are defined as
Ke K2 K
β1 = , β 2 = e , β3 = e . (B.3)
MCe MCe Ce
62
Appendix C
L.P. Steam
L.P. Filtered Steam
Pressure H.P. Steam
Regulator
Drain/Return
H.P. Filter
L.P.
Steam
Filter
[1]
6 ft/
48 tubes
H.P.
Steam
Outlet
Steam
Trap
Desuperheater
Heat Exchanger
Steam Trap
[1]
63
2) Open low pressure steam drain valve [2] slowly (to prevent water hammer) while [1] is
still opened to flush condensate – leave open until steam is coming from the drain
L.P. Steam
L.P. Filtered Steam
Pressure H.P. Steam
Regulator
Drain/Return
H.P. Filter
L.P.
Steam
Filter
[1]
6 ft/
48 tubes
H.P.
Steam
Steam
Outlet [2]
Trap
Desuperheater
Heat Exchanger
Steam Trap
[2]
64
3) Close low pressure steam drain valve [2] slowly, leave main low pressure steam
control valve [1] open. Now, slowly open the low pressure filter control valve [3].
L.P. Steam
L.P. Filtered Steam
Pressure H.P. Steam
Regulator
Drain/Return
H.P. Filter
L.P.
Steam
Filter
[1]
6 ft/
48 tubes
H.P.
Steam
Steam
Outlet [2]
Trap
[3]
Desuperheater
Heat Exchanger
Steam Trap
[3]
[2]
65
4) Allow steam to build pressure in the filter (approximately 10-15 min). Once pressure
has stabilized in filter, open the heat exchanger control valve [4].
L.P. Steam
L.P. Filtered Steam
Pressure H.P. Steam
Regulator
Drain/Return
H.P. Filter
L.P.
Steam
Filter
6 ft/
48 tubes
H.P.
Steam
Outlet
Steam
Trap
[4]
Desuperheater
Heat Exchanger
Steam Trap
[4]
66
5) Steam is now being routed through the heat exchanger. Adjust the heat exchanger
control valve [4] to control the amount of heat entering the system. Periodically purge
steam through the purge valve [5] to bleed air.
L.P. Steam
L.P. Filtered Steam
Pressure H.P. Steam
Regulator
Drain/Return
H.P. Filter
L.P.
Steam
Filter
6 ft/
48 tubes
H.P.
Steam
Outlet
Steam
Trap
[5] [4]
Desuperheater
Heat Exchanger
Steam Trap
[5]
[4]
67
6) If the system needs to be shut down in case of an emergency or for any other reason,
close the main low pressure steam control valve [1] and open the low pressure steam
drain valve [2] to relieve pressure in the system.
L.P. Steam
L.P. Filtered Steam
Pressure H.P. Steam
Regulator
Drain/Return
H.P. Filter
L.P.
Steam
Filter
[1]
6 ft/
48 tubes
H.P.
Steam
Steam
Outlet [2]
Trap
Desuperheater
Heat Exchanger
Steam Trap
[1] [2]
68
Complete System Schematic
L.P. Steam
L.P. Filtered Steam
Pressure H.P. Steam
Regulator
Drain/Return
H.P. Filter
L.P.
Steam
Filter
[6] [1]
6 ft/
48 tubes
15 psi
H.P. Burst
Steam Plug
Outlet
Steam
[2]
Trap
[3]
[7]
[5] [4]
Desuperheater
Heat Exchanger
Steam Trap
69
Notes:
• When first starting the system it would help to clear condensate if the main high
pressure steam control valve [6] and high pressure steam drain valve [7] are opened
before the low pressure side. The high pressure steam will then clear most the
condensate in the lines and help to prevent water hammer. The high pressure steam
only needs to be run around 5 minutes to ensure most the condensate has cleared.
• There is a 15 psi burst plug located on the low pressure filter manifold, do not allow
low pressure to rise above 15 psi without replacing the burst plug. If the plug does
burst, close the main low pressure steam control valve [1].
• Low pressure can be adjusted on the pressure regulator by turning the screw located
on the top. Counter clockwise rotation (loosening) of the screw reduces pressure.
70
Appendix D
double Qo, Cpc, H, Te, Tr, E, Cpa, mf, Tinf, Cr, mc, CrTr_dot;
Qo = u0[0];
Cpc = u0[1];
H = u0[2];
Te = u0[3];
Tr = u0[4];
E = u0[5];
Cpa = u0[6];
mf = u0[7];
Tinf = u0[8];
Cr = u0[9];
mc = u0[10];
y0[0] = CrTr_dot/Cr;
C–Code for the S-Function builder block “RadCon”
double ke, kr, Ce, Cr, Cpc, Ho, Tr, Tvr, dTed, e, Ue, M, eta, lam1, lam2, lam3, Urbar, Ur,
mc;
ke = u0[0];
kr = u0[1];
Ce = u0[2];
Cr = u0[3];
Cpc = u0[4];
Ho = u0[5];
Tr = u0[6];
Tvr = u0[7];
dTed = u0[8];
e = u0[9];
Ue = u0[10];
mc = u0[11];
M = Cpc * Ho * mc;
eta = Tr - Tvr;
lam1 = (Cr * ke)/M;
lam2 = (Cr * ke)/Ce + (Cr * ke * ke)/(M * Ce);
lam3 = (Cr * ke)/Ce;
Urbar = - lam2 * e - lam3 * eta;
y0[0] = eta;
y0[1] = Ur;
mbar = u0[0];
mo = u0[1];
mc = mbar + mo;
F = 0.17 - mc;
if (F >= 0 ) {H = F/0.085;}
else {H = 0;}
y0[0] = mc;
y0[1] = H;
72
C–Code for the S-Function builder block “Heat”
double t, Qin;
t = u0[0];
y0[0] = Qin;
double Cpa, Cpc, Hbar, Te, Tr, Tinf, E, mc, Ur, F, denom, mf;
Cpa = u0[0];
Cpc = u0[1];
Hbar = u0[2];
Te = u0[3];
Tr = u0[4];
Tinf = u0[5];
E = u0[6];
Ur = u0[7];
mc = u0[8];
F = Cpc * Hbar * mc * (Te - Tr) - Ur;
denom = E * Cpa * (Te - Tinf);
y0[0] = F;
y0[1] = mf;
Qin = u0[0];
Cpc = u0[1];
H = u0[2];
Te = u0[3];
Tr = u0[4];
Ce = u0[5];
mc = u0[6];
73
CeTe_dot = Qin - Cpc * H * mc * (Te - Tr);
y0[0] = CeTe_dot/Ce;
double ke, Te, Ted, Tvro, Cpc, Ho, Tr, e, Ue, Hbar, Tvrbar, Tvr, mc;
ke = u0[0];
Te = u0[1];
Ted = u0[2];
Tvro = u0[3];
Cpc = u0[4];
Ho = u0[5];
Tr = u0[6];
mc = u0[7];
e = Ted - Te;
Ue = ke * e;
y0[0] = e;
y0[1] = Ue;
y0[2] = Hbar;
y0[3] = Tvr;
t = u0[0];
Tedo = u0[1];
74
Appendix E
// ==============================================================
// QMotor - A PC Based Real-Time Graphical Control Environment @ 2000 QRTS
// ==============================================================
// Control Program : NormRadOper.cpp
// Description : Normal Radiator Operating Strategy
// ==============================================================
// ----- QRTS libraries -----
#include "ControlProgram.hpp"
#include "IOBoardClient.hpp"
#include "ButterworthFilter.hpp"
// ----- C standard libraries -----
#include <math.h>
#include <Adams3Integrator.hpp>
//==============================================================
// Class definition of the NormRadOper class
//==============================================================
class NormRadOper : public ControlProgram
{
private:
Adams3Integrator< double > myIntegrator;
Adams3Integrator< double > myIntegrator_PowMeas;
protected:
// ----- Log Variables -----
double filteredTe, filteredTr, filteredTHEin, filteredTHEout;
double filteredTsteam, u, H, mr, mc, mf, Cpc, Cpa, eps;
double filteredKgPS, filteredGPM, filteredFrequencyFR, Qin, filteredmf;
double VPE, POT, DVP, DVPPer, volt;
double fanCur, fanPow, e, PowMeas;
double *adc;
// A/D channels
int *digitalInput;
// Digital inputs
int *encoder;
// Encoder channels
int *encoderAtIndex;
// Encoder values at the index mark
// ----- Control Parameters -----
double Kp;
// proportional gain for the valve control
double K, alpha, rho;
// control gains for the engine block
75
double Ted;
// desired temperature of engine blocks
int doOutput;
// Set to 1 to enable output to D/A and digital out
double cutOffFrequency;
double dampingRatio;
double COF;
double DR;
// ----- Other variables -----
ButterworthFilter<double> filterTe;
ButterworthFilter<double> filterTr;
ButterworthFilter<double> filterTHEin;
ButterworthFilter<double> filterTHEout;
ButterworthFilter<double> filterTsteam;
ButterworthFilter<double> filterFreqFR;
ButterworthFilter<double> filterVR;
ButterworthFilter<double> filterPOT;
// ----- Clients -----
IOBoardClient *iobc;
// ----- Other Variables -----
int numDac;
int numAdc;
int numEncoders;
int numDiginBits;
int numDigoutBits;
int digoutValue;
public:
NormRadOper(int argc, char *argv[]) : ControlProgram (argc, argv) {};
// Constructor. Usually no need to make changes here
~NormRadOper () {};
// Destructor. Usually no need to make changes here
// ----- User Functions -----
// This functions need to be implemented by the user in order to implement
// his control application. The user does not need to implement all of them,
// but usually at least enterControl(), startControl(), control() and
// exitControl() are implemented.
virtual int enterControl();
virtual int startControl();
virtual int control();
virtual int valveControl();
virtual int readTemp();
virtual int getErrorSign(double);
virtual int commStrategies();
virtual int pumpControl();
virtual int fanControl();
virtual int stopControl();
76
virtual int exitControl();
};
//==============================================================
// NormRadOper::enterControl
//==============================================================
int NormRadOper::enterControl()
{
const char *ioboardServerName =
d_config.getStringEntry("ioBoardServerName", "qrts/iobs0");
iobc = new IOBoardClient(ioboardServerName);
if (iobc->isStatusError())
{
d_status.setStatusError()
<< d_applicationName << ": [IOBoardTest::startControl()] "
<< "Error connecting to IO board server " << ioboardServerName
<< endl;
delete iobc;
iobc = 0;
return -1;
}
numEncoders = iobc->getNumEncoders();
numAdc = iobc->getNumAdc();
numDac = iobc->getNumDac();
numDiginBits = iobc->getNumDiginBits();
numDigoutBits = iobc->getNumDigoutBits();
// Start message
d_messageStream
<< endl << "----- " << d_applicationName << " -----" << endl
<< "This is a program to test all channels of an I/O board" << endl
<< "It displays A/D, encoder and digital input channels and" << endl
<< "outputs a sine wave to the D/A channels and alternates" << endl
<< "all digital output channels" << endl
<< endl;
d_messageStream
<< "---- Connected to IO Board server " << ioboardServerName << " ----"
<< endl
<< "Number of A/D channels: " << numAdc << endl
<< "Number of D/A channels: " << numDac << endl
<< "Number of encoder channels: " << numEncoders << endl
<< "Number of digital inputs: " << numDiginBits << endl
<< "Number of digital outputs: " << numDigoutBits
<< endl;
77
encoder = new int [(numEncoders)? numEncoders:1];
encoderAtIndex = new int [(numEncoders)? numEncoders:1];
digitalInput = new int [(numDiginBits)? numDiginBits:1];
// ----- Register the log variables -----
registerLogVariable(&filteredTe, "Te", "Engine Temperature");
registerLogVariable(&filteredTr, "Tr", "Radiator Temperature");
registerLogVariable(&filteredTHEin, "THEin", "Heat Exchanger Inlet
Temperature");
registerLogVariable(&filteredTHEout, "THEout", "Heat Exchanger Outlet
Temperature");
registerLogVariable(&filteredTsteam, "Tsteam", "Steam Temperature");
registerLogVariable(&filteredKgPS, "filteredKgPS", "Filtered Kg/sec");
registerLogVariable(&filteredFrequencyFR, "filteredFrequencyFR", "Filtered
Frequency Flow Rate");
registerLogVariable(&Qin, "Qin", "System Heat Input");
registerLogVariable(&VPE, "VPE", "Valve Position Error");
registerLogVariable(&POT, "POT", "Potentiometer Feedback");
registerLogVariable(&DVP, "DVP", "Desired Valve Position");
registerLogVariable(&DVPPer, "DVPPer", "Desired Valve Position Percentage");
registerLogVariable(&e, "e", "Engine Temperature Tracking Error");
registerLogVariable(&mf, "mf", " Radiator Fan Air Mass Flow Rate");
registerLogVariable(&mr, "mr", "Radiator Coolant Mass Flow Rate");
registerLogVariable(&mc, "mc", "Engine Coolant Mass Flow Rate");
registerLogVariable(&fanCur, "fanCur", " Radiator Fan Current");
registerLogVariable(&fanPow, "fanPow", " Radiator Fan Power Consumed");
registerLogVariable(&PowMeas, "PowMeas", "The Power Measure");
registerLogVariable(&u, "u", "control");
registerLogVariable(&H, "H", "NVP");
registerLogVariable(adc, "adc", "Analog inputs", (numAdc)? numAdc:1);
78
"Cutoff frequency of low-pass filter for the valve feedback");
registerControlParameter(&DR, "DR",
"Damping ratio of low-pass filter for the valve feedback");
registerControlParameter(&doOutput, "doOutput",
"Set to 1 to enable output to digital and D/A channels");
// Set all control parameters initially to zero
clearAllControlParameters();
return 0;
}
//==============================================================
// NormRadOper::startControl
//==============================================================
int NormRadOper::startControl()
{
double initValue;
clearAllLogVariables();
digoutValue = 0;
iobc->setDacValue(4, 5); //activate the voltage for the valve potentiometer
Cpc = 4.1813;
Cpa = 1;
eps = 0.6;
initValue = 0;
myIntegrator.setSamplingPeriod(d_controlPeriod);
myIntegrator.reset(initValue);
myIntegrator_PowMeas.setSamplingPeriod(d_controlPeriod);
myIntegrator_PowMeas.reset(initValue);
filterTe.setCutOffFrequency(cutOffFrequency);
filterTe.setDampingRatio(dampingRatio);
filterTe.setSamplingTime(d_controlPeriod);
filterTe.setAutoInit();
filterTr.setCutOffFrequency(cutOffFrequency);
filterTr.setDampingRatio(dampingRatio);
filterTr.setSamplingTime(d_controlPeriod);
filterTr.setAutoInit();
filterTHEin.setCutOffFrequency(cutOffFrequency);
filterTHEin.setDampingRatio(dampingRatio);
filterTHEin.setSamplingTime(d_controlPeriod);
filterTHEin.setAutoInit();
filterTHEout.setCutOffFrequency(cutOffFrequency);
filterTHEout.setDampingRatio(dampingRatio);
filterTHEout.setSamplingTime(d_controlPeriod);
filterTHEout.setAutoInit();
filterTsteam.setCutOffFrequency(cutOffFrequency);
filterTsteam.setDampingRatio(dampingRatio);
filterTsteam.setSamplingTime(d_controlPeriod);
79
filterTsteam.setAutoInit();
filterPOT.setCutOffFrequency(cutOffFrequency);
filterPOT.setDampingRatio(dampingRatio);
filterPOT.setSamplingTime(d_controlPeriod);
filterPOT.setAutoInit();
filterVR.setCutOffFrequency(cutOffFrequency);
filterVR.setDampingRatio(dampingRatio);
filterVR.setSamplingTime(d_controlPeriod);
filterVR.setAutoInit();
filterFreqFR.setCutOffFrequency(COF);
filterFreqFR.setDampingRatio(DR);
filterFreqFR.setSamplingTime(d_controlPeriod);
filterFreqFR.setAutoInit();
return 0;
}
//==============================================================
// NormRadOper::control
//==============================================================
int NormRadOper::control()
{
int i;
double sign, temp, tempp, integ;
double Temporary, const1, const2;
const1 = 0.439;
const2 = 3.655;
for (i = 0; i < numAdc; i++)
adc[i] = iobc->getAdcValue(i);
for (i = 0; i < numEncoders; i++)
encoder[i] = iobc->getEncoderValue(i);
for (i = 0; i < numEncoders; i++)
encoderAtIndex[i] = iobc->getEncoderIndexValue(i);
for (i = 0; i < numDiginBits; i++)
digitalInput[i] = iobc->getDiginBitValue(i);
H = 0;
valveControl();
readTemp();
filteredFrequencyFR = filterFreqFR.filter(adc[4]);
//80Hz max in the flow meter
filteredKgPS = 8 * 3.774 * filteredFrequencyFR/27.619 * 3.5/11; // Kg/sec
Qin = Cpc * filteredKgPS * (filteredTHEout - filteredTHEin);
e = Ted - filteredTe;
// when the valve action is needed
if (e <= 0.5) {H = 0; // radiator only}
else {H = 1; // bypass only}
// Thermostat wax valve operation (the pump and fan are set to constant speeds)
80
// if (filteredTe <= (Ted - 5)) {H = 1; // bypass only}
// else if (filteredTe >= (Ted + 5)) {H = 0; // radiator only}
// else {H = ((Ted + 5) - filteredTe)/10; }
valveControl();
sign = getErrorSign(e);
temp = alpha * (K + alpha) * e + rho * sign;
tempp = myIntegrator.integrate(temp);
if (tempp >= 50)
{integ = 50;}
else if (tempp <= -50) {integ = -50;}
else {integ = tempp;}
u = -(K + alpha) * e - integ;
commStrategies();
pumpControl();
fanControl();
Temporary = const1 * mc * mc + const2 * mf * mf;
PowMeas = myIntegrator_PowMeas.integrate(Temporary)/d_elapsedTime;
if (doOutput)
{
digoutValue = 1 - digoutValue;
for (i = 0; i < numDigoutBits; i++)
iobc->setDigoutBitValue(i, digoutValue);
}
return 0;
}
//==============================================================
// NormRadOper::valveControl
//==============================================================
int NormRadOper::valveControl()
{
// DVP: desired valve position [volts]
// POT: potentiometer reading (feedback from the valve) [volts]
// VPE: valve position error [volts]
double max, min, d, uu, VPE, V, POTT;
max = 4.2212;
min = 3.2031;
d = max - min;
POTT = adc[7];
POT = filterPOT.filter(POTT);
DVP = H * d + min;
VPE = DVP - POTT;
uu = -Kp * VPE;
if (uu >= 6) {V = 6;}
else if (uu <= -6) {V = -6;}
else {V = uu;}
81
iobc->setDacValue(0, V);
return 0;
}
//==============================================================
// NormRadOper::readTemp
//==============================================================
int NormRadOper::readTemp()
{
double Te, Tr, Tsteam, THEin, THEout;
Te = 80 * adc[0] + 173.15; //[Kelvin]
filteredTe = filterTe.filter(Te);
Tr = 100 * adc[1] + 273.15; //[Kelvin]
filteredTr = filterTr.filter(Tr);
THEin = 100 * adc[2] + 273.15; //[Kelvin]
filteredTHEin = filterTHEin.filter(THEin);
THEout = 80 * adc[3] + 173.15; //[Kelvin]
filteredTHEout = filterTHEout.filter(THEout);
Tsteam = 100 * adc[5] + 273.15; //[Kelvin]
filteredTsteam = filterTsteam.filter(Tsteam);
return 0;
}
//==============================================================
// NormRadOper::getErrorSign
//==============================================================
int NormRadOper::getErrorSign(double error)
{
int result;
if (error > 0) {result = 1;}
else if (error < 0) {result = -1;}
else {result = 0;}
return result;
}
//==============================================================
// NormRadOper::commStrategies()
//==============================================================
int NormRadOper::commStrategies()
{
double fan;
if (u < 0) {mr = 0; mf = 0;}
else
{ mr = u/(Cpc * (filteredTe - filteredTr));
fan = u/(eps * Cpa * (filteredTe - 293));
if (fan >= 1.157) {mf = 1.157;}
else {mf = fan;}
82
}
return 0;
}
//==============================================================
// NormRadOper::pumpControl()
//==============================================================
int NormRadOper::pumpControl()
{
if (H == 1) {mc = 0; // bypass only}
else {mc = mr/(1 - H); // radiator and others}
volt = 4.17 * mc;
if (volt >= 10) {VP = 10;}
else if (volt <= 1.65) {VP = 1.65;}
else {VP = volt;}
iobc->setDacValue(5, VP);
return 0;
}
//==============================================================
// NormRadOper::fanControl()
//==============================================================
int NormRadOper::fanControl()
{
double control, Vin, Vr1;
if (mf >= 1.157) {control = 10;}
else if (mf <= 0) {control = 0;}
else {control = 8.643042 * mf;}
iobc->setDacValue(1, control);
Vin = 2.31 * control;
Vr1 = ((filterVR.filter(adc[5]) + 0.244)/6800000) * 16800000;
fanCur = (filterVR.filter(adc[5]) + 0.244)/0.404762;
fanPow = fanCur * (Vin - Vr1);
return 0;
}
//==============================================================
// NormRadOper::stopControl()
//==============================================================
int NormRadOper::stopControl()
{
iobc->setDacValue(4, 0); // valve
iobc->setDacValue(5, 10); // pump
iobc->setDacValue(1, 10); // fan
return 0;
}
83
//==============================================================
// NormRadOper::exitControl
//==============================================================
int NormRadOper::exitControl()
{
// Disconnect from IO board server
delete iobc;
delete [] adc;
delete [] encoder;
delete [] encoderAtIndex;
delete [] digitalInput;
return 0;
}
//==============================================================
// main()
//==============================================================
main (int argc, char *argv[])
{
NormRadOper *cp = new NormRadOper(argc, argv);
cp->run();
delete cp;
}
84
Appendix F
//==============================================================
// QMotor - A PC Based Real-Time Graphical Control Environment @ 2000 QRTS
//==============================================================
// Control Program : BacksteppingRobust.cpp
// Description : Backstepping Robust Control Strategy
//==============================================================
// ----- QRTS libraries -----
#include "ControlProgram.hpp"
#include "IOBoardClient.hpp"
#include "ButterworthFilter.hpp"
// ----- C standard libraries -----
#include <math.h>
#include <Adams3Integrator.hpp>
//==============================================================
// Class definition of the BacksteppingRobust class
//==============================================================
class BacksteppingRobust : public ControlProgram
{
private:
Adams3Integrator< double > myIntegrator_PowMeas;
protected:
double Cpc, Cpa, eps, Ce, Cr, mc, mr, mo, PowMeas, desired, volt, H;
double POT, DVP;
// ----- Log Variables -----
double filteredTe, filteredTr, filteredTHEin, filteredTHEout;
double filteredTsteam;
double Te, Tr, THEin, THEout, Tsteam, Tvr;
double filteredKgPS, filteredGPM, filteredFrequencyFR, Qin, filteredmf;
double e, eta;
double mf, fanCur, fanPow;
double *adc;
// A/D channels
int *digitalInput;
// Digital inputs
int *encoder;
// Encoder channels
int *encoderAtIndex;
// Encoder values at the index mark
// ----- Control Parameters -----
double Kp;
// proportional gain for the valve control
85
double Ke;
// control gain for the engine block
double Kr;
// control gain for the radiator block
double Ted;
// desired temperature of engine block
double Tvro;
// Design constant for vertual reference of radiator block's temperature
int doOutput;
// Set to 1 to enable output to D/A and digital out
double cutOffFrequency;
double dampingRatio;
double COF;
double DR;
// ----- Other variables -----
ButterworthFilter<double> filterTe;
ButterworthFilter<double> filterTr;
ButterworthFilter<double> filterTHEin;
ButterworthFilter<double> filterTHEout;
ButterworthFilter<double> filterTsteam;
ButterworthFilter<double> filterFreqFR;
ButterworthFilter<double> filterVR;
ButterworthFilter<double> filtermf;
ButterworthFilter<double> filterPOT;
// ----- Clients -----
IOBoardClient *iobc;
// ----- Other Variables -----
int numDac;
int numAdc;
int numEncoders;
int numDiginBits;
int numDigoutBits;
int digoutValue;
public:
BacksteppingRobust (int argc, char *argv[]) : ControlProgram (argc, argv)
{};
// Constructor. Usually no need to make changes here
~BacksteppingRobust () {};
// Destructor. Usually no need to make changes here
// ----- User Functions -----
// This functions need to be implemented by the user in order to implement
// his control application. The user does not need to implement all of them,
// but usually at least enterControl(), startControl(), control() and
// exitControl() are implemented.
virtual int enterControl();
virtual int startControl();
86
virtual int control();
virtual int readTemp();
virtual int valveControl();
virtual int commStrategiesE(double);
virtual int pumpControl();
virtual int commStrategiesR(double);
virtual int fanControl();
virtual int stopControl();
virtual int exitControl();
};
//==============================================================
// BacksteppingRobust::enterControl
//==============================================================
int BacksteppingRobust::enterControl()
{
// Connect to server already here, because we need to know how many
// channels we have for registering the variables
const char *ioboardServerName =
d_config.getStringEntry("ioBoardServerName", "qrts/iobs0");
iobc = new IOBoardClient(ioboardServerName);
if (iobc->isStatusError())
{
d_status.setStatusError()
<< d_applicationName << ": [IOBoardTest::startControl()] "
<< "Error connecting to IO board server " << ioboardServerName
<< endl;
delete iobc;
iobc = 0;
return -1;
}
numEncoders = iobc->getNumEncoders();
numAdc = iobc->getNumAdc();
numDac = iobc->getNumDac();
numDiginBits = iobc->getNumDiginBits();
numDigoutBits = iobc->getNumDigoutBits();
// Start message
d_messageStream
<< endl << "----- " << d_applicationName << " -----" << endl
<< "This is a program to test all channels of an I/O board" << endl
<< "It displays A/D, encoder and digital input channels and" << endl
<< "outputs a sine wave to the D/A channels and alternates" << endl
<< "all digital output channels" << endl
<< endl;
d_messageStream
<< "---- Connected to IO Board server " << ioboardServerName << " ----"
87
<< endl
<< "Number of A/D channels: " << numAdc << endl
<< "Number of D/A channels: " << numDac << endl
<< "Number of encoder channels: " << numEncoders << endl
<< "Number of digital inputs: " << numDiginBits << endl
<< "Number of digital outputs: " << numDigoutBits
<< endl;
// ----- Allocate the log variables -----
adc = new double [(numAdc)? numAdc:1];
encoder = new int [(numEncoders)? numEncoders:1];
encoderAtIndex = new int [(numEncoders)? numEncoders:1];
digitalInput = new int [(numDiginBits)? numDiginBits:1];
88
registerControlParameter(&Kr, "Kr",
"Control gain for the radiator block control");
registerControlParameter(&Ted, "Ted",
"Desired Temperature of Engine Block");
registerControlParameter(&Tvro, "Tvro",
"Design constant for the Temperature of Radiator Block");
registerControlParameter(&cutOffFrequency, "cutOffFrequency",
"Cutoff frequency of low-pass filter");
registerControlParameter(&dampingRatio, "dampingRatio",
"Damping ratio of low-pass filter");
registerControlParameter(&COF, "COF", "Cutoff frequency of low-pass filter for
the valve feedback");
registerControlParameter(&DR, "DR", "Damping ratio of low-pass filter for the
valve feedback");
registerControlParameter(&doOutput, "doOutput",
"Set to 1 to enable output to digital and D/A channels");
// Set all control parameters initially to zero
clearAllControlParameters();
return 0;
}
//==============================================================
// BacksteppingRobust::startControl
//==============================================================
int BacksteppingRobust::startControl()
{
double initValue;
clearAllLogVariables();
digoutValue = 0;
iobc->setDacValue(4, 5);
mo = 0.4;
Cpc = 4.1813;
Cpa = 1;
eps = 0.6;
Ce = 17.14;
Cr = 8.36;
initValue = 0;
myIntegrator_PowMeas.setSamplingPeriod(d_controlPeriod);
myIntegrator_PowMeas.reset(initValue);
filterFreqFR.setCutOffFrequency(COF);
filterFreqFR.setDampingRatio(DR);
filterFreqFR.setSamplingTime(d_controlPeriod);
filterFreqFR.setAutoInit();
filterTe.setCutOffFrequency(cutOffFrequency);
filterTe.setDampingRatio(dampingRatio);
filterTe.setSamplingTime(d_controlPeriod);
89
filterTe.setAutoInit();
filterTr.setCutOffFrequency(cutOffFrequency);
filterTr.setDampingRatio(dampingRatio);
filterTr.setSamplingTime(d_controlPeriod);
filterTr.setAutoInit();
filterTHEin.setCutOffFrequency(cutOffFrequency);
filterTHEin.setDampingRatio(dampingRatio);
filterTHEin.setSamplingTime(d_controlPeriod);
filterTHEin.setAutoInit();
filterTHEout.setCutOffFrequency(cutOffFrequency);
filterTHEout.setDampingRatio(dampingRatio);
filterTHEout.setSamplingTime(d_controlPeriod);
filterTHEout.setAutoInit();
filterTsteam.setCutOffFrequency(cutOffFrequency);
filterTsteam.setDampingRatio(dampingRatio);
filterTsteam.setSamplingTime(d_controlPeriod);
filterTsteam.setAutoInit();
filterVR.setCutOffFrequency(cutOffFrequency);
filterVR.setDampingRatio(dampingRatio);
filterVR.setSamplingTime(d_controlPeriod);
filterVR.setAutoInit();
filtermf.setCutOffFrequency(100);
filtermf.setDampingRatio(100);
filtermf.setSamplingTime(d_controlPeriod);
filtermf.setAutoInit();
filterPOT.setCutOffFrequency(1000);
filterPOT.setDampingRatio(200);
filterPOT.setSamplingTime(d_controlPeriod);
filterPOT.setAutoInit();
return 0;
}
//==============================================================/
/ BacksteppingRobust::control
//==============================================================
int BacksteppingRobust::control()
{
int i;
double ue, ur, ur_bar, M, L1, L2, L3;
for (i = 0; i < numAdc; i++)
adc[i] = iobc->getAdcValue(i);
for (i = 0; i < numEncoders; i++)
encoder[i] = iobc->getEncoderValue(i);
for (i = 0; i < numEncoders; i++)
encoderAtIndex[i] = iobc->getEncoderIndexValue(i);
for (i = 0; i < numDiginBits; i++)
90
digitalInput[i] = iobc->getDiginBitValue(i);
valveControl();
readTemp();
filteredFrequencyFR = filterFreqFR.filter(adc[4]);
//80Hz max in the flow meter
filteredKgPS = 8 * 3.774 * filteredFrequencyFR/82.94; // Kg/sec
Qin = Cpc * filteredKgPS * (filteredTHEout - filteredTHEin);
desired = Ted + sin(0.1 * d_elapsedTime);
e = Ted - filteredTe;
ue = Ke * e;
commStrategiesE(ue);
pumpControl();
eta = filteredTr - Tvr;
M = Cpc * mo;
L1 = Ke * Cr/Ce;
L2 = (Cr * Ke * Ke)/(M * Ce) + L1;
L3 = Cr * Ke/Ce;
ur_bar = -L2 * e - L3 * eta;
if (ue < 0) {ur = -Kr * eta + 2 * M * e;}
else {ur = -Kr * eta + 2 * M * e + ur_bar;}
commStrategiesR(ur);
fanControl();
if (doOutput)
{
digoutValue = 1 - digoutValue;
for (i = 0; i < numDigoutBits; i++)
iobc->setDigoutBitValue(i, digoutValue);
}
return 0;
}
//==============================================================/
/ BacksteppingRobust::readTemp
//==============================================================
int BacksteppingRobust::readTemp()
{
Te = 80 * adc[0] + 173.15; //[Kelvin]
filteredTe = filterTe.filter(Te);
Tr = 80 * adc[1] + 173.15; //[Kelvin]
filteredTr = filterTr.filter(Tr);
THEin = 100 * adc[2] + 273.15; //[Kelvin]
filteredTHEin = filterTHEin.filter(THEin);
THEout = 80 * adc[3] + 173.15; //[Kelvin]
filteredTHEout = filterTHEout.filter(THEout);
Tsteam = 100 * adc[5] + 273.15; //[Kelvin]
filteredTsteam = filterTsteam.filter(Tsteam);
91
return 0;
}
//==============================================================
// BacksteppingRobust::valveControl
//==============================================================
int BacksteppingRobust::valveControl()
{
// DVP: desired valve position [volts]
// POT: potentiometer reading (feedback from the valve) [volts]
// VPE: valve position error [volts]
double max, min, d, u, VPE, V, POTT;
max = 4.2212;
min = 3.2031;
d = max - min;
POTT = adc[7];
POT = filterPOT.filter(POTT);
DVP = H * d + min;
VPE = DVP - POTT;
u = -Kp * VPE;
if (u >= 6) {V = 6;}
else if (u <= -6) {V = -6;}
else {V = u;}
iobc->setDacValue(0, V);
return 0;
}
//==============================================================
// BacksteppingRobust::commStrategiesE()
//==============================================================
int BacksteppingRobust::commStrategiesE(double ue)
{
double mbar, Tvrbar;
if (ue < 0)
{
mbar = -ue/(Cpc * (filteredTe - filteredTr));
Tvrbar = 0;
}
else
{
mbar = 0;
Tvrbar = ue/(Cpc * mo);
}
mr = mbar + mo;
Tvr = Tvro + Tvrbar;
return 0;
92
}
//==============================================================
// BacksteppingRobust::pumpControl
//==============================================================
int BacksteppingRobust::pumpControl()
{
double VP;
mc = mr/(1 - H);
volt = 4.17 * mc;
if (volt >= 10) {VP = 10;}
else if (volt <= 1.5) {VP = 1.5;}
else {VP = volt;}
iobc->setDacValue(5, VP);
return 0;
}
//==============================================================
// BacksteppingRobust::commStrategiesR()
//==============================================================
int BacksteppingRobust::commStrategiesR(double ur)
{
double F, fan, Temporary, const1, const2;
const1 = 0.439;
const2 = 3.655;
F = Cpc * mr * (filteredTe - filteredTr) - ur;
if (F < 0) {mf = 0;}
else
{
fan = F/(eps * Cpa * (filteredTe - 293));
if (fan >= 1.157) {mf = 1.157;}
else {mf = fan;}
Temporary = const1 * mc * mc + const2 * mf * mf;
PowMeas = yIntegrator_PowMeas.integrate(Temporary)/d_elapsedTime;
}
return 0;
}
//==============================================================
// BacksteppingRobust::fanControl
//==============================================================
int BacksteppingRobust::fanControl()
{
double control, Vin, Vr1;
if (mf >= 1.157) {control = 10;}
else if (mf <= 0) {control = 0;}
93
else {control = 8.643042 * mf;}
iobc->setDacValue(1, control);
Vin = 2.31 * control;
Vr1 = ((filterVR.filter(adc[5]) + 0.244)/6800000) * 16800000;
fanCur = (filterVR.filter(adc[5]) + 0.244)/0.404762;
fanPow = fanCur * (Vin - Vr1);
return 0;
}
//==============================================================
// BacksteppingRobust::stopControl()
//==============================================================
int BacksteppingRobust::stopControl()
{
iobc->setDacValue(4, 0); // valve
iobc->setDacValue(5, 10); // pump
iobc->setDacValue(1, 10); // fan
return 0;
}
//==============================================================
// BacksteppingRobust::exitControl
//==============================================================
int BacksteppingRobust::exitControl()
{
// Disconnect from IO board server
delete iobc;
delete [] adc;
delete [] encoder;
delete [] encoderAtIndex;
delete [] digitalInput;
return 0;
}
//==============================================================
// main()
//==============================================================
main (int argc, char *argv[])
{
BacksteppingRobust *cp = new BacksteppingRobust(argc, argv);
cp->run();
delete cp;
}
94
REFERENCES
Allen, D., and Lasecki, M., “Thermal Management Evolution and Controlled Coolant
Flow”, SAE paper no. 2001-01-1732, 2001.
Brace, C., Burnham-Slipper, H., Wijetunge, R., Vaughan, N., Wright, K., and Blight, D.,
“Integrated Cooling Systems for Passenger Vehicles,” SAE paper No. 2001-01-1248,
2001.
Chalgren, Jr, R., “Thermal Comfort and Engine Warm-Up Optimization of a Low-Flow
Advanced Thermal Management System”, SAE paper no. 2004-01-0047, 2004.
Chalgren, Jr, R., and Allen, D., “Light Duty Diesel Advanced Thermal Management,”
SAE paper No. 2005-01-2020, 2005.
Chalgren, Jr, R., and Barron, Jr, L., “Development and Verification of a Heavy Duty
42/14V Electric Powertrain Cooling System,” SAE paper no. 2003-01-3416, 2003.
Chalgren, Jr, R., and Traczyk, T., “Advanced Secondary Cooling Systems for Light
Trucks,” SAE paper No. 2005-01-1380, 2005.
Chanfreau, M., Joseph, A., Butler, D., and Swiatek, R., “Advanced Engine Cooling
Thermal Management System on a Dual Voltage 42V-14V Minivan,” SAE paper No.
2001-01-1742, 2001.
Chastain, J., and Wagner, J., “Advanced Thermal Management for Internal Combustion
Engines – Valve Design, Component Testing and Block Redesign”, SAE paper no. 2006-
01-1232, 2006.
Cho, H., Jung, D., Filipi, Z., and Assanis, D., “Application of Controllable Electric
Coolant Pump for Fuel Economy and Cooling Performance Improvement,” proceedings
of the ASME IMECE, Advanced Energy Systems Division, vol. 44, pp. 43-50, Anaheim,
CA, November 2004.
Choukroun, A., and Chanfreau, M., “Automatic Control of Electric Actuators for an
Optimized Engine Cooling Thermal Management,” SAE paper no. 2001-01-1758, 2001.
Couëtouse, H., and Gentile, D., “Cooling System Control in Automotive Engines,” SAE
paper no. 920788, 1992.
Eberth, J., Wagner, J., Afshar, B., and Foster, R., “Modeling and Validation of
Automotive “Smart” Thermal Management System Architecture,” SAE paper No. 2004-
01-0048, 2004.
Hisler, H., “Advanced Engine Technology”, Hodder Headline Group: London, 1995.
Henry, R., Koo, J., and Richter, C., “Model Development, Simulation and Validation, of
Power Train Cooling System for a Truck Application,” SAE paper No. 2001-01-1731,
2001.
Hong, H., Parvate-Patil, G.B., and Gordon, B., “Review and Analysis of Variable Valve
Timing Strategies – Eight Ways to Approach”, Proceeding of the Institution of
Mechanical Engineers, Part D: Journal of Automobile Engineering, vol. 218, no. 10, pp
1179-1200, 2004
Incropera, F., and DeWitt, D., “Introduction to Heat Transfer”, John Wiley and Sons:
New York, 1990.
Lehner, C., Parker, G., Arici, O., and Johnson, J., “Design and Development of a Model
Based Feedback Controlled Cooling System for Heavy Duty Diesel Truck Applications
Using a Vehicle Engine Cooling System Simulation”, SAE paper No. 2001-01-1731.
2001
Melzer, F., Hesse, U., Rocklage, G., and Schmitt, M., “Thermomanagement”, SAE paper
no. 1999-01-0238, 1999.
Mianzo, L., and Peng, H., “Modeling and Control of a Variable Valve Timing Engine”,
Proceedings of the American Control Conference, vol. 1, pp. 554-558, 2000.
Mitchell, T., Salah, M., Wagner, J., and Dawson, D., “Automotive Thermostat Valve
Configurations for Enhanced Warm-Up Condition Performance – Control, Testing, and
Observations” submitted to the ASME Journal of Dynamic Systems, Measurement, and
Control, 2007
Page, R., Hnatczuk, W., and Kozierowski, J., “Thermal Management for the 21st Century
– Improved Thermal Control & Fuel Economy in an Army Medium Tactical Vehicle,”
SAE paper No. 2005-01-2068, 2005.
Qu, Z., “Robust Control of Nonlinear Uncertain Systems,” John Wiley & Sons, 1998.
96
Redfield, J., Surampudi, B., Ray, G., Montemayor, A., Mckee, H., Edwards, T., and
Lasecki, M., “Accessory Electrification in Class 8 Tractors,” SAE paper no. 2006-01-
0215, 2006.
Salah, M., Wagner, J., and Dawson, D., “Adaptive and Robust Tracking Control for
Thermal Management Systems,” Clemson University CRB Technical Report,
CU/CRB/10/2/06/#1, http://www.ces.clemson.edu/ece/crb/publictn/tr.htm, October 2006.
Salah, M., Mitchell, T., Wagner, J., and Dawson, D., “Nonlinear Control Strategy for
Advanced Thermal Management Systems”, to appear in the IEEE Transactions on
Vehicular Technology, 2008.
Schoner, H.P., “Automotive Mechatronics”, Control Engineering Practice, vol. 12, no.
11, pp. 1343-1351, November, 2004.
Setlur, P., Wagner, J., Dawson, D., and Marotta, E., “An Advanced Engine Thermal
Management System: Nonlinear Control and Test”, IEEE/ASME Transactions on
Mechatronics, vol. 10, no. 2, pp. 210-220, April 2005.
Ursini, V., Chiang, E., and Johnson., J., “A Computer Cooling System Study of a Diesel
Powered Truck for Control of Transient Coolant, Oil and Cab Temperatures”, SAE paper
No. 821049, 1982.
Visnic, B., “Thermostat, Thy Days Are Numbered” Wards Autoworld, vol. 37, no. 6, pp.
53-54, June 2001.
Wagner, J., Marotta, E., and Paradis, I., “Thermal Modeling of Engine Components for
Temperature Prediction and Fluid Flow Regulation”, SAE paper No. 2001-01-1014,
2001.
Wagner, J., Ghone, M., Dawson, D., and Marotta, E., “Coolant Flow Control Strategies
for Automotive Thermal Management Systems,” SAE paper no. 2002-01-0713, 2002a.
Wagner, J., Paradis, I., Marotta, E., and Dawson, D., “Enhanced Automotive Engine
Cooling Systems – A Mechatronic Approach”, International Journal of Vehicle Design,
vol. 28, nos. 1/2/3, pp. 214-240, 2002b.
Wagner, J., Srinivasan, V., and Dawson, D., “Smart Thermostat and Coolant Pump
Control for Engine Thermal Management Systems,” SAE paper No. 2003-01-0272, 2003.
97
Zou, X., Jordan, J.A., and Shillor, M., “A Dynamic Model for a Thermostat”, Journal of
Engineering Mathematics, vol. 36, pp. 291-310, January 1999.
98