Advertisement
Guest User

Untitled

a guest
Dec 19th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. FUNCTION_BLOCK car // Block definition (there may be more than one block per file)
  2.  
  3. // Define input variables
  4. VAR_INPUT
  5. distance : REAL;
  6. speed : REAL;
  7. END_VAR
  8.  
  9. // Define output variable
  10. VAR_OUTPUT
  11. acceleration : REAL;
  12. END_VAR
  13.  
  14. // Fuzzify input variable 'distance': {'krotki', 'dlugi'}
  15. FUZZIFY distance
  16. TERM krotki := (0, 1) (10, 1) (30, 0);
  17. TERM dlugi := (10, 0) (40, 1) (100, 1);
  18. END_FUZZIFY
  19.  
  20. // Fuzzify input variable 'speed': { 'mala', 'duza' }
  21. FUZZIFY speed
  22. TERM mala := (0, 1) (30, 1) (70, 0);
  23. TERM duza := (30, 0) (100, 0.5) (400, 1);
  24. END_FUZZIFY
  25.  
  26. // Defzzzify output variable 'acceleration' : {'redukuj', 'utrzymuj', 'zwiekszaj' }
  27. DEFUZZIFY acceleration
  28. TERM redukuj := (-50, 1) (-10, 1) (0, 0);
  29. TERM utrzymuj := (-10, 0) (0, 1) (10, 0);
  30. TERM zwiekszaj := (0, 0) (30, 1) (200, 1);
  31. METHOD : COG; // Use 'Center Of Gravity' defuzzification method
  32. DEFAULT := 0; // Default value is 0 (if no rule activates defuzzifier)
  33. END_DEFUZZIFY
  34.  
  35. // Inference rules
  36. RULEBLOCK No1
  37. AND : MIN; // Use 'min' for 'and'
  38. ACT : MIN; // Use 'min' activation method
  39. ACCU : MAX; // Use 'max' accumulation method
  40.  
  41. RULE 1 : IF distance IS krotki AND speed IS mala THEN acceleration IS utrzymuj;
  42. RULE 2 : IF distance IS krotki AND speed IS duza THEN acceleration IS redukuj;
  43. RULE 3 : IF distance IS dlugi AND speed IS mala THEN acceleration IS zwiekszaj;
  44. RULE 4 : IF distance IS dlugi AND speed IS duza THEN acceleration IS utrzymuj;
  45. //brakuje reguly jesli wyprzedzi to ma czekac
  46. END_RULEBLOCK
  47.  
  48. END_FUNCTION_BLOCK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement