
FUNCTION_BLOCK FB8
VAR
    TR: ARRAY[0..1] OF BOOL;
    Step: ARRAY[0..1] OF BOOL;
    reset: BOOL;
    resetModeMarche : BOOL;
    flag_resetGenral : BOOL;
    tOnResetModeMarche: BOOL;
    tOn: S5TIME;
    tOntempo_bin: WORD;
    
END_VAR

//transition
  TR[0]:= step[0] AND marche AND "HMI_DB".HMI_Z8_AU AND reset; // 0 vers 1
  TR[1]:= step[1] AND NOT marche OR NOT "HMI_DB".HMI_Z8_AU; // 1 vers 0
  
  // etape
IF TR[0] THEN
    step[0]:= false;
    step[1]:= true;
END_IF;
IF TR[1] THEN
    step[1]:= false;
    step[0]:= true;
END_IF;

//init G7
IF NOT step[0] AND NOT step[1] THEN
    step[0]:= true;
END_IF;

//prog

resetModeMarche := step[0] AND resetGeneral AND NOT tOnResetModeMarche; // active le mode marche

IF step[0] THEN // fais repasser la mémoire HMI du reset à 0, joue sur l'ordre pour sortie de X0(voir TR[0])
    reset:= false;
END_IF;

IF resetGeneral OR S6 THEN // Bypass des sécu pour l'acquitement général
    "HMI_DB".HMI_Z8_AU:= true;
    reset:= true;
END_IF;


IF step[0] THEN 
    DB120.DBB0 := 1;
        
    ResetG7Auto();   
        
    ResetHmiDb();
END_IF;

//tempo
tOn:= S_ODT (T_NO:= T8, S:=resetGeneral, TV:=T#500ms, R:=FALSE, BI:=tOntempo_bin,Q:=tOnResetModeMarche) ;

//front
flag_resetGenral:= resetGeneral;
END_FUNCTION_BLOCK
