Outils pour utilisateurs

Outils du site


staubli

Ceci est une ancienne révision du document !


TP Robot Staubli à l'AIP

Présentation de la manip

Configuration d'un projet

Ouvrir le programme en cliquant sur: Menu Démarrer→Tous les programmes→Staubli Robotic Suite 2016→Staubli Robotic Suite 2016.6.1

Pour un projet utilisant les IO physiques de l'armoire de commande

L'armoire de commande dispose de cartes d'entrées/sorties (IO, liens série, lien sockets etc…). Pour que ces cartes soient accessibles depuis le projet, il faut que le projet soit configuré lors de LA CRÉATION de la cellule en récupérant les informations matérielles depuis l'armoire.

  1. Dans SRS, cliquer en haut à gauche sur l'icone de bras jaune.
  2. Cliquer sur “Nouvelle→ Assistant nouvelle cellule”
  3. Donner un nom au projet, par exemple Cellule_Staubli_RX60
  4. S'assurer que l'armoire de commande est sous tension et démarrée depuis 2 minutes
  5. Cliquer sur “A partir d'un contrôleur distant”
  6. Choisir l'adresse IP de l'armoire de commande
  7. La version de l'émulateur s7.9.1 n'est pas installée, il faut donc sélectionner la 7.10
  8. Cliquer sur “Suivant”

Toutes les cartes ne sont pas automatiquement ajoutées au projet. Il faut:

  1. Choisir l'onglet Cellule dans la fenêtre de droite
  2. Cliquer sur la flèche à gauche du nom de la cellule pour faire apparaître “Controller1 [s7.10]”
  3. Cliquer droit sur “Controller1 [s7.10]” puis cliquer gauche sur “Configuration du contrôler”
  4. Sélectionner le bon type de bras (sinon par défaut un Scara sera choisi). Choisir “RX60B, Fixation Sol, Horizontal base cable outlet, UL Certified arm power on light”
  5. cliquer sur l'onglet I/O et cocher “BIO” ainsi que “BIO2/MIO”, puis “Ok”
  6. Si l'onglet “IO physiques-Controller1” est ouvert, il faut le fermer et l'ouvrir à nouveau pour que les modifications soient visibles.

Maintenant que le contrôleur est configuré, il faut créer une nouvelle application, pour cela:

  1. Choisir l'onglet Cellule dans la fenêtre de droite
  2. Cliquer sur la flèche à gauche du nom de la cellule pour faire apparaître “Controller1 [s7.10]”
  3. Cliquer droit sur “Controller1 [s7.10]” puis cliquer gauche sur “Nouvelle application”
  4. Saisir un nom, par exemple “Projet”, puis Ok

Il faut maintenant configurer l'outils du robot, pour cela:

  1. Choisir l'onglet Géométrie dans la fenêtre de droite
  2. Cliquer sur la flèche à gauche du nom de la cellule pour faire apparaître “Controller1 [s7.10]” puis faire de même pour votre Projet
  3. Cliquer droit sur “Flange” (qui signifie Bride en français, soit l'emplacement où fixer l'outils) puis cliquer gauche sur “Nouvelle donnée”
  4. Saisir un nom pour l'outils, ou laisser le nom par défaut (tTool) puis cliquer sur Ok
  5. Vérifier que tTool apparaît maintenant en cliquant sur la flèche à coté de “flange[0]”

Edition du programme

  1. Cliquer sur l'onglet “Accueil” puis sur “Afficher la vue 3D”
  2. Choisir l'onglet Cellule dans la fenêtre de droite
  3. Cliquer sur la flèche à gauche du nom de la cellule pour faire apparaître “Controller1 [s7.10]” puis “Projet” puis double cliquer sur “start()” pour ouvrir la fenêtre d'édition du programme.

Afin d'organiser la disposition des sous fenêtre pour permettre de voir simultanément le programme et le simulateur 3D du robot, cliquer gauche longuement sur l'onglet Projet-start puis, tout en maintenant le clic déplacer la flèche vers le carré de droite qui vient d'apparaître, relacher alors le clic gauche. Vous devriez obtenir un affichage ressemblant à:

Simulation

Manip sur le robot

Mise sous tension de l'armoire de commande

Fermer la porte (sinon il y aura un message User ES1-2 indiquant que le capteur porte ouverte empêche le robot de démarrer) Mettre l'interrupteur rotatif gris clair à gauche de l'armoire de commande en position “flêche vers le haut” pour alimenter le robot.

TODO: mettre les 2 photos de la facade

Ne surtout jamais rallumer le robot juste après l'avoir éteint sans attendre au moins une dizaine de secondes.

Choisir parmi les 3 modes en tournant la clef:

  1. En mode manuel, le robot s'arrête si on n'exerce pas de pression sur le bouton de l'homme mort

… TODO: expliquer les 3 positions de clef

Cas particulier en retour de vacances

Si l'alimentation de l'armoire a été coupée pendant longtemps, la batterie de l'armoire n'est pas suffisante pour conserver les paramètres de calibrage du robot, il faut donc refaire le calibrage. Pour cela, amener le robot en position de réference (les marqueurs traits noirs des différentes articulations doivent être en face les uns par rapport aux autres) en utilisant les mouvements manuels en mode Joint?.

  1. Bouton Menu
  2. Calibrage
  3. Presser le bouton Cal
  4. Presser le bouton Ok

Chargement de l'application dans l'armoire de commande

S'assurer que l'armoire de commande du robot est sous tension.

  1. Dans SRS, sélectionner la fenêtre du programme start
  2. cliquer sur l'onglet VAL3, puis cliquer sur le bouton Télécharger l'application vers la cible

La fenêtre suivante apparaît, indiquant l'adresse IP et le numéro de port utilisé pour communiquer avec l'armoire de commande:

  1. Cliquer sur OK
  2. Une fenêtre apparaît demandant si l'on souhaite écraser l'ancien programme sur l'armoire, cliquer sur Oui

Avec le pendant:

  1. Bouton “Menu”
  2. Choisir “Gestionnaire d'applis” et valider avec le bouton Flèche droite
  3. Choisir “Application Val3” et valider avec le bouton Flèche droite
  4. Choisir “Disque” et valider avec le bouton Flèche droite
  5. Choisir newProject1 (ou le nom de votre projet) et valider avec le bouton Ok
  6. Pour que le programme s’exécute, mettre le bras sous tension en appuyant sur le bouton vert de mise sous tension tout en exerçant une pression modérée sur la poignée de l'homme mort
  7. Pour autoriser les mouvements du robot, appuyer sur le bouton Move/Hold
  8. Pour visualiser les messages utilisateurs sur l'écran du pendant, appuyer sur le bouton User

Redémarrage de l'application

Pour exécuter à nouveau le programme sur l'armoire:

  1. Presser le bouton Stop
  2. Presser le bouton Run

Rechargement d'une application depuis le PC

Pour pouvoir recharger une application depuis le PC, il faut tout d'abord que l'armoire de commande arrête son exécution. Pour cela, à l'aide du pendant:

  1. Presser le bouton Stop
  2. Presser le bouton Menu
  3. choisir gestionnaire d'applis
  4. Presser le bouton Fer (F4)

Ensuite charger la nouvelle version de l'application en suivant les consignes de la section: “Chargement de l'application dans l'armoire de commande”

Notes à trier

Il y a 9 licences de SRS à l'AIP

Problème sur notre programme de test, il faut d'abord amener le robot à un point exprimé en Joint pour sortir de la configuration de départ maj sur prog3.txt

Accueil→outils de téléchargement régler l'IP Hote si nécessaire: 192.168.0.112 , port 5653

Choisier newProject1 et cliquer sur Télécharger Sur le pendant

Gestionnaire d'application flèche droite application Val3 flèche droite Disque flèche droite Choisir avec flèche bas newProject1 Ok bouton Run choisir puissance vert Move/hold pour qu'il ne clignote plus

Pour tuer l'application en cours d'éxecution

bouton STOP
bouton Menu
Gestionnaire des tâches fleche droite
choisir la tache et cliquer sur "Ter"

On peut supprimer sur le contrôleur toutes les applis, sauf:

Cognex
CognexComm7en
commCamera2
EntreesSortie

ressources du net

Réseau

IP et numéros de port

  1. IP pc rapid en filaire: 192.168.1.49
  2. IP pc windows: 192.168.1.50
  3. IP armoire de commande staubli: 192.168.0.112

l'émulateur de pendant utilise les ports 850-853 et 5660-5680

Socket\sCognex1

faire une string pour stocker les messages

cliquer onglet cellule→prog1→Controller1 Acceuil, IO Physiques

images SRS-ES.PNG images SRS-ES1.PNG images SRS-ES2.PNG

Création de socket sur le pendant

Sur le pendant:

  1. Tableau de bord
  2. ES →
  3. Socket →
  4. Socket UDP, bouton “Nouveau”
  5. donner un nom: “udpsock” puis cliquer sur “Ok”
  6. Editer, bouton “entrée” pour choisir les paramètres à modifier
  7. filtre IP: 192.168.1.49
  8. port: 20000
  9. temps maxi: 5s (permet de régler la durée au bout de laquelle une tentative de lecture sur la socket n'ayant pas aboutie fera planter le programme VAL3
  10. caractère fin de chaine: 13 (identifie le caractère ascii devant se trouver à la fin de toutes les chaines échangées via sockets)

→Vérifier si il est possible d'ajouter des sockets au projet SRS via le pendant virtuel????

Alimentation pour les E/S 24V

Alimentation 24V pour les Entrées/Sorties à allumer (en bas sur cloison à coté robot staubli)

Réflexion sur infrastructure réseau

routeur wifi banana pi RP2 avec 4 interfaces filaires + WIFI

SRS 2016.pdf p17/54 : explication handles et handlers

ajout d'une variable sSio ajout d'une variable string x_sMsg

explication du protocole de comm cognex via socket dans le fichier C:\Users\bvande\Downloads\communication-EntreeSorties-mai2019_michel\communication-EntreeSorties-mai2019\Controller1\usr\usrapp\cognexComm7En\readme.pgx


//  You must declare this socket in the control panel of the controller as
//  followed :
//    - a client socket for each camera with
//    - IP address of camera
//    - Port : 1023
//    - time out = 0
//    - line end char = 13

chaque fichier .pgx est un sous programme 

example.pgx   
//  This is an example for use this library.
//  This example writes two numerical values (int num and float num) and
//  reads a string value to/from three cells:

---------------------------
sendCommand.pgx

call writeSocket(x_nCamID,x_sCmd)

call readSocket(x_nCamID,l_sMsgError,x_bError)
call checkErrFormat(x_nCamID,l_sMsgError,l_bError)
x_bError=l_bError
if bDebugProgram
  //Displays error message
  //getFullError() replace getErrorCode() and getErrorMessage()
  call getFullError(x_nCamID,l_nErrorCode,l_sMsgError)
  ? "Cmd> "+l_sMsgError
endIf



---------------------------
writeSocket.pgx

for i=0 to (len(x_sMsg)-1)
  sioSet(cCamera[x_nCamID].sSocket,asc(x_sMsg,i))
endFor
sioSet(cCamera[x_nCamID].sSocket,13)
sioSet(cCamera[x_nCamID].sSocket,10)
if bDebugSocket
  ? "W Status code: "+x_sMsg
endIf

———————————

TODO mettre une nouvelle pile pour que l'armoire conserve l'heure, sinon super penible pour savoir quel projet…


onglet Données clic droit sur “Projet”, puis “Ajouter→ajouter nouvelle donnée”

par défaut, l'entrée/sortie sSio n'est pas liée à une entrée/sortie du système dans IO physiques-Controller1, dans les sockets il y a 4 liens physiques

j'essaie socketClient

on peut cocher !!!!!

IO physique ouvrir Socket, la liste apparaît cocher la socket à importer, un carré bleu doit apparaître à gauche de Socket, puis cliquer droit sur Socket et cliquer gauche sur importer. Laisser les options par défaut (Importer dans Projet et Auto-generated name…) puis “Ok”

CREATION DE LA SOCKET AVEC LE PENDANT AVANT la création du projet avec SRS pour que l'import fonctionne

librairie récupérée de: C:\Users\bvande\Documents\communication-EntreeSorties-mai2019_michel\communication-EntreeSorties-mai2019\Controller1\usr\usrapp\cognexComm7En


Installation python sur machine windows:

https://pypi.anaconda.org/ales-erjavec/simple/pyqt4/4.11.4/PyQt4-4.11.4-cp34-none-win_amd64.whl cd \Python34\Scripts pip install QtGui pip3 install C:\Users\bvande\Downloads\PyQt4-4.11.4-cp34-none-win_amd64.whl

Problème, je ne peux pas lancer un programme python qui communique via UDP avec le simulateur sur le même pc car il n'y a qu'un numéro de port (local=distant) pour les sockets créées par VAL3 et donc si l'IP est la même, le simulateur recoit les données qu'il envoie. donc il faut passer par un serveur (avec une ip différente) qui centralise les données capteurs; l'appli Qt sur le pc étudiant envoie des demandes au pc serveur et SRS communique avec le serveur qui centralise les données capteurs

En plus la lecture de données via socket UDP fonctionne de manière bloquante avec timeout, donc c'est bien d'avoir le pc serveur qui puisse répondre à des requette même si le capteur n'a pas donnée de valeur, pour dire qu'il n'y a pas de valeur justement et ne pas bloquer le robot.


gestion des ES TOR BasicIO-1

cliquer gauche pour cocher Entrée digital %I13 puis cliquer gauche importer dans l'onglet Données, Projet→dio doit contenir diB_13

ATTENTION Problème de numérotation sur le bornier, car les indices commencent à 1

Sortie doB_15 (numeroté 16) ne fonctionne pas

 putln("doB_12")
while true
  doB_12[0]=true
  put("1")
  delay(1)
  
  doB_12[0]=false
  put("0")
  delay(1)
  

dans le fichier: C:\Users\bvande\Documents\Staubli\SRS\Cell2\Controller1\usr\configs\sio.cfx

<socketClt>

  <String name="name" value="client_socket" />
  <String name="desc" value="" />
  <Inet name="serverIp" value="192.168.1.49" />
  <Uint name="portNumber" value="30000" />
  <Int name="endOfString" value="13" />
  <Float name="timeOut" value="10" />
  <Bool name="nagle" value="false" />
</socketClt>

dans C:\Users\bvande\Documents\communication-EntreeSorties-mai2019_michel\communication-EntreeSorties-mai2019\Controller1\usr\usrapp\cognexComm7En\login.pgx

sioLink(cCamera[x_nCamID].sSocket,x_sioSocket)

call readSocket(x_nCamID,l_sMsg,x_bError)

                                             //putln("finreadsoc")
  // Send user name
  call readLogin(x_nCamID,l_sMsg,x_bError)
                                             //putln("readlogin")
  call writeSocket(x_nCamID,x_sUser)
  // Send password
  call readLogin(x_nCamID,l_sMsg,x_bError)
  call writeSocket(x_nCamID,x_sPassword)
     
  // Read login result
  call readSocket(x_nCamID,l_sMsg,x_bError)
  x_bError=find(l_sMsg,"User Logged In")==-1
  if x_bError
    cCamera[x_nCamID].nErrorCode=1
    cCamera[x_nCamID].bConnected=false
    if bDebugProgram
      putln("Login : failed")        
    endIf

readsocket x_sMsg=“”

//putln("read socket")

do

  l_nCount=sioGet(cCamera[x_nCamID].sSocket,l_nChar)
  //-1 : timeout for input communication has been reached

putln(“sio”) if (l_nCount>-1) and (l_nChar>=32) x_sMsg=x_sMsg+chr(l_nChar) endIf x_bError=l_nCount⇐-1 until (l_nChar==13) or x_bError Displays error message

if bDebugSocket
  ? "R Status code> "+x_sMsg
endIf

writesocket

for i=0 to (len(x_sMsg)-1)
  sioSet(cCamera[x_nCamID].sSocket,asc(x_sMsg,i))
endFor
sioSet(cCamera[x_nCamID].sSocket,13)
sioSet(cCamera[x_nCamID].sSocket,10)
if bDebugSocket
  ? "W Status code: "+x_sMsg
endIf

Python

pip3.txt
C:\Python34\Scripts>pip3 install tk
Downloading/unpacking tk
  Downloading tk-0.1.0-py3-none-any.whl
Installing collected packages: tk
Successfully installed tk
Cleaning up...
 
C:\Python34\Scripts>pip3 install matplotlib
Downloading/unpacking matplotlib
  Running setup.py (path:C:\Users\alimen\AppData\Local\Temp\pip_build_alimen\mat
plotlib\setup.py) egg_info for package matplotlib
 
    Beginning with Matplotlib 3.1, Python 3.6 or above is required.
 
    This may be due to an out of date pip.
 
    Make sure you have pip >= 9.0.1.
 
    Complete output from command python setup.py egg_info:
 
 
Beginning with Matplotlib 3.1, Python 3.6 or above is required.
 
 
 
This may be due to an out of date pip.
 
 
 
Make sure you have pip >= 9.0.1.
 
 
 
----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in C:\Users\alimen\App
Data\Local\Temp\pip_build_alimen\matplotlib
Storing debug log for failure in C:\Users\alimen\pip\pip.log
 
C:\Python34\Scripts>
staubli.1570187173.txt.gz · Dernière modification : 2019/10/04 13:06 de bvandepo