¶ Créer un programme machine de Pick-and-Place pneumatique
Construisez une station de pick-and-place pneumatique complète depuis un espace de travail vide jusqu'à un projet automate exporté.
Une unité de pick-and-place pneumatique à deux axes qui transfère des pièces d'un chargeur vers un convoyeur de sortie.
Signaux matériels :
- Capteurs magnétiques du vérin vertical (axe Z) :
S_Z_UP, S_Z_DOWN
- Capteurs magnétiques du vérin horizontal (axe X) :
S_X_HOME, S_X_OUT
- Capteur de ventouse à vide :
S_VAC_OK
- Boutons-poussoirs opérateur :
B_START, B_ESTOP
- Sorties d'électrovannes :
Y_Z_DOWN, Y_X_OUT, Y_VACUUM
Cycle de fonctionnement :
- Attendre en
IDLE le signal B_START avec Z en haut et X à l'origine.
- Descendre Z (
PICK_DOWN), activer le vide (GRIP) et attendre S_VAC_OK plus une temporisation de maintien de 200 ms.
- Remonter Z et avancer X vers la sortie (
TRANSFER).
- Couper le vide et mettre à l'échappement pendant
150 ms (RELEASE).
- Ramener X à l'origine (
RETURN) et reboucler sur IDLE.
| Élément |
Exigence |
| AutomationView |
Installé |
| Extension Festo |
Installée depuis le Marketplace (pour les entrées de catalogue d'E/S CPX-E) |
| Extension CODESYS |
Installée depuis le Marketplace (pour l'exportation PLCopen XML) |
- Appuyez sur Ctrl+Shift+P et exécutez AutomationView: New Project.
- Sélectionnez Empty Project et cliquez sur Use this.
- Choisissez un dossier et nommez le projet
pick-and-place.
AutomationView crée les fichiers du projet :
pick-and-place/
main.machine
main.seq
Ouvrez main.machine dans l'Éditeur de machine visuel.
- Sélectionnez l'onglet Project.
- Sous Export Configuration, sélectionnez CODESYS dans Export Targets.
- Sélectionnez l'onglet Architecture.
- Cliquez sur Add Station, nommez-la
MainStation et sélectionnez le protocole ethercat ou profinet.
- Cliquez sur Add Equipment et ajoutez un module d'entrées numériques et un module de sorties numériques depuis le Catalogue d'équipements :
| Emplacement |
Rôle du module |
Voies |
| 0 |
8x Entrées numériques (DI 8x24VDC) |
8 voies d'entrée (%IX0.0 – %IX0.7) |
| 1 |
8x Sorties numériques (DO 8x24VDC) |
8 voies de sortie (%QX1.0 – %QX1.7) |
Ouvrez l'onglet Variables dans main.machine (ou laissez AutomationView les détecter automatiquement pendant la construction de la séquence, puis cliquez sur Freeze).
| Nom |
Description |
S_Z_UP |
Vérin Z rentré |
S_Z_DOWN |
Vérin Z sorti |
S_X_HOME |
Vérin X à l'origine |
S_X_OUT |
Vérin X en position de sortie |
S_VAC_OK |
Vide confirmé |
B_START |
Bouton-poussoir de départ cycle |
B_ESTOP |
Arrêt d'urgence |
| Nom |
Description |
Y_Z_DOWN |
Électrovanne descente Z |
Y_X_OUT |
Électrovanne avance X |
Y_VACUUM |
Électrovanne de vide |
| Nom |
Description |
ready |
Machine en position initiale |
Ouvrez main.seq dans l'Éditeur visuel de séquences.
Éditeur visuelPythonCliquez sur le canevas et utilisez les raccourcis clavier à une touche :
| Touche |
Élément ajouté |
| I |
Étape initiale |
| S |
Étape normale |
| T |
Transition |
| A |
Action sur l'étape sélectionnée |
| C |
Commentaire |
Créez ces six étapes :
| Étape |
Type |
Nom |
Commentaire |
| 0 |
Initiale |
IDLE |
Position initiale, attente départ |
| 1 |
Étape |
PICK_DOWN |
Descendre Z au-dessus du chargeur |
| 2 |
Étape |
GRIP |
Activer le vide, attendre confirmation |
| 3 |
Étape |
TRANSFER |
Remonter Z, avancer X vers la sortie |
| 4 |
Étape |
RELEASE |
Déposer la pièce et couper le vide |
| 5 |
Étape |
RETURN |
Ramener X à l'origine |
from automation_machine import Sequence, StepType, ActionInstruction
class PickAndPlace(Sequence):
def setup(self):
idle = self.add_step(StepType.INITIAL, name="IDLE")
pick_dn = self.add_step(name="PICK_DOWN")
grip = self.add_step(name="GRIP")
xfer = self.add_step(name="TRANSFER")
release = self.add_step(name="RELEASE")
retn = self.add_step(name="RETURN")
Sélectionnez chaque étape source, appuyez sur T et saisissez sa condition :
| De |
Vers |
Condition |
IDLE |
PICK_DOWN |
B_START AND S_Z_UP AND S_X_HOME AND NOT B_ESTOP |
PICK_DOWN |
GRIP |
S_Z_DOWN |
GRIP |
TRANSFER |
S_VAC_OK AND vac_dwell.Q |
TRANSFER |
RELEASE |
S_Z_UP AND S_X_OUT |
RELEASE |
RETURN |
S_Z_UP AND NOT S_VAC_OK |
RETURN |
IDLE |
S_X_HOME |
Sélectionnez chaque étape et appuyez sur A pour configurer ses actions :
| Étape |
Qualificateur |
Cible / Instruction |
Commentaire |
IDLE |
N |
ready |
Machine en position initiale |
PICK_DOWN |
N |
Y_Z_DOWN |
Descendre l'axe Z |
GRIP |
S |
Y_VACUUM |
Mémoriser l'activation du vide |
GRIP |
N |
TON vac_dwell (200 ms) |
Stabiliser le vide |
TRANSFER |
S |
Y_X_OUT |
Mémoriser l'avance X |
RELEASE |
R |
Y_VACUUM |
Couper le vide |
RELEASE |
N |
TON release_dwell (150 ms) |
Mise à l'échappement du vide |
RETURN |
R |
Y_X_OUT |
Rentrer l'axe X |
- Appuyez sur F5 pour démarrer le simulateur (
IDLE s'affiche comme active).
- Cliquez sur les badges de variables directement sur les transitions du canevas (ou dans le panneau Variables) pour tester la séquence :
| Valeurs d'entrée définies |
Transition attendue |
B_START = TRUE, S_Z_UP = TRUE, S_X_HOME = TRUE |
IDLE -> PICK_DOWN (Y_Z_DOWN s'active) |
S_Z_DOWN = TRUE, S_Z_UP = FALSE |
PICK_DOWN -> GRIP (Y_VACUUM est mémorisé) |
S_VAC_OK = TRUE (attendre 200 ms) |
GRIP -> TRANSFER (Y_X_OUT est mémorisé) |
S_Z_UP = TRUE, S_X_OUT = TRUE |
TRANSFER -> RELEASE (Y_VACUUM est remis à zéro) |
S_VAC_OK = FALSE, S_Z_UP = TRUE |
RELEASE -> RETURN (Y_X_OUT est remis à zéro) |
S_X_HOME = TRUE |
RETURN -> IDLE |
- Appuyez sur Shift+F5 pour arrêter la simulation.
| Symptôme |
Cause |
Solution |
IDLE reste active |
B_ESTOP est à TRUE |
Passer B_ESTOP à FALSE |
Bloqué sur GRIP |
vac_dwell.Q ne s'est pas écoulé |
Attendre 200 ms ou vérifier la durée de la temporisation TON |
La sortie reste à TRUE |
L'action mémorisée S n'a pas été réinitialisée |
Vérifier l'action R correspondante sur l'étape aval |
- Appuyez sur Ctrl+Shift+P et exécutez AutomationView: Assign Addresses Automatically (ou attribuez les voies manuellement dans l'onglet Architecture de
main.machine) :
| Variable |
Module |
Adresse |
S_Z_UP |
DI emplacement 0 |
%IX0.0 |
S_Z_DOWN |
DI emplacement 0 |
%IX0.1 |
S_X_HOME |
DI emplacement 0 |
%IX0.2 |
S_X_OUT |
DI emplacement 0 |
%IX0.3 |
S_VAC_OK |
DI emplacement 0 |
%IX0.4 |
B_START |
DI emplacement 0 |
%IX0.5 |
B_ESTOP |
DI emplacement 0 |
%IX0.6 |
Y_Z_DOWN |
DO emplacement 1 |
%QX1.0 |
Y_X_OUT |
DO emplacement 1 |
%QX1.1 |
Y_VACUUM |
DO emplacement 1 |
%QX1.2 |
- Exécutez AutomationView: Validate All Addresses pour confirmer l'absence de conflit.
- Prévisualiser le code source : Ouvrez
main.seq et cliquez sur l'icône Translate dans la barre de titre de l'éditeur (ou exécutez AutomationView: Translate to Target Language) pour afficher le code Structured Text généré côte à côte.
- Exporter le projet déployable : Exécutez AutomationView: Export Project depuis la palette de commandes ou la barre de titre du Machine Explorer.
- AutomationView écrit les fichiers exportés dans
automationview/export/codesys/ :
pick-and-place/
main.machine
main.seq
automationview/
export/
codesys/
project.xml
| Environnement cible |
Chemin d'importation |
| CODESYS V3 |
Project > Import > PLCopenXML |
| TwinCAT 3 |
PLC > Import > PLCopen XML |
| Schneider EcoStruxure |
File > Import > PLCopen XML |