Procédé

Tutoriel - Lina Procédé - 05/2024

8.2 Code SEQ_PROG_EN_COURS

L10:(* -------------------------------- init ------------------------------------------- *)

(*RAZ STRING D ETAT ETAPES*)
DES_PROG_EN_COURS.NOM_ETAPE := ' ';
DES_PROG_EN_COURS.DESCRIP_TRANSITION := ' ';

(*INIT SEQUENCE PAR AFFICHEUR*)
IF RAZ_SEQ THEN SEQ_PROG_EN_COURS.NUM_ETAPE :=0;END_IF;

(*RAZ DES VARIABLES*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;

SEQ_PROG_EN_COURS.CMD01 := 0; (* CMD *)
SEQ_PROG_EN_COURS.CMD02 := 0; (* CMD *)
SEQ_PROG_EN_COURS.CMD03 := 0; (* CMD *)

SEQ_PROG_EN_COURS.INT01 := 0; (* *)
SEQ_PROG_EN_COURS.INT02 := 0; (* *)

SEQ_PROG_EN_COURS.ETAT01 := 0; (* *)
END_IF;

(*DEMARRAGE DE LA SEQUENCE*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 0 AND REPRISE_API_OK THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 10;
END_IF;

(*INCREMENTATION TEMPO*)
IF BIT_100ms AND SEQ_PROG_EN_COURS.T_100MS < 32766 THEN
SEQ_PROG_EN_COURS.T_100MS := SEQ_PROG_EN_COURS.T_100MS + 1;
END_IF;
IF BIT_1s AND SEQ_PROG_EN_COURS.T_1S < 32766 THEN
SEQ_PROG_EN_COURS.T_1S := SEQ_PROG_EN_COURS.T_1S + 1;
END_IF;

(* -------------------------------- init ------------------------------------------- *)

(* ETAPE DE PREPARATION AU DEMARRAGE *)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 10 THEN

SEQ_PROG_EN_COURS.CMD01.00 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.01 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.02 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.03 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.04 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.05 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.06 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.07 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.08 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.09 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.10 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.11 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.12 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.13 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.14 := 0; (* *)
SEQ_PROG_EN_COURS.CMD01.15 := 0; (* *)

SEQ_PROG_EN_COURS.CMD02.00 := 0; (* RAZ SEQ PROCESS *)
SEQ_PROG_EN_COURS.CMD02.01 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.02 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.03 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.04 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.05 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.06 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.07 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.08 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.09 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.10 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.11 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.12 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.13 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.14 := 0; (* *)
SEQ_PROG_EN_COURS.CMD02.15 := 0; (* *)

SEQ_PROG_EN_COURS.INT01 := 0; (* *)
SEQ_PROG_EN_COURS.INT02 := 0; (* *)

SEQ_PROG_EN_COURS.ETAT01 := 0; (* *)

(*RAZ ETAT EQUIPEMENT*)
GES_PROCEDE.E_Etat_equipement := 0;
GES_PROCEDE.E_Etape_en_cours := 0;
GES_PROCEDE.LAP_Dmd_annulation := 0;

(*RAZ TABLEAU PROGRAMME EN COURS*)
PROG_EN_COURS := PROG_VIDE_COMPLET;
PROG_REMONT_ETAPES := PROG_VIDE_ETAPES;
PROG_REMONT_COMP := PROG_VIDE_COMP;

(*RAZ variables tableau de gestion procédé*)
GES_PROCEDE.RV_Remonte_valeur_arret_prog := 0;

DES_PROG_EN_COURS.NOM_ETAPE := 'Etape de preparation au demarrage';
DES_PROG_EN_COURS.NOM_ETAPE := 'Attente demande de lancement programme';

(*Demande de lancement programme*)
IF GES_PROCEDE.LAP_Dmd_de_lancement = 1 AND GES_PROCEDE.LAP_Code_prog <> 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 100;
END_IF;
END_IF;

(*Etape 100 : Lancement du programme dans le db de programme en cours*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 100 THEN

IF GES_PROCEDE.LAP_Code_prog < 10 THEN
PROG_EN_COURS_CODE := GES_PROCEDE.LAP_Code_prog;
PROG_EN_COURS.NOM := STOCKAGE_PROG_001_010[GES_PROCEDE.LAP_Code_prog].NOM;
PROG_EN_COURS.ETAPES := STOCKAGE_PROG_001_010[GES_PROCEDE.LAP_Code_prog].ETAPES;
PROG_EN_COURS.COMPLEMENT := STOCKAGE_PROG_001_010[GES_PROCEDE.LAP_Code_prog].COMPLEMENT;
END_IF;

IF GES_PROCEDE.LAP_Code_prog >= 10 AND GES_PROCEDE.LAP_Code_prog < 21 THEN
PROG_EN_COURS_CODE := GES_PROCEDE.LAP_Code_prog;
PROG_EN_COURS.NOM := STOCKAGE_PROG_011_020[GES_PROCEDE.LAP_Code_prog].NOM;
PROG_EN_COURS.ETAPES := STOCKAGE_PROG_011_020[GES_PROCEDE.LAP_Code_prog].ETAPES;
PROG_EN_COURS.COMPLEMENT := STOCKAGE_PROG_011_020[GES_PROCEDE.LAP_Code_prog].COMPLEMENT;
END_IF;

IF GES_PROCEDE.LAP_Code_prog >= 91 AND STOCKAGE_PROG_AUTRE_CODE = GES_PROCEDE.LAP_Code_prog THEN
PROG_EN_COURS_CODE := GES_PROCEDE.LAP_Code_prog;
PROG_EN_COURS.NOM := STOCKAGE_PROG_AUTRE.NOM;
PROG_EN_COURS.ETAPES := STOCKAGE_PROG_AUTRE.ETAPES;
PROG_EN_COURS.COMPLEMENT := STOCKAGE_PROG_AUTRE.COMPLEMENT;
END_IF;

DES_PROG_EN_COURS.NOM_ETAPE := 'Affectation du progamme en cours';
DES_PROG_EN_COURS.NOM_ETAPE := 'Programme en cours affecte';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 200;
END_IF;
END_IF;

(*étape 200 : RAZ échanges recettes en cours*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 200 THEN

GES_PROCEDE.LAP_Dmd_de_lancement := 0;
GES_PROCEDE.LAP_Code_prog := 0;
GES_PROCEDE.LAP_Confirmation_demande := 0;

DES_PROG_EN_COURS.NOM_ETAPE := 'Reinitialisation des donnees d echange ';
DES_PROG_EN_COURS.NOM_ETAPE := 'Donnees reinitialisee';

(*Aucune demande de modification*)
IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 300;
END_IF;
END_IF;

(*étape 250 : Attente notif modif*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 300 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Verif attente demande de modification';
DES_PROG_EN_COURS.NOM_ETAPE := 'Demande ou aucune demande de modif';

(*Demande modification*)
IF GES_PROCEDE.SP_Dmd_modif_prog_en_cours = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 400;
END_IF;

(*Aucune demande de modification*)
IF GES_PROCEDE.SP_Dmd_modif_prog_en_cours = 0 AND SEQ_PROG_EN_COURS.T_1S > 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 1000;
END_IF;
END_IF;

(*étape 400 : Recopie du tampon dans la recette en cours*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 400 THEN

PROG_EN_COURS.ETAPES := PROG_TAMPON_ETAPES;
PROG_EN_COURS.COMPLEMENT := PROG_TAMPON_COMP;

(*Validation sauvegarde effectué*)
GES_PROCEDE.SP_Rep_modif_prog_en_cours_api := 1;

DES_PROG_EN_COURS.NOM_ETAPE := 'Recopie du tampon dans le programme en cours';
DES_PROG_EN_COURS.NOM_ETAPE := 'Reponse modif en cours traitee';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 500;
END_IF;
END_IF;

(*étape 500 : Attente RAZ modif en prog en cours*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 500 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente retour Lina';
DES_PROG_EN_COURS.NOM_ETAPE := 'Retour Lina effectue';

IF GES_PROCEDE.SP_Rep_modif_prog_en_cours_api = 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 600;
END_IF;
END_IF;

(*Etape 600 : Attente demande vidage tampon*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 600 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente demande vidage tampon';
DES_PROG_EN_COURS.NOM_ETAPE := 'Demande de vidage effectue';

IF GES_PROCEDE.SP_Dmd_vidage_tampon = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 700;
END_IF;
END_IF;

(*étape 700 : Raz du DB recette tampon par automate*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 700 THEN

PROG_TAMPON_ETAPES := PROG_VIDE_ETAPES;
PROG_TAMPON_COMP := PROG_TAMPON_COMP;

DES_PROG_EN_COURS.NOM_ETAPE := 'Vidage du tableau tampon';
DES_PROG_EN_COURS.NOM_ETAPE := 'Tableau tampon vide';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 800;
END_IF;
END_IF;

(*Etape 800 : Réponse vidage tampon OK*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 800 THEN

GES_PROCEDE.SP_Rep_vidage_tampon_api := 1;

DES_PROG_EN_COURS.NOM_ETAPE := 'Reponse tableau tampon vide';
DES_PROG_EN_COURS.NOM_ETAPE := 'Reponse effectuee';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 900;
END_IF;
END_IF;

(*Etape 900 : Attente échange Lina raz*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 900 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente reinitialisation des donnees d echange';
DES_PROG_EN_COURS.NOM_ETAPE := 'Donnees d echange reinitialisee';

IF GES_PROCEDE.SP_Rep_vidage_tampon_api = 0 AND GES_PROCEDE.SP_Dmd_vidage_tampon = 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 1000;
END_IF;
END_IF;

(* -------------------------------- TYPE DE DEPART ------------------------------------------- *)

(*étape 1000 : Vérification type de départ*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 1000 THEN

(*Vérification départ différé*)
IF GES_PROCEDE.DD_mois <> 0 OR GES_PROCEDE.DD_jour <> 0
OR GES_PROCEDE.DD_minute <> 0 OR GES_PROCEDE.DD_heure <> 0 THEN

SEQ_PROG_EN_COURS.CMD01.00 := 1; (*départ différé*)
ELSE
SEQ_PROG_EN_COURS.CMD01.00 := 0; (*départ direct*)
END_IF;

DES_PROG_EN_COURS.NOM_ETAPE := 'Verification type de depart';
DES_PROG_EN_COURS.NOM_ETAPE := 'Type de depart determine';

(*Départ différé*)
IF SEQ_PROG_EN_COURS.CMD01.00 = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 1100;
END_IF;

(*Départ direct*)
IF SEQ_PROG_EN_COURS.CMD01.00 = 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 2000;
END_IF;
END_IF;

(* -------------------------------- DEPART DIFFERE ------------------------------------------- *)

(*étape 1100 : Sauvegarde date de départ*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 1100 THEN

(*Sauvegarde date de départ*)
DD_MOIS_JOUR_DEBUT := (GES_PROCEDE.DD_mois * 100) + GES_PROCEDE.DD_jour;
DD_HEURE_MINUTE_DEBUT := (GES_PROCEDE.DD_heure * 100) + GES_PROCEDE.DD_minute;

DES_PROG_EN_COURS.NOM_ETAPE := 'Sauvegarde date de depart';
DES_PROG_EN_COURS.NOM_ETAPE := 'Date sauvegardee';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 1110;
END_IF;
END_IF;

(*étape 1110 : RAZ échange DD Lina*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 1110 THEN

(*RAZ Date de départ*)
GES_PROCEDE.DD_annee := 0;
GES_PROCEDE.DD_mois := 0;
GES_PROCEDE.DD_jour := 0;
GES_PROCEDE.DD_heure := 0;
GES_PROCEDE.DD_minute := 0;

DES_PROG_EN_COURS.NOM_ETAPE := 'RAZ donnee echange depart differe';
DES_PROG_EN_COURS.NOM_ETAPE := 'Donnees reinitialisee';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 1120;
END_IF;
END_IF;

(*étape 1120 : Attente départ différé*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 1120 THEN

SEQ_PROG_EN_COURS.INT01 := HEURE_API_CONV.MOIS * 100 + HEURE_API_CONV.JOUR;
SEQ_PROG_EN_COURS.INT02 := HEURE_API_CONV.HEURE * 100 + HEURE_API_CONV.MINUTE;

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente depart differe';
DES_PROG_EN_COURS.NOM_ETAPE := 'Dmd modif ou depart direct ou date depart ok ou dmd annulation';

(*Demande de modif en cours*)
IF GES_PROCEDE.SP_Dmd_modif_prog_en_cours = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 1130;
END_IF;

(*Temps départ différé = temps départ direct*)
IF DD_MOIS_JOUR_DEBUT = SEQ_PROG_EN_COURS.INT01 AND DD_HEURE_MINUTE_DEBUT = SEQ_PROG_EN_COURS.INT02 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 2000;
END_IF;

(*Dmd de départ direct*) (*A compléter*)
IF GES_PROCEDE.LAP_Dmd_de_lancement = 1 AND GES_PROCEDE.LAP_Code_prog <> 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 10;
END_IF;

(*annulation*)
IF GES_PROCEDE.LAP_Dmd_annulation = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 3000;
END_IF;
END_IF;

(*étape 1130 : Sauvegarde modification programme *)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 1130 THEN

(*Sauvegarde modification données programme*)
PROG_EN_COURS.ETAPES := PROG_TAMPON_ETAPES;
PROG_EN_COURS.COMPLEMENT := PROG_TAMPON_COMP;

(*Sauvegarde modification Date de départ*)
DD_MOIS_JOUR_DEBUT := (GES_PROCEDE.DD_mois * 100) + GES_PROCEDE.DD_jour;
DD_HEURE_MINUTE_DEBUT := (GES_PROCEDE.DD_heure * 100) + GES_PROCEDE.DD_minute;

(*Validation sauvegarde effectué*)
GES_PROCEDE.SP_Rep_modif_prog_en_cours_api := 1;

DES_PROG_EN_COURS.NOM_ETAPE := 'Sauvegarde donnees modification';
DES_PROG_EN_COURS.NOM_ETAPE := 'Donnees sauvegardees';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 1140;
END_IF;
END_IF;

(*étape 1140 : Attente retour Lina réponse modif prog en cours *)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 1140 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente retour Lina reponse modif prog en cours';
DES_PROG_EN_COURS.NOM_ETAPE := 'Reponse Lina ok';

IF GES_PROCEDE.SP_Rep_modif_prog_en_cours_api = 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 1150;
END_IF;
END_IF;

(*Etape 1150 : Attente demande vidage tampon*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 1150 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente demande vidage tampon';
DES_PROG_EN_COURS.NOM_ETAPE := 'Demande vidage ok';

IF GES_PROCEDE.SP_Dmd_vidage_tampon = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 1160;
END_IF;
END_IF;

(*étape 1160 : Raz du DB recette tampon par automate*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 1160 THEN

PROG_TAMPON_ETAPES := PROG_VIDE_ETAPES;
PROG_TAMPON_COMP := PROG_VIDE_COMP;

DES_PROG_EN_COURS.NOM_ETAPE := 'Raz tableau tampon';
DES_PROG_EN_COURS.NOM_ETAPE := 'Tableau vide';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 1170;
END_IF;
END_IF;

(*Etape 1170 : Réponse vidage tampon OK*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 1170 THEN

GES_PROCEDE.SP_Rep_vidage_tampon_api := 1;

DES_PROG_EN_COURS.NOM_ETAPE := 'Reponse tableau vide';
DES_PROG_EN_COURS.NOM_ETAPE := 'Reponse emise';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 1180;
END_IF;
END_IF;

(*Etape 1180 : Attente échange Lina raz*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 1180 THEN

DES_PROG_EN_COURS.NOM_ETAPE := ' Attente donnees echange Lina raz';
DES_PROG_EN_COURS.NOM_ETAPE := 'Donnees echange Lina reinitialisees';

IF GES_PROCEDE.SP_Rep_vidage_tampon_api = 0 AND GES_PROCEDE.SP_Dmd_vidage_tampon = 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 2000;
END_IF;
END_IF;

(* -------------------------------- LANCEMENT PROCESS ------------------------------------------- *)

(*DEMANDE DE SYNCHRO CI*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 2000 AND SEQ_PROCESS_CI.NUM_ETAPE = 25 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 2005;
END_IF;
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 2005 AND SEQ_PROCESS_CI.NUM_ETAPE <> 25 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 2010;
END_IF;

(*Demande annulation durant la Demande de synchro*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 2010 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente demande synchro fin condition initiales';
DES_PROG_EN_COURS.NOM_ETAPE := 'CI ok ou dmd annulation programme';

IF GES_PROCEDE.LAP_Dmd_annulation = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 3000;
END_IF;
END_IF;

(*ATTENTE RETOUR DE SYNCHRO CI*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 2010 AND SEQ_PROCESS_CI.NUM_ETAPE = 31010 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 2015;
END_IF;
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 2015 AND SEQ_PROCESS_CI.NUM_ETAPE <> 31010 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 2020;
END_IF;

(*Etape 2020 : Attente de lancement process*)
(*DEMANDE DE SYNCHRO DEMARRAGE*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 2020 AND SEQ_PROCESS_EVT01.NUM_ETAPE = 25 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 2025;
END_IF;
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 2025 AND SEQ_PROCESS_EVT01.NUM_ETAPE <> 25 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 2030;
END_IF;

(*etape 2030 : Gestion état programme en cours*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 2030 THEN

(*gestion d'état équipement*)
GES_PROCEDE.E_Etat_equipement := 1;

(*gestion d'état de phase*)
IF GES_PROCEDE.E_Etape_en_cours = 0 THEN
GES_PROCEDE.E_Etape_en_cours := GES_PROCEDE.LAP_Num_etape_demarrage;
GES_PROCEDE.LAP_Num_etape_demarrage := 0;
END_IF;

(*Autorisation remontée de données*)
GES_PROCEDE.RV_Remonte_valeur_top_courbe := 1;

(*RAZ du stockage des données liées au départ différé*)
DD_MOIS_JOUR_DEBUT := 0;
DD_HEURE_MINUTE_DEBUT := 0;

DES_PROG_EN_COURS.NOM_ETAPE := 'Gestion etat programme en cours';
DES_PROG_EN_COURS.NOM_ETAPE := 'Etape en cours';

IF GES_PROCEDE.E_Etape_en_cours <> 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 2040;
END_IF;
END_IF;

(*etape 2040 : Attente notif Lina ou fin de programme*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 2040 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente notif Lina ou fin de programme ';
DES_PROG_EN_COURS.NOM_ETAPE := 'Notif Lina ou fin de programme';

(*Lecture continue de la phase du process en cours*)
IF SEQ_PROCESS_EVT01.INT01 <> 0 THEN
GES_PROCEDE.E_Etape_en_cours := SEQ_PROCESS_EVT01.INT01;
END_IF;

(*Demande saut d'étape*)
IF GES_PROCEDE.SE_Etape_ou_aller <> 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 2050;
END_IF;

(*Demande de reprise*)
IF GES_PROCEDE.LAP_Num_etape_demarrage <> 0 AND GES_PROCEDE.SP_Dmd_reprise = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 2050;
END_IF;

(*Demande annulation*)
IF GES_PROCEDE.LAP_Dmd_annulation = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 3000;
END_IF;

(*Demande modif prog en cours*)
IF GES_PROCEDE.SP_Dmd_modif_prog_en_cours = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 6000;
END_IF;

(*fin du programme*)
IF PROG_EN_COURS.ETAPES[GES_PROCEDE.E_Etape_en_cours].CODE_ETAPE = 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 30000;
END_IF;
END_IF;

(*DEMANDE DE SYNCHRO ARRET*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 2050 AND SEQ_PROCESS_EVT01.NUM_ETAPE = 5 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 2055;
END_IF;
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 2055 AND SEQ_PROCESS_EVT01.NUM_ETAPE <> 5 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 2060;
END_IF;

(*etape 2060 : Analyse demande traitement Lina*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 2060 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Analyse demande traitement Lina';
DES_PROG_EN_COURS.NOM_ETAPE := 'Demande de saut d etape ou reprise';

(*Demande saut d'étape*)
IF GES_PROCEDE.SE_Etape_ou_aller <> 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 4000;
END_IF;

(*Demande de reprise*)
IF GES_PROCEDE.LAP_Num_etape_demarrage <> 0 AND GES_PROCEDE.SP_Dmd_reprise = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 5000;
END_IF;
END_IF;

(* -------------------------------- GESTION ANNULATION ------------------------------------------- *)

(*DEMANDE DE SYNCHRO ARRET*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 3000 AND SEQ_PROCESS_EVT01.NUM_ETAPE = 15 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 3005;
END_IF;
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 3005 AND SEQ_PROCESS_EVT01.NUM_ETAPE <> 15 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 3010;
END_IF;

(*etape 3010 : Attente confimation annulation *)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 3010 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente confimation annulation';
DES_PROG_EN_COURS.NOM_ETAPE := '1';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 3020;
END_IF;
END_IF;

(*etape 3020 : RAZ des données d'échanges avec Lina*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 3020 THEN

GES_PROCEDE.LAP_Dmd_annulation := 0;
GES_PROCEDE.LAP_Confirmation_demande := 0;

DES_PROG_EN_COURS.NOM_ETAPE := 'Demande annulation traitee';
DES_PROG_EN_COURS.NOM_ETAPE := 'Demande annulation traitee';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 30000;
END_IF;
END_IF;

(* -------------------------------- GESTION REPRISE ------------------------------------------- *)

(*étape 4000 : Affectation étape destination*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 4000 THEN

GES_PROCEDE.E_Etape_en_cours := GES_PROCEDE.SE_Etape_ou_aller;

DES_PROG_EN_COURS.NOM_ETAPE := 'Recuperation de l etape ou aller ';
DES_PROG_EN_COURS.NOM_ETAPE := 'Demande annulation traitee';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 4010;
END_IF;
END_IF;

(*étape 4010 : Attente confirmation Lina*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 4010 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente confirmation Lina';
DES_PROG_EN_COURS.NOM_ETAPE := 'Confirmation Lina saut d etape';

IF GES_PROCEDE.SE_Confirmation_Saut_Etape = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 4020;
END_IF;
END_IF;

(*étape 4020 : RAZ des données d'échanges Lina*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 4020 THEN

GES_PROCEDE.SE_Etape_ou_aller := 0;
GES_PROCEDE.SE_Confirmation_Saut_Etape := 0;

DES_PROG_EN_COURS.NOM_ETAPE := 'RAZ des donnees d echanges Lina';
DES_PROG_EN_COURS.NOM_ETAPE := '1';

IF GES_PROCEDE.SE_Etape_ou_aller = 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 2020;
END_IF;
END_IF;

(* -------------------------------- GESTION REPRISE ------------------------------------------- *)

(*étape 5000 : RAZ des remontées de données*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 5000 THEN

PROG_REMONT_ETAPES := PROG_VIDE_ETAPES;
PROG_REMONT_COMP := PROG_VIDE_COMP;

GES_PROCEDE.E_Etape_en_cours := GES_PROCEDE.LAP_Num_etape_demarrage;

DES_PROG_EN_COURS.NOM_ETAPE := 'RAZ des remontees de donnees';
DES_PROG_EN_COURS.NOM_ETAPE := '1';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 5010;
END_IF;
END_IF;

(*étape 5010 : Réponse de reprise api*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 5010 THEN

GES_PROCEDE.SP_Rep_reprise_api := 1;

DES_PROG_EN_COURS.NOM_ETAPE := 'Reponse de reprise api';
DES_PROG_EN_COURS.NOM_ETAPE := '1';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 5020;
END_IF;
END_IF;

(*étape 5020 : RAZ du num étape démarrage*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 5020 THEN

GES_PROCEDE.LAP_Num_etape_demarrage := 0;

DES_PROG_EN_COURS.NOM_ETAPE := 'Raz du nom etape demarrage';
DES_PROG_EN_COURS.NOM_ETAPE := '1';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 5030;
END_IF;
END_IF;

(*Etape 5030 : Attente demande vidage tampon*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 5030 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente demande vidage tampon';
DES_PROG_EN_COURS.NOM_ETAPE := 'Demande de vidage ok';

IF GES_PROCEDE.SP_Dmd_vidage_tampon = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 5040;
END_IF;
END_IF;

(*étape 5040 : Raz du DB recette tampon par automate*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 5040 THEN

PROG_TAMPON_ETAPES := PROG_VIDE_ETAPES;
PROG_TAMPON_COMP := PROG_VIDE_COMP;

DES_PROG_EN_COURS.NOM_ETAPE := 'Raz du DB recette tampon par automate';
DES_PROG_EN_COURS.NOM_ETAPE := '1';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 5050;
END_IF;
END_IF;

(*Etape 5050 : Réponse vidage tampon OK*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 5050 THEN

GES_PROCEDE.SP_Rep_vidage_tampon_api := 1;

DES_PROG_EN_COURS.NOM_ETAPE := 'Reponse vidage tampon OK';
DES_PROG_EN_COURS.NOM_ETAPE := '1';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 5060;
END_IF;
END_IF;

(*Etape 5060 : Attente échange Lina raz*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 5060 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente echange Lina raz';
DES_PROG_EN_COURS.NOM_ETAPE := 'Donnees echanges raz';

IF GES_PROCEDE.SP_Rep_vidage_tampon_api = 0 AND GES_PROCEDE.SP_Dmd_vidage_tampon = 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 2020;
END_IF;
END_IF;

(* -------------------------------- GESTION MODIF ------------------------------------------- *)

(*étape 6000 : Recopie du tampon dans la recette en cours*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 6000 THEN

PROG_EN_COURS.ETAPES := PROG_TAMPON_ETAPES;
PROG_EN_COURS.COMPLEMENT := PROG_TAMPON_COMP;

(*Validation sauvegarde effectué*)
GES_PROCEDE.SP_Rep_modif_prog_en_cours_api := 1;

DES_PROG_EN_COURS.NOM_ETAPE := 'Recopie du tampon dans la recette en cours';
DES_PROG_EN_COURS.NOM_ETAPE := '1';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 6010;
END_IF;
END_IF;

(*étape 6010 : Attente RAZ modif en prog en cours*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 6010 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente RAZ modif en prog en cours';
DES_PROG_EN_COURS.NOM_ETAPE := 'Donnee modif prog en cours raz';

IF GES_PROCEDE.SP_Rep_modif_prog_en_cours_api = 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 6020;
END_IF;
END_IF;

(*Etape 6020 : Attente demande vidage tampon*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 6020 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente demande vidage tampon';
DES_PROG_EN_COURS.NOM_ETAPE := 'Demande de vidage Lina';

IF GES_PROCEDE.SP_Dmd_vidage_tampon = 1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 6030;
END_IF;
END_IF;

(*étape 6030 : Raz du DB recette tampon par automate*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 6030 THEN

PROG_TAMPON_ETAPES := PROG_VIDE_ETAPES;
PROG_TAMPON_COMP := PROG_VIDE_COMP;

DES_PROG_EN_COURS.NOM_ETAPE := 'Raz du DB recette tampon par automate';
DES_PROG_EN_COURS.NOM_ETAPE := '1';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 6040;
END_IF;
END_IF;

(*Etape 6040 : Réponse vidage tampon OK*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 6040 THEN

GES_PROCEDE.SP_Rep_vidage_tampon_api := 1;

DES_PROG_EN_COURS.NOM_ETAPE := 'Reponse vidage tampon OK';
DES_PROG_EN_COURS.NOM_ETAPE := '1';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 6050;
END_IF;
END_IF;

(*Etape 6050 : Attente échange Lina raz*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 6050 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente echange Lina raz';
DES_PROG_EN_COURS.NOM_ETAPE := 'Donnees echange Lina raz';

IF GES_PROCEDE.SP_Rep_vidage_tampon_api = 0 AND GES_PROCEDE.SP_Dmd_vidage_tampon = 0 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 2030;
END_IF;
END_IF;

(* -------------------------------- FIN PROGRAMME ------------------------------------------- *)

(*étape 30000 : Fin de programme*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 30000 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Fin de programme';
DES_PROG_EN_COURS.NOM_ETAPE := '1';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 30010;
END_IF;
END_IF;

(* ATTENTE DEMANDE DE SYNCHRO FIN PROGRAMME*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 30010 AND SEQ_PROCESS_EVT01.NUM_ETAPE = 31010 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 30015;
END_IF;
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 30015 AND SEQ_PROCESS_EVT01.NUM_ETAPE <> 31010 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 30020;
END_IF;

(*DEMANDE DE SYNCHRO REINITIALISATION*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 30020 AND SEQ_PROCESS_ARRET.NUM_ETAPE = 25 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 30025;
END_IF;
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 30025 AND SEQ_PROCESS_ARRET.NUM_ETAPE <> 25 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 30030;
END_IF;

(* ATTENTE DEMANDE DE SYNCHRO REINITIALISATION OK*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 30030 AND SEQ_PROCESS_ARRET.NUM_ETAPE = 31010 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 30035;
END_IF;
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 30035 AND SEQ_PROCESS_ARRET.NUM_ETAPE <> 31010 THEN
SEQ_PROG_EN_COURS.NUM_ETAPE := 30040;
END_IF;

(*étape 30040 : Demande fin de programme*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 30040 THEN

GES_PROCEDE.RV_Remonte_valeur_top_courbe := 0;
GES_PROCEDE.RV_Remonte_valeur_arret_prog := 1;

DES_PROG_EN_COURS.NOM_ETAPE := 'Demande fin de programme';
DES_PROG_EN_COURS.NOM_ETAPE := 'Arret demande';

IF Tjrs_1 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 30050;
END_IF;
END_IF;

(*étape 30050 : Attente fin de programme Lina*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 30050 THEN

DES_PROG_EN_COURS.NOM_ETAPE := 'Attente fin de programme Lina';
DES_PROG_EN_COURS.NOM_ETAPE := 'Lina fin de programme';

IF GES_PROCEDE.RV_Remonte_valeur_arret_prog = 0 OR SEQ_PROG_EN_COURS.T_1S > 10 (*attente modif SEB*) THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 30060;
END_IF;
END_IF;

(*étape 30060 : Vidange recette en cours*)
IF SEQ_PROG_EN_COURS.NUM_ETAPE = 30060 THEN

PROG_REMONT_ETAPES := PROG_VIDE_ETAPES;
PROG_REMONT_COMP := PROG_VIDE_COMP;

(*SOLUTION GEMMA A METTRE APRES STABILITE PROG*)
SEQ_PROG_EN_COURS.CMD02.00 := 1;

DES_PROG_EN_COURS.NOM_ETAPE := 'Vidange recette en cours';
DES_PROG_EN_COURS.NOM_ETAPE := '1';

IF SEQ_PROG_EN_COURS.T_100MS > 10 THEN
SEQ_PROG_EN_COURS.T_100MS := 0;
SEQ_PROG_EN_COURS.T_1S := 0;
SEQ_PROG_EN_COURS.NUM_ETAPE := 10;
END_IF;
END_IF;