
FUNCTION_BLOCK FB32

VAR_TEMP
    // variables temporaires
    tempPos:INT;
END_VAR
VAR
    step: ARRAY[0..5] OF BOOL;
    TR: ARRAY[0..6] OF BOOL;
END_VAR

    //transition
    TR[0]:= step[0] AND "G7_ResetPos_DB".step[0] AND "TeachPos_DB".step[0] AND("ModeManu_DB".step[2]
                        OR "G7_ModeAuto_DB".step[2] OR "G7_ModeAuto_DB".step[5] OR "G7_ModeAuto_DB".step[8] OR "G7_ModeAuto_DB".step[10]); // 0 vers 1
    TR[1]:= step[1] AND Y_sorti AND NOT "Global".UpperPosition; // 1 vers 2
    TR[2]:= step[1] AND Y_sorti AND "Global".UpperPosition; // 1 vers 3
    TR[3]:= step[2] AND Z_MoveRel_End; // 2 vers 4
    TR[4]:= step[3] AND Z_MoveRel_End; // 3 vers 4
    TR[5]:= step[4] AND Y_rentre; // 4 vers 5
    TR[6]:= step[5] AND ("ModeManu_DB".step[3] 
                        OR "G7_ModeAuto_DB".step[3] OR "G7_ModeAuto_DB".step[0] OR "G7_ModeAuto_DB".step[9] OR "G7_ModeAuto_DB".step[12]); // 5 vers 0
    
    //etape
    IF TR[0] THEN // 0 vers 1
        step[0]:= false;
        step[1]:= true;
    END_IF;
    IF TR[1] THEN // 1 vers 2
        step[1]:= false;
        step[2]:= true;
    END_IF;
    IF TR[2] THEN // 1 vers 3
        step[1]:= false;
        step[3]:= true;
    END_IF;
    IF TR[3] THEN // 2 vers 4
        step[2]:= false;
        step[4]:= true;
    END_IF;
    IF TR[4] THEN // 3 vers 4
        step[3]:= false;
        step[4]:= true;
    END_IF;
    IF TR[5] THEN // 4 vers 5
        step[4]:= false;
        step[5]:= true;
    END_IF;
    IF TR[6] THEN // 5 vers 0
        step[5]:= false;
        step[0]:= true;
    END_IF;

    //prog
    IF step[2] THEN
        tempPos:= BYTE_TO_INT(Place_X);
        "Global".UpperPosition:= true;
        IF tempPos<17 AND tempPos>0 THEN
            "GestionStock_DB".stock[tempPos]:= false;
        END_IF;
    END_IF;
    //prog
    IF step[3] THEN
        tempPos:= BYTE_TO_INT(Place_X);
        "Global".UpperPosition:= false;
        IF tempPos<17 AND tempPos>0 THEN
            "GestionStock_DB".stock[tempPos]:= true;
        END_IF;
    END_IF;


END_FUNCTION_BLOCK
