Convoyeur Modulaire

Tutoriel : GPAO - Com LINA Automate - 09/2024

4. Évènement Production

4.1 Com LINA API production

4.1.1 EVT Prod dans l’API

Deux UDT permettent la communication production entre le logiciel Lina et l’automate :

UDT_LINA_Gestion_evt Prod

Figure 66 : UDT_LINA_Gestion_evt Prod

IJDT_LINA_EvtProd

Figure 67 : IJDT_LINA_EvtProd

Dans le DB500, clic [GEST_]EVT_PROD :

DB500_LINA_OF_CONV prod

Figure 68 : DB500_LINA_OF_CONV prod

SFC EVT production

Figure 69 : SFC EVT production

Réseau 4 EVTProduction tasse 3 bille

Figure 70 : Réseau 4 EVTProduction tasse 3 bille

prm FC270_EVT_Prod

Figure 71 : prm FC270_EVT_Prod

REGION INIT
//INIT SEQUENCE PAR AFFICHEUR
IF #RAZ_SEQ THEN #SEQ.NUM_ETAPE := 0; END_IF;

L10:;
//RAZ DES VARIABLES
IF #SEQ.NUM_ETAPE = 0 THEN

#SEQ.T_100MS := 0;
#SEQ.T_1S := 0;

#SEQ.CMD1_0:=0; (* Production réalisée avec succès *)
#SEQ.CMD1_1:=0; (* Production en défaut *)
#SEQ.CMD1_2:=0; (* Production en cours *)
#SEQ.CMD1_3:=0; (* *)
#SEQ.CMD1_4:=0; (* *)
#SEQ.CMD1_5:=0; (* *)
#SEQ.CMD1_6:=0; (* *)
#SEQ.CMD1_7:=0; (* *)
#SEQ.CMD1_8:=0; (* *)
#SEQ.CMD1_9:=0; (* *)
#SEQ.CMD1_10:=0; (* *)
#SEQ.CMD1_11:=0; (* *)
#SEQ.CMD1_12:=0; (* *)
#SEQ.CMD1_13:=0; (* *)
#SEQ.CMD1_14:=0; (* *)
#SEQ.CMD1_15:=0; (* *)

#SEQ.INT_1:=0;
#SEQ.INT_2:=0;

END_IF;

L20:;
//SAUT SI AU POUR FIGER SEQUENCE
IF "AlwaysFALSE" THEN GOTO L999; END_IF;

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

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

REGION Création d'un OF
(* Preparation au demarrage *)
IF #SEQ.NUM_ETAPE=10 THEN

#SEQ.CMD1_0:=0; (* Production réalisée avec succès *)
#SEQ.CMD1_1:=0; (* Production en défaut *)
#SEQ.CMD1_2:=0; (* Production en cours *)
#SEQ.CMD1_3:=0; (* *)
#SEQ.CMD1_4:=0; (* *)
#SEQ.CMD1_5:=0; (* *)
#SEQ.CMD1_6:=0; (* *)
#SEQ.CMD1_7:=0; (* *)
#SEQ.CMD1_8:=0; (* *)
#SEQ.CMD1_9:=0; (* *)
#SEQ.CMD1_10:=0; (* *)
#SEQ.CMD1_11:=0; (* *)
#SEQ.CMD1_12:=0; (* *)
#SEQ.CMD1_13:=0; (* *)
#SEQ.CMD1_14:=0; (* *)
#SEQ.CMD1_15:=0; (* *)

#SEQ.INT_1:=0; (* *)
#SEQ.INT_2:=0; (* *)

(* Conditions de lancement *)
IF #Dmd_Prod THEN
#SEQ.T_100MS:=0;
#SEQ.T_1S:=0;
#SEQ.NUM_ETAPE:=100;
END_IF;
END_IF;

(* Ouverture et Actualisation des données lu en début d'évènement *)
IF #SEQ.NUM_ETAPE = 100 THEN

"DB500_LINA_OF_CONV".GEST_EVT_PROD.Declencheur := 1;
"DB500_LINA_OF_CONV".GEST_EVT_PROD.Evt_termine := 0;

"DB500_LINA_OF_CONV".EVT_PROD.OF_SEQ_ID := #OF_SEQ_ID;
"DB500_LINA_OF_CONV".EVT_PROD.ART_ID_CODE := #ART_ID_CODE; (* Tasse 3 bille *)
"DB500_LINA_OF_CONV".EVT_PROD.ZONE_STOCK := #ZONE_STOCK; (* Yffiniac *)

#SEQ.CMD1_0:=0; (* Production réalisée avec succès *)

IF #SEQ.T_1S > 60 THEN #SEQ.CMD1_1:=1; END_IF; (* Production en défaut *)

(* Evènement Production ouvert *)
IF "DB500_LINA_OF_CONV".GEST_EVT_PROD.Evt_active = 1 THEN
#SEQ.CMD1_1:=0; (* Production en défaut *)
#SEQ.T_100MS := 0;
#SEQ.T_1S := 0;
#SEQ.NUM_ETAPE := 110;
END_IF;
END_IF;

(* Attente fin de Production *)
IF #SEQ.NUM_ETAPE = 110 THEN

(* Cloture définitive de l'évènement *)
IF NOT #Dmd_Prod THEN
#SEQ.T_100MS := 0;
#SEQ.T_1S := 0;
#SEQ.NUM_ETAPE := 300;
END_IF;
END_IF;

(* Actualisation des données lu en fin d'évènement *)
IF #SEQ.NUM_ETAPE = 300 THEN

"DB500_LINA_OF_CONV".GEST_EVT_PROD.Evt_active := 0;

"DB500_LINA_OF_CONV".EVT_PROD.QTE_POIDS := 1;

(* Tempo *)
IF #SEQ.T_100MS >= 0 THEN
#SEQ.T_100MS:=0;
#SEQ.T_1S:=0;
#SEQ.NUM_ETAPE:=310;
END_IF;
END_IF;

(* Cloture définitive *)
IF #SEQ.NUM_ETAPE = 310 THEN

"DB500_LINA_OF_CONV".GEST_EVT_PROD.Declencheur := 0;

IF #SEQ.T_1S > 60 THEN #SEQ.CMD1_1:=1; END_IF; (* Production en défaut *)

(* Evènement Production terminé *)
IF "DB500_LINA_OF_CONV".GEST_EVT_PROD.Evt_termine = 1 THEN
"DB500_LINA_OF_CONV".GEST_EVT_PROD.Evt_termine := 0;
#SEQ.CMD1_1:=0; (* Production en défaut *)
#SEQ.T_100MS:=0;
#SEQ.T_1S:=0;
#SEQ.NUM_ETAPE:=320;
END_IF;
END_IF;

(* Attente fin Cloture définitive *)
IF #SEQ.NUM_ETAPE = 320 THEN

#SEQ.CMD1_0:=1; (* Production réalisée avec succès *)

(* Fin cloture définitive *)
IF #Dmd_synchro_fin THEN
#SEQ.T_100MS:=0;
#SEQ.T_1S:=0;
#SEQ.NUM_ETAPE:=10;
END_IF;
END_IF;

END_REGION
L999:;

4.1.2 EVT Prod dans Lina

Dans Editer Modèle structure :

Structure de gestion EVT Prod

Figure 72 : Structure de gestion EVT Prod

La structure de gestion de l’évènement Production UDT_LINA_Gest_EVT est commune aux évènements.

Dans l’onglet Général :

Structure UDT_LINA_Prod OF_SEQ_ID

Figure 73 : Structure UDT_LINA_Prod OF_SEQ_ID

Nom : UDT_LINA_Prod
Colonne Nom : OF_SEQ_ID

Attention à l’inversion de l’abréviation « ART » dans l’ID du Code de l’ARTicle.

  1. ID_CODE_ART dans EVT CreaOF et Conso ;
  2. ART_ID_CODE dans EVT Prod.
Mnémo EVT Prod

Figure 74 : Mnémo EVT Prod

Dans Editer Evènement, 1er onglet Définition :

Définition EVT Prod

Figure 75 : Définition EVT Prod

Nom : EVT_PROD

Dans le 2e onglet Acquisition :

Acquisition EVT Prod

Figure 76 : Acquisition EVT Prod

Dans le 3e onglet Données associées :

Données associées ART_ID_CODE PROD

Figure 77 : Données associées ART_ID_CODE PROD

Nom : ART_ID_CODE

DA Type EVT PROD

Figure 78 : DA Type EVT PROD

Nom : Type
Valeur : 3
Type de trace : Type Action

Gestion DA OF ID PROD

Figure 79 : Gestion DA OF ID PROD

DA ART_ID_CODE PROD

Figure 80 : DA ART_ID_CODE PROD

DA QTE_POIDS PROD

Figure 81 : DA QTE_POIDS PROD

DA Zone de stock Code PROD

Figure 82 : DA Zone de stock Code PROD

Évènement DA Evt_Actif PROD

Figure 83 : Évènement DA Evt_Actif PROD

DA Evt_terminé PROD

Figure 84 : DA Evt_terminé PROD