$               This information is provided by the
$                       Aptronix FuzzyNet
$                 http://www.aptronix.com/fuzzynet 
$                  email fuzzynet@aptronix.com 
$               Aptronix may also be reached by phone
$                       at 408-261-1898 or
$                       FAX at 408-490-2729
$
$
$ FILENAME:	temp/temp1_er.fil
$ DATE: 	02/09/1992
$ UPDATE:	03/09/1992

$ Temperature Controller : Part 2 : error compensator
$ Two inputs, one output
$ 	INPUT(S):	Error, TimeDiff(erentialOf)_Error
$ 	OUTPUT(S):	Var(iationOf)_Ctrl

$ FIU HEADER

fiu tvfi (min max) *8;

$ DEFINITION OF INPUT VARIABLE(S)

invar Error " " : -100 () 100 [
	P_Large     (@50,  0, @80,  1,  @100, 1),
	P_Medium    (@20,  0, @50,  1,  @80,  0),
	P_Small     (@0,   0, @20,  1,  @50,  0),
	Zero        (@-20, 0, @0,   1,  @20,  0),
	N_Small     (@-50, 0, @-20, 1,  @0,   0),
	N_Medium    (@-80, 0, @-50, 1,  @-20, 0),
	N_Large     (@-100,1, @-80, 1,  @-50, 0)
	]; 

invar TimeDiff_Error " " : -90 () 90 [
	P_Large     (@50,  0,  @70,  1,  @90,  1),
	P_Medium    (@30,  0,  @50,  1,  @70,  0),
	P_Small     (@0,   0,  @30,  1,  @50,  0),
	Zero        (@-30, 0,  @0,   1,  @30,  0),
	N_Small     (@-50, 0,  @-30, 1,  @0,   0),
	N_Medium    (@-70, 0,  @-50, 1,  @-30, 0),
	N_Large     (@-90, 1,  @-70, 1,  @-50, 0)
	]; 


$ DEFINITION OF OUTPUT VARIABLE(S)

outvar Var_Ctrl " " : -1 () 1 * (
	P_Large      = 0.80,      
	P_Medium     = 0.40,
	P_Small      = 0.20,
	Zero         = 0.00,
	N_Small      = -0.20,
	N_Medium     = -0.40,
	N_Large      = -0.80
    );


$ RULES

if Error is Zero and TimeDiff_Error is P_Large  then Var_Ctrl is P_Large;
if Error is Zero and TimeDiff_Error is P_Medium then Var_Ctrl is P_Medium;
if Error is Zero and TimeDiff_Error is P_Small  then Var_Ctrl is Zero;
if Error is Zero and TimeDiff_Error is Zero     then Var_Ctrl is Zero;
if Error is Zero and TimeDiff_Error is N_Small  then Var_Ctrl is Zero;
if Error is Zero and TimeDiff_Error is N_Medium then Var_Ctrl is N_Medium;
if Error is Zero and TimeDiff_Error is N_Large  then Var_Ctrl is N_Large;

if Error is P_Large  and TimeDiff_Error is Zero then Var_Ctrl is P_Large;
if Error is P_Medium and TimeDiff_Error is Zero then Var_Ctrl is P_Medium;
if Error is P_Small  and TimeDiff_Error is Zero then Var_Ctrl is Zero;
if Error is N_Small  and TimeDiff_Error is Zero then Var_Ctrl is Zero;
if Error is N_Medium and TimeDiff_Error is Zero then Var_Ctrl is N_Medium;
if Error is N_Large  and TimeDiff_Error is Zero then Var_Ctrl is N_Large;

if Error is P_Medium and TimeDiff_Error is P_Medium then Var_Ctrl is P_Large;
if Error is P_Small  and TimeDiff_Error is P_Small  then Var_Ctrl is Zero;
if Error is P_Medium and TimeDiff_Error is N_Medium then Var_Ctrl is Zero;
if Error is P_Small  and TimeDiff_Error is N_Large  then Var_Ctrl is N_Medium;
if Error is N_Small  and TimeDiff_Error is P_Large  then Var_Ctrl is P_Medium;
if Error is N_Medium and TimeDiff_Error is P_Medium then Var_Ctrl is Zero;
if Error is N_Small  and TimeDiff_Error is N_Small  then Var_Ctrl is Zero;
if Error is N_Medium and TimeDiff_Error is N_Medium then Var_Ctrl is N_Large

end