INTRODUCTION
Temperature control is widely used in various processes. These
processes, no matter it is a process of large industrial plant,
or a process in home appliance, share several unfavorable
features such as non-linearness, interference, dead time, and
external disturbance, etc. Conventional control approaches
usually cannot achieve satisfactory results for this kind of
processes.
The following example is third in series using fuzzy logic to
control temperature. By using pressure as an input variable, we
develop a sophisticated temperature controller. This example is
developed with FIDE, an integrated fuzzy system development
environment from Aptronix.
FUZZY TEMPERATURE CONTROLLER FOR REACTOR
A film manufacture equipment is shown in Figure 1. Gas in a
reactor is drained out and a little argon gas is input. Imposing
high frequency voltage, electricity would be discharged between
the electrode and the base. Dissociated argon ions crash onto the
target and make atoms split out so that a film will be generated
on the base. Because base temperature is critical in the process
of film generation, temperature control becomes very important.
Figure 1 shows the system diagram of a fuzzy temperature
controller used in this kind of reactor. Inputs to the controller
are desired base temperature, measured base temperature, measured
pressure in the reactor. Pressure is used because it has a large
influence on base temperature to be controlled. High pressure
results in high temperature. Output signals of the controller
adjust the heater and the electromagnetic valve for the cooling
water in the reactor.
Figure 2 shows the fuzzy controller that has three input
variables and two output variables. Inputs can be prepared from
feedback signals from sensors. The first input variable is the
difference between desired temperature and measured temperature,
the second input variable is the variation between current temperature
difference and previous temperature difference, the third
input variable is current pressure p. Two output variables
are control signals to hte heater and the cooling valve.
Advantages of Fuzzy Controller
A conventional single loop control system adjusts controlled
output temperature only by the feedback signal from a temperature
sensor. Pressure changes in the reactor are regarded as noises to
this system. To design a conventional controller for this kind of
system is difficult and time consuming. However, using a fuzzy
controller, we can deal with this problem simply by taking
factors(such as pressure), which have influence on the output,
into account when designing the controller. To create a fuzzy
controller for the above system, what we need to do is to
write rules that contain not only temperature but also
pressure in their antecedents. This design process is much
easier compared with that of conventional controllers
because we can write rules using commonsense knowledge and
know-how from experts. Rules are English like sentences and
intuitive. No mathematical model of the process is needed
as in the case of conventional control.
Using FIDE to Design a Fuzzy Controller
FIDE is a product of Aptronix(see attached company information at
the end of this note) which provides powerful integrated
development environment for fuzzy logic based systems.
The process of designing a fuzzy controller can be summarized as:
Define input/output variables. This process includes definition
of labels and membership functions for each variable.
Create rules that are represented as if-then English like sentences.
Simulate and tune.
The input/output variables are given in Figure 2. In the
following, we give definitions of labels and membership
functions for each variable and then provide the rules for the
controller in a FIU (Fuzzy Inference Unit) source code.
Definitions of Input/Output Variables
Labels and membership functions of input variables are defined in
Figure 3 and Figure 4. Those of output variables are in Figure 5.
For membership functions whose shapes are simple, such as
triangles, they are easy to be defined in a FIU source code. For
example, for label P_Large in Figure 3, the definition can be
written as (@0.6, 0, @1.0, 1), and for label Zero, the definition
can be written as (@-0.3, 0, @0.0, 1, @0.3, 0), and so on. For
more details on the definition of membership functions, please
see Fide User's Manual and Reference Manual.
Note that all values of variables here are normalized into the
range of [-1,1] or [0,1].
Figure 3 Labels and Membership Functions of Input Variables
Error and Var_Error
Figure 4 Labels and Membership Functions of Input Variable
Pressure
Figure 5 Labels and Membership Functions of Output Variables
Var_Heater and Var_Cooling
FIU Source Code
$ FILENAME: temp/temp3.fil
$ DATE: 09/18/1992
$ UPDATE: 09/23/1992
$ Temperature Controller : Three inputs, two outputs
$ INPUT(S): Error, Var(iationOf)_Error, Pressure
$ OUTPUT(S): Var(iationOf)_Heater, Var(iationOf)_Cooling(Valve)
$ FIU HEADER
fiu tvfi (min max) *8;
$ DEFINITION OF INPUT VARIABLE(S)
invar Error " " : -1.0 () 1.0 [
P_Large (@0.6, 0, @1.0, 1),
P_Medium (@0.3, 0, @0.6, 1, @1.0, 0),
P_Small (@0.0, 0, @0.3, 1, @0.6, 0),
Zero (@-0.3, 0, @0.0, 1, @0.3, 0),
N_Small (@-0.6, 0, @-0.3, 1, @0.0, 0),
N_Medium (@-1.0, 0, @-0.6, 1, @-0.3, 0),
N_Large (@-1.0, 1, @-0.6, 0)
];
invar Var_Error " " : -1.0 () 1.0 [
P_Large (@0.6, 0, @1.0, 1),
P_Medium (@0.3, 0, @0.6, 1, @1.0, 0),
P_Small (@0.0, 0, @0.3, 1, @0.6, 0),
Zero (@-0.3, 0, @0.0, 1, @0.3, 0),
N_Small (@-0.6, 0, @-0.3, 1, @0.0, 0),
N_Medium (@-1.0, 0, @-0.6, 1, @-0.3, 0),
N_Large (@-1.0, 1, @-0.6, 0)
];
invar Pressure " " : 0.0 () 1.0 [
Large (@0.5, 0, @1.0, 1),
Medium (@0.0, 0, @0.5, 1, @1.0, 0),
Small (@0.0, 1, @0.5, 0)
];
$ DEFINITION OF OUTPUT VARIABLE(S)
outvar Var_Heater " " : -1.0 () 1.0 * (
P_Large = 0.8,
P_Medium = 0.4,
P_Small = 0.2,
Zero = 0.0,
N_Small = -0.2,
N_Medium = -0.4,
N_Large = -0.8
);
outvar Var_Cooling " " : -1.0 () 1.0 * (
P_Large = 0.8,
P_Medium = 0.4,
P_Small = 0.2,
Zero = 0.0,
N_Small = -0.2,
N_Medium = -0.4,
N_Large = -0.8
);
$ RULES
if Error is P_Large and Var_Error is N_Large and Pressure is Large
then Var_Heater is Zero;
if Error is P_Large and Var_Error is N_Large and Pressure is Large
then Var_Cooling is N_Small;
if Error is P_Large and Var_Error is N_Medium and Pressure is Large
then Var_Heater is P_Small;
if Error is P_Large and Var_Error is N_Medium and Pressure is Large
then Var_Cooling is N_Medium;
if Error is P_Large and Var_Error is N_Small and Pressure is Large
then Var_Heater is P_Medium;
if Error is P_Large and Var_Error is N_Small and Pressure is Large
then Var_Cooling is N_Large;
if Error is P_Large and Var_Error is N_Large and Pressure is Medium
then Var_Heater is P_Small;
if Error is P_Large and Var_Error is N_Large and Pressure is Medium
then Var_Cooling is N_Small;
if Error is P_Large and Var_Error is N_Medium and Pressure is Medium
then Var_Heater is P_Medium;
if Error is P_Large and Var_Error is N_Medium and Pressure is Medium
then Var_Cooling is N_Medium;
if Error is P_Large and Var_Error is N_Small and Pressure is Medium
then Var_Heater is P_Large;
if Error is P_Large and Var_Error is N_Small and Pressure is Medium
then Var_Cooling is N_Large;
if Error is P_Large and Var_Error is N_Large and Pressure is Small
then Var_Heater is P_Medium;
if Error is P_Large and Var_Error is N_Large and Pressure is Small
then Var_Cooling is N_Small;
if Error is P_Large and Var_Error is N_Medium and Pressure is Small
then Var_Heater is P_Large;
if Error is P_Large and Var_Error is N_Medium and Pressure is Small
then Var_Cooling is N_Medium;
if Error is P_Large and Var_Error is N_Small and Pressure is Small
then Var_Heater is P_Large;
if Error is P_Large and Var_Error is N_Small and Pressure is Small
then Var_Cooling is N_Large;
if Error is P_Medium and Var_Error is N_Large and Pressure is Large
then Var_Heater is N_Small;
if Error is P_Medium and Var_Error is N_Large and Pressure is Large
then Var_Cooling is Zero;
if Error is P_Medium and Var_Error is N_Medium and Pressure is Large
then Var_Heater is Zero;
if Error is P_Medium and Var_Error is N_Medium and Pressure is Large
then Var_Cooling is Zero;
if Error is P_Medium and Var_Error is N_Small and Pressure is Large
then Var_Heater is P_Small;
if Error is P_Medium and Var_Error is N_Small and Pressure is Large
then Var_Cooling is N_Medium;
if Error is P_Medium and Var_Error is N_Large and Pressure is Medium
then Var_Heater is Zero;
if Error is P_Medium and Var_Error is N_Large and Pressure is Medium
then Var_Cooling is Zero;
if Error is P_Medium and Var_Error is N_Medium and Pressure is Medium
then Var_Heater is P_Small;
if Error is P_Medium and Var_Error is N_Medium and Pressure is Medium
then Var_Cooling is Zero;
if Error is P_Medium and Var_Error is N_Small and Pressure is Medium
then Var_Heater is P_Medium;
if Error is P_Medium and Var_Error is N_Small and Pressure is Medium
then Var_Cooling is N_Medium;
if Error is P_Medium and Var_Error is N_Large and Pressure is Small
then Var_Heater is P_Small;
if Error is P_Medium and Var_Error is N_Large and Pressure is Small
then Var_Cooling is Zero;
if Error is P_Medium and Var_Error is N_Medium and Pressure is Small
then Var_Heater is P_Medium;
if Error is P_Medium and Var_Error is N_Medium and Pressure is Small
then Var_Cooling is Zero;
if Error is P_Medium and Var_Error is N_Small and Pressure is Small
then Var_Heater is P_Large;
if Error is P_Medium and Var_Error is N_Small and Pressure is Small
then Var_Cooling is N_Medium;
if Error is P_Small and Var_Error is N_Large and Pressure is Large
then Var_Heater is N_Medium;
if Error is P_Small and Var_Error is N_Large and Pressure is Large
then Var_Cooling is Zero;
if Error is P_Small and Var_Error is N_Medium and Pressure is Large
then Var_Heater is N_Medium;
if Error is P_Small and Var_Error is N_Medium and Pressure is Large
then Var_Cooling is Zero;
if Error is P_Small and Var_Error is N_Small and Pressure is Large
then Var_Heater is N_Small;
if Error is P_Small and Var_Error is N_Small and Pressure is Large
then Var_Cooling is Zero;
if Error is P_Small and Var_Error is N_Large and Pressure is Medium
then Var_Heater is N_Small;
if Error is P_Small and Var_Error is N_Large and Pressure is Medium
then Var_Cooling is Zero;
if Error is P_Small and Var_Error is N_Medium and Pressure is Medium
then Var_Heater is N_Small;
if Error is P_Small and Var_Error is N_Medium and Pressure is Medium
then Var_Cooling is Zero;
if Error is P_Small and Var_Error is N_Small and Pressure is Medium
then Var_Heater is Zero;
if Error is P_Small and Var_Error is N_Small and Pressure is Medium
then Var_Cooling is Zero;
if Error is P_Small and Var_Error is N_Large and Pressure is Small
then Var_Heater is Zero;
if Error is P_Small and Var_Error is N_Large and Pressure is Small
then Var_Cooling is Zero;
if Error is P_Small and Var_Error is N_Medium and Pressure is Small
then Var_Heater is Zero;
if Error is P_Small and Var_Error is N_Medium and Pressure is Small
then Var_Cooling is Zero;
if Error is P_Small and Var_Error is N_Small and Pressure is Small
then Var_Heater is P_Small;
if Error is P_Small and Var_Error is N_Small and Pressure is Small
then Var_Cooling is Zero;
if Error is Zero and Var_Error is N_Large and Pressure is Large
then Var_Heater is N_Large;
if Error is Zero and Var_Error is N_Large and Pressure is Large
then Var_Cooling is P_Medium;
if Error is Zero and Var_Error is N_Medium and Pressure is Large
then Var_Heater is N_Medium;
if Error is Zero and Var_Error is N_Medium and Pressure is Large
then Var_Cooling is P_Small;
if Error is Zero and Var_Error is N_Small and Pressure is Large
then Var_Heater is N_Medium;
if Error is Zero and Var_Error is N_Small and Pressure is Large
then Var_Cooling is Zero;
if Error is Zero and Var_Error is N_Large and Pressure is Medium
then Var_Heater is N_Medium;
if Error is Zero and Var_Error is N_Large and Pressure is Medium
then Var_Cooling is P_Medium;
if Error is Zero and Var_Error is N_Medium and Pressure is Medium
then Var_Heater is N_Small;
if Error is Zero and Var_Error is N_Medium and Pressure is Medium
then Var_Cooling is P_Small;
if Error is Zero and Var_Error is N_Small and Pressure is Medium
then Var_Heater is N_Small;
if Error is Zero and Var_Error is N_Small and Pressure is Medium
then Var_Cooling is Zero;
if Error is Zero and Var_Error is N_Large and Pressure is Small
then Var_Heater is N_Small;
if Error is Zero and Var_Error is N_Large and Pressure is Small
then Var_Cooling is P_Medium;
if Error is Zero and Var_Error is N_Medium and Pressure is Small
then Var_Heater is Zero;
if Error is Zero and Var_Error is N_Medium and Pressure is Small
then Var_Cooling is P_Small;
if Error is Zero and Var_Error is N_Small and Pressure is Small
then Var_Heater is Zero;
if Error is Zero and Var_Error is N_Small and Pressure is Small
then Var_Cooling is Zero;
if Error is N_Small and Var_Error is N_Large and Pressure is Large
then Var_Heater is N_Large;
if Error is N_Small and Var_Error is N_Large and Pressure is Large
then Var_Cooling is P_Large;
if Error is N_Small and Var_Error is N_Medium and Pressure is Large
then Var_Heater is N_Medium;
if Error is N_Small and Var_Error is N_Medium and Pressure is Large
then Var_Cooling is P_Medium;
if Error is N_Small and Var_Error is N_Small and Pressure is Large
then Var_Heater is N_Small;
if Error is N_Small and Var_Error is N_Small and Pressure is Large
then Var_Cooling is P_Medium;
if Error is N_Small and Var_Error is N_Large and Pressure is Medium
then Var_Heater is N_Large;
if Error is N_Small and Var_Error is N_Large and Pressure is Medium
then Var_Cooling is P_Medium;
if Error is N_Small and Var_Error is N_Medium and Pressure is Medium
then Var_Heater is N_Medium;
if Error is N_Small and Var_Error is N_Medium and Pressure is Medium
then Var_Cooling is P_Small;
if Error is N_Small and Var_Error is N_Small and Pressure is Medium
then Var_Heater is N_Small;
if Error is N_Small and Var_Error is N_Small and Pressure is Medium
then Var_Cooling is P_Small;
if Error is N_Small and Var_Error is N_Large and Pressure is Small
then Var_Heater is N_Medium;
if Error is N_Small and Var_Error is N_Large and Pressure is Small
then Var_Cooling is P_Medium;
if Error is N_Small and Var_Error is N_Medium and Pressure is Small
then Var_Heater is N_Small;
if Error is N_Small and Var_Error is N_Medium and Pressure is Small
then Var_Cooling is P_Small;
if Error is N_Small and Var_Error is N_Small and Pressure is Small
then Var_Heater is Zero;
if Error is N_Small and Var_Error is N_Small and Pressure is Small
then Var_Cooling is P_Small;
if Error is N_Medium and Var_Error is N_Large and Pressure is Large
then Var_Heater is N_Large;
if Error is N_Medium and Var_Error is N_Large and Pressure is Large
then Var_Cooling is P_Large;
if Error is N_Medium and Var_Error is N_Medium and Pressure is Large
then Var_Heater is N_Large;
if Error is N_Medium and Var_Error is N_Medium and Pressure is Large
then Var_Cooling is P_Large;
if Error is N_Medium and Var_Error is N_Small and Pressure is Large
then Var_Heater is N_Large;
if Error is N_Medium and Var_Error is N_Small and Pressure is Large
then Var_Cooling is P_Medium;
if Error is N_Medium and Var_Error is N_Large and Pressure is Medium
then Var_Heater is N_Large;
if Error is N_Medium and Var_Error is N_Large and Pressure is Medium
then Var_Cooling is P_Large;
if Error is N_Medium and Var_Error is N_Medium and Pressure is Medium
then Var_Heater is N_Large;
if Error is N_Medium and Var_Error is N_Medium and Pressure is Medium
then Var_Cooling is P_Medium;
if Error is N_Medium and Var_Error is N_Small and Pressure is Medium
then Var_Heater is N_Medium;
if Error is N_Medium and Var_Error is N_Small and Pressure is Medium
then Var_Cooling is P_Medium;
if Error is N_Medium and Var_Error is N_Large and Pressure is Small
then Var_Heater is N_Medium;
if Error is N_Medium and Var_Error is N_Large and Pressure is Small
then Var_Cooling is P_Large;
if Error is N_Medium and Var_Error is N_Medium and Pressure is Small
then Var_Heater is N_Medium;
if Error is N_Medium and Var_Error is N_Medium and Pressure is Small
then Var_Cooling is P_Medium;
if Error is N_Medium and Var_Error is N_Small and Pressure is Small
then Var_Heater is N_Small;
if Error is N_Medium and Var_Error is N_Small and Pressure is Small
then Var_Cooling is P_Medium;
if Error is N_Large and Var_Error is N_Large and Pressure is Large
then Var_Heater is N_Large;
if Error is N_Large and Var_Error is N_Large and Pressure is Large
then Var_Cooling is P_Large;
if Error is N_Large and Var_Error is N_Medium and Pressure is Large
then Var_Heater is N_Large;
if Error is N_Large and Var_Error is N_Medium and Pressure is Large
then Var_Cooling is P_Large;
if Error is N_Large and Var_Error is N_Small and Pressure is Large
then Var_Heater is N_Large;
if Error is N_Large and Var_Error is N_Small and Pressure is Large
then Var_Cooling is P_Large;
if Error is N_Large and Var_Error is N_Large and Pressure is Medium
then Var_Heater is N_Large;
if Error is N_Large and Var_Error is N_Large and Pressure is Medium
then Var_Cooling is P_Large;
if Error is N_Large and Var_Error is N_Medium and Pressure is Medium
then Var_Heater is N_Large;
if Error is N_Large and Var_Error is N_Medium and Pressure is Medium
then Var_Cooling is P_Large;
if Error is N_Large and Var_Error is N_Small and Pressure is Medium
then Var_Heater is N_Large;
if Error is N_Large and Var_Error is N_Small and Pressure is Medium
then Var_Cooling is P_Large;
if Error is N_Large and Var_Error is N_Large and Pressure is Small
then Var_Heater is N_Medium;
if Error is N_Large and Var_Error is N_Large and Pressure is Small
then Var_Cooling is P_Large;
if Error is N_Large and Var_Error is N_Medium and Pressure is Small
then Var_Heater is N_Medium;
if Error is N_Large and Var_Error is N_Medium and Pressure is Small
then Var_Cooling is P_Large;
if Error is N_Large and Var_Error is N_Small and Pressure is Small
then Var_Heater is N_Medium;
if Error is N_Large and Var_Error is N_Small and Pressure is Small
then Var_Cooling is P_Large;
if Error is N_Large and Var_Error is P_Large and Pressure is Large
then Var_Heater is N_Medium;
if Error is N_Large and Var_Error is P_Large and Pressure is Large
then Var_Cooling is P_Small;
if Error is N_Large and Var_Error is P_Medium and Pressure is Large
then Var_Heater is N_Large;
if Error is N_Large and Var_Error is P_Medium and Pressure is Large
then Var_Cooling is P_Medium;
if Error is N_Large and Var_Error is P_Small and Pressure is Large
then Var_Heater is N_Large;
if Error is N_Large and Var_Error is P_Small and Pressure is Large
then Var_Cooling is P_Large;
if Error is N_Large and Var_Error is P_Large and Pressure is Medium
then Var_Heater is N_Small;
if Error is N_Large and Var_Error is P_Large and Pressure is Medium
then Var_Cooling is P_Small;
if Error is N_Large and Var_Error is P_Medium and Pressure is Medium
then Var_Heater is N_Medium;
if Error is N_Large and Var_Error is P_Medium and Pressure is Medium
then Var_Cooling is P_Medium;
if Error is N_Large and Var_Error is P_Small and Pressure is Medium
then Var_Heater is N_Large;
if Error is N_Large and Var_Error is P_Small and Pressure is Medium
then Var_Cooling is P_Large;
if Error is N_Large and Var_Error is P_Large and Pressure is Small
then Var_Heater is Zero;
if Error is N_Large and Var_Error is P_Large and Pressure is Small
then Var_Cooling is P_Small;
if Error is N_Large and Var_Error is P_Medium and Pressure is Small
then Var_Heater is N_Small;
if Error is N_Large and Var_Error is P_Medium and Pressure is Small
then Var_Cooling is P_Medium;
if Error is N_Large and Var_Error is P_Small and Pressure is Small
then Var_Heater is N_Medium;
if Error is N_Large and Var_Error is P__Small and Pressure is Small
then Var_Cooling is P_Large;
if Error is N_Medium and Var_Error is P_Large and Pressure is Large
then Var_Heater is N_Medium;
if Error is N_Medium and Var_Error is P_Large and Pressure is Large
then Var_Cooling is Zero;
if Error is N_Medium and Var_Error is P_Medium and Pressure is Large
then Var_Heater is N_Large;
if Error is N_Medium and Var_Error is P_Medium and Pressure is Large
then Var_Cooling is Zero;
if Error is N_Medium and Var_Error is P_Small and Pressure is Large
then Var_Heater is N_Large;
if Error is N_Medium and Var_Error is P_Small and Pressure is Large
then Var_Cooling is P_Small;
if Error is N_Medium and Var_Error is P_Large and Pressure is Medium
then Var_Heater is N_Small;
if Error is N_Medium and Var_Error is P_Large and Pressure is Medium
then Var_Cooling is Zero;
if Error is N_Medium and Var_Error is P_Medium and Pressure is Medium
then Var_Heater is N_Medium;
if Error is N_Medium and Var_Error is P_Medium and Pressure is Medium
then Var_Cooling is Zero;
if Error is N_Medium and Var_Error is P_Small and Pressure is Medium
then Var_Heater is N_Medium;
if Error is N_Medium and Var_Error is P_Small and Pressure is Medium
then Var_Cooling is P_Small;
if Error is N_Medium and Var_Error is P_Large and Pressure is Small
then Var_Heater is Zero;
if Error is N_Medium and Var_Error is P_Large and Pressure is Small
then Var_Cooling is Zero;
if Error is N_Medium and Var_Error is P_Medium and Pressure is Small
then Var_Heater is N_Small;
if Error is N_Medium and Var_Error is P_Medium and Pressure is Small
then Var_Cooling is Zero;
if Error is N_Medium and Var_Error is P_Small and Pressure is Small
then Var_Heater is N_Small;
if Error is N_Medium and Var_Error is P_Small and Pressure is Small
then Var_Cooling is P_Small;
if Error is N_Small and Var_Error is P_Large and Pressure is Large
then Var_Heater is Zero;
if Error is N_Small and Var_Error is P_Large and Pressure is Large
then Var_Cooling is Zero;
if Error is N_Small and Var_Error is P_Medium and Pressure is Large
then Var_Heater is N_Small;
if Error is N_Small and Var_Error is P_Medium and Pressure is Large
then Var_Cooling is Zero;
if Error is N_Small and Var_Error is P_Small and Pressure is Large
then Var_Heater is N_Medium;
if Error is N_Small and Var_Error is P_Small and Pressure is Large
then Var_Cooling is Zero;
if Error is N_Small and Var_Error is P_Large and Pressure is Medium
then Var_Heater is P_Small;
if Error is N_Small and Var_Error is P_Large and Pressure is Medium
then Var_Cooling is Zero;
if Error is N_Small and Var_Error is P_Medium and Pressure is Medium
then Var_Heater is Zero;
if Error is N_Small and Var_Error is P_Medium and Pressure is Medium
then Var_Cooling is Zero;
if Error is N_Small and Var_Error is P_Small and Pressure is Medium
then Var_Heater is N_Small;
if Error is N_Small and Var_Error is P_Small and Pressure is Medium
then Var_Cooling is Zero;
if Error is N_Small and Var_Error is P_Large and Pressure is Small
then Var_Heater is P_Medium;
if Error is N_Small and Var_Error is P_Large and Pressure is Small
then Var_Cooling is Zero;
if Error is N_Small and Var_Error is P_Medium and Pressure is Small
then Var_Heater is P_Small;
if Error is N_Small and Var_Error is P_Medium and Pressure is Small
then Var_Cooling is Zero;
if Error is N_Small and Var_Error is P_Small and Pressure is Small
then Var_Heater is Zero;
if Error is N_Small and Var_Error is P_Small and Pressure is Small
then Var_Cooling is Zero;
if Error is Zero and Var_Error is P_Large and Pressure is Large
then Var_Heater is P_Medium;
if Error is Zero and Var_Error is P_Large and Pressure is Large
then Var_Cooling is N_Small;
if Error is Zero and Var_Error is P_Medium and Pressure is Large
then Var_Heater is P_Small;
if Error is Zero and Var_Error is P_Medium and Pressure is Large
then Var_Cooling is N_Small;
if Error is Zero and Var_Error is P_Small and Pressure is Large
then Var_Heater is Zero;
if Error is Zero and Var_Error is P_Small and Pressure is Large
then Var_Cooling is N_Small;
if Error is Zero and Var_Error is P_Large and Pressure is Medium
then Var_Heater is P_Large;
if Error is Zero and Var_Error is P_Large and Pressure is Medium
then Var_Cooling is N_Small;
if Error is Zero and Var_Error is P_Medium and Pressure is Medium
then Var_Heater is P_Medium;
if Error is Zero and Var_Error is P_Medium and Pressure is Medium
then Var_Cooling is N_Small;
if Error is Zero and Var_Error is P_Small and Pressure is Medium
then Var_Heater is P_Small;
if Error is Zero and Var_Error is P_Small and Pressure is Medium
then Var_Cooling is N_Small;
if Error is Zero and Var_Error is P_Large and Pressure is Small
then Var_Heater is P_Large;
if Error is Zero and Var_Error is P_Large and Pressure is Small
then Var_Cooling is N_Medium;
if Error is Zero and Var_Error is P_Medium and Pressure is Small
then Var_Heater is P_Large;
if Error is Zero and Var_Error is P_Medium and Pressure is Small
then Var_Cooling is N_Small;
if Error is Zero and Var_Error is P_Small and Pressure is Small
then Var_Heater is P_Medium;
if Error is Zero and Var_Error is P_Small and Pressure is Small
then Var_Cooling is N_Small;
if Error is P_Small and Var_Error is P_Large and Pressure is Large
then Var_Heater is P_Medium;
if Error is P_Small and Var_Error is P_Large and Pressure is Large
then Var_Cooling is N_Medium;
if Error is P_Small and Var_Error is P_Medium and Pressure is Large
then Var_Heater is P_Small;
if Error is P_Small and Var_Error is P_Medium and Pressure is Large
then Var_Cooling is N_Medium;
if Error is P_Small and Var_Error is P_Small and Pressure is Large
then Var_Heater is P_Small;
if Error is P_Small and Var_Error is P_Small and Pressure is Large
then Var_Cooling is N_Small;
if Error is P_Small and Var_Error is P_Large and Pressure is Medium
then Var_Heater is P_Large;
if Error is P_Small and Var_Error is P_Large and Pressure is Medium
then Var_Cooling is N_Medium;
if Error is P_Small and Var_Error is P_Medium and Pressure is Medium
then Var_Heater is P_Medium;
if Error is P_Small and Var_Error is P_Medium and Pressure is Medium
then Var_Cooling is N_Medium;
if Error is P_Small and Var_Error is P_Small and Pressure is Medium
then Var_Heater is P_Medium;
if Error is P_Small and Var_Error is P_Small and Pressure is Medium
then Var_Cooling is N_Small;
if Error is P_Small and Var_Error is P_Large and Pressure is Small
then Var_Heater is P_Large;
if Error is P_Small and Var_Error is P_Large and Pressure is Small
then Var_Cooling is N_Large;
if Error is P_Small and Var_Error is P_Medium and Pressure is Small
then Var_Heater is P_Large;
if Error is P_Small and Var_Error is P_Medium and Pressure is Small
then Var_Cooling is N_Medium;
if Error is P_Small and Var_Error is P_Small and Pressure is Small
then Var_Heater is P_Large;
if Error is P_Small and Var_Error is P_Small and Pressure is Small
then Var_Cooling is N_Small;
if Error is P_Medium and Var_Error is P_Large and Pressure is Large
then Var_Heater is P_Medium;
if Error is P_Medium and Var_Error is P_Large and Pressure is Large
then Var_Cooling is N_Large;
if Error is P_Medium and Var_Error is P_Medium and Pressure is Large
then Var_Heater is P_Medium;
if Error is P_Medium and Var_Error is P_Medium and Pressure is Large
then Var_Cooling is N_Medium;
if Error is P_Medium and Var_Error is P_Small and Pressure is Large
then Var_Heater is P_Small;
if Error is P_Medium and Var_Error is P_Small and Pressure is Large
then Var_Cooling is N_Medium;
if Error is P_Medium and Var_Error is P_Large and Pressure is Medium
then Var_Heater is P_Large;
if Error is P_Medium and Var_Error is P_Large and Pressure is Medium
then Var_Cooling is N_Large;
if Error is P_Medium and Var_Error is P_Medium and Pressure is Medium
then Var_Heater is P_Large;
if Error is P_Medium and Var_Error is P_Medium and Pressure is Medium
then Var_Cooling is N_Medium;
if Error is P_Medium and Var_Error is P_Small and Pressure is Medium
then Var_Heater is P_Medium;
if Error is P_Medium and Var_Error is P_Small and Pressure is Medium
then Var_Cooling is N_Medium;
if Error is P_Medium and Var_Error is P_Large and Pressure is Small
then Var_Heater is P_Large;
if Error is P_Medium and Var_Error is P_Large and Pressure is Small
then Var_Cooling is N_Large;
if Error is P_Medium and Var_Error is P_Medium and Pressure is Small
then Var_Heater is P_Large;
if Error is P_Medium and Var_Error is P_Medium and Pressure is Small
then Var_Cooling is N_Large;
if Error is P_Medium and Var_Error is P_Small and Pressure is Small
then Var_Heater is P_Large;
if Error is P_Medium and Var_Error is P_Small and Pressure is Small
then Var_Cooling is N_Medium;
if Error is P_Large and Var_Error is P_Large and Pressure is Large
then Var_Heater is P_Medium;
if Error is P_Large and Var_Error is P_Large and Pressure is Large
then Var_Cooling is N_Large;
if Error is P_Large and Var_Error is P_Medium and Pressure is Large
then Var_Heater is P_Medium;
if Error is P_Large and Var_Error is P_Medium and Pressure is Large
then Var_Cooling is N_Large;
if Error is P_Large and Var_Error is P_Small and Pressure is Large
then Var_Heater is P_Medium;
if Error is P_Large and Var_Error is P_Small and Pressure is Large
then Var_Cooling is N_Large;
if Error is P_Large and Var_Error is P_Large and Pressure is Medium
then Var_Heater is P_Large;
if Error is P_Large and Var_Error is P_Large and Pressure is Medium
then Var_Cooling is N_Large;
if Error is P_Large and Var_Error is P_Medium and Pressure is Medium
then Var_Heater is P_Large;
if Error is P_Large and Var_Error is P_Medium and Pressure is Medium
then Var_Cooling is N_Large;
if Error is P_Large and Var_Error is P_Small and Pressure is Medium
then Var_Heater is P_Large;
if Error is P_Large and Var_Error is P_Small and Pressure is Medium
then Var_Cooling is N_Large;
if Error is P_Large and Var_Error is P_Large and Pressure is Small
then Var_Heater is P_Large;
if Error is P_Large and Var_Error is P_Large and Pressure is Small
then Var_Cooling is N_Large;
if Error is P_Large and Var_Error is P_Medium and Pressure is Small
then Var_Heater is P_Large;
if Error is P_Large and Var_Error is P_Medium and Pressure is Small
then Var_Cooling is N_Large;
if Error is P_Large and Var_Error is P_Small and Pressure is Small
then Var_Heater is P_Large;
if Error is P_Large and Var_Error is P_Small and Pressure is Small
then Var_Cooling is N_Large
end
Input/Output Response
FIDE provides several powerful debugging and analyzing tools for
system development. Figure 6, 7, 8 show input/output response
surfaces of the controller defined above, which are obtained by
Analyzer in FIDE.
The output in these three figures is Var_Heater. Figure 6 gives
the result when pressure is 0.00; Figure 7 when 0.50 and Figure 8
when 1.00. We can see that the output Var_Heater becomes larger
when pressure gets smaller. This is what we want because lower
pressure results in lower temperature so larger heater output is
needed.
Figure 9 shows input/output response surface of Var_Cooling. Note
that surface in Figure 9 is opposite to that in Figure 7.
Figure 6 Input/Output Surface of Var_Heater when
Pressure=0.00(Small)
Figure 7 Input/Output Surface of Var_Heater when
Pressure=0.50(Medium)
Figure 8 Input/Output Surface of Var_Heater when
Pressure=1.00(Large)
Figure 9 Input/Output Surface of Var_Cooling when
Pressure=0.50(Medium)
COMMENTS
In a fuzzy logic based control system, we can take many factors
into account when creating the controller, some of these factors
are considered to be noises in a conventional control system and
make controller design a very hard work. Using fuzzy logic, it is
much easier to design a controller with better performance in
this kind of situation.
(Weijing Zhang, Applications Engineer, Aptronix Inc.)
For Further Information Please Contact:
Aptronix Incorporated
2150 North First Street #300
San Jose, CA 95131
Tel (408) 428-1888
Fax (408) 428-1884
FuzzyNet (408) 428-1883 data 8/N/1
Aptronix Company Overview
Headquartered in San Jose, California, Aptronix develops and
markets fuzzy logic-based software, systems and development tools
for a complete range of commercial applications. The company was
founded in 1989 and has been responsible for a number of
important innovations in fuzzy technology.
Aptronix's product Fide (Fuzzy Inference Development Environment)
-- is a complete environment for the development of fuzzy
logic-based systems. Fide provides system engineers with the
most effective fuzzy tools in the industry and runs in
MS-WindowsTM on 386/486 hardware. The price for Fide is $1495
and can be ordered from any authorized Motorola distributor. For
a list of authorized distributors or more information, please
call Aptronix. The software package comes with complete
documentation on how to develop fuzzy logic based
applications, free telephone support for 90 days and access
to the Aptronix FuzzyNet information exchange.
FIDE Application Notes Available:
#001
Washing Machine
Decision Making, Determining Wash Time
#002
Automatic Focusing System
Decision Making, Determining Focus
#003
Servo Motor Force Control
Servo Control, Grasping Object
#004
Temperature Control(1)
Process Control, Glass Melting Furnace
#005
Temperature Control(2)
Process Control, Air Conditioner
#006
Temperature Control(3)
Process Control, Reactor
FIDE Application Note 006-920914 Aptronix Inc., 1992
Temperature Control (3)