summaryrefslogtreecommitdiff
path: root/examples/takagi-sugeno/SimpleDimmer.fcl
blob: 65ccd94c935733d4e0617a8c620d68e3701b98ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
FUNCTION_BLOCK simple-dimmer

VAR_INPUT
  Ambient: REAL;
END_VAR

VAR_OUTPUT
  Power: 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 := 0.250;
  TERM MEDIUM := 0.500;
  TERM HIGH := 0.750;
  METHOD : COGS;
  DEFAULT := nan;
END_DEFUZZIFY

RULEBLOCK 
  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
END_RULEBLOCK

END_FUNCTION_BLOCK