LSR/Examples/fuzzylite-mamdani/SimpleDimmerChained.fcl
2020-06-04 19:21:01 +02:00

52 lines
1.2 KiB
Plaintext

//Code automatically generated with fuzzylite 6.0.
FUNCTION_BLOCK SimpleDimmerChained
VAR_INPUT
Ambient: REAL;
END_VAR
VAR_OUTPUT
Power: REAL;
InversePower: REAL;
END_VAR
FUZZIFY Ambient
RANGE := (0.000 .. 1.000);
TERM DARK := Triangle 0.000 0.250 0.500;
TERM MEDIUM := Triangle 0.250 0.500 0.750;
TERM BRIGHT := Triangle 0.500 0.750 1.000;
END_FUZZIFY
DEFUZZIFY Power
RANGE := (0.000 .. 1.000);
TERM LOW := Triangle 0.000 0.250 0.500;
TERM MEDIUM := Triangle 0.250 0.500 0.750;
TERM HIGH := Triangle 0.500 0.750 1.000;
METHOD : COG;
ACCU : MAX;
DEFAULT := nan;
END_DEFUZZIFY
DEFUZZIFY InversePower
RANGE := (0.000 .. 1.000);
TERM LOW := Cosine 0.200 0.500;
TERM MEDIUM := Cosine 0.500 0.500;
TERM HIGH := Cosine 0.800 0.500;
METHOD : COG;
ACCU : MAX;
DEFAULT := nan;
END_DEFUZZIFY
RULEBLOCK
ACT : MIN;
RULE 1 : if Ambient is DARK then Power is HIGH
RULE 2 : if Ambient is MEDIUM then Power is MEDIUM
RULE 3 : if Ambient is BRIGHT then Power is LOW
RULE 4 : if Power is LOW then InversePower is HIGH
RULE 5 : if Power is MEDIUM then InversePower is MEDIUM
RULE 6 : if Power is HIGH then InversePower is LOW
END_RULEBLOCK
END_FUNCTION_BLOCK