Documente Academic
Documente Profesional
Documente Cultură
By
Cliff Mui
B A S c , The University o f British Columbia, 1989
A THESIS S U B M I T T E D I N P A R T I A L F U L F U L L M E N T OF
THE REQUIREMENTS FOR THE DEGREE OF
M A S T E R OF APPLIED SCIENCE
in
F A C U L T Y OF G R A D U A T E STUDIES
DEPARTMENT OF M E T A L S A N D M A T E R I A L S ENGINEERING
DE-6 (2/88)
ABSTRACT
casting o f billet sections, cooling o f the billets, reheating to rolling temperatures and final
shaping and size reduction i n rolling mills. The operation o f such furnaces can be a
challenge due to the dynamic nature o f both the reheating and rolling processes. The
operation o f a furnace was analyzed with the use o f a S C A D A data collection system,
steady state and transient mathematical models. The new knowledge gathered i n this way
basis for an expert system designed to offer timely advice to furnace operators. The
furnace m i l l productivity.
n
TABLE OF CONTENTS
ABSTRACT ii
LIST OF TABLES v
LIST O F FIGURES vi
GLOSSARY viii
ACKNOWLEDGMENTS x
C H A P T E R 1. I N T R O D U C T I O N 1
C H A P T E R 2. B A C K G R O U N D A N D PREVIOUS W O R K 3
C H A P T E R 3. E X P E R T A N D SCADA SYSTEMS 19
C H A P T E R 3.1. E X P E R T S Y S T E M S : 19
C H A P T E R 3.2. E X A M P L E S OF E X P E R T SYSTEMS: 22
C H A P T E R 3.3. P R O P O S E D I M P L E M E N T A T I O N O F A N E X P E R T S Y S T E M T O T H E R E H E A T I N G F U R N A C E : 28
C H A P T E R 3.4. OBTAINING A N D PROCESSING F U R N A C E D A T A - T H E SUPERVISORY C O N T R O L A N D D A T A
AQUISITION ( S C A D A ) S Y S T E M : 33
C H A P T E R 4. S C O P E A N D OBJECTIVES 38
C H A P T E R 4.2. O B J E C T I V E S O F T H E PROJECT: 39
C H A P T E R 5. - M E T H O D O L O G Y 41
C H A P T E R 7. C O N C L U S I O N S 81
BIBLIOGRAPHY 82
APPENDIX B HARDWARE 92
iii
APPENDIX C SOFTWARE 93
IV
LIST OF TABLES
Appendix Tables
v
LIST OF FIGURES
Figure 2.1 Conversion from Scrap to Billet Steel 4
Figure 2.2 Schematic of the Post-heating Rolling Process 4
Figure 2.3 Side View of the Furnace 5
Figure 2.4 Existing Control Flow Diagram 6
Figure 2.5 End View Schematic of the Billet Support Beams 10
Figure 2.6 Top View of Billets Resting on Support Beams 11
Figure 2.7 Typical Axial Temperature Profile 11
Figure 2.8 Effect of Carbon Content on Steel Melting Temperature 15
Figure 2.9 Schematic of the Migration of Carbon from the Steel into the Combustion Atmosphere 16
Figure 2.10 Limiting conditions of time and temperature for various degrees of decarburization in
3" slab based upon isothermal data. 17
Figure 3.1. Pyrolysis Chamber for Alumina Fibres 24
Figure 3.2 Schematic of the Data and Knowledge Streams 31
Figure 3.3 QNX multitasking operating system 33
Figure 3.4 Knowledge Units Available to Comdale/C 36
Figure 3.5 Independent Application Modules 37
Figure 5.1 Interim Logging System 46
Figure 5.2 Block Diagram of the Current System 46
Figure 5.3 Block Diagram of the Proposed System 46
Figure 5.4 MMI Billet Profile Screen 49
Figure 5.5 SOP Product Selection Screen 53
Figure 5.6 Schematic of the Mill Sensor Layout 53
Figure 5.7 Hot Metal Detector (HMD - an optical position sensor) Signal Quality 54
Figure 5.8 Historical Furnace Operation Screen - Gas Flows 55
Figure 5.9 Historical Furnace Operation Screen - Temperatures 56
Figure 5.10 Advisory Screen 57
Figure 5.11 Inference Logic Cycle applied to the Knowledge Base 61
Figure 6.1 N6 Raw Gap Times 72
Figure 6.2 N6 Gap Time with Arbitrary Ranges 72
Figure 6.3 Example of Furnace Zone Temperature Traces 73
Figure 6.4 Example of Furnace Natural Gas Traces 73
Figure 6.5 Example of Furnace Air Traces 74
Figure 6.6 Example of Furnace Pressure Traces 74
Figure 6.7 Plot of Billet Temperature Profiles Over Time 75
Appendix Figures
Figure A -1 Plant Trial Results as Compared with Modeling Results 85
Figure A - 2 Results of a Basic Strategy with a Null Strategy 90
Figure A - 3 Results of a Fine Strategy with a Null Strategy 90
Figure A - 4 Billet Release Gap Times 153
Figure A - 5 Billet Release Gap times 153
Figure A - 6 Billet Release Gap Times 154
Figure A - 7 Billet Release Gap Times 154
Figure A - 8 Billet Release Gap Times 155
Figure A - 9 Billet Release Gap Times 155
Figure A -10 Billet Release Gap Times 156
Figure A -11 Billet Release Gap Times 156
Figure A -12 Billet Release Profile - 40 second target 157
Figure A -13 Modified Billet Release Profile - 40 second target 157
vi
Figure A -14 Magnified Billet Release Profile - 40 second target 158
Figure A - 15 Billet Release Profile - 50 second target 159
Figure A - 16 Modified Billet Release Profile - 50 second target 159
Figure A - 17 Magnified Billet Release Profile - 50 second target 160
Figure A-18 Billet Release Profile -100 second target 161
Figure A - 19 Modified Billet Release Profile -100 second target 161
Figure A - 20 Magnified Billet Release Profile - 100 second target 162
vii
\
GLOSSARY
viii
PID - Proportional Integral Derivative - Describes the control process in which control
changes are made i n a fashion which examines not only a non target condition but
adjusts control with respect to magnitude o f offset, required adjustment, and rate
o f change.
P L C - Programmable Logic Controller - a microprocessor designed to accept software
instruction sets which adjust control outputs based on control inputs
ProcessVision - Real-time process view and control software capable o f accepting real-
time inputs from processes and providing a visual interface for the process
supervisor.
Process Lore-the false belief i n a basic principle or effects o f segments o f process control
Q N X - P C based U N I X operating software which allows real-multitasking o f software i n
the industrial environment - written by Quantum Software.
Quality Assurance - The supervision o f the process o f producing a product i n order to
ensure all process steps contribute to a product which w i l l be within specifications
Quality Control - The examination o f products after production to ensure that the
products are within specifications.
S C A D A - Supervisory Control A n d Data Acquisition - a supervisory system which is
capable o f acquiring process information remotely and supplying appropriate
control to the process.
Skidmark - a skidmark is a thermal depression on a billet caused by the billet sitting on
the relatively cold stationary support beam.
Skidmark Severity - The severity i n terms o f the absolute temperature drop in the
skidmark region in contrast to the surrounding regions.
Slide Wire - a electro-mechanical system which results in a resistance output based on the
mechanical position o f a detector arm.
Stand - A large piece o f machinery housing a vertical stack o f rollers i n which a bar
passes through the inner rollers to deform to a smaller size and/or shape
Steady State - A state in which a conditions are stable and not changing
Transient - A state in which conditions are changing
Walking Beam - The mobile beam i n a walking beam furnace which lifts the charge o f
billets off o f stationary beams and moves them forward or backward. After the
traverse o f a Pace the walking beams set the charge back down on the stationary
beams.
ACKNOWLEDGMENTS
I would like to express my deepest appreciation to Dr. Peter Barr and D r . John
Meech for their support and guidance towards the completion o f this project. In addition
I would like to thank Dr. Keith Brimacombe, Dr. Indira Samarasekera, and the Centre for
Metallurgical Process Engineering and N S E R C for both financial and moral support i n
this endeavor. I owe a debt o f gratitude to Vladimir Rakocevic for his invaluable
Dennis Gutknecht, Mark Burrough, E d Duchesne, and the furnace operators for their
x
C h a p t e r 1. I n t r o d u c t i o n
the caster which produces the billets, and the rolling m i l l which shapes the billets, into
finished products. The operation o f a steel billet reheating furnace located in Alberta,
Canada w i l l be utilized for our analysis. The production o f material such as construction
rebar or rail sections involves the conversion o f raw billets into hot rolled products.
which the billets can be rolled with reasonably l o w forces as well as result i n the proper
microstructure at the end o f the process. In the ideal world o f furnaces operated within
steel rolling mills, all processes run at steady state and no problems occur to disturb this
perfect equilibrium. In this perfect world, steel billets are charged cold into the furnace
and are removed hot at regular intervals, all o f which are homogeneously heated prior to
hot rolling i n the downstream m i l l rolls. The furnace, o f course, would be operated at
optimal steady-state conditions at all times and would never require adjustment. The
rolling m i l l would be able to accept these billets in a timely fashion and would shape all
of the bars successfully into rolled products. Unfortunately, this ideal world does not
exist.
example, scheduled delays due to regular downstream roll changes or unscheduled delays
due to unexpected cobbles are a few o f the conditions that may be encountered during the
initial charging o f billets. Furnaces have large thermal inertia - things change slowly and
1
errors take time to recover. Control o f the furnace temperatures is critical i f the desired
result is to produce a homogeneously heated product billet at the proper time and proper
Consistency o f such operator-based control can be poor at the best o f times therefore a
based on the manipulation o f symbols rather than numbers, which enable computers to
produce behavior which resembles that previously only seen i n humans" [1,2]. Expert
programs in that the problem solving techniques, or "heuristics", mimic human problem
solving. Expert systems would therefore have a distinct advantage over conventional
control schemes in experience laden applications such as steel reheating furnaces. The
operating costs.
2
Chapter 2. Background and Previous Work
The facility chosen for the implementation o f this expert system was a mini-mill
located in Alberta, Canada. The m i l l buys scrap steel on the open market, melts the raw
prior to a continuous casting process for the production o f steel billets. The billets cast
are square sections with dimension 4 / " , 6", or 8" which are cut to lengths up to 16 feet
3
4
long. The process from scrap to billet is illustrated in Figure 2.1. These billets are taken
to a storage yard where they are cooled prior to scheduled charging into a natural gas
fired steel reheating furnace. These billets are heated i n the furnace to obtain a
homogeneity o f temperature prior to hot forming. The hot billets from the furnace are
then shaped i n a rolling m i l l to produce bar products such as grinding stock, railway
tracks, rebar, and structural stock. The schematic in Figure 2.2 illustrates the billet
The natural gas fired furnace utilizes a combination o f stationary and walking
beams which carry the billets into and out o f the heating zones. The furnace is 16 feet,
wide and 57 feet long and handles the billets i n an orientation perpendicular to the axis o f
movement. The furnace is separated into three distinct control zones i n which individual
the setpoints chosen by the furnace operator on shift. Figure 2.3 illustrates the side cut-
3
"From Scrap to billet"
Yard
Stands
Cooling
Bed
4
Flue
gas flow —
Discharge
furnace temperatures as well as provide simple control logic to avoid dangerous furnace
systems, which may include simple setpoint control, mathematical model-based control,
or variants o f mill-wide supervisory control. The control o f the furnace i n our scenario is
via a manual setpoint, control o f which is left to furnace operators whom make control
decisions based on experience and reasonable deductions. Figure 2.4 illustrates the
control diagram o f the existing control system. The complexity o f this control problem
stems from the fact that a billet may spend in the order o f 100's o f minutes within the
furnace chamber experiencing a temperature history distinctly different from the majority
5
of billets i n the furnace under normal m i l l operating conditions. It is therefore very
difficult to manually analyze the furnace operation to the degree o f certainty that can be
Control o f the P L C ' s set points is left to the shift furnace operator who follows
general guidelines for furnace control but relies mainly on experience and "know how" to
select the appropriate measures during both steady state and transient operating
conditions.
walking
beam
mechanism
Developed in conjunction with the expert systems initiative, the operation o f the
steel reheating furnace was examined thoroughly with mathematical models. A steady-
state operation model was developed by Barr [3] to examine the efficiency o f current
steady-state operating procedures. A plant trial campaign along with the development o f
a transient furnace model was developed and verified on two Canadian reheating furnaces
6
by Scholey [4]. These mathematical models along with the scenario development by
7
Chapter 2.2. Problems Associated with Reheating Furnace
Operation:
In producing bar products, the ideal situation would be to transfer hot billets
directly from the continuous caster to the rolling m i l l i n order to utilize the sensible heat
already within the steel [5]. Unfortunately this is not feasible due to the inability to detect
and remove surface defects from the raw billets prior to rolling as well as the enormous
problems involved with scheduling the caster and rolling m i l l to operate i n perfect
harmony. A s a result o f these problems, steel reheating furnaces are necessary i n order to
heat the cold continuously cast steel billets to temperatures at which reasonable forces
can be used in the roll stands since hot rolling stresses are inverse exponential functions
within temperature specifications at intervals dictated by the rate at which the rolling m i l l
The billets must have sufficient time within the furnace in order to absorb enough
heat to attain the target temperature. It is also necessary for the billets to homogenize, or
"soak", for a minimum amount o f time to ensure a fair degree o f temperature uniformity.
temperature, known as a skidmark, caused by the portion o f the billet sitting on the
relatively-cold stationary support beam or skid. Figure 2.5 and Figure 2.6 show the
geometry o f the billets with respect to the water cooled support skids. These billet
heating factors result in long m i n i m u m furnace residence times. Since the rolling m i l l
8
demands a hot billet every few minutes, the time to temperature plot for each individual
billet presents a furnace operation problem which involves careful scheduling, furnace
minimize losses.
designed to aid i n the transfer o f heat into the billet by exposing the bottom side o f the
billet to the hot radiative faces o f the furnace as well as the convective heating o f the hot
combustion gases. Unfortunately, these support beams are water cooled and do not allow
the same level o f heat flux into the contact area. The result is a temperature depression,
or skidmark. Skidmarks can be minimized by design features such as "hot faced" beams
or perhaps staggered support beams which allow the affected area to change as the billet
progresses along the axis of the furnace. However, skidmarks are unavoidable and affect
the ability o f the m i l l to roll the billet after discharge, even possibly to the extent o f
affecting the local post-rolled tolerances i n the skidmark region [5]. The operation o f the
furnace in the soak (final) zone does not change the skidmark severity but also does not
allow the feature to worsen (a long soak in a section without cooled supports would
reduce skidmarks but the space and residence time required makes this impractical).
While in the soak zone, skidmark severity is stabilized while the top to bottom
evident in top fired furnaces. A typical axial furnace temperature profile is shown in
Figure 2.7 [4]. The diagram shows data taken from plant trials which were obtained by
tracking the progress o f a billet through the furnace with thermocouples. It is evident
9
from this plot that the billet temperatures taken at different points on the billet exhibit a
divergence prior to reconverging near the exit end o f the furnace. The heat flux levels
near the exit o f the furnace are lower since the billet is at a stage where the objective is to
hi lie;
10
Top view
11
In the normal steady state operation o f the furnace, issues such as zone
temperatures, charge rate, furnace pace rates, etc. are consistent and do not require much
attention. Once good operating conditions are found for steady state operation, they
usually do not change substantially and become the basis o f the furnace "static"
knowledge. Static knowledge is easily quantifiable and can be updated as new factors or
revelations concerning the steady state operation are uncovered. It is i n the transient
states such as startup, shutdown, product changes, and unscheduled delays that the
In transient situations such as at startup, the billets are charged and heated i n a
variety o f ways. In order to maximize the efficiency o f the furnace i n transferring heat to
the billets i n an expedient fashion, the space between billets may be doubled (a practice
known as "double spacing") to increase the view factors thereby increasing heat flux into
the exposed faces (the view factor is the fraction o f the furnace which the billet face is
exposed). Unfortunately, this is not the most optimal fuel efficient method due to high
sacrificed from such rapid heating rates. A t some point, the furnace charge must be
nontrivial difference in temperature history for each billet traveling through the
combustion chamber.
Furnace shutdown also presents a problem in that temperature history o f the last
billets to be charged w i l l be different from other billets o f the same batch. The heat input
12
of the charge end o f the furnace may be reduced to prevent overheating due to the loss o f
the new input o f billets which act as heat sinks i n the furnace.
Product changes may require time consuming "roll changes" in the rolling m i l l
causing the reheating furnace to "idle" billets during this scheduled delay i n order to have
hot billets ready at the beginning o f the next charge cycle as well as to reduce fuel
consumption [7]. This occurrence causes transient control conditions which again result
in a change i n thermal history for each o f the charged billets which may impact the final
include changes i n billet composition, target temperature or billet size, can also limit the
efficiency o f m i l l operations since the feasibility o f operating the furnace with two
beginning o f each product change, the roll operator must make several iterations in terms
of roll gap settings prior to steady state rolling operation. Billets requested from the
furnace may be extremely staggered i n terms o f gap time as the stands are being "setup",
"cobble". The end result o f this event is a delay with a subsequent transient i n the normal
scheduling of billet releases from the furnace. The length o f time required to clear a
"cobble" can be from a few minutes to as long as many hours depending on the extent o f
the tangle as well as the amount o f damage it may have caused to the m i l l equipment.
However, a rough prediction o f the delay time usually can be made as information is
13
In the case o f unscheduled delays, the furnace operator must assess the delay and
make a decision as to what should be done, i f anything. The various measures which are
• turn down the temperature settings i n one or more o f the temperature zones, and
If an error i n judgment is made while addressing a delay, the billets may overheat which
Other problems include excessive scale production, loss o f production time while waiting
exceeding temperature limits. The furnace processes a considerable amount o f ball and
rod stock for producing grinding stock for the mining and mineral processing industry.
This product is high i n carbon content, which allows the material to be very hard after
processing. Here, the temperature o f the billets must be hot enough so the billets can be
rolled with reasonable forces but not exceed temperature limits which may be very close
to the desired heating temperatures. The temperature limits are designated by the melting
point o f the steel in the core o f the billets. The core carbon content is higher than the face
because, during casting o f the steel, dendrites reject carbon and the carbon migrates
towards the liquid centre o f the section. During reheating, the maximum temperature in
the centre o f individual billets should be below the local melting point to avoid potential
14
cracking problems. Centre-line melting may adversely affect the rolling operation
downstream o f the reheating process. Figure 2.8 shows the effect o f increased carbon
content on the melting temperature o f the steel [2]. It is clear from the iron-carbon phase
diagram that the melting temperature o f steel decreases with increasing carbon content for
15
Decarburization is the loss o f carbon from the local composition o f the steel due
to high temperature diffusion [8]. When mild steel is heated to temperatures below
910°C, the surface layer o f ferrite does not allow substantial diffusion o f carbon due to
the very low solubility o f carbon i n ferrite. Above 910°C, the solubility o f carbon i n
austenite is high enough to allow nontrivial diffusional movement o f carbon from the
steel substrate into the combustion atmosphere. Figure 2.9 illustrates the outward
migration o f carbon from the steel to combustion atmosphere. Although the movement
combination o f time and high temperatures. The actual decarburization rates are
dependent not only on time and temperature but also on internal temperature profiles,
metallurgy and furnace gas composition. Figure 2.10 illustrates the effect o f time and
Combustion atmosphere
0 2
Figure 2.9 Schematic of the Migration of Carbon from the Steel into the
Combustion Atmosphere
16
1000 1100 1200 1300
TEMPERATURE , °C
Figure 2.10 Limiting conditions of time and temperature for various degrees of
decarburization in 3" slab based upon isothermal data.
The extent o f decarburization can make the metal more susceptible to shear and
spalling. Figure 2.7 shows a typical heating profile for the furnace. It is possible to see
the point at which the furnace temperature reaches 910°C and carbon becomes mobile. It
is at this point that the clock starts for the residence time at temperature with respect to
decarburization.
Increasing the time that billets are subjected to high temperatures results i n
excessive formation o f scale. Scale is the oxidation o f the Fe parent metal to F e O , Fe2C>3
and Fe3C>4 on the surface which is exposed to a hot oxidizing combustion atmosphere.
17
The amount o f scale formed, much like the extent o f decarburization, is dependent on the
temperature, time at temperature, billet metallurgy, and furnace gas composition. Scale
formation has been shown to decrease the tendency o f decarburization but this is not
entirely an asset. Scale directly affects the bottom line, i n terms o f increasing the amount
o f steel lost from the raw billet as final product and increasing the frequency o f
maintenance down-time due to the buildup o f scale at the bottom o f the reheating furnace
[9]. Scale must be removed prior to rolling or it may be rolled into the final product
Combustion options such as running the furnace i n extremely fuel rich conditions
has not proven feasible due to economic as well as operational safety issues. The only
acceptable method thus far to reduce decarburization and excessive scale production is to
minimize the high temperature exposure time [6]. Under normal operating conditions,
decarburization and scale formation are not major concerns because the billet residence
times are l o w compared with other reheating furnaces but this can change quickly under
In the case o f common transient conditions, the furnace operator can follow a set
well as simple heat transfer and residence time calculations. In theory, the S O P must be
followed closely to ensure consistency. However, in reality, the S O P cannot account for
all possible conditions which may affect the operating efficiency o f the furnace. It is
therefore the operator's experience, reasoning as well as trial and error which help bring
18
Chapter 3. Expert and SCADA Systems
Control problems which are complex and not easily discretized tend to be difficult
to quantify mathematically. It is with these control problems that an expert system can be
beneficial due to the knowledge-based nature o f both the problem and solution. Expert
systems are designed to hold information in a system which enables the gathering and
organization o f knowledge derived from experts i n the exact manner as it is relayed to the
knowledge engineer. This knowledge then can be utilized i n the form o f rules and
procedures to assess problems and offer possible solutions where one may not have been
analyze and understand the scientific and engineering fundamentals o f all aspects o f a
The knowledge engineer is the person who may know something o f the problem,
facilitating good comprehension o f the knowledge, but not necessarily an expert in the
field [12,13]. It is often preferable i f the knowledge engineer is removed slightly from
the problem i n order that knowledge which may be obvious to the expert is not
overlooked by the knowledge engineer [14]. The life cycle o f the development o f an
expert system involves five distinct stages: Problem domain definition, Knowledge
The knowledge engineer must examine the scope o f the problem i n order to make
decisions on strategy and structure o f any subsequent solution. The scope o f the problem
19
must be defined i n order to move towards a solution which is reasonable and attainable.
The strategy reflects the nature o f the problem and directly affects the structure o f its
solution. It is i n these early stages that the approach to a problem must be defined prior
information i n all its forms including, interviewing experts, mathematical models, process
analysis and historical information. Knowledge can come in many forms including
• Procedural knowledge is low level knowledge i n the form o f "know how" and is akin
This knowledge is usually very superficial and does not give insight into the
used to solve problems. This knowledge also includes the ability to determine i f there
20
Knowledge in all o f these forms, become the foundation from which a knowledge base
the knowledge base i n a form which allows the system to reach reasonable conclusions
formalizes the structure o f expertise and can layer the knowledge i n accordance with
different levels o f abstraction and functionality. The conceptual model may include
domain, inference, task and strategic layers. The knowledge domain represents the static
knowledge and is made up o f concepts as well as their relationships. The Inference layer
integrates the knowledge i n the form o f what can be done with the knowledge i n the
knowledge domain. The Task layer are methods in which the inferences can be used to
achieve specific goals. The Strategic layer is the generalization o f how experts move
towards problem resolution and is the most difficult knowledge to formalize [12].
The testing and verification phase involves testing the system in a real problem
situation and verifying, often with the aid o f the expert, to determine that the system is
in the role o f devil's advocate, collaborate with the system builders i n the testing phase.
These methods o f verification and validation are important during system development
21
Chapter 3.2. Examples of Expert Systems:
Cement K i l n
Expert Systems have been used to control a wide variety o f industrial processes i n
the past. For example an expert system was implemented on the control o f a rotary
cement kiln i n 1982 [1]. For cement kilns, the general practice was to control heat input
manually with an operator adjusting the burner setpoint temperature in response to gross
variables which directly affected the quality o f the product as well as fuel consumption.
The quality o f the k i l n output is a function o f the amount o f clinker which is exposed to a
Due to the long residence times within the k i l n (several hours), the time-temperature
history o f one portion o f charge may be different from the rest o f the charge during
control incidents i n which the kiln may experience substantial temperature variations.
Therefore the narrower the heating profile, the higher the quality o f the clinker product
output. A commercial expert system software package " L I N K m a n " was used as the base
for this application. L I N K m a n relied on fuzzy logic, which is the application o f logic i n
which information is obtained and processed along with calculated degrees o f certainty.
The fuzzy logic controller provided greater control o f furnace temperatures resulting i n
within the kiln and a reduction o f 10% in fuel consumption [1]. The expert system was
successful i n this case i n controlling process temperatures because it was able to examine
22
complex process variables such as the varying composition o f feed material, process
which simple instruments cannot adequately filter. The system was able to reduce control
errors induced by false readings created by sensor input fluctuations because it was
Gas Combustion
pressures, pre-combustion gas compositions and fluid dynamics through the complex
logic based controller was utilized to control the combustion gas composition i n a
pyrolysis reaction o f alumina fibers used i n metal matrix composites. Combustion gas
composition directly affects the quality o f fiber produced i n this furnace therefore the
complete furnace model to predict and control the operational parameters was not feasible
and had the drawback o f omitting the experience o f the operator. In this application, a
finite-element steady-state model o f the fluid dynamics was used to define the boundary
conditions for control parameters within a safe zone which would result in good
combustion gas compositional control. These control parameters, along with rules based
on expert operator experience, were programmed into the fuzzy controller which directly
controlled the furnace mass flow valves. This system allowed for good control o f
combustion gas composition v i a knowledge gained from the mathematical model as well
23
as operator experience. While implementation proved useful i n this application for
flow rate
sensor
Thermocouple
Autogenous Milling
the grinding circuit. In this application, the expert system was provided with access to
output signals from operational P L C ' s . This information was examined in the inference
engine using a set o f rules and fuzzy sets developed with the assistance o f the m i l l
human operators but with much better response times and much more consistency. The
addition o f efficient computer control was possible without the need to discretely analyze
24
a complex control problem. The operation o f this grinding circuit is based on the
knowledge o f operation obtained from operator experience and logical analysis o f the
process flow. The efficiency o f the operation was increased by as much as 20% for
certain products due to the ability o f the system to operate the m i l l equipment at closer
Continuous C a s t i n g
Lore", understood well in some aspects but poorly understood i n others. The control o f
such processes has been left to the development o f many practices based on sources such
knowledge from the counterproductive methods based on Process Lore [18]. It is i n the
essence o f an expert system that the control o f such a process can be quantified in such a
vast array o f pertinent but sometimes contradictory factors. In the application o f an off-
line expert system to the process o f continuous billet casting, the knowledge gathered
from research [19] and useful experience was separated from counterproductive practices.
This knowledge was accumulated and structured into a knowledge base written i n the
shell Comdale/X. This implementation involved the ability to assess billet quality
problems off-line as well as offer the ability to tutor non-experts i n the finer points o f
proper billet casting practices [13,20]. The system was brought to the next logical step
with the implementation o f the knowledge base i n the form o f a Comdale/C application.
Real-time and on-line applications are applications which examine process variables
25
directly and produce results which are timely to the control o f the process. The
Comdale/C system allowed the expert system to operate i n real-time and on-line with a
billet caster and to examine the process variables with a myriad o f remote sensors
collecting trend data. This system facilitated assessment o f billet quality problems before
the billet left the mould as well as offer advice to the operator on how to remedy
While expert systems can be used to filter out noisy process data and provide
useful process trends, this may not be the most efficient utilization o f the system. In
order to increase processing speed and decrease the unnecessary creation o f complexity in
the expert system, a separate module to prefilter this data can be implemented. A
computational intelligence (CI) module can feed the expert system vital trend data i n a
timely fashion without the need to pass all remotely acquired data. In the application o f a
computational intelligence module to the expert system for a billet continuous casting
process [21], data was acquired at a rate o f ~20Hz and processed through a CI module
written in a l o w level processing language (C) using an operating system which allowed
real-time multitasking o f both the C I unit and the expert system. The marriage o f "hard
code" signal processing intelligence and the "soft code" o f the expert system allows for
the data stream to the inference engine. Only pertinent information gathered by the C I
modules, which may use repetitive artificial intelligence ( A l ) techniques, is passed onto
It is clear from these examples o f expert system applications, that results can be
rewarding. Expert systems allow the collection o f operational knowledge from many
26
sources to form a knowledge base. This knowledge is i n a symbolic form similar to the
system can standardize practices and can become a useful teaching tool for inexperienced
operators. The application o f an expert system to this steel billet reheating furnace
27
Chapter 3.3.Proposed Implementation of an Expert System to the
Reheating Furnace:
production as the primary motivation for operating the reheat furnace. In the greatest
sense o f the phrase, "Time is Money", rolling mills must not be idly waiting for hot
billets from the furnace i f a profitable operation is to be maintained because o f the high
overhead costs o f maintaining such facilities [6]. A t the same time, product quality must
be maintained since substandard product billets can potentially lead to higher rejection
rates, or increase the extent o f product downgrading after rolling. Finally, fuel
consumption is also important as this constitutes a major part o f production cost in the
bottom line o f the mill's financial ledgers. W i t h all o f these issues i n mind, we can
To understand the problem requires intimate knowledge o f the cause and effect o f
furnace operating procedures. Due to the slow speeds at which data is generated for a
wide array o f operating conditions, long term data collection is required. Data such as
billet size, grade, product range, as well as temperatures and operator response must be
collected. In order to keep the cost o f data acquisition low, the data collection platform
chosen was a PC-based system linked to the plant network i n a fashion as to allow the
periodic retrieval o f data as required. Figure 3.2 outlines the data collection and transfer
regime within this project. Table 3.1 describes the links between all o f the individual
components/players.
28
The operational knowledge used to control the furnace i n the form o f furnace
conditions and their experience under similar experience, while useful, was not consistent
enough to allow for the collection o f the "best" knowledge. This "episodic" knowledge
was very disjointed and often clouded by process lore. Therefore it was not directly used
(SOP) by the most experienced operator, the combustion engineer, and through,
discussions with the remaining operators was created to provide congruency i n operating
strategy. This agreement i n the required furnace operating practices provides a fair
degree o f procedural consensus [12]. The majority o f this knowledge is i n the form o f
carefully scrutinized by the combustion engineer. The S O P was therefore used as the
basis for the creation o f the reheat furnace control knowledge base.
Several plant trials were performed i n association with the modeling portion o f
the Billet Reheating project. These trials involved thermocouple instrumentation o f test
billets which were charged into the furnace and heated in accordance with normal
operating procedures [3]. The internal as well as surface billet temperatures were
recorded along with the three zone temperatures, zone gas and air firing rates, gas
instrumented billet plant trials along with long term data gathered from the system
allowed verification o f a static as well as a 3-D transient billet furnace model developed
at the University o f British Columbia [3]. This model was used in conjunction with m i l l
29
personnel to discuss the ramifications o f certain operating procedures on product quality,
operating efficiency and fuel consumption. The new procedures, were intended to
become the basis o f new knowledge for the Standard Operating Practices as well as an
online advisory expert system. The knowledge gained in this exercise represents both the
The available knowledge fits well into a conceptual model. Basic knowledge,
such as the cause and effect o f raising burner rates or increasing production rates make up
the knowledge domain. The inference layer is made up o f how this information can be
used, such as what can be accomplished by adjusting these variables. The task layer
involves how we can use these endpoints to solve a specific problem which may not seem
to have a direct relation, such as how one would go about reducing scale formation. The
strategic layer encompasses these concepts " i n the big picture" such as the approach o f
could be configured to implement control action directly based on information from the
furnace as well as operator input. Unfortunately, due to the extreme scope o f such a
project, the primary goal o f the system is to provide online advice to the furnace operators
whom w i l l implement the control actions based on the advice and their o w n experience.
well as the addition o f new knowledge as it becomes available. The expert system w i l l
interface. In addition, the system w i l l create the ability for m i l l management to introduce
30
* DOS
TZ3
Network
Server
12
Q \ \
Modeling Knowledge
Experts Engineer
31
Table 3.1 Description of Data/Knowledge Stream
Path Description
1 The operators read the data from the m i l l sensors and make adjustments to the
process to suit operating conditions
2 The operators read the data from the P L C ' s and make adjustments to the gas
flows rates and target temperature setpoints to suit the operating conditions
3 The M M I has access to all o f the same sensors the operators use
4 The M M I has access to all o f the P L C data except for setpoint
5 The M M I and furnace operators interact, exchanging valuable process data
6 The M M I and Bridge computer are linked v i a a T C P - I P protocol which allows
the two way transfer of data (configured to collate once per day)
7 The Bridge computer is linked with the m i l l network server v i a Token Ring™,
allowing networked managers to examine operating data
8 The furnace operator interact with the m i l l managers to develop new and more
efficient procedures based on experimentation
9 The m i l l managers can periodically update the M M I with an updated
knowledge base file
10 The m i l l managers have instantaneous access to the M M I from the bridge
machine (bi-directional)
11 The m i l l managers can access v i a database, all historical operational data
12 The knowledge engineer has remote modem access to the network server to
obtain operational data and upload new knowledge (bidirectional)
13 The modeling experts interact with the m i l l managers to exchange knowledge
concerning procedures and goals
14 The knowledge engineer interacts with the m i l l managers to acquire knowledge
concerning the process
15 The knowledge engineer interact with the modeling experts to facilitate the
development o f the knowledge base via modeling results
32
Chapter 3.4. Obtaining and Processing Furnace Data - The
Supervisory Control And Data Aquisition (SCADA) System:
The expert system S C A D A package chosen for the implementation o f this expert
system was ProcessVision and Comdale/C operating on a P C . The P C , powerful for it's
multitasking operating system designed for efficient file and message handling. Figure
ProcessVision embodies up
to 12 individual modules all
interacting with the
microkernal in parallel
simultaneously without being restricted to the bottleneck o f any slow tasks. This was a
necessary step i n order to ensure that all aspects o f the system can operate independently.
control interfaces as well as provide the framework for Comdale/C. Comdale/C is the
real-time version o f Comdale/X (an off-line expert system tool designed to process case
studies) and operates i n continuous inference cycles unlike the single session nature o f
33
Comdale/X. ProcessVision provides the user interface, data collection and data handling
to the system. Comdale/C is integrated with ProcessVision to provide very efficient data
(KWTs) instead of variables. The structure of the triplet name provides insight into its
value. The three segments of the K W T are the object, attribute and value [23]. The
object indicates the piece of information the system is describing, the attribute is the
property of that object in question, and the value is the number or logical operator
percentage assessment of the certainty of the correctness of the knowledge. Figure 3.4
The knowledge tree structure displayed in Figure 3.4 shows that knowledge
segments which Comdale/C utilizes are discretized into four groupings. The knowledge
episodic, and semantic knowledge as stated previously are defined as the Structural
knowledge which constitutes the rules and facts in the system. The significant addition to
these groupings is external knowledge which refers to knowledge available to the system
from other programs. In the case of our application, this external knowledge comes from
data acquisition drivers which convert sensor information into useful knowledge in the
form of KWTs [24]. This is the key which allows the inference engine to be brought
each given specific tasks. Although these modules all operate in the Q N X environment
independently, they are linked and influence the operation of each other. This interaction
34
can be seen in Figure 3.5 [25]. Although the modules exist for completing certain
specific tasks, for the sake of user-friendliness, some module tasks were reconstructed in
a form acceptable for operator perusal. A n example of this would be the expert view
module which is a windowed running list of expert processes. This style of information
format and position that does not change. As a result, an advisory screen was created
within the process view module to cement the data in consistent and predictable
locations.
processes with relatively slow reaction times. The inference engine is operated with a
one second or more cycle time which is adequate for moderately paced supervisory
control situations. The cycle times of the system must be fast enough to accurately
sample events which are critical to operation. The reheat furnace system has a myriad of
slow response inputs and one fast input. The input from the pyrometer consists of -2000
points gathered over 1-2 seconds every minute or so. This alone would make the system
unusable i f not for the inclusion of a set of high speed data collection programs operating
in parallel with the Man-Machine Interface (MMI). The data collection drivers
intelligently sample the inputs until an event is detected. After the record of the event has
been buffered internally in the driver, the data is processed and uploaded into the
inference engine at an acceptable rate. The expert system can then use the information
35
Knowledge
|_ Classes
I • Objects. .Attributes. .Values. .Degree of Belief
I
• cTriplets
Keywork Trit
• Exclusive sets
. logical _ . Multichoice sets
I Fuzzy sets
. String
E
Single
.Numeric. Double
Integer
.Rules
— Keyword Triplets
Logical Connectives
. Condition Statements. Predicates/Operators
— Functions
I—Keyword Triplets
-Conclusion Statements, _ Certainty Factors
-Else Statements _ Assignments
_ Functions
36
Historical Database 4 L Event 4 k Trend
K—• 1 • Scheduler J f Manager
Database Manager
Process
View
Point Inference Alarm Message
< • Manager H—• Manager
Database Engine
Expert
View
Process Knowledge Explainer
Instrumentation Base H—• Engine
37
Chapter 4. Scope and Objectives
Steel billet reheating furnaces have larger thermal inertias and are rarely operated
under steady state conditions which makes control a difficult task. The delay
phenomenon is the single largest factor affecting the operation of the furnace. Delays
have the effect of creating varied temperature histories and thus differing temperature
profiles in the billets. Control of the furnace has been left up to the discretion of the
furnace operators who control heat input into crude non-independent heating zones based
on operating experience.
Inefficient operation of the furnace can result in a financial penalty for the steel
mill in terms of fuel costs, product loss, and mill idle time. The goal of furnace control
has been to focus on the production of steel billets at the correct temperature while
Due to the nature of the problem long term data collection is necessary to obtain a
representative sample of the problem. The recording of experimental data from the mill
on a long term basis required that the system be industrially robust in terms of software as
well as hardware.
The knowledge that is used to control the furnace is in the form of experience
38
system is therefore not feasible in this situation. In contrast, an expert system is able to
examine many different facets of a problem and produce an answer based on information
contained in a knowledge base. The information contained within our knowledge base is
transient mathematical model. This expert system would weigh the various parameters
The overall objective of this project was to develop a system which will increase
production, increase product quality, decrease product losses and reduce fuel
consumption by reacting to furnace delays and/or upsets which will minimize deviation
of billet temperatures. To these ends, the following is a set of necessary steps to attain
these goals.
(1) To implement an online data acquisition system to record furnace and billet data
(2) To closely examine the delay phenomenon with respect to billet size and roll
product.
(3) Based on statistical plant data, categorize delays in terms of cause, frequency and
39
(4) From this basis, incorporate improved response strategies into knowledge
40
Chapter 5. - Methodology
The furnace had been operating satisfactorily in processing the billets for the
rolling mill but mill personnel wanted to improve some specific aspects of the reheating
procedure. Delays in the production of hot billets resulted in loss of useful rolling mill
time and subsequently a monetary loss to the mill. As well, poor procedural operation
resulted in low recovery rates or product yields due to rejection as well as product
downgrading. One goal of this project was to attempt to reduce both of these factors as
The situation was investigated as a control problem with the major factor being
the ability to accurately predict billet requirements with lead times in the order of hours.
With this in mind, we can approach the problem with the realization that it may not be
possible to completely quantify all transient situations. The best that can be offered in an
statistically isolate the most frequent transient conditions and produce a suitable response
for each case. While this is a good approach, it is also necessary to understand that the
extent of a transient may not be accurately predicable on the onset of the incident. This
has the effect of infinitely complicating the number of possible outcomes requiring a
41
One of the major problems plaguing the reheating furnace is one of
standardization. In this mill, the reheat furnace is operated by four full-time operators as
well as two temporary operators. The primary furnace operators come from a variety of
backgrounds but most operators are chosen based on union seniority in the mill hierarchy
of maintenance personnel. The operation of the furnace is left to the discretion of these
mill workers who learn their skills from each other as well as some less than reputable
The goal of the combustion engineer is to increase the reheat furnace efficiency.
It is believed that part of this goal can be achieved by standardization procedures used by
the furnace operators to delay situations. In order for the mill to conform to quality
standards such as ISO 9002, process control must be standardized and documented. A n
expert system would allow each operator to have access to all of the mill's standard
The system must be capable of recognizing the start of a delay. Under ideal
situations, the system will be told of a delay by the operator because this allows for the
system to provide advice sooner. Unfortunately, due to the frantic nature of many delays
this option is not reliable. The system is capable of detecting a delay by intelligently
monitoring the gap times between billets and trigger a response regime i f the gap time is
a certain percentage above normal. This trigger needs to be tuned to dynamically adjust
42
the "normal" gap time as a floating average and respond only when a delay of non-trivial
duration is detected.
Upon detection of a delay situation the system flags the operator to provide an
initial estimate of the delay duration. This estimate will be provided to the system in the
form of selecting from one of three choices, short, medium, and long. The range of each
of these delays will be assigned from the knowledge base as defined by the particular
product. The system will then issue an advisory based on this input as well as
As the delay progresses, the system tracks the actual delay length to determine i f
the initial estimate was incorrect. If the delay terminates prematurely or the delay is
longer than initially estimated, the advice that was issued will not be suitable for the
situation. The system must be able to detect the aberration and issue a revised response
advisory. This advice will dynamically change based on the estimated delay time as well
Table 5.1 displays the nine possible outcomes based on an initial three choice
estimate. Here, the subsequent advisory control response is valid for 3 of the 9 scenarios
which leaves 6 of the remaining 9 with responses which may not necessarily be
appropriate.
It is possible to create a system which can request the operator to estimate the
transient variables and produce advice based on this guess. If the estimation is not
accurate, the system can adapt itself based on operating conditions or by the operator
updating the estimation. The system can be enriched with knowledge on how to respond
to delay situations after the delay has progressed towards one of 6 remaining scenarios
43
where the actual and estimated delay times are not the same. The overall result would be
the minimization of the impact of poor control decisions and therefore an increase in the
overall furnace and mill efficiencies. [26] A n example of possible control advice
Table 5.1 Possible Outcomes of Delay Time Estimation and Error Consequences
Predicted Short Predicted Medium Predicted Long
Delay Delay Delay
Actual Delay is Accurate delay Furnace too cold, Furnace much too
Short estimate delay in heating cold, delay in
back to temperature heating
Actual Delay is Furnace not cooled Accurate delay Furnace too cold,
Medium enough, billets may estimate delay in heating
overheat back to temperature
Actual Delay is Furnace not cooled Furnace not cooled Accurate delay
Long enough, billets may enough, billets may estimate
overheat and spend overheat, possibly
too much time at long high time at
high temperatures temperature times
Table 5.2 Possible Outcomes of Delay Time Estimation and Control Responses
Predicted Short Predicted Medium Predicted Long
Delay Delay Delay
Actual Delay is Well understood Furnace too cold, Furnace much too
Short and simple control advise heating cold, advise a rapid
regiment heating regiment
Actual Delay is Furnace not cooled Well understood Furnace too cold,
Medium enough, advise and simple control advise a heating
lower zones set regiment
points
Actual Delay is Furnace not cooled Furnace not cooled Well understood
Long enough, advise enough, advise and simple control
lower zone set lower zones set
points, track points
overheat times
44
Chapter 5.2. Implementation of the Expert System:
The implementation of the expert system was divided into two distinct phases.
The first was long-term data collection and logging phase. In this phase, inputs from the
furnace controllers were taken along with some inputs seen only by the furnace operator
which are compiled in daily log files. Figure 5.1 shows the control, detection and logging
system. These files were taken and compiled into the cumulative collection of files on
the plant database. These files along with hard copies of schedules were remotely
The final phase of the system installation included compilation of the knowledge
base and insertion into the man/machine interface which the operators were already
familiar with. The system would detect transient conditions and provide timely advice to
the operator in both steady-state and transient operating conditions. Figure 5.2 and Figure
5.3 show the integration block diagram of the current as well as the proposed systems.
45
Operator Interface and Data Logging Computer
M i l l Sensors
PLC controllers
Furnace Operator
Figure 5.2 Block Diagram of the Current System
M i l l Sensors
Furnace Operator
46
Chapter 5.3. The Installed Expert System:
The expert system implementation was divided into two distinct phases. Phase I
involved installation of a data logging system which was not only acceptable to the end
users but also facilitated long term collection of furnace control knowledge. The
due to the need for operator acceptance [12] in the development as well as creation of a
method to verify the expert system. Phase II of the project involved completing the
assembly of the knowledge base as well as installation of the advisory functions of the
man-machine interface.
The billets are scanned for a temperature profile in order to retrieve information
for use in the Expert System or for display to the operators. Information such as
maximum and minimum temperatures as well as the profile shape characteristics are used
by the operator to decide the fate of the billet. A billet that is not up to the rolling mill
standards for a particular job may be rejected prior to rolling or held after final rolling for
quality control assessment. This feature is indispensable in operation of the furnace and
so was implemented in the system as shown in Figure 5.4. The user interface was created
in a fashion which displayed the most important operational data on a "main" screen and
on the main screen. This implementation was deemed necessary to minimize the
complexity of the system operation and increase the acceptance of the furnace operators.
Some other features, such as an enlarged high temperature display, large "red oval" visual
47
indicator of an alarm condition, and a schematic "billet position indicator" for
determining the billet location, were also added to increase the degree of user acceptance.
48
Li'cti k i m j
To M i l ] i__ __t
Rejected H ELtl
Remaining -m r^jjj
..— HEfti a
\&E$D g r o u p «
1208 1288
ii: ..a • • t l l l l l l l l l l l l l l l t l . I l t l i . l l l l l l l t i • OS i l l . • i i l . l i l l i . 1
— .- • ' ' . • V -
lBBBj "j" " §1 >il808
Current heat
Most recent billet temperature profile
information
49
Traditionally, the furnace operators were accustomed to having a historical
display of the billet minimum and maximum temperatures as each are scanned by an
optical pyrometer prior to movement towards the rolling mill. This trending information
visually allows the operator to "learn" from his own successes as well as mistakes. This
episodic knowledge is useful in the development of general control trends but can be
tainted by "process lore". A n operator can look at the consequences of his actions in
terms of the decisions made in the relatively distant past. Although this delayed learning
process is useful, the complexity of furnace operation makes a simple cause and effect
determination very difficult. This feature was important enough to include and is shown
in Figure 5.4. Note that the information which has been deemed important in terms of
trending information is the profile minimum and maximum temperatures because these
two criteria affect the ability of the rolling mill to process the billet.
In addition to the main screen, the operator has access to a heat-tracking screen.
A "heat" represents a batch of steel which has been cast through the continuous caster and
is usually specific in terms of chemistry, thermal history, and as-cast quality. A change
in heat therefore represents a change in the input billets, which may also lead to a change
in the rolled products therefore affecting the furnace operating conditions. If the change
in operating conditions is substantial, the procedures for handling the transient from one
heat to the other may be very different from the steady-state operating conditions of either
heat. In the past, the operators have had to manually keep track of the heats as they
50
The heat tracking strip, as shown on the right of Figure 5.4 shows a system in
which the operator is able to enter the current heat name as well as the next 4 heats along
with all pertinent heat information. The billet heating and furnace operating parameters
are selected from the SOP list as illustrated in Figure 5.5. This information is used by the
operators but is also a great help to the expert system in terms of knowing the future
charges in the furnace. This implementation of the automatic billet tracking was difficult
due to the nature of the signals received from the mill (see Figure 5.6).
A billet released from the furnace is seen by the first detector but not necessarily
by the pyrometer and the second detector. The furnace operator may choose to reject the
billet before or after the pyrometer. The pyrometer may see multiple scans of the same
billet which can lead to a miscount. The furnace may drop more than one billet which
will not register as two discrete billets prior to buffering in the reject zone before rolling.
These signal inputs must be examined via a rule structure which attempts to deduce the
actual events in the mill with a high degree of certainty. The expert system can quite
accurately determine the position and condition of a billet with the use of the three
available sensors and a set of rules based on the conditions outlined in Figure 5.4. Due to
the difficulty of being absolutely certain of the result, the system can sometimes
misinterpret the activity, therefore the operator has been provided with the ability to
the Hot Metal Detectors (HMDs) frequently result in false readings. These readings are
filtered via a CI module, feeding the expert system a billet discharge signal only i f one
has likely occurred. A schematic of an ideal signal as well as examples of noise which
51
may affect event detection is illustrated in Figure 5.7. The low level driver program
acquiring the signal from the mill, filters the signal and only issues a billet passage
condition when it has most likely occurred. The inference engine performs a secondary
determination of billet passage by means of a weighted averaging of the signal over time.
This weighted average is tuned by the operators to ensure the highest degree of accuracy.
The pyrometer signal is also filtered by the drivers to prevent noisy peaks from
affecting the profile which is displayed and recorded. In addition to the filtering process
the driver extracts information such as a minimum temperature for each half of the billet,
convince the furnace operators to abandon the older system and use the new one. The
older system was allowed to remain online so the operators had a transition period in
which they could become accustomed to the new interface and procedures.
In addition to the main screen interfaces, several auditing screens were provided
which offer trends of furnace pressure, zone firing rates, and zone temperatures. These
screens contain data which the system logs to daily files but is left in a form that the mill
combustion engineer can examine on-site without having to download data to a graphing
program in the mill offices. This data is useful in assessing operator performance and
compliance to the SOP as well as providing a firing history necessary to predict the
conditions of billets to be released. Figure 5.8 and Figure 5.9 show the screens as
captured from the mill computer during a Phase II visit. This screen along with the mill
database of operating condition changes proved the most useful tools in encouraging
52
listl
N6-3116 N2:1138-115 To Mill
Riijtsc t i A
c.-nC3N6 N21132
Hi-n.t i II i i i i j ;
H2: 612-684 N2:1136-115 , IIEAT"S
N2: 612-684 N2:1154-125 VfcfMay g r o u p i
N2: 612-684 N2:1154-125
N2: 684-756 N2:1154-125
N2: 684-958 N3-1718
N2: 684-756 N3-1718
N2: 758-830 N3:1850-199
N2:-758-830 N3:1910-199
N2: 830-974
N2: 830-974 N6:3196-330
N2-958 N6:3306-353
N3-1852
HZ: 958-106
N2: 980-105 N3-1954
N2: 980-105 N3-1954
M2:1862-113 N6-3166 [(Pressure)
HUT
Reheat
Furnace
Hot Metal
Detector -
Furnace
53
Table 5.3 Possible Detector Signal Sequences
Event Conditions
#1 - Billet successfully passed The sequence is: H M D - furnace, optical pyrometer,
from the furnace to the rolling mill and H M D - R l
#2 - A billet was rejected after The sequence is: H M D - furnace, optical pyrometer,
scanning optical pyrometer and the next is not H M D - R l
#3 - A billet was rejected before The sequence is: H M D - furnace, with no optical
scanning pyrometer within ~10 seconds
#4 - Double drop - two billets were The sequence resembles #1 except the following is:
released optical pyrometer, H M D - R l for the next billet
#5 - A billet is removed from the This occasional event does not have a sensor
system with the overhead crane sequence that can be discretized, therefore a manual
correction on the system is provided for the
operator
C L E A N SIGNAL
Voltage
Time
Time
Figure 5.7 Hot Metal Detector (HMD - an optical position sensor) Signal Quality
54
ill :V| . tracking j
A , i :.t.
Heat Gas
11111
i Ion
fieit m r
0"
fBillef;
09:00 10:00 11:00 12:00 10 / 01 / 9
4" ' '
Soak Zone Flous (Preasur.eJ
0.04 "H20
ifTenpdra-turej
Soak Gas
DELAY
Current heat
Trend-line of gas and air information
flow into the charge zone
Upcoming
1 heat
Trend-line of gas and air information
flow into the heating zone
Display
screen
control
Trend-line of gas and air
buttons
flow into the soak zone
55
t »• ic k Micf
To tTTTi [ T -
1308.8 Rejected £]
983.00 C
500.00 R e n a i n i n g risM
C}irg_Tenp — p , M K A T
1%) g r o u p ffsg
J
1
89:88 18:88 11:80 12:88 g IB / 81 / 9i
1388.0
r 1197.0
500.00
Soak Soak_Tenp
h
(i®&flfcl!EiS? HUD
Current heat
Trend-line of temperature information
in the charge zone
Upcoming
heat
Trend-line of temperature information
in the heating zone
Display
screen
Trend-line of temperature control
in the soak zone buttons
56
Phase II of the project included installation of the knowledge base containing
knowledge from past procedures of the plant as well as recently altered procedures. This
phase also included installation of an advisory screen which the operator is prompted to
5.10, shows a typical product recommendation along with an area in which the operator
can prompt the system to provide advice, once a delay has been detected, based on the
advisory
Soak 1 iiL-jLt : Charge
P r a t t . i i : i ; :!["M"2: 9 5 8 ~ 1 B 6 ~ H e a t : II * ' " p h a "
H . i x Ti:ni> 117H C i O O O X 0 0 0 0 0 0 0
__ - Max D i f f IHH t: !
0 0 0 0 0 o oj 0 0 0 0
Furn Pres .130" "UC
0 0 0 0 0 o o' 0 0 0 0
',i •' 'isEE8££§> !
'B H
™ a
REAL o o oj X 0 0 0 0 0 0 0
•CiSMJ ^Sa^JMSCp 1 IBB-1300 sec GAP:
G r u m i : 14 ' M W U x ' l W J 2 H H H -M2HH : : H H , , i a M
Set 1 '40, nr,R
F i l l s " N n . |M/l: OGU R.B. |Pinisli«;<l Li:n<itl,| |Shapi:|
57
The expert system provides advice in the form of static advice as well as advice
based on the condition of a delay. If the operator has made an estimate of the delay
length, the system will provide the appropriate information to handle the situation. If the
time of the delay is longer or shorter than the prediction, the advice changes to suit the
situation based on knowledge added to the system previously. This screen, while not
prominent, does allow the operator to retrieve advice from the system as required and
perform operation changes in accordance with current operating procedures. The advice,
if not followed may result in a poor heating condition which the combustion engineer can
address after the fact. If the change in procedure has a good effect on billet heating, the.
combustion engineer has the option to assess the situation and change the procedures
accordingly. This is the strength of the system, in that the intuitive skills of the operator
can be merged with standard procedures to optimize reheating and therefore increase mill
efficiency.
knowledge in a form which is not necessarily linear. This allows an expert system to
operate with any number of rules and procedures. Of course the more information
available to the system, the more reliable the deductions become. However, this non-
linear nature makes the completion of sequential tasks cumbersome since the
sequence of events can sometimes be quite random. Our system required that many
procedures aided in this task but did not solve the problem of larger sequential tasks.
A series of flags were therefore established to enable and disable rules within the
58
knowledge base which only allow certain procedures and rules to be active when
required. The expert system implementation therefore ran on a very large inference
cycle which was able to spawn a series of child cycles for accomplishing certain
housekeeping tasks. The large inference cycle is slaved by a series of internal flags to
allow the ordering of certain sequence sensitive tasks. Figure 5.11 outlines the main
inference cycle along with some of the more interesting child cycles. It is important to
note that although this flow chart seems to operate in a directed sequence and flow
like a typical computer program, the flow is quite non-linear. The result is a form of
must be initialized with a set of starting point values. This is necessary to ensure that
the system child processes can be enabled and the ProcessVision man-machine
Comdale/C procedures are enabled only once prior to being disabled for the duration
of the system's operation. Due to the sequential and mundane nature of the static
knowledge, most of this information is stored not in rule form but in the form of data
reference data from the files and compile a product profile with a series of K W T
arrays.
periodically invoked which themselves may call on other child process within the
59
processes and conditions in which they are active. In normal operation, the advisory
portion of the knowledge base is filled with static knowledge based on the input billet and
output product. In a delay situation, the system enables the advisory segment associated
with the tracking of delay time and dynamically adjusts advice based on user input and
60
LOAD
BOP HEAT
CHANGE
0)
o
>.
o EXPERT ADVICE ARRAY
BILLET T3
C short-short short-med short-long
ACCOUNTING o
o med-short med-med med-long
<D
03
CD long-short long-med long-long
C
o
MANUAL I
Q.
REJECT o
O
FLAG OPERATOR
_i DISPLAY ADVICE
LU
O
PYROMETER
z
LU
(timestamp) CC
LU
CASCADE FURNACE
GAP TIMES HMD
LOAD
PYROMETER
BILLET
HMD
BUFFER
UNLOAD
BILLET
BUFFER
61
Table 5.4 Child Processes Within the Inference Engine
Process Purpose Effect
Temperature Watch for static as well as The operator is flagged and the event is
Alarms product based temperature logged in the data files
violations
Week Day To break the log files into Weekday named files are assembled into a
Check day long files for transfer to 2 week buffer zone which is uploaded to
the mill network the mill network nightly
File Annotizer To create a log file of all Every 30 seconds all pertinent furnace data
furnace operational data is saved to a daily temp file
Gap time To keep track of billet falls A gap time for the last billet to present time
calculator is updated every second until another billet
fall
Furnace H M D detector of a billet event at Increments the billet tracking buffer until a
the furnace conclusion can be made of the event
detected
First stand detector of the billet event Indicates the billet leaving the sphere of
HMD at the entrance of the first detection of this system. A conclusion is
set of rolls drawn on the events to determine the
probable fate of the billet(s)
Pyrometer To indicate a billet event at Adds to the location logic information that
"HMD" the pyrometer a billet may be moving towards the first
(internal signal) stand but makes no deduction until another
event is logged.
Pyrometer time To use the pyrometer as the A l l gap times are based on the billet
stamp line at which the gaps are registering an event at the pyrometer.
tagged
Manual reject Operator correction In certain rare cases, the three detectors can
mechanism not deduce the correct event. This allow
the operator to manually correct the event
error
Billet To track billets As events are reduced to actual billet
Accounting movement the accounting is done in the
heat tracking and the billet is logged to a
billet event log file
Heat Change Heat changes may affect As a heat change is detected by internal
furnace operation flags, the subsequent heats are chained
forward and all pertinent operational
knowledge is upload from data files.
Delay detection Internal delay detection A delay is detected, and the system
invokes a response from the prompts the operator to ask for operational
system to prepare advice advice based on the operators estimation of
delay duration
62
Chapter 5.4. Analysis of the Furnace Operation Data:
The furnace, for control purposes, is separated into three independent zones. Of
course each of these zones is not explicitly independent as the temperature in one
zone greatly affects the temperature in the others due to the open design geometry.
The three furnace zones are controlled separately with three feedback loops. Each of
the zones uses a thermocouple as the primary sensor of furnace temperature. The
temperatures of the zones are converted near to the type " R " thermocouples from the
millivolt reading into a 4-20 mA signal which is much more resistant to stray
electrical interference. The milliAmp signals are read by three programmable logic
controllers (PLC's) which adjust the gas and air flow to the individual zones in order
to increase or decrease the zone temperatures. The amount of air and natural gas fed
into each zone is detected with a slide-wire feedback loop connected to the servo-
The control of these zones follow basic PID principles in order to obtain target
temperatures with a minimal time delay and temperature oscillation. The target
temperatures are selected by the furnace operators based on historical operational data
as well as current mill demand. Measured variables such as temperature, gas and air
the furnace in both steady-state and transient conditions. The operating information is
63
essential for the modeling portion of this project as the model will provide the new
knowledge to the process. Due to the nature of the data, statistical trending must be
employed. Long term delay and response data on furnace must be examined in order
to seek out frequent scenarios as well as typical responses prior to proposing changes
based on the mathematical model. The magnitude of the data collected in the data
logging regime resulted in a complex process analysis problem. Typical monthly file
sizes are in excess of 100 Megabytes which made traditional data analysis techniques
programs were written in F O R T R A N to scan the data files and retrieve relevant
information or look for trends. This information was used to create a statistical
picture of the furnace operation and control responses for subsequent model analysis.
64
Table 5.5 Reheating Furnace Control Procedure Analysis
Knowledge Engineer Billet Operating Procedure Identification
retrieve logged data files
• retrieve heat sheets
• Billet size (from heat sheets)
. Rolling M i l l Product (from heat sheets)
Data Extraction
Input Date/time band parameters
• Extract logged data from the master files
Gap Time Plot Analysis
• plot gap times
• identify frequent delay times
Scenario Generation
• Input gap sequence key
extract response data
extract profile data
Modeling Experts Process Modeling
Model responses
Pose Alternatives
• Model Alternatives
Assess results
Knowledge Engineer Validation
M i l l Experts • Propose changes in procedure to the mill
• Assess Changes on-line
• Add Changes to the Knowledge Base
65
Chapter 5.5. Analysis of the Optical Pyrometer Data:
After reheating, the hot billets are discharged from the furnace to a conveyor
system where the scale is removed using a high pressure water descaling box. The
billet is then moved past the viewing window of a scanning optical pyrometer. The
The scanning optical pyrometer provides a temperature profile along one side of the
billet (usually the trailing side). As the billet drops from the discharge chute onto the
conveyer system, it may perform a quarter turn which brings the bottom face to the
view of the pyrometer. The majority of the pyrometer scans therefore are of the side
of the billets. However, it is not uncommon for the billet to rotate randomly to show
a different face to the pyrometer and give a more or less severe apparent skidmark
(refer to the Statistical Process Control-SPC on Figure 5.4 to see the discontinuity in
the data band). The billets move along the conveyer at a relatively consistent speed
determined by the particular weight and friction with the rollers which generates a
good representation of the profile but not the absolute length of the bar. This profile
the suitability of the bars for use as well as a post-operational assessment of the past
operational procedure. This information is the only tangible feedback the operators
use. Information which is gleaned from this profile includes maximum temperature,
66
statistical delay analysis, the pyrometer data is vital since it is also a good indicator of
a billet release from the furnace. The time between billet releases is known as the gap
time and statistical analysis of the gap times pinpoints frequent scenarios. This data is
then used to extract furnace operational data which gives an insight into typical
operator responses.
The mill bars can be classified into a number of groupings based on bar size,
metallurgy as well as product. The bar sizes include the three billet classes N2, N3,
and N6 representing square sections of 4.5", 8", and 10" respectively. These are
section sizes which do not include the section length, a statistic which affects overall
heat input required to raise the billets to a target temperatures. Chemistries in which
the main classifications are based on carbon content and other alloying elements,
outline the heating limitations. Billet chemistries for products such as ball and rod
The product for which the bar is rolled can affect the groupings as target
temperatures and pacing rates can be constrained by rolling rate rather than heating
rate. M i l l personnel indicated that roughly 40% of the production is rolling mill
constrained, leaving the remaining 60% of the bars running the furnace at full
capacity. Control of the furnace under the furnace constrained conditions is relatively
straightforward if the furnace is run at full capacity and billets removed as soon as the
67
temperatures are within rolling specifications. It is during the 40% of production in
which the process is constrained by the rolling mill in which the system is useful in
furnace control.
In order to restrict the possible scenarios, grouping of gap times are obtained
from the statistical analysis of gap times for products with similar product rolling
procedures and temperature requirements. With these gap time groupings, it is then
conditions. Based on these operating procedures, it is then possible to select not only
the most common responses but also responses which may have had a good or bad
effect on billet quality. It is from these responses that the mathematical model can be
utilized to optimize the furnace operating responses under various steady-state and
transient conditions.
68
Chapter 6. Results and Discussion:
As is quite often the case, delays can be hectic situations in which the ftirnace
operator may become too occupied with delay related tasks to inform the system that a
delay has occurred. Therefore, the system has been given the ability to determine the
detection is based on the expert system examining the sequence and timing of the three
detector signals available to the computer. The sequence is analyzed and a delay is
flagged internally as well as externally in the form of a flashing button offering advice to
the operator. The advice is offered in a manner which is as non-invasive as possible, the
operator needs only to "click" on the advice button to summon the advisory screen
and procedural knowledge from the Standard Operating Practices as well as new
knowledge from scenario "role playing" using the U B C transient furnace model. This
knowledge forms the basis for the expert system in terms of providing the operator with
knowledge gathered and refined from years of experience and from recent developments.
When the knowledge based is stocked with appropriate responses pertaining to complex
delay situations, the system will be able to offer timely advice for a myriad of transient
Statistical analysis of the delay data collected over the period of approximately
one year has lead to the isolation of a few statistically significant delay situations.
69
A P P E N D I X H contains a sunimary of 6 weeks of furnace operation. Of the three billet
size products, it was possible to identify three major categories of delays. In order to
Figure 6.1. The actual gap times between billets in shown on the horizontal axis and the
actual number of billets released is shown on the vertical axis. It is evident from these
plots that the three delay groupings can be extracted. The short, medium and long delays
were identified as discernible groups. It is possible to rearrange the delays into arbitrary
ranges and change the scale to focus on statistically frequent ranges. Also, i f we remove
billets which were released on schedule, the groupings become much more evident
(Figure 6.2).
With this in mind, it was possible to retrieve operator control responses to each of
the delay categories. Due to the nature of the data and the lack of details such as delay
cause or overlapping transients, the only feasible approach in addressing these scenarios
was to choose the most frequent delay responses. The system records and archives time-
stamped temperature profiles of the billets for scrutinization. Furnace operating data was
also available to the modeling experts. Figure 6.3 illustrates the zone temperature records
which can be correlated with the billet temperature data. In addition to these traces, gas
flows, air flows, and total furnace pressure stemming from operator control of the P L C ' s
is shown in Figure 6.4, Figure 6.5, and Figure 6.6 respectively. A n example of the
The responses can then be analyzed via the mathematical model to determine the
efficiency of the operator's responses as well as the possibility of creating better response
without the need to experiment with the actual furnace controls. The analysis can then be
70
expanded to include theoretical responses to incorrect initial responses based on
inaccurate initial operator delay estimates. This information can then be placed into the
expert system to provide timely new advice as an initially misdiagnosed delay progresses.
It had been believed that roughly 40% of the production is rolling mill
constrained, leaving the remaining 60% of the bars operating the furnace at full burner
capacity. Logged furnace operational data from the data provided for model
scrutinization by Osinski showed that this was not that case in that not all of the zones of
the furnace were under heavy firing condition with the large 8" billets. Again the manner
in which the furnace is operated may have been affecting the furnace throughput. Further
throughput by altering some of the ingrained operating procedures with this new
strategies, that the expert system can becomes more effective with the addition of
71
700 -r
600 -
500 -
72
1400
1200
1000
800 [I V
M
600
400
Charge zone
200 - Heat zone
-Soak zone
4-
CO co CO co CM
CM CM ro •0- o CO CO o CM in
O CM <b 1— CO cb 66 o
O CM o CO m CO CM
OO CO ur> in <b CO
•— — — *— T— ^—
1
1 1
Temperature (°C)
73
Figure 6.5 Example of Furnace Air Traces
74
Time
Note: This example contains a 7.5 minute delay midway through the time sequence.
75
Chapter 6.2. The Interface & Operator Response:
The initial response to Phase I of the installation was with great reluctance on the
part of the operators due to the belief that mill management intended to replace the
furnace operators with a computer control system. This is consistent with the
"Feigenbaum Bottleneck" which includes reluctance from experts due to the fear of "loss
of work" from the A l technology, etc. [1,14]. These fears were alleviated by carefully
demonstrating and explaining the system to the operators thereby clarifying the objectives
of the system. Since the goal of the system was to supplement the tools the operators
have in their "toolboxes" for determining appropriate operating procedures, this initial
task was easily accomplished. The operators soon began to favour the new system over
the older data collection system in that the interface allowed the operators to see
information not previously available. Since the bulk of the development of the man-
machine interface was completed over a three week period, the operators were able
interact with and critique the interface during system development. This interaction
allowed the development of a system which was not only useful and acceptable to all four
primary furnace operators but also consistent with the goals of both the mill mangers as
well as the system developer. The interface ergonomic factors were therefore deemed
important for system acceptance which directly affected the level of cooperation required
A l l of the screens of Phase I remained intact with interfaces which the operators had
76
become accustomed to and readily accepted as useful. Phase II added a single advisory
screen which provided advice, based on the knowledge within the newly installed
knowledge base and delay detection rules. As expected, this phase was the portion of the
project most difficult to obtain general furnace operator acceptance. This reluctance is
due mainly to the nature of furnace control in the past in which operators were allowed to
implement any control procedure which seemed to produce billets during minimal mill
delay. These control decisions often produced billets at the price of product quality or
production. However, since the expert system goals were the same as the supervising
combustion engineer, this reluctance will eventually be overcome. Of the four operators,
one individual wanted no interaction with the advisory screens whatsoever due to
reservations over the content of the SOP. Two of the operators were mostly indifferent
but curious as to the advice that the interface would offer. The fourth operator was very
keen on the concept and was quick in manipulating of the system and examining the
information. Unfortunately, the knowledge base was not complete at the time and only
result of the mathematical model were integrated into the system. This fact alone may
explain the less than overwhelming response to the advisory portion of the S C A D A
system, however the groundwork for a completed knowledge base has been laid. The
ability to implement all aspects of the system however are active and the tools required
for future updates to the system were provided to the rolling mill managers.
A recent visit to the mill to check on the condition of the S C A D A system has
resulted in a few revelations. The older A S Y S T system has been removed and the U B C
M M I was operational as the sole window into the furnace operation. M i l l personnel
77
lauded the system as being extremely useful for both the operators as well as allowing
detailed analysis to be performed by both U B C and mill personnel [10]. The billet
tracking system however was not in use which also precludes the use of the expert
advisory system except as a reference for the static knowledge of the system. This
increase in the inaccuracy of the billet pass determination module of the system due to
some changes in the furnace operation. The detection rules were designed to be tuned to
the specific timing of the billets from detection at the furnace H M D , the leading edge of
the pyrometer signal and the H M D at the first stand. This leads to the confirmation that
changes occur.
The relative compliance of the operators to the mill SOP is still at low levels, as
the logged data suggest. Any improvements which are made to the SOP are therefore
moot i f the operators are not held accountable to the procedures. The expert system has
been instrumental in identifying the low level of compliance but has not been useful in
encouraging compliance due to the need to bring the knowledge base up to date. The
ability of the mill personnel to monitor the compliance levels of the operators is
unfortunately still a forensic task due to the lack of a fast network link from the S C A D A
system to the plant network. This problem could not be addressed due to some plant
championed by mill personnel. It is the opinion of the author that a "champion" at the
mill for the system addressing the networking issue would make the system viable in this
78
particular application and push the system towards encouraging fruitful standardization in
During this recent visit to Edmonton, it was determined that it is the intent of the
mill to implement a level II P L C based system which will remove the operators from the
furnace control loop. This would in turn, remove the U B C S C A D A system from the
control loop, and all the expertise contain within its knowledge base. While this would
79
Chapter 6.3. Benefits of the System to the Mill Operation:
success. Some of the benefits can be directly measured in terms of money saved from a
decrease in product rejections, and others indirectly in terms of the introduction of order
to a sometimes chaotic process. Some of the features which were implemented into the
system which may not have been available or as refined in previous systems are:
2. Real time data collection at high frequencies - low level CI drivers which collect data
different sources was compiled into a standardized knowledge base to be used by the
furnace operators.
5. Presentation of historical data - Trend information on temperature, air flow, fuel flow,
operating procedures.
6. Generation of data files - Data files containing information of furnace activity and
80
Chapter 7. Conclusions
This project has involved an examination of the problems involved in the control
• The control of billet reheating furnaces has proven to be a challenging problem well
• A Expert System consisting of a data collection module and advisor module was
developed and successfully installed at the Alberta mill. This system was still in
• The static and transient furnace models developed by the billet reheating project were
• The system has proven itself as a useful tool to operators which benefit from the man-
machine interface as well as the mill managers as they attempt to improve the
81
BIBLIOGRAPHY
10. Dennis Gutknecht, Doug Ostafichuk, Bob Pugh, Peter Barr, Edmund Osinki -
Private Communications, April 4, 1997 Edmonton "Experts: U B C and Alta"
82
13. S.Kumar, J.A.Meech, I.V.Samarasekera, J.K.Brimacombe, "Knowledge
Engineering an Expert System to Troubleshoot Quality Problems in the
Continuous Casting of Steel Billets", I & S M September 1993, pp 29-34
14. J.A.Meech, " A l Applications in the Mining Industry into the 21st Century",
A P C O M X X V Conference, Brisbane, May 9-14, 1995, p. 95-96
16. Mark K Ekblad, Tamara L Artim., "Application of Fuzzy Logic Control of Gas
Composition in a Combustion Process", 2nd IEEE Conference on Control
Applications. Sep 13-16 Vancouver B C
20. Sunil Kumar, M A S c Thesis, "An expert system to Diagnose Quality Problems in
the Continuous Casting of Steel Billets", 1991 (PhD 1996)
83
25. J.A.Meech, C.A.Harris, "Expert Systems for Gold Processing Plants", Randol
Gold Forum , Vancouver march 25-27, 1992
26. Dr. John Meech, Dr. Peter Barr - Private Communications, summer 1995
Vancouver" Expert and Knowledge Engineer, U B C "
84
APPENDIX A Mathematical Modeling Results
The vast amount of data and information gleaned from the furnace with the U B C
S C A D A system as well as data gathered from plant trials in Alberta and the pusher-type
transient billet furnace model. The model is an offline tool necessary for running a
Given the good degree of confidence with the results obtained from the model, we were
Figure A - 1 shows the Model Calculated (lines) vs. Experimental points (symbols) [4].
1400
billet discharged
from furnace
0 20 40 60 80 100 120
Time (min)
85
These recommendations allowed reduction in the number of rejections as well as a
ball and rod stock. Following mill assessment of the procedural changes, they were
assimilated into the plant's Standard Operating Practice which is an integral part of the
operational knowledge base of our real-time advisory expert system. This change has
allowed the creation of new knowledge as well as the mechanism to translate these new
procedures to the mill level. The result of such new procedures and standardizations was
to increase the levels of Quality Assurance for mill bar products. The furnace operational
analysis of this specific scenario and subsequent system implementation has proven to
have saved the mill in the order of $100,000 with the change of the procedural operating
In regards to "process lore", a common belief of the mill was that after delay
transient conditions, the first two billets discharged from the furnace would be cold, and
well below target temperature. The modeling of this situation by Osinski [10,27] did not
show any cold billets at the end of delay transients. There was, however some evidence
of cold billets at the end of longer delays from S C A D A system logged data. Discussions
with mill personnel and further modeling of the soak zone, revealed that a combination of
the cooling effect of the exit door, the geometry of the zone and operator decisions
resulted in colder billets. The discharge door was essentially a black body which acted as
a heat sink near the discharge end of the furnace. In addition, some cold air moved
through the seal of the door which cools the billet as well as diminishing the heating
effect of the row of burners over the end billets. If the burner output is increased to
86
account for this cooling the next set of billets (5th or 6th) is overheated. As a result, the
furnace operators under-burned the zone, leaving colder billets to be discharged at the end
of longer delays. It had been believed that this feature was solely the result of cooling
from the door and the inability of the furnace to supply enough heat to the soak zone.
As a result of the dissolution of this particular piece of process lore, the control of
the furnace can be better understood and control practices can reflect this new knowledge.
Barr [10] suggested making procedural changes such as shutting down the second row of
burners in the soak zone for temperature sensitive product or possible creating a new
control zone in the furnace which would separate the soak zone into smaller control
sections.
Steady state and transient work by Barr and Osinski [10] suggest that the furnace
is not optimally operated in terms of transfer of heat from combustion into the billets.
For a large amount of the products, the charge zone is fired hard with the heating zone
idled and soak zone used only for final temperature targeting. This procedure has
allowed the operators to control the temperature with little loss in production. However,
firing the charge zone heavily also means that most of this sensible heat exits the furnace
quickly through the stack. If the heating zone were to be fired heavily, the heat of
combustion would not only be absorbed in the heating zone but also in the charge zone
which in turn would not need to be fired as heavily to maintain temperatures. The
drawback of this procedure may be in the production rate of the furnace because the heat
flux into the billets as viewed from the furnace axial profile would be skewed from the
charge towards the heating zones. The result may be a reduction in the maximum pace
rate due to the longer heating and homogenizing times. This may have the effect of
87
lowering the throughput of the furnace which may be more detrimental than the excess
throughput and reduce fuel consumption when reheating billets which are not bottle-
It was determined via gas flow data traces that the amount of excess air supplied
to the burners under delay driven idle conditions varied to a large degree. This variation
can lead to a change in an adverse furnace atmosphere and increase the degree of scale
formation. This loss due to scale can be absorbed into the costs of delays but can be
detrimental in the production of grades with particularly adherent scale. It has been
proposed that the burning ratios be raised into a more stable region and the heating profile
in the furnace be redistributed to allow a zero net change in heat input. This would
decrease the extent of scale loss during delay conditions though better furnace
A set of "typical" delay scenarios were obtained from mill as selected from the
historical log files, including recommended responses. These were analyzed by Osinski
with the use of the U B C model to determined their effectiveness. While the procedures
had merit, it was clear that improvements could be made to these procedures. Osinski
postulated possible new procedures and tested a number of variations. The result was a
set of new post delay procedures which the model deemed as more effective. Osinski
assembled a set of results from the modeling efforts which included the examination of
88
2. basic strategy - as is currently prescribed
3. fine strategy - fine adjustments to the operation during and after the delay
The firing strategies noted above are summarized in Table A - 1 and Table A - 2
[10,27]. It is clear from these results that the null strategy as expected produces greatly
overheated billets and that the fine control strategy produced billets with much lower
standard deviations. These procedures have been presented to the mill for validation
89
1260
1220
Li. \
tsar
1100
1060
O 2D 40 60 80 100 120 140 160 180 200
time [mln]
90
The steady-state and transient modeling has clearly proven itself to be a powerful
tool in the understanding of furnace operation and has added new knowledge to a often
misunderstood process. It is evident that further work along the same lines would
implemented in the expert system, would provide the floor level personnel with same
level of control expertise without the burden of explicitly understanding the fundamentals
91
APPENDIX B Hardware
Mill Computer: (The U B C unit was essentially identical in configuration but not
manufacturer)
• I B M Value Point
• 486DX2-66
• 16 Megabytes Memory
• 340 Megabyte Harddrive
• Mouse, Colour monitor, Keyboard
This particular hardware configuration was selected in order to provide the
minimum required hardware processing power. The actual computer was an I B M value
point machine chosen by the mill in accordance to mill specifications for standardized
computers. This selection, however provided an unexpected operational problem. The
DAS-20 data acquisition card did not function properly due to inability to control the data
stream transfer rates between the motherboard and the DAS-20. Generic computers of
this age are equipped with CMOS adjustable transfer rates which readily allowed the
BUS to be adjusted to match the transfer rates acceptable to the DAS-20. The solution to
this problem proved to the removal of the I B M BUS riser card, which was IEEE
standardized, and the installation of an A T BUS standardized riser card to make the
hardware change in the BUS transfer rates.
Networking:
• Token Ring network card
• Serial data line-TCP-IP protocol
Networking of the Q N X furnace computer with the mill computer proved to be an
effort restricted again by mill standardization. The mill operated all of their networks off
an I B M token ring standard. The software allowing this option was not available until
the end of the this project, therefore a temporary option was chosen. A serial line was
installed from the Q N X machine to a bridge machine which transferred the daily log files
from the Q N X machine to the DOS machine once a day prior to sending the information
onwards to the mill network for compilation with the database of operating variables.
92
APPENDIX C Software
DOS 5 - A small DOS partition was installed to allow this machine be twinned and
interchangeable with another plant machine in case of hardware or software
failure.
Q N X 4.21 operating system - This software was selected due to it's ability to provide
real-multitasking on the industrial scale.
QNX-windows interface - This software provides the Graphical User Interface necessary
for a the expert system software to operate.
Comdale ProcessVision, Comdale/C - The process view and expert system software
combination which provided the man-machine interface with the furnace
operators. The version of the software used was in B E T A form and required
some additional low level drivers to solve some operational deficiencies
Signal Conditioning Software - this is the small CI module which examines the incoming
signals from the H M D ' s and determined the existence of a "real" or "ghost"
signal, Author Vladimir Rakocevic and Cliff Mui
U B C - data acquisition drivers - low level drivers which acquired data from the DAS-20
card performed some CI manipulations of the data stream prior to passing the
relevant data onto the expert system. Authors Vladimir Rakocevic and Cliff Mui
Networking software - QCP Serial software purchased as a "Band-Aid™" solution to the
networking deficiencies, This allows a DOS machine to act like a Q N X terminal
logging onto the Q N X server and retrieve data files via FTP and Telnet protocols -
Developed by MultiMips Software
Data processing software - small drivers designed to be evoked by the expert system to
provide data to the expert system on demand as well as perform data file
manipulation onto the bridge machine
Data interfacing software - DOS based scheduling software running DOS scripts that
moved the data from the bridge machine to the mill network
Statistical Processing Software - Low level software written to extract information from
data files of unmanageable size (> 100MB). Author Cliff Mui
Mathematical Model - 3D steady state model designed to verify the steady state operation
of the reheating furnaces. Author and Expert Dr. Peter Ban-
Mathematical Model - 3D transient furnace model designed to used the data trends to
determine the efficiency of control procedures. Author and Experts Dr. Peter
Barr, Dr. Kenneth Scholey, Edmund Osinski.
93
APPENDIX D Plant Trials
1. K.Scholey, C.Mui, P.Wenman conducted plant trials at Alta Feb 28-Mar 1994
examining Transient and Steady-State furnace control conditions.
94
APPENDIX E Data Processing Code
The following is a series of small DOS programs developed in F O R T R A N to
examine the large data files obtained from the mill:
C file=iclip.for
Cccccccccccccccccccccccccccccccccccccccccccc
C
C Ver 1.0 June 23, 1995
C This code is was written clip billet ID
C data from fine Billet ID data files.
C
Ccccccccccccccccccccccccccccccccccccccccccccc
c
INTEGER SEC,LINE
INTEGER D A T E , STA R T D ATE,FINI S H D A T E
INTEGER START,FINISH
INTEGER TOMILL,REJECT
C H A R A C T E R * 8 TIME,START_TIME,FINISH_TIME,LABEL
C H A R A C T E R * 10 N U L L
C
LINE = 0
C
C INPUT R A N G E F R O M CONFIG FILE
C
OPEN(UNIT=3,FILE='ICLIP.CFG')
READ(3,*) START_DATE,START_TIME
READ(3,*) FINI S H D ATE,FINI SH_TIME
CLOSE(UNIT=3)
DATE=START_DATE
TIME=START_TIME
C A L L CONVERT(DATE,TIME, START)
D ATE=FINI SH_D A T E
TIME=FINISH_TIME
C A L L CONVERT(DATE,TIME,FINISH)
C
202 FORMAT(I8,',',A, ,',I3, ,',I2, ,',A,';,I9)
, , ,
OPEN(UNIT=l ,FILE='BILL_ID.TXT')
OPEN(UNIT=2,FILE= ICLIP.TXT',STATUS='UNKNOWN')
,
100 READ(1,*) D A T E , T I M E , T O M I L L , R E J E C T , L A B E L , N U L L
LINE = LINE + 1
95
c
C A L L CONVERTEDATE,TIME, SEC)
C
IF (SEC.GE.START.AND.SEC.LE.FLNISH) T H E N
WRITE(2,202) D A T E , T I M E , T O M I L L , R E J E C T , L A B E L , S E C
PRINT*,DATE,TIME,LINE,START,FrNISH,SEC
ELSE
PRINT*,' ',DATE,TIME,LLNE
ENDIF
C
IF (DATE.NE.9) T H E N
GOTO 100
ELSE
ENDIF
CLOSE(UNIT=l)
CLOSE(UNIT=2)
C
END
C
C
ccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccc
c
C SUBROUTINE FOR C O N V E R T I N G D A T E A N D TIME TO abs-seconds
C
SUBROUTINE CONVERT(DATE,TIME,SEC)
C H A R A C T E R * 8 TIME
INTEGER D A T E , S E C , B L A N K , B A S E
INTEGER DD A T E , M O N T H , D A Y,INDEX( 12)
C H A R A C T E R * 1 HOURl,HOUR2,MrNl,MIN2,SECl,SEC2
INDEX(1)=0
INDEX(2)=2678400
INDEX(3)=5097600
FNDEX(4)=7776000
INDEX(5)=10368000
FNDEX(6)=13046400
INDEX(7)=15638400
INDEX(8)= 18316800
INDEX(9)=20995200
INDEX(10)=23587200
INDEX(11)=26265600
INDEX(12)=28857600
INDEX(13)=99999999
C
C ABS-SEC-CONVERSION
96
c DDATE=0
BASE = 0
IF(DATE.GE. 19940101. A N D . D A T E . L E . 19941231 )THEN
DD ATE=D ATE-19940000
B A S E = 757382400
ENDIF
IF(DATE.GE. 19950101 .AND.DATE.LE. 19951231 )THEN
DDATE=DATE-19950000
B A S E = 788918400
ENDIF
M O N T H = INT(DD ATE/100)
D A Y = D D A T E - M O N T H * 100
IF (MONTH.LE.0.OR.MONTH.GE. 13) T H E N
M O N T H = 13
DAY = 9
SEC = 999999977
ELSE
HOUR1 =TIME(1:1)
HOUR2 = TIME(2:2)
MINI = TIME(4:4)
MIN2 = TIME(5:5)
SEC1 =TIME(7:7)
SEC2 = TIME(8:8)
SEC = B A S E
SEC = SEC + (ICHAR(SECl)-48)*10+(ICHAR(SEC2)-48)
SEC = SEC + (ICHAR(MINl)-48)*600+(ICHAR(MIN2)-48)*60
SEC = SEC + (ICHAR(HOUR1)-48)*36000+(ICHAR(HOUR2)-48)*3600
SEC = SEC + (DAY-1)* 86400
SEC = SEC + INDEX(MONTH)
ENDIF
B L A N K = ICHAR(SECl)-48
IF ( B L A N K . L E . 0 . A N D . B L A N K . G E . 9 ) T H E N
SEC = 999999988
ENDIF
END
C file=stats.for
Cccccccccccccccccccccccccccccccccccccccccccccccccccc
C
C Ver 1.0 may 23, 1995
C This code is was written to compile statistics
C of data files from alta steel using 100 points
C and write a data file containing these stats
97
cCccccccccccccccccccccccccccccccccccccccccccccccccccc
c
INTEGER TEM(800)
INTEGER G A P , B A R S , F L A G
INTEGER NUMBER(800),PERIOD(800)
INTEGER MIN(800),MAXI(800)
INTEGER MIN_E,MEST_W,MAX
INTEGER SEC,T,X,SECJBUFF,LINE
INTEGER D A T E , D A T E _ B U F F
C H A R A C T E R * 8 TIME,TIME_BUFF
C
LLNE = 0
SEC-0
BARS = 1
DO 500 X=l,200
PERIOD(X)=0
MIN(X) = 0
MAXI(X) = 0
NUMBER(X)=0
500 CONTINUE
C
C INPUT
C
C
OPEN(UNIT=3,FILE='STATS.CFG')
C
C R E A D IN CONFIG FILE
C
300 READ(3,*) PERIOD(BARS)
IF (PERIOD(BARS).NE.-9) T H E N
BARS = BARS + 1
GOTO 300
ELSE
BARS = BARS - 1
ENDIF
CLOSE(UNIT=3)
C
C BEGIN L O A D I N G IN G A P TIMES
C
OPEN(UNIT=l ,FILE='BILL_DAT.END')
100 SEC_BUFF = SEC
READ(1 ,*) DATE,TIME,(TEM(T),T=1,100),MLNJE,MIN_W,MAX,SEC
G A P = SEC - SEC_BUFF
LINE = LINE + 1
98
C START STOCKING BARS
C
FLAG = 1
D O 4 0 0 X=1,BARS
IF ( G A P . G E . P E R I O D ( X ) ) THEN
FLAG - X
ENDIF
400 C O N T I N U E
PRINT*,DATE,TIME,LINE,SEC,GAP,FLAG
NUMBER(FLAG) = NUMBER(FLAG) + 1
MIN(FLAG) = MIN(FLAG) + MINJE
MAXI(FLAG) = MAXI(FLAG) + M A X
C
C
IF ( D A T E . N E . 9 ) THEN
G O T O 100
ELSE
ENDIF
CLOSE(UNIT=l)
C
OPEN(UNIT=2,FILE='STATS.TXT ,STATUS='UNKNOWN') ,
WRITE(2,*) L I N E , B A R S
WRITE(2,*)' G A P , F R E Q , MIN ,M A X '
D O 600 X = 1,BARS
IF ( N U M B E R ( X ) . N E . O ) THEN
M I N E = MIN(X)/NUMBER(X)
M A X = MAXI(X)/NUMBER(X)
ELSE
MIN_E = 0
MAX = 0
ENDIF
WRITE(2,*) PERIOD(X), ;,NUMBER(X),', ,MIN_E;;,MAX
, ,
600 C O N T I N U E
CLOSE(UNIT=2)
END
C file=gaps.for
Cccccccccccccccccccccccccccccccccccccccccccccccccccc
C
C Ver 1.0 June 2 1 , 1995
C This code is was written to compile gap statistics
99
C of data files from alta steel using 100 points
C and write a data file containing these gap stats
C
Cccccccccccccccccccccccccccccccccccccccccccccccccccc
c
INTEGER TEM(200)
INTEGER G A P
INTEGER SEC,T,SEC_BUFF
INTEGER D A T E
C H A R A C T E R * 8 TIME
C
SEC = 0
C
C INPUT
C
C
C B E G I N L O A D I N G IN G A P TIMES
C
OPEN(UNIT= 1 ,FILE='BILL_D AT.END')
OPEN(UNIT=2,FILE='GAPS.TXT ,STATUS='UNKNOWN')
,
C file=Fclip.for
Cccccccccccccccccccccccccccccccccccccccccccc
C
C Ver 1.0 June 23, 1995
C This code is was written clip furnace
C date from furnace data files.
C
Ccccccccccccccccccccccccccccccccccccccccccccc
100
c
INTEGER SEC.LINE
INTEGER D A T E , S T A R T D ATE,FINI S H D A T E
INTEGER C T E M P , H T E M P , S T E M P
INTEGER CSET,HSET,SSET
REAL CGAS,HGAS,SGAS
R E A L CAIR,HAIR,SAIR,FPRESS
INTEGER START,FINISH
C H A R A C T E R * 8 TIME,START_TIME,FINISH_TIME
C
LINE = 0
C
C INPUT R A N G E F R O M CONFIG FILE
C
OPEN(UNIT=3,FILE='FCLIP.CFG')
READ(3,*) S T A R T _ D A T E , S T A R T _ T I M E
READ(3,*) FINISH_DATE,FINISH_TIME
CLOSE(UNIT=3)
DATE=START_DATE
TIME=START_TIME
C A L L CONVERT(DATE,TIME,START)
D ATE=FINI SH_D A T E
TIME=FINISH_TIME
C A L L CONVERT(DATE,TIME,FINISH)
C
202 FORMAT(I8,V,A,','J4,',',I4,V,I4,V,I4,V,I4,',',I4,','
+,F5.2,V,F5.2,', ,F5.2, ;,F5.2 ;,F5.2, , ,F5.2,V,F5.2)
, ,
S
, , ,
OPEN(UNIT=l ,FILE='FURN_TMP.TXT')
OPEN(UNIT=2,FILE='FCLIP.TXT',STATUS='UNKNOWN')
100READ(1,*)
DATE,TIME,CTEMP,HTEMP,STEMP,CSET,HSET,SSET,CGAS,HGAS
+,SGAS,CAIR,HAIR,SAIR,FPRESS
LINE = LINE + 1
C
C A L L CONVERT(DATE,TIME,SEC)
C
IF (SEC.GE.START.AND.SEC.LE.FINISH) T H E N
WRITE(2,202) DATE,TIME,CTEMP,HTEMP,STEMP,CSET,HSET,SSET,CGAS
+,HGAS,SGAS,CAIR,HAIR,SAIR,FPRESS
PRJNT*,DATE,TIME,LINE,START,FINISH,SEC
ELSE
PRINT*,' ',DATE,TIME,LINE
ENDIF
C
IF (DATE.NE.9) T H E N
101
GOTO 100
ELSE
ENDIF
CLOSE(UNIT=l)
CLOSE(UNIT=2)
C
END
C
C
ccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccc
c
C SUBROUTINE FOR C O N V E R T I N G D A T E A N D TIME TO abs-seconds
C
SUBROUTINE CONVERT(DATE,TIME, SEC)
C H A R A C T E R * 8 TIME
INTEGER D A T E , S E C , B L A N K , B A S E
INTEGER DD A T E , M O N T H , D A Y,FNDEX( 12)
C H A R A C T E R * 1 HOUR1 ,HOUR2,MIN 1 ,MLN2,SEC 1 ,SEC2
INDEX(1)=0
INDEX(2)=2678400
LNDEX(3)=5097600
INDEX(4)=7776000
LNDEX(5)= 103 68000
INDEX(6)=13046400
LNDEX(7)=15638400
LNDEX(8)= 18316800
INDEX(9)=20995200
INDEX(10)=23587200
INDEX(11)=26265600
INDEX(12)=28857600
INDEX(13)=99999999
C
C ABS-SEC-CONVERSION
C
DDATE=0
BASE = 0
IF(DATE.GE.19940101.AND.DATE.LE.19941231)THEN
DD ATE=DATE-19940000
B A S E = 757382400
ENDIF
IF(DATE.GE. 19950101. A N D . D A T E . L E . 19951231 )THEN
DDATE=DATE-19950000
B A S E = 788918400
ENDIF
102
M O N T H = INT(DD ATE/100)
D A Y = D D A T E - M O N T H * 100
IF (MONTH.LE.0.OR.MONTH.GE. 13) T H E N
M O N T H = 13
DAY = 9
SEC = 999999977
ELSE
HOUR1 =TIME(1:1)
HOUR2 = TIME(2:2)
MINI = TIME(4:4)
MIN2 = TIME(5:5)
SEC1 =TIME(7:7)
SEC2 = TIME(8:8)
SEC = B A S E
SEC = SEC + (ICHAR(SECl)-48)*10+(ICHAR(SEC2)-48)
SEC = SEC + (ICHAR(MINl)-48)*600+(ICHAR(MIN2)-48)*60
SEC = SEC + (ICHAR(HOUR1)-48)*36000+(ICHAR(HOUR2)-48)*3600
SEC = SEC + (DAY-1)* 86400
SEC = SEC + INDEX(MONTH)
ENDIF
B L A N K = ICHAR(SECl)-48
IF ( B L A N K . L E . 0 . A N D . B L A N K . G E . 9 ) T H E N
SEC = 999999988
ENDIF
END
C file=case.for
Cccccccccccccccccccccccccccccccccccccccccccccccccccc
C
C Ver 1.0 June 12, 1995
C This code is was written to compile case
C studies from alta data files
C and write a data file containing these cases
C
Cccccccccccccccccccccccccccccccccccccccccccccccccccc
c
INTEGER TEM(200)
INTEGER TEM_BUFF(200)
INTEGER GAP,FL A G , S A M P L E
INTEGER MIN_E,MIN_W,MAX
INTEGER MIN_E_BUFF,MIN_W_BUFF,MAX_BUFF
INTEGER SEC,T,X,SEC_BUFF,LINE
INTEGER DATE,DATE_BUFF
INTEGER START,END
103
C H A R A C T E R * 8 TIME,TIME_BUFF
C
LINE = 0
SEC = 0
FLAG = 0
C
C
202 F O R M A T ( I 8 , 7 , A , 7 ,
14;,' 14' ' 14' ' 14' ' 14' ' 14' ' 14' ' 14' ' 14 "
3 ~3
A
3 3 ~3
A
3 3 ~3
A
3 3 A
'3 3 3 ~3A
3 3 ~3 A
3 3 A
' 3 3
'14;, M4,', ' 14' ' 14' ' 14' ' 14 ' ' 14' ' 14' ' 14 "
3 ~3
A
3 3 ~3
A
3 3 ~3A
3 3 ~3A
3 3 ~3 A
3 3 ~3 A
3
14;, ',14;, ' 14' ' 14' ' 14' ' 14' ' 14' ' 14' ' 14 " 3 ~3
A
3
3 ~3
A
3 3 ~3
A
3 3 ~3A
3 3 ~3
A
3
14;,M4,', ',14;,' 14' ' 14' ' 14' ' 14' ' 14' ' 14 " 3 ~3 3
A
3 ^3
A
3 3 ~3A
3 3 ~3A
3 3 A
' 3 3 3 A
"3 3 3 ~ 3
A
3
'14;, ',14;, ' 14' ' 14' ' 14 ' ' 14' ' 14' ' 14 "
3 ~3
A
? 3 ~3A
3 3 ~3A
3 3 ~3
A
3 3 ~3A
3
14;, ' 14' ',14;,' 14' ' 14' ' 14' ' 14' ' 14' ' 14 "
3 ~?
A
3 3 ~3
A
3 3 ~3A
3 3 ~3
A
3 3 ~3A
3
•14;,' 14' ' 14 ' ' 14' ' 14' 14' ' 14' ' 14' ' 14 "
1
3 ~3
A
3 ? ^3
A
3 3 ^3
A
3 3 ~3A
3 3 ~3A
3 3 ~3 A
3 ? ~? A
3
•14;,' 14' ' 14 ' ' 14' ' 14' ' 14' ' 14' ' 14' ' 14 "
3 ~3
A
3 3 ~3
A
3 3 ~3
A
3 3 ~3A
3 3 A
* 3 3 3 ~3 A
3 3 ~3 A
3
'14;, ',14;,' 14' ' 14' ' 14' ' 14 ' 14' ' 14' ' 14 " 1
3 ^3
A
3
? ~3
A
3 3 ~3
A
3 3 ~3A
3 3 ~3A
3 3 ~3 A
3 3 ~3 A
3
'14;, ',14;,' 14 ' ' 14' ' 14' ' 14' ' 14' ',14,',' 14 " 3 ~3
A
3
3 ~3
A
3 3 ~3
A
3 3 A
~ J 3 3 A
' 3 3 3 ~3 A
3 3 ~3
A
3
'14;, ' 14' ' 14 ' ' 14 ' ',14;,' 14' ' 14' ',14,',' 14 "
3 ~3
A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3
14;, ' 14' ' 14' ' 14' M9) 3 * 3 3
c
A
3 ~3
A
3 3 ~3
A
3
C INPUT
C
C R E A D IN CONFIG FILE
C
OPEN(UNIT=3,FILE='CASE.CFG')
READ(3,*) START,END,SAMPLE
CLOSE(UNIT=3)
S AMPLE=S AMPLE-1
C
C B E G I N L O A D I N G D A T A A N D SEEK G O A L G A P TIME
C
OPEN(UNIT=l ,FILE='BILL_DAT.END')
OPEN(UNIT=2,FILE='CASE.TXT',STATUS='UNKNOWN')
WRITE(2,*) START,END
C
100 SEC_BUFF = SEC
D A T E B U F F = DATE
T I M E B U F F = TIME
MINEBUFF = MINE
MLNWBUFF = MLNW
MAXBUFF = MAX
DO 600 X=l,100
T E M B U F F ( X ) = TEM(X)
600 CONTINUE
104
READ(1 ,*) DATE,TIME,(TEM(T),T=1,100),MIN_E,MIN_W,MAX,SEC
G A P = SEC - SEC_BUFF
LINE = LINE + 1
C
C B E G I N S E R C H FOR CASES
C
IF (GAP.GE.START.AND.GAP.LE.END.AND.FLAG.EQ.O) T H E N
PRINT* ,DATE,TIME,LINE,SEC,GAP
WRITE(2,*) LINE
WRITE(2,202) DATE_BUFF,TIME_BUFF,(TEM_BUFF(T),T=1,100),
+MIN_E_BUFF,MIN_W_BUFF,MAX_BUFF,SEC_BUFF
FLAG = SAMPLE
ELSE
ENDIF
C
IF ( F L A G . G T . O . A N D . F L A G L E . S A M P L E ) T H E N
FLAG=FLAG-1
WRITE(2,202) DATE,TIME,(TEM(T),T=1,100),MIN_E,MIN_W,MAX,SEC
PRINT*,FLAG
ELSE
ENDIF
C
C C H E C K FOR E N D OF FILE
C
IF (DATE.NE.9) T H E N
GOTO 100
ELSE
ENDIF
CLOSE(UNIT=l)
CLOSE(UNIT=2)
C
END
C file=BCLIP.for
Cccccccccccccccccccccccccccccccccccccccccccc
c
C Ver 1.0 may 24, 1995
C This code is was written to CLIP data
C of files from alta steel's billet file
C using a usr config file (time based)
C
Ccccccccccccccccccccccccccccccccccccccccccccc
c
INTEGER TEM(IOO)
105
INTEGER D D A T E , X
INTEGER M L N _ E , M l N _ W , M A X
INTEGER SEC,T
INTEGER DATE,START,END
C H A R A C T E R * 8 TIME,TTIME
C
SEC =111111111
C
C INPUT
C
C
0PEN(UNIT=1 ,FILE='BILL_DAT.END')
0PEN(UNIT=2,FILE='BCLIP.CFG')
0PEN(UMT=3,FILE='BCLIP.TXT',STATUS='UNKN0W')
203 F O R M A T ( I 8 ; ; , A ; ; ,
14;, ' 14 " 14 ' ' 14' ' 14 " 14 ' ',14;, M4;, ' 14'
3 ~3A
3 3 ~3A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3 3 ~3A
'14;, ' 14 " 14 ' ',14;,' 14 " 14 ' *,i4;, ',14;,' 14'
3 A
* 3 3 3 ^3
A
3 3 ~3
A
3 3 ^3
A
3 3 A
' 3
'14;, ' 14 " 14 ' ',14;,' 14 " 14 ' ' 14' ' 14' ',14;
3 ~3A
3 3 ~3A
3 3 ^3
A
3 3 ^3
A
3 3 ~3
A
3 3 ^3
A
3
'14;, ' 14 " 14 ' ' 14' ' 14 " 14 ' ' 14' ',i4;, ',14;
3 ~3A
3 3 ~3A
3 3 ~3
A
3 3 ~3
A
3
'14;, ' 14 " 14 ' ' 14' ' 14 " 14 ' ' 14' ',14;, ',14;
3 A
*3 3 3 A
'3 3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3
'14;, ' 14 " 14 ' ' 14' ' 14 " 14 ' ' 14' ' 14' ',14;
3 ^3A
3 3 ^3A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3
'14;, ' 14 " 14 ' ' 14' ' 14 " 14 ' ' 14' ' 14' ',14;
3 ~3A
3 3 ~3A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3
'14;, ' 14 " 14 ' ' 14' ' 14 " 14 ' ' 14' ' 14' ',14;
3 ^3A
3 3 ^3A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3
'14;, ' 14 " 14 ' ' 14' ' 14 " 14 ' ' 14' ',14,',' 14'
3 ~3A
3 3 ~3A
3 3 ~3
A
3 3 ~3
A
3 3 ~3
A
3 3 ~3A
'14;, ' 14 " 14 ' ' 14' ' 14 " 14 ' ' 14' ',14,',' 14 '
3 ~3A
3 3 ~3A
3 3 ~3
A
3 3 ~3
A
3 3 ~3A
'14;, ' 14 " 14 ' ' 14' ',i4;;,i4;, ' 14 ',14,',' 14' 1
3 ~3A
3 3 ~3A
3 3 ~3
A
3 3 ~3
A
3 3 ~3A
106
GOTO 300
ELSE
CLOSE(UNIT=l)
ENDIF
ENDIF
C
CLOSE(UNIT=l)
CLOSE(UNIT=2)
CLOSE(UNIT=3)
C
END
C
C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCC
c
C SUBROUTINE FOR C O N V E R T I N G D A T E A N D TIME TO abs-seconds
C
SUBROUTINE CONVERT(DATE,TIME,SEC)
C H A R A C T E R * 8 TIME
INTEGER D A T E , S E C , B L A N K , B A S E
INTEGER DD A T E , M O N T H , D A Y,INDEX( 12)
C H A R A C T E R * 1 HOUR1 ,HOUR2,MINl ,MIN2,SEC1 ,SEC2
INDEX(1)=0
INDEX(2)=2678400
INDEX(3)=5097600
INDEX(4)=7776000
INDEX(5)=10368000
INDEX(6)=13046400
INDEX(7)= 15638400
INDEX(8)=18316800
INDEX(9)=20995200
INDEX(10)=23587200
INDEX(11)=26265600
INDEX(12)=28857600
INDEX(13)=99999999
C
C ABS-SEC-CONVERSION
C
DDATE=0
BASE = 0
IF(DATE.GE. 19940101. A N D . D A T E . L E . 19941231)THEN
DD ATE=D ATE-19940000
B A S E = 757382400
ENDIF
107
IF(DATE.GE. 19950101. A N D . D A T E . L E . 19951231)THEN
DDATE=DATE-19950000
B A S E = 788918400
ENDIF
M O N T H = INT(DD ATE/100)
D A Y = DD A T E - M O N T H * 100
IF (MONTH.LE.0.OR.MONTH.GE. 13) T H E N
M O N T H = 13
DAY = 9
SEC = 999999977
ELSE
HOUR1 =TIME(1:1)
HOUR2 = TIME(2:2)
MINI = TIME(4:4)
MIN2 = TIME(5:5)
SEC1 =TIME(7:7)
SEC2 = TIME(8:8)
SEC = B A S E
SEC = SEC + (ICHAR(SECl)-48)*10+(ICHAR(SEC2)-48)
SEC = SEC + (ICHAR(MINl)-48)*600+(ICHAR(MIN2)-48)*60
SEC = SEC + (ICHAR(HOUR1)-48)*36000+(ICHAR(HOUR2)-48)*3600
SEC = SEC + (DAY-1)*86400
SEC = SEC + INDEX(MONTH)
ENDIF
B L A N K = ICH AR(SEC 1 )-48
IF (BLANK.LE.0.AND.BLANK.GE.9) T H E N
SEC = 999999988
ENDIF
PRINT * ,D ATE,TIME, SEC
END
108
APPENDIX F Files on the QNX MMI Computer
The following is a list of the Q N X files within the operating system structure:
109
monday.bat* data script
new.kn$
new.knw Knowledge base
new.st$
new.stg PV
new.t03
pressure.grp P V
pview.pvw load order
saturday.bat* data script
spc.grp PV
sunday.bat* data script
symbol.bak
symbol, diet
test.grp
thursday.bat* data script
tm*
tracking, grp P V
trends/
tuesday.bat* data script
tune, grp PV
ver.txt
wednesday.bat* data script
xview.xvw
zones.grp PV
zones.temp furnace data file (daily)
113
decl3_0_10v/
decl3_l_5v/
dec14/
dec15/
decl 5 late/
dec 16/
dec17/
declgood/
dec3/
demo/
demo.cfg
demol.cfg
demo2.cfg
democliff.cfg
demo_vlad.cfg
dos/
include/
jan30/
lib/
local/
nov28b/
octl4/
oct28/
spool/
114
APPENDIX G Comdale/C Knowledge Base Code
Object
@name = advise
©attribute = delayl_l .©string, delayl_2.@string, delayl_3.@string,
delay2_l.@string, delay2_2.@string, delay2_3.@string,
delay3_l.@string, delay3_2.@string, delay3_3.@string,
delay_grpl_end.@float, delay_grpl_start.@float, delay_grp2_end.@float,
delay_grp2_start.@float, delay_grp3_end.@float, delay_grp3_start.@float,
delay_long.@string, expertl.@string, max_diff.@float
endObject
Object
@name = alarm
©attribute = max_temp. ©float
endObject
Object
@name = batch
©attribute = group 1.©float, group2.©float, group3.©float,
group4.©float, heatl.©string, heat2.©string,
heat3.©string, heat4.©string, total 1.©float,
total2.@float, total3.©float, total4.@float,
total5. ©float
endObject
Object
©name = billet
©attribute = age.©float, gapa.@float, gapb.@float,
gape.©float, gapd.©float, max_temp.©float,
min_temp.©float, min_templ.©float, min_temp2.©float,
new.@float, position.©float, running_average.@float,
top_temp.©float, true_age.©float, true_agel.©float,
115
truebuff. ©float, true_diff.@fioat, true_sec. ©float,
true_zerosl .@float
endObject
Object
@name = billetOOl
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet002
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet003
@attribute = spc_max. ©float, spc_min.@float
endObject
Object
@name = billet004
@attribute = spc_max.@fioat, spc_min.@float
endObject
Object
@name = billet005
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet006
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet007
©attribute = spc_max.@fioat, spc_min.@float
endObject
Object
@name = billet008
©attribute = spc_max. ©float, spc_min. ©float
endObject
Object
116
@name = billet009
©attribute = spc_max.©float, spcjrnin.©float
endObject
Object
@name = billet010
©attribute = spc_max.@float, spc_min.©float
endObject
Object
©name = billetOl 1
©attribute = spc_max.@float, spc_min.@float
endObject
Object
©name = billetOl 2
©attribute = spcmax. ©float, spc_min.@float
endObject
Object
©name = billetOl 3
©attribute = spc_max.©float, spc_min.@float
endObject
Object
©name = billetOl 4
©attribute = spcmax.©float, spc_min. ©float
endObject
Object
©name = billetOl 5
©attribute = spc_max.@float, spc_min.@float
endObject
Object
©name = billetOl 6
©attribute = spc_max.@float, spcjrnin.©float
endObject
Object
©name = billetOl 7
©attribute = spc_max.@float, spc_min.©float
endObject
Object
117
@name = billet018
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet019
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet020
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet021
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet022
©attribute = spcmax.©float, spc_min.@float
endObject
Object
©name = billet023
©attribute = spc_max.@float, spc_min.@float
endObject
Object
©name = billet024
©attribute = spc_max.©float, spc_min.@float
endObject
Object
©name = billet025
(S)attribute — spc_max. ©float, spc_min. ©float
endObject
Object
©name = billet026
©attribute = spcjnax. ©float, spcmin. ©float
endObject
Object
118
@name = billet027
©attribute = spc_max.©float, spc_min.©float
endObject
Object
©name = billet028
©attribute = spcjmax.©float, spc_min.@float
endObject
Object
©name = billet029
©attribute = spc_max.@float, spc_min.@float
endObject
Object
©name = billet030
©attribute = spc_max.@float, spc_min.©float
endObject
Object
©name = billet031
©attribute = spcjmax.©float, spc_min.©float
endObject
Object
©name = billet032
©attribute = spc_max.©float, spc_min.@float
endObject
Object
©name = billet033
©attribute = spc_max.©float, spcjnin.©float
endObject
Object
©name = billet034
©attribute = spc_max. ©float, spc_min. ©float
endObject
Object
©name = billet035
©attribute = spc_max.@float, spc_min.@float
endObject
Object
119
@name = billet036
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet037
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet038
©attribute = spc_max. ©float, spc_min.@float
endObject
Object
@name = billet039
(^attribute — spc_max.©float, spc min.©float
endObject
Object
@name = billet040
©attribute = spc_max.@float, spc_min. ©float
endObject
Object
@name = billet041
©attribute = spc_max.@float, spc_min.©float
endObject
Object
©name = billet042
©attribute = spc_max.@float, spc_min.©float
endObject
Object
©name = billet043
©attribute = spc_max.@float, spc_min.@float
endObject
Object
©name = billet044
©attribute = spc_max.@float, spc_min.©float
endObject
Object
120
@name = billet045
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet046
©attribute = spc_max.@float, spcjnin.©float
endObject
Object
©name = billet047
©attribute — spc_max.©float, spc_min.@float
endObject
Object
©name = billet048
©attribute = spc_max. ©float, spc_min.@float
endObject
Object
©name = billet049
©attribute = spc_max.@float, spc_min.@float
endObject
Object
©name = billet050
©attribute = spc_max.@float, spcjrnin. ©float
endObject
Object
©name = billet051
©attribute = spc_max.©float, spcjrnin.©float
endObject
Object
©name = billet052
©attribute = spc_max.©float, spc_min.@float
endObject
Object
©name = billet053
©attribute = spcmax. ©float, spc_min.@float
endObject
Object
121
@name = billet054
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet055
@attribute = spc_max.@float, spc_min.@fioat
endObject
Object
@name = billet056
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet057
(S)attribute — spc_max.@float, spc_min.@float
endObject
Object
@name = billet058
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet059
@attribute = spc_max.@fioat, spc_min.@float
endObject
Object
@name = billet060
@attribute = spc_max.@fioat, spc_min.@float
endObject
Object
@name = billet061
@attribute = spc_max.@float, spc_min.@fioat
endObject
Object
@name = billet062
@attribute — spc_max.@float, spc_min.@float
endObject
Object
122
@name = billet063
©attribute = spcjmax.@float, spc_min.@float
endObject
Object
@name = billet064
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet065
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet066
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet067
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet068
(2)attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet069
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet070
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet071
@attribute = spc_max.@float, spc_min.@float
endObject
Object
123
@name = billet072
@attribute — spc_max.@float, spc_min.@float
endObject
Object
@name — billet073
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet074
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet075
@attribute = spc_max.@float, spc_min.@fioat
endObject
Object
@name = billet076
©attribute = spc_max.@fioat, spc_min.@fioat
endObject
Object
@name = billet077
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet078
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet079
©attribute = spc_max.@fioat, spc_min.@float
endObject
Object
@name = billet080
@attribute = spc_max.@float, spc_min.@fioat
endObject
Object
124
@name = billet081
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet082
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet083
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet084
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet085
(^attribute — spc_niax.@float, spc_min.@float
endObject
Object
@name = billet086
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet087
(^attribute — spc_max.@float, spc_min.@float
endObject
Object
@name = billet088
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet089
@attribute = spc_max.@float, spc_min.@float
endObject
Object
125
@name = billet090
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet091
©attribute = spc_max.@float, spc_min.@fioat
endObject
Object
@name = billet092
@attribute = spc_max.@fioat, spc_min.@float
endObject
Object
@name = billet093
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet094
@attribute = spc_max.@fioat, spc_min.@float
endObject
Object
@name = billet095
@attribute = spc_max.@float, spc_min.@fioat
endObject
Object
@name = billet096
©attribute = spc_max.@fioat, spc_min.@float
endObject
Object
@name = billet097
©attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet098
@attribute = spc_max.@float, spc_min.@float
endObject
Object
126
@name = billet099
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billet 100
@attribute = spc_max.@float, spc_min.@float
endObject
Object
@name = billeta
@attribute = diff.@float, max_temp.@float, min_templ.@float,
min_temp2. @float
endObject
Object
@name = billetb
@attribute = diff.@float, max_temp.@float, min_templ.@float,
min_temp2. @float
endObject
Object
@name = billetbuf
@attribute = diff.@float, max_temp.@float, min_templ.@float,
min_temp2. @float
endObject
Object
@name = billetc
@attribute = diff.@float, max_temp.@float, min_templ.@float,
min_temp2.@float
endObject
Object
@name = billetd
@attribute = diff.@float, max_temp.@float, min_templ.@float,
min_temp2. @float
endObject
Object
@name = charge
@attribute = set.@float, set_buff.@float
endObject
Object
127
@name = charge_zone
@attribute = air.@float, gas.@float, temp.@float,
tempbuff. @float
endObject
Object
@name = current
©attribute = group.@float, heat.@string, odd_reject.@fioat,
rejected.@float, remain.@fioat, to_mill.@fioat
endObject
Object
@name = data
©attribute = max_sets.@float
endObject
Object
@name = delay
©attribute = average.©float, button.©float, default.©float,
estimate.©float, factor.@float, time.@fioat,
time_min.@float, time_minx.@float, time_miny.©float,
time_minz.©float, time_ones.©float, time_sec.©float,
time_tens.@float
endObject
Object
©name = delaya
©attribute = time_min.©float, time_ones.©float, time_tens.©float
endObject
Object
©name = delayb
©attribute = time_min.@float, time_ones.©float, time_tens.©float
endObject
Object
©name = delaybuf
©attribute = time_min.©float, time_ones.©float, time_tens.©float
endObject
Object
©name = delayc
©attribute = timemin. ©float, time_ones.©float, time_tens.©float
endObject
128
Object
@name = delayd
©attribute = time_min.@float, time_ones.©float, time_tens.©float
endObject
Object
©name = delayz
©attribute = time_min.©float, time_ones.©float, time_tens. ©float
endObject
Object
©name = detect 1
©attribute = continue, ©float
endObject
Object
©name = heat
©attribute = load_flag.©float, select.@float, select_flag.@float,
set.@float, set_buff.@fioat, tag.©float
endObject
Object
©name = heat_zone
©attribute = air.@float, gas.©float, temp.@float,
temp_buff.@float
endObject
Object
©name = hmd
©attribute = reject_buff. ©float
endObject
Object
©name = hmdl
©attribute = factor.©float, sig.©float, sig_filter.@float,
signal.©float, signal_l .©float, signal_2.©float,
signa1_3.©float, signa1_4.©float, signaljbuff.©float
endObject
Object
©name = hmd2
©attribute = factor.@float, sig.©float, sigfilter. ©float,
signal.©float, signal_l.©float, signal_2.©float,
signal_3.©float, signal_4.©float, signalbuff. ©float
endObject
129
Object
@name = idle
©attribute = cyclical.@float, file_store.@float, store_interval.@float,
store_temp.@float, weekday_interval.@float, weekday_temp.@float
endObject
Object
@name = show
@attribute = age.@float, current.@string
endObject
Object
@name = soak
@attribute = set.@float, set_buff.@float
endObject
Object
@name = soak_zone
@attribute = air.@float, gas.@float, temp.@float,
temp_buff. @float
endObject
Object
@name = system
@attribute = init.flag
endObject
Object
@name = week
@attribute = day.@float, day_buff.@float
endObject
Procedure
@name = furnace_data_buffer
@do =
charge_zone.temp_buff.@float = FLOOR ( 0.500000 + charge_zone.temp.@float )
heat_zone.temp_buff.@float = FLOOR ( 0.500000 + heat_zone.temp.@float )
soak_zone.temp_buff.@float = FLOOR ( 0.500000 + soak_zone.temp.@float )
charge.set_buff.@float = F L O O R ( 0.500000 + charge.set.@float )
heat.set_buff.@float = FLOOR ( 0.500000 + heat.set.@float )
soak.set_buff.@float = F L O O R ( 0.500000 + soak.set.@float )
endProcedure
Procedure
130
@name = initializeKWTs
@do =
current.heat.@string i s " "
batch.heatl.@string is " "
batch.heat2.@string is " "
batch.heat3.@string is " "
batch.heat4.@string is "
SLEEP ("2")
hmdl .signal_buff.@float = hmdl. signal. @fioat
hmd2.signal_buff.@float = hmd2.signal.@float
hmdl .sig_filter.@float = hmdl.signal.@float
hmd2. sig_filter. @float = hmd2. signal. @float
hmdl.factor.@float =3
hmd2.factor.@float = 3
delay, default. @float = 120
delay, average. @float =120
delay.factor.@float = 1.500000
delay.button.@float =-10
R U N P R O C E D U R E ( "initialize_more_KWTs" )
endProcedure
Procedure
@name = initialize_more_KWTs
@do =
A C T I V A T E ("_abs_sec")
billet.position.@float =10
billet.true_buff.@float = 999999
SLEEP(1 )
billet.true_buff.@float = 999999
heat.tag.@float = 1
billet.top_temp.@float =1195
heat.load_flag.@float = 0
heat.select_flag.@float = 0
A C T I V A T E ("/D/loaddata 1")
hmdl.signal_l.@float = 1
hmdl.signal_2.@float = 1
hmdl.signal_3.@float = 1
hmdl.signal_4.@float = 1
hmd2. signal_ 1. @float = 1
hmd2.signal_2.@float = 1
hmd2.signal_3.@float = 1
hmd2.signal_4.@float = 1
endProcedure
Procedure
131
@name = nextheat
@do =
current.heat.@string is batch.heatl.@string
batch.heatl.@string is batch.heat2.@string
batch.heat2.@string is batch.heat3.@string
batch.heat3.@string is batch.heat4.@string
batch.heat4.@string is " "
heat.load_flag.@float = 1
endProcedure
Procedure
@name = spc_advancel
@do =
billetl O0.spc_min.@float = billet099.spc_min.@float
billet 100.spc_max.@float = billet099.spc_max.@float
billet099.spc_min.@float = billet098.spc_min.@float
billet099.spc_max.@float = billet098.spc_max.@float
billet098.spc_min.@float = billet097.spc_min.@float
billet098.spc_max.@float = billet097.spc_max.@float
billet097.spc_min.@float = billet096.spc_min.@float
billet097.spc_max.@float = billet096.spc_max.@float
billet096. spc_min.@float = billet095.spc_min.@float
billet096.spc_max.@float = billet095.spc_max.@float
billet095 .spc_min.@float = billet094.spc_min.@float
billet095.spc_max.@float = billet094.spc_max.@float
billet094. spc_min.@float = billet093.spc_min.@float
billet094. spc_max. @float = billet093.spc_max.@float
billet093. spc_min. @float = billet092.spc_min.@float
billet093 .spc_max.@float = billet092.spc_max.@float
billet092.spc_min.@float = billet091.spc_min.@float
billet092.spc_max.@float = billet091.spc_max.@float
billet091 .spc_min.@float = billet090.spc_min.@float
billet091 .spc_max.@float = billet090.spc_max.@float
R U N P R O C E D U R E ("sr. ;_advance2")
endProcedure
Procedure
@name = spc_advancelO
@do =
billet010.spc_min.@float = billet009.spc_min.@float
billetO 10.spc_max.@float = billet009.spc_max.@float
billet009.spc_min.@float = billet008.spc_min.@float
billet009.spc_max.@float = billet008.spc_max.@float
billet008.spc_min.@float = billet007.spc_min.@float
billet008.spc_max.@float = billet007.spc_max.@float
132
billet007.spc_min.@float = billet006.spc_min.@float
billet007.spc_max.@float = billet006.spc_max.@float
billet006.spc_min.@float = billet005.spc_min.@float
billet006.spc_max.@float = billet005.spc_max.@fioat
billet005.spc_min.@float = billet004.spc_mm.@float
billet005.spc_max.@float = billet004.spc_max.@float
billet004.spc_min.@float = billet003.spc_min.@float
billet004.spc_max.@float = billet003.spc_max.@float
billet003 .spc_min.@float = billet002.spc_min.@float
billet003. spc_max. @float = billet002.spc_max.@float
billet002.spc_min.@float = billetOOl .spc_min.@float
billet002.spc_max.@fioat = billetOOl. spc_max.@float
billetOOl .spc_min.@float = billet.min_temp.@float
billetOOl .spc_max.@float = billet.max_temp.@float
endProcedure
Procedure
@name = spc_advance2
@do =
billet090.spc_min.@float = billet089.spc_min.@float
billet090.spc_max.@float = billet089.spc_max.@float
billet089.spc_min.@float = billet088.spc_min.@float
billet089.spc_max.@float = billet088.spc_max.@float
billet088.spc_min.@float = billet087.spc_min.@float
billet088.spc_max.@float = billet087.spc_max.@float
billetO87. spcjrnin. @float = billet086.spc_min.@float
billet087.spc_max.@float = billet086.spc_max.@float
billetO 8 6. spcmin. @float = billet085.spc_min.@float
billet086.spc_max.@float = billet085.spc_max.@float
billet085.spc_min.@float = billet084.spc_min.@float
billet085.spc_max.@float = billet084.spc_max.@float
billetO 84. spc_min. @float = billet083.spc_min.@float
billet084.spc_max.@float = billet083.spc_max.@float
billet083.spc_min.@float = billet082.spc_min.@float
billet083.spc_max.@float = billet082.spc_max.@float
billet082.spc_min.@float = billet081 .spc_min.@float
billet082.spc_max.@float = billet081 .spc_max.@float
billet081 .spc_min.@float = billet080.spc_min.@float
billet081 .spc_max.@float = billet080.spc_max.@float
R U N P R O C E D U R E ("sp ;_advance3")
endProcedure
Procedure
@name = spc_advance3
@do =
133
billet080.spc_min.@float = billet079.spc_min.@float
billet080.spc_max.@float = billet079.spc_max.@float
billet079.spc_min.@float = billet078.spc_min.@float
billet079.spc_max.@float = billet078.spc_max.@float
billet078.spc_min.@float = billet077.spc_min.@float
billet078.spc_max.@float = billet077.spc_max.@float
billet077.spc_min.@float = billet076.spcjmin.@float
billet077.spc_max.@float = billet076.spc_max.@float
billet076.spc_min.@float = billet075.spc_min.@float
billet076.spc_max.@float = billet075.spc_max.@float
billet075.spc_min.@float = billet074.spc_min.@float
billet075.spc_max.@float = billet074.spc_max.@float
billet074.spc_min.@float = billet073.spc_min.@float
billet074.spc_max.@float = billet073.spc_max.@float
billet073.spc_min.@float = billet072.spc_min.@float
billet073.spc_max.@float = billet072.spc_max.@float
billet072.spc_min.@float = billet071 .spc_min.@float
billet072.spc_max.@float = billet071.spc_max.@float
billet071.spc_min.@float = billet070.spc_min.@float
billet071 .spc_max.@float = billet070.spc_max.@float
R U N P R O C E D U R E ("spc_advance4")
endProcedure
Procedure
@name = spc_advance4
@do =
billet070.spc_min.@float = billet069.spc_min.@float
billet070.spc_max.@float = billet069.spc_max.@float
billet069.spc_min.@float = billet068.spc_min.@float
billet069.spc_max.@float = billet068.spc_max.@float
billet068.spc_min.@float = billet067.spc_min.@float
billet068.spc_max.@float = billet067.spc_max.@float
billet067.spc_min.@float = billet066.spc_min.@float
billet067.spc_max.@float = billet066.spc_max.@float
billet066.spc_min.@float = billet065.spc_min.@float
billet066.spc_max.@float = billet065.spc_max.@float
billet065.spc_min.@float = billet064.spc_min.@float
billet065.spc_max.@float = billet064.spc_max.@float
billet064.spc_min.@float = billet063.spc_min.@float
billet064.spc_max.@float = billet063.spc_max.@float
billet063.spc_min.@float = billet062.spc_min.@float
billet063.spc_max.@float = billet062.spc_max.@float
billet062.spc_min.@float = billet061.spc_min.@float
billet062.spc_max.@float = billet061.spc_max.@float
billet061 .spc_min.@float = billet060.spc_min.@float
134
billet061.spc_max.@float = billet060.spc_max.@fioat
R U N P R O C E D U R E ("spc_advance5")
endProcedure
Procedure
@name = spc_advance5
@do =
billet060.spc_min.@float = billet059.spc_min.@float
billet060.spc_max.@float = billet059.spc_max.@float
billet059.spc_min.@float = billet058.spc_min.@float
billet059.spc_max.@float = billet058.spc_max.@float
billet058.spc_min.@float = billet057.spc_min.@float
billet058.spc_max.@float = billet057.spc_max.@fioat
billet057.spc_min.@float = billet056.spc_min.@float
billet057.spc_max.@float = billet056.spc_max.@fioat
billet056.spc_min.@float = billet055.spc_min.@float
billet056.spc_max.@float = billet055.spc_max.@float
billet055.spc_min.@float = billet054.spc_min.@float
billet055.spc_max.@float = billet054.spc_max.@float
billet054.spc_min.@float = billet053.spc_niin.@float
billet054.spc_max.@float = billet053.spc_max.@float
billet053.spc_min.@fioat = billet052.spc_min.@float
billet053.spc_max.@float = billet052.spc_max.@float
billet052.spc_min.@float = billet051 .spc_min.@float
billet052.spc_max.@float = billet051 .spc_max.@float
billet051 .spc_min.@float = billet050.spc_min.@float
billet051 .spc_max.@float = billet050.spc_max.@float
R U N P R O C E D U R E ("spc_advance6")
endProcedure
Procedure
@name = spc_advance6
@do =
billet050.spc_min.@float = billet049.spc_min.@float
billet050.spc_max.@float = billet049.spc_max.@float
billet049.spc_min.@float = billet048.spc_min.@float
billet049.spc_max.@float = billet048.spc_max.@float
billet048.spc_min.@float = billet047.spc_min.@float
billet048.spc_max.@float = billet047.spc_max.@float
billet047.spc_min.@float = billet046.spc_min.@float
billet047.spc_max.@float = billet046.spc_max.@float
billet046.spc_min.@float = billet045.spc_min.@float
billet046.spc_max.@float = billet045.spc_max.@float
billet045.spc_min.@float = billet044.spc_min.@float
billet045.spc_max.@float = billet044.spc_max.@float
135
billet044.spc_min.@float = billet043.spc_min.@float
billet044.spc_max.@float = billet043.spc_max.@float
billet043.spc_min.@float = billet042.spc_min.@float
billet043.spc_max.@float = billet042.spc_max.@float
billet042.spc_min.@float = billet041.spc_min.@float
billet042.spc_max.@float = billet041.spc_max.@float
billet041 .spc_min.@float = billet040.spc_min.@float
billet041 .spc_max.@float = billet040.spc_max.@float
R U N P R O C E D U R E ( spc_advance7" )
M
endProcedure
Procedure
@name = spc_advance7
@do =
billet040.spc_min.@float = billet039.spc_min.@float
billet040.spc_max.@float = billet039.spc_max.@float
billet039.spc_min.@float = billet038.spc_min.@float
billet039.spcjrnax.@float = billet038.spc_max.@float
billet038.spc_min.@float = billet037.spc_min.@float
billet038.spc_max.@float = billet037.spc_max.@float
billet037.spc_min.@float = billet036.spc_min.@float
billet037.spc_max.@float = billet036.spc_max.@float
billet036.spc_min.@float = billet035.spc_min.@float
billet036.spc_max.@float = billet035.spc_max.@float
billet035.spc_min.@float = billet034.spc_min.@float
billet035.spc_max.@float = billet034.spc_max.@float
billet034.spc_min.@float = billet033.spc_min.@float
billet034.spc_max.@float = billet033.spc_max.@float
billet033.spc_min.@float = billet032.spc_min.@float
billet033.spc_max.@float = billet032.spc_max.@float
billet032.spc_min.@float = billet031.spc_min.@float
billet032.spc_max.@float = billet031 .spc_max.@float
billet031 .spc_min.@float = billet030.spc_min.@float
billet031 .spc_max.@float = billet030.spc_max.@float
R U N P R O C E D U R E ("spc_advance8")
endProcedure
Procedure
@name = spc_advance8
@do =
billet030.spc_min.@float = billet029.spc_min.@float
billet030.spc_max.@float = billet029.spc_max.@float
billet029.spc_min.@float = billet028.spc_min.@float
billet029.spc_max.@float = billet028.spc_max.@float
billet028.spc_min.@float = billet027.spc_min.@float
136
billet028.spc_max.@float = billet027.spc_max.@float
billet027.spc_min.@float = billet026.spc_min.@float
billet027.spc_max.@float = billet026.spc_max.@float
billet026.spc_min.@float = billet025.spc_min.@float
billet026.spc_max.@float = billet025.spc_max.@float
billet025.spc_min.@float = billet024.spc_min.@float
billet025.spc_max.@float = billet024.spc_max.@float
billet024.spc_min.@float = billet023.spc_min.@float
billet024.spc_max.@float = billet023.spc_max.@float
billet023.spc_min.@float = billet022.spc_min.@float
billet023.spc_max.@float = billet022.spc_max.@float
billet022.spc_min.@float = billet021.spc_min.@float
billet022.spc_max.@float = billet021 .spc_max.@float
billet021. spc_min. @float = billet020. spc_min. @float
billet021 .spc_max.@float = billet020.spc_max.@float
RUN_PROCEDUPvE ( "spc_advance9" )
endProcedure
Procedure
@name = spc_advance9
@do =
billet020.spc_min.@float = billetOl 9.spc_min.@float
billet020.spc_max.@float = billet019.spc_max.@float
billetO 19.spc_min.@float = billetOl 8. spc_min.@float
billetOl 9.spc_max.@float = billetOl 8.spc_max.@float
billetOl 8.spc_min.@float = billet017.spc_min.@float
billetOl 8. spc_max.@float = billet017.spc_max.@float
billetO 17.spc_min.@float = billetO 16.spc_min.@float
billet017.spc_max.@float = billetOl 6.spc_max.@float
billet016.spc_min.@float = billetOl 5.spc_min.@float
billet016.spc_max.@float = billetOl 5. spc_max.@float
billetOl 5. spc_min.@float = billetOl 4.spc_min.@float
billetOl 5.spc_max.@float = billetOl 4.spc_max.@float
billetOl 4.spc_min.@float = billetOl 3.spc_min.@float
billetOl 4. spc_max.@float = billet013.spc_max.@float
billetOl 3.spc_min.@float = billetO 12.spc_min.@float
billetOl 3. spc_max.@float = billet012.spc_max.@float
billet012.spc_min.@float = billetOl 1 .spc_min.@float
billet012.spc_max.@float = billetOl 1 .spc_max.@float
billetO 11 .spc_min.@float = billetO 10.spc_min.@float
billetOl l.spc_max.@float = billetOl O.spc_max.@float
R U N P R O C E D U R E ("spc_advancelO")
endProcedure
Procedure
137
@name = write_file_billetid
@do
ACTIVATE ("_date a current.to_mill.@f billetid.dat" )
A C T I V A T E ("_kwt a current.rejected.@f billetid.dat" )
A C T I V A T E ("_kwt a current.heat.@s billetid.dat" )
billet.true_zerosl .@float = POW (10, ( 6 - CEIL (LOG10 (billet.true_age.@float +1
) ) ) ) * billet.true_agel.@float
A C T I V A T E ("_kwt a billet.true_zerosl.@f billetid.dat")
A C T I V A T E ("_cr_nc a billet.true_age.@f billetid.dat")
SLEEP(1 )
endProcedure
Rule
@name = a_initialize_KWTs
IF system.init.flag is T R U E
E L S E A C T I V A T E ( "_time" )
E L S E week.day_buff.@float = week.day.@float
E L S E system.init.flag is T R U E
E L S E billet.age.@float =100
E L S E show.current.@string is "ready"
E L S E idle.cyclical.@float = 1.000000
E L S E idle.file_store.@float = 2
E L S E idle.store_temp.@float = 1
E L S E idle.weekday_temp.@float = 1
E L S E idle.store_interval.@float = 30
E L S E idle.weekday_interval.@float = 60
E L SE detect 1. continue. @float = 0
E L S E hmd.reject_buff.@float - 0
E L S E current.remain.@float = 0
E L S E current.to_mill.@float = 0
E L S E current.rejected.@float = 0
ELSE ACTIVATE ( "abssec" )
E L S E R U N P R O C E D U R E (" i n i t i a l i z e ^ WTs")
endRule
Rule
@name = billet_max_temp_alarm
IF billet.max_temp.@float > billet.top_temp.@float
OR billetbuf.diff.@float > advise.max_diff.@float
T H E N alarm.max_temp.@float = 5
E L S E alarm.max_temp.@float = 0.500000
endRule
Rule
@name = billet_max_temp_beeps
138
IF billet.max_temp.@float > billet.top_temp.@float
A N D A G E (billet.max_temp.@float ) < 6
T H E N A C T I V A T E ("beep")
T H E N A C T I V A T E ("beep")
T H E N A C T I V A T E ("beep")
endRule
Rule
@name = delay_time_calc
IF T
T H E N delay.time.@float = ((billet.age.@float + 5 ) / 60 )
T H E N delay.time_min.@float = ( CEIL (delay.time.@float ) - 1 )
T H E N delay.time_sec.@float = CEIL ( ( delay.time.@float - delay.time_min.@float )
* 60 - 0.900000 ) - 1
T H E N delay.time_tens.@float = ( CEIL ( ( delay.time_sec.@float + 1 ) / 10 ) - 1 )
T H E N delay.time_ones.@float = ( delay.time_sec.@float + 1 - (
delay.time_tens.@float * 10 ) ) - 1
T H E N delay.time_minx.@float = CEIL ( ( delay.time_min.@float + 1 ) / 100 ) - 1
T H E N delay.time_miny.@float = CEIL ( ( ( delay.time_min.@float + 1 ) - (
delay.time_minx.@float * 100 ) ) /10 ) - 1
T H E N delay.time_minz.@float = delay.time_min.@float - delay.time_minx.@float *
100 - delay.time_miny.@float * 10
endRule
Rule
@name = Detec t_delay
IF billet.age.@float >= (delay.average.@float * delay.factor.@float )
T H E N show.current.@string is " * * * * D E L A Y * * * * * "
T H E N delay.button.@float = delay.button.@float * ( -1 )
E L S E delay.button.@float =-10
endRule
Rule
@name = detect_new_billet
IF billet.true_buff.@float != billet.true_age.@float
T H E N billet.true_diff.@float = billet.true_age.@float - billet.true_buff.@float
T H E N billet.true_buff.@float = billet.true_age.@float
T H E N SLEEP (idle.cyclical.@float )
T H E N billet.new.@float = 1
T H E N billet.min_temp.@float = ( ( ( billet.min_templ .@float +
billet.min_temp2.@float - A B S ( billet.min_templ.@float - billet.min_temp2.@float
)))/2)
T H E N GOTO ("detect_new_billet_continuedO")
E L S E billet.age.@float = A G E (billet.true_age.@float )
E L S E billetbuf.max_temp.@float = billet.max_temp.@float
139
E L S E billetbuf.min_temp2.@float = billet.min_temp2.@float
E L S E billetbuf.min_templ.@float = billet.min_templ.@float
E L S E billetbuf.diff.@float = billet.max_temp.@float - billet.min_temp.@float
E L S E delaybuf.time_min.@float = delay.time_min.@float
E L S E delaybuf.time_tens.@float = delay.time_tens.@float
E L S E delaybuf.time_ones.@float = delay.time_ones.@float
E L S E billet.true_buff.@float = billet.true_age.@float
E L S E SLEEP (idle.cyclical.@float )
endRule
Rule
@name = detect_new_billet_continuedO
IF billet.new.@float == 1
T H E N billetd.min_temp2.@float = billetc.min_temp2.@float
T H E N billetc.min_temp2.@float = billetb.min_temp2.@float
T H E N billetb.mm_temp2.@float = billeta.min_temp2.@float
T H E N billeta.min_temp2.@float = billetbuf.min_temp2.@float
T H E N billetd.mintemp 1 .@float = billetc.mintemp 1 .@float
T H E N billetc.min_temp 1 .@float = billetb.min_temp 1 .@float
T H E N billetb.min_temp 1 .@float = billeta.min_temp 1 .@float
T H E N billeta.mintempl .@float = billetbuf.mintempl .@float
T H E N billet.age.@float = A G E ( billet.true_age.@float )
T H E N GOTO ( "detect_new_billet_continuedl" )
endRule
Rule
@name = detect_new_billet_continuedl
IF billet.new.@float = 1
T H E N billetd.max_temp.@float = billetc.max_temp.@float
T H E N billetc.max_temp.@float = billetb.max_temp.@float
T H E N billetb.max_temp.@float = billeta.max_temp.@float
T H E N billeta.max_temp.@float = billetbuf.max_temp.@float
T H E N billetd.diff.@float = billetc.diff.@float
T H E N billetc.diff.@float = billetb.diff.@float
T H E N billetb.diff.@float = billeta.diff.@float
T H E N billeta.diff.@float = billetbuf.diff.@float
T H E N delayd.time_min.@float = delayc.time_min.@float
T H E N delayc.time_min.@float = delayb.time_min.@float
T H E N delayb.time_min.@float = delaya.time_min.@float
T H E N delaya.time_min.@float = delayz.time_min.@float
T H E N delayz.time_min.@float = FLOOR (billet.trae_diff.@float / 60 )
T H E N delayd.time_tens.@float = delayc.time_tens.@float
T H E N delayc.time_tens.@float = delayb.time_tens.@float
T H E N delayb.time_tens.@float = delaya.time_tens.@float
T H E N delaya.time_tens.@float = delayz.time_tens.@float
140
T H E N billet.true_sec.@float = billet.true_diff.@float - ( delayz.time_min.@float * 60
)
T H E N delayz.time_tens.@float = F L O O R ( billet.true_sec.@float /10)
T H E N GOTO ( "detectjnew_billet_continued2")
endRule
Rule
@name = detect_new_billet_continued2
IF billet.new.@float == 1
T H E N delayd.time_ones.@float = delayc.time_ones.@float
T H E N delayc.time_ones.@float = delayb.time_ones.@float
T H E N delayb.time_ones.@float = delaya.time_ones.@float
T H E N delaya.time_ones.@float = delayz.time_ones.@float
T H E N delayz.time_ones.@float = billet.true_sec.@float - ( delayz.time_tens.@float *
10)
T H E N billet.position.@float = 3
T H E N GOTO ("Display_new_billet")
endRule
Rule
@name = Display_messageready
IF A G E ( show.age.@float ) > 8
T H E N show.current.@string is "Ready "
T H E N show.age.@float = 2
endRule
Rule
@name = Display_new_billet
IF billet.new.@float == 1
T H E N show.current.@string is "New Billet
T H E N show.age.@float = 1
T H E N billet.new.@float =0
T H E N R U N P R O C E D U R E ("spcadvancel")
endRule
Rule
@name = Displayjpicture_clear
IF A G E ( show.age.@float )>10
T H E N billet.position.@float =10
endRule
Rule
@name = expert_delay_l_l
IF delay.estimate.@float = 1
A N D billet.age.@float >= advise.delay_grpl_start.@float
141
A N D billet.age.@float <= advise.delay_grpl_end.@float
T H E N ad vise, expert l.@string = advise.delay l_l.@string
endRule
Rule
@name = expert_delay_l_2
IF delay.estimate.@float == 1
A N D billet.age.@float >= advise.delay_grp2_start.@float
A N D billet.age.@float <= advise.delay_grp2_end.@float
T H E N advise.expertl .@string = advise.delay 12.@string
endRule
Rule
@name = expert_delay_l_3
IF delay.estimate.@float == 1
A N D billet.age.@float >= advise.delay_grp3_start.@float
A N D billet.age.@float <= advise.delay_grp3_end.@float
T H E N advise.expertl.@string = advise.delayl_3.@string
endRule
Rule
@name = expert_delay_2_l
IF delay.estimate.@float == 2
A N D billet.age.@float >= advise.delay_grpl_start.@float
A N D billet.age.@float <= advise.delay_grpl_end.@float
T H E N advise.expertl.@string = advise.delay21.@string
endRule
Rule
@name = expert_delay_2_2
IF delay.estimate.@float == 2
A N D billet.age.@float >= advise.delay_grp2_start.@float
A N D billet.age.@float <= advise.delay_grp2_end.@float
T H E N advise.expertl.@string = advise.delay2_2.@string
endRule
Rule
@name = expert_delay_2_3
IF delay .estimate. @float == 2
A N D billet.age.@float >= advise.delay_grp3_start.@float
A N D billet.age.@float <= advise.delay_grp3_end.@float
T H E N advise.expertl.@string = advise.delay2_3.@string
endRule
Rule
142
@name = expert_delay_3_l
IF delay.estimate.@float = 3
A N D billet.age.@float >= advise.delay_grpl_start.@float
A N D billet.age.@float <= advise.delay_grpl_end.@float
T H E N advise.expertl.@string = advise.delay3_1 .@string
endRule
Rule
@name = expert_delay_3_2
IF delay.estimate.@float == 3
A N D billet.age.@float >= advise.delay_grp2_start.@float
A N D billet.age.@float <= advise.delay_grp2_end.@float
T H E N advise.expertl.@string = advise.delay3_2.@string
endRule
Rule
@name = expert_delay_3_3
IF delay.estimate.@float == 3
A N D billet.age.@float >= advise.delay_grp3_start.@float
A N D billet.age.@float <= advise.delay_grp3_end.@float
T H E N advise.expertl.@string = advise.delay3_3.@string
endRule
Rule
@name = expert_delay_long
IF billet.age.@float >= advise.delay_grp3_end.@float
T H E N advise.expertl.@string = advise.delay_long.@string
endRule
Rule
@name = hmdl_signal_cycle_checkl
IF hmdl.signal_l.@float ==1
A N D hmdl.signal_2.@float ==1
A N D hmdl.signal_3.@float ==1
T H E N hmdl.sig.@float =1
endRule
Rule
@name = hmdl_signal_cycle_check2
IF hmdl.signal_l.@float = 2
A N D hmdl.signal_2.@float =2
A N D hmdl.signal_3.@float ==2
T H E N hmdl .sig.@float =2
endRule
143
Rule
@name = hmd2_signal_cycle_checkl
IF hrnd2.signal_l.@float ==1
A N D hrnd2.signal_2.@float = 1
A N D hmd2.signal_3.@float == 1
T H E N hmd2.sig.@float =1
endRule
Rule
@name = hmd2_signal_cycle_check2
IF hmd2.signal_l.@float ==2
A N D hmd2.signal_2.@float ==2
A N D hmd2.signal_3.@float ==2
T H E N hmd2.sig.@float =2
endRule
Rule
@name = hmd_billet_rejected
IF hmd.reject_buff.@float > 1.100000
T H E N current.rejected.@float = current.rejected.@float + 1
T H E N current.remain.@float = current.remain.@float - 1
T H E N hmd.reject_buff.@float = hmd.reject_buff.@float - 1
T H E N show.current.@string is "Billet Rejected "
T H E N R U N P R O C E D U R E ("write_file_billetid" )
endRule
Rule
@name = hmd_double_billet_drop
IF hmd.reject_buff.@float <(-0.100000)
T H E N hmd.reject_buff.@float = 0
T H E N show.current.@string is "Double Drop "
T H E N show.age.@float = 5
endRule
Rule
@name = hmd_signal_cycle
IF T
T H E N hmdl.signal_4.@float = hmdl.signal_3.@float
T H E N hmdl.signal_3.@float = hmdl.signal_2.@float
T H E N hmdl.signal_2.@float = hmdl .signal_l .@float
T H E N hmdl .signal_l .@float = hmdl. signal. @float
T H E N hmd2.signal_4.@float = hmd2. signal_3. @float
T H E N hmd2.signal_3.@float = hmd2.signal_2.@float
T H E N hmd2.signal_2.@float = hmd2.signal_l .@float
T H E N hmd2.signal_l.@float = hmd2.signal.@float
144
endRule
Rule
@name = hmd_tune_factor_adjustment
IF hmdl.factor.@float <hmd2.factor.@float
T H E N hmdl.factor.@float = hmd2.factor.@float
endRule
Rule
@name = hmda2_billet_from_furnace
IF hmd2.signal_buff.@float != hmd2.sig.@float
T H E N hmd2.signal_buff.@float = hmd2.sig.@float
T H E N show.current.@string is "Billet at descaler "
T H E N hmd.reject_buff.@float = hmd.reject_buff.@float +1
T H E N billet.position.@float = 1
T H E N show.age.@float = 5
endRule
Rule
@name = hmdbl_billet_advance_to_mill
IF hmdl.sig.@float != hmdl.signal_buff.@float
T H E N hmdl .signal_buff.@float = hmdl .sig.@float
T H E N show.current.@string is "Billet at 1st Stand "
T H E N current.remain.@float = current.remain.@float - 1
T H E N current.to_mill.@float = current.to_mill.@float + 1
T H E N hmd.reject_buff.@float = hmd.reject_buff.@float -1
T H E N billet.position.@float = 4
T H E N R U N P R O C E D U R E ("write_file_billetid" )
endRule
Rule
@name = Load_basic_operating_practice
IF heat.load_flag.@float = 1
A N D current.remain.@float != 0
T H E N heat.load_flag.@float = 0
T H E N A C T I V A T E ( "/D/put_data 1")
endRule
Rule
@name = manual_reject_from_heater
IF current.odd_reject.@float == 1
T H E N current.remain.@float = current.remain.@float - 1
T H E N current.rejected.@float = current.rejected.@float + 1
T H E N current.odd_reject.@float = 0
T H E N show.current.@string = "Manual Reject"
145
T H E N show.age.@float = 3
T H E N R U N P R O C E D U R E ("write_file_billetid")
endRule
Rule
@name = Next_heat
IF current.remain.@float < 0.500000
T H E N current.remain. @float = batch.total 1. @float
T H E N batch.total 1 .@float = batch.total2.@float
T H E N batch.total2.@float = batch.total3.@fioat
T H E N batch.total3.@float = batch.total4.@float
T H E N batch.total4.@float = batch.total5.@float
T H E N batch.total5.@float = 0
T H E N current.rejected.@float = 0
T H E N current.to_mill.@float = 0
T H E N hmd.reject_buff.@float = 0
T H E N current.group.@float = batch.groupl .@float
T H E N batch.groupl .@float = batch.group2.@float
T H E N batch.group2.@float = batch.group3 .@float
T H E N batch.group3 .@float = batch.group4.@float
T H E N batch.group4.@float = 1
T H E N R U N P R O C E D U R E ( "nextheat" )
endRule
Rule
@name = running_average
IF T
T H E N billet.gapa.@float = delaya.time_ones.@float + (delaya.time_tens.@float * 10
) + ( delaya.time_min.@float * 60 )
T H E N billet.gapb.@float = delayb.time_ones.@float + ( delayb.time_tens.@float *
10) + ( delayb.time_min.@float * 60 )
T H E N billet.gapc.@float = delayc.time_ones.@float + ( delayc.time_tens.@float * 10
) + ( delayc.time_min.@float * 60 )
T H E N billet.gapd.@float = delayd.time_ones.@float + ( delayd.time_tens.@float *
10 ) + ( delayd.time_min.@float * 60 )
T H E N billet.running_average.@float = (billet.gapa.@float + billet.gapb.@float +
billet.gapc.@float + billet.gapd.@float ) / 4
endRule
Rule
@name = running_average_assignment
IF billet.running_average.@float < ( delay.default.@float * delay.factor.@float )
A N D billet.running_average.@float > 25
T H E N delay.average.@float = billet.running_average.@float
E L S E delay.average.@float = delay.default.@float
146
endRule
Rule
@name = select_group_2
IF heat.select.@float = 2
A N D heat.select_flag.@float == 1
T H E N batch.groupl .@float = heat.tag.@float
T H E N heat.select_flag.@float = 0
endRule
Rule
@name = select_group_3
IF heat, select. @float = 3
A N D heat.select_flag.@float == 1
T H E N batch.group2.@float = heat.tag.@float
T H E N heat.select_flag.@float = 0
endRule
Rule
@name = select_group_4
IF heat.select.@float == 4
A N D heat.select_flag.@float == 1
T H E N batch.group3.@float = heat.tag.@float
T H E N heat.select_flag.@float = 0
endRule
Rule
@name = select_group_5
IF heat.select.@float == 5
A N D heat.select_flag.@float = 1
T H E N batch.group4.@float = heat.tag.@float
T H E N heat.select_flag.@float = 0
endRule
Rule
@name = selectgroupcurrent
IF heat.select.@float == 1
A N D heat.select_flag.@float == 1
T H E N current.group.@float = heat.tag.@float
T H E N heat.select_flag.@float == 0
T H E N A C T I V A T E ( 7D/put_data 1")
endRule
Rule
@name = select_group_max_2
147
IF batch.groupl.@float >data.max_sets.@float
THENbatch.groupl.@float =1
endRule
Rule
@name = select_group_max_3
IF batch.group2.@float > data.max_sets.@float
T H E N batch.group2.@float = 1
endRule
Rule
@name = select_group_max_4
IF batch.group3.@float > data.max_sets.@float
THENbatch.group3.@float =1
endRule
Rule
@name = select_group_max_5
IF batch.group4.@float > data.max_sets.@float
T H E N batch.group4.@float = 1
endRule
Rule
@name = select_group_max_current
IF current.group.@fIoat > data.max_sets.@float
T H E N current.group.@float = 1
endRule
Rule
@name = select_group_max_tag
IF heat.tag.@float > data.max_sets.@float
T H E N heat.tag.@float =1
endRule
Rule
@name = temp_zones_store_to_file
IF A G E (idle.store_temp.@float ) > idle.store_interval.@float
A N D charge_zone.temp_buff.@float > 0
A N D heat_zone.temp_buff.@float > 0
A N D soak_zone.temp_buff.@float > 0
A N D charge_zone.gas.@float > (-1 )
A N D heat_zone.gas.@float > (-1 )
A N D soak_zone.gas.@float > (-1 )
A N D charge_zone.air.@float > ( - l )
A N D heat_zone.air.@float > (-1 )
148
A N D soak_zone.air.@float > (-1 )
T H E N idle.store_temp.@float = 0
T H E N idle.store_temp.@float = 1
T H E N A C T I V A T E ("_date a charge_zone.temp_buff.@f zones.temp")
T H E N A C T I V A T E ("_kwt a heat_zone.temp_buff.@f zones.temp" )
T H E N A C T I V A T E ("_kwt a soak_zone.temp_buff.@f zones.temp")
T H E N A C T I V A T E ( "_kwt a charge.set_buff.@f zones.temp")
T H E N A C T I V A T E ("_kwt a heat.set_buff.@f zones.temp")
T H E N A C T I V A T E ( "_kwt a soak.set_buff.@f zones.temp")
T H E N A C T I V A T E ( "_kwt a charge_zone.gas.@f zones.temp" )
T H E N A C T I V A T E ( "_kwt a heat_zone.gas.@f zones.temp")
T H E N A C T I V A T E ( "_kwt a soak_zone.gas.@f zones.temp" )
T H E N A C T I V A T E ( "_kwt a charge_zone.air.@f zones.temp" )
T H E N A C T I V A T E ( "_kwt a heat_zone.air.@f zones.temp")
T H E N A C T I V A T E ( "_kwt a soak_zone.air.@f zones.temp" )
T H E N A C T I V A T E ( "_cr a furnace.pressure.@f zones.temp" )
T H E N SLEEP ( 1 )
E L S E R U N P R O C E D U R E ( "furnace_data_buffer" )
endRule
Rule
@name = temp_zones_store_to_file_20sec
IF A G E ( idle.store_temp.@float ) > (idle.store_interval.@float + 20 )
T H E N idle.store_temp.@float = 0
T H E N idle.store_temp.@float = 1
T H E N A C T I V A T E ( "_date a charge_zone.temp_buff.@f zones.temp")
T H E N A C T I V A T E ( "_kwt a heat_zone.temp_buff.@f zones.temp" )
T H E N A C T I V A T E ("_kwt a soak_zone.temp_buff.@f zones.temp")
T H E N A C T I V A T E ( "_kwt a charge.set_buff.@f zones.temp" )
T H E N A C T I V A T E ("_kwt a heat.set_buff.@f zones.temp")
T H E N A C T I V A T E ("_kwt a soak.set_buff.@f zones.temp")
T H E N A C T I V A T E ("_kwt a charge_zone.gas.@f zones.temp")
T H E N A C T I V A T E ( "_kwt a heat_zone.gas.@f zones.temp")
T H E N A C T I V A T E ( "_kwt a soak_zone.gas.@f zones.temp")
T H E N A C T I V A T E ( "_kwt a charge_zone.air.@f zones.temp" )
T H E N A C T I V A T E ("_kwt a heat_zone.air.@f zones.temp")
T H E N A C T I V A T E ("_kwt a soak_zone.air.@f zones.temp")
T H E N A C T I V A T E ( "_cr a furnace.pressure.@f zones.temp" )
T H E N SLEEP (1 )
E L S E R U N P R O C E D U R E ("furnace_data_buffer" )
endRule
Rule
@name = weekdayjfriday
IF week.day_buff.@float != week.day.@float
149
A N D week.day_buff.@float == 5
T H E N week.day_buff.@float = week.day.@float
T H E N A C T I V A T E ("friday.bat" )
endRule
Rule
@name = weekdaymonday
IF week.day_buff.@float != weekday.@float
A N D week.day_buff.@float = 1
T H E N week.day_buff.@float = week.day.@float
T H E N A C T I V A T E ("monday.bat")
endRule
Rule
@name = weekday_saturday
IF week.day_buff.@float != weekday.@float
A N D week.day_buff.@float ==6
T H E N week.day_buff.@float = week.day.@float
T H E N A C T I V A T E ( "saturday.bat" )
endRule
Rule
@name = weekday_sunday
IF week.day_buff.@float != week.day.@float
A N D week.day_buff.@float == 7
T H E N week.day_buff.@float = week.day.@float
T H E N A C T I V A T E ("sunday.bat")
endRule
Rule
@name = weekday_test
IF A G E ( idle.weekday_temp.@float ) > idle.weekday_interval.@float
T H E N idle.weekday_temp.@float = 0
T H E N idle.weekday_temp.@float = 1
THEN ACTIVATE ("Jime")
endRule
Rule
@name = weekday_thursday
IF week.day_buff.@float != week.day.@float
A N D week.day_buff.@float ==4
T H E N week.day_buff.@float = week.day.@float
T H E N A C T I V A T E ("thursday.bat" )
endRule
150
Rule
@name = weekday_tuesday
IF week.day_buff.@float != week.day.@float
A N D week.day_buff.@float = 2
T H E N week.day_buff.@float = week.day.@float
T H E N A C T I V A T E ("tuesday.bat")
endRule
Rule
@name = weekday_wednesday
IF week.day_buff.@float != week.day.@float
A N D week.day_buff.@float = 3
T H E N week.day_buff.@float = week.day.@float
T H E N A C T I V A T E ("wednesday.bat")
endRule
151
APPENDIX H Raw and Processed Data from 6 Operating Weeks
The operating gap times o f billets produced over a 6 week period is illustrated i n
Figure A - 4 to Figure A - 1 0 Billet Release Gap Times
. These figures contain 4000 recorded billet scans per plot and consecutively
represents 32,000 billets processed over the 6 weeks. The bulk o f the billets were
processed within normal parameters as represented by the baseline blocks on the bottom
o f the plots. Changes in the baseline block height represents changes in the target billet
processing time due to a change i n production. The Individual spikes over the baseline
represent the individual delays in the billet scans.
Some individual products were chosen from this plot to examine the delays under
specific conditions. Three processing plots were removed from this data set and analyzed
for delay duration and frequency. Three individual products were chosen based on
differing target billet release times o f 40, 50 and 100 seconds. For Each o f these products
three plots were assembled.
1. Direct bar chart o f the frequencies o f the individual release times. See Figure A - 12,
Figure A - 15 and Figure A - 18.
2. Modified bar chart which grouped the release frequencies into ranges o f release times.
See Figure A - 12 Billet Release Profile - 40 second target
3. , Figure A - 15 Billet Release Profile - 50 second target
4. and Figure A - 18 Billet Release Profile - 100 second target
5. .
6. Magnified bar chart with the baseline removed to show the non-conforming release
times. See Figure A - 13 Modified Billet Release Profile - 40 second target
7. , Figure A - 17 and Figure A - 19 Modified Billet Release Profile - 100 second target
8. .
From these plots, the most frequent delay durations can be extracted along with
operational data and operator control regimes. This data can be provided to the
mathematical modeling experts with the intent o f generating new knowledge.
152
series 1-4000
200 •
CO — - < £ > — - CD —-
CN m r-- o CM m
T- CM co m to —- CN CO LT) CO h-
billet release
series 4000-8000
.1 100
billet release
153
series 8000-12000
200
150
50
billet release
series 12000-16000
billet release
154
series 16000-20000
200
150.-
e 100 -
I
ir iiiii|i|iiwiniiinpi
a
in en co i - m a i n s r i f l u i n N r - m o i n r * - i - i o a ) f O r — i - m c n
N O l N ' f N m r y T r i r i
to CO T- CO <D CO oo cn T- C M
C M O J C N C N C N C M C N C N C O C O C O
co
billet release
series 20000-24000
.§ 100
m o co r - tn CD co
o CN in r»
— • CO CD
C N C N C N t O J C N l C N C N C N C O C O C O C O C O C O C O C O
billet release
155
series 24000-28000
billet release
series 28000-32000
j .
1 111
"I llll!i n n nm
| J 1
I i n III H i l l
1
II If
nil
I
'inn imiiriII i i min
LT•> CO r- —- ) r- m cn rj) c0 r- u ~) 01
2233
m
1613
1985
2853
2109
O.
2977
—
2605
2357
2729
3101
1737
1861
2481
C•J ^ r- O) CM •a- ID ai —- CD CO CN T r- u. CM - CO
- CSI co T CD r-- co o) CM co —- CN to •< r m c0 o
CO CO c CO co p1 CO
0
billet release
156
Figure A - 12 Billet Release Profile - 40 second target
4000
2500
1500
1000
I I I I [ I I I
T- T- 7- CM
157
200
i<;n
158
1200
400
3000
2500
§
i!
2000
1000
1
•
1
•5
1
500 3
$
i
0
o
f
o m L o m m o o o o o o o o o o o o o o o o o o o o o o o o
T - c M c o - ' j - i n f ^ o J O C N ^ r i o c o o ^ r o o i n m o o o o o o o o o o o o
^ x - t - T - T - C N I C N C S I C O ' ^ - C D C O O ' ^ J - C O ^ - C N O C O O O O
gap time (s) t-i-x-CNJCO'^-'^-tDCOO
159
100
75
50
C M C ^ C M ( 0 - * ( D < O O T T C O ^ - C M O C O O O O
T - T - T - C S J C O ^ t ^ f C O O O O
160
350
300
250
150
100
50
n
JL, - f l c . . . " k "! "If
L
o o L O L o m m o o o o o o o o o o o o o o o o o o o o o o o o
T - c M c o ^ r u i t ^ c n o c N ' ^ - c D c o o ^ r c o i o i n o o o o o o o o o o o o
T - ^ T - ^ T - C N C S I C N J C O T T C D O D O ^ C O ^ C N O C O O O O
— - — - — - C N C O T ^ T t D C O O
gap time (s)
161
1800
1600
1400
1200
>• 1000
c
cr
600
200
162