Manuel d’utilisation Universal Robots UR5 et UR10 Version logiciel : 1.7 Auteur : Sysaxes
Manuel d’utilisationUniversal Robots UR5 et UR10
Version logiciel : 1.7
Auteur : Sysaxes
NOTA : Ce manuel est un complèment du manuel d’utilisation et du manuel Script Universal Robots
Variables
• Types de variables
bool Vrai/Faux (True/False)
int Entier de 16 bits
float Réel
string Charactères ASCII (texte)
pose Variable position p[x,y,z,rx,ry,rz]
list Tableau de valeurs
Type Valeur
• Utiliser des variables dans un programme• Déclarer et modifier une variable
– La première utilisation d’une variable fait office de déclaration de variable.
L’utilisation de variables se fait avec la touche « Affectation ».
Exemple :
– L’utilisation de la fonction « Affectation » permet également d’afficher ou de rafraichir l’affichage d’une variable dans l’onglet « Variables » qui apparait lors de l’exécution du programme :
– L’incrémentation d’un compteur par exemple, se fait de la manière suivante :
• Utiliser des variables dans un programme• Déclarer et modifier une variable
– Afin de lire une seule valeur d’une liste, la syntaxe est la suivante :
Cette commande permet d’affecter à la variable « valeur » la 6ème valeur de la variable liste (l’index a spécifier entre crochet commence à 0 pour la 1ère valeur de la liste, 1 pour la 2ème, …).
– Une variable peut-être aussi modifiée par une ligne Script via la touche « Code Script ».
Cela est nécessaire par exemple pour modifier une seule valeur d’une variable liste :
– La gestion d’une variable par une ligne Script ne déclenche pas son affichage ou son rafraichissement dans l’onglet « Variable ».
ATTENTION :Le signe ‘=‘ qui apparait sur la page suivante n’est pas un signe d’affectation, mais un signe de test :
Celui-ci est utilisé par exemple pour faire un test dans une fonction « Si » :
ATTENTION :Le signe ‘=‘ nécessaire à l’affectation d’une variable, se situe sur la page suivante (accessible en cliquant sur le clavier en haut à gauche de l’image en page précédente) :
• Valeurs initiales des variables• Valeurs initiales des variables
– Il est possible de faire la déclaration et de définir les valeurs initiales des variables en cochant la case suivante :
– Chaque variable utilisée dans le programme apparait alors avec la possibilité de définir une valeur ou de conserver la dernière valeur lors de la précédente exécution du programme.
• Variables position• Définition d’une variable position
• Utilisation d’une variable position– Une variable position peut par exemple être utilisée dans une ligne de commande
script :
pose_var = p[ x , y , z , rx , ry , rz ]
nom de la variable coordonnées orientations
ATTENTION : les coordonnées ou distance sont en mètres et les angles en radians.
• Variables ‘angles moteurs’• Définition d’une variable ‘angles moteurs’
• Utilisation d’une variable ‘angles moteurs’– Cette variable de type liste contient les angles en radians des 6 moteurs du robot dans
cet ordre : [Base, Epaule, Coude, Poignet 1, Poignet 2, Poignet 3].
– Cette variable peut par exemple être utilisée dans une ligne de commande script :
angles_var = [ a1 , a2 , a3 , a4 , a5 , a6 ]
nom de la variable angles moteurs
Threads / Evénements
• Définition des threads / événements
• Thread• Tache de fond
• Exécutée en permanence
(dès de le démarrage du
programme principal)
• Evénements• Tache de fond
• Déclenchée par une condition
Prog robot Evénement Thread
DO[0] = HAUT
DO[0] = BAS
Start
Condition : DO[0] = HAUT
Stop
• Utilisation des Threads
• Un Thread peut-être utilisé par exemple pour piloter des éléments demachines indépendamment des mouvements du robots, pour faireclignoter une verrine, pour réaliser un chronomètre, …
• Un Thread peut communiquer avec le programme principal grâce à desvariables ou des entrées/sorties.
• Plusieurs Threads peuvent être présents dans un programme et ils serontdonc tous exécutés en parallèle.
• Utilisation des Threads• Exemple 1 : Chronomètre
• Exemple 2 : Clignotement de verrine
Dans cet exemple, le programme principal remet à 0 la variable ‘compteur’ àchaque début de cycle. En parallèle des mouvements du robot, le Threadincrémente cette variable de 0.01 toutes les 0.01 secondes.A la fin des mouvements du robot, la valeur du chronomètre est affectée à lavariable ‘temps_cycle’ afin d’afficher la durée de ce programme, alors que leprogramme principal effectue le cycle suivant.
Dans cet exemple, le programme principal comporte les mouvements durobot. En parallèle, le Thread fait clignoter toutes les secondes une verrineraccordée à la sortie 0.
(Les programmes sont téléchargeables en cliquant dessus)
• Utilisation des Evénements
• Un événement peut-être utilisé par exemple pour surveiller un appuibouton et ainsi déclencher une action.
• Plusieurs évènements peuvent être présents dans un programme.Cependant, il est à noter que lorsqu’un événement est déclenché, lesautres événements ne seront plus surveillés tant que l’action del’événement en cours n’est pas terminée. Par conséquent, si unprogramme doit comprendre plusieurs événements, il faut les réserveraux actions ne prenant pas un long temps d’exécution. Si il est nécessairede déclencher une action « longue », il est alors préférable d’utiliser unThread comprenant une fonction « Si ».
• Utilisation des Evénements• Exemple : Surveillance d’un bouton Start et d’un bouton Stop
Dans cet exemple, un bouton Start est raccordé à l’entrée 0, et un boutonStop à l’entrée 1.Lorsque le programme est démarré, le robot attend que la variable‘demarrer’ soit égale à 1.
Le premier évènement surveille l’action sur le bouton Start. Quand celui-ciest actionné, la valeur 1 est affecté à la variable. Le programme tourne alorstant que cette condition est vraie.
Le deuxième évènement surveille l’action sur le bouton Stop. Quand celui-ciest actionné, la valeur 0 est affecté à la variable. Le robot finit donc le cycleen cours, puis attend de nouveau que la variable soit égale à 1.
(Le programme est téléchargeable en cliquant dessus)
Fonction Force
• Introduction à la fonction Force
• Description• Spécifier une gestion de la force selon un repère
• Spécifier une gestion de la force suivant une trajectoire
• Définir une force selon un ou plusieurs axes
• Limiter la vitesse de l’outil en mode compliance
• Test aisé à l’aide du bouton Teach
• Caractéristiques• Précision en force ± 10 N
• Précision en couple ± 5 Nm
• Précision en position ± 5 mm
• Précision en orientation ± 0.5 °
• Type de Force : Simple
• Description• Compliant suivant un axe
• Force suivant l’axe Z ou suivant Y pour les fonctions ligne
• Type de Force : Cadre
• Description• Compliant suivant plusieurs axes
• Niveau de force réglable pour chaque axe
• Vitesse réglable pour chaque axe en mode compliance
• Repères Base, Outil ou définis par l’utilisateur
• Type de Force : Point
• Description• Définir un point à atteindre
• Y-axis of task frame points towards Feature point
• Task frame changes during runtime
Script
Script
• Introduction to UR script
• Software levels
UR-GUI(GUI level)
URController(script level)
TCP/IP
.urp files
.script files
C-API(hardware level)
• Using UR script
• Script manual
• Implementing script in robot program• Single script command
• Script file
• Practice 5.1
• Create program that continuously saves the TCP speed in variable• Decide which script code to use
• Practice 5.2
• Create program that calls a mathematical function in a script file• Create script file with mathematical function
Communication Ethernet
Communication Ethernet
• Introduction à la communication Ethernet
• TCP/IP: Protocole de communication standard• Low cost
• Haute fiabilité
• Haute performance
• Haute disponibilité
Protocole
Adresse MAC
Adresse TCP/IP
Numéro de port
Ethernet
IP
TCP
Modbus
Communication Ethernet
• Introduction à la communication Ethernet
• Réseau Ethernet
Module ext.
Robot UR
RJ45
Switch eth.
Robot UR
RJ45
Cam Vision IHM PCAPI
Communication Ethernet
Communication Ethernet
Configuration de l’adresse IP du robot
Communication Ethernet
Communication Ethernet
NOTA : Préférer l’adresse statique à la configuration DHCP afin d’éviter que le robot ne change d’adresse
Connections possibilités via Eternet
Communication Ethernet
• Connections disponibles
Port Interface
502 Serveur Modbus TCP (accès en lecture/écriture à différentes données du controleur robot pour d’autres appareils)
22 SSH (Secure Shell Client) / SFTP (Secure File Transfer Protocol)
29999 Serveur Dashboard
30001 Interface client principale (états et messages du robot)
30002 Interface client secondaire (état du robot uniquement)
30003 Interface de communcation temps réel (ou interface Matlab) (125 Hz)
Connexions Socket avec script UR
Clients Modbus TCP
Communication Ethernet
Robot en mode serveur
Robot en mode client
Port Interface
502 Serveur Modbus TCP (accès en lecture/écriture à différentes données du controleur robot pour d’autres appareils)
22 SSH (Secure Shell Client) / SFTP (Secure File Transfer Protocol)
29999 Serveur Dashboard
30001 Interface client principale (états et messages du robot)
30002 Interface client secondaire (état du robot uniquement)
30003 Interface de communcation temps réel (ou interface Matlab) (125 Hz)
Connexions Socket avec script UR
Clients Modbus TCP
Communication Ethernet
Robot en mode serveur
Robot en mode client
• Introduction au Modbus TCP
• Modbus TCP• Signaux digitaux
• Registres
• Maitre/esclave ou Client/serveur
Module ext.
Robot UR
RJ45
Switch eth.
Robot UR
RJ45
Périph. B Périph. C Périph. DPériph. A
Communication Ethernet
• Utiliser le Serveur Modbus TCP
– Voir fichier PDF
Communication Ethernet
Port Interface
502 Serveur Modbus TCP (accès en lecture/écriture à différentes données du controleur robot pour d’autres appareils)
22 SSH (Secure Shell Client) / SFTP (Secure File Transfer Protocol)
29999 Serveur Dashboard
30001 Interface client principale (états et messages du robot)
30002 Interface client secondaire (état du robot uniquement)
30003 Interface de communcation temps réel (ou interface Matlab) (125 Hz)
Connexions Socket avec script UR
Clients Modbus TCP
Communication Ethernet
Robot en mode serveur
Robot en mode client
• SSH / SFTP (secure file transfer protocol)
• Client SSH/SFTP• Hôte : adresse IP du robot
• Port 22
• Utilisateur : root
• Mot de passe : easybot
Communication Ethernet
Un logiciel SSH est téléchargeable en cliquant sur ce logo :
• Accèder aux fichiers du robot par SFTP– Configurer l’adresse IP du robot
– Dans le logiciel FTP (ex : FileZilla), créer une nouvelle connexion avec :
• l’adresse IP du robot,
• le protocole SFTP,
• type d’authentification : Normale,
• Identifiant : root,
• Mot de passe : easybot
Communication Ethernet
Le logiciel FileZilla est téléchargeable en cliquant sur ce logo :
– Lancer la connexion
– Vous avez désormais accès à l’ensemble des fichiers du robot.
– Les programmes créés se trouvent dans /programs
Communication Ethernet
ATTENTION : Ne pas toucher aux autres fichiers du robot (fichier système). Une modification ou un effacement d’un fichier pourrait rendre le robot inutilisable
Port Interface
502 Serveur Modbus TCP (accès en lecture/écriture à différentes données du controleur robot pour d’autres appareils)
22 SSH (Secure Shell Client) / SFTP (Secure File Transfer Protocol)
29999 Serveur Dashboard
30001 Interface client principale (états et messages du robot)
30002 Interface client secondaire (état du robot uniquement)
30003 Interface de communcation temps réel (ou interface Matlab) (125 Hz)
Connexions Socket avec script UR
Clients Modbus TCP
Communication Ethernet
Robot en mode serveur
Robot en mode client
• Serveur Dashboard : Port 29999Commandes Description Syntaxe Réponses (ou exemple de réponse)
A la connexion du client Connected: Universal Robots Dashboard Server
load Charger un programme load /programs/essai.urp File not found: /programs/essai.urpou
Loading program: /programs/essai.urp
play Démarrer le programme chargée play Starting program
stop Arrêter le programme en cours stop Stopped
pause Mettre en pause le programme en cours Pause Pausing program
quit Fermer la connexion quit
shutdown Eteinds le robot shutdown Shutting down
running Demande l’état d’execution de programme Program running: trueou
Program running: false
robotmode Demande le mode du robot robotmode Robotmode: x (voir valeurs de x page suivante)
get loaded program Demande le fichier chargé get loaded program Loaded program: /programs/essai.urpou
No program loaded
popup Fait apparaitre une fenêtre popup Hello world! showing popup
close popup Ferme une fenêtre close popup closing popup
Communication Ethernet
• Différentes valeurs de réponse à la commande Robotmode
-1 NO_CONTROLLER_MODE
0 ROBOT_RUNNING_MODE (normal state)
1 ROBOT_FREEDRIVE_MODE
2 ROBOT_READY_MODE
3 ROBOT_INITIALIZING_MODE
4 ROBOT_SECURITY_STOPPED_MODE
5 ROBOT_EMERGENCY_STOPPED_MODE
6 ROBOT_FAULT_MODE
7 ROBOT_NO_POWER_MODE
8 ROBOT_NOT_CONNECTED_MODE
9 ROBOT_SHUTDOWN_MODE
10 ROBOT_SAFEGUARD_STOP_MODE
Communication Ethernet
• Lancer un programme enregistré– Sur le port 29999 :
• Envoyer ‘running’ pour savoir si un programme tourne
– Réponse : ‘Program running: true’ ou ‘Program running: false’
• Envoyer ‘stop’ si nécessaire– (ou ‘stopj(x)’ avec x =valeur de décélération en rad/s² sur le port 30001)
• Vérifier de nouveau si le programme tourne (facultatif)
• Charger le programme avec la commande ‘load’
– Exemple : ‘load /programs/essai.urp’
• Vérifier le programme chargé avec la commande ‘get loaded program’
– Exemple de réponse : ‘Loaded program: /programs/essai.urp’
• Lancer le programme chargé avec la commande ‘play’
– Réponse : ‘Starting program’
• Envoyer ‘running’ pour savoir si le programme tourne
– Réponse : ‘Program running: true’ ou ‘Program running: false’
Communication Ethernet
• Redémarrage après un arrêt robot « robotmode 4 »– Sur le port 29999 :
• envoyer ‘robotmode’ pour connaitre l’état du robot
• envoyer ‘close popup’ pour fermer la fenêtre à l’écran
– Sur le port 30001 :• Envoyer ‘set robotmode run’ pour remettre le robot en mode prêt
– Sur le port 29999 :• Vérifier avec ‘robotmode’ que le robot est prêt
Communication Ethernet
• Redémarrage après un arrêt robot « robotmode 7 »– Sur le port 29999 :
• envoyer ‘robotmode’ pour connaitre l’état du robot (attendu mode 7)
– Sur le port 30001 :• Envoyer ‘power on’ 2 fois pour mettre sous tension le contrôleur puis les moteurs
• Envoyer la commande ‘speedj_init’ pour initialiser– exemple speedj_init([0.1,-0.1,-0.1,0.1,0.1,0.1],0.1,5)
– cela signifie une initialisation des 6 axes en même temps avec une vitesse de 0.1 rad/s sur l’axe 1, -0.1 rad/s sur l’axe2, -0.1 rad/s sur l’axe 3, etc…., une accélération de 0.1 rad/s et un temps maxi alloué de 5 secondes.
– répéter l’opération autant que nécessaire jusqu’à avoir le “robotmode 0”
– Sur le port 29999 :• envoyer ‘close popup’ x fois pour fermer les fenêtres
Communication Ethernet
Port Interface
502 Serveur Modbus TCP (accès en lecture/écriture à différentes données du controleur robot pour d’autres appareils)
22 SSH (Secure Shell Client) / SFTP (Secure File Transfer Protocol)
29999 Serveur Dashboard
30001 Interface client principale (états et messages du robot)
30002 Interface client secondaire (état du robot uniquement)
30003 Interface de communcation temps réel (ou interface Matlab) (125 Hz)
Connexions Socket avec script UR
Clients Modbus TCP
Communication Ethernet
Robot en mode serveur
Robot en mode client
• Commandes disponibles(en complément des fonctions “scripts” listées dans le manuel correspondant, voici des commandes supplémentaires)
Commandes Description Syntaxe Réponses (ou exemple de réponse)
set robotmode run Remettre le robot en état set robotmode run
speedj_init Initialiser le robot speedj_init([j1,j2,j3,j4,j5,j6],0.1,5) speedj_init([0.1,-0.1,-0.1,0.1,0.1,0.1],0.1,5)cela signifie une initialisation des 6 axes en même temps avec une vitesse de 0.1 rad/s sur l’axe 1, -0.1 rad/s sur l’axe 2, -0.1 rad/s sur l’axe 3, etc…., une accélération de 0.1
rad/s et un temps maxi alloué de 5 secondes
.....
Communication Ethernet
Port Interface
502 Serveur Modbus TCP (accès en lecture/écriture à différentes données du controleur robot pour d’autres appareils)
22 SSH (Secure Shell Client) / SFTP (Secure File Transfer Protocol)
29999 Serveur Dashboard
30001 Interface client principale (états et messages du robot)
30002 Interface client secondaire (état du robot uniquement)
30003 Interface de communcation temps réel (ou interface Matlab) (125 Hz)
Connexions Socket avec script UR
Clients Modbus TCP
Communication Ethernet
Robot en mode serveur
Robot en mode client
• Constitution des messages disponibles sur le port 30002– Format de trame :
Communication Ethernet
4 octets (int) Longueur totale de la trame (ces 4 octets inclus)
1 octet (uchar) Type de message uniquement 16« Robot State »
4 octets (int) Longueur totale du sous-paquet (ces 4 octets inclus)
1 octet (uchar) Type de message Type de message possible :0 = Robot Mode Data
1 = Joint Data2 = Tool Data
3 = Masterboard Data4 = Cartesian Info
5 = Kinematics Info6 = Configuration Data
n octets Contenu du message
En-tête de la trame
Sous-paquet répété pour chaque type de
message
(longueur du sous-paquet différente suivant le type de
message)
4 octets (int)
1 octet (uchar)
n octets
4 octets (int)
1 octet (uchar)
n octets
….
Sous-paquet 2
Sous-paquet 3
……
Taille Description Détails
Communication Ethernet
Taille Description Détails
4 octets (int) Longueur totale de la trame (ces 4 octets inclus) =29 octets pour ce message
1 octet (uchar) Type de message =0 pour ce message (Robot Mode Data)
8 octets (uint64) Timestamp
1 octet (bool) RobotConnected
1 octet (bool) RealRobotEnabled
1 octet (bool) PowerOnRobot
1 octet (bool) EmergencyStopped
1 octet (bool) SecurityStopped
1 octet (bool) ProgramRunning
1 octet (bool) ProgramPaused
1 octet (uchar) RobotMode Type de modes possibles :0 = ROBOT_RUNNING_MODE1 = ROBOT_FREEDRIVE_MODE
2 = ROBOT_READY_MODE3 = ROBOT_INITIALIZING_MODE
4 = ROBOT_SECURITY_STOPPED_MODE5 = ROBOT_EMERGENCY_STOPPED_MODE
6 = ROBOT_FATAL_ERROR_MODE7 = ROBOT_NO_POWER_MODE
8 = ROBOT_NOT_CONNECTED_MODE9 = ROBOT_SHUTDOWN_MODE
10 = ROBOT_SAFEGUARD_STOP_MODE
8 octets (double) SpeedFraction
• Constitution du message 0 = Robot Mode Data
• Constitution du message 1 = Joint Data
Communication Ethernet
Taille Description Détails
4 octets (int) Longueur totale de la trame (ces 4 octets inclus) =251 octets pour ce message
1 octet (uchar) Type de message =1 pour ce message (Joint Data)
Toutes les données ci-dessous sont données 6 fois (1 fois par axe). Par exemple, pour le champ q_actual, le robot fournit 8 octets pour la position du 1ère axe, puis 8 octets pour le 2ème axe, ….
6x8 octets (double) q_actual Position de chaque axe
6x8 octets (double) q_target Position à atteindre pour chaque axe
6x8 octets (double) qd_actual Vitesse pour chaque axe
6x4 octets (float) I_actual Courant de chaque axe
6x4 octets (float) V_actual Tension de chaque axe
6x4 octets (float) T_motor Température de chaque axe
6x4 octets (float) T_micro Obsolète (plus utilisé)
6x1 octet s(uchar) JointMode Type de modes possibles ci-dessous
237 = JOINT_PART_D_CALIBRATION_MODE238 = JOINT_BACKDRIVE_MODE
239 = JOINT_POWER_OFF_MODE240 = JOINT_EMERGENCY_STOPPED_MODE241 = JOINT_CALVAL_INITIALIZATION_MODE
242 = JOINT_ERROR_MODE243 = JOINT_FREEDRIVE_MODE244 = JOINT_SIMULATED_MODE
245 = JOINT_NOT_RESPONDING_MODE246 = JOINT_MOTOR_INITIALISATION_MODE
247 = JOINT_ADC_CALIBRATION_MODE248 = JOINT_DEAD_COMMUTATION_MODE
249 = JOINT_BOOTLOADER_MODE250 = JOINT_CALIBRATION_MODE
251 = JOINT_STOPPED_MODE252 = JOINT_FAULT_MODE
253 = JOINT_RUNNING_MODE254 = JOINT_INITIALIZATION_MODE
255 = JOINT_IDLE_MODE
• Constitution du message 2 = Tool Data
Communication Ethernet
Taille Description Détails
4 octets (int) Longueur totale de la trame (ces 4 octets inclus) =37 octets pour ce message
1 octet (uchar) Type de message =2 pour ce message (Tool Data)
1 octet (char) AnalogInputRange2
1 octet (char) AnalogInputRange3
8 octets (double) AnalogInput2
8 octets (double) AnalogInput3
4 octets (float) ToolVoltage48V
1 octet (uchar) ToolOutputVoltage
4 octets (float) ToolCurrent
4 octets (float) ToolTemperature
1 octet (uchar) ToolMode Type de modes possibles :249 = TOOL_BOOTLOADER_MODE
253 = TOOL_RUNNING_MODE255 = TOOL_IDLE_MODE
Communication Ethernet
Taille Description Détails
4 octets (int) Longueur totale de la trame (ces 4 octets inclus) =64 octets pour ce message (76 avec Euromap 67)
1 octet (uchar) Type de message =3 pour ce message (Masterboard Data)
2 octets (short) DigitalInputBits
2 octets (short) DigitalOutputBits
1 octet (char) AnalogInputRange0
1 octet (char) AnalogInputRange1
8 octets (double) AnalogInput0
8 octets (double) AnalogInput1
1 octet (char) AnalogOutputDomain0
1 octet (char) AnalogOutputDomain 1
8 octets (double) AnalogOutput0
8 octets (double) AnalogOutput1
4 octets (float) MasterboardTemperature
4 octets (float) RobotVoltage48V
4 octets (float) RobotCurrent
4 octets (float) MasterIOCurrent
1 octet (uchar) MasterSafetyState Différents états et explication page suivante
1 octet (uchar) MasterOnOffState Différents états et explication page suivante
1 octet (char) Euromap67Installed
suite du message sur la page suivante
• Constitution du message 3 = Masterboard Data
Communication Ethernet
4 octets (integer) EuromapInputBits si Euromap 67 installé
4 octets (integer) EuromapOutputBits si Euromap 67 installé
2 octets (short) EuromapVoltage si Euromap 67 installé
2 octets (short) EuromapCurrent si Euromap 67 installé
Etat Description Commentaire
0 SAFETY_STATE_UNDEFINED Used for shared state variables when communication is down
1 SAFETY_STATE_BOOTLOADER Used for bootloading firmware over the robot bus
2 SAFETY_STATE_FAULT Used for internal circuit/robot errors only
3 SAFETY_STATE_BOOTINGWaiting for communication to work, robot voltage to be under 4V.
This state is also used to reboot the masterboard instead of faulting.
4 SAFETY_STATE_INITIALIZING Initializing masterboard (checking voltages etc.)
5 SAFETY_STATE_ROBOT_EMERGENCY_STOP (EA + EB + SBUS->Screen) Physical e-stop interface input activated
6 SAFETY_STATE_EXTERNAL_EMERGENCY_STOP (EA + EB + SBUS->Euromap67) Physical e-stop interface input activated
7 SAFETY_STATE_SAFEGUARD_STOP (SA + SB + SBUS) Physical s-stop interface input
8 SAFETY_STATE_OK
MasterSafetyState : Etats possibles
Etat Description Commentaire
0 ROBOT_48V_STATE_OFF There is ~0V voltage on the robot
1 ROBOT_48V_STATE_TURNING_ON Voltage is raising (Soft Start)
2 ROBOT_48V_STATE_ON Power transistors is on, and the voltage is ~48V
3 ROBOT_48V_STATE_TURNING_OFF
MasterOnOffState : Etats possibles
• Constitution du message 3 = Masterboard Data (suite)
Communication Ethernet
Taille Description Détails
4 octets (int) Longueur totale de la trame (ces 4 octets inclus) =53 octets pour ce message
1 octet (uchar) Type de message =4 pour ce message (Cartesian Data)
8 octets (double) X Tool vector, X-value
8 octets (double) Y Tool vector, Y-value
8 octets (double) Z Tool vector, Z-value
8 octets (double) Rx Rx: Axis angle of the tool orientation
8 octets (double) Ry Ry: Axis angle of the tool orientation
8 octets (double) Rz Rz: Axis angle of the tool orientation
• Constitution du message 4 = Cartesian Data
Communication Ethernet
• Constitution du message 5 = Kinematics Info
Ce message a une longueur de 225 octets et contient un Checksum.Il pourrait faire l'objet de changement dans un proche avenir.
Communication Ethernet
Taille Description Détails
4 octets (int) Longueur totale de la trame (ces 4 octets inclus) =64 octets pour ce message (76 avec Euromap 67)
1 octet (uchar) Type de message =3 pour ce message (Masterboard Data)
Les 4 valeurs ci-dessous sont données 6 fois (1 fois par axe).
6x8 octets (double) JointMinLimit
6x8 octets (double) JointMaxLimit
6x8 octets (double) JointMaxSpeed
6x8 octets (double) JointMaxAcceleration
8 octets (double) VJointDefault Limite de vitesse par défaut
8 octets (double) AJointDefault Limite d’accélération par défaut
8 octets (double) VToolDefault Limite de la vitesse outil par défaut
8 octets (double) AToolDefault Limite de l’accélération outil par défaut
8 octets (double) EqRadius Taille caractéristique de l’outil
Les 4 valeurs ci-dessous sont données 6 fois (1 fois par axe).
8 octets (double) DHa Paramètre DH 'a'
8 octets (double) DHd Paramètre DH 'd'
8 octets (double) DHalpha Paramètre DH 'alpha'
8 octets (double) DHtheta Paramètre DH 'Theta'
4 octets (int) MasterboardVersion
4 octets (int) ControllerBoxType
4 octets (int) RobotType
4 octets (int) RobotSubType
• Constitution du message 6 = Configuration Data
Communication Ethernet
• Envoi d’un programme secondaire via le port 30002Qu’est-ce qu’un programme secondaire ?- Un programme secondaire est un programme script standard qui peut-être envoyé via le port 30002.- Un programme secondaire peut-être exécuté pendant que le contrôleur exécute un programme principal (qui par exemple fait se déplacer le robot).- Un programme secondaire doit respecter le syntaxe des programmes Script.- La commande de déclaration par laquelle commence un programme secondaire doit être déclaré « sec » (au lieu de « def » pour un programme principal).- Un programme secondaire ne doit nécessiter aucun temps « physique » lors de son éxécution.
Exemple :- Imaginons que le programme principal suivant soit en cours d’exécution :
def primaryProgram():while (True):
movej([0.943, -1.308, 2.206, -2.650, -1.081, 4.805], a=1.396, v=1.047)movej([0.943, -1.014, 2.246, -2.985, -1.081, 4.805], a=1.396, v=1.047)
endend
- Il est alors possible d’envoyer ce programme secondaire alors que le robot continue de se déplacer entre les deux points du programme principal :
sec secondaryProgram():set_digital_out(1, True)
end
Port Interface
502 Serveur Modbus TCP (accès en lecture/écriture à différentes données du controleur robot pour d’autres appareils)
22 SSH (Secure Shell Client) / SFTP (Secure File Transfer Protocol)
29999 Serveur Dashboard
30001 Interface client principale (états et messages du robot)
30002 Interface client secondaire (état du robot uniquement)
30003 Interface de communcation temps réel (ou interface Matlab) (125 Hz)
Connexions Socket avec script UR
Clients Modbus TCP
Communication Ethernet
Robot en mode serveur
Robot en mode client
Communication Ethernet
Taille Description Détails
4 octets (int) Longueur totale de la trame (ces 4 octets inclus)
8 octets (double) Time Temps écoulé depuis que le contrôleur a été démarré
Toutes les données ci-dessous sont données 6 fois (1 fois par axe).
6x8 octets (double) q target Position à atteindre pour chaque axe
6x8 octets (double) qd target Vitesse à atteindre pour chaque axe
6x8 octets (double) qdd target Accélération à atteindre pour chaque axe
6x8 octets (double) I target Courant à atteindre pour chaque axe
6x8 octets (double) M target Moment à atteindre pour chaque axe
6x8 octets (double) q actual Position actuelle de chaque axe
6x8 octets (double) qd actual Vitesse actuelle de chaque axe
6x8 octets (double) I actual Courant actuel de chaque axe
6*3*8 octets (double) Accelerometer Values Obsolète (valeurs x,y,z de l’accéléromètre pour chaque axe)
6x8 octets (double) TCP force Forces généralisées au TCP
6x8 octets (double) Tool vector Coordonnées cartésiennes de l’outil (x,y,z,rx,ry,rz)
6x8 octets (double) TCP speed Vitesse de l’outil en coordonnées cartésiennes
8 octets (uint64_t) Digital input bits Etat des entrées digitales
6x8 octets (double) Motor temperatures Température de chaque axe en degrés celcius
8 octets (double) Controller Timer Temps d’exécution des thread en temps réel controleur
8 octets (double) Test value Valeur utilisée uniquement par le logiciel Universal Robots
• Interface de communication temps réel
Port Interface
502 Serveur Modbus TCP (accès en lecture/écriture à différentes données du controleur robot pour d’autres appareils)
22 SSH (Secure Shell Client) / SFTP (Secure File Transfer Protocol)
29999 Serveur Dashboard
30001 Interface client principale (états et messages du robot)
30002 Interface client secondaire (état du robot uniquement)
30003 Interface de communcation temps réel (ou interface Matlab) (125 Hz)
Connexions Socket avec script UR
Clients Modbus TCP
Communication Ethernet
Robot en mode serveur
Robot en mode client
• Sockets from UR script
• Open a socket connection• socket_open()
• Use script codes to transfer values between robot and PC• socket_set_var()
• socket_get_var()
• socket_read_ascii_float()
Communication Ethernet
Port Interface
502 Serveur Modbus TCP (accès en lecture/écriture à différentes données du controleur robot pour d’autres appareils)
22 SSH (Secure Shell Client) / SFTP (Secure File Transfer Protocol)
29999 Serveur Dashboard
30001 Interface client principale (états et messages du robot)
30002 Interface client secondaire (état du robot uniquement)
30003 Interface de communcation temps réel (ou interface Matlab) (125 Hz)
Connexions Socket avec script UR
Clients Modbus TCP
Communication Ethernet
Robot en mode serveur
Robot en mode client
• Utiliser le Modbus TCP
• Setup robot and external module• Network setup on robot
• Add external module in robot installation
• Setup Modbus signals and registers• Select signal type
• Define address and name
• Verify connection
• Use signals / registers in program• Digital inputs
• Digital outputs
• Registers
Communication Ethernet
Features
• Definition of feature
• Default features• Base
• Tool
• User-defined features• Point
• Line
• Plane
• Using features
• Move relative to feature
• Teach relative to feature
• Feature as variable
• Feature-point as global pose
• Practice 3.1
• Create feature• Jog robot relative to feature
• Teach program relative to feature
• Move feature by defining the feature as variable, verify teached program is offset similar
• Practice 3.2
• Move program between multiple features• Create two features
• Teach program relative to one feature
• Make program logic and switch between the two features