FB pilotage presse PROFINET
Pour faciliter le pilotage de la presse depuis un automate, nous avons développé un bloc fonctionnel (FB_MecaMotion_presse).
Celui-ci reprend l'ensemble des entrées et sorties PROFINET nécessaires pour piloter la presse.
Liste des entrées et sorties du bloc
Nom de la variable |
Déclaration |
Type de donnée |
Description |
---|---|---|---|
Hardware_identifier_press_inputs |
INPUT |
HW_IO |
Numéro identifiant la zone d'adresse des entrées PROFINET |
Hardware_identifier_press_outputs |
INPUT |
HW_IO |
Numéro identifiant la zone d'adresse des sorties PROFINET |
Ack_error |
INPUT |
BOOL |
Acquittement des erreurs (Récupération du front montant) |
Operating_mode |
INPUT |
BYTE |
Mode de marche à activer (Manuel = 1, Automatique = 2) |
Manual_positioning_relative_mode |
INPUT |
BOOL |
Mode de positionnement manuel (Absolu = 0, Relatif = 1) |
Manual_position |
INPUT |
REAL |
Consigne de position pour le positionnement manuel [mm] |
Manual_speed |
INPUT |
REAL |
Consigne de vitesse pour le positionnement manuel [mm/s] |
Manual_acceleration_deceleration |
INPUT |
REAL |
Consigne d'accélération/décélération pour le positionnement manuel [mm/s²] |
Start_manual_positioning |
INPUT |
BOOL |
Démarrer le positionnement manuel (Cette entrée doit être maintenue à "1" jusqu'à ce que la sortie "Manual_position_reached" soit active) |
Jog_downwards |
INPUT |
BOOL |
Marche à vue, la presse descend tant que l'entrée est active (Mode Manuel) |
Jog_upwards |
INPUT |
BOOL |
Marche à vue, la presse monte tant que l'entrée est active (Mode Manuel) |
Go_to_initial_position |
INPUT |
BOOL |
Aller à la position initiale renseignée dans les paramètres de la presse depuis MécaMotion |
Go_to_release_position |
INPUT |
BOOL |
Aller à la position de dégagement renseignée dans les paramètres de la presse depuis MécaMotion |
Stop_movement |
INPUT |
BOOL |
Arrêter le mouvement de l'axe (Mode manuel ou automatique) et mettre en pause l'exécution du programme pièce (Récupération du front montant) |
Continue_movement |
INPUT |
BOOL |
Reprendre le mouvement de l'axe (Mode manuel ou automatique) et continuer l'exécution du programme pièce (Récupération du front montant) |
Reset_force_sensor |
INPUT |
BOOL |
Reset du détecteur de force, l'entrée doit être à "1" pour que le reset s'effectue (Récupération du front montant) (Mode Manuel) |
Force_sensor_range |
INPUT |
BYTE |
Choix de l'échelle du détecteur de force (1 = petite échelle, 2 = grande échelle) Le détecteur de force passe en mode "reset" automatiquement à chaque changement d'échelle (Mode Manuel) |
Program_number |
INPUT |
BYTE |
Numéro de programme à activer (de 1 à 253) (L'activation du programme se fait dès que la valeur de l'entrée est modifiée) |
Envelope_number |
INPUT |
BYTE |
Numéro d'enveloppe à activer (de 1 à 253) (Le décodage de l'enveloppe se fait dès que la valeur de l'entrée est modifiée) |
Envelope_monitoring |
INPUT |
BOOL |
Activer ou désactiver le contrôle de l'enveloppe (L'entrée doit être à "1" pour que le contrôle soit actif) |
Start_program |
INPUT |
BOOL |
Démarrer l'exécution du programme. (Cette entrée est à maintenir à "1" jusqu'a ce que la sortie "Program_finished" ou "Error" soit active) |
Enable_breakpoints |
INPUT |
BOOL |
Activer les points d'arrêt (L'entrée doit rester active pour effectuer les arrêts) |
Continue_after_breakpoint |
INPUT |
BOOL |
Continuer après point d'arrêt (Récupération du front montant) |
Manual_force_limit |
INPUT |
BYTE |
Force limite en mode manuel, en % du paramètre 14/15 "Surcharge avec range N" |
DB_setpoints_results |
INPUT |
DB_ANY |
Bloc de données contenant les variables utilisateurs qui permettent d'envoyer les consignes et recevoir les résultats |
Error |
OUTPUT |
BOOL |
Au moins une erreur est présente si cette sortie est à "1" |
Message |
OUTPUT |
BOOL |
Au moins un avertissement est présent si cette sortie est à "1" |
Axis_enabled |
OUTPUT |
BOOL |
Lorsque cette sortie est à "1" la presse est prête à travailler |
Press_cpu_started |
OUTPUT |
BOOL |
A la mise sous tension de la presse, il faut attendre que cette sortie passe à "1" avant d'envoyer une commande. |
Actual_operating_mode |
OUTPUT |
BYTE |
Mode de marche actif (Manuel = 1, Automatique = 2) |
Manual_positioning_relative_mode_active |
OUTPUT |
BOOL |
Mode de positionnement manuel actif (Absolu = 0, Relatif = 1) |
Manual_position_reached |
OUTPUT |
BOOL |
Cette sortie s'active lorsque la position manuel est atteinte |
Initial_position_reached |
OUTPUT |
BOOL |
Cette sortie s'active lorsque l'axe a atteint sa position initiale |
Release_position_reached |
OUTPUT |
BOOL |
Cette sortie s'active lorsque l'axe a atteint la position de dégagement |
Force_sensor_actual_range |
OUTPUT |
BYTE |
Echelle de force active (1 = petite échelle, 2 = grande échelle) |
Actual_program_number |
OUTPUT |
BYTE |
Numéro de programme actif (de 1 à 253) |
Program_running |
OUTPUT |
BOOL |
Cette sortie s'active lorsque le programme est en cours d'exécution |
Program_finished |
OUTPUT |
BOOL |
Cette sortie s'active lorsque l'exécution du programme est terminée |
Actual_envelope_number |
OUTPUT |
BYTE |
Numéro d'enveloppe active (de 1 à 253) |
Stopwatch_1_running |
OUTPUT |
BOOL |
Chronomètre 1 en cours d'exécution lorsque la sortie est à "1" |
Stopwatch_2_running |
OUTPUT |
BOOL |
Chronomètre 2 en cours d'exécution lorsque la sortie est à "1" |
Stopwatch_3_running |
OUTPUT |
BOOL |
Chronomètre 3 en cours d'exécution lorsque la sortie est à "1" |
Stopwatch_4_running |
OUTPUT |
BOOL |
Chronomètre 4 en cours d'exécution lorsque la sortie est à "1" |
Stopwatch_5_running |
OUTPUT |
BOOL |
Chronomètre 5 en cours d'exécution lorsque la sortie est à "1" |
Crash_occured |
OUTPUT |
BOOL |
Un crash est arrivé |
Crash_release_mode |
OUTPUT |
BOOL |
1 = Remontée automatique après crash, 0 = Reste en bas |
Force_overload_in_manual |
OUTPUT |
BOOL |
Force limite atteinte en mode manuel |
Start_next_program_enabled |
OUTPUT |
BOOL |
0 = Le démarrage du programme est interdit ( MecaMotion n'a pas encore récupéré les résultats - voir paramètre 45 |
Program_on_breakpoint |
OUTPUT |
BOOL |
Programme arrêté sur un point d'arrêt quand la sortie est à "1" |
Actual_position |
OUTPUT |
REAL |
Position actuelle de l'axe en [mm] |
Actual_speed |
OUTPUT |
REAL |
Consigne de vitesse actuelle de l'axe en [mm/s] |
Actual_measuring_sensor_value |
OUTPUT |
REAL |
Valeur du palpeur actuelle en [mm] |
Actual_force |
OUTPUT |
REAL |
Valeur de force actuelle [N] |
Errors_messages |
OUTPUT |
Struct of 120 Bool |
Erreurs et avertissements |
Tableau 1: Désignation des entrées/sorties du bloc
Automate Siemens
Sur les entrées "Hardware_identifier_presse_inputs" (Identifiant de la plage d'entrées Profinet de la presse) et "Hardware_identifier_presse_outputs" (Identifiant de la plage de sorties Profinet de la presse), vous devez donner au format décimal, l'adresse matériel des zones d'entrées et de sorties Profinet.
Lorsque vous utilisez un automate de marque Siemens, vous devez utiliser un bloc de données pour écrire/lire les variables utilisateurs. Ce bloc doit avoir la structure suivante et doit être transféré à l'entrée "DB_setpoints_results".
Structure du DB de consignes et résultats:
Type d'utilisation |
Adresse de début |
Dimension et format |
Description |
---|---|---|---|
Consigne |
0.0 |
50 DWORD |
Variables d'entrée utilisateur de type DINT ou REAL |
Consigne |
200.0 |
32 BOOL |
Variables d'entrée utilisateur de type BOOL |
Consigne |
204.0 |
5 DWORD |
Réserve |
Résultat |
224.0 |
50 DWORD |
Variables de sortie utilisateur de type DINT ou REAL |
Résultat |
424.0 |
32 BOOL |
Variables de sortie utilisateur de type BOOL |
Résultat |
428.0 |
5 DWORD |
Réserve |
Tableau 2: Structure du bloc de données consignes/résultats sous Siemens
Automate Beckhoff
Dans le FB "MecaMotion Presse" pour les automates Beckhoff la déclaration des plages d'entrées et sorties Profinet se font par l'intermédiaire de 2 tableaux de Bytes de longueur 254.
Lorsque vous utilisez un automate de marque Beckhoff, l'écriture/lecture des variables utilisateurs se font par l'intermédiaire de tableaux.
Type d'utilisation |
Dimension et format du tableau |
Description |
---|---|---|
Consigne |
50 DWORD |
Variables d'entrée utilisateur de type DINT ou REAL |
Consigne |
32 BOOL |
Variables d'entrée utilisateur de type BOOL |
Résultat |
50 DWORD |
Variables de sortie utilisateur de type DINT ou REAL |
Résultat |
32 BOOL |
Variables de sortie utilisateur de type BOOL |
Tableau 3: Tableaux consignes/résultats sous Beckhoff
Erreurs du FB
En plus des erreurs Profinet de la presse listées dans le chapitre "Liste des erreurs PROFINET", les erreurs ci-dessous peuvent apparaître, ces erreurs font partie de la structure de Booléens de la sortie "Errors_messages". Si vous utilisez un automate Siemens, la structure doit comporter 120 Booléens.
N° Erreur |
Type |
Description erreur |
Format |
---|---|---|---|
80 |
Erreur |
Presse pas démarrée (la presse est en cours de démarrage) |
BIT |
81 |
Erreur |
Mode manuel pas actif (impossible d'utiliser les commandes manuelles) |
BIT |
82 |
Erreur |
Numéro de programme ou numéro d'enveloppe pas actif au moment du démarrage programme (consigne différente du retour) |
BIT |
83 |
Erreur |
Sélection du mode impossible |
BIT |
Tableau 4: Erreurs internes du bloc fonctionnel
Acquittement des erreurs
Pour acquitter les erreurs vous devez mettre à "1" l'entrée "Ack_error". (détection du front montant)
Changement de mode de fonctionnement
Il y a 2 modes de fonctionnement possibles, manuel = 1 ou automatique = 2.
Pour activer un de ces modes, vous devez écrire dans le byte d'entrée "Operating_mode" (Mode de fonctionnement) une des valeurs listés ci-dessus. Vous pouvez ensuite vérifier que le mode a bien été activé, à l'aide du byte de sortie "Actual_operating_mode" (mode de fonctionnement actif).
Positionnement manuel
Pour effectuer un positionnement manuel, vous devez renseigner les paramètres d'entrées suivant:
•Manual_positioning_relative_mode (Mode de positionnement manuel,absolu=0, relatif=1)
•Manual_position (consigne de position [mm])
•Manual_speed (vitesse de déplacement [mm/s])
•Manual_acceleration_deceleration (accélération et décélération du mouvement [mm/s2])
Une fois ces paramètres renseignés, vous pouvez démarrer le positionnement à l'aide de l'entrée "Start_manual_positioning" (démarrer positionnement manuel), cette entrée doit être maintenue à "1" jusqu'a ce que la sortie "Manual_position_reached" (positionnnement manuel terminé) passe elle aussi à "1". Ensuite, lorsque vous remettez à "0" le "start", la sortie "Manual_position_reached" passera également à "0". Vous pouvez alors effectuer un nouveau positionnement.
Marche à vue
Les entrées "Jog_downwards" (jog descendre) et "Jog_upwards" (jog monter) permettent d'effectuer des déplacements à vue, lorsque l'une des commandes est à "1" l'axe se déplace et s'arrête lorsque la commande passe à "0".
Attention, vous devez renseigner une vitesse dans le paramètre d'entrée "Manual_speed" pour que le déplacement s'effectue.
Position initiale et position de dégagement
Aller à la position initiale (mode manuel ou automatique): L'entrée "Go_to_initial_position" (aller à la position initiale) permet de déplacer l'axe jusqu'à la position initiale renseignée dans les paramètres depuis MecaMotion. Cette entrée doit être maintenue à "1" jusqu'à ce que la sortie "Initial_position_reached" (position initiale atteinte) passe à "1", cela signifie que le positionnement est terminé, vous pouvez ensuite repasser l'entrée à "0" et la sortie passera elle aussi à "0".
Aller à la position de dégagement (mode manuel ou automatique): L'entrée "Go_to_release_position" (aller à la position de dégagement) permet de déplacer l'axe jusqu'à la position de dégagement renseignée dans les paramètres depuis MecaMotion. Cette entrée doit être laissée à "1" jusqu'à ce que la sortie "Release_position_reached" (position de dégagement atteinte) passe à "1", cela signifie que le positionnement est terminé, vous pouvez ensuite repasser l'entrée à "0" et la sortie passera elle aussi à "0".
Arrêt mouvement
En mode manuel ou automatique, lorsqu'un front montant est détecté sur l'entrée "Stop_movement" (arrêter mouvement axe), l'axe s'arrête et l'exécution du programme est mise en pause.
Reprise mouvement
La reprise du mouvement de l'axe et de l'exécution du programme s'effectue lorsqu'un front montant est détecté sur l'entrée "Continue_movement" (reprendre mouvement axe). (Mode manuel ou automatique)
Gestion du capteur de force
Pour effectuer le reset du détecteur de force, vous devez mettre à "1" l'entrée "Reset_force_sensor" (reset détecteur force). Le reset est effectué durant 200[ms] après la détection d'un front montant sur l'entée.
Pour changer l'échelle du détecteur de force, vous devez renseignez dans le byte d'entrée "Force_sensor_range" (échelle détecteur force) le numéro de l'échelle que vous souhaitez activer. Lorsque vous modifiez l'échelle du détecteur de force, un reset de celui-ci est effectué durant 500[ms].
Changement de programme
Pour activer un programme, il suffit de renseigner le numéro de celui-ci dans le byte d'entrée "Program_number" (numéro de programme). Vous pouvez ensuite vérifier si le programme a bien été activé à l'aide de la sortie "Actual_program_number" (numéro de programme actif).
Démarrage du programme actif
Pour démarrer le programme actif, il faut que les sorties "Program_running" (programme en cours) et "Error" (erreur présente) soient à "0". Ensuite, vous devez activer l'entrée "Start_program" (démarrer programme) et la maintenir active jusqu'a ce que la sortie "Program_finished" (programme terminé) soit à "1". Lorsque le programme est terminé, vous pouvez désactiver l'entrée "Start_program" et la sortie "Program_finished" passera à 0". vous pouvez ensuite relancer le programme.
Changement d'enveloppe
Pour choisir et activer une enveloppe, vous devez renseigner son numéro dans le byte d'entrée "Envelope_number" (numero enveloppe). Vous pouvez vérifier que l'enveloppe choisi a été prise en compte à l'aide du byte de sortie "Actual_envelope_number" (numéro enveloppe active).
Vous pouvez à tout moment activer ou désactiver le contrôle de l'enveloppe à l'aide de l'entrée "Envelope_monitoring" (surveillance d'enveloppe). Cette entrée doit être à "1" pour que le contrôle soit actif.
Points d'arrêt
Si vous utilisez l'instruction point d'arrêt dans votre programme, vous avez le choix d'effectuer ou non les arrêts durant l'exécution du programme.
Pour activer les points d'arrêt vous devez mettre à "1" l'entrée "Enable_breakpoints" (activer point d'arrêt). Lorsque l'exécution du programme est arrêtée sur un point d'arrêt, la sortie "Program_on_breakpoint" (programme sur point arrêt) passe à "1". Vous pouvez poursuivre l'exécution du programme en activant l'entrée "Continue_after_breakpoint" (continuer après point arrêt) (détection du front montant).
Chronomètres
Si vous utilisez l'instruction chronomètre, vous pouvez visualiser à tout moment les chronomètres en cours d'exécution à l'aide des sorties "Stopwatch_..._running" (chronomètre .... en cours).
Données technologiques de la presse
Vous pouvez visualiser à tout moment la position et la vitesse de déplacement de l'axe, la valeur du palpeur et la valeur de la force à l'aide des sorties suivantes :
•"Actual_position" (position axe actuelle) [mm] Format REAL
•"Actual_speed" (vitesse axe actuelle) [mm/s] Format REAL
•"Actual_measuring_sensor_value" (valeur palpeur actuelle) [mm] (option) Format REAL
•"Actual_force" (valeur de force actuelle) [N] Format REAL
Exemple d'utilisation du FB pilotage presse : Nous souhaitons réaliser l'insertion d'un rivet. Figure 1: Insertion d'un rivet Pour ce faire, nous utilisons deux programmes réalisés dans MecaMotion (Logiciel de programmation et paramétrage de la presse). Le premier programme permet de mesurer la hauteur de référence qui sera utilisée pour déterminer la position finale d'insertion. Dans celui-ci (figure 2), la mesure de la hauteur de référence est faite à l'aide de la fonction "mesure position" qui est utilisable lorsque la presse est équipée d'un interrupteur de précision. La position mesurée vous permettra de déterminer la position d'insertion du rivet. La fonction mesure position doit toujours se trouver avant un positionnement, c'est durant celui-ci que la mesure est effectuée. Dans ce positionnement, vous devez donner comme consigne, une position non atteignable (plus bas que la référence), l'axe sera arrêté à la commutation de l'interrupteur de précision par la fonction "mesure position". Avant d'exécuter ce programme, vous devez envoyer à la presse par PROFINET, les consignes "préposition de référence" et "position non atteignable". Quand le cycle est terminé, la presse retourne par PROFINET, la force maximale mesurée durant la détection et la position de référence. Figure 2: Programme MecaMotion - Mesure référence Le deuxième programme permet d'effectuer l'insertion du rivet, cette insertion est réalisée en position. La position réelle d'insertion est calculée comme suit : "position réelle d'insertion" = "position de référence" + "course de l'interrupteur de précision" - "hauteur d'insertion" Avant de lancer le programme, vous devez donner les consignes suivantes par PROFINET : •Préposition (Position jusqu'à laquelle la presse descend en vitesse rapide) •Course interrupteur (Course de l'interrupteur de précision) •Hauteur insertion (Hauteur d'insertion souhaitée par rapport à la référence) •Vitesse insertion (Vitesse de descente lors de l'insertion) Lorsque l'insertion est terminée, la force maximale mesurée pendant le cycle est retournée par PROFINET. Figure 3: Programme MecaMotion - Insertion rivet Après avoir réalisé les deux programmes, vous devez associer dans l'automate et MecaMotion les variables PROFINET utilisées pour donner les consignes et recevoir les résultats. Dans la figure 4 ci-dessous, vous devez déclarer l'ensemble des consignes qui devront être envoyées par l'automate. Il est indispensable de renseigner l'adresse de départ des variables d'entrées/sorties Profinet (elles doivent être les mêmes que celles configurées dans l'automate). Figure 4: Association des variables de consignes aux variables PROFINET depuis Mecamotion Dans la figure 5 ci-dessous, vous associez l'ensemble des variables résultats qui seront retournés à l'automate. Figure 5: Association des variables de résultats aux variables PROFINET depuis MecaMotion Lorsque les programmes sont réalisés et les variables d'entrées/sorties sont déclarées dans MecaMotion, vous devez, dans la plateforme de programmation automate, appeler le FB et assigner l'ensemble de ses entrées/sorties. Celles-ci sont toutes détaillées dans le commentaire du bloc. Ensuite, vous devez réaliser la programmation ci-dessous: •Envoyer les consignes et lire les résultats aux adresses PROFINET configurées dans MecaMotion. •Activer le mode automatique : Pour activer le mode automatique, vous devez vérifier que la sortie "Presse_démarrée" est active puis vous devez mettre dans l'entrée "Mode" la valeur 2 pour activer le mode automatique. Vous pouvez vérifier que le mode a bien été activé à l'aide de la sortie "Mode_actif". •Sélectionner le numéro de programme et le démarrer.
Une fois que vous avez réalisé toutes les étapes ci-dessus, vous n'avez plus qu'à exécuter le programme "mesure_référence" puis le programme "insertion_rivet". |