FUNCTION_BLOCK worker VAR_INPUT form1: REAL; form2: REAL; points: REAL; END_VAR VAR_OUTPUT result: REAL; END_VAR FUZZIFY form1 RANGE := (-1.000 .. 5.000); TERM bad := (0.5,1)(1.5,0); TERM notbad := (0.5,0)(1.5,1)(2.5,0) TERM avg := (1.5,0)(2.5,1)(3.5,0) TERM notgreat := (2.5,0)(3.5,1)(4.5,0) TERM great := (3.5,0)(4.5,1); END_FUZZIFY FUZZIFY form2 RANGE := (-1.000 .. 5.000); TERM bad := (0.5,1)(1.5,0); TERM notbad := (0.5,0)(1.5,1)(2.5,0) TERM avg := (1.5,0)(2.5,1)(3.5,0) TERM notgreat := (2.5,0)(3.5,1)(4.5,0) TERM great := (3.5,0)(4.5,1); END_FUZZIFY FUZZIFY points RANGE := (-30.000 .. 30.000); TERM low := (-20,1)(-5,0); TERM avg := (-10,0)(-3,1)(3,1)(10,0); TERM high := (10,0)(20,1); END_FUZZIFY DEFUZZIFY result RANGE := (-1.000 .. 1.000); TERM home := (-1,1) (0,0); TERM draw := (-0.5,0) (0,1) (0.5,0); TERM away := (0,0) (1,1); METHOD : COG; // ACCU : MAX; DEFAULT := 0 END_DEFUZZIFY RULEBLOCK AND : MIN; ACCU : MAX; ACT : MIN; // form1: great | form2 RULE 0 : if form1 is great and form2 is bad then result is home RULE 1 : if form1 is great and form2 is notbad then result is home RULE 2 : if form1 is great and form2 is avg then result is home RULE 3 : if form1 is great and form2 is notgreat then result is home //rozbicie jednego draw RULE 4 : if form1 is great and form2 is great and points is low then result is away RULE 5 : if form1 is great and form2 is great and points is avg then result is draw RULE 6 : if form1 is great and form2 is great and points is high then result is home // form1: notgreat | form2 RULE 7 : if form1 is notgreat and form2 is bad then result is home RULE 8 : if form1 is notgreat and form2 is notbad then result is home // rozbicie RULE 9 : if form1 is notgreat and form2 is avg and points is low then result is away RULE 10 : if form1 is notgreat and form2 is avg and points is avg then result is draw RULE 11 : if form1 is notgreat and form2 is avg and points is high then result is home // rozbicie RULE 12 : if form1 is notgreat and form2 is notgreat and points is low then result is away RULE 13 : if form1 is notgreat and form2 is notgreat and points is avg then result is draw RULE 14 : if form1 is notgreat and form2 is notgreat and points is high then result is home RULE 15 : if form1 is notgreat and form2 is great then result is away // form1: avg | form2 RULE 16 : if form1 is avg and form2 is bad then result is home RULE 17 : if form1 is avg and form2 is notbad then result is home // rozbicie RULE 18 : if form1 is avg and form2 is avg and points is low then result is away RULE 19 : if form1 is avg and form2 is avg and points is avg then result is draw RULE 20 : if form1 is avg and form2 is avg and points is high then result is home RULE 21 : if form1 is avg and form2 is notgreat then result is away RULE 22 : if form1 is avg and form2 is great then result is away // form1: notbad | form2 RULE 23 : if form1 is notbad and form2 is bad then result is home //rozbicie RULE 24 : if form1 is notbad and form2 is notbad and points is low then result is away RULE 25 : if form1 is notbad and form2 is notbad and points is avg then result is draw RULE 26 : if form1 is notbad and form2 is notbad and points is high then result is home RULE 27 : if form1 is notbad and form2 is avg then result is away RULE 28 : if form1 is notbad and form2 is notgreat then result is away RULE 29 : if form1 is notbad and form2 is great then result is away // form1: bad | form2 //rozbicie RULE 30 : if form1 is bad and form2 is bad and points is low then result is away RULE 31 : if form1 is bad and form2 is bad and points is avg then result is draw RULE 32 : if form1 is bad and form2 is bad and points is low then result is home RULE 33 : if form1 is bad and form2 is notbad then result is away RULE 34 : if form1 is bad and form2 is avg then result is away RULE 35 : if form1 is bad and form2 is notgreat then result is away RULE 36 : if form1 is bad and form2 is great then result is away END_RULEBLOCK END_FUNCTION_BLOCK