Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- FUNCTION_BLOCK car // Block definition (there may be more than one block per file)
- // Define input variables
- VAR_INPUT
- distance : REAL;
- speed : REAL;
- END_VAR
- // Define output variable
- VAR_OUTPUT
- acceleration : REAL;
- END_VAR
- // Fuzzify input variable 'distance': {'krotki', 'dlugi'}
- FUZZIFY distance
- TERM krotki := (0, 1) (10, 1) (30, 0);
- TERM dlugi := (10, 0) (40, 1) (100, 1);
- END_FUZZIFY
- // Fuzzify input variable 'speed': { 'mala', 'duza' }
- FUZZIFY speed
- TERM mala := (0, 1) (30, 1) (70, 0);
- TERM duza := (30, 0) (100, 0.5) (400, 1);
- END_FUZZIFY
- // Defzzzify output variable 'acceleration' : {'redukuj', 'utrzymuj', 'zwiekszaj' }
- DEFUZZIFY acceleration
- TERM redukuj := (-50, 1) (-10, 1) (0, 0);
- TERM utrzymuj := (-10, 0) (0, 1) (10, 0);
- TERM zwiekszaj := (0, 0) (30, 1) (200, 1);
- METHOD : COG; // Use 'Center Of Gravity' defuzzification method
- DEFAULT := 0; // Default value is 0 (if no rule activates defuzzifier)
- END_DEFUZZIFY
- // Inference rules
- RULEBLOCK No1
- AND : MIN; // Use 'min' for 'and'
- ACT : MIN; // Use 'min' activation method
- ACCU : MAX; // Use 'max' accumulation method
- RULE 1 : IF distance IS krotki AND speed IS mala THEN acceleration IS utrzymuj;
- RULE 2 : IF distance IS krotki AND speed IS duza THEN acceleration IS redukuj;
- RULE 3 : IF distance IS dlugi AND speed IS mala THEN acceleration IS zwiekszaj;
- RULE 4 : IF distance IS dlugi AND speed IS duza THEN acceleration IS utrzymuj;
- //brakuje reguly jesli wyprzedzi to ma czekac
- END_RULEBLOCK
- END_FUNCTION_BLOCK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement