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)