Réaliser Une Partie Opérative Virtuelle Sous Automgen7
Réaliser Une Partie Opérative Virtuelle Sous Automgen7
Réaliser Une Partie Opérative Virtuelle Sous Automgen7
Cette étude permet de gagner du temps pendant la conception, car elle influe sur la
technique à employer :
- Pour réaliser les différentes pièces de la partie opérative, nous utiliserons le logiciel
SOLIDWORKS.
Tutorial : Pour ceux qui ne connaissent pas le logiciel, une aide est proposée dans la
section « aide / Manuel pour commencer » de SOLIDWORKS: sur le fichier PDF qui
s’ouvre, se rendre à la section « Débuter en 40 minutes » : toutes les notions de bases s’y
trouvent pour faire rapidement un travail correct.
Important : Evitez de faire des pièces trop détaillées, car vous perdrez du temps, mais
aussi parce que sous IRIS3D cela demandera plus de ressources système : des ralentissements
sont alors possible pour les ordinateurs possédant une petite configuration.
1/46
Mise à jour le 25 août 2003
Important : Nous rappelons l’importance des noms des fichiers qui permet à une autre
personne de reprendre le projet sans chercher la fonction de chaque fichier.
- Une fois que votre pièce est créée sous SOLIDWORKS et enregistrée (format
fichier de pièce *.SLDPRT), exportez la au format VRML (fichier / enregistrez sous /
*.WRL).
Astuce : Donnez le même nom à votre fichier VRML que votre fichier SLDPRT pour
une meilleure tracabilité.
Ouvrez le logiciel CROSSROAD, ouvrez votre fichier (file / Open / VRML V1.0),
et sauvez le au format 3DS (file / Save as / 3D studio :
Astuce : Donnez le même nom à votre fichier 3DS que votre fichier VRML pour une
meilleure traçabilité.
- La pièce peut maintenant être importée sous AUTOMGEN7 : Dans votre projet
AUTOMGEN7, faite un clic droit de la souris sur « Ressources », puis « Importer un ou des
fichier 3D » :
Sélectionnez le ou les fichiers 3DS que vous venez de créer, ils s’ajouteront à la liste
des ressources.
Astuce : Si vous avez donné un nom correct à vos fichiers 3DS il ne sera pas
nécessaire de les renommer sous AUTOMGEN7.
2/46
Mise à jour le 25 août 2003
- Pour réaliser une simulation 3D il faut créer un pupitre IRIS3D : clic droit sur le
module IRIS, puis sélectionnez « Ajouter un pupitre IRIS3D » :
- Une fois le pupitre créé, sélectionnez «Options / Ouvrir la fenêtre de configuration» pour
accéder à l’écran de contrôle des objet 3D:
- Sur la nouvelle fenêtre qui vient de s’ouvrir, on peut maintenant sélectionner l’objet que
l’on a importer précédemment en le sélectionnant dans le menu déroulant puis en cliquant sur
« Ajouter »:
- En cliquant sur la pièce en 3D ou sur son nom, les informations de celle-ci apparaissent à
droite de la fenêtre de configuration.
Astuce : Commencez par dimensionner le châssis : cela permet de vérifier que les
dimensions du système sont acceptables : faites un zoom sur le châssis, on doit pouvoir se
rapprocher de la pièce suffisamment avant quel ne disparaisse, mais aussi assez rapidement.
3/46
Mise à jour le 25 août 2003
- Si la pièce n’est pas aux bonnes dimensions, ou doit être modifiée, voici la
procédure d’actualisation sous AUTOMGEN7 :
Astuce : Pensez à mettre des couleurs différentes sur vos pièces pour mieux les
visualiser.
Important : Une fois le châssis aux bonnes dimensions, assurez vous que les rotations
sont bien configurés : En maintenant appuyer le bouton gauche de la souris sur le fond de la
fenêtre IRIS3D, vous pouvez faire tourner votre châssis. Les rotations doivent correspondre :
4/46
Mise à jour le 25 août 2003
- Placez alors toutes les pièces du système dans leurs positions initiales.
Corps de vérin
Tige
Carton
Palette
Capteur
Tapis
Châssis Rouleau
Exemple du transpalette
Lien.
Pour les objets possédant des liaisons simples (liaison glissière ou pivot) dans un
ensemble complexe, le plus simple est de créer un lien entre les deux objets.
5/46
Mise à jour le 25 août 2003
Pour lier la tige au vérin : sur la fenêtre de configuration, faire un clic droit sur le nom
de l’objet (« tige » dans le cas de notre exemple), sélectionner « Ajouter un lien » :
Sur la fenêtre qui s’ouvre, sélectionnez « lié à l’objet », puis sélectionnez l’objet dans le
menu déroulant (« vérin » dans notre exemple).
Important : Avec la mise en place d’un lien entre les pièces, on passe de coordonnées
absolue, à des coordonnées relatives à la pièce avec qui le lien est effectué, il est donc normal
que la pièce change de place avec la mise en place d’un lien, il faut alors la replacer.
Vérin rotatif
Tige verticale
Pince
Exemple de la pince
Dans l’exemple de la pince le Corps bouge horizontalement, la pince est liée au vérin
rotatif qui est lié à la tige verticale qui est liée au corps. Ainsi le déplacement horizontal du
corps fait bouger l’ensemble « Pince + Vérin rotatif + Tige verticale + Corps ».
6/46
Mise à jour le 25 août 2003
Translation.
Reprenons l’exemple du transpalette. Pour que la tige du vérin puisse sortir, nous
allons l’animer d’un mouvement de translation : bouton droit de la souris sur la tige,
puis « ajouter une translation ».
Configuration de la liaison.
- Maintenant que l’objet est configuré, nous pouvons nous occuper de la valeur de
« F203 ». Dans notre exemple, la valeur est comprise entre 0,2619 et 0,4.
7/46
Mise à jour le 25 août 2003
Ce folio sera compilez pour la cible PC (Simulation sur ordinateur) mais devra être
désactivé pour la compilation sur les autres cibles (Transfert sur automate) : bouton droit de la
souris sur le folio, puis « propriétés », mettre l’option « ne pas compiler ce folio » pour
compiler sur une cible autre que PC :
Ainsi i0 fait monter le vérin et i1 le fait descendre. La valeur 0.01 permet de définir la
vitesse de l’objet.
Astuce : Plutôt que de mettre f203, il est plus lisible de mettre un symbole du type
« _TIGEZ_ » (nom de l’objet + axe de déplacement). Ainsi on sait sur quel objet on travaille,
et sur quel axe, dans le cas de mouvements sur différents axes.
Important : Pensez que les utilisateurs qui vont utiliser la simulation peuvent le conduire à
un fonctionnement aberrant : prendre des précautions sur les condition d’arrêt.
Important : Les utilisateurs devant souvent construire le GRAFCET, les étapes relatives à
la simulation devront avoir une valeur importante (à partir de 9900 par exemple).
8/46
Mise à jour le 25 août 2003
« _Posvert_ » est un mot long qui donne la position de la tige (entre 0 et 100000). Pour
pouvoir donner à IRIS la valeur f203 qui est un flottant, on met dans le folio « Gestion de la
simulation » le programme suivant :
Rotation
9/46
Mise à jour le 25 août 2003
Changement de couleur.
Pour ajouter un changement de couleur, bouton droit de la souris sur le nom de l’objet,
puis choisir « Ajouter un changement de couleur » :
On le configure ainsi:
Dans notre exemple, le capteur de palette en position (correspondant à l’entrée I9) est
à l’état 1 si une palette se trouve devant le capteur. Le programme suivant est alors placé dans
le folio de « Gestion de la simulation » :
Ainsi c’est la position de la palette qui indique si l’entrée est active ou pas.
Changement de
couleur sous
IRIS3D
10/46
Mise à jour le 25 août 2003
Autres comportements.
Dans les autres comportements disponibles se trouvent les sons. Ils doivent être
importer dans AUTOMGEN à partir d’un fichier Wave (*.WAV).
Méthodologie
Pour la suite il est préférable d’avancer fonction par fonction. A chaque fois il faut faire les
étapes :
- Dessin du schéma sous AUTOMSIM (si utilisé).
- Etablir les symboles : pour être rigoureux, il est conseiller d’utiliser la norme
suivante :
o MONTER : verbe à l’infinitif en majuscule, pour les sorties automates.
o bo monter : pour les boutons sous AUTOMSIM
o ca monté : pour les capteurs sous AUTOMSIM.
o VERINX : pour les positions des actionneurs.
- Créer le mouvement désiré sous IRIS3D.
- Faire le programme de gestion associée à chaque capteur d’IRIS3D et chaque
actionneur.
- Tester les mouvements élémentaires un par un.
BON COURAGE !
11/46
Mise à jour le 25 août 2003
Exemple
Nous allons traiter ici un exemple, que nous allons créer pas à pas. Il s’agit du poste de
production de CD AUTOMGEN de l’IRAI.
Stock de
CD vierges
Pile de CD
mal gravé
Pile de CD
gravés
x
y
Bras manipulateur
Zone de gravure
Le bras manipulateur récupère un CD sur une pile, et le place dans le graveur. Le graveur
envoie une information à l’automate, pour lui indiquer si la gravure est bonne ou pas. En
fonction de l’information, l’automate place le cd sur la pile approprié.
Etude du système.
12/46
Mise à jour le 25 août 2003
Liaison glissière
d’axe Z
Liaison
CD Bras
encastrement
Ce schéma permet de déterminer les liens qu’il faudra créer sous AUTOMGEN.
Réalisation du châssis.
Une fois le projet sauvé (au format SLDPRT), on l’exporte au format VRML :
13/46
Mise à jour le 25 août 2003
Sous AUTOMGEN.
- Pour la version 7.014 et supérieure, le fichier VRML est directement importé (sinon
voir le chapitre sur la conversion du fichier ):
- On y insère le châssis :
14/46
Mise à jour le 25 août 2003
Pour en finir avec le châssis, on place l’axe Z au milieu de la maquette, pour pouvoir faire
tourner la maquette sans déplacement latéral :
- On crée maintenant les axes, que l’on importe, et que l’on place :
Comme nous l’avons vu sur le schéma lors de l’étude du système, le bras est
lié aux axes, nous pouvons donc créer cette liaison afin de placer notre pièce
dans un repère relatif à l’axe :
15/46
Mise à jour le 25 août 2003
16/46
Mise à jour le 25 août 2003
Mouvements.
Une fois toute nos classes en place, nous allons commencer par programmer les
mouvements élémentaires :
- MONTER le bras.
- DESCENDRE le bras.
- tourner à DROITE le bras.
- tourner à GAUCHE le bras.
Type de pilotage
17/46
Mise à jour le 25 août 2003
Translation bistable.
18/46
Mise à jour le 25 août 2003
19/46
Mise à jour le 25 août 2003
Rotation bistable.
20/46
Mise à jour le 25 août 2003
De même pour le bouton GAUCHE, monter et descendre :
Avec AUTOMSIM
21/46
Mise à jour le 25 août 2003
Une fois que touts nos composants sont présents, nous fabriquons les schémas
suivants :
22/46
Mise à jour le 25 août 2003
23/46
Mise à jour le 25 août 2003
« Pos translation » et « Pos angle » sont deux mots longs que nous n’oublions pas de
déclarer :
Ils représentent la position des l’actionneurs entre 0 et 100000. Pour pouvoir les utiliser, on
insère le code suivant dans le folio de « gestion de la simulation » :
24/46
Mise à jour le 25 août 2003
_BRASROTZ_:=2.06*_100 angle_/100-1.28;
Capteurs.
Les capteurs de fin de course sont les plus faciles et les plus courants à mettre en œuvre :
- Sur la translation, 2 capteurs sont présents :
o I0 « fch » correspondant à la position haute du bras.
o I1 « fcb » correspondant à la position basse du bras.
- Sur la rotation, 4 capteurs sont présents :
o I2 « posVièrge » : bras en face à la pile de CD vierge.
o I3 « posMalGravé » : bras en face à la pile de CD mal gravé.
o I4 « posFinis » : bras en face à la pile de CD gravé.
o I5 « posGraveur » : bras en face du graveur de CD.
25/46
Mise à jour le 25 août 2003
Enfin il reste le capteur présent sur le bras qui permet la détection d’un CD :
Testez tout les capteurs, en faisant des mouvement manuels comme précédemment, et en
observant la valeur des capteurs, ou bien en faisant des petits GRAFCET :
Autres actions.
A ce niveau de la modélisation, nous avons entré dans la table des symboles toutes les
entrées et sorties automates.
Pour le déplacement du CD, nous avons besoin d’un folio que nous appellerons
« gestion de la simulation ». Dans ce folio se trouvera tout ce qui concerne la simulation et
uniquement la simulation.
26/46
Mise à jour le 25 août 2003
Le CD suit le bras dans son mouvement de rotation et de translation dans certaines conditions.
Tout d’abord il faut trouver l’axe de rotation : après plusieurs tests, nous obtenons la
configuration suivante pour le CD :
Le bras.
Ainsi nous aurons besoin d’un flottant (à partir de f200). Il sera plus lisible d’utiliser
un symbole : Puisque il s’agit de la rotation du CD sur l’axe Z, nous utiliserons le symbole
« BRASROTZ » :
Dans un premier temps, nous nous occuperons de l’axe de rotation et des bornes
(MINI et MAXI). Pour cela nous créons le GRAFCET suivant dans le folio de « gestion de la
simulation » :
27/46
Mise à jour le 25 août 2003
Rotation du CD
Le CD.
Nous utiliserons la variable f202 sou le nom de CDROTZ
Avec « offset bras » correspondant à la valeur Mini prise par le bras (0.78), et l’« offset
CD » correspondant à la valeur Mini prise par le CD (-0.94)
28/46
Mise à jour le 25 août 2003
Le bras.
Pour faire monter et descendre le CD il faut connaître la position du bras. Pour cela
nous utiliserons plus un pilotage bistable mais un pilotage numérique. La configuration de la
translation du bras est donc la suivante :
Le CD.
29/46
Mise à jour le 25 août 2003
GRAFCET de translation du CD
F240 vérifie la hauteur du CD par rapport au bras. F242 et F243 vérifie l’angle entre le bras et
le CD.
Fonctionnement.
Maintenant que toutes les fonctionnalités marchent, vous pouvez créer un nouveau
folio pour le fonctionnement :
30/46
Mise à jour le 25 août 2003
Améliorations.
Gestion de la pesanteur.
31/46
Mise à jour le 25 août 2003
Gestion du graveur.
32/46
Mise à jour le 25 août 2003
33/46
Mise à jour le 25 août 2003
Nous allons, dans cette partie, permettre au système de gérer 10 CD. Pour cela nous
allons utiliser l’adressage indexé. L’adressage indexé n’étant pas prévu par le langage CEI,
l’essentiel du programme sera fait en langage AUTOMGEN.
Nous aurons donc besoins de 10 de chaque variable pour gérer les 10 CD. La gestion
de la mémoire est donc la suivante :
34/46
Mise à jour le 25 août 2003
9 CD10
La variable m900 servira d’index pour se déplacer dans les tableaux :
Les CD pouvant se trouvé dan un ordre quelconque sur les différentes piles, nous
utiliserons des tableaux pour indiquer le numéro du CD sur chaque pile. Une pile pouvant
recevoir au maximum 10 CD nous créons 3 tableaux de 10 cases :
Nous utiliserons des variables pour indiquer le nombre de CD sur chaque pile :
Ils seront utilisés pour se déplacer dans les tableaux, d’où -1 correspond à pas de CD.
35/46
Mise à jour le 25 août 2003
M901 (Courant) recevra le numéro du CD présent dans le bras (-1 si pas de CD) :
Pour pouvoir utilisé le bit 900 il faut le déclaré. Pour cela on place dans le folio en
commentaire:
Cela permet d’utiliser 1000 bits utilisateur.
Nous devons créer des CD identiques à celui que nous avons créé précédemment :
36/46
Mise à jour le 25 août 2003
Ainsi, on indique qu’il n’y a pas de CD dans le bras (Courant=-1), on met en position
initiale le bras et le graveur, tout les CD sont supprimés (libre=0 et boucle WHILE), et les
tableaux sont initialisés (seconde boucle WHILE), enfin on indique qu’il n’y a pas de CD sur
les piles (nb X=-1) ni dans le graveur (num graveur=-1).
Cela permet de mettre tout les CD loin de la maquette, donnant l’illusion qu’ils ont
disparut. Afin de les remettre en position nous utiliserons une variable donnant le numéro du
CD se trouvant loin de la maquette et pouvant être mis en haut de la pile de CD vierge :
37/46
Mise à jour le 25 août 2003
(2) IF (_libre_<10)
THEN
lda 330
ada _nb Vierge_
sta _index_
lda _libre_
sta m(900)
inc _libre_
ENDIF
lda 330
ada _nb Vierge_
sta m980
lda 300
ada m(980)
sta _index_
lda -0.95R
sta f(900)
lda 310
ada m(980)
sta _index_
lda 0.1R
sta f(900)
lda 320
ada m(980)
sta _index_
lda -0.25R
sta f(900)
ENDIF;
#begin_st
- Pour commencer (1), le programme s’exécute sur les fronts montant du bouton
« insérer un CD », ainsi que sur d’autre condition que nous verrons par la suite.
38/46
Mise à jour le 25 août 2003
Ensuite (2), si tout les CD n’ont pas été placé sur la maquette (libre<10), alors on en
place un. Pour cela, on se place sur une case libre on y rajoute le numéro du CD que l’on va
faire apparaître (libre) :
Adresse de début du tableau
lda 330
lda _libre_
Numéro du CD à placer
sta m(900)
On place le numéro dans la bonne case du tableau
inc _libre_
Le numéro du prochain CD à placer
....
lda 330
ada _nb Vierge_
On place l’adresse de la « nb Vierge » case du tableau
sta m980 de la pile de CD vierge dans la variable m980
Initialisation de lda 300
ada m(980) Permet de récupérer le numéro du CD présent
la rotation sur Z sta _index_
lda -0.95R en haut de la pile
sta f(900)
lda 310
Initialisation de la ada m(980)
sta _index_
translation sur Z lda 0.1R
sta f(900)
lda 320
Initialisation de la ada m(980)
translation sur X sta _index_
lda -0.25R
sta f(900)
Mais si on teste se programme, une fois que nous avons placé les 10 CD, nous ne
pourrons plus en mettre d’autres. Ainsi on rajoute un morceau de programme (3) qui permet
de récupérer un CD de la pile de CD mal gravé, pour le remettre sur la pile de CD vierge. La
structure est voisine de la précédente :
IF (_libre_>9 . _nb MalGravé_>>-1)
THEN
lda 340
La différence provient de
ada _nb MalGravé_ l’adresse de départ du tableau
sta _index_
lda 330
et de la variable utilisé.
ada _nb vierge_
sta m980
lda m(900)
sta m(980)
dec _nb MalGravé_ On enlève un CD de la pile adéquate
ENDIF
De même pour la pile CD correctement gravé (4) s’il n’y a plus de CD mal gravé :
IF (_libre_>9 . _nb MalGravé_=-1._nb Finis_>>-1)
39/46
Mise à jour le 25 août 2003
THEN
lda 350
ada _nb Finis_
sta _index_
lda 330
ada _nb vierge_
sta m980
lda m(900)
sta m(980)
dec _nb Finis_
ENDIF
Le morceau de programme (5) sera étudié avec la gestion de la pesanteur. En effet il règle le
cas d’appuies répétés à une certaine vitesse.
Gestion de la pesanteur.
En fait le bras ne pose pas le CD en haut de la pile, mais il le lâche à une certaine
hauteur (position haute). Il faut donc mettre en place une simulation de la pesanteur. Celle-ci
sera linéaire. Afin de pouvoir faire plusieurs mouvements simultanément, nous avons
décomposé la maquette en 4 zones correspondant à chaque piquet :
- Zone CD vierge,
- Zone CD mal gravé,
- Zone CD finis,
- Zone Graveur.
- Remarque il existe une cinquième zone correspondant à l’ensemble des zones
non couverte par les zones précédente dont nous nous occuperons plus tard.
Dans un premier temps, nous allons nous intéresser au cas de la zone « CD vierge »
car nous pourrons tester tout de suite son effet.
En fait la position finale (sur l’axe Z) des CD vierges suit une fonction linéaire :
40/46
Mise à jour le 25 août 2003
Numéro Coordonnées
finales sur Z
0 0.008
1 0.0012
2 0.0016
… …
IF (f980>f950)
THEN
LDA f(900) Changement de position du CD s’il n’est pas à sa
ADA -0.004R position finale
STA f(900)
ENDIF
ENDIF
Programme de gestion de la pesanteur pour les CD vierges
41/46
Mise à jour le 25 août 2003
Pour la zone de gravure, le code est plus simple car il ne peut y avoir qu’un CD dans
cette zone.
La gestion du capteur est un peu différente par rapport au programme précédent. Plutôt
que de chercher la position dans l’espace de tout les CD, nous ne nous en occuperons que de
ceux qui sont en haut des piles, en fonction de la position de la pince.
f240:=_BRASTRZ_-0.016;
f242:=(_BRASROTZ_-0.7812)*0.92-1.08;
f243:=(_BRASROTZ_-0.7812)*0.92-0.80;
#end_st
IF (_courant_!-1)
THEN Si un CD est dans la pince alors
SET _présence CD_
ENDIF
le capteur de présence est à 1.
ELSE
IF (_PosVierge_)
THEN En fonction de la position en
LDA 330 récupère le numéro du CD en
ADA _nb Vierge_
STA _index_ haut de la bonne pile.
LDA m(900)
STA _index_
ENDIF
IF (_PosMalgravé_)
THEN
LDA 340
ADA _nb MalGravé_
STA _index_
LDA m(900)
STA _index_
ENDIF
IF (_PosFinis_)
THEN
LDA 350
42/46
Mise à jour le 25 août 2003
IF (_PosGraveur_)
THEN
LDA _num Graveur_
STA _index_
ENDIF
LDA _index_
ADA 300
Récupération de l’angle et de la
STA _index_ hauteur du CD.
LDA f(900)
STA _CDROTZ_
LDA _index_
ADA 10
STA _index_
LDA f(900)
STA _CDTRZ_
IF ((f240<_CDTRZ_) AND (f242<_CDROTZ_) AND (_CDROTZ_<f243))
THEN
SET _présence CD_ L’état du capteur est défini par la
ENDIF
ELSE valeur de l’angle et de la hauteur
RES _présence CD_ du CD par rapport au bras.
ENDIF
ENDIF
#begin_st
Gestion du graveur.
43/46
Mise à jour le 25 août 2003
On rajoute à l’étape 9906, pour ne pas gêner l’initialisation en 9905, le code suivant :
Pour faire passer un CD d’une pile à une autre on rajoute le code suivant :
44/46
Mise à jour le 25 août 2003
45/46
Mise à jour le 25 août 2003
46/46