Convoyeur Modulaire

Tutoriel : GPAO - Com LINA Automate - 09/2024

2.2 Com LINA API nouveau OF

2.2.1 EVT new OF dans API

Pour que l’automate puisse communiquer avec le logiciel Lina sur la création d’un OF, on aura besoin de deux UDT :

UDT_LINA_Gestion_evt new OF

Figure 27 : UDT_LINA_Gestion_evt new OF

UDT_LINA_EvtCreaOF

Figure 28 : UDT_LINA_EvtCreaOF

Le DB500 sera commun pour tout le poste de charge convoyeur modulaire.

DB500_LINA_OF_CONV [DB500]

Figure 29 : DB500_LINA_OF_CONV [DB500]

Dans le DB500 :

  1. Clic GEST_EVT_CREA_OF dans le premier cadre bleu ;
  2. Clic EVT_CREA_OF dans le second cadre en rouge.

Par la suite, ces deux clics seront notés sur une ligne :
Dans le DB500, clic [GEST_]EVT_<nom de l’EVT>.

Pour la communication du logiciel Lina avec l’automate, il faut une section de code FC. Dans ce FC, nous allons trouver la séquence SFC de création OF.

SFC création OF

Figure 30 : SFC création OF

Nous avons vu dans ce chapitre que lors du lancement d’un OF, une procédure se rattache permettant de communiquer avec l’automate.
C’est pourquoi, lorsque c’est l’automate qui crée un OF, nous attendons ⌛ le retour d’information nomenclature créée.

Appel du FC250_EVT_CreaOF liée au convoyeur Modulaire :
L’avantage de créer des blocs FC paramétrés est d’avoir à copier-coller le FC et de remplacer le DB utilisé dedans. DB500_LINA_OF_CONV fait le lien entre le convoyeur modulaire et LINA.

Réseau 1 FC250_EVT_CreaOF

Figure 31 : Réseau 1 FC250_EVT_CreaOF

FC250_EVT_CreaOF

Figure 32 : FC250_EVT_CreaOF

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; (* Création d'OF réalisée avec succès *)
#SEQ.CMD1_1:=0; (* Création d'OF en défaut *)
#SEQ.CMD1_2:=0; (* Demande de création d'OF prise en compte *)
#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; (* Création d'OF réalisée avec succès *)
#SEQ.CMD1_1:=0; (* Création d'OF en défaut *)
#SEQ.CMD1_2:=0; (* Demande de création d'OF prise en compte *)
#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_Création THEN
#SEQ.T_100MS:=0;
#SEQ.T_1S:=0;
#SEQ.NUM_ETAPE:=100;
END_IF;
END_IF;

(* Vérification qu'aucun autre OF est en cours *)
IF #SEQ.NUM_ETAPE = 100 THEN

#SEQ.CMD1_1:=0; (* Création d'OF en défaut *)
#SEQ.CMD1_2:=1; (* Demande de création d'OF prise en compte *)

(* Pas d'OF en cours *)
IF "DB500_LINA_OF_CONV".NOMENCLATURE.OF_ID = 0 THEN
#SEQ.T_100MS := 0;
#SEQ.T_1S := 0;
#SEQ.NUM_ETAPE := 110;
ELSE
#SEQ.CMD1_1:=1; (* Création d'OF en défaut *)
END_IF;
END_IF;

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

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

"DB500_LINA_OF_CONV".EVT_CREA_OF.ID_PROCEDURE := #ID_PROCEDURE; (* 101 = Procédure convoyage modulaire *)
"DB500_LINA_OF_CONV".EVT_CREA_OF.ART_ID_CODE := #ART_ID_CODE; (* 3 = Tasse 3 bille *)
"DB500_LINA_OF_CONV".EVT_CREA_OF.QTE_POIDS := #QTE_POIDS; (* Nombre de tasse 3 bille à produire *)

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

(* Evènement Création d'OF ouvert *)
IF "DB500_LINA_OF_CONV".GEST_EVT_CREA_OF.Evt_active = 1 THEN
"DB500_LINA_OF_CONV".GEST_EVT_CREA_OF.Declencheur := 0;
#SEQ.CMD1_1:=0; (* Création d'OF en défaut *)

#SEQ.T_100MS := 0;
#SEQ.T_1S := 0;
#SEQ.NUM_ETAPE := 120;
END_IF;
END_IF;

(* Attente fin d'écriture de nomenclature *)
IF #SEQ.NUM_ETAPE = 120 THEN

"DB500_LINA_OF_CONV".GEST_EVT_CREA_OF.Evt_active := 0;

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

(* Evènement création d'OF terminé *)
IF "DB500_LINA_OF_CONV".GEST_NOMENCLATURE.LINA_FIN_ECRITURE <> 0 AND "DB500_LINA_OF_CONV".NOMENCLATURE.OF_ID <> 0 THEN
"DB500_LINA_OF_CONV".GEST_NOMENCLATURE.LINA_FIN_ECRITURE := 0;
#SEQ.CMD1_1:=0; (* Création d'OF en défaut *)

#SEQ.T_100MS := 0;
#SEQ.T_1S := 0;
#SEQ.NUM_ETAPE := 130;
END_IF;
END_IF;

(* Information OF créé avec succès *)
IF #SEQ.NUM_ETAPE = 130 THEN

#SEQ.CMD1_0:=1; (* Création d'OF réalisée avec succès *)
#SEQ.CMD1_2:=0; (* Demande de création d'OF prise en compte *)

(* Fin de création *)
IF #Dmd_synchro_fin THEN
#SEQ.T_100MS:=0;
#SEQ.T_1S:=0;
#SEQ.NUM_ETAPE:=10;
END_IF;
END_IF;
END_REGION
L999:;

2.2.2 EVT new OF dans Lina

La structure de Gestion d’évènement sera commune aux évènements :

  1. Création d’OF ;
  2. Consommation ;
  3. Production ;
  4. Clôture d’OF.

Cette structure d’échange permet le déclenchement et le suivi d’un évènement.
Dans Editer Modèle structure, onglet Général :

UDT_LINA_Gest_EVT Déclencheur CreaOF

Figure 33 : UDT_LINA_Gest_EVT Déclencheur CreaOF

Nom : UDT_LINA_Gest_EVT
Variables : « Déclencheur »
Type : Entier
Val. défaut : 0
Mode Gestion : Consigne/Paramètres

Structure de création d’OF :

Attention : si la même structure de Gestion d’évènement se retrouvera dans chaque « EVT dans Lina », les variables et les mnémoniques sont spécifiques à l’EVT.

UDT_LINA_CreaOF ID_CODE_ART CreaOF

Figure 34 : UDT_LINA_CreaOF ID_CODE_ART CreaOF

Nom : UDT_LINA_CreaOF
Variables :
Nom : ID_CODE_ART
Il s’agit de l’IDentification du CODE de l’ARTicle.
Type : Double Entier
Val. défaut : 0
Mode Gestion : Consigne/Paramètres

Mnémoniques spécifiques à l’évènement de création d’OF :

Mnémo EVT CreaOF

Figure 35 : Mnémo EVT CreaOF

Évènement création d’OF
Dans Editer Evènement, 1er onglet Définition :

Définition EVT_CREA_OF

Figure 36 : Définition EVT_CREA_OF

Nom : EVT_CREA_OF
Purge des données au dela de : 365 jours

Dans le 2e onglet Acquisition :

Acquisition Déclencheur CREA_OF

Figure 37 : Acquisition Déclencheur CREA_OF

Mnemo de valeur : API_CONV.DB500.GEST_EVT_CREA_OF[001].Déclencheur
Valeurs : Val > 0,0000
Lecture des données associées : En début d’évènement :

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

Données associées Article Code CREA_OF

Figure 38 : Données associées Article Code CREA_OF

Nom : Article (Code)
Mnémo de valeur : API_CONV.DB500.EVT_CREA_OF[001].ID_CODE_ART
Type d’acquisition : Valeur API
Tableau à plat – N° … : 0

Dans Editer Données associées :

Data associée Procédure ID CREA_OF

Figure 39 : Data associée Procédure ID CREA_OF

Nom : Procédure (ID)
Valeur : 101
Type de trace : Procédure

Données associées Type CREA_OF

Figure 40 : Données associées Type CREA_OF

Nom : Type
Valeur : 5
Type de trace : Type Action

Data associée Article Code CREA_OF

Figure 41 : Data associée Article Code CREA_OF

Nom : Article (Code)
Mnémo de valeur : API_CONV.DB500.GEST_EVT_CREA_OF[001]. ID_CODE_ART
Type de trace : Article

Données associées Quantité CREA_OF

Figure 42 : Données associées Quantité CREA_OF

Nom : Quantité (Quantite)
Mnémo de valeur : API_CONV.DB500.GEST_EVT_CREA_OF[003]. QTE_POIDS
Type de trace : Quantite

Data associée Evt_Actif CREA_OF

Figure 43 : Data associée Evt_Actif CREA_OF

Nom : Evt_actif
Type d’acquisition : Valeur API
Mnémo de valeur : API_CONV.DB500.GEST_EVT_CREA_OF[001]. Déclencheur
Lecture début évènement :

Dans l’onglet Ecriture API du bas :
Mnémo à écrire : API_CONV.DB500.GEST_EVT_CREA_OF[002].Evt_Active
Déclencheur d’écriture :
Lorsque la valeur donnée associée = 1,00
Valeur à écrire : Valeur fixe 1,00

Data associées Evt_terminé CREA_OF

Figure 44 : Data associées Evt_terminé CREA_OF

Mnémo à écrire : API_CONV.DB500.GEST_EVT_CREA_OF[003].Evt_Termine
Déclencheur d’écriture : En fin d’évènement
Valeur à écrire : Valeur fixe 1,00