Procédé

Tutoriel - Lina Procédé - 05/2024

9.2 FC562_SEQ_PROG_EN_COURS

//RAZ STRING D ETAT ETAPES
"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := ' ';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := ' ';

REGION SEQ EN-TÊTE

//INIT SEQUENCE PAR AFFICHEUR
IF "DB810_GESTION_IHM".INIT_SEQ THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 0;
END_IF;

//RAZ DES VARIABLES
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 0 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;

%DB562.DBW6 := 0; (* RAZ CMD01*)
%DB562.DBW8 := 0; (* RAZ CMD02*)
%DB562.DBW10 := 0; (* RAZ CMD03*)
%DB562.DBW12 := 0; (* RAZ CMD04*)

"DB562_SEQ_PROG_EN_COURS".SEQ.INT01 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.INT02 := 0; (* *)

"DB562_SEQ_PROG_EN_COURS".SEQ.ETAT01 := 0; (* *)
END_IF;

// DEMARRAGE DE LA SEQUENCE
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 0 AND "REPRISE_API_OK" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 10;
END_IF;

// INCREMENTATION TEMPO
IF "BIT_100ms" AND "DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS < 32766 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := "DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS + 1;
END_IF;
IF "BIT_1s" AND "DB562_SEQ_PROG_EN_COURS".SEQ.T_1S < 32766 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := "DB562_SEQ_PROG_EN_COURS".SEQ.T_1S + 1;
END_IF;

END_REGION ;

REGION 10 INITIALISATION

// ETAPE DE PREPARATION AU DEMARRAGE
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 10 THEN

"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_00 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_01 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_02 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_03 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_04 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_05 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_06 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_07 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_08 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_09 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_10 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_11 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_12 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_13 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_14 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_15 := 0; (* *)

"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_00 := 0; (* RAZ SEQ PROCESS *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_01 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_02 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_03 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_04 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_05 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_06 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_07 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_08 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_09 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_10 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_11 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_12 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_13 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_14 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_15 := 0; (* *)

"DB562_SEQ_PROG_EN_COURS".SEQ.INT01 := 0; (* *)
"DB562_SEQ_PROG_EN_COURS".SEQ.INT02 := 0; (* *)

"DB562_SEQ_PROG_EN_COURS".SEQ.ETAT01 := 0; (* *)

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

(*RAZ TABLEAU PROGRAMME EN COURS*)
"NULL" := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.INT03 := FILL(BVAL := "NULL", BLK => "DB556_REMONTEE_DATA_PROG");
"DB562_SEQ_PROG_EN_COURS".SEQ.INT03 := FILL(BVAL := "NULL", BLK => "DB576_PROG_EN_COURS");
"DB562_SEQ_PROG_EN_COURS".SEQ.INT03 := FILL(BVAL := "NULL", BLK => "DB577_PARAM_PROG_EN_COURS");

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Etape de preparation au demarrage';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Attente demande de lancement programme';

(*Demande de lancement programme*)
IF "DB550_GESTION_COM_LINA".LAP_Dmd_de_lancement AND "DB550_GESTION_COM_LINA".LAP_Code_prog <> 0 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 100;
END_IF;
END_IF;

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

IF "DB550_GESTION_COM_LINA".LAP_Code_prog < 10 THEN
"DB576_PROG_EN_COURS".CODE_PROG := "DB550_GESTION_COM_LINA".LAP_Code_prog;
"DB576_PROG_EN_COURS".NOM := "DB590_STOCKAGE_PROG_001_010".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].NOM;
"DB576_PROG_EN_COURS".ETAPES := "DB590_STOCKAGE_PROG_001_010".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB590_STOCKAGE_PROG_001_010".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].COMPLEMENT;
END_IF;

IF "DB550_GESTION_COM_LINA".LAP_Code_prog >= 10 AND "DB550_GESTION_COM_LINA".LAP_Code_prog < 21 THEN
"DB576_PROG_EN_COURS".CODE_PROG := "DB550_GESTION_COM_LINA".LAP_Code_prog;
"DB576_PROG_EN_COURS".NOM := "DB591_STOCKAGE_PROG_011_020".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].NOM;
"DB576_PROG_EN_COURS".ETAPES := "DB591_STOCKAGE_PROG_011_020".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB591_STOCKAGE_PROG_011_020".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].COMPLEMENT;
END_IF;

IF "DB550_GESTION_COM_LINA".LAP_Code_prog >= 21 AND "DB550_GESTION_COM_LINA".LAP_Code_prog < 31 THEN
"DB576_PROG_EN_COURS".CODE_PROG := "DB550_GESTION_COM_LINA".LAP_Code_prog;
"DB576_PROG_EN_COURS".NOM := "DB592_STOCKAGE_PROG_021_030".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].NOM;
"DB576_PROG_EN_COURS".ETAPES := "DB592_STOCKAGE_PROG_021_030".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB592_STOCKAGE_PROG_021_030".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].COMPLEMENT;
END_IF;

IF "DB550_GESTION_COM_LINA".LAP_Code_prog >= 31 AND "DB550_GESTION_COM_LINA".LAP_Code_prog < 41 THEN
"DB576_PROG_EN_COURS".CODE_PROG := "DB550_GESTION_COM_LINA".LAP_Code_prog;
"DB576_PROG_EN_COURS".NOM := "DB593_STOCKAGE_PROG_031_040".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].NOM;
"DB576_PROG_EN_COURS".ETAPES := "DB593_STOCKAGE_PROG_031_040".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB593_STOCKAGE_PROG_031_040".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].COMPLEMENT;
END_IF;

IF "DB550_GESTION_COM_LINA".LAP_Code_prog >= 41 AND "DB550_GESTION_COM_LINA".LAP_Code_prog < 51 THEN
"DB576_PROG_EN_COURS".CODE_PROG := "DB550_GESTION_COM_LINA".LAP_Code_prog;
"DB576_PROG_EN_COURS".NOM := "DB594_STOCKAGE_PROG_041_050".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].NOM;
"DB576_PROG_EN_COURS".ETAPES := "DB594_STOCKAGE_PROG_041_050".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB594_STOCKAGE_PROG_041_050".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].COMPLEMENT;
END_IF;

IF "DB550_GESTION_COM_LINA".LAP_Code_prog >= 51 AND "DB550_GESTION_COM_LINA".LAP_Code_prog < 61 THEN
"DB576_PROG_EN_COURS".CODE_PROG := "DB550_GESTION_COM_LINA".LAP_Code_prog;
"DB576_PROG_EN_COURS".NOM := "DB595_STOCKAGE_PROG_051_060".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].NOM;
"DB576_PROG_EN_COURS".ETAPES := "DB595_STOCKAGE_PROG_051_060".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB595_STOCKAGE_PROG_051_060".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].COMPLEMENT;
END_IF;

IF "DB550_GESTION_COM_LINA".LAP_Code_prog >= 61 AND "DB550_GESTION_COM_LINA".LAP_Code_prog < 71 THEN
"DB576_PROG_EN_COURS".CODE_PROG := "DB550_GESTION_COM_LINA".LAP_Code_prog;
"DB576_PROG_EN_COURS".NOM := "DB596_STOCKAGE_PROG_061_070".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].NOM;
"DB576_PROG_EN_COURS".ETAPES := "DB596_STOCKAGE_PROG_061_070".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB596_STOCKAGE_PROG_061_070".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].COMPLEMENT;
END_IF;

IF "DB550_GESTION_COM_LINA".LAP_Code_prog >= 71 AND "DB550_GESTION_COM_LINA".LAP_Code_prog < 81 THEN
"DB576_PROG_EN_COURS".CODE_PROG := "DB550_GESTION_COM_LINA".LAP_Code_prog;
"DB576_PROG_EN_COURS".NOM := "DB597_STOCKAGE_PROG_071_080".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].NOM;
"DB576_PROG_EN_COURS".ETAPES := "DB597_STOCKAGE_PROG_071_080".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB597_STOCKAGE_PROG_071_080".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].COMPLEMENT;
END_IF;

IF "DB550_GESTION_COM_LINA".LAP_Code_prog >= 81 AND "DB550_GESTION_COM_LINA".LAP_Code_prog < 91 THEN
"DB576_PROG_EN_COURS".CODE_PROG := "DB550_GESTION_COM_LINA".LAP_Code_prog;
"DB576_PROG_EN_COURS".NOM := "DB598_STOCKAGE_PROG_081_090".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].NOM;
"DB576_PROG_EN_COURS".ETAPES := "DB598_STOCKAGE_PROG_081_090".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB598_STOCKAGE_PROG_081_090".PROGRAMMES["DB550_GESTION_COM_LINA".LAP_Code_prog].COMPLEMENT;
END_IF;

IF "DB550_GESTION_COM_LINA".LAP_Code_prog >= 91 AND "DB599_STOCKAGE_PROG_AUTRES".Code_programme = "DB550_GESTION_COM_LINA".LAP_Code_prog THEN
"DB576_PROG_EN_COURS".CODE_PROG := "DB550_GESTION_COM_LINA".LAP_Code_prog;
"DB576_PROG_EN_COURS".NOM := "DB599_STOCKAGE_PROG_AUTRES".PROGRAMMES.NOM;
"DB576_PROG_EN_COURS".ETAPES := "DB599_STOCKAGE_PROG_AUTRES".PROGRAMMES.ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB599_STOCKAGE_PROG_AUTRES".PROGRAMMES.COMPLEMENT;
END_IF;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Affectation du progamme en cours';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Programme en cours affecte';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 200;
END_IF;
END_IF;

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

(*A TESTER : potentiellement intéressant pour l'Hypervision*)
(*"DB571_PARAM_RECETTE_EN_COURS".HEURE_DEBUT := "DB810_GESTION_IHM".Date_heure_en_cours_bcd[1];*)

"DB550_GESTION_COM_LINA".LAP_Dmd_de_lancement := 0;
"DB550_GESTION_COM_LINA".LAP_Code_prog := 0;
"DB550_GESTION_COM_LINA".LAP_Confirmation_demande := 0;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Reinitialisation des donnees d echange ';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Donnees reinitialisee';

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

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Verif attente demande de modification';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Demande ou aucune demande de modif';

(*Demande modification*)
IF "DB550_GESTION_COM_LINA".SP_Dmd_modif_prog_en_cours THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 400;
END_IF;

(*Aucune demande de modification*)
IF NOT "DB550_GESTION_COM_LINA".SP_Dmd_modif_prog_en_cours AND "DB562_SEQ_PROG_EN_COURS".SEQ.T_1S > 1 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 1000;
END_IF;
END_IF;

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

"DB576_PROG_EN_COURS".ETAPES := "DB551_PROG_RECEPT_LINA".ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB551_PROG_RECEPT_LINA".COMPLEMENT;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Recopie du tampon dans le programme en cours';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Reponse modif en cours traitee';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 500;
END_IF;
END_IF;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente retour Lina';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Retour Lina effectue';

IF NOT "DB550_GESTION_COM_LINA".SP_Rep_modif_prog_en_cours_api THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 600;
END_IF;
END_IF;

(*Etape 600 : Attente demande vidage tampon*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 600 THEN

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente demande vidage tampon';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Demande de vidage effectue';

IF "DB550_GESTION_COM_LINA".SP_Dmd_vidage_tampon THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 700;
END_IF;
END_IF;

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

"NULL" := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.INT03 := FILL(BVAL := "NULL", BLK => "DB551_PROG_RECEPT_LINA");

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Vidage du tableau tampon';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Tableau tampon vide';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 800;
END_IF;
END_IF;

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

"DB550_GESTION_COM_LINA".SP_Rep_vidage_tampon_api := 1;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Reponse tableau tampon vide';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Reponse effectuee';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 900;
END_IF;
END_IF;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente reinitialisation des donnees d echange';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Donnees d echange reinitialisee';

IF "DB550_GESTION_COM_LINA".SP_Rep_vidage_tampon_api = 0 AND "DB550_GESTION_COM_LINA".SP_Dmd_vidage_tampon = 0 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 1000;
END_IF;
END_IF;
END_REGION

REGION 1000 TYPE DE LANCEMENT

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

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

"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_00 := 1; (*départ différé*)
ELSE
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_00 := 0; (*départ direct*)
END_IF;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Verification type de depart';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Type de depart determine';

(*Départ différé*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_00 = 1 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 1100;
END_IF;

(*Départ direct*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.CMD01_00 = 0 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2000;
END_IF;
END_IF;

REGION Départ différé

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

//Sauvegarde date de départ
"DB577_PARAM_PROG_EN_COURS".JOUR_MOIS_DEBUT := ("DB550_GESTION_COM_LINA".DD_mois * 100) + "DB550_GESTION_COM_LINA".DD_jour;
"DB577_PARAM_PROG_EN_COURS".HEURE_MINUTE_DEBUT := ("DB550_GESTION_COM_LINA".DD_heure * 100) + "DB550_GESTION_COM_LINA".DD_minute;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Sauvegarde date de depart';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Date sauvegardee';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 1110;
END_IF;
END_IF;

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

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'RAZ donnee echange depart differe';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Donnees reinitialisee';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 1120;
END_IF;
END_IF;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.INT01 := (USINT_TO_INT("DB20000_LINA".date_heure_en_cours.MONTH) * 100) + USINT_TO_INT("DB20000_LINA".date_heure_en_cours.DAY);
"DB562_SEQ_PROG_EN_COURS".SEQ.INT02 := (USINT_TO_INT("DB20000_LINA".date_heure_en_cours.HOUR) * 100) + USINT_TO_INT("DB20000_LINA".date_heure_en_cours.MINUTE);

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente depart differe';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Dmd modif ou depart direct ou date depart ok ou dmd annulation';

(*Demande de modif en cours*)
IF "DB550_GESTION_COM_LINA".SP_Dmd_modif_prog_en_cours THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 1130;
END_IF;

(*Temps départ différé = temps départ direct*)
IF "DB577_PARAM_PROG_EN_COURS".JOUR_MOIS_DEBUT = "DB562_SEQ_PROG_EN_COURS".SEQ.INT01 AND "DB577_PARAM_PROG_EN_COURS".HEURE_MINUTE_DEBUT = "DB562_SEQ_PROG_EN_COURS".SEQ.INT02 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2000;
END_IF;

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

(*annulation*)
IF "DB550_GESTION_COM_LINA".LAP_Dmd_annulation = 1 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 3000;
END_IF;
END_IF;

(*étape 1130 : Sauvegarde modification programme *)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 1130 THEN

(*Sauvegarde modification données programme*)
"DB576_PROG_EN_COURS".ETAPES := "DB551_PROG_RECEPT_LINA".ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB551_PROG_RECEPT_LINA".COMPLEMENT;

(*Sauvegarde modification Date de départ*)
"DB577_PARAM_PROG_EN_COURS".JOUR_MOIS_DEBUT := ("DB550_GESTION_COM_LINA".DD_mois * 100) + "DB550_GESTION_COM_LINA".DD_jour;
"DB577_PARAM_PROG_EN_COURS".HEURE_MINUTE_DEBUT := ("DB550_GESTION_COM_LINA".DD_heure * 100) + "DB550_GESTION_COM_LINA".DD_minute;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Sauvegarde donnees modification';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Donnees sauvegardees';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 1140;
END_IF;
END_IF;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente retour Lina reponse modif prog en cours';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Reponse Lina ok';

IF NOT "DB550_GESTION_COM_LINA".SP_Rep_modif_prog_en_cours_api THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 1150;
END_IF;
END_IF;

(*Etape 1150 : Attente demande vidage tampon*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 1150 THEN

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente demande vidage tampon';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Demande vidage ok';

IF "DB550_GESTION_COM_LINA".SP_Dmd_vidage_tampon THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 1160;
END_IF;
END_IF;

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

"NULL" := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.INT03 := FILL(BVAL := "NULL", BLK => "DB551_PROG_RECEPT_LINA");

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Raz tableau tampon';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Tableau vide';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 1170;
END_IF;
END_IF;

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

"DB550_GESTION_COM_LINA".SP_Rep_vidage_tampon_api := 1;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Reponse tableau vide';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Reponse emise';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 1180;
END_IF;
END_IF;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := ' Attente donnees echange Lina raz';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Donnees echange Lina reinitialisees';

IF "DB550_GESTION_COM_LINA".SP_Rep_vidage_tampon_api = 0 AND "DB550_GESTION_COM_LINA".SP_Dmd_vidage_tampon = 0 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2000;
END_IF;
END_IF;
END_REGION
END_REGION

REGION 2000 Programme en cours

(*DEMANDE DE SYNCHRO CI*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 2000 AND "DB204_SEQ_PROCESS_CI".SEQ.NUM_ETAPE = 25 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2005;
END_IF;
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 2005 AND "DB204_SEQ_PROCESS_CI".SEQ.NUM_ETAPE <> 25 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2010;
END_IF;

(*Demande annulation durant la Demande de synchro*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 2010 THEN

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente demande synchro fin condition initiales';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'CI ok ou dmd annulation programme';

IF "DB550_GESTION_COM_LINA".LAP_Dmd_annulation THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 3000;
END_IF;
END_IF;

(*ATTENTE RETOUR DE SYNCHRO CI*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 2010 AND "DB204_SEQ_PROCESS_CI".SEQ.NUM_ETAPE = 31010 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2015;
END_IF;
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 2015 AND "DB204_SEQ_PROCESS_CI".SEQ.NUM_ETAPE <> 31010 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2020;
END_IF;

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

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

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

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

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

(*RAZ du stockage des données liées au départ différé*)
"NULL" := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.INT01 := FILL(BVAL := "NULL", BLK => "DB577_PARAM_PROG_EN_COURS");

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Gestion etat programme en cours';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Etape en cours';

IF "DB550_GESTION_COM_LINA".E_Etape_en_cours <> 0 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2040;
END_IF;
END_IF;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente notif Lina ou fin de programme ';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Notif Lina ou fin de programme';

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

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

(*Demande de reprise*)
IF "DB550_GESTION_COM_LINA".LAP_Num_etape_demarrage <> 0 AND "DB550_GESTION_COM_LINA".SP_Dmd_reprise THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2050;
END_IF;

(*Demande annulation*)
IF "DB550_GESTION_COM_LINA".LAP_Dmd_annulation THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 3000;
END_IF;

(*Demande modif prog en cours*)
IF "DB550_GESTION_COM_LINA".SP_Dmd_modif_prog_en_cours THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 6000;
END_IF;

(*fin du programme*)
IF "DB576_PROG_EN_COURS".ETAPES["DB550_GESTION_COM_LINA".E_Etape_en_cours].CODE_ETAPE = 0 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 30000;
END_IF;
END_IF;

(*DEMANDE DE SYNCHRO ARRET*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 2050 AND "DB200_SEQ_PROCESS".SEQ.NUM_ETAPE = 5 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2055;
END_IF;
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 2055 AND "DB200_SEQ_PROCESS".SEQ.NUM_ETAPE <> 5 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2060;
END_IF;

(*etape 2060 : Analyse demande traitement Lina*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 2060 THEN

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Analyse demande traitement Lina';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Demande de saut d etape ou reprise';

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

(*Demande de reprise*)
IF "DB550_GESTION_COM_LINA".LAP_Num_etape_demarrage <> 0 AND "DB550_GESTION_COM_LINA".SP_Dmd_reprise THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 5000;
END_IF;
END_IF;

END_REGION

REGION 3000 Annulation

(*DEMANDE DE SYNCHRO ARRET*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 3000 AND "DB200_SEQ_PROCESS".SEQ.NUM_ETAPE = 15 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 3005;
END_IF;
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 3005 AND "DB200_SEQ_PROCESS".SEQ.NUM_ETAPE <> 15 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 3010;
END_IF;

(*etape 3010 : Attente confimation annulation *)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 3010 THEN

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente confimation annulation';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 3020;
END_IF;
END_IF;

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

"DB550_GESTION_COM_LINA".LAP_Dmd_annulation := 0;
"DB550_GESTION_COM_LINA".LAP_Confirmation_demande := 0;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Demande annulation traitee';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Demande annulation traitee';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 30000;
END_IF;
END_IF;
END_REGION

REGION 4000 Saut étape

(*étape 4000 : Affectation étape destination*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 4000 THEN

"DB550_GESTION_COM_LINA".E_Etape_en_cours := "DB550_GESTION_COM_LINA".SE_Etape_ou_aller;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Recuperation de l etape ou aller ';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Demande annulation traitee';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 4010;
END_IF;
END_IF;

(*étape 4010 : Attente confirmation Lina*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 4010 THEN

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente confirmation Lina';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Confirmation Lina saut d etape';

IF "DB550_GESTION_COM_LINA".SE_Confirmation_Saut_Etape THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 4020;
END_IF;
END_IF;

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

"DB550_GESTION_COM_LINA".SE_Etape_ou_aller := 0;
"DB550_GESTION_COM_LINA".SE_Confirmation_Saut_Etape := 0;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'RAZ des donnees d echanges Lina';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "DB550_GESTION_COM_LINA".SE_Etape_ou_aller = 0 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2020;
END_IF;
END_IF;
END_REGION

REGION 5000 Reprise

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

"NULL" := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.INT01 := FILL(BVAL :="NULL", BLK => "DB556_REMONTEE_DATA_PROG");

"DB550_GESTION_COM_LINA".E_Etape_en_cours := "DB550_GESTION_COM_LINA".LAP_Num_etape_demarrage;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'RAZ des remontees de donnees';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 5010;
END_IF;
END_IF;

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

"DB550_GESTION_COM_LINA".SP_Rep_reprise_api := 1;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Reponse de reprise api';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 5020;
END_IF;
END_IF;

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

"DB550_GESTION_COM_LINA".LAP_Num_etape_demarrage := 0;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Raz du nom etape demarrage';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 5030;
END_IF;
END_IF;

(*Etape 5030 : Attente demande vidage tampon*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 5030 THEN

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente demande vidage tampon';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Demande de vidage ok';

IF "DB550_GESTION_COM_LINA".SP_Dmd_vidage_tampon THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 5040;
END_IF;
END_IF;

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

"NULL" := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.INT03 := FILL(BVAL := "NULL", BLK => "DB551_PROG_RECEPT_LINA");

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Raz du DB recette tampon par automate';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 5050;
END_IF;
END_IF;

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

"DB550_GESTION_COM_LINA".SP_Rep_vidage_tampon_api := 1;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Reponse vidage tampon OK';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 5060;
END_IF;
END_IF;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente echange Lina raz';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Donnees echanges raz';

IF "DB550_GESTION_COM_LINA".SP_Rep_vidage_tampon_api = 0 AND "DB550_GESTION_COM_LINA".SP_Dmd_vidage_tampon = 0 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2020;
END_IF;
END_IF;
END_REGION

REGION 6000 Modification du programme en cours

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

"DB576_PROG_EN_COURS".ETAPES := "DB551_PROG_RECEPT_LINA".ETAPES;
"DB576_PROG_EN_COURS".COMPLEMENT := "DB551_PROG_RECEPT_LINA".COMPLEMENT;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Recopie du tampon dans la recette en cours';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 6010;
END_IF;
END_IF;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente RAZ modif en prog en cours';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Donnee modif prog en cours raz';

IF NOT "DB550_GESTION_COM_LINA".SP_Rep_modif_prog_en_cours_api THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 6020;
END_IF;
END_IF;

(*Etape 6020 : Attente demande vidage tampon*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 6020 THEN

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente demande vidage tampon';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Demande de vidage Lina';

IF "DB550_GESTION_COM_LINA".SP_Dmd_vidage_tampon THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 6030;
END_IF;
END_IF;

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

"NULL" := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.INT03 := FILL(BVAL := "NULL", BLK => "DB551_PROG_RECEPT_LINA");

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Raz du DB recette tampon par automate';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 6040;
END_IF;
END_IF;

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

"DB550_GESTION_COM_LINA".SP_Rep_vidage_tampon_api := 1;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Reponse vidage tampon OK';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 6050;
END_IF;
END_IF;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente echange Lina raz';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Donnees echange Lina raz';

IF "DB550_GESTION_COM_LINA".SP_Rep_vidage_tampon_api = 0 AND "DB550_GESTION_COM_LINA".SP_Dmd_vidage_tampon = 0 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 2030;
END_IF;
END_IF;
END_REGION

REGION 30000 Fin de programme
(*étape 30000 : Fin de programme*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 30000 THEN

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Fin de programme';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 30010;
END_IF;
END_IF;

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

(*DEMANDE DE SYNCHRO REINITIALISATION*)
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 30020 AND "DB202_SEQ_PROCESS_ARRET".SEQ.NUM_ETAPE = 25 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 30025;
END_IF;
IF "DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE = 30025 AND "DB202_SEQ_PROCESS_ARRET".SEQ.NUM_ETAPE <> 25 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 30030;
END_IF;

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

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

"DB550_GESTION_COM_LINA".RV_Remonte_valeur_top_courbe := 0;
"DB550_GESTION_COM_LINA".RV_Remonte_valeur_arret_prog := 1;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Demande fin de programme';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "Tjrs_1" THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 30050;
END_IF;
END_IF;

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

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Attente fin de programme Lina';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := 'Lina fin de programme';

IF "DB550_GESTION_COM_LINA".RV_Remonte_valeur_arret_prog = 0 OR "DB562_SEQ_PROG_EN_COURS".SEQ.T_1S > 10 (*attente modif SEB*) THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 30060;
END_IF;
END_IF;

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

"NULL" := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.INT03 := FILL(BVAL := "NULL", BLK => "DB576_PROG_EN_COURS");
"DB562_SEQ_PROG_EN_COURS".SEQ.INT03 := FILL(BVAL := "NULL", BLK => "DB556_REMONTEE_DATA_PROG");

//RAZ SEQ PROCESS POUR SYNCHRONISATION PROG
"DB562_SEQ_PROG_EN_COURS".SEQ.CMD02_00 := 1;

"DB562_SEQ_PROG_EN_COURS".SEQ.NOM_ETAPE := 'Vidange recette en cours';
"DB562_SEQ_PROG_EN_COURS".SEQ.DESCRIP_TRANSITION := '1';

IF "DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS > 10 THEN
"DB562_SEQ_PROG_EN_COURS".SEQ.T_100MS := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.T_1S := 0;
"DB562_SEQ_PROG_EN_COURS".SEQ.NUM_ETAPE := 10;
END_IF;
END_IF;
END_REGION

///// DIVERS /////

REGION REMONTEE VALEUR

IF "DB200_SEQ_PROCESS".SEQ.NUM_ETAPE > 99 AND "DB200_SEQ_PROCESS".SEQ.NUM_ETAPE < 30999 AND "DB550_GESTION_COM_LINA".E_Etape_en_cours <> 0 THEN

"DB556_REMONTEE_DATA_PROG".Etapes["DB550_GESTION_COM_LINA".E_Etape_en_cours].PARAMETRE_02 := "DB200_SEQ_PROCESS".SEQ.INT03;
"DB556_REMONTEE_DATA_PROG".Etapes["DB550_GESTION_COM_LINA".E_Etape_en_cours].PARAMETRE_04 := "DB200_SEQ_PROCESS".SEQ.INT04;
END_IF;

END_REGION