Analysis, Design, and Control for ... Temperature-Restricted Environments I Ethan B Heller

Analysis, Design, and Control for Robots in
Temperature-Restricted Environments
MASSACHUSETTS INS1TIOi
OF TEC OLOGY
by
4121:111
Ethan B Heller
B.S.M.E., Tufts University (2007)
I
LBRAI
Submitted to the Department of Mechanical Engineering
in partial fulfillment of the requirements for the degree of
Master of Science in Mechanical Engineering
at the
MASSACHUSETTS INSTITUTE OF TECHNOLOGY
June 2013
©
Massachusetts Institute of Technology 2013. All rights reserved.
A u th o r .................................. . . r ........ ................
Department of Mechanical Engineering
May 10, 2013
Certified by ........
Kamal Youcef-Toumi
Professor of Mechanical Engineering
Thesis Supervisor
...
David E. Hardt
Professor of Mechanical Engineering
Graduate Officer
A ccepted by ...........................
2
Analysis, Design, and Control for Robots in
Temperature-Restricted Environments
by
Ethan B Heller
Submitted to the Department of Mechanical Engineering
on May 10, 2013, in partial fulfillment of the
requirements for the degree of
Master of Science in Mechanical Engineering
Abstract
In this thesis, the problem of controlling the internal and external temperatures of
a robot operating within a temperature-restricted environment was addressed. One
example of a temperature-restricted environment is the interior of a holding tank
for Liquefied Petroleum Gas (LPG), which is the focus of the analysis in this work,
but not the only possible application. This gas is stored at sub-zero temperatures
to maintain its liquidity, and any significant rise in temperature can cause the gas
to vaporize, posing a safety hazard. The tank in which the gas is stored must be
periodically inspected for defects. Using robot inspectors while the tank is in service
would reduce the cost due to lost productivity during human inspection. A thermal management system (TMS) was designed to maintain the robot's electronics and
components within operating limits, while preventing the external environment from
increasing in temperature above safe levels. A detailed model of the system was constructed for simulation, and the results indicate that the system performs as intended,
but requires closed-loop control to maintain robot operation for extended periods of
time. A control system based on system model linearization and model predictive
control was implemented for the TMS. The results of the closed-loop simulations indicate that the control system enhances the operation of the TMS, maintaining robot
operating temperatures for extended periods of time, while avoiding an unsafe rise in
the temperature of the external environment.
Thesis Supervisor: Kamal Youcef-Toumi
Title: Professor of Mechanical Engineering
3
4
Acknowledgments
I would first like to thank my advisor, Kamal Youcef-Toumi, and my labmates at
the Mechatronics Research Laboratory (MRL) for their help and support throughout
the time it took to finish this thesis. Without the guidance of Prof. Youcef-Toumi
and the other students in the MRL, none of this work would have been possible.
In particular, my thanks go to Dimitris Chatzigeorgiou and Amith Somanath, who
have been in the lab with me since the beginning, and have always provided help and
advice when asked.
I also would like to thank GE Aviation, whose financial support and time consideration was instrumental in my work here at MIT. I would specifically like to thank
my patient managers and coworkers, who were understanding of my dual role.
The Qatar National Research Fund has generously supported the robotic inspection project in progress both at MIT and Qatar University. I would also like to thank
Prof. Uvais Qidwai of Qatar University for helping me understand their end of the
project, and Tunde Yusuf of the RasGas Company for answering my questions about
LNG and LPG storage.
In the course of my studies I received help from many people, but there are a few
who I would specifically like to thank. Dan Burns, a former member of the MRL,
and Chris Laughman, both of the Mitsubishi Electric Research Laboratories, were
always patient with my Dymola questions. John Batteh and Jesse Gohl of Modelon
were even more patient with my questions on Dymola and everything Modelica, and
invaluable in helping me make my simulation work.
Finally, Leslie Regan in the
graduate office forever has all the answers.
Last, and most importantly, I would like to thank my family. My ever-patient
wife, Krystin, for putting up with the final few months of this endeavor, and my
parents, who kindly managed not to ask every day how the thesis was coming along.
Without you, I would not have made it this far.
5
6
Contents
1
1.1
1.2
1.3
1.4
2
15
Introduction
M otivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
1.1.1
LPG and LNG Storage . . . . . . . . . . . . . . . . . . . . . .
15
1.1.2
Inspection of Gas Storage Tanks . . . . . . . . . . . . . . . . .
16
1.1.3
Robotic Inspection
. . . . . . . . . . . . . . . . . . . . . . . .
16
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
1.2.1
Robot Design in Qatar . . . . . . . . . . . . . . . . . . . . . .
18
1.2.2
Need for Electronic Temperature Regulation . . . . . . . . . .
18
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
1.3.1
Heat Storage for Electronic Cooling . . . . . . . . . . . . . . .
19
1.3.2
Robots Operating in Space.
. . . . . . . . . . . . . . . . . . .
19
. . . . . . . . . . . . . . . . . . . . . . .
20
Background
Prior Work
Thesis Structure and Scope
23
Design
2.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.2
Design Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
. . . . . . . . . . . . . . . .
25
2.3
2.2.1
Restricted Waste Heat Rejection
2.2.2
System Design Objectives
. . . . . . . . . . . . . . . . . . . .
27
2.2.3
Overview of the Thermal Management System . . . . . . . . .
27
2.2.4
The Thermal Management System Used for Initial Analysis
28
A nalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
2.3.1
Actuator Heat Generation
. . . . . . . . . . . . . . . . . . . .
31
2.3.2
Thermal Transfer Fluid . . . . . . . . . . . . . . . . . . . . . .
32
7
2.4
3
Thermoelectric Conversion . . . . . . . . . . . . . . . . . . . .
33
2.3.4
Thermal Rejection Convection . . . . . . . . . . . . . . . . . .
34
2.3.5
Thermal Resistor Model Results . . . . . . . . . . . . . . . . .
35
2.3.6
Total System Power Generation . . . . . . . . . . . . . . . . .
36
2.3.7
Thermal Storage Volume . . . . . . . . . . . . . . . . . . . . .
37
Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
Modeling
39
3.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
3.2
Modeling of the TM S components . . . . . . . . . . . . . . . . . . . .
41
3.2.1
Component Construction . . . . . . . . . . . . . . . . . . . . .
41
3.2.2
Component Verification Testing . . . . . . . . . . . . . . . . .
48
System Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
3.3.1
Assembly
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
3.3.2
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
3.3
3.4
4
2.3.3
Control
61
4.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
4.1.1
Background . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
4.2.1
Closed-Loop Control Construction
. . . . . . . . . . . . . . .
65
4.2.2
Model Modification for Control
. . . . . . . . . . . . . . . . .
67
4.2.3
Input and Output Choices . . . . . . . . . . . . . . . . . . . .
68
4.2.4
Choice of Linearized States
. . . . . . . . . . . . . . . . . . .
70
4.2.5
MPC Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
4.3.1
Controller Testing . . . . . . . . . . . . . . . . . . . . . . . . .
74
4.3.2
Tuning Simulations . . . . . . . . . . . . . . . . . . . . . . . .
75
4.2
4.3
4.4
Results.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
4.5
Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
79
8
5
83
Conclusions and Recommendations
...............
5.1
Summ ary
5.2
Future Work .................
.. . . . . . . . . . . . . . .
83
.. . . . . . . . . . . . . . .
86
87
A Modelica Code and Graphical Models
.. . . . . . . . . . . . .
A.1 System Model ................
A.2 M otor Unit
87
97
..............
A.3 DC M otor ...............
100
A.4 Heater ....................
103
Backward Hysteresis . . . . .
105
A.5 Fluid Block . . . . . . . . . . . . . .
106
. . . . . . . . . . . . . .
109
A.7 HC-50 Medium . . . . . . . . . . . .
110
A.8 PCM Block . . . . . . . . . . . . . .
114
A.8.1
PCM Interior Unit . . . . . .
119
A.8.2
PCM Edge Unit . . . . . . . .
121
A.8.3
PCM Corner Unit ........
123
A.4.1
A.6 TE Module
.........
125
LPG Medium .........
129
A.9 External Convection
A.9.1
B Modelica Verification Testing and Simulink Comparison Testing
B.1 Verification Testing . . . . . . . . . . . . . .
B.2 Simulink and Dymola Comparison Tests
. . . . . . . . . .
133
133
138
C Matlab Code
145
D Closed-Loop Simulation Test Results
153
9
10
List of Figures
17
.................................
..
1-1
Neptune II........
2-1
Comparison of the components
2-2
Layout of analyzed Thermal Management System
. . . . . . . . . . . . . . . . . . . . .
26
. . . . . . . . . . .
29
2-3
Thermal resistance model without PCM energy storage . . . . . . . .
30
3-1
Fluid block thermal resistance data-fit results
. . . . . . . . . . . . .
42
3-2
Fluid block m odel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3-3
Dymola model of PCM block
. . . . . . . . . . . . . . . . . . . . . .
45
3-4
Fluid block verification test results
. . . . . . . . . . . . . . . . . . .
49
3-5
TE module verification test model . . . . . . . . . . . . . . . . . . . .
50
3-6
TE module verification test results
. . . . . . . . . . . . . . . . . . .
51
3-7
PCM block verification test results
. . . . . . . . . . . . . . . . . . .
52
3-8
External convection verification test results . . . . . . . . . . . . . . .
53
3-9
Heater verification test results . . . . . . . . . . . . . . . . . . . . . .
54
. . . . . . . . . . . . . . . . . . . . . . . .
55
3-11 System responses for three levels of fluid flow . . . . . . . . . . . . . .
58
3-12 Dymola results to a trapezoidal velocity input . . . . . . . . . . . . .
59
. . . . . . . . . . .
67
3-10 TMS system model layout
4-1
Illustrations of two time window implementations
4-2
Comparison of the heat flow to the PCM block or ambient
. . . . . .
68
4-3
Simulation velocity results with poorly-shaped output reference values
73
4-4
Dymola motor temperature results to a trapezoidal velocity input
74
4-5
Example of simulation output results with poorly-shaped references
11
.
75
4-6
Closed-loop velocity results . . . . . . . . . . . . . . . . . . . . . . . .
77
4-7
Closed-loop output results comparison: measured vs. linearized
. . .
78
4-8
Closed-loop motor temperature comparison: measured vs. linearized .
79
4-9
Closed-loop velocity comparison: measured vs. linearized . . . . . . .
80
4-10 Velocity results for the end of the simulation . . . . . . . . . . . . . .
80
4-11 External temperature results for the end of the simulation
. . . . . .
81
Dymola graphical model of the TMS system . .
. . . . . . . . . .
88
A-2 Dymola graphical model of the motor unit . . .
. . . . . . . . . .
97
. . .
. . . . . . . . . .
100
A-4 Dymola graphical model of the heater . . . . . .
. . . . . . . . . .
103
. . .
. . . . . . . . . .
106
A-i
A-3 Dymola graphical model of the DC motor
A-5 Dymola graphical model of the fluid block
A-6 Dymola graphical model of the PCM block . . .
. . . . . . . . . . 114
A-7 Dymola graphical model of external convection .
. . . . . . . . . . 125
Fluid block verification test model . . . . . . . .
. . . . . . . . . .
134
B-2 PCM block verification test model . . . . . . . .
. . . . . . . . . .
135
B-3 External convection verification test model . . .
. . . . . . . . . .
136
B-4 Heater verification test model . . . . . . . . . .
. . . . . . . . . .
137
B-i
B-5 Dymola model of the TMS system used for Dymola/Simulink comparison tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
138
B-6 Simulink model of the TMS system used for Dymola/Simulink comparison tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
139
B-7 Dymola results for the external heat flow . . . . . . . . . . . . . . . .
140
. . . . . . . . . . . . . . .
140
B-9 Dymola results for the PCM average temperature . . . . . . . . . . .
141
B-8 Simulink results for the external heat flow
B-10 Simulink results for the PCM average temperature . . . . . . . . . . . 141
B-11 Dymola results for the fluid block heat flows . . . . . . . . . . . . . .
142
. . . . . . . . . . . . .
142
. . . . . . . . . . . . . .
143
B-14 Simulink results for the system temperatures . . . . . . . . . . . . . .
143
B-12 Simulink results for the fluid block heat flows
B-13 Dymola results for the system temperatures
12
D-1
Closed-loop calculated control commands . . . . . . . . . . . . . . . .
153
D-2
Closed-loop output predictions of the MPC . . . . . . . . . . . . . . .
154
D-3
Closed-loop output reference values . . . . . . . . . . . . . . . . . . .
154
13
14
Chapter 1
Introduction
The components of a robot generate waste heat during operation, which must be
removed or those components may cease to work properly. In most cases, that waste
heat is rejected to the ambient environment, but in some cases the environment cannot
tolerate the rejection of waste heat.
It is for these circumstances that a Thermal
Management System (TMS) is proposed. This system incorporates several additional
components in the robot construction, in order to safely transport the heat away from
the generating components, store the heat, and reject the heat to the environment.
The proposed design was modeled in Dymola and simulated in MATLAB/Simulink
with both open-loop and a proposed closed-loop control. These simulations illustrate
the usefulness of the TMS for robot operation in a refrigerated environment, but use
of this system is not limited to those cases.
1.1
1.1.1
Motivation
LPG and LNG Storage
Once retrieved and processed, Liquefied Petroleum Gas (LPG) and Liquefied Natural
Gas (LNG) are often stored in large, above-ground tanks. The interiors of these tanks
are kept refrigerated, in order to keep the gasses in their liquid state. When stored
at atmospheric pressure, LPG is chilled to -45 'C and kept below -42 'C to prevent
15
vaporization. The typical storage temperature of LNG is even colder at -162 'C, and
it must be kept below -158 'C to avoid vaporization. [45]
[58]
The storage tanks typically have diameters of roughly 100 m and heights of 50 m.
[43] These tanks can be constructed in a number of styles. The most common tank
style is double-walled, with insulation sandwiched between two steel walls. Regular
inspection of the tank walls is necessary to ensure that the steel does not contain
any flaws, such as corrosion, cracks, or weld defects. Inspection specifications and
intervals for refrigerated tanks vary depending on what type of liquefied gas is being
stored. [44] [3]
1.1.2
Inspection of Gas Storage Tanks
The outer surface of the tank can be inspected for defects while the tank is in operation
with no loss of productivity. Interruption in the operation of a tank represents a very
large loss of productivity, so tank inspection is ideally performed with the tank still
in service. However, the current inspection process for the inside of a liquefied gas
holding tank is to drain the tank of all the gas, bring the interior temperature up
to human-survivable levels, and to manually inspect the interior surface. This entire
maintenance cycle, including re-refrigerating the tank and refilling it with gas, can
take up to eight months, at the cost of approximately $10 million per day in lost
productivity. [58] It is therefore clear that a solution for in-operation inspection is
immensely beneficial. One such solution is the use of robotic inspectors.
1.1.3
Robotic Inspection
There are great advantages to operating robots as inspectors inside liquefied gas holding tanks versus using human inspectors. These robots can perform necessary inspections on the tanks without the environmental restrictions that human inspectors have.
This allows the robots to perform the inspections while the tank is still in service,
saving significant money for the tank operator during the inspection. Additionally,
removing the need to place a person within an enclosed hazardous environment signif16
icantly increases operational safety, regardless of whether the inspection is performed
with the tank in or out of operation.
Figure 1-1: Neptune II used with permission from http://www.frc.ri.cmu.edu/
-hagen/samplers/figures/neptuneon-rustyplate . gif
Robots for inspection of petrochemical holding tanks have existed as a commercial
option for many years. There are many examples of robots that inspect the outer
walls of holding tanks using either magnetic treads or wheels, or suction-tipped limbs
to climb the sides of the tanks, such as those presented in [37], [38], [50], [51], [60],
and [25]. Fewer robots inspect the tank interiors. Two examples of current in-tank
inspection robots-for products stored at room temperature-are the Neptune system
and the TechCorr On-Stream Tank Inspection System (OTIS). The Neptune system
is capable of performing floor and wall inspections to American Petroleum Institute
(API) standard 653. The robot uses both vision and ultrasonic sensors to gather
inspection data. The Neptune II robot is shown in Fig. 1-1. [52] Similarly, OTIS
also performs API 653 inspections on the floor of storage tanks. TechCorr operates
OTIS on a commercial basis, with several systems in operation. As of March 2011,
OTIS has inspected over 175 tanks. [56] However, these two robots are still limited
to operation within gasses stored at room temperature.
17
1.2
1.2.1
Background
Robot Design in Qatar
One project in progress to design a robotic inspector for use in refrigerated liquefied
gas holding tanks is out of Qatar University. Their design incorporates safety features
such as brushless motors to avoid any potential sparks that can be ignition sources,
and an insulated compartment for the robot's electronics. Two types of sensors are
incorporated into the design: magnetic flux leakage sensors and visual sensors. The
current choice for the magnetic flux leakage sensor is the Silverwing Handscan. Using
these sensors in combination allows the robot to identify defects in the interior wall
of the holding tank. [6]
1.2.2
Need for Electronic Temperature Regulation
Though the electronics in the Qatar robot are insulated against the refrigerated environment, there are no active or passive controls over the temperature of those
electronics.
As the inspection takes place, the electronics will generate heat, and
when kept inside an insulated compartment, will eventually saturate their environment with this heat. Once the compartment is saturated with the electronics' waste
heat, the internal temperature of the electronics will increase, leading to overheating,
and shutting down the robot. Some method must be employed to remove the waste
heat from the electronics in order to maintain proper robot operation during inspection. This method must also be actively monitored to ensure that the waste heat
leaving the robot does not pose a safety risk in the ambient environment of liquefied
gas.
18
1.3
Prior Work
1.3.1
Heat Storage for Electronic Cooling
One method of removing the waste heat from the electronics without rejecting that
heat to the ambient environment is to store most of the heat energy. Phase-change
materials are already used commercially to store thermal energy when that energy
cannot be dissipated. One application of this use is to maintain the temperature of
electronics operating in heated ambient environments. As described in [41], a heat
sink incorporating heat storage in the form of phase-change material (PCM) is utilized
in firefighting as a method of keeping infrared cameras cool within the environment
of a building fire. In this case, the PCM absorbs the heat generated by the camera
when the ambient temperature is above the temperature of the electronics, increasing
the running time of the camera before overheating.
Other works, such as
[55]
and [16], address the design of PCM-filled heat sinks
as a method of maintaining temperatures of electronics in the face of peak usage,
where the design of a cooling system capable of dissipating the peak heat generation
does not fit with the usage of the electronics (such as in mobile devices).
Both of
these works specifically focus on increasing the operating time of electronics before
overheating, and mention the need to include heat spreaders in the PCM to evenly
distribute the heat through the PCM due to the poor thermal conductivity of the
material.
1.3.2
Robots Operating in Space
Although the use of PCM can help ensure that the electronics do not overheat, being
too cold for operation is also a concern. When operating in very cold environments,
the electronics must be maintained above their lower operating temperature limit.
Most of the prior work in the heating of electronics for applications in cold environments relates to the operation of robotic craft in space. The most obvious parallel to
draw is to the robotic rovers used in the Mars missions. These rovers (including the
19
latest, Curiosity) house their main electronics in a Warm Electronics Box (WEB).
[33] [34] This box provides an insulated, temperature-controlled environment for the
rover's non-hardened electronics.
NASA provides some of the heating to the WEB
through electronic heaters, and the remaining heating requirements are met by radioisotope heating units, which are used to conserve electrical energy. [35] The WEBs
of the Mars rovers are insulated to reduce the heating requirements. The insulation
used in the WEBs is based on silica aerogel, a very lightweight material with extremely
low thermal conductivity. [36]
1.4
Thesis Structure and Scope
The body of this thesis is structured into three chapters, each of which defines a
distinct stage in the development of the Thermal Management System. The chapters
contain background information on the concepts used in that particular stage of the
TMS development and relevant discussion.
Design of the TMS
This chapter details the development of the TMS concept
and outlines the components that could be included in the configuration of the TMS.
Descriptions of the individual TMS components and their purposes are given. The
initial calculations that were performed show that the proposed concept will work
with commercially-available components.
Modeling of the TMS
This chapter describes the detailed modeling of one con-
figuration of the proposed TMS using the Modelica modeling language. The system
model is constructed of both standard and custom component models. Verification
testing confirmed that the component models behave as expected to simple inputs.
Several open-loop control simulations show that the TMS system behaves as intended,
and does indeed maintain robot component temperatures within operational levels
for a longer time than without the TMS. However, closed-loop control is necessary to
maintain robot operation for extended periods of time.
20
Control of the TMS
This chapter covers the development of the closed-loop con-
trol for the TMS in the MATLAB/Simulink environment.
The Modelica model is
exported to Simulink, where MATLAB functions are used to create a control system
for the TMS to ensure that system constraints are not violated during operation, even
for long durations.
21
22
Chapter 2
Design
This chapter proposes one design of a thermal management system for robots to meet
the challenges detailed in Chapter 1. Initial calculations show that this concept can
be implemented for an ambient environment of refrigerated LPG, maintaining the
components of the robot within operating temperatures and limiting the surrounding
temperature rise to safe values.
2.1
Introduction
Though robots are commonly deployed in a wide array of settings, one environment
that has not received much attention yet is one in which the robot surface temperature
cannot exceed a certain value. These environments include surroundings where safety
or an operational constraints limit the release of waste energy, such as areas that
are refrigerated.
Examples of cold environments that robots currently operate in
are space or on other planets, and underwater.
However, venting waste heat into
these environments is not typically an issue, unlike the interior environment of a
liquefied gas holding tank, where the product inside must be maintained at very cold
temperatures to prevent vaporization and avoid safety hazards.
Typical waste heat rejection
The waste heat generated by a robot's systems
is rejected from the systems using different methods, depending on the robot's op-
23
erating environment.
For a robot operating on land in a thermally-unconstrained
environment, rejection of generated waste heat is typically performed by either passive or active convection of the heat to the surrounding air inside the robot chassis or
conduction through the component housing. The air within the chassis is then circulated with the surrounding ambient environment. Rejection of waste heat underwater
substitutes the circulation of air for convection of heat from the chassis or housing to
the ambient environment. When the ambient environment is a vacuum, radiators are
deployed alongside active heat collection systems that reject waste heat into space. In
all of these conditions, the rejection of waste heat is dependent on the requirements
of the robot components, and the amount of heat rejected or rejection rate is not
considered. With the additional constraint of the environmental requirements, the
heat rejection system of the robot must incorporate components and controls that
provide sufficient component cooling, and govern the amount of heat rejected from
the robot.
Robots operating in cold environments typically control the temperature of their
electronics. For the robot to operate in a very cold environment, the on-board electronics must be heated to operating temperatures.
Typical electronics operate at
temperatures warmer than -40 'C, and electronics that operate in colder environments are either too costly for commercial use or still being researched.
[49]
[19]
Most of the prior work in heating electronics for this application is related to the
operation of robotic craft in space applications. The closest parallel to draw is to the
robotic rovers used in the Mars missions, which house their electronics in an insulated
warm electronics box. This WEB must also maintain the electronics below the upper
operating limits and incorporate methods for venting the.excess heat when necessary.
[35]
Liquid cooling designs
The use of fluid loops as a carrier for waste thermal energy
is currently employed in many existing systems. Computers and cars are two examples of everyday items that may use liquid cooling loops to maintain proper system
temperatures. These systems can be obtained commercially with numerous options
24
available. Most of the commercial offerings are not designed to work at freezing temperatures, however, and are not made of suitable materials for this application. [62]
2.2
Design Concept
The thermal management system proposed actively removes the generated waste heat
from the robot sub-systems and safely vents some of that energy into the ambient
environment.
The removal of waste heat in this situation requires additional sub-
systems in the robot compared to a typical robot. These sub-systems must maintain
the operational temperatures of the robot components and safely reject the excess
heat into the surrounding environment. These new systems require active controls to
optimize robot performance and maintain operational safety. The concept detailed
in this work is based on current commercial technologies for thermal management,
implemented for an LPG environment.
2.2.1
Restricted Waste Heat Rejection
Robots operating within thermally-constrained environments require additional special sub-systems for proper waste heat management. Figure 2-1 shows a comparison
of the general components in a typical robot and the components of a robot using the proposed thermal management system. This system incorporates a thermal
carrier that collects and transports components' waste heat to a thermal rejection device, which interfaces with the surrounding environment. Optionally, the system may
contain heaters that maintain components within operational temperatures, thermal storage devices that can absorb the waste heat instead of rejecting it to the
environment, thermo-electric (TE) conversion devices that convert the temperature
differential between two components of the thermal management system into usable
electric energy, and insulation covering the robot. All of these components may be
singular, plural, or distributed within the robot.
25
Typical Robot Components
Electronics
Power Supply
Actuators
Sensors
-
-
A
Proposed Robot Components
Thermal Rejection
(Thermal Storage
Actuators
Sensors
TE Conversion
Heaters
Thermal Insulation
B
Figure 2-1: Comparison of the components in a typical robot (A) and the proposed
system (B)
26
2.2.2
System Design Objectives
Operating in cold and hazardous environments also requires control of the temperature of the robot's electronics. In conjunction with the electrical heaters, the on-board
electronics create their own waste heat, reducing the load on the heaters once robot
operation is underway. Since this waste heat will be trapped within the insulated
WEB, a method of maintaining the electronics' temperatures is required to ensure
that operational temperatures are not exceeded. In order to safely reject the heat as
needed to the surrounding environment (comprised of LPG for this implementation)
a controllable device for venting will be incorporated in or on the robot. This heat
sink is fed the collected waste heat of the robot's electronics, sensors, and actuators.
The components are insulated against the ambient environment to prevent unsafe
heat loss.
Robots operating in cold and hazardous environments must not only control the
temperature of their electronics, but also the temperature of their external surfaces.
To prevent uncontrolled heat loss and reduce the amount of heating of the electronics
required, the interior of the WEB is insulated against the environment. The insulation
covering the proposed WEB, and the other electronics on the robot not housed in
the WEB, is based on silica aerogel, the same insulation used on the WEBs of the
Mars rovers.
[36] This insulation provides a very high thermal resistance versus
density ratio, compared with other commercially available insulations. In addition,
several commercial variants of silica-based aerogel insulation can be obtained in easilyinstalled sheets. [21] [48] [57]
2.2.3
Overview of the Thermal Management System
The thermal management system may contain multiple zones to obtain optimal system performance.
The system may have to maintain different robot sub-systems
at different maximum temperatures to satisfy the sub-system operating conditions.
Each of these zones contains an independent thermal carrier system, but may share
any of the other thermal management system components. Additionally, each of the
27
optional components of the system need not be incorporated into all zones.
Using multiple zones for components of different thermal requirements allows for
optimal tuning of the thermal management system. Allowing some sub-systems to
retain more heat reduces the amount of heat rejection necessary. Each of the zones
in the thermal management system may be controlled separately, with a supervisory
control that maintains communication with each zone and enforces the environmental constraints, or all zones may be controlled together. The control systems set and
maintain the thermal management system effort on the active sub-systems, and potentially reduce the robot sub-system operation levels below the commanded levels
to maintain acceptable thermal conditions. The supervisory controller uses a performance index based on the error between the robot component command levels and
actual operating levels, and the effort expended by the thermal management system
to maintain acceptable thermal conditions.
2.2.4
The Thermal Management System Used for Initial Analysis
The proposed thermal management system, analyzed as a feasibility study in this
chapter, considers only one zone in the system. The analyzed system was based
on the design of current liquid-coolers, but optimized for cold environments. This
thermal management system, shown in Fig. 2-2, spans the robots actuators, sensors,
and other electronics, and is designed to function in a similar manner to liquid-coolers
used in high-performance desktop computers. The primary difference between this
system and a commercial solution for a desktop computer is the use of materials that
are suited to the temperature range required in this application. Because this system
operates mainly within the freezing range of most standard liquid-cooling solutions, a
different type of fluid is required. After comparison of several potential heat-transfer
fluids that maintain liquidity to -50 0 C, Dynalene@HC-50 was chosen as the liquid for
use in the initial calculations. [23] Care was taken in choosing the pump and tubing
components for material compatibility with both the HC-50 and the cold environment.
28
heat sink /PCMV hybrid
TE device
fluid pump(s)
sensor(s)
system electronics
actuator with insulation covering
Figure 2-2: Layout of analyzed Thermal Management System
For weight and ease of installation, a polymer is chosen as the preferable material for
the tubing. Several polymers exhibit glass transition temperatures within the desired
range and are compatible with HC-50, such as ethylene propylene rubber. [1] [24]
If the robot's systems at full power consumption can produce more heat waste than
is safe to discharge at once, some heat must be absorbed. The heat sink attached to
the thermal management system may be designed to absorb some of the waste heat.
Thermal waste absorption can be accomplished via the inclusion of Phase-Change
Material (PCM) within the heat sink. As the energy from the thermal transfer fluid
is passed into the heat sink, the PCM will absorb the energy, and release a portion to
the heat sink fins. The preferential absorption of energy into the PCM is accomplished
via the internal interfaces between the PCM, the heat sink base, and the heat sink
fins. With this method, the rate of energy transfer to the ambient environment will
not exceed safety limits.
2.3
Analysis
The thermal analysis presented for the thermal management system is an initial
numerical assessment of one potential system to evaluate its suitability for full simulation. The system is constructed primarily of commercially-available components,
utilizing the thermal management system detailed in this paper. This initial study
is based on the power consumed by a typical actuator system and by the robot elec29
L
Tactuator
Ractuator mountmn
TCF
Rfluid bkok
bWW,
cold
lfluid block hot
t
THF R
~~~~powersupypoieenrytt actuator
T e
,
hc
heatsink
odcstehaTamb
hog
h
Figure 2-3: Thermal resistance model without PCM energy storage
tronics. Figure 2-3 shows a representation of a possible implementation of the robot
heat. The
components that are involved in the generation or transportation of waste
heat through the
power supply provides energy to the actuator, which conducts the
actuator mount to the fluid blocks of the thermal management system. The TE conversion device feeds electrical energy back to the power supply, and reduces the heat
load that is either stored or directly rejected to ambient.
A simple thermal-resistance model of the system was developed and analyzed.
the representation of
Figure 2-3 shows the thermal resistance model used overlaid on
the thermal management system proposed. The model analyzed considers only the
heat transfer from the actuator through the actuator mount and two heat-transfer
fluid blocks, which is released to the ambient environment via a finned heat sink,
with a TE conversion module placed between the second fluid block and the heat
sink. This model makes the following assumptions:
" The external ambient environment is at temperature Te.,t.
" The thermal properties of the thermal transfer fluid in the system are invariant.
" The thermal transfer fluid experiences no heat loss or gain within the system
except at the specific heat transfer blocks.
* The fluid pump does not require cooling.
" The properties of the TE module are constant.
30
e All system components have zero thermal capacity.
Additionally, the following conditions of the system were chosen:
" The robot actuators are motors generating waste heat.
" The heat sink is Lh, per side, cubed, with N fins of Nth thickness.
For this analysis, the ambient environment is chosen to be liquid propane maintained
at -45 'C with properties found in
[4],
and the thermal transfer fluid properties are
based on is Dynalene HC-50 fluid at -40 0 C. Additionally, the actuators are assumed
to generate 25W each, and the physical properties of the heat sink are as follows: Lh,
= 10 cm, N
2.3.1
10, and N
= 5 mm.
Actuator Heat Generation
The robot actuator considered in this analysis is a motor that would typically provide
power to the drivetrain. Though typical robots contain as least two of these actuators,
only a single motor was considered for this analysis for simplicity, with the energy generated by multiple motors addressed later. This type of actuator can generate waste
heat from both its electronics and the electrical resistance from the motor windings.
To avoid any potential sparks that could present a hazard in the working environment,
a brushless motor was chosen for use in the design of the robot. The motor chosen to
represent this typical drive motor is a Maxon electronically-commutated brushless DC
motor, number 283872. As indicated in [5], the normal operating ambient temperature range of this motor is between -40 and 100 0 C; therefore very little supplemental
heating will be required when operating within LPG, though significant heating will
be necessary to reach operating temperature when inspecting LNG tanks. The temperature of the single actuator is determined based on its power consumption, which
is determined from the torque generated, using calculations from [26]. The actuator's
temperature is calculated from the torque generated, which determines power draw.
The actuator's power consumption is calculated in Equ. (2.1) and used in Equ. (2.2)
31
to determine the actuator temperature:
P =
T2
2*
R
(2.1)
kt
(2.2)
Tmotor = P * Rth + Tmount
where P is the electric power dissipated by the motor,
T
is the motor torque, Re
is the electrical resistance of the motor windings, kt is the motor torque constant,
Rth
is the thermal resistance of the motor windings, and Tmotor and Tmount are the
motor and motor mount temperatures, respectively. The values of Re and kt are
temperature-dependent.
The heat generated from the actuator passes through the actuator mount, which is
connected thermally to a fluid block. The capacitance of the mount is not considered,
but the thermal resistance of the mount is modeled and added to the total system's
thermal resistance.
2.3.2
Thermal Transfer Fluid
The thermal transfer fluid carries the waste heat generated by the actuator to the
heat sink via the fluid blocks. After conduction of the heat through the actuator
mount, the heat is conducted through the fluid block and convected to the thermal
transfer fluid. The mass transport of the heat transfer fluid in this proposed system
is assumed to take place within insulated tubing, and as such, no heat transfer from
the fluid is calculated in-between the two fluid blocks.
At each fluid block (connected to the actuator mount and the TE module) the
heat convection to the thermal transfer fluid is calculated based on parameters for
forced flow within a square cross-section. This type of convection has a constant value
for the Nusselt number,
NUFB,
and the value of the heat transfer coefficient, hFB, is
calculated as
hFB-
NUFB * kFB
D(23
Dh
where Dh is the hydraulic diameter of the fluid block and kFB is the thermal conduc-
32
tion of the fluid. The Nusselt number used in Equ. (2.3) is a dimensionless parameter
that represents a ratio of the convective to conductive heat transfer at a surface based
on the Prandtl number (Pr), another dimensionless parameter, which is a ratio of
fluid momentum and thermal diffusivity. [30] The convection is then modeled as a
thermal resistance, which is counted in the system's total thermal resistance. [27]
2.3.3
Thermoelectric Conversion
The heat passing from the fluid block through the TE conversion module results in
electricity generation from the Seebeck effect, converting some of the waste heat back
into usable power. Equation (2.4) shows the power generation in the TE module as a
function of the temperature difference between the two sides of the device. Equation
(2.5) defines the temperature difference, relating it to the thermal resistance of the
TE module. [63]
I a2 AT 2
)
QTE = -( 'e
2 Reiec,total
AT =
(THF - THS) =
(in
-
(2.4)
(2.5)
QTE)RTE
In these equations, QTE is the rate of heat flow removed from the system by the
generation of electrical power in the TE module, ase is the Seebeck coefficient of the
TE module, AT is the temperature difference over the TE module, and
Qin is the rate
of heat flow entering the TE module. Reiec,total is the total electrical resistance of the
TE module (module electrical resistance plus load-with the load resistance taken as
equal to the module resistance). RTE is the thermal resistance of the TE module,
THF
is the hot fluid block temperature, and THS is the heat sink temperature. For
this analysis ase is set to 2.2*10-4 V/K, and Reiec,totai is chosen to be 2Q.
Equations (2.4) and (2.5) are solved iteratively with the equations in Section 2.3.4
to determine the value for QTE. The resulting power generated by the TE module,
equal to the power removed from the thermal circuit, is very small, 0.55 P W. This
small power output from the TE module is due to a calculated dT across the module
of only 6.8 'C. The calculated value of RTE is counted in the system's total thermal
resistance.
33
2.3.4
Thermal Rejection Convection
Thermal rejection in this system is performed by a finned heat sink. To simplify the
initial analysis, a thermal storage component is not included in the model. Thus, free
convection from a standard finned heat sink is modeled for the thermal rejection of
the system. To model the energy flow, the value of the heat transfer coefficient, h, for
free convection at the heat sink is calculated in Equ. (2.6). This calculation requires
determining Nu in Equ. (2.7), which in turn is solved from the calculation of the
Rayleigh number from fluid and system properties in Equ. (2.8).
The following is a list of the notation used in Equs. (2.6)-(2.8): oz is thermal
diffusivity of LPG, 3 is the volumetric expansion coefficient of LPG, V is the kinematic
viscosity of LPG, g is the acceleration due to gravity, k is the thermal conduction of
LPG, Pr is the Prandtl number, and T, is the surface temperature.
h=
Nu
=
Na * k
L
0.670Ra/ 4
0.68 +
Ra = g(Ts
-
(2.6)
0.492 )9/16)4/9
(2.7)
Text)L 3
(2.8)
The Rayleigh number, used in Equ. (2.7), is another dimensionless parameter. The
Rayleigh number is the ratio of the buoyancy and viscous forces in the fluid multiplied
by the Prandtl number. [28] Solving Equs. (2.6)-(2.8) for the free convection from
the heat sink to the liquid propane requires iterating though the value of T, for the
heat sink fins.
The thermal resistance of the heat sink, R, is calculated in Equ. (2.9), based on
the overall surface efficiency in Equ. (2.10). The fin surface efficiency used in Equ.
(2.10) is calculated in Equ. (2.11), based on the parameter m calculated in Equ.
(2.12), which is determined using the value of the heat transfer coefficient in Equ.
(2.6).
R
mo * h * At
34
(2.9)
ro=
NAf
At
(2.10)
*(1 -)f
tan m * L2.11)
m
m =
M
*c
h * Pf
h *Af
(2.12)
k * A,
The following is a list of the notation used in Equs. (2.9)-(2.12):
Ac is the cross-
sectional area of the fin, Af is the surface area of the fin, At is the total surface area
of the fin, L is the length of the fin, L, is the fin length plus half the fin thickness,
and Pf is the perimeter of the fin.
These equations thermally connect the cold side of the TE module to the ambient
(2.9), which is added to the
environment through the thermal resistance in Equ.
system's total thermal resistance.
2.3.5
Thermal Resistor Model Results
From the thermal resistance analysis, a final value for the temperature rise of the
actuator can be determined, in addition to the required thermal transfer fluid mass
flow. The analysis assumes that the amount of heat generated from the actuator,
minus the power recovered by the TE module, is safe to vent to the environment
and is completely rejected to ambient. The rejected heat can used with the total
system thermal resistance, RTotaI, to calculate the total temperature difference, ATyS,
between ambient and the actuator. The value of RTotal is obtained by summing each
component's thermal resistance, like that calculated by Equ. (2.9).
ATsys = (Tmotor - Text) = (Qgen
-
QTE)RTotal
(2.13)
The generation of waste heat by the operation of the actuator results in an actuator
temperature within operational limits. The temperature difference in Equ. (2.13) is
calculated to be 65 'C. The resulting actuator temperature of 20 0C is within the
actuators' operating temperature range.
[5] [29] [31] For the single actuator waste
heat elimination, the heat-transfer fluid will have to be pumped at a rate under 0.3
35
mL/s to maintain the heat transfer rate assumed. [23]
2.3.6
Total System Power Generation
The above analysis considers only a single source of heat generation, but robots will
have many sub-systems that all generate heat. The previous calculations assume that
the thermal management system can safely dispose of all the waste heat generated
by the system, otherwise, some energy must be stored for venting when the thermal outputs of the sub-systems are reduced, and capacity remains in the ambient
environment to absorb the stored energy.
The total robot power consumption is determined based on the following conditions for total energy production:
" Four actuators generating a total of 100 W waste heat, peak.
" PCM is paraffin technical grade 5913 (C13-24).
" The robot electronics (not including actuators and sensors) generate 13 W waste
heat, peak.
" The robot-mounted non-destructive testing sensor generates 33.6 W waste heat,
peak.
The electronics' waste heat generation is based on the waste power output of an
Intel® AtomTM D525 processor. [32] The sensor waste heat generation is based on
the power consumption of the Silverwing Handscan magnetic flux leakage sensor. [54]
The total generated power is calculated to be 146.6 W.
The thermal power capacity of the LPG environment is calculated and compared
to amount of thermal power generated by the system. To determine the amount power
the LPG can absorb without vaporizing, a mass of liquid propane corresponding to a
volume 1 mm thick, the width of the heat sink, and as long as the distance traveled by
the robot in 1 s (assumed to be 0.25 m) is considered as the heat absorbing medium.
Limiting the rise in LPG temperature by 4 'C, this mass can safely absorb 130.8
J (using the calculation Esafe = pV * (cpATLPG) for properties for LPG at -45 'C,
36
obtained from [41), while the robot's systems produce 146.6 J (based on the total
generated power of 146.6 W for 1 second). The difference of 15.8 J per second must
therefore be stored within the heat sink.
2.3.7
Thermal Storage Volume
In systems that generate more waste heat than can be safely absorbed by the environment, the excess energy must be stored on-board the robot. One method of storing
thermal energy is to utilize a PCM to absorb the energy, which requires a relatively
small volume of material versus using a single-phase material storage solution.
Based on the properties of solid paraffin (C13-24)
[151,
a heat sink with 10 cm
3
of
PCM could absorb the 15.8 J per second excess heat generation for 82.5 seconds before
it is completely melted. The energy stored by the PCM, denoted by E, is shown in
Equ. (2.14), where c is the heat capacity of the PCM, ATPcm is the temperature
difference between the PCM and the heat source, V is the volume of PCM, and A is
the latent heat of fusion of the PCM. [41]
E = pV * (cATPCM + A)
2.4
(2.14)
Discussion
A possible thermal management system for robots in temperature-restricted environments is detailed that utilizes thermally-conductive liquid to cool multiple robot
electronic components, and incorporates a control system to limit the thermal output
of the system. Initial calculations for an ambient environment of LPG, where the
thermal output must be regulated to ensure safe operation, show that the system
can be implemented with commercially-available components. This system is shown
to be able to maintain a single actuator at 20 'C within an ambient environment of
LPG with a required thermal fluid flow rate of only 0.3 mL/s. For four actuators,
some storage of the waste heat generated will be required to avoid an unsafe increase
in the LPG temperature. A heat sink with 10 cm 3 of solid paraffin was calculated
37
to be able to absorb the excess peak waste heat output of the robot for 82.5 seconds
before being completely melted. The next chapter will present a detailed model of
the proposed system.
38
Chapter 3
Modeling
This chapter details the construction and simulation for a detailed model of one
possible implementation of the proposed TMS. The modeling was performed in the
software package Dymola, which uses the Modelica language for multi-physics modeling, and simulates models numerically. The TMS system model was constructed
from standard, built-in component models whenever possible, but some of the TMS
components required custom models to represent the physics of the component. The
behavior of each component model and the system model was simulated with openloop inputs, and the models were verified to respond as expected. Open-loop simulations of representative inspection scenarios show that closed-loop control is required
to maintain all system states within operating limits.
3.1
Introduction
Background of Dymola and Modelica
Development of the modeling language
Modelica was first started in 1996 by Hilding Elmqvist, seeking to apply the principles
of object-oriented programming to modeling multi-physics systems. This concept allows for the drop-in re-use of models within a system, simplifying the user-generated
code. The first industrial use of Modelica occurred in 2000. In the same year, the
Modelica Association was founded.
[47]
Since then, the language has been devel-
oped and improved on, and currently is in version 3.2. [2] The language is released
39
open-source, and many different open-source and commercial programs exist that use
Modelica for modeling.
Native usage of Modelica is via text-based object-oriented programming, but the
language allows for annotations that define icons, which can be used in a graphical
interface. Additionally, the Modelica language does not assign causality during model
definition, but rather assigns relationships between states of different components.
These relationships are later assigned causality for numerical simulation at the time of
model compilation. Modelica describes the physics and interactions of the components
as sets of Differential Algebraic Equations (DAEs). The constitutive equations of all
objects are described in these DAEs, which are used to evaluate system state values
during the model compilation into assigned, causal code.
Dymola is a commercial program offered by Dassault Systemes, AB, that uses the
open-source Modelica language to model systems, and that provides several different
solvers to simulate those models.
In addition to the Modelica Standard Library
(MSL), which contains pre-constructed models of components for electrical, magnetic,
mechanical, and thermal-fluidic systems, as well as pre-defined mediums for use in
the thermal-fluidic systems, Dymola is compatible with any Modelica-based library.
Several open-source and commercial libraries exist for specialized modeling purposes,
such as the Modelon Liquid Cooling library used later in this work, which focuses
on the modeling of fluids to which heat is being added or subtracted, often in closed
loops. Additionally, Dymola offers the user a graphical interface for interacting with
Modelica, allowing a model to be constructed via the connection of icons representing
system components. In the definition of a model, system states need not be assigned
a strict start value for simulation. In the case of a linear system, these values are
calculated at the time of simulation, but for nonlinear systems, Dymola employs
an iterative method to determine the start values for the system states. In many
component models, these initial states can be constrained through the use of options.
This capability becomes very important in this work during the control of the TMS
model.
In constructing the model of the TMS, the acausal nature of the Modelica language
40
simplified the design of the model to a great extent. Specifically, for components such
as the TE module, determination of the driving side for heat flow was not required at
the time of model construction. This is compared to using causal modeling languages,
which would have required additional determinations of heat flow characteristics of
the system for model construction.
3.2
Modeling of the TMS components
The TMS component models were constructed largely from existing MSL models,
modified only by setting parameters and the connections between models to form a
sub-system. Several of the TMS components could not be realized by standard MSL
models however, and for these components custom models were constructed with the
appropriate physics. The Modelica definition of the models used in this work can be
found in Appendix A.
3.2.1
Component Construction
Five component models were created to assemble the TMS model.
These models
represent the system motors as the heat generators, which are connected to the fluid
blocks, allowing for heat transfer between the motors and the heat-transfer fluid. A
PCM block is modeled as the heat storage device, a TE module as the heat recovery
device, and there is a model of heat convection to ambient over a moving plate,
representing the heat release device. With the exception of the motors, each of these
main components required some sort of custom modeling.
Fluid blocks
This component model was designed to model the behavior of a
Priatherm PT Zed 1518 with Dynalene HC-50 flowing through it. [23] [8] To create
this model (and the fluid loop in the system), the HC-50 medium first had to be
defined in the Modelica language. Since HC-50 starts to phase transition into a vapor
at 118 'C
[17],
the medium was limited in scope and execution between -50 and 110
'C to ensure that the single-phase medium in the simulation would not represent the
41
thermal fluid when it is in a two-phase state. (It is also worth noting that the thermal
carrying capability of HC-50 drops significantly when it has become a vapor.)
10-
6
s
2
s
temperature (C)
flow (1pm)
Figure 3-1: Fluid block thermal resistance data-fit results
The second custom component of the fluid block model set the value of the thermal
resistance (Rth) of the fluid block from the liquid to the surface. This component
acted as a function of two variables, and output the Rth of the PT Zed 1518 based
on the medium temperature and volumetric flow rate. The function used to calculate
Rth was based on data from the PT Zed 1518 data sheet for the thermal resistance
of the block using a 50% volumetric mix of water and Ethylene Glycol at 40 0 C.
[8] From this
Rth versus volumetric flow data, a grid of Rth values over volumetric
flow and temperature was determined for HIC-5O using interpolations based on the
difference in properties between the two media and the change in medium properties
with temperature. This grid of Rth values was then imported into Matlab, where
a polynomial function was used to fit a surface over the data within the operating
points of the fluid. The resulting surface-fit function matches the calculated Rth data,
as shown in Fig. 3-1, with enough accuracy to use in the Modelica model of the fluid
block, representing the value of the thermal resistance of the fluid block from the
fluid to its surface. The plot shows that the thermal resistance of the fluid is highest
when there is low flow and the fluid temperature is high. This result aligns with the
expectation that increased fluid flow results in more heat being convected to the fluid
42
because of higher fluid velocities, and thus an increased convection coefficient.
portal
thermal conductance calculation
thermal mass of fluid block
temperatureSensor
degC
TA 0
volume flow meter
Figure 3-2: Fluid block model
The model of the fluid block, shown in Fig. 3-2, consists of a fluid pipe with heat
transfer to the convection model, where the Rth calculated is used to determine the
heat flow to a thermal port. This thermal port is where the fluid block connects
to another component model in the system. Finally, the thermal capacitance of the
aluminum wall of the fluid block is taken into account in the model with a capacitance
based on the mass of the block itself. Though some sources, such as [22], have
constructed fluid blocks for cooling electronics using element-based models similar to
the construction of the PCM block in Fig. 3-3, this simulation is more concerned
with the absolute temperature of the fluid in the block rather than the temperature
distribution, and thus this model uses only a single element for representing the flow
and heating of the fluid within the block.
Thermo-electric modules
The TE modules are modeled in Dymola using only
the constitutive equations for the thermo-electric generation, and no sub-models.
These equations calculate the heat flow across the module from equations based on
the generation of electricity within the module:
dQhoIt= Se * Thot * I + K * dT - 2
43
2
R,
(3.1)
dQcold= Se *Tol
1
2
I+K*dT+ - * I 2* Re
I = Se(Tot -TcId)
2Re
(3.2)
(3.3)
where K is the thermal conductance of each module half, Se is the Seebeck coefficient of the thermocouples, and I is the current across the TE module. dT is the
temperature difference across the module and Re is the electrical resistance of the TE
module, and the electrical resistance of the load on the module. [63] These equations
make the following two assumptions: the properties of the TE module are constant in
time, where typically the value of Se is dependent on temperature, and the electrical
resistance of the load is equal to the electrical resistance of the TE module itself, to
provide the most efficient power generation. Additionally, the thermal conductance
of the module is assumed to be a known constant. The properties for the TE module
used in this simulation come from the properties of the TE module simulated in [63].
Because the electrical supply of the robot in the TMS simulation is not modeled,
the power generated from the TE module is also not modeled, though the generated
current can be observed.
PCM block
The construction of the PCM block, the thermal storage in the system,
is most complex of the TMS component constructions. The PCM block is modeled as
a two-dimensional array of PCM masses enclosed in an aluminum case, with aluminum
fins spaced between the masses to act as heat spreaders. The model is shown in Fig.
3-3. Three types of PCM mass models were constructed for the component, for each
of the center, edges, and corners of the block. All three of these models have the core
PCM mass in common, which is a modified version of the MSL thermal capacitance.
The PCM capacitance has a variable value dependent on the temperature of the mass
in order to emulate the effects of the latent heat of melting for the PCM. Previous
work in [20] has shown that using an arc tangent function to represent the heat
capacity of the PCM allows for a series expansion calculation of the value of the
thermal capacitance, which yields accurate and computationally quick results. Other
options, such as using programmatic if statements, require a greater computational
44
port~b
PCM unit
PCMunit mass
I
0-
I-
k-PCM-m/9
I
A
M
-
A
-A T
7T
I
0-I-
k~LfhO
thicnes
I I
7~~i
I
-
I
.1.
II
i
A,
A
I
imm~
i
I
heat
spreader fin
I---
7,I
k=tick
pofla
I
i
Figure 3-3: Dymola model of PCM block
load without increased accuracy. The thermal capacitance of the PCM mass is thus
modeled as:
Ci(((T -
htransitin
Ttransition)CMR)2 + 1)
+ C
(3.4)
(
where c, is the effective heat capacity, htransition is the latent heat of melting, T is
current PCM mass temperature,
Transition is
the temperature of melting, CMR is the
melting range coefficient, used to adjust the width of the melting range, and cp* is
the sensible heat of the PCM. The temperatures are assumed to be in Kelvin. The
thermal capacitance is surrounded by standard thermal resistance blocks to mimic
45
the heat flow of a mass of PCM with a two-dimensional area. The edge and corner
models add thermal masses and resistances of the aluminum case sides to the PCM
block. All these components are assembled into the PCM block with the spreader
fins attached to the input edge of the block, extending throughout the array of PCM
masses.
This is the only sub-system modeled in discrete elements, rather than a lumped
element, though the mesh of the model is coarse. The choice to use nine discrete
PCM masses, rather than one mass, comes from the high thermal resistance of the
PCM. Although PCM makes a good thermal sink, it is a poor thermal conductor, and
a model of a single element very poorly represents the thermal distribution within
an area of PCM. [41] Initial models without the heat spreader fins showed almost no
temperature rise in the PCM masses along the top of the block, near the output. All
the heat was trapped in the first layer of PCM masses, and was not being spread out
throughout the block. Localizing the incoming energy to a small portion of the PCM
effectively negated the benefit of having any PCM above the first layer. This led to
the introduction of the spreader fins, to better distribute the heat coming into the
block and to take advantage of the full mass of the PCM.
The total mass of the PCM block used in this implementation of the TMS was
determined a-priori through calculation based on the desired component size (10 cm 3 )
and the density of the solid PCM. Dymola testing of the TMS confirmed that this
mass was sufficient for the energy-absorption needs of the system.
External convection model
The thermal rejection component of the TMS has
been identified previously as a finned heat sink, but for this component model it was
constructed as a heat sink consisting of a flat plate only. The fins of the typical heat
sink were not included for two reasons: to reduce computational complexity of the
model and to reduce the overall amount of heat energy convected to the system.
The use of a flat plate as the convection surface simplified the convection equations
to a forced flow over a plate, with the magnitude of the velocity of the stream equal
to the speed of the robot. Given this input, and assuming constant properties for the
46
ambient environment of LPG at -45 'C, the convection equations used to determine
the heat flow became:
Z
Nu
A
P * cp
(3.5a)
Re = vel * L
(3.5b)
Pr
(3.5c)
-
0.664Re1 /2Pr'/3
h=
L
gc = h * A
(3.5d)
(3.5e)
(3.5f)
where a is the thermal diffusivity of the LPG, A is the thermal conductivity of the
LPG, p is the LPG density, vel is the velocity of the robot in the LPG, L is the
length of the heat sink, and A is the area of the heat sink. The Dymola-specific term,
gc, is the thermal conductance of convection, in W/K. [30] The resulting thermal
flow is connected to a Modelon Liquid Cooling Library fluid system that models the
effect of LPG passing over the plate. This LPG is assumed to come from an ideal
-45 'C source and is passed back into the ambient at whatever temperature it has
reached. Modeling the heat flow to the fluid medium is done with a model of a fixed
fluid volume. The parameters of the volume have been chosen to align closely with
the actual heated surface of the flat plate, assuming an actively heated volume of 1
mm of LPG is in contact with the plate. The fixed volume models the fluid inside
as a lumped mass, mixing the incoming fluid properties with the properties of the
medium already contained in the volume, and expelling the appropriate amount of
fluid to maintain the pressure and volume of the medium inside the fixed fluid volume
component. The layout of the external convection model can be seen in Appendix A.
Heater model
The heater component model replicates the effects of a self-controlled
electrical resistance heater. This component senses the temperature of the port to
which is it connected, and either turns on or shuts off its resistance heater based on
47
a backward hysteresis of the temperature. The backward hysteresis component was
modified from the MSL hysteresis model to reverse the logic direction, turning on
the heater when the temperature drops below a minimum value and off when the
temperature rises above a maximum value. The power for the heater is a built-in
ideal power source, for which the amount of power consumed is a variable set at the
start of a simulation. The code for the backward hysteresis and heater models can
be found in Appendix A.
Motor unit
The detailed models available in Modelica of brushless DC motors are
highly complex and require significant computation time to simulate a simple input.
Efforts to construct a simplified model of a brushless motor either did not contain
the detail necessary to properly represent the motor or were again highly complex
and computationally demanding. To keep the model complexity down and maintain
a reasonable simulation time, the brushless DC motor was replaced in the simulation
by a standard, brushed, DC motor, also from Maxon, part 218012
[7].
In the motor
model, components other than the armature or core are assumed to not contribute
to the thermal generation of the motor, and frictional losses are not considered.
This motor was combined with a rotating mass to represent the load inertia and
with a quadratic resistive force on the shaft to represent the resulting forces resisting
the motion of the motor. The motor set was combined with a fluid block and thermal
masses to represent a complete motor unit, which consisted of the motor mounted to
a fluid block with a representative load. The code for the motor unit can be found in
Appendix A.
3.2.2
Component Verification Testing
The component models that were constructed required testing to ensure that the
components and sub-systems would simulate the intended behavior, especially the
components constructed from custom models.
48
Fluid blocks
The behavior of the fluid blocks was tested using a closed fluid loop
with a heat input. Variation in the fluid flow and input heat flow was used to confirm
that the heat transfer to the fluid was properly influenced by these variables. Testing
confirmed the expected behavior of the model. Figure 3-4 shows the results of the
verification test. As expected, the thermal resistance of the fluid (B) decreases with
an increase in the fluid flow (C), and increases as the fluid increases in temperature.
The decrease in the temperature plot (A) occurs because the increased flow of the
fluid starts to circulate un-heated fluid past the temperature sensor. Once the fluid
has made a complete loop within the closed circuit, the temperature increases again.
The model for this test can be found in Appendix B.
-
Fluid Temperature
105-
100A
95-
900
-
100
30
200
400
0
000
Thermal Resistance
45.
40-
B
3s.
30-
25~
0
-
10
20
300
400
000
60
0
Fluid Volume Flow
2.0t.o-
C
0.5-
0
40
3
200
4
50
time (s)
Figure 3- 4: Fluid block verification test results
49
0
60
ramp
drabonI
TE mdulei
fixedTemperature
prescribedHeatFlow
T-233
S
Figure 3-5: TE module verification test model
Thermo-electric module
In this simulation model, the TE module dissipates
some of the heat flux entering the module into electrical energy, and passes the remainder through to the other side of the module. The amount of this dissipation
depends only the temperature difference between the two sides of the module. The
verification test fixed the temperature on one side of the module and varied the heat
flux on the other, as shown in Fig. 3-5. This test configuration was chosen to illustrate the behavior of the TE module under an imposed heat flux on one side, which
could be experienced when attached to a fluid block, and a fixed temperature on the
other side, which could be experienced when attached to a motor unit. The electrical
generation of the module increased with increasing heat flux, as expected. Figure 3-6
shows the results of the test, with the electrical current generated in (A), the temperature difference across the TE module in (B), and the heat flow in and out of the
module in red and green, respectively, in (C). Figure 3-6(D) shows the temperatures
of the two sides of the TE module.
PCM block
The PCM block is a numerically-complex thermal capacitor model
with variable capacitance based on the current temperature of the block. Accordingly,
the temperature along one edge of the block was set to a value greater than the melting
point, and simulated over an extended time span (the thermal time constant of the
block is very long because the PCM has a low thermal conductivity, despite the heat
spreader fins). The resulting PCM mass temperatures showed the expected shape
in time, increasing in temperature until the melting point is reached, flat until the
50
-
TE module electrical current generated
A
2550
75
100
75
100
Temperature difference across the module
-
40
0
--
prescribed
Q flow
0
-
so
25
port A
Q flow
TE module port
50
25
port B temp
--
75
8 Q flow
10
0
TE module thermal port A temperature
-
-36-
D
_34-39-
0
25
time (s) so
7s
100
Figure 3-6: TE module verification test results
mass has melted, and then increasing in temperature again. Figure 3-7(A) shows
the average temperature of the nine PCM masses in the block, (B) shows the heat
flow into the block from the perspective of the block and the temperature boundary,
and (C) shows the variation in heat capacity of one of the PCM masses in the block.
Figure 3-7(C) clearly shows the increased thermal capacity of the PCM during the
melting phase, corresponding with the flat portion of the temperature plot in (A). The
rapid leveling-off of the heat flow into the PCM block seen in (B) can be attributed
to the large difference in the starting temperatures of the PCM block and the fixed
temperature. As the PCM warms up, melts, and starts to reach the same temperature
as the set value, the heat flow between the two models decreases. The model for this
51
test can be found in Appendix B.
PCM block average
-
temperature
A
-
I
-
Qflow of PCM block
C
Qflowoffixed temp
Q
masheat capacitance
5
EE
OM
4.
25
im4)SSE
2 i,
time
(s)
'4
55
3
x
SS
4
%
Figure 3-7: PCM block verification test results
External convection model
The rate of heat flow in the external convection block
depends on two inputs: the robot speed and the temperature of the convection plate.
Each of these two inputs was varied independently to show that the convection heat
flow and the fluid temperature respond correctly to the variation in the inputs. Figure
3-8 shows the results of the test. In (A) the heat flow of the model is shown, the
values of which correspond to the fluctuating values of the LPG temperature shown
in (B). Figure 3-8(C) shows that the convection thermal conductance increases with
increasing robot velocity, as expected, and explains the initial dynamics seen in (A)
and (B), when the test had not yet reached the steady-state velocity. The model for
this verification test can be found in Appendix B.
Heater model
The verification test model for the heater varied the temperature of
a thermal mass connected to the heater above and below the on-off set points for the
heater, causing the connected heater to turn on and off as the mass drops and rises
in temperature, as intended. The results of the test are shown in Fig. 3-9, where (A)
52
external cony tem.convection.Qflow
40
20 -
-20 -
0
-
20
60
40
so
100
externaLconv.temp.tMpertureSenorT
-44.8-
B
\
-45,2-
0
-
20
qxternLconvteMpgC
60
40
-
80
100
exttrn*l cnv.ntm.v*4 [m/s]
C
0
20
40
time
(s)
60
80
100
Figure 3-8: External convection verification test results
shows the temperatures of the variable temperature boundary and the thermal mass,
(B) shows the the heat flux from the heater (the negative value indicates that the
heat flow is leaving the heater), and (C) shows the logical switch state for the heater.
The model for this verification test can be found in Appendix B.
3.3
System Model
With all of the TMS component models constructed and tested, the TMS system
model was assembled. This model combined all of the components into a TMS similar
to the one outlined in the preliminary analysis, but with four heat generators and the
heat storage taken into account as well.
53
-
resareeoeratut*7T
te*CspactorT
-30-
A
-50-
10
0
-
20
30
40
50
60
70
80
90
50
60
70
80
90
100
coPheaterHeat_oUtQflow
0-
-10-
0
10
2
30
100
C
20
10
30
40time
(s)
6
7
9
Figure 3-9: Heater verification test results
3.3.1
Assembly
The system model was constructed from the components discussed and from other
basic component models contained in the MSL or other Modelica libraries. Because
the detailed electrical circuits of the robot were not modeled as part of this simulation,
the heat generated from the robot electronics was modeled instead as an ideal heat
flux source, with the output based on the total power consumption of the electronics
of the
(as determined in the previous chapter), and an assumed 75% overall efficiency
electronics. The layout of the system model can be seen in Fig. 3-10.
Several results from the component verification tests informed the assembly of the
system model. Initial system testing showed that the temperature difference across
the TE modules was not large enough to produce significant electrical current during
normal operation, so the modules were placed at every fluid block to maximize the
amount of energy reclaimed. As the TE module model has a low computational load,
this did not represent an increase in numerical complexity to the system.
Some of the system assembly was dictated by the needs and limitations of the
Modelica modeling environment. Because the thermal fluid used in the closed loop is
54
...
......
.
-.....
.....
...........
......
..
............
....
........
.........
....
. ....
...
................
-"
daKkearR2T
eadSensor
t
ezpaeionAie"e
b~lb-
extT
PCM block
I
fluifT
oso
Motor unit
mtrT
Electronic heat
generator
uid block
Fl
TE mnodule
I
L
spd
Heater
Figure 3-10: TMS system model layout
incompressible, an expansion volume, consisting of an enclosed tank with some of the
volume occupied by compressible gas, was required to prevent numerical issues when
the fluid increased in temperature. Additionally, because the flow of the fluid is set
by the pump model, certain parameters in the component models required settings
to make it clear to the solver that the mass flow is the independent variable, not
the pressure drop across a pipe. Finally, the inclusion of the fluid loop resulted in
a nonlinear set of equations for the system constraints. This led to the use of the
Dymola solver Radau II, which is a stiff solver, to improve simulation time. [9] [14]
[61]
The pump model used is a simplified concept that acts as an ideal fluid mover,
without imparting any heat energy to the fluid. This represents a small loss of fidelity
55
to the model of the fluid temperature, but greatly simplifies the complexity of the
fluid-loop model. If included, a model of a real pump would require analysis of the
pressure drop across the pump. It was decided that this detail was not necessary, as
the pressure in the fluid system is not a focus of this simulation.
It is also important to note that the construction of the overall system model does
not take into account the internal robot environment. All system components are
considered insulated from the robot chassis cavity and free to transfer heat only to
and from other TMS components. This insulation is not modeled in this simulation;
however, the aerogel insulation previously discussed should be effective enough that
the perfect insulation of this model approximates the interior of the robot with the
insulation installed. This additionally means that a model of the interior of the robot
is not required, including insulation of the robot chassis to the ambient environment.
3.3.2
Analysis
The verification testing on the components was extended to the full system model, and
simple input simulations were performed to confirm that the ensemble of components
would respond as expected. Though the numerical results are somewhat different
than those previously calculated in Chapter 2, the results indicate that the system
model is behaving as expected and desired.
One item of note was that the PCM block was extremely slow to respond to the
heat output of the system. Though it absorbed much of the generated energy and
did not release much to the ambient, the temperature rise in the PCM block did not
reach the 8 0 C needed to initiate melting in nearly all of the simulations performed.
Increased simulation time or improved conduction of the heat through the PCM
block would be necessary to initiate melting during the simulations. Additionally,
simulation diagnostics indicated that the component models within the PCM block
were among the most computationally demanding. This result is important in the
next chapter, when the block is removed from the system model for the sake of
computational simplification.
In order to confirm that the TMS was having a positive effect in reducing the com56
ponent temperatures, open-loop system simulations were run that varied the steadystate value of the fluid volume flow.
This series of simulations clearly show that
increased fluid flow results in a longer acceptable run time for the motors. This is
the desired result, as it clearly indicates that the liquid cooling concept of the TMS
is effective at reducing the temperature of the heat generators. Not surprisingly, increased fluid flow also results in increased heat rejection from the system, as more of
the heat generated is made available to the heat sink via increased transport. Figure
3-11(A) shows the resulting motor temperature, (B) the fluid temperature, and (C)
the external ambient temperature of the system for simulation flow levels of 3 (blue),
7 (red), and 11 (green) 1pm.
Although the simulations indicate that the TMS concept is effective at cooling
the components of the robot, because the heat is not released at the same rate as it
is generated (and because the PCM is extremely slow to absorb the heat), the motor
components do eventually overheat during simulations of longer, four-hour, inspection
scenarios, as seen in Fig. 3-12(A). Merely running the fluid pump at the highest level
is not sufficient to maintain motor temperatures within the acceptable operating
range (between -40 and 150'C). [7] It is apparent that the closed-loop control concept
discussed in Chapter 2 is necessary for this system to maintain proper robot operation.
It is important to note that at no point in these simulations did the LPG reach unsafe
temperatures (greater than or equal to -42
0
C).
With a closed-loop control clearly necessary, step-input testing with long time
spans was performed to determine the thermal time constant of the system in order
to properly tune the controller. The heat flow from the motors was determined to
have a time constant of approximately 3,000 seconds. Although other components of
the system have longer time constants, this was taken as the overall system thermal
time constant of interest for the closed-loop control.
Knowing that the system would have to be simulated in a MATLAB/Simulink
environment for closed-loop control, additional testing was performed in Simulink to
confirm that the two software environments would return the same numerical results.
For this purpose, a simplified model was constructed and simulated in both Dymola
57
n*T-3o
-
-
tTjmwi
Motor temperature
n*T11m
f0fl.
500-
A
300-
s m -.. ....
....
- ,
0.0E0
I
20E3
-- ovr_3vm
--
I
*
8.0E3
6.0E3
4.0E3
12E4
14E4
1.6E4
I
1.8 E4
w1riinom Fluid temperature
-
_rjx
1.0E4
an.0
40L)
B
0-
-40i
0.0E0
exT_3pm
-
8.0E3
6.0E3
4.0E3
2.0(3
extrjm --
ewxr
10E4
1. 2E4
14E4
1.6E4
1A
E4
LPG temperature
om
-44.85-
.44.90-
C
~~T44.95-
-45.0045.050.0 E0
nameI
2.0E3
*
I
4.0(3
*
I
8.0E3
*
I
8.03
10E4
1.2E4
1.4E4
16E4
1 8E4
time (s)
Figure 3-11: System responses for three levels of fluid flow
and Simulink under the same input conditions. Comparison of the results show that
the differences between the two software simulations are very small, and are likely
due to minor numerical differences between the simulations and solvers. The models
used in this testing and the plots of the results can be found in Appendix B.2. To
export the model to Simulink, the model was modified in Dymola to include top-level
inputs and outputs for the system. This model was translated into a Model-Exchange
Functional Mockup Unit (ME-FMU) file. [46]. The Model-Exchange standard used
in this comparison exports the model without the solver, so the Simulink simulations
58
fluid temperature
external temperature
--
velocity
motor temperature
120 -
40A
0__
-40
01E0
20E3
6013
4.0E3
80E3
1
0E4
1,24
14E4
20-
B
01
O
Z0E6
6. 3
416
&,
3
fluidflow
11 4
4
1.0E4
1 24
1 4E4
1,0
0.0--0.0E0
velocity reference
203
--4013
measured
6.01
velocity
time (s)
8013
1414
Figure 3-12: Dymola results to a trapezoidal velocity input
were run with the built-in ode 15s solver (also stiff) and a variable time-step. The use
of the two different solvers was likely the reason for the minor numerical differences
between the simulations. Although the FMU standard includes a Co-Simulation type
(CS-FMU) that exports the solver with the model, Simulink does not support variable
time-steps with this exported solver, so only a fixed time-step simulation could be
performed using a CS-FMU file export. Unfortunately, this meant that the simulation
run-time was prohibitively long (on the order of days) when using a proper time step
for simulation.
3.4
Discussion
Through modeling and simulation, the concept TMS proposed has proven successful
in a full four-motor model of the system. However, the implementation of the TMS
59
hardware is not sufficient to maintain acceptable component operation beyond three
and a half hours, and a closed-loop control must be created around the hardware to
monitor system levels and maintain safe operation for longer periods of time.
60
Chapter 4
Control
Having reached the conclusion in the previous chapter that a closed-loop control
method is necessary for the TMS to maintain proper robot operation for the extendedtime scenario, the model was prepared for import into Simulink, so that the expanded
control capabilities of MATLAB could be used to implement the controller. A control
loop was constructed so the nearly four-hour scenario could be performed without
violating any of the operating constraints of the robot or the environment.
4.1
4.1.1
Introduction
Background
Choice of control method
Model Predictive Control (MPC) is a method of control that utilizes a built-in descriptive model of a system to predict the behavior of the system to the optimized
control commands. These predictions are used to refine the optimization, anticipating
future system responses. In addition, MPC incorporates the ability to set constraints
on the input and output values in the calculation of the control commands.
This
feature was a major reason for the choice of using an MPC to control the TMS, because of the physical limitations on some of the system states. The ability to predict
the system outputs over a window of time and apply control to avoid violating the
61
constraints, even in the future, is an important factor to maintaining safe system
operation without incurring large changes in the control commands.
There are other optimal solution control methods available that incorporate bounds
on the system states, such as MATLAB's bvp4c or fmincon, but these methods require knowledge of the constitutive equations for the system. [10] [12] Although a
detailed model of the TMS exists, the descriptive equations of the system are not
transparent from the model, and these methods could not be used without some sort
of system identification into constitutive equations.
MPC also requires some knowledge of the system, in the form of a state-space
model. General MPC methods are capable of using nonlinear models to predict the
optimal control commands, but because the system's equations of state are unknown,
a method must be employed to determine the system model for use with the MPC
on-line with the control. 1 Therefore, the input and output data from the system is fed
into a system identification algorithm that produces a reduced-state, linearized, model
of the system for use as the controller model. This concept of on-line linearization and
control is implemented in MATLAB using the system identification function n4sid
and the functions of the MPC toolbox.
Model Predictive Control
The Model Predictive Control Toolbox in MATLAB solves an optimization problem for determining the next control commands in a manner similar to the Linear
Quadratic Gaussian (LQG) optimal control method, but with constraints on the values of the inputs and outputs, and with the control optimization performed over a
finite window of time.
The MATLAB MPC uses linear state-space models for state estimation to calculate the error between the system output reference values and the predicted system
response to the input. The goal of the control is to determine the control commands to
'Input/output only control methods do exist, such as Extremum Seeking detailed in [39], but
these methods require some signal superimposed on the inputs to identify the response of the outputs
with respect to the inputs. For the highly coupled TMS, the identification of the effect of this
superimposed signal on each output would be an arduous task, and is not necessary with MPC
available.
62
minimize these errors using a weighted penalty function, along with weighted penalties for output motion magnitude. The system model can include unmeasured inputs
and outputs, as well as measured disturbances on top of the measured inputs and
outputs. For the model used in this controller, the disturbances were assumed to be
zero, as none were included in the Modelica model.
The optimization problem is solved as a minimization of the weighted penalty
function, which sums the squares of the output errors and the change in the control
command:
min{Zwglj(y(k
+
i=O
where
()j
is the
wA j(k + 1k)}
+ Ilk) -rj(k + Z 1))2+
(4.1)
j=1
j
component of the vector, and (k+iIk) is the predicted value at time
k + i. The system outputs are y, the output references are r, and the system inputs
(the control commands) are u. The weights on the inputs and outputs in the function
are designated by w, and p is the prediction horizon of the MPC. This problem is
solved over the range of the predictive window of p steps, obtaining m number of
optimized control solutions for each sampling step, where m < p. However, only
the first control solution, the one for the current sampling step, is retained.
The
next solution recalculates the states of the system over p and the optimized control
inputs over m. If the model does not contain disturbances, white noise is added to
the measured outputs to guarantee asymptotic rejection of output disturbances. The
state observed is then constructed using Kalman filtering methods on the extended
model with the unmeasured white noise disturbances.
With constraints, the optimal control solution is obtained using Quadratic Programming (QP) methods.
The solution is calculated by solving the cost function
augmented with the constraints. The cost function is derived from the penalty function in Equ. (4.1). The function is converted to the general QP form, and solved using
a KWIK algorithm, specifically QPKWIK detailed in [53]. For a detailed explanation
of the MPC implementation in MATLAB, the reader is referred to Chapter 2 of [18].
63
Linearization with n4sid
The Numerical algorithms for Subspace State Space System Identification (N4SID)
method was primarily introduced by Peter Van Overschee and Bart De Moor, and
it makes use of QR and Singular Value Decomposition (SVD) to estimate a linear,
time-invariant state-space system from a series of input and output data. The method
requires knowledge of the system order, though that value can be determined during
the calculations. Subspace methods are non-iterative, estimating the system parameters from the solution of a linear least-squares equation.
However, despite the name, the MATLAB System Identification Toolbox command n4sid uses either the Multivariable Output-Error State Space (MOESP) or
Canonical Variate Analysis (CVA) weighting methods for solving the SVD. [42] Both
of these weighting methods are also subspace identification methods based on the
work in
[59]
and [40], respectively. In the n4sid implementation used, either of these
methods is automatically chosen by the function at execution. Both of these algorithms produce a state-space model of the form:
i(t) = Ax(t) + Bu(t) + Ke(t)
y(t) = Cx(t) + Du(t) + e(t)
(4.2)
where e is the noise in the model. [11] For identification of the TMS system, the
noise matrix K has been set to a zero value, since there is no noise introduced in the
system model.
The n4sid function returns more than a single state-space model of the identified
system. The output of the function also returns information about the estimation performed, including information on the input and output data used in the linearization,
which is used by MATLAB in constructing the MPC controller.
64
4.2
4.2.1
Design
Closed-Loop Control Construction
Using a multi-input multi-output (MIMO) nonlinear model in Simulink for control
purposes would have meant that some of the closed-loop control functions available in
Simulink could not be used. The desired control method, MPC, is one of the control
functions available in Simulink that is limited to linear system models, which cannot
be modified on-line during the simulation. To handle nonlinear systems, the Simulink
function includes the capability to linearize the system model about an operating
point.
However, the TMS nonlinear system runs over a large range of operating
points during the simulation, so a single linearized model about one operating point
would not accurately represent the system for use in an MPC control. For systems
with multiple operating points, Simulink offers an MPC that can incorporate many
linearized models, and switches between them as necessary. Developing a full set
of linearized models for the TMS system about all possible operating points would
require an impractical number of linearized models for the combinations of input and
output states, however. It was for this reason that on-line linearization of the system
was chosen as the method of implementing an MPC using the tools in MATLAB.
In order to execute the n4sid system identification function to obtain the linearized model for MPC execution, the input and output data of the simulation had
to be generated for a window of time. The ideal time window implementation for
linearization is a sliding window, where the linear plant is re-calculated and the MPC
optimization problem is solved for each simulation step. However, no method was
found to access the data from an actively running Simulink simulation and place it
in the MATLAB workspace. Therefore, the simulation had to complete before the
linearization and control movement could be calculated. A sliding time window can
be achieved by running the simulation one step at a time and saving the results in a
cycling memory, but the computational overhead and memory requirements of initiating the simulation for each step of the simulation prohibited this method from being
65
used.2 Instead, a jumping time window was used, where the simulation was run for a
set amount of time, and then the linear system was calculated for the resulting data
and used to compute the control movement for the next time window. Figure 4-1(A)
shows the sliding time window concept, where the results of multiple simulations are
used for system identification, and (B) the jumping time window concept, where only
one simulation result is used for system identification. In this figure, each vertical
black line represents a simulation step, where many small simulations are performed
by the sliding time window concept, and fewer, longer simulations are performed by
the jumping time window concept. Each of the double-sided arrows represents a system linearization and control calculation. By choosing the correct time window for
the jumping method, the linearized system used in the MPC is a good enough approximation of the system for the next time window. One drawback to this jumping
time window method is that as the MPC calculates the control commands for the
next time window, the linearized system becomes less and less accurate when the
current time of the controller calculation becomes farther from the end time of the
last simulation window. Reducing the size of the time window decreases this error,
but it also decreases the total simulation length possible due to computer memory
constraints.
The MATLAB example presented in [13] executes an MPC control for a nonlinear
system using the sliding time method, but linearizes the plant about an operating
point rather than using input/output data. This method of linearization is accurate
as long as the simulation time is small, so that the expected change in the system will
not greatly exceed the magnitude of the perturbation about the operating point used
by the linearization method. However, when using a simulation iteration time that
is large enough, the expected system output will deviate greatly from the operating
point, requiring the use of a linearization that can predict the system behavior over
a wider set of the responses with greater accuracy, such as the input/output-based
linearization. Because the Simulink model of the plant uses an exported FMU block,
When initializing many iterations, MATLAB exhausts the available computer memory because
the exported FMU file is executed from a .dll file.
2
66
I
sliding time window for linearization and control calculation
simulation results
time
jumping time window for linearization and control calculation
simulation results
time
Figure 4-1: Illustrations of two time window implementations
the typical methods of retrieving data from Simulink could not be used. Instead, the
functions from the FMI toolbox were used to retrieve and set the system states for
iteration. This method required a listing of the continuous states of the model, which
was obtained from the translation output of Dymola when building the fmu file.
4.2.2
Model Modification for Control
To prepare the Dymola model for closed-loop control in MATLAB, some modifications
were necessary to set system state start values, and remove some of the computational
complexity of the model to reduce the simulation time.
In order to properly re-
initialize the model for each simulation iteration, a number of start parameters had
to be inserted into the model so that the components would start at the correct
temperatures when the simulation initialized at a non-zero time. In the process of
67
inserting these parameters, the PCM block was removed from the model in order
to reduce the computational cost of system simulation. Open-loop simulation of the
system with and without the PCM block shows that the heat flow from the system
to the ambient is greater without the PCM block (see Fig. 4-2), indicating that
the system without the PCM block included is a more strenuous test for the ambient
environment, but more forgiving on the system components. It is important note that
FB.out.Q_flow.PCM
FBoutW-flow
0-2-4-
-12
0.0E6
4.OE3
8.OE3
time (s)
1.2E4
1.6E4
Figure 4-2: Comparison of the heat flow from the system to the PCM block (blue),
or convected to the ambient environment (red)
it was at this point that the fluid loop in the model was modified from using MSL
components to the Modelon Liquid Cooling Library components. This changeover
was necessary because the complexity of the MSL fluid components prevented proper
initialization of the medium with each iteration. These components had the additional
benefit of reducing the number and size of the nonlinear systems in the compiled
simulation.
4.2.3
Input and Output Choices
The system control inputs were limited to the two components that have externally
controllable attributes: the motor speed demand and the fluid pump volume flow
demand. These two inputs were matched with four outputs, which were chosen based
68
on their impact on the desired system behavior. The actual velocity of the robot (as
measured from the motor speeds) was one of the outputs chosen so that the motor
speed demand could be controlled in a closed-loop manner, maintaining the desired
velocity during operation. The motor, fluid, and external temperatures were also chosen as outputs. The motor and fluid temperature outputs allow the control system
to ensure that the operating limits of the components are not violated, keeping the
system running smoothly without damaging the components. The external temperature output allows the control to monitor the state of the ambient environment and
shut down the heat production if necessary to maintain safe operation.
The measurement of motor speed, motor temperature, and fluid temperature could
take place at multiple points in the system, but only one point of each was sampled
as the output value. Each of the four motors runs at a different temperature, and
consequently, speed. This variation in temperature occurs because the motors are
connected in series to the thermal fluid, and the downstream motors experience a
reduced cooling effect from the increased temperature of the thermal fluid as it passes
by each motor. For the motor speed, the shaft speed of the motor from the third
motor unit was used to represent the system speed. This particular motor unit was
chosen as representative because it runs at a temperature and speed in the middle of
the four-motor set, and proper positioning of the motors and fluid loop in the robot
will allow the cooler, faster motors to offset the warmer, slower motors for a resultant
robot speed of roughly the average of the four motor speeds, which is close the speed
of the third motor. The motor temperature output was measured from the fourth
motor, which is the motor running at the highest temperature. This choice was made
to ensure that none of the motors exceed the maximum operating temperature. The
same logic was used to choose the measurement location for the fluid temperature.
The fluid temperature output is measured at the electronics fluid block, since that
block is furthest downstream in the fluid loop, and has the highest fluid temperature
measured within the loop.
69
4.2.4
Choice of Linearized States
The MATLAB function n4sid requires an input of the number of states in the identified linear system. Although the nonlinear system is known to have 34 continuous
system states in the model (not to be confused the number of physical states in the
model, which may be dependent on other state values), MATLAB has difficulty processing that many states in both the system identification algorithm and the MPC
functions. Several different sets of input/output data were processed with the linearization algorithm to determine the best-fit linearized system for different numbers
of states. The resulting linear output predictions were compared against the nonlinear data, and it was found that 10 system states best fit the output data for most of
the data sets.
4.2.5
MPC Setup
The MPC used in MATLAB is set up with static constraints and weights for every
simulation. Each simulation iteration has a unique linear plant that the MPC is based
around, and updated reference values for the system outputs. Both the inputs and
outputs are constrained, but with varying weights on the constraint violation penalty
values. The pump input is constrained to 11.98 1pm, in order to not violate the 12 1pm
limit in the model's computation of the fluid block thermal resistance. The velocity
demand is limited to 0.6 m/s in order to prevent the system from sending a command
that would result in the robot traveling too fast for the scanner to properly operate,
and therefore potentially miss a defect. Though the scanner's operating limit is 0.5
m/s, the demand limit is set higher to take into account the speed loss of the motors
as they heat up, so that the system can still achieve 0.5 m/s if requested.
The output limits are also based on physical constraints of the system.
The
velocity output is limited to 0.5 m/s, again so that the control will prevent the robot
from traveling above the maximum scanner operating speed. The motor, fluid, and
external temperature limits are all set based on the component limits. The motor's
operating temperatures, the fluid's liquid temperature range, and the boiling point
70
of LPG are used as constraints on those outputs, with some modifications to provide
a factor of safety on each limit. Some of these limits, such as the LPG boiling point,
are assigned hard constraints, so that the control will not violate those limits for
any reason. Other limits, such as the velocity, have softer constraints that allow the
control more freedom to momentarily exceed those limits in order to provide the best
control performance.
Choice of the system time window and sampling rate
Based on the results of the system's thermal time constant from the Dymola simulations, the length of the simulation iteration (designated tau) was set to 300 seconds,
or one-tenth the thermal time constant. This value proved not to be compatible with
the four-hour simulation time due to computer memory limits, so the value of tau
was modified to 375 seconds. This value is one-eighth of the thermal time constant,
so under-sampling of the thermal responses should not occur when creating the linear
fit of the system behavior. Using a time window this long means that the linearized
system used by the MPC to predict system responses can be off-point during the
calculation of the control commands, particularly when calculating the control for
the time points furthest from the end of the last iteration.
The maximum simulation time step used by the variable solver in Simulink is set to
1 second in order to correspond with the chosen MPC time step, and to prevent undersampling of the control command. Using the 1 second time step resulted in a more
accurate MPC control command than using the default for the maximum simulation
time step. Though this control sampling rate is much larger than the mechanical
time constant of the motor (4.15 ms) [7], there is no concern for lost motor dynamics
in the output measurement or control, because precision motor speed control is not
necessary for this system as the relatively large inertial masses will damp out small
motor variations, and high precision speed or position control is not necessary or
desired in this application.
71
Tuning
To best illustrate the efficacy of the MPC when following a given velocity reference
and maintaining the system constraints, a trapezoidal velocity reference input was
constructed and used to tune the controller. In the course of tuning, it was discovered
that the nonlinear system is highly coupled, and changes to one tuning value tended
to produce a change in the entire system response.
During tuning of the MPC, it was found that the initial input data, used for the
first simulation iteration when there is no input/output data from which to generate
a linear system, had a large effect on the response of the first MPC control movement.
This effect is expected from the control method. In the case where the first responses
of the system dictate the model used for prediction, the response of the control will
be highly dependent on providing the right data for the system identification tool.
Similarly, the reference values for the temperatures had a very large impact on
the efficacy of the MPC in following the velocity reference. Though the values of
the temperatures in-between the operating limits are not a concern from a control
standpoint, the MPC implementation within MATLAB does not return stable results when the weights for the output values are reduced to zero. Subsequently, the
temperature outputs were given small, non-zero MPC weights in comparison to the
velocity output. However, it was found that assigning small weights was not enough,
and the temperature references needed to be shaped properly in order to prevent
unwanted velocity motions. Both the external temperature and fluid temperature
outputs approximate a linear rise during the simulation, so linear reference values
were developed for those outputs, and found to be acceptable. Figure 4-3 shows the
velocity error, measured value, and reference for a simulation where the motor temperature reference was poorly fit to the natural response of the motor. The initial
velocity demand (green) is calculated to be much higher than desired, because the
motor temperature value is well below its reference value, resulting in the measured
velocity overshoot between 375 and 500 seconds.
Using a constant or linear value for the motor reference resulted in large mo72
tor temperature output errors, which interfered with the velocity reference following.
These errors were of large enough magnitude, compared to the velocity reference error, that the weights in the controller could not be tuned high enough for the velocity
or low enough for the motor temperature to maintain proper velocity reference tracking without causing numerical instabilities in the control. The motor temperature
naturally follows a more non-linear shape, so effort was made to fit an s-curve to the
natural motor temperature response. After tuning the motor temperature reference
using a hyperbolic tangent function, the motor temperature results in a low error
value for that output throughout the simulation, reducing its interference with the
velocity reference tracking.
0.6
024..
. .. .
-0.6 ..
...
7
................
. ... ...
- 0 .2 ..
.... ..
....
....
.....vel
.....
.................
..
error
output Val
ref vel
0
1000
2000
3000
4000
5000
Simulation time (s)
6000
7000
900
Figure 4-3: Simulation velocity results with poorly-shaped output reference values
This control method can be incorporated into a hardware system without having to
construct a detailed model of the system equations beforehand. However, significant
effort is required in tuning the controller, as new velocity and temperature profiles
require changes to optimize the system response. Therefore, using this control method
shifts the effort from constructing an accurate model of the hardware to tuning the
controller for the specific hardware and output references.
73
4.3
4.3.1
Analysis
Controller Testing
To confirm the long-term efficacy of the control, tests were run based on the same
trapezoidal velocity reference input used for tuning the MPC, but for a longer simulation time. Using the Dymola model to determine that the motor operating temperature is exceeded for a simulation time of 14,000 seconds when using the trapezoidal
input (see Fig. 4-4), the same test profile was used in MATLAB testing.
10-
-
1s0-
U0
fluid temperature
external temperature
velocity
motor temperature
40
0__
-40
hOEe FEg 2.0st
4d
6, 34
3
1TmE4
4
1sam
I
wE4
time (s)
Figure 4-4: Dymola motor temperature results to a trapezoidal velocity input
During one of the tuning tests it was noticed that when the velocity of the robot
reaches zero, the temperature of the external environment starts to rise, as seen in
the last seconds of Fig. 4-5. This plot comes from the same simulation shown in Fig.
4-3, where near-zero velocity can be observed for the final 400 seconds. That zero or
near-zero robot velocity results in a rise in the external temperature is an important
fact: once there is no fluid flow over the external convection heat sink plate, the
temperature of the now-static external fluid will start to rise, even though there is
no longer any active heat generation. Convection still occurs to the fluid from the
hot heat sink plate, because the temperatures inside the robot are still significantly
warmer than the external environment. This informs an inspection path requirement
limiting the robot from slowing significantly or stopping for any length of time, except
74
.. .........
......................
.............
.
.. ..........
. -
at the point when and where it is to be retrieved from the tank at the end of the
inspection. However, the original velocity profile ending with zero velocity continued
to be used for the purpose of testing the control system, in order to observe the
response of the control to rising external temperatures.
fluid T ( C)
20
-----
-
-
extemalT(C)
0
0
1000
200030
4000
6000
6000
7000
8000
9C000
Simulation time (s)
Figure 4-5: Example of simulation output results with poorly-shaped references
4.3.2
Tuning Simulations
A series of shorter simulations was used to tune the response of the controller to
determine the best weights and output reference shapes to obtain the best system
response. These short runs used the same velocity reference shape as the final simulations, but with a shorter run time of 9,000 seconds, and keeping the time window
size of 375 seconds. During these simulations, the control weights, prediction window,
and constraint relaxation values were tuned to achieve the best performance of the
controller. The initial, open-loop, system inputs, used during the first iteration of the
simulation, were also tuned to achieve the best possible system linearization for the
controller, for use in the subsequent iteration.
The control weights were chosen based on the expected error of the output value
to the reference and the desired impact of this error on the control command. The
75
weights on the constraints, which ordered the importance of the constraints within the
controller, were set based on the importance of those constraints to the safe operation
of the system. The external temperature constraint weight was set to be the most
important, followed by the motor temperature. The velocity constraint and the fluid
constraint were set to lower levels of importance, as these constraints do not prevent
the robot from safely operating within the ambient environment.
During tuning, it was found that the size of the control window cannot exceed
a small portion of the size of the prediction window. Tests indicated that the control window was best set at roughly 1/10 the length of the prediction window, in
order to avoid numeric problems with constructing the Kalman filter for the control.
Additionally, the predication window could not exceed the length of the simulation
time window in order to avoid similar numeric problems. The final results for the
prediction window size was 200 steps, and the control horizon was set to 20 steps.
4.4
Results
When simulating the full-length scenarios, the reference temperature shapes had to
be re-tuned from the shorter simulations to match the changed natural response of
the motor temperature when run at 90% speed for a longer time. The results from the
open-loop simulations in Dymola provided some knowledge of the expected temperature shape, but additional tuning was necessary to achieve the desired closed-loop
performance. The hyperbolic tangent function for the motor temperature reference
was refined so that the reference value would closely match the temperature response
when the velocity reference was closely followed by the controller.
The final reference shape and weight combination yielded a controller response
that successfully matched the velocity reference to within 11% during the constant
velocity reference of the scenario. The error was greater during the dynamic velocity
reference, but the error did not exceeded 0.1 m/s, except at the end of the test, a
response that is explained later. Most importantly, the controller maintained the
system constraints and never exceeded 150 'C for the motor temperature, or -42 0 C
76
.........
.....
..
.............
..........
........
......
.1..
..........
.
for the external temperature. As expected, the system input calculated by the control
quickly maximizes the pump fluid flow, and only minor variations in the pump demand
are seen afterward. The main method of temperature control used by the MPC is
the velocity demand on the motors. As illustrated in Fig. 4-6, at 12,000 seconds
into the simulation the velocity demand starts to decrease in response to rising motor
temperature, preventing an overheating of the motors like that seen in Fig. 4-4. Plots
of the control commands calculated by the MPC, the MPC predictions for the outputs,
and the reference values can be seen in Appendix D. To confirm that the linearization
0.5
04
-0.1
---.-
- __------- _
vet error
-- -output
- -ref
0.
200
400
00
val
vet
0
Simulation time
1000
1200
1400
100
(s)
Figure 4-6: Closed-loop velocity results
and control concept was working properly, the linearized system output values were
plotted as dashed lines, overlaid on the solid lines of the measured output values.
The resulting plot, shown in Fig. 4-7, shows that the system linearization method is
quite effective at generating linear approximations of the system outputs. A detailed
plot of the motor temperature output values, shown in Fig. 4-8, indicates that small
variations in the linearized output (dashed line) exist versus the measured output
(solid line), but the difference in the temperature values do not impede the controller
performance. A closer look at the linearized (dashed) versus measured (solid) velocity
77
-
...
..
..............
- _ .... . ........................
.........
.....
---------------------
values in Fig. 4-9 indicates a number of numerical peaks in the linearized velocity
values. Inspection of these peaks reveals that they occur at the start of iteration time
windows, indicating that the linearization of the velocity tends to incur numerical
faults over the first few data points. Nonetheless, these variations do not have a large
effect on the control commands made by the MPC.
150
velocity (m/s)
4
motor T (C)
-
110
-lin
10
-
velocity
---
-
inmotor T
lin uid T
in external T
10 S 10
-...
-..
-
-o
-
o
940
-
-10
-
-----
-20
(I 110]
213]
3XU
4ID)
510)
SI0t
70)0
Simulation time ()
S
90U
ilil]
0l
110)
121l
l3X
1410
15111
Figure 4-7: Closed-loop output results comparison: measured vs. linearized
As previously mentioned, the trapezoidal velocity reference used in these tests
commands zero speed for the robot at the end of the simulation. This situation
has already been shown to result in an unsafe increase in the temperature of the
ambient environment. However, in this simulation the controller did not allow the
external temperature to violate its constraint, and increased the velocity demand on
the robot to maintain safe operation. Figures 4-10 and 4-11 show the velocity (plotted
with velocity error in blue, measured velocity in green, and the velocity reference in
red) and external temperature at the end of the simulation, respectively.
As the
external temperature rises and starts to reach unsafe levels, the controller deviates
from the desired velocity in order to lower the external temperature and avoid an
unsafe condition.
78
.................
............
101
. .
--
C 1005 - >
4
100 -
-
-.-..
-
---
--
-
--
-
-
-
-
-
--
---
95 si..
97 .......... .....
...............
1.359
1.36
1.361
1.362
1.363
1.364
1365
1366
Simulation lime (s)X10
th
TM S
m otor T
n motor T
..--.----
rder.t.......w
he sy te...ant..sf..eat
.....
1.367
..
1368
.....
..
.
1.369
o .. her
bo
it
Figure 4-8: Closed-loop motor temperature comparison: measured vs. linearized
4.5
i
Discussion
A closed-loop control method was designed, tuned, and implemented to work with
the TMS in order to allow the system to maintain safe operation of the robot within
the ambient environment for mission lengths longer than would be possible with
open-loop control. The control method was two part: linear plant identification from
input/output data, and control command calculation. The plant identification was
performed using subspace methods built into MATLAB, which was then used by the
MATLAB MPC functions. Each of these built-in functions required inputs that were
tuned for the best system response of the controller.
The tuning process of the linearization and controller was performed by observation and correction of initial a-priori settings. It was found that the initial input
shape had a large effect on the first MPC control command, and much effort was
placed into determining the correct initial input for the pump. Additionally, though
the system constraints demand only that the temperatures of the motor, fluid, or
external environment conform to a set of upper and lower bounds, the references
for each of these outputs needed to be properly shaped in order to ensure that the
controller output resulted in the desired system response.
79
.....
..
.................
.......
.I."
.....
..............
.
. .............
.
2
OCK
elocity
..........-
..........
y
1.5
- -.
-.
...
.......
......
..
-.
..
....
-. ...
..-..
...-.
S
0
0
- .-.
- ...
-.
0.5
-. -...-.-.-.-.
..
-..
..-.
.--.-- .- .-..
-0.5
-1
A00
20D
140
12000
80f 10000
6
16U0
Simulation time (s)
Figure 4-9: Closed-loop velocity comparison: measured vs. linearized
0.25
----
- -- '--
-
-
- -_--- -- _- -
--.....
.......
-.....-.-..-.--.....
0.2
- -.
....
0.15
-......
..
0.1
-.
-
.....
-.
-0.05
-
..
...
...-..-. .
-
...
-.
. . ..
-......-...
-....
- ..-.-..
-.-..
-.
...7 -..
-.
-. ...
...
-.
..... ..-.
-. ..
- ......
.. -.
- -.
-- ..-.
--..
-.
*...........-
-
0.05
0
....
vet error
vel
vel
- -output
-_--ref
.. -
..
... ....
. -.
....
-0.1
1.3
1.32
1.3
1.34
Simulation time (s)
138
1.4
1.42
x 10
Figure 4-10: Velocity results for the end of the simulation
80
......................
.....
........
....
..
...........
. . ...
................
.
-4U
e -43 . .........
.......
.................
............ ......
........
........................
.......
... ........
-4 2 . ... ..
..........
.......... ...... ....
.........
....
..
-4 1 - ***....
...............
..........
V
CL
E -4 4 ..
.....
....... ...
.................
................
. .....
E -45
.......
...........
.............
..
ul
47
-48
........ ...
.......
46 ............
........ ........
.........
1.3
1.32
....... ...................
...... ......
......
....................
...........
1.36
Simulation time (s)
134
.........
1.38
1.4
...... -
1.42
Xle
Figure 4-11: External temperature results for the end of the simulation
81
82
Chapter 5
Conclusions and Recommendations
5.1
Summary
In this work a thermal management system was proposed for use with robots that
operate in temperature-restricted environments. This TMS is designed to allow the
robot to maintain the temperatures of its components within operating limits, while
avoiding excessive heat rejection to the ambient environment, which could cause unsafe conditions. The proposed system was designed with the robotic inspection of
LPG and LNG holding tanks in mind, though the system could be used in any other
situation where uncontrolled waste heat rejection is undesirable or unsafe. Robotic
inspection of LPG and LNG tanks is an extension of current robotic inspection technology, but the robots must be adapted to safely work within the cooled, liquefied
gas. The gas cannot be heated above its vaporization temperature without causing
unsafe conditions within the tanks, so current inspection protocol requires removing
the gas from the tank and taking the tank out of service during inspection.
The
period during which the tank is out of operation is very costly in lost productivity.
In-service tank inspection would represent a significant savings over standard inspection methods.
However, some form of thermal management system is required in
order to allow robots to operate safely within the operational holding tanks.
The TMS design is comprised of several sub-systems that remove the waste heat
generated by the robot's components and then convert that heat energy to electrical
83
energy, store some of the heat energy, and reject the remainder to the ambient environment. Each of these systems may have multiple instances in a specific design
of a TMS, or may be left out entirely. One potential implementation of the TMS
was discussed in detail. This implementation uses a thermal fluid to transport the
waste energy from the robot's components to thermo-electric modules that convert
some of the energy into usable electricity. The remaining heat energy is then routed
through a PCM block, which absorbs much of the thermal energy as the material
inside increases in temperature, a'nd eventually melts. The remaining heat energy is
rejected to the ambient environment through a heat sink.
This system was first analyzed as a thermal circuit, with an ambient environment of LPG. This analysis showed that commercially-available products could be
used to construct this implementation of the TMS, with the exception of the PCM
block. (The PCM block as imagined in the TMS would require custom construction, but the materials for this component are commercially available.)
Based on
the success of the initial analysis, a detailed model of the TMS implementation described was constructed in the Modelica modeling language. This model incorporated
all of the potential TMS components. Each of the components was constructed in
Modelica from basic models provided in the standard library when available, but several components required custom models to represent less-common physics, such as
the thermo-electric modules. The component models were tested to ensure that the
simulated model behavior agreed with the expected behavior of the components.
The detailed model of the full system was simulated with open-loop control of
the motor speed and the thermal fluid pump speed. As expected, increased motor
demand resulted in increased heat generation, and increased fluid flow decreased
the temperature of the motors. However, at 90% motor speed, the TMS could not
maintain the motor temperatures below their operating maximum for longer than
roughly three and a half hours, even at maximum fluid flow. It was therefore decided
that the closed-loop controller was necessary for the TMS to allow safe operation of
the robot performing a tank inspection within an LPG environment.
A control scheme for closed-loop control was proposed and implemented in MAT84
LAB using the TMS model from Modelica as the simulated system. A model predictive controller was chosen for its ability to incorporate constraints on both the
control commands and the system output values. However, no direct formulation of
the nonlinear system model was available for use in the MPC, so the input/output
data from the simulation of the system was used to construct a reduced, linear statespace model of the system with the MATLAB system identification function, n4sid.
Using a jumping time-window method to simulate a portion of the total time, the
linearized system was determined from the results of each simulation window. That
linear system was then used to calculate the control commands for the next simulation window. Though small time windows are preferred to reduce the error inherent
in the linearized model versus the nonlinear model as the system progresses further
away from the linearization points, computer memory limitations prevented the implemented simulation from using time windows smaller than approximately 2-3% of
the total simulation time.
The system outputs tracked by the MPC were chosen to be the motor velocity,
the motor temperature, the thermal fluid temperature, and the external ambient
temperature. In this system, the output of the motor velocity represents part of the
desired performance of the control system, the motor and fluid temperatures represent
component constraints, and the external ambient temperature represents the safety
constraint for operation of the robot. For this implementation, only the limits on the
values of the constraints were considered critical to the operation of the controller, and
therefore initially little thought was given to the reference values for these outputs.
Only the motor velocity tracking error was assigned a high importance. However, it
was found during simulation of the controller that despite the low importance assigned
to the constraint output tracking errors, these errors had a significant impact on the
velocity response of the system, degrading the performance. Therefore, more care was
given to the shaping of all the reference values, particularly for the motor temperature,
to improve the controller performance. The resulting temperature reference inputs
closely follow the natural response of the temperature outputs in order to obtain
the desired velocity reference.
The final closed-loop control response successfully
85
maintains the robot components and the ambient environment temperatures within
their constraints for a time longer than three and a half hours at 90% motor speed.
5.2
Future Work
Future work on further developing this TMS and control system should focus on
improving the control implementation, creating more detailed system simulations,
and testing the system hardware. Though the final control implementation provides
acceptable system performance, and enforces the component constraints and ambient
environment safety requirements, significant effort was required to tune the controller
to achieve the demonstrated level of performance. The system output reference values
had to be carefully tuned to align with the natural behavior of those outputs for
the desired velocity profile in order to obtain good tracking to that velocity profile.
Adapting the MPC used in the control such that some of the tracked system outputs
do not require reference values would greatly improve the usability and portability
of the control over multiple hardware implementations. Additionally, any further
system simulation should occur on a computer with improved memory capacity so
that the time window of the simulations can be reduced (this would require that more
memory be allocated to running MATLAB specifically, rather than just an expanded
memory capacity of the computer).
Additional simulations should be constructed with models that include the interior
air of the robot as a component, to determine the impact of the robot chassis cavity of
the performance of the TMS. These models could also include the chassis insulation,
and add the effect of the convection from the rest of the robot chassis to the ambient
environment.
Finally, the system should be tested with hardware under realistic, refrigerated
conditions to confirm the performance of the TMS. This testing, even if done as a
scaled test, will require significant resources to maintain the cold ambient environment, unless such tests are performed in a naturally cold location.
86
Appendix A
Modelica Code and Graphical
Models
The Modelica code used to simulate the TMS is presented here, along with the graphical representations of the code in Dymola. The Modelica code for the annotations
that define the graphics has been removed for legibility of the code.
A.1
System Model
87
idealGearR2T
ralo=15000.5
mxtw
speedsensor
fextT
exMv~cff*
14000
heat sink
plate
M
seV-0~
t
thermal
capacitor
fluidT
jUM
mtrT
Fluid block
dur
>e0s1
W
spd
TE module I
cLa,+rr~ni,~c tkcrn,2I
capacitor
Heater
c 0t(
Figure A-1: The Dymola graphical model of the TMS system used in the control
simulations, without the PCM block. A thermal mass is substituted in place of the
PCM block to represent the mass of the heat sink plate.
88
"I'll,
..........................
..............
.
-
I'll, ...........
.
. ......
.....
model System-model-final-Sim6F "System model with 4 generators"
parameter Modelica.SIunits.Temperature sCPcE=228.15;
parameter Modelica.SIunits.Temperature sCPpTE=228.15;
parameter Modelica.SIunits.Temperature sCPcO=228.15;
parameter Modelica.SIunits.Temperature sCPpTO=228.15;
parameter Modelica.SIunits.Temperature sMcpcl=228.15;
parameter Modelica.SIunits.Temperature sMcptl=228.15;
parameter Modelica.SIunits.Temperature sMcl=228.15;
parameter Modelica.SIunits.Temperature sMdccl=228.15;
parameter Modelica.SIunits.Temperature sMdcal=228.15;
parameter Modelica.Slunits.AngularVelocity sMdcwl=O;
parameter Modelica.SIunits.Angle sMdcpl=O;
parameter Modelica. SIunits . Current sMlail=O;
parameter Modelica.SIunits.Temperature sMcpc2=228.15;
parameter Modelica.SIunits.Temperature sMcpt2=228.15;
parameter Modelica.SIunits.Temperature sMc2=228.15;
parameter Modelica.SIunits.Temperature sMdcc2=228.15;
parameter Modelica.SIunits.Temperature sMdca2=228.15;
parameter Modelica.SIunits.AngularVelocity sMdcw2=0;
parameter Modelica.SIunits.Angle sMdcp2=0;
parameter Modelica. SIunits .Current sMlai2=0;
parameter Modelica.SIunits.Temperature sMcpc3=228.15;
parameter Modelica.SIunits.Temperature sMcpt3=228.15;
parameter Modelica.SIunits.Temperature sMc3=228.15;
parameter Modelica.SIunits.Temperature sMdcc3=228.15;
parameter Modelica. SIunits . Temperature sMdca3=228 .15;
parameter Modelica. SIunits .AngularVelocity sMdcw3=0;
parameter Modelica.SIunits .Angle sMdcp3=0;
parameter Modelica . SIunits . Current sMlai3=0;
parameter Modelica.SIunits.Temperature sMcpc4=228.15;
parameter Modelica.SIunits.Temperature sMcpt4=228.15;
parameter Modelica.SIunits.Temperature sMc4=228 .15;
parameter Modelica.SIunits.Temperature sMdcc4=228.15;
parameter Modelica.SIunits.Temperature sMdca4=228.15;
parameter Modelica.SIunits.AngularVelocity sMdcw4=0;
89
parameter Modelica.SIunits.Angle sMdcp4=0;
parameter Modelica.SIunits.Current sMlai4=0;
parameter Modelica.SIunits.Temperature sExtT=228.15;
parameter Modelica.SIunits.Temperature sExpT=228.15;
parameter Modelica.SIunits.Pressure sExpP=101300;
parameter Modelica.SIunits.Volume sExpV=0.0005/2;
parameter Modelica.SIunits.Temperature sElCap=228.15;
parameter Modelica.SIunits.Temperature sExtCap=228.15;
External-conv-temp3aLC
external-conv
L=0 .10,
A=0 . 10 2,
redeclare package medium = BasicModels.LPG,
lamda=0 .1312,
rho=584.55,
cp=2237.5,
nue=3. 493e-7,
boil-pt=231.15,
sExtT=sExtT)
CP-scratch3F
;
cP-scratch-out
sCPc=sCPcO,
sCPpT=sCPpTO,
redeclare package medium
=
LC-HC50)
;
Modelica.Blocks.Math.Gain lpm_2-m3ps(k=1/60000) ;
Modelica.Blocks.Math.Gain mtr-volts (k=48)
TE-hack2
tE-hack2-out
Se=2 .2e-4,
Re=2,
t.cond=3. 663,
startT=sCPcO);
CP-scratch3F cP-scratch-elc
sCPc=sCPcE,
sCPpT=sCPpTE,
redeclare package medium = LC-HC50) ;
90
.....................
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow
prescribedHeatFlow-elc (Tref=233.15)
Comp-heater
;
comp-heater-elc
T-lo=-40,
Heater-Pwr=5,
T-hi=-38)
;
Modelica.Thermal.HeatTransfer.Components.ThermalConductor
Eleccond(G=61.558);
Modelica.Thermal.HeatTransfer.Components.HeatCapacitor
ElecCap(C=896*0.5, T(
fixed=false, start=sElCap))
Modelica.Blocks.Sources.Ramp elect-input (height=46.6, duration=1);
TE-hack2 tE-hack2-elc
Se=2 .2e-4,
Re=2,
t-cond=3. 663,
startT=sCPpTE);
Motor-unitBF motor-unitAl
sMcpc=sMcpc1,
sMcpt=sMcptl,
sMc=sMc1,
sMdcc=sMdcc1,
sMdca=sMdcal,
sMdcw=sMdcwl,
sMdcp=sMdcpl,
sMlai=sMlail)
Motor-unitBF motor-unitA2
sMcpc=sMcpc2,
sMcpt=sMcpt2,
sMc=sMc2,
sMdcc=sMdcc2,
sMdca=sMdca2,
sMdcw=sMdcw2,
sMdcp=sMdcp2,
91
................
........
sMlai=sMlai2) ;
Motor-unitBF motor-unitA3
sMcpc=sMcpc3,
sMcpt=sMcpt3,
sMc=sMc3,
sMdcc=sMdcc3,
sMdca=sMdca3,
sMdcw=sMdcw3,
sMdcp=sMdcp3,
sMlai=sMlai3)
Motor-unitBF motor-unitA4
sMcpc=sMcpc4,
sMcpt=sMcpt4,
sMc=sMc4,
sMdcc=sMdcc4,
sMdca=sMdca4,
sMdcw=sMdcw4,
sMdcp=sMdcp4,
sMlai=sMlai4)
Modelica.Blocks.Interfaces.RealInput pump ;
Modelica.Blocks.Interfaces.RealOutput fluidT ;
Modelica.Blocks.Interfaces.RealOutput mtrT ;
Modelica.Blocks.Interfaces.RealInput vDem(min=0, max=1)
"Input signal connector"
Modelica.Blocks.Interfaces.RealOutput extT
Modelica.Blocks.Math.Gain elc-eff(k=l -
0.75) ;
LiquidCooling.Volumes .ExpansionVolume expansionVolume(
N=2,
redeclare package Medium = BasicModels.LC-HC50,
k-ht=l 0,
steadyState=false,
V(displayUnit="ml") = 0.0005,
V-gas-start=sExpV,
T-start=sExpT,
p-start=sExpP) ;
LiquidCooling.FlowModifiers.SetLiquidFlowRate
92
...
..............
...........
.........................................
.... I........
. ........
..
.........
...................
........
........
.......
........
.....I - -
setFlowRate (useflow-in=true,
redeclare package Medium = BasicModels.LC-HC50
;
Modelon.ThermoFluid.Sensors.DensitySensor
densitySensor (redeclare package
Medium = BasicModels.LC-HC50)
;
Modelica.Blocks.Math.Product productl ;
LiquidCooling.Pipes.Generic.LiquidPipe pipe(
L=1,
A=0. 005,
redeclare model Friction
=
Modelon.ThermoFluid.FlowChannels.
PipeResistances.DetailedWallFriction,
useHeatTransfer=false,
from-dp=false,
redeclare package Medium = BasicModels.LC-HC50,
T-start=sExpT);
LiquidCooling.Pipes.Generic.LiquidPipe pipel(
A=0
.005,
redeclare model Friction
=
Modelon . ThermoFluid. FlowChannels.
PipeResistances.DetailedWallFriction,
useHeatTransfer=false,
f rom-dp=false,
L= 0.5,
T-start=sCPpTE,
redeclare package Medium = BasicModels.LC-HC50)
;
Modelica.Blocks . Interfaces .RealOutput spd ;
Modelica.Mechanics.Translational.Components.IdealGearR2T
idealGearR2T (ratio=150
/0.5)
;
Modelica .Mechanics . Translational. Sensors . SpeedSens.or
speedSensor ;
Modelica.Blocks.Math.Gain vdem2pct (k=2) ;
Modelica. Thermal . HeatTransfer . Components . HeatCapacitor
93
..............
. ...............
plate(C=896*0.135, T(
fixed=false, start=sExtCap))
equation
connect(ElecCap.port, comp-heater-elc.T-in) ;
;
connect(ElecCap.port, comp-heater-elc.Heat-out)
connect (Elec-cond.port-a,
prescribedHeatFlow-elc.port)
cP-scratch-elc.port-al)
connect(tE-hack2_elc.port-b,
connect (Elec-cond.port-b,
connect (mtr-volts.y,
;
ElecCap.port)
connect (prescribedHeatF1ow-elc.port,
tE-hack2-elc.port-a)
;
motor-unitAl.u);
connect (motor-unitA2.u,
mtr-volts.y);
connect (motor-unitA3.u,
mtr-volts.y);
connect (motor-unitA4 .u, mtr-volts.y) ;
connect (cP-scratch-out.port-al,
fluidT
tE-hack2-out.port-a) ;
= cP-scratch-elc.temperatureSensor.T;
mtrT = motor-unitA4 .dC-Motor-system.armature. T;
connect(pump,
lpm_2-m3ps.u)
connect (externalhconv.amb-t,
;
extT)
;
;
connect (elc-eff.u,
elect-input.y)
connect (elc-eff.y,
prescribedHeatFlow-elc.Q-flow)
initial equation
ElecCap.T = sElCap;
cP-scratch-elc.heatCapPTZ1518.T
= sCPcE;
cP-scratch-out.heatCapPTZ1518.T
= sCPcO;
motor-unitAl.cEP-scratch.heatCapPTZ1518.T
motor-unitAl .MotorMountCap.T
= sMcpcl;
= sMcl;
mot or-unitAl .dCMotor-system. core. T = sMdccl;
motor-unitAl .dC-Motor-system.armature.T
= sMdcal;
motor-unitAl .dC-Motor-system.dcpm.ia.i = sMlail;
motor-unitA2.cP-scratch.heatCapPTZ1518.T
motor-unitA2.MotorMountCap.T
= sMcpc2;
= sMc2;
motor-unitA2 .dCMotor-system.core.T = sMdcc2;
94
;
;
...
.. ...
.....
....
.....
.....
..
.....
mot or-unitA2 .dCJMot or-sy stem. armature. T = sMdca2;
motor-unitA2 . dC-Mot or-sy stem. dcpm. la. i = sMlai2;
= sMcpc3;
motor-unitA3.cP-scratch.heatCapPTZ1518.T
motor-unitA3.MotorMountCap.T
= sMc3;
motor-unitA3. dC-Motor-system. core. T = sMdcc3;
motor-unitA3. dC-Motorsystem. armature. T = sMdca3;
motor-unitA3.dC-Motor-system.dcpm.la.i
= sMlai3;
= sMcpc4;
motor-unitA4 .cP-scratch.heatCapPTZ1518.T
motor-unitA4.MotorMountCap. T = sMc4;
motor-unitA4 . dC-Motor-system. core. T = sMdcc4;
mot or-unitA4 .dCMotorsystem. armature. T
motor-unitA4 .dC-Motor-system.dcpm.1a. i
sMdca4;
=
=
sMlai4;
equation
connect (setFlowRate.portB, pipe.portA) ;
connect (setFlowRate .portA, expansionVolume.portA[11);
connect (productl.y,
setFlowRate.m-flow-in)
;
connect (densitySensor.y, productl.ul) ;
connect (product 1.u2, lpm-2_m3ps.y)
;
connect (densitySensor.port, setFlowRate.portB) ;
connect (tE-hack2-out .portb,
external-conv.port-a)
;
connect (idealGearR2T.flangeR,
motor-unitA3 .dC-Motor-system. loadInert ia. f lange-a);
connect (speedSensor.v, external-conv.vel) ;
connect (idealGearR2T.flangeT, speedSensor.flange) ;
connect(speedSensor.v, spd) ;
connect(vDem, vdem2pct.u) ;
connect (vdem2pct .y, mtr-volts .u) ;
connect (plate.port, external-conv.port-a)
connect (pipe.portB,
motor-unitAl. liquidFlowPort);
connect (motor-unitAl
.
liquidFlowPortl,
motor-unitA2 . liquidFlowPort) ;
connect (motor-unitA2
.
liquidFlowPortl,
95
..
................
..............
...
......
..............
motor-unitA3. liquidFlowPort) ;
connect (motor-unitA3. liquidFlowPort1,
motor-unitA4. liquidFlowPort) ;
connect (motor-unitA4 liquidFlowPortl,
cP-scratch-elc. liquidFlowPortin);
connect(expansionVolume.portA[2],
cP-scratch-out. liquidFlowPortout);
connect (cP-scratch-elc.liquidFlowPortout,
connect (cP-scratch-out.liquidFlowPortin,
end Systemrmodel-finalSim6F;
96
pipel.portA);
pipel.portB);
....
......
. .......
....
................................
A.2
Motor Unit
quidFWiPert
DC motor
TE module
4-
Motor
Va"
20
fluid block
I
;4"
0-
motor mount thermal
capacitor
ti
Figure A-2: Dymola graphical model of the motor unit
97
Ui
model Motor-unitBF
parameter Modelica. SIunits . Temperature sMcpc;
parameter Modelica.SIunits.Temperature sMcpt;
parameter Modelica. SIunits .Temperature sMc;
parameter Modelica. SIunits . Temperature sMdcc;
parameter Modelica. SIunits . Temperature sMdca;
parameter Modelica.SIunits.AngularVelocity sMdcw;
parameter Modelica.SIunits.Angle sMdcp;
parameter Modelica.SIunits.Current sMlai;
CP-scratch3F cP-scratch(
sCPc=sMcpc,
sCPpT=sMcpt,
redeclare package medium
Comp-heater
=
LC-HC50) ;
comp-heater2
T-lo=-40,
HeaterPwr=5,
T-hi=-38)
;
TE-hack2 tE-hack2
Se=2.2e-4,
Re=2,
t-cond=3.663,
startT=sMcpt)
DC-Motor-system2
dCMotor-system(
sDCc=sMdcc,
sDCa=sMdca,
sDCp=sMdcp,
sDCw=sMdcw,
loadInertia(phi(start=sMdcp, f ixed=true),
w(start=sMdcw, fixed=true)),
sDClai=sMlai)
Modelica . Thermal . HeatTransfer . Components . ThermalConductor
Rmm-cond(G=61.558)
;
Modelica. Thermal.HeatTransfer.Components.HeatCapacitor
MotorMountCap(C=896*0.224,
98
........................................................
-...
.................
. ........
;
T(fixed=false, start=sMc))
Modelica.Blocks.Interfaces.RealInput u;
Modelon. ThermoFluid. Interfaces .ApplicationSpecific. LiquidFlowPort
liquidFlowPort (redeclare package Medium = BasicModels.LC-HC50);
Modelon . ThermoFluid. Interfaces .ApplicationSpecific. LiquidFlowPort
liquidFlowPortl (redeclare package Medium = BasicModels. LCHC50) ;
LiquidCooling.Pipes.Generic.LiquidPipe pipel(
A=0 .005,
redeclare model Friction
=
Mode lon. ThermoFluid. FlowChannels.
PipeResistances .DetailedWallFriction,
useHeatTransfer=false,
from-dp=false,
L=0.5,
T-start=sMcpt,
redeclare package Medium = BasicModels.LCHC50)
;
equation
connect (tE-hack2.port-b,
cP-scratch.port-al)
;
connect (comp-heater2.T-in, MotorMountCap.port) ;
connect (comp-heater2 . Heat-out,
MotorMountCap.port)
;
connect (MotorMountCap.port, Rmm-cond.port-a) ;
connect (Rmm-cond.port-b,
tE-hack2.port-a)
connect (Rmm-cond.port-a,
dC.Motor-system.y)
connect(u,
dCJMotor-system.u)
;
;
;
connect (cP-scratch.liquidFlowPortin,
liquidFlowPort)
connect (pipel.portB, liquidFlowPortl) ;
connect (cP-scratch.liquidFlowPortout,
end Motor-unitBF;
99
pipel .portA)
;
;
............
-......................
..........................
--................
...............................
..............
..
.......
....................
A.3
Li
DC Motor
rotational inertia
voltage source
10-
r
.
-- rotational load
dc
DC motor
y
armature
and core
V
thermal masses
re
8mnile
Figure A-3: Dymola graphical model of the DC motor
100
..............
-.......................
-
........................
model DC-Motor-system2
parameter Modelica. SIunits .Temperature sDCc;
parameter Modelica. SIunits .Temperature sDCa;
parameter Modelica.SIunits.AngularVelocity sDCw;
parameter Modelica.SIunits.Angle sDCp;
parameter Modelica.SIunits.Current sDClai;
Modelica.Electrical.Machines.BasicMachines.
DCMachines . DCPermanentMagnet
dcpm(
useThermalPort=true,
VaNominal=4 8,
IaNominal=0 .909,
wNominal(displayUnit="rpm") = 158.12683023069,
Ra=15.7,
alpha20a(displayUnit="1/K") =
Modelica.Electrical.Machines.Thermal.Constants.alpha20Copper,
la(i(start=sDClai)),
La=4.14e-3,
Jr=121e-5) ;
Modelica.Electrical.Analog.Sources.SignalVoltage
armatureVoltage ;
Modelica.Electrical.Analog.Basic.Ground groundArmature;
Modelica.Mechanics.Rotational.Components.Inertia loadInertia(
J=0.1,
phi(fixed=true, start=sDCp),
w(fixed=true, start=sDCw))
;
Modelica. Thermal . HeatTransfer . Components . HeatCapacitor
armature(C=430*0.05, T(
fixed=false, start=sDCa))
"copper winding";
Modelica. Thermal. HeatTransfer.Components . ThermalConductor
armatureCore (G=1/1 .9);
Modelica.Thermal.HeatTransfer.Components.HeatCapacitor
core(C=380*0.1, T(
fixed=false, start=sDCc))
"iron core"
Modelica. Thermal . HeatTransfer . Components . ThermalConductor
coreCooling(G=1/4.7);
101
..........
..................................................
Modelica.Thermal.HeatTransfer.Sources.FixedTemperature
;
fixedTemperature(T=273.15)
Modelica.Mechanics.Rotational.Sources.QuadraticSpeedDependentTorque
load(
useSupport=false,
tau-nominal=-192e-3,
w-nominal(displayUnit="rpm") = 158.12683023069);
input Modelica.Blocks.Interfaces.RealInput u
"Voltage between pin p and n (= p.v -
n.v) as input signal" ;
output Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-b.y
protected
Modelica.Electrical.Machines.Interfaces.DCMachines.ThermalPortDCPM
thermalPort;
equation
connect(dcpm.flange, loadInertia.flange-a) ;
connect(armatureVoltage.n, groundArmature.p) ;
connect(armatureVoltage.p, dcpm.pin-ap) ;
connect(armatureVoltage.n, dcpm.pin-an);
connect(armature.port, armatureCore.port-a) ;
core.port)
connect (armatureCore.port-b,
;
connect(core.port, coreCooling.port-a) ;
connect(dcpm.thermalPort, thermalPort) ;
connect(armature.port, thermalPort.heatPortArmature);
connect(core.port, thermalPort.heatPortCore) ;
connect(fixedTemperature.port, thermalPort.heatPortStrayLoad) ;
connect(fixedTemperature.port, thermalPort.heatPortFriction) ;
connect(fixedTemperature.port, thermalPort.heatPortBrush);
connect(fixedTemperature.port,
thermalPort.heatPortPermanentMagnet);
load.flange)
connect (loadInertia.flange-b,
connect(armatureVoltage.v, u);
connect(coreCooling.port-b,
y
end DC-Motor-system2;
102
;
...
............................
.. ..........
- ..............
....
. .
A.4
......
Heater
Heat out
II
ht atingResist r
T-in
temperatur.
backwardHy.
0
-jde~gC
ConstAntVokL
ground
Figure A-4: Dymola graphical model of the heater
103
......
..............
.......
....................................................
-
model Comp-heater "10 W heater switched by temp"
parameter Real Tlo=-42 "backward hysteresis lower Temp";
parameter Real T-hi=-35 "backward hysteresis upper Temp";
parameter Modelica.SIunits.Power Heater-Pwr=10
"Heater power consumption";
Modelica.Thermal.HeatTransfer.Celsius.TemperatureSensor
temperatureSensor;
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
Thin;
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-b
Heat-out;
BackwardHysteresis backwardHysteresis (uLow=T-lo, uHigh=T-hi)
Modelica.Electrical.Analog.Basic . HeatingResistor
heatingResistor(alpha=0.00393,
R-ref=constantVoltage.V^2/Heater-Pwr) ;
Modelica.Electrical.Analog.Basic.Ground ground ;
Modelica.Electrical.Analog.Sources.ConstantVoltage
constantVoltage(V=28) ;
Modelica.Electrical.Analog. Ideal. IdealClosingSwitch
idealClosingSwitch;
equation
connect (temperatureSensor.port, T-in)
;
connect (temperatureSensor.T, backwardHysteresis.u) ;
connect (constantVoltage.n, ground.p) ;
connect (constantVoltage.p, idealClosingSwitch.p) ;
connect (idealClosingSwitch.control, backwardHysteresis.y) ;
connect (idealClosingSwitch.n, heatingResistor.p);
connect (heatingResistor.n, constantVoltage.n);
connect (heatingResistor.heatPort, Heatout);
end Comp-heater;
104
....
....
....
.... ..
................
.-..........
..........
..........................
.........
-
A.4.1
........................
..........
Backward Hysteresis
block BackwardHysteresis
"Transform Real to Boolean signal with Hysteresis"
extends Modelica.Blocks.Interfaces.partialBooleanBlockIcon;
parameter Real uLow(start=O)
"if y=true and u<=uLow, switch to y=false";
parameter Real uHigh(start=1) "if y=false and u>=uHigh, switch to y=true";
parameter Boolean pre-y-start=false
"Value of pre(y)
Modelica.Blocks.Interfaces.RealInput u;
Modelica.Blocks.Interfaces.BooleanOutput y;
initial equation
pre(y) = pre-y-start;
equation
y = u < uHigh and (u <= uLow or pre(y));
end BackwardHysteresis;
105
at initial
time";
A.5
Fluid Block
port al
thermal conductance calculation
I0
thermal mass of fluid block
I~
OD)
thermalConductor
OC
temperature Sensor
degC
iqui<
II
- -- <
volume flos
.. Ir
-~~~~#P
Figure A-5: Dymola graphical model of the fluid block
106
....
....
....
............
........
....
..........
.............................
::.
.........................
....
model CP-scratch3F
parameter Modelica
. SIunits . Temperature
sCPc
"fluid block starting temp";
parameter Modelica. SIunits . Temperature sCPpT
"fluid block starting temp";
replaceable package medium = BasicModels.LCHC50;
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a port
Modelica . Thermal . HeatTransfer . Components . HeatCapacitor
heatCapPTZl518
(C=985.6, T(start=sCPc))
"for PTZ 1518 1.1 kg Al 6061";
Modelica.Thermal.HeatTransfer.Components.Convection
convection ;
CP-Gc-calc-expanded
cPGc-calc
;
Modelica.Blocks.Math.Gain gain(k=60000)
;
Modelica . Thermal. HeatTransfer. Components . ThermalConductor
thermalConductor
(G=0.334) ;
Modelica. Thermal.HeatTransfer.Celsius. TemperatureSensor
temperatureSensor ;
Modelon. ThermoFluid. Sensors .VolumeflowSensor
volumeflowSensor (redeclare
package Medium = medium) ;
LiquidCooling.Pipes.Generic.LiquidPipe pipel(
L=0 . 18,
useHeatTransfer=true,
redeclare model HeatTransfer
=
Modelon . ThermoFluid.FlowChannel s . HeatTrans fer.
ConstantCoeff
(alpha0=1e6),
A=0 .00194,
redeclare model Friction
Modelon.ThermoFluid.FlowChannels.PipeResistances.
DetailedWallFriction,
positiveFlow=true,
from-dp=false,
107
;
............
.....................
- - ............
..............
-.............
.........................
.......................
T-start=sCPpT,
redeclare package Medium = medium) ;
Modelon.ThermoFluid.Interfaces.ApplicationSpecific.
LiquidFlowPort
liquidFlowPortout
Modelon.ThermoFluid.Interfaces.ApplicationSpecific.
LiquidFlowPort
liquidFlowPortin
equation
connect (cP-Gc-calc.gc,
connect(gain.y,
convection.Gc);
cPGc-calc.volflow)
connect (thermalConductor.port-b,
;
heatCapPTZl518.port)
connect(port-al, convection.solid) ;
connect (convection.fluid, thermalConductor.port-a);
connect (temperatureSensor. T,
cP-Gc-calc.temp)
;
connect (volumeflowSensor.portB, pipel.portA) ;
connect (pipel.portB, liquidFlowPortout) ;
connect (volumeflowSensor.portA, liquidFlowPortin) ;
connect (volumeflowSensor.y, gain.u);
connect (temperatureSensor.port, pipel.q) ;
connect (pipel.q, convection.fluid) ;
end CP-scratch3F;
108
;
....
....
....
..
..
......
....................
-..............
- -....................
..................
--..................
................
......
- -11.- "I'l ", ..........
TE Module
A.6
model TE-hack2
"constant property TE module with no electrical output"
parameter Modelica.SIunits.SeebeckCoefficient Se
"Seebeck coefficient";
parameter Modelica.SIunits.Resistance Re
"electrical resistance (TE) ";
parameter Modelica.SIunits .ThermalConductance t-cond
"Thermal conductance of TE module";
parameter Modelica.SIunits.Temperature startT
"starting temp";
//Real Qp;
Modelica.SIunits.Current I;
Modelica.SIunits.TemperatureDifference dT;
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
port-a (T(start=startT))
"hot side"
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-b
portb
(T (start=startT))
"cold side"
equation
dT = port-a.T
I
=
-
Se*(port-a.T
port-b.T;
-
port-b.T)/(2*Re);
port-b.Q-flow = -(Se*port-b.T*I
port-a.Q-flow =
//Qp
Se*port-a.T*I
= port-a.Q-flow -
+ t-cond*dT +
+ t-cond*dT -
port-b.Q-flow;
end TE-hack2;
109
0.5*I^2*Re);
0.5*I^2*Re;
............
.
..........................
A.7
HC-50 Medium
"modelon lc table based HC50"
package LC-HC50
extends LiquidCooling.Media.Templates.Coolant(
redeclare package EquationsOfState =
Modelon.Media.EquationsOfState.Templates.Liquids.
TableBased-T
limits(
TMIN=273.15
50,
-
TMAX=273.15 + 110,
DMIN=900,
DMAX=1100,
PMIN=0
.
le5,
PMAX=50e5,
HMIN=0.0,
HMAX=200 . Oe3,
SMIN=0.0,
SMAX=l.0e3),
tableData(
beta-const=0,
kappa-const=0,
reference-p=101325,
reference-d=1351.1,
reference-h=0,
reference-s=0,
TinK=false,
tableDensity=[-50, 1378.8; -40,
-20,
1362.2; -10,1356.6;
20, 1340;
1323.4;
90,
30, 1334.5;
60, 1317.8;
1373.3; -30,
1367.7;
0, 1351.1; 10, 1345.6;
40, 1328.9; 50,
70, 1312.3; 80, 1306.7;
1301.2; 100, 1295.7],
tableHeatCapacity=[-50, 2.563; -40,
110
2.583; -30,
2.602;
....
....
.. ....
..............
........
..............
.............
...................
................
..............................
-20,
2.622; -10,
0, 2.661;
30, 2.72; 40, 2.74;
20, 2.701;
60, 2.78;
2.642;
70,
2.799;
50,
80, 2.819;
tableConductivity=[-50, 0.4345; -40,
-20,
0.4645; -10,
20, 0.5045;
50, 0.5345;
90,
30,
60,
0.5745;
50,
5.99;
2.1;
0.5145; 40,
100, 2.8581,
0.4545;
10, 0.4945;
80, 0.5645;
100, 0.5845],
1.8; 70,1.6;
20.4; -30,
30, 2.61496e3;
40,
9.39766e3; 70,
80, 20.71331e3;
90,
12.5; -20,
20, 3.2; 30, 2.7;
80,
1.5;
0.13153e3; -20,0.22715e3; -10,
0, 0.63675e3; 10,
60,
2.839;
0.5245;
tableVaporPressure=-50, 0.04109e3; -40,
-30,
2.76;
0.4445; -30,
0.5445; 70, 0.5545;
0, 4.7; 10, 3.8;
60,
90,
2.681;
0.4745; 0, 0.4845;
tableViscosity=[-50, 38.4; -40,
-10,
10,
90, 1.3;
40, 2.4;
100, 1.2],
0.07444e3;
0.38405e3;
1.0367e3; 20, 1.65953e3;
4.06008e3;
50, 6.21724e3;
14.03252e3;
30.24412e3; 100, 43.70856e3]),
npol-rho=2,
npol-Cp=1,
npohlpVap=2),
mediumName="Dynalene HC50 ",
substanceNames={"HC50"},
redeclare package TransportProperties
Modelon.Media.TransportProperties.Templates.Simplified.
TableBased
limits(
TMIN=273.15 -
50,
TMAX=273.15 + 110,
DMIN=900,
DMAX=1100,
PMIN=0 . le5,
PMAX=50e5,
HMIN=0.0,
HMAX=200.0e3,
SMIN=0 .0,
111
8.4;
...........
............
....
....
............
.
............
- ..........
....
................
.. .......................
......
................
SMAX=1.0e3),
tableData(
beta-const=0,
kappa-const=0,
ref erence-p=101325,
reference-d=1351.1,
reference-h=0,
re ferences=0,
TinK=false,
-20,
1323.4;
1334.5;
30,
1340;
20,
1317.8; 70, 1312.3;
60,
50,
1328.9;
40,
1345.6;
10,
0, 1351.1;
1362.2; -10,1356.6;
1367.7;
1373.3; -30,
1378.8; -40,
tableDensity=[-50,
1306.7;
80,
90, 1301.2; 100, 1295.7],
tableHeatCapacity=[-50, 2.563; -40,
60,
2.78;
2.799;
70,
tableConductivity=[-50,
-20,
50,
0.4645; -10,
30,
0.5045;
20,
60,
0.5345;
0.5745;
90,
0.4345; -40,
0.5145;
5.99;
4.7;
0,
50, 2.1; 60,
1.8;
2.76;
90,
40,
0.5245;
0.5545;
30, 2.61496e3;
60,
9.39766e3;
80,
20.71331e3;
0.5645;
80,
10,
3.8;
20.4; -30,
3.2;
20,
70,1.6; 80,
-10,
12.5; -20,
8.4;
40,
2.4;
30,
1.5; 90,
0.13153e3; -20,0.22715e3;
0, 0.63675e3;
0.4945;
0.5845],
tableVaporPressure=[-50, 0.04109e3; -40,
-30,
10,
2.858],
0.4545;
0.4445; -30,
0.4845;
70,
100,
2.839;
0,
0.4745;
0.5445;
100,
2.819;
80,
tableViscosity=[-50, 38.4; -40,
-10,
50,
2.72; 40, 2.74;
30,
20, 2.701;
10, 2.681;
0, 2.661;
2.642;
2.622; -10,
-20,
2.602;
2.583; -30,
2.7;
1.3;
100, 1.2],
0.07444e3;
0.38405e3;
10, 1.0367e3; 20, 1.65953e3;
40, 4.06008e3;
70,
50, 6.21724e3;
14.03252e3;
90, 30.24412e3;
npol-eta=2,
npol-lam=1),
112
100, 43.70856e3]),
....
..
..................... ............
..
.........
..............
I.................
-..................
. L.......................
.. ...
CompressibilityType=EquationsOfState.CompressibilityType,
ThermoStates=Modelon.Media. Interfaces .Types .IndependentVariables .pTX,
final limits=EquationsOfState.limits,
analyticInverseTfromh=EquationsOfState.analyticInverseTfromh,
hasCriticalData=false,
FixedComposition=true,
redeclare model VolumeDynamics
IncompressibleVolume
=
(nS=nS, nC=nC));
end LC-HC50;
113
A.8
PCM Block
poti
I
PCMunit_mass
DI-
k=PCM_719
PTRT -I II
I
-
L
-
I
U
A
I
!zi1
0-
I
I
4J~.4i
I
-4.
I
k=thck
4
f-13-
-
I
thickness
-
I
--
&M
-
fin length
k=Lflni3
I
a
-h
A&T
-1~
0~]
AT
port a
Figure A-6: Dymola graphical model of the PCM block
114
I
model PCMcontainer2
parameter Real thick=0.002 "thickness of Al sides
parameter Real PCM-m=1.5 "mass of PCM in HS
(m]";
(kg] ";
parameter Real Lfin=O.l "Length of fins, ie HS length [m]";
parameter Modelica.SIunits.Temperature sPCMi(start=233.15,
displayUnit="degC");
parameter Modelica. SIunits . Temperature sPCMcl (start=233 .15,
displayUnit="degC");
parameter Modelica. SIunits . Temperature sPCMc2 (start=233.15,
displayUnit="degC");
parameter Modelica. SIunits . Temperature sPCMc3 (start=233.15,
displayUnit="degC");
parameter Modelica. SIunits . Temperature sPCMc4 (start=233.15,
displayUnit="degC");
parameter Modelica.SIunits.Temperature sPCMel(start=233.15,
displayUnit="degC");
parameter Modelica.SIunits .Temperature sPCMe2 (start=233.15,
displayUnit="degC");
parameter Modelica.SIunits.Temperature sPCMe3 (start=233.15,
displayUnit="degC");
parameter Modelica. SIunits . Temperature sPCMe4 (start=233.15,
displayUnit="degC");
"Temperature of element"
output Modelica.SIunits .Temperature Tavg;
Modelica.Blocks.Sources.Constant PCMunit-mass(k=PCM-m/9)
Modelica.Blocks.Sources.Constant thickness(k=thick);
Modelica.Blocks.Sources.Constant fin-length(k=Lfin/3) ;
PCMunitInt2 pCMunitInt (PCM-T-start=sPCMi)
;
PCMunitEdge2 pCMunitEdge2 (LTstart=sPCMe2) ;
PCMunitEdge2 pCMunitEdge4 (T-start=sPCMe4) ;
PCMunitEdge2 pCMunitEdgel (T-start=sPCMel) ;
PCMunitEdge2 pCMunitEdge3 (T-start=sPCMe3) ;
PCMunitCorner2 pCMunitCorner2 (T-start=sPCMc2) ;
PCMunitCorner2 pCMunitCornerl (Tstart=sPCMc1);
115
................
....
PCMunitCorner2 pCMunitCorner3(T-start=sPCMc3);
PCMunitCorner2 pCMunitCorner4(T-start=sPCMc4)
Modelica. Thermal. HeatTransfer. Interfaces. HeatPort-a port-a;
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-b
Fin finK(side=0.005)
Fin finA(side=0.005)
Fin finH(side=0.005)
Fin finJ(side=0.005);
Fin finC(side=0.005)
Fin finB(side=0.005)
Fin finL(side=0.005)
Fin finE(side=0.005);
Fin finF(side=0.005)
Fin finG(side=0.005)
Fin finD(side=0.005)
Fin finI(side=0.005) ;
equation
connect (pCMunitCorner4 .port-a4,
connect (finK.port-b,
pCMunitEdge3.port-a4)
connect (pCMunitEdge3.port-a2,
connect (finL.port-b,
finK.port-a)
connect (port-a,
pCMunitCorner3.port-a2)
;
connect (port-a,
pCMunitCorner4.port-al)
;
connect (pCMunitCorner4 .port-a3,
;
;
;
pCMunitCornerl.port-a4)
;
finA.port-a)
;
pCMunitEdgel .port-a4);
connect (pCMunitEdgel .port-a2,
connect (finB.port-b,
finH.port-a)
finC.port-a)
connect (pCMunitCornerl .port-a3,
connect (finA. port -b,
;
;
pCMunitEdge4.port-a4)
connect (pCMunitEdge4 .port-a2,
connect (finC.port-b,
;
pCMunitCorner3.port-a3)
pCMunitEdge3.port-a1)
connect (finH.portb,
;
finL.port-a)
connect (port-a,
;
finB.port-a)
;
pCMunitCorner2 .port-a4);
connect (pCMunitCorner2.port-a3,
finE .port-b)
116
;
port-b;
..
......
..........
....
..
.........
.....
connect(finE.port-a,
pCMunitEdge2.port-a4);
finJ.port-b)
connect (pCMunitEdge2.port-a2,
connect (finJ.port-a,
finI.port-al);
connect (finI.port-a2,
finH.port-al)
connect (finK.port-a2,
finF. portal);
connect (finF.port-a2,
finA.port-al)
;
connect(finC.port-al, finD.port-a2)
;
finE.port-a2)
;
finI .portb);
pCMunitEdge3.port-a3);
connect (pCMunitInt.port-a2,
connect (f inG. port-b,
finG.port-a)
;
pCMunitEdge2.port-a3);
connect (ifinB.port-al,
finG.port-a2);
connect (finG.port-al,
finL.port-a2)
connect (pCMunitInt .port-a4,
connect (finF.port-a,
;
pCMunitInt.port-al);
connect (pCMunitInt .port-a3,
connect (finI.port-a,
;
finD .port-b)
connect (pCMunitEdgel.port-a3,
connect (finD.port-a,
;
pCMunitCorner3.port-a4)
connect (finJ. port-a2,
connect (finD. port-al,
;
;
finF.port-b)
pCMunitEdge4.port-a3)
connect (pCMunitCornerl .port-a2,
port-b);
connect (port-b,
pCMunitEdgel .port-al) ;
connect (port-b,
pCMunitCorner2.port-al);
connect (PCMunit-mass.y, pCMunitCornerl.m) ;
connect (PCMunit-mass .y, pCMunitEdge4.m);
connect (PCMunit-mass .y, pCMunitCorner4 .m) ;
connect (PCMunit-mass.y, pCMunitEdgel.m) ;
connect (PCMunit-mass.y, pCMunitCorner2.m);
connect (PCMunitimass .y, pCMunitInt .m);
connect (PCMunit-mass.y, pCMunitEdge2.m) ;
connect (PCMunit-mass.y, pCMunitEdge3.m) ;
connect (PCMunit_mass .y, pCMunitCorner3 .m);
;
connect (ifin-length.y,
finA.length)
connect (fin-length.y,
finB.iength) ;
connect (fin-length.y,
finC.length)
connect (fin-length.y,
finD.length);
connect (fin-length.y,
finE.length) ;
;
117
;
connect (fin-length.y,
finF.length) ;
connect (fin-length. y, finG.length) ;
connect (fin-length. y,
finH.length) ;
connect (fin-length. y, finI.length) ;
connect (fin-length. y, finJ.length) ;
connect (thickness.y, pCMunitCorner4.thk) ;
connect (thickness.y, pCMunitEdge3.thk) ;
connect (thickness.y, pCMunitCorner3.thk) ;
connect(thickness.y, pCMunitEdge4.thk) ;
connect (thickness.y, pCMunitEdge2.thk) ;
connect (thickness.y, pCMunitCorner2.thk) ;
connect(thickness.y, pCMunitCornerl.thk) );
connect (thickness.y, pCMunitEdgel.thk) ;
connect(fin-length.y,
finK.length);
connect (ifin-length.y,
finL.length)
T-avg =
(pCMunitInt.pCMCapacitor.T + pCMunitEdgel.pCMCapacitor.T +
pCMunitEdge2.pCMCapacitor.T + pCMunitEdge3.pCMCapacitor.T +
pCMunitEdge4 .pCMCapacitor.T + pCMunitCornerl.pCMCapacitor.T +
pCMunitCorner2 .pCMCapacitor.T +
pCMunitCorner3.pCMCapacitor.T + pCMunitCorner4.pCMCapacitor.T) /9;
connect (finL.port-al,
port-a);
connect (finK.port-al,
port-a)
connect (pCMunitCorner2 .port-a2,
finE .port-al);
connect (pCMunitEdge2.port-al, finJ.port-al)
;
connect (finJ. port -al, pCMunitCorner3 .port-al);
connect (finE.port-al,
pCMunitEdge2 .port-al) ;
connect (pCMunitCornerl.port-al,
connect (pCMunitEdge4 .port-al,
connect (finH.port-a2,
pCMunitEdge4.port-al)
finH.port-a2)
;
pCMunitCorner4.port-a2);
end PCMcontainer2;
118
;
..
................
........
...
A.8.1
PCM Interior Unit
model PCMunitInt2
PCMCapacitor pCMCapacitor (T(start=PCM-T-start))
PCMThermalConductor pCMThermalConductor2
Modelica.Blocks.Interfaces.RealInput m "mass of PCM unit";
PCMThermalConductor pCMThermalConductor4
;
PCMThermalConductor pCMThermalConductorl
;
PCMThermalConductor pCMThermalConductor3
;
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
port-a4;
Modelica. Thermal. HeatTransfer. Interfaces. HeatPort-a port-al
Modelica. Thermal. HeatTransfer. Inter faces. HeatPorta port-a2;
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
port-a3;
parameter Modelica. SIunits . Temperature
PCM-T-start (start=233.15,
displayUnit="degC")
"Temperature of element";
equation
connect (pCMCapacitor.port, pCMThermalConductor3.port-a);
connect (pCMCapacitor.port, pCMThermalConductor2.port-a) ;
connect (pCMCapacitor .port, pCMThermalConductor4 .port-a);
connect (pCMCapacitor .port, pCMThermalConductorl.port-a);
connect (m, pCMThermalConductorl.m) ;
connect (pCMThermalConductor4.m, m) ;
connect (m, pCMThermalConductor3 .m);
connect (m, pCMThermalConductor2.m) ;
connect (pCMCapacitor.m-unit,
m)
;
connect (port-a4,
pCMThermalConductor4.port -b)
;
connect (port-al,
pCMThermalConductor1.portb)
;
connect (port-a3,
pCMThermalConductor3.port -b)
;
connect (port-a2,
pCMThermalConductor2.port-b)
;
connect (port-a2,
port-a2);
end PCMunitInt2;
119
........
......
..............
-..............
............
............
.........
. . .
.
..............
PCM mass
model PCMCapacitor "PCM heat capacitor unit"
Modelica.SIunits.SpecificHeatCapacity cp
"specific heat of the PCM";
constant Modelica.SIunits.SpecificHeatCapacity c=3.15e3
"specific heat of the PCM";
constant Real r-trans=2;
constant Modelica.SIunits.Temperature T-trans=-36.5 + 273.15;
constant Modelica.SIunits.SpecificEnthalpy h-trans=213e3;
Modelica.SIunits.Temperature T(start=293.15, displayUnit="degC")
"Temperature of element";
Modelica.SIunits.TemperatureSlope derT (start=O)
"Time derivative of temperature
(= der(T))";
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
port
Modelica.Blocks.Interfaces.RealInput m-unit
"Signal representing mass
[kg]";
equation
T = port.T;
m-unit*cp*der-T
cp =
1)))
der (T)
= port.Q-flow;
((h-trans/ (Modelica. Constants.pi* (((T + c);
= derT;
end PCMCapacitor;
120
T-trans) *r-trans) ^2 +
....
....
.....
..
..........................
............
....
.........
....
. ......
A.8.2
................
....
PCM Edge Unit
model PCMunitEdge2
PCMCapacitor pCMCapacitor(T(start=T-start))
PCMThermalConductor pCMThermalConductor2
;
Modelica.Blocks.Interfaces.RealInput m "mass of PCM unit" ;
PCMThermalConductor pCMThermalConductor4
PCMThermalConductor pCMThermalConductorl
PCMThermalConductor pCMThermalConductor3
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
port-a4
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
port-a2
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
port-a3;
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
port-al;
HeatCapacitor-side
heatCapacitor-side (T (start=T-start))
Modelica.Blocks.Interfaces.RealInput thk ;
ThermalConductor-thk
thermalConductor-thkl
parameter Modelica. SIunits . Temperature
T-start (start=233.15, displayUnit="degC")
"Temperature of element";
equation
connect (pCMCapacitor.port, pCMThermalConductor3.port-a) ;
connect (pCMCapacitor.port, pCMThermalConductor2.port-a) ;
connect (pCMCapacitor.port, pCMThermalConductor4 .port-a);
connect (pCMCapacitor.port, pCMThermalConductorl.port-a) ;
connect (m, pCMThermalConductorl .m);
connect (pCMThermalConductor4 .m, m) ;
connect(m, pCMThermalConductor3.m);
connect (m, pCMThermalConductor2 .m) ;
connect (pCMCapacitor.m-unit,
m)
;
connect (porta4,
pCMThermalConductor4 .port-b);
connect (port-a3,
pCMThermalConductor3.port-b);
connect (port-a2,
pCMThermalConductor2.port-b)
connect (port-a2,
port-a2) ;
connect (heatCapacitor.side.m,
m)
;
121
;
connect(thk,
heatCapacitor-side.thk)
connect (pCMThermalConductor1.port b,
;
thermalConductor-thkl.port-a);
connect (thermalConductor-thkl .port-b, portal)
connect (heatCapacitor-side.port,
connect (thk,
;
thermalConductor-thkl.port-a);
thermalConductor-thkl.thk)
end PCMunitEdge2;
122
;
11
..........
..........
......
..........
.....................
.......
................... ............
A.8.3
PCM Corner Unit
model PCMunitCorner2
PCMCapacitor pCMCapacitor(T(start=T-start))
PCMThermalConductor pCMThermalConductor2 ;
Modelica.Blocks.Interfaces.RealInput m "mass of PCM unit" ;
PCMThermalConductor pCMThermalConductor4
PCMThermalConductor pCMThermalConductorl
PCMThermalConductor pCMThermalConductor3;
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
port-a4
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
port-a2;
Modelica. Thermal. HeatTransfer. Interfaces. HeatPort-a port-a3;
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
port-al
HeatCapacitor-side heat Capacitor-side(T(start=T-start))
Modelica.Blocks.Interfaces.RealInput thk ;
ThermalConductor-thk
thermalConductor-thk1
ThermalConductor-thk
thermalConductor-thk2
Heat Capacit or-side heatCapacitor-sidel (T (start=T-st art))
parameter Modelica.SIunits.Temperature
T-start (start=233.15, displayUnit="degC")
"Temperature of element";
equation
connect (pCMCapacitor .port, pCMThermalConductor3.port-a);
connect (pCMCapacitor.port, pCMThermalConductor2.port-a);
connect (pCMCapacitor.port, pCMThermalConductor4.port-a) ;
connect (pCMCapacitor.port, pCMThermalConductorl .port-a);
connect (m, pCMThermalConductorl.m) ;
connect (pCMThermalConductor4 .m, m) ;
connect (m, pCMThermalConductor3.m) ;
connect
(m, pCMThermalConductor2 .m);
connect (pCMCapacitor.munit,
m)
;
connect (port-a4,
pCMThermalConductor4 .port-b)
;
connect (port-a3,
pCMThermalConductor3.port-b)
;
connect (port-a2,
port-a2)
123
......
.....
.....
connect (heatCapacitor-side.m,
connect(thk,
m)
;
heatCapacitor-side.thk)
connect (pCMThermalConductorl .port b,
connect (thermalConductor-thkl
thermalConductor-thkl.port-a);
port .b, port-al)
connect (heatCapacitor-side.port,
connect(thk,
;
;
thermalConductor-thkl.port-a);
thermalConductor-thkl.thk);
connect (pCMThermalConductor2.portWb,
thermalConductor-thk2.port-a);
connect (thermalConductor-thk2.port b, port-a2);
connect(thk,
connect (thermalConductor .thk2.port-a,
connect(m,
;
thermalConductor-thk2.thk)
heatCapacitor-sidel.m)
connect (heatCapacitor-sidel .thk,
heatCapacitor-sidel.port);
;
thk)
end PCMunitCorner2;
124
;
..............................................
.
A.9
...............
I I..,.." I'll "..,
---
-
-
-
-
-
-
. -
External Convection
V
massFlwBounday
pressureBownday
Liquid Cooling fixed volume
temperatureSensor
jdegC
porla
Figure A-7: Dymola graphical model of external convection
125
>
- --
.-
, I
..........
model External-conv-temp3aLC
"convection over a flat plate with laminar flow with temp rise"
replaceable package medium = LPG constrainedby
Modelon.Media.Interfaces.GenericMedium
"Amb.
Medium with const. prop.
;
parameter Modelica.SIunits.ThermalConductivity lamda;
parameter Modelica.SIunits.Density rho;
parameter Modelica.SIunits.SpecificHeatCapacity cp;
parameter Modelica.SIunits.KinematicViscosity nue;
parameter Modelica.SIunits .Temperature boil-pt
"boiling point of the ambient fluid";
parameter Modelica.SIunits.Temperature sExtT;
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort-a
port-a
Modelica.Thermal.HeatTransfer.Components.Convection
convection;
Modelica.Blocks . Interfaces .RealInput vel
"velocity of convective object
[m/s]";
Real Nu;
Real Re;
Real Pr;
Real alpha;
Real h "conv coeff";
Real gc;
parameter Modelica.SIunits.Length L "Length scale";
parameter Modelica.SIunits.Area A "Area of convection";
Modelica.Blocks.Interfaces.RealOutput amb-t ;
Modelon. ThermoFluid.Sources .MassFlowBoundary
massFlowBoundary(
f lowDe f inition=Mode lon . ThermoFluid. Choices. FlowDe f init
ion .V-flow,
VFlowUnit=Modelon . ThermoFluid. Choices. RealVFlowUnit . SI,
use-f low-in=true,
redeclare package Medium = medium,
T(displayUnit="K") = 228.15)
;
Modelon. ThermoFluid. Sources .PressureBoundary
pressureBoundary(
126
..........
....
..
...................................
.........
..1
.......................
p(displayUnit="kPa") = 101300,
redeclare package Medium = medium,
T(displayUnit="K')
= 228.15,
N=l) ;
Modelica . Thermal . HeatTransfer . Celsius . TemperatureSensor
temperatureSensor ;
Modelon.ThermoFluid.Volumes.TwoportVolume twoportVolume(
redeclare package Medium = medium,
V=A*0.001,
redeclare model HeatTransfer
Modelon.ThermoFluid.Volumes.HeatTransfer.
LumpedHT-constAlpha
(alpha0=le6),
A-h=A,
internalHeatResistance=true,
realTimeMode=false,
initOpt=Modelon.ThermoFluid.Choices.InitOptions.initialValues,
p-start (displayUnit="kPa") = 101300,
T-start=sExtT)
equation
alpha = lamda/(rho*cp);
Re = abs(vel)*L/nue;
Pr = nue/alpha;
Nu = 0.664*(Re^0.5)*(Pr^(l/3));
h = Nu*lamda/L;
gc = h*A;
massFlowBoundary.V-flow-in
= vel*L*0 .001;
//volume flow is speed by width by height
assert(
temperatureSensor.T < boil-pt,
"ambient is vaporizing!",
Assert ionLevel .warning);
connect (convection.solid, port-a) ;
convection.Gc = gc;
connect (temperatureSensor.T, ambt) ;
connect (temperatureSensor.port, convection.fluid) ;
127
......................
..................
. .....
.....
connect(twoportVolume.q, convection.fluid) ;
connect(twoportVolume.portB, pressureBoundary.fluidPort[l]);
connect(massFlowBoundary.fluidPort, twoportVolume.portA) ;
end External-conv-temp3aLC;
128
...........
..
......
A.9.1
LPG Medium
package LPG "modelon lc table based LPG"
extends LiquidCooling.Media.Templates.Coolant(
redeclare package EquationsOfState =
Modelon.Media.EquationsOfState.Templates.Liquids.
TableBasedT(
limits(
TMIN=273.15 -
50,
TMAX=273.15 -
40,
DMIN=900,
DMAX=1100,
PMIN=0.le5,
PMAX=50e5,
HMIN=0 .0,
HMAX=200.0e3,
SMIN=0 .0,
SMAX=l.0e3),
tableData(
beta-const=0,
kappa-const=0,
reference-p=101325,
reference-d=584.55,
reference-h=0,
reference-s=0,
TinK=false,
tableDensity=[-50, 584.55; -40,
584.55],
tableHeatCapacity=[-50, 2237.5; -40,
2237.5],
tableConductivity=[-50, 0.1312; -40,
0.1312],
tableViscosity=[-50, 3.493e-7*584.55; -40,
tableVaporPressure=[-50, 86670; -40,
npol-rho=2,
npolCp=l,
npol-pVap=2),
129
3.493e-7*584.55],
110941]),
mediumName="LPG "
,
substanceNames={"LPG" },
redeclare package TransportProperties
=
Modelon .Media.TransportProperties.Templates. Simplified.
TableBased
limits(
TMIN=273.15 -
50,
TMAX=273.15 -
40,
DMIN=900,
DMAX=1100,
PMIN=0.le5,
PMAX=50e5,
HMIN=0.0,
HMAX=200
.
Oe3,
SMIN=0.0,
SMAX=l
.
Oe3),
tableData(
beta-const=0,
kappa-const=0,
reference-p=101325,
ref
erenced=584. 55,
reference-h=0,
reference-s=0,
TinK=false,
tableDensity=[-50, 584.55; -40,
584.55],
tableHeatCapacity=[-50, 2237.5; -40,
2237.5],
tableConductivity=[-50, 0.1312; -40,
0.1312],
tableViscosity=[-50, 3.493e-7*584.55; -40,
3.493e-7
*584.55],
tableVaporPressure=[-50, 86670; -40,
110941]),
npol-eta=2,
npol-lam=1),
CompressibilityType=EquationsOfState.CompressibilityType,
ThermoStates=Modelon.Media. Interfaces.Types.
IndependentVariables .pTX,
final limits=EquationsOfState.limits,
130
....
....
..
................
-..................
...................
-......
..
...
...
. .... . ....
analyticInverseTfromh=EquationsOfState.analyticInverseTfromh,
hasCriticalData=false,
FixedComposition=true,
redeclare model VolumeDynamics = IncompressibleVolume (nS=nS,
nC=nC));
end LPG;
131
132
Appendix B
Modelica Verification Testing and
Simulink Comparison Testing
B.1
Verification Testing
The following figures show the models used in the verification tests of the Modelica
component models as well as the results of those tests, if not included in Chapter 2.
133
...
.
..
...
expansionVolume
01
*G
const
V=8 Oe-4
duration=100
Fluid block
fixedHeaflow
h16M=2
Figure B-1: The model used for verification testing of the Dymola fluid block component using the Liquid Cooling library. This model simulated a closed loop fluid
circuit with a constant thermal input at the fluid block and a variable fluid flow rate.
134
..
........................................
-............
............
....
....
....
..........
I.::..,
.........................
fixedTemperaturel
I
i
T=323.15
Figure B-2: The model used for verification testing of the PCM block. One side of the
block is connected to a fixed temperature boundary, and the other side is thermally
isolated.
135
...........
.. ..........
ramp
external
duration=30
E
trapezoid
CL
period=40
Figure B-3: The model used for verification testing of the external convection model.
The robot speed is varied while the temperature applied to the heat sink side of the
convection is cycled up and down in a trapezoidal pattern.
136
-
..
.............
.......
.1..............
.........
.....................
heatCapacitor
thermalConductor
prescribecTemperature
pulse
period=20
Heater
Figure B-4: The model used for verification testing of the heater model. The temperature boundary connected to the thermal mass is cycled above and below the upper
and lower bounds for heater operation.
137
Simulink and Dymola Comparison Tests
B.2
The following figures show the models used in the comparison testing performed to
confirm that the simulation results agree between Dymola and Simulink, and the
results of the test.
so
system
deAs
2S
///7
exyLqlow
riy
pr
wce
rc
wl~
aa
Mpe
Riuca
cMndo.Z
I
I;
PvSa*eM"WL-
Mc
-dI
W
M PAWI
tewperaft"s
R
o-"
ZMRr
II
77
_
durafimt-l
-- tniM- C
Figure B-5: Dymola model of the TMS system used for Dymola/Simulink comparison
tests
138
......................
-
.....
..
....
pCMcontairw1_I T_avg
oP_scratch4.temperatureSensorT
u
Scopp3
Gain
cPscatch4.port-as 1Qflow
Group 1
cP_scratch3.temperatureSensmr.T
Siro iglde
CP_saatch3.pot_a1.Q_flow
-Ispsdset
y
exkdqflow
--JE---Il
Lj_
scow
Bsidas. System ffcmielnoAct iLt_%s
SoopQ
Figure B-6: Simulink model of the TMS system used for Dymola/Simulink comparison tests
139
External convection Q flow
-
0.0350.0300.0250.0200.0150.0100.0050.000-0.005-I
3000
2000
1000
4000
time (s)
Figure B-7: Dymola results for the external heat flow
0.04
----
.
O.035
-.-.-
/
0.03
O.025
0.02
0.015
0.011- -
-
0.005
0
500
1000
1500
2000
2500
3000
3500
4000
Time (s)
Figure B-8: Simulink results for the external heat flow
140
..
........................
............
..........................
..
......
.. ............
. ........
PCM block average temperature
M298
229.6229.4-
2292229.0228.8228.6228&4228,2-
I
1000
0
2000
3000
4000
time (s)
Figure B-9: Dymola results for the PCM average temperature
FCM.Ta.
| -.....
229.4
-.
.
.....
..
..
..
...
...
..
... .....
...
229
-
.--....
.....
S2288
'-228.6
2284
226.2
2280
-
5w
100
1500
2000
Time (s)
20O
3000
3500
4000
Figure B-10: Simulink results for the PCM average temperature
141
-
fluid block 4 Q flow -
fluid block 3 Q flow
25..
20-
IS-
% 10-
5-
0-
I00
0
2000
time (s)
3000
4000
Figure B-11: Dymola results for the fluid block heat flows
C.
cPscratch4.Qfiow
cPscrath3.Qlow
20
15
10
5
0
0
SM
100
1500
200
2500
30M
350
4000
Time (s)
Figure B-12: Simulink results for the fluid block heat flows
142
. .............
....
--
----------:.-
---
Fluid temperature 3
Fluid temperature 3
-
Fluid temperature 4
Fluid temperature 4
-
-- Motor capacitor temp
Motor capacitor temp
250200-
150100-
so0-50-
0
4000
3000
2000
1000
time (s)
Figure B-13: Dymola results for the system temperatures
300
cPscratch4.T
cPscratch3.T
250
-MtrCap.T
200
---
150
-
- -
-
-
- -
-
-
- .
.
-.-.- -..--
-
--
-
- -
-
E
a)
1J 6
0100
......
1500......
2000.
2500..
1500
250M
...
3000......
... ....
3500..........
0-
0
500
1000
2MW
3000
35M0
Time (s)
Figure B-14: Simulink results for the system temperatures
143
4000
144
...
..
..
..........
.............
I..........
..
......
..............
Appendix C
Matlab Code
% Ethan Heller, May 2013
% TMS control
% File 6Fvel2
% Modelon LC model and the velocity as a controlled output
%% Startup
%initialize
clear all; cdc;
ytmat =
ydmat = [];
utmat = [I;
udmat = [3;
ypmat = [1;
[];
tpmat =
ymdmat
=
xStatemat
rmat =
[];
=
[];
[];
%load in the velocity reference trajectory
load VrefVtL2.mat;
%load in simin
load DSinit6.mat; %load in DSxinit for initial parameter values
145
wm
~w
%set simulation parameters
model =
'partial-run-sim6Fvel2';
%set model used
load-system (model)
open-system (model)
cs = getActiveConfigSet(model);
%get the model configuration setup
model-cs = cs.copy; %copy the configuration
tau = 375;
%set the system step = smallest thermal time constant
t-final = tau*ceil(simin.Time(end)/tau);
%get final time from vel ref input (timeseries)
t-cur = 0;
%initialize current time
sStateNames = sGetStateNameStarts6f;
%open file with the names of the states
ssN
ts
=
size(sStateNames,2);
1; %sampling time for MPC
=
p = 200; %MPC prediction horizon modified from 200/20
m = 20;
%MPC control horizon
T = floor(tau/ts);%number of MPC simulation steps
wghts = struct('ManipulatedVariables', [0.0
0.02],...
'OutputVariables', [65 .008 .01 1]);
%MPC weights structure
MV(l) = struct('Min',0.001,'Max',.6,'RateMax',0.01,'RateMin',-0.025);
%MPC manipulated variable 1 (vdem)
MV(2) = struct('Min',0.01,'Max',11.98,'RateMax',0.1,'RateMin',-0.05);
%MPC manipulated variable 2 (pump)
OV(l)
= struct('Min',0,'Max',0.5,'MaxECR',.10);
%MPC output variable 1 (vel)
OV(2) = struct('Min',-40+273.15,'Max',140+273.15,'MaxECR',.005);
%MPC output variable 2 (T mtr)
OV(3) = struct('Min',-48,'Max',105,'MaxECR',.15);
%MPC output variable 3 (T liquid)
OV(4) = struct('Min',-46,'Max',-42.6,'MaxECR',O);
%MPC output variable 3 (T ext)
DV = [];
146
....................
tsamp
ts; %sampling time for linearization
=
initT2
=
[0 150 tau]'; %time for initial run
initU2
=
[0; 0;
initTS2
=
2.7J; %initial Us: pump
timeseries(initU2,initT2);
%time series of initial inputs2
%% Iteration Code: MPC
while t-cur < t-final
%run until the final time as determined from external input
load-system(model)
open-system (model)
t-s = t-cur;
%simulation start time
t-f = t-s+tau;
%simulation stop time
set-param(model-cs,'StartTime','t-s','StopTime','t-f');
%need to set initial parameters of the model to the initial values
%of the last run
if t-cur
==
for i
=
0 %on the first run only
1:ssN
%set inital conditions, the model does not reset automatically
fmuSetValueSimulink (...
'partial-run-sim6Fvel2/BasicModels.System-model-final-Sim6F
sStateNames{l, i}{l,
l},DSxinit (i));
end
%set inputs 1 and 2 to timeseries input
inl = simin;
%set v dem input from Vref data
in2 = initTS2;
%set pump input from initial data
else %for all other runs
for i = 1:ssN
%set
inital conditions, loop through all variables
fmuSetValueSimulink
(...
'partial-run-sim6Fvel2 /Bas icModels. System-model-f inal-Sim6F '
sStateNames{l,i}{ll},sDSx(end,i));
end
147
I
..................................................................
....
......
...
-.........................
-
inl = TSmpcl; %set pump input from MPC
in2 = TSmpc2; %set v scalar input from MPC
clear sDSx;
clear tDS;
end
simOut-itr = sim(model,
%simulate the model
model-cs);
(iteration i)
y-itr = simOut-itr.get('y-itr');
ycell = struct2cell(y-itr);
ytmat-itr = ycell{l,1};
ytmat =
%get the simulation output
%convert output to cell
%convert time output to mat form
[ytmat;ytmat-itrl;
%concatenate time output
= ycell{2,1}(1,1) .values;
ydmat-itrl
%obtain the first output value
= ycell{2,1}(1,2) .values-273.15;
ydmat-itr2
%obtain the 2nd output value in deg C
ydmat-itr3 = ycell{2,1}(1,3).values;
%obtain the 3rd output value
ydmat-itr4 = ycell{2,1}(1,4).values;
%obtain the 4th output value
ydmat =
ydmat-itr3 ydmat-itr4];
[ydmat;ydmat-itrl
ydmat-itr2
%concatenate data output
%save states for plotting checks, use ytmat for time scale
= simOut-itr.get('x-itr');
x-itr
signals . values;
.x-tr
xStateitr
xStatemat
=
[xStatemat;
xState-itr];
%obtain results from Dymola to use in setting inital states
DymXitr = loadDSResult
('BasicModels. System-model-f inal-Sim6F-results .txt');
for n = 1:ssN
[tDS sDSx(:,n) ] = getDSVariable(DymXitr, sStateNames{l,n}{2, 1});
end
%do the linearization on output y-itr and input u-itr
%need to interpolate data to uniform sampling for n4sid
148
....
.. .. ..
..........................
......
= y-itr.time(l);
tstart
tfinal = y-itr.time(end); %set interp start/stop
ti = tstart:tsamp:(tfinal-ts);
yis(:,1)
= interpl (y-itr.time,y-itr.signals
yis(:,2)
= interpl (y-itr.
yis(:,3)
= interpl (y-itr.time,y-itr.signals
(3) .values,ti);
yis(:,4)
= interpl (y-itr.time,y-itr.signals
(4) .values,ti);
time, y-itr.
(1) .values,ti);
signals (2) .values,ti);
uis(:,l) = interpl(inl.Time,inl.Data,ti);
uis(:,2) = interpl(in2.Time,in2.Data,ti);
data = iddata(yis,uis,tsamp); %create data set for
lin
%linearize using 10 states to SS model (iteration i)
[linplant,xO] = n4sid(data,10,'DisturbanceModel','none');
MPCobj
mpc(linplant,ts,p,m,wghts,MV,OV,DV);
%create the MPC object
[yp, tp, xp]
(iteration i+1)
= lsim(linplant,uis,ti,xO);
%get simulation states for lin sys
xpinit = xp(end,:)';
tpmat =
[tpmat;tp];
ypmat = [ypmat;ypj;
%grab the last state as MPC initial
%grab lin plant times for comparison
%grab lin plant outputs for comparison
SimOpt = mpcsimopt(MPCobj);
%set simulation options w/
initial values
uold = [uis(end,l);uis(end,2)];
xmpc = mpcstate(MPCobj,xpinit, [}, [],uold);
%set the MPC state for sim
%assign control initialization
set (SimOpt, 'PlantInitialState' ,xpinit, ...
149
. ........
....
............
.......
'ControllerInitialState',xmpc);
v = interpl(simin.Time,simin.Data,t-f:ts: (t-f+tau-ts));
%next timestep disturbance
vel
tmpc
(reference signal)
v'; %set velocity reference from Vref
=
=
tf:ts:(t-f+tau-ts);
%create a time vector for control timeseries
for
j = 1:T
Tmtr(j,l) = 95.6189*tanh((tmpc(j)-(t-final/3))/(t-final/3)) ...
+27.8228+273.15; %hyperbolic tangent for ref value shaping
Tliq(j,l)
=
Text(j,1) =
(75/t-final)*tmpc(j)-45;
(0.2/t-final)*tmpc(j)-45; %values for MPC set pts
end
r =
[vel Tmtr Tliq Text];%reference signal
%do the MPC simulation
(iteration i+1)
[y-mpc, t-mpc, u-mpc, xp-mpc, xmpc-mpc, SimOptions]
=
sim(MPCobj,T,r,SimOpt);
TSmpcl = timeseries(u-mpc (:,1),tmpc);%pump timeseries input
TSmpc2 = timeseries (umpc (:,2) ,tmpc) ;%Vscalar timeseries input
utmat =
[utmat; tmpc']; %create input time matrix
udmat =
[udmat;
u-mpc(:,l)
u-mpc(:,2)
velJ;
%create input data matrix
ymdmat =
rmat =
[ymdmat; y-mpc]; %create matrix of MPC output prediction
[rmat;
rj;
t-cur = t-f %set current time as final time of simulation
close-system (model, 0);
end
%% Output part
150
....
......................
.................
................
..
.....
.......
velref = interpl(simin.Time,simin.Data,ytmat); %create vel ref array
velerr = velref -
ydmat(:,1);
%determine the vel error
toterr = sum(velerr) %output the total error sum
rmatC = rmat;
rmatC(:,2)=rmatC(:,2)-273.15; %convert the reference mtr T to deg C
figure; plot(ytmat,ydmat) %plot the Ys
xlabel('Simulation time
(s) ');
ylabel('Output Values');
legend('velocity (m/s) ','motor T
(^{\circ}C) ',....
'fluid T (^{\circ}C) ','external T (^{\circ}C) ');
figure; plot(utmat,udmat) %plot the Us
xlabel('Simulation time
(s)');
ylabel('System inputs');
legend('vel demand (m/s)','pump demand
(lpm)','vel reference
(m/s)');
figure; plot(ytmat,xStatemat) %plot the states
xlabel('Simulation time
(s)');
ylabel('State values');
figure; plot(utmat,ymdmat);
xlabel('Simulation time
%plot the MPC predictions
(s)');
ylabel('MPC Predicted Output Values');
legend('velocity (m/s) ','motor T (K) ','fluid T (^{\circ}C)
',...
'external T (^{\circ}C) ');
figure; plot(tpmat,ypmat); %plot the linearized Ys
xlabel('Simulation time
(s) ');
ylabel('Linear Output Values');
legend('velocity (m/s) ','motor T (K) ','fluid T
'external T
(^{\circ}C)',...
(^{\circ}C) ');
figure; plot(ytmat,(velerr ydmat(:,l) velref]); %plot velocity
xlabel('Simulation time
(s)');
ylabel ('Velocities (m/s) ');
legend('vel error','output vel','ref vel');
figure; plot(utmat,rmatC) %plot the references
xlabel('Simulation time
(s)');
ylabel ('Reference Values');
legend('velocity (m/s) ','motor T
'fluid T (^{\circ}C)',
(^{\circ}C) ',...
'external T (^{\circ}C)');
151
..............
ypmatC = ypmat;
ypmatC(:,2) = ypmatC(:,2)-273.15;
%convert linear mtr T to deg C
%plot the linearized and measured Ys together
figure; plot(ytmat,ydmat)
xlabel('Simulation time
(s)');
hold; plot(tpmat,ypmatC,':')
ylabel('Measured and Linear Output Values');
legend('velocity
'fluid T
(m/s)','motor T (^{\circ}C)',...
(^{\circ}C)','external T (^{\circ}C)',...
'lin velocity','lin motor T',...
'lin fluid T','lin external T');
152
..
..
............................
....
..
-.:
. ...................
Appendix D
Closed-Loop Simulation Test
Results
The following figures show some of the results of the Simulink closed-loop control
testing.
12
L!LJ~
LY~J
..
...........-
.....
-.. .. ..
10
8
-- .- --
- -- - -- .-........ -- --
-- -- --
-
CL
E 6 -----
-
-----.-.-.
CO,
vel
demand (m/s)
pump demand (1pm) vel reference (m/s)
4
2
0'
2000
4000
6000
8000
Simulation time (s)
10000
12000
14000 15000
Figure D-1: The control commands calculated by the MPC. The velocity reference is
also shown for comparison to the velocity control demand.
153
....................
.. - ---.............
...... .. ..... ....
.
450
. . ........
..... .I......
...
...
....
....
...
......
....
400
350
(U
300
250
- - - - -velocity (m/s)
motor T (K)
-- - -- -fluid T
(C)
a200
150
OD
100
-- -- external T C)
--- - - - - - - -- - -
0
50
.....
-.
..........................
....-.... ......
. ..............................................
~-...
0
-50
)
2000
12000
10000
8000
6000
Simulation time (s)
4000
14000 15000
Figure D-2: The MPC predictions of the output values in response to the control
commands.
120
100
80
-
velocity (m/s)
motor T (C)
fluid T (C)
extemalT(C) -
-- -
--
-
--
--
- -
-
- - - -.-
-.
-. ...
-.
-.
.....
....... ..
..........
..........
...
........-.
60
C1
P1
40
.. ..... ................
...............
-.--.--.--.
-. -.
.-.-. .....
20
-.........
0
..................
......................
-...-.
---.
.......
-..
. ..-. ....
...
............
-
-20
-40
2000
4000
8000
600 0
Simulation time (s)
10000
12000
14000 15000
Figure D-3: The output reference values used in the control. The motor temperature
reference (green) is a hyperbolic tangent function specifically fit to follow the natural
response of the motor temperature when following the velocity reference (blue), a
trapezoid that requests 90% motor speed at the plateau.
154
_
_."I
Bibliography
[1] Ethylene propylene rubber (EPM, EPDM). http: //www.matweb. com/search/
DataSheet . aspx?MatGUID=f8e3355cc2c541fbb0174960466819c0&ckck=1 Online.
[2] Modelica and the modelica association. https: //www.modelica. org/. Online.
[3] Code of federal regulations, title 49, part 193, subpart g, 1980. Online.
[4] Appendix 1: Property tables and charts (SI units).
http://highered.
mcgraw-hill. com/sites/dl/free/0073398128/835451/Appl.pdf, 2010. Online.
[5]
EC-max 40 040 mm, brushless, 120 watt. http://www.maxonmotorusa.com/
medias/sys-master/8800984956958/12_.171_EN.pdf, 2012. Online.
[6] Fifth progress report, 2012. Progress report on the robotic inspection project as
a collaboration between MIT and Qatar University.
[7] RE 40 040 mm, graphite brushes, 150 watt. http: //www.maxonmotorusa. com/
medi as/sys _mast er/8800950812702/12_082_EN. pdf , 2012. Online.
[8] Standard Liquid Cold Plate PT Zed 1518.
http: //www. priatherm. com/
datasheets/dataX20sheet%20PTZed_1518.pdf, 2012. Online.
[9] Best practice-buildings library user guide. http: //simulationresearch. ibl.
gov/modelica/userGuide/bestPractice.html, 2013. Online.
[10] bvp4c. http: //www. mathworks. com/help/matlab/ref /bvp4c. html, 2013. Online.
[11] Estimate state-space model using a subspace method. http: //www. mathworks.
com/help/ident/ref/n4sid.html, 2013. Online.
[12] fmincon.
Online.
http://www.mathworks.com/help/optim/ug/fmincon.html,
2013.
[13] Simulate controller with nonlinear plant. http://www.mathworks.com/help/
mpc/gs/simulations-involving-nonlinear-plants.html, 2013. Online.
155
[14] Work-arounds-buildings
users
library
guide.
http: //
simulationresearch.lbl.gov/modelica/userGuide/workArounds.html#
reducing-nonlinear-equations-of -serially-connected-f low-resistances,
2013. Online.
[15] A. Abhat. Low temperature latent heat thermal energy storage: Heat storage
materials. Solar Energy, 30(4):313-332, 1983.
[16] R. Akhilesh, A. Narasimhan, and C. Balaji. Method to improve geometry for
heat transfer enhancement in PCM composite heat sinks. International Journal
of Heat and Mass Transfer, 48(13):2759-2770, 2005.
[17] D. Arcury and E. Heller, 2013. Personal Communication.
[18] A. Bemporad, M. Morari, and N. Lawrence Ricker. Model predicitve control
toolbox user's guide. Technical report, The MathWorks, Inc., Natick, Mass.,
2013. User's Manual.
[19] E. D. Buchanan, D. J. Benford, J. B. Forgione, S. Harvey Moseley, and E. J. Wollack. Cryogenic applications of commercial electronic components. Cryogenics,
52(10):550-556, 2012.
[20] J. Buschle, WD Steinmann, and R. Tamme. Analysis of steam storage systems
using modelica. In 5th InternationalModelica Conference, Vienna, Austria, 2006.
[21] Cabot
Corporation.
Aerogel
thermal
wrap
insulation.
http:
//www. cabot-corp. com/Aerogel/Industrial-and-Cryogenic/Products/
PR201005131338PM6352/. Online.
[22] K. Dietl, J. Vasel, S. Gerhard, W. Casas, and C. Mehrkens. Modeling of cold
plates for power electronic cooling. In Bernhard Bachmann, editor, 6th International Modelica Conference, pages 627-628, Bielefeld, Germany, 2008. The
Modelica Association.
[23] Dynalene. Dynalene HC. http: //www. dynalene. com/pdf/HC. pdf, 2009. Online.
[24] Dynalene. Dynalene HC Heat Transfer Fluid Engineering Guide, 2012. Manufacturer's Guide.
[25] R. Fernandez, E. Gonzilez, V. Felidl, and A.G. Rodriguez. A wall climbing robot
for tank inspection. an autonomous prototype. In 36th Annual Conference on
IEEE Industrial Electronics Society, pages 1424-1429, 2010.
[26] E. Hage. Choice of electric motor: Avoid overheating and over-dimensioning.
Technical report, specAmotor, Confirmat, The Netherlands, 2007.
[27] F. P. Incropera and D. P. Dewitt. Convection correlations: Noncircular tubes.
In Fundamentalsof Heat and Mass Transfer, pages 495-496. John Wiley & Sons,
Hoboken, NJ, 5 edition, 2002.
156
[28] F. P. Incropera and D. P. Dewitt. Free convection. In Fundamentals of Heat
and Mass Transfer, pages 539-543. John Wiley & Sons, Hoboken, NJ, 5 edition,
2002.
[29] F. P. Incropera and D. P. Dewitt. Fundamentals of Heat and Mass Transfer,
pages 545-546. John Wiley & Sons, Hoboken, NJ, 5 edition, 2002.
[30] F. P. Incropera and D. P. Dewitt. Introduction to convection. In Fundamentals
of Heat and Mass Transfer, volume 5, page 355. John Wiley & Sons, Hoboken,
NJ, 2002.
[31] F. P. Incropera and D. P. Dewitt. One-dimensional, steady-state conduction. In
Fundamentals of Heat and Mass Transfer, pages 126-144. John Wiley & Sons,
Hoboken, NJ, 5 edition, 2002.
[32] Intel Corporation.
Intel(r) atom processor d525 (IM cache, 1.80 GHz).
http://ark.intel.com/products/49490/Intel-Atom-processor-D525-/
281M-Cache-1_80-GHz429. Online.
[33] JPL. Mars science laboratory:
mission/rover/body/. Online.
Body.
http: //mars. jpl.nasa.gov/msl/
[34] JPL. Mars exploration rover mission. http://marsrover.nasa.gov/mission/
spacecraft rover-body.html, 2011. Online.
[35] JPL. Mars exploration rover mission. http://marsrover.nasa.gov/mission/
scrover-temp-heaters.html, 2011. Online.
[36] JPL. Mars exploration rover mission. http://marsrover.nasa.gov/mission/
spacecraft rover-temp.html, 2011. Online.
[37] L. P. Kalra, J. Gu, and M. Meng. A wall climbing robot for oil tank inspection. In
IEEE InternationalConference on Robotics and Biomimetics, pages 1523-1528,
2006.
[38] L. P. Kalra, Weimin Shen, and J. Gu. A wall climbing robotic system for non destructive inspection of above ground tanks. In Canadian Conference on Electrical
and Computer Engineering, pages 402-405, 2006.
[39] M. Krstid and Hsin-Hsiung Wang. Stability of extremum seeking feedback for
general nonlinear dynamic systems. Automatica, 36(4):595-601, 2000.
[40] W. E. Larimore. Canonical variate analysis in identification, filtering, and adaptive control. In Proceedings of the 29th IEEE Conference on Decision and Control, pages 596-604 vol.2, 1990.
[41] J. Leland and G. Recktenwald. Optimization of a phase change heat sink for
extreme environments. In Ninteenth Annual IEEE Semiconductor Thermal Measurement and Management Symposium, pages 351-356, 2003.
157
Aspects and experiences of user choices in subspace identification. Technical Report LiTH-ISY-R-2564, Department of Electrical Engineering,
Linkping University, SE-581 83 Linkping, Sweden, Dec 2003.
[42] L. Ljung.
Design and con[43] H. Lun, F. Filippone, D. C. Roger, and M. Poser.
in Europe and
tanks
storage
struction aspects of post-tensioned LNG
http://www.contech.co.nz/uploaded/Post-tensioned*/*20LNG/*
Australia.
20Storage%2OTanks.pdf, 2006. Online.
[44] S. Mannan. Lee's Loss Prevention in the Process Industries, volume 1-3, pages
33-40. Elsevier Butterworth-Heinemann, Burlington, MA, 2005.
[45] S. Mannan. LPG storage. In Lee's Loss Prevention in the Process Industries,
volume 1-3, page 20. Elsevier Butterworth-Heinemann, Burlington, MA, 2005.
[46] Modelon AB, Ideon Science Park, LUND. FMI Toolbox User's Guide 1.4.4, 2013.
[47] M. Otter. Modelica overview, 2011.
[48] Pacor Incorporated. Aerogel insulation.
aerogels.html, 2012. Online.
http: //www . pacorinc . com/pro-_
[49] RL Patterson, A. Hammoud, and M. Elbuluk. Assessment of electronics for
cryogenic space exploration missions. Cryogenics, 46(2):231-236, 2006.
[50] S. W. Ryu, J. J. Park, S. M. Ryew, and H. R. Choi. Self-contained wall-climbing
robot with closed link mechanism. In IEEE/RSJ International Conference on
Intelligent Robots and Systems, volume 2, pages 839-844 vol.2, 2001.
[51] J. Savall, A. Avello, and L. Briones. Two compact robots for remote inspection
of hazardous areas in nuclear power plants. In IEEE International Conference
on Robotics and Automation, volume 3, pages 1993-1998 vol.3, 1999.
[52] H. Schempf. Neptune: above-ground storage tank inspection robot system. In
IEEE International Conference on Robotics and Automation, pages 1403-1408
vol.2, 1994.
[53] C. Schmid and L. T. Biegler. Quadratic programming methods for reduced
hessian SQP. An International Journal of Computer Applications in Chemical
Engineering, 18(9):817-832, 1994.
[54] Silverwing. Handscan MFL2000, 2012. Online.
[55] A. Stupar, U. Drofenik, and J. W. Kolar. Optimization of phase change material heat sinks for low duty cycle high peak load power supplies. Components,
Packaging and Manufacturing Technology, IEEE Transactions on, 2(1):102-115,
2012.
http://www.techcorr.com/services/
OTIS FAQ.
[56] TechCorr USA LLC.
2012. Online.
cfm,
Inspection-and-Testing/OTIS-FAQ.
158
[57]
Thermablok Incorporated.
Aerogellaerogel
thermablok. com/index. htm, 2012. Online.
insulation.
http://www.
[58] Y. Tundi and E. Heller, 2012. Personal Communication.
[59] M. Verhaegen. Identification of the deterministic part of MIMO state space
models given in innovations form from input-output data. Automatica Special
issue on statistical signal processing and control, 30(1):61-74, 1994.
[60] Weimin Shen, J. Gu, and Yanjun Shen. Proposed wall climbing robot with
permanent magnetic tracks for inspecting oil tanks. In IEEE International Conference Mechatronics and Automation, volume 4, pages 2072-2077, 2005.
[61] M. Wetter. Modelica buildings library. http: //simulationresearch. ibl. gov/
modelica, 2013. Online.
[62] D.
Woligroski.
A
beginner's
guide
for
WaterCool-
ing
your
PC.
http://www.tomshardware.com/reviews/
a-beginners-guide-f or-waterc ooling-your-pc, 1573. html, 2007.
Online.
[63] J. Yu and H. Zhao. A numerical model for thermoelectric generator with the
parallel-plate heat exchanger. Journal of Power Sources, 172(1):428-434, 2007.
159