FUZZY LOGIC CODE

FUNCTION_BLOCK controladord

    VAR_INPUT
        distanciai : REAL;
        distanciad : REAL;
    END_VAR
    
    VAR_OUTPUT
        velocidad : REAL;
    END_VAR
    
    FUZZIFY distanciai
        TERM baja := trian 5 150 300;
        TERM media := trian 310 460 620;
        TERM alta := trian 610 800 1003;
    END_FUZZIFY

    FUZZIFY distanciad
        TERM baja := trian 5 150 300;
        TERM media := trian 310 460 620;
        TERM alta := trian 610 800 1003;
    END_FUZZIFY
    
    DEFUZZIFY velocidad
        TERM baja := trape 0 1 2 3;
        TERM media := trape 2 4  5 6;
        TERM alta := trape 5 7 8.5 10;
        
        METHOD : COG;
        DEFAULT:=0;
    END_DEFUZZIFY
    
    RULEBLOCK Reglas1
        ACT : MIN;
        AND : MIN;
        ACCU : MAX;
        
        RULE R1: IF distanciai IS baja AND distanciad IS baja THEN velocidad is baja;
        RULE R2: IF distanciai IS baja AND distanciad IS media THEN velocidad is media;
        RULE R3: IF distanciai IS baja AND distanciad IS alta THEN velocidad is media;
        
        RULE R4: IF distanciai IS media AND distanciad IS baja THEN velocidad is baja;
        RULE R5: IF distanciai IS media AND distanciad IS media THEN velocidad is media;
        RULE R6: IF distanciai IS media AND distanciad IS alta THEN velocidad is alta;
        
        RULE R7: IF distanciai IS alta AND distanciad IS baja THEN velocidad is media;
        RULE R8: IF distanciai IS alta AND distanciad IS media THEN velocidad is alta;
        RULE R9: IF distanciai IS alta AND distanciad IS alta THEN velocidad is alta;
    
    END_RULEBLOCK
    
END_FUNCTION_BLOCK

Comentarios

Entradas populares