0% ont trouvé ce document utile (0 vote)
32 vues176 pages

Logiciel RAPID ABB

Transféré par

saaid
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
32 vues176 pages

Logiciel RAPID ABB

Transféré par

saaid
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ROBOTICS

Manuel de référence technique


Vue d’ensemble de RAPID
Trace back information:
Workspace 22A version a4
Checked in 2022-02-23
Skribenta version 5.4.005
Manuel de référence technique
Vue d’ensemble de RAPID
RobotWare 6.13.02

ID du document: 3HAC050947-004
Révision: N

© Copyright 2004-2022- ABB. Tous droits réservés.


Spécifications sujettes à changement sans préavis.
Les informations contenues dans ce manuel peuvent être modifiées sans préavis et
ne doivent pas être interprétées comme un engagement de la part d'ABB. La
responsabilité d'ABB ne sera pas engagée par suite d'erreurs contenues dans ce
manuel.
Sauf stipulation expresse du présent manuel, aucune des informations ne pourra
être interprétée comme une garantie d'ABB couvrant les risques de perte, de
dommages corporels ou matériels, l'adaptation à un usage particulier ou toute autre
garantie que ce soit.
En aucun cas, la responsabilité d'ABB ne pourra être engagée à la suite de dommages
fortuits ou liés à l'utilisation du présent manuel ou des produits décrits dans le manuel.
Le présent manuel ne doit pas être reproduit ou copié, intégralement ou en partie,
sans l'autorisation écrite d'ABB.
À conserver pour référence ultérieure.
D'autres exemplaires de ce manuel peuvent être obtenus auprès d'ABB.
Traduction de la notice originale.

© Copyright 2004-2022- ABB. Tous droits réservés.


Spécifications sujettes à changement sans préavis.
Table des matieres

Table des matieres


Vue générale de ce manuel .............................................................................................................. 7
Comment lire le présent manuel ...................................................................................................... 9

1 Programmation RAPID de base 11


1.1 Structure de programme ..................................................................................... 11
1.1.1 Introduction ............................................................................................ 11
1.1.2 Éléments de base .................................................................................... 13
1.1.3 Modules ................................................................................................ 17
1.1.4 Module système User .............................................................................. 20
1.1.5 Routines ................................................................................................ 21
1.2 Données de programme ..................................................................................... 28
1.2.1 Types de données ................................................................................... 28
1.2.2 Déclarations de données .......................................................................... 30
1.3 Expressions ..................................................................................................... 37
1.3.1 Types d'expressions ................................................................................ 37
1.3.2 Utilisation de données dans des expressions ............................................... 40
1.3.3 Utilisation des totaux dans les expressions .................................................. 41
1.3.4 Utilisation des appels de fonction dans les expressions ................................. 42
1.3.5 Priorité entre opérateurs ........................................................................... 44
1.3.6 Syntaxe ................................................................................................. 45
1.4 Instructions ...................................................................................................... 47
1.5 Contrôle du déroulement du programme ............................................................... 48
1.6 Instructions diverses .......................................................................................... 50
1.7 Paramètres de mouvement ................................................................................. 53
1.8 Mouvement ...................................................................................................... 58
1.9 Signaux d'entrée et de sortie ............................................................................... 67
1.10 Communication ................................................................................................. 71
1.11 Interruptions ..................................................................................................... 76
1.12 Récupération d'erreur ........................................................................................ 81
1.13 UNDO ............................................................................................................. 85
1.14 Système & temps .............................................................................................. 88
1.15 Mathématique ................................................................................................... 90
1.16 Fonctions d’opération de fichier ........................................................................... 93
1.17 Instructions d’aide à la programmation RAPID ........................................................ 94
1.18 Étalonnage & entretien ....................................................................................... 98
1.19 Fonctions de chaîne de caractères ....................................................................... 100
1.20 Multitâche ........................................................................................................ 102
1.21 Rétro-exécution ................................................................................................ 108

2 Programmation de mouvement et d'E/S 113


2.1 Systèmes de coordonnées .................................................................................. 113
2.1.1 Le point central de l'outil (TCP) du robot ...................................................... 113
2.1.2 Systèmes de coordonnées utilisés pour déterminer la position du TCP ............. 114
2.1.3 Systèmes de coordonnées utilisés pour déterminer la direction de l’outil ........... 121
2.2 Positionnement durant l’exécution du programme ................................................... 124
2.2.1 Introduction ............................................................................................ 124
2.2.2 Interpolation de la position et de l’orientation de l’outil ................................... 126
2.2.3 Interpolation des trajectoires de raccordement ............................................. 130
2.2.4 Axes indépendants .................................................................................. 135
2.2.5 Servo mou ............................................................................................. 138
2.2.6 Arrêt et redémarrage ................................................................................ 139
2.3 Synchronisation avec les instructions logiques ....................................................... 140
2.4 Configuration du robot ....................................................................................... 144
2.5 Modèles cinématiques de robot ........................................................................... 148
2.6 Supervision de déplacement/détection de collision .................................................. 152
2.7 Singularités ...................................................................................................... 156

Manuel de référence technique - Vue d’ensemble de RAPID 5


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
Table des matieres

2.8 Limitation d’accélération optimisée ....................................................................... 159


2.9 Zones atelier .................................................................................................... 160
2.10 Principes d’E/S ................................................................................................. 165

3 Glossaire 169

Index 171

6 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
Vue générale de ce manuel

Vue générale de ce manuel


A propos de ce manuel
Le présent manuel de référence contient des explications détaillées sur le langage
de programmation et sur l’ensemble des instructions, fonctions et types de données.
Le présent manuel est particulièrement utile pour la programmation hors ligne.
Les utilisateurs inexpérimentés doivent débuter avec Manuel d’utilisation - IRC5
avec FlexPendant.
Ce manuel décrit RobotWare 6.

Utilisation
Le présent manuel doit être consulté pendant la programmation.

Public visé
Ce manuel est conçu pour des personnes ayant déjà une expérience en
programmation, comme par exemple un programmeur en robotique.

Organisation des chapitres


Le manuel est articulé autour des chapitres suivants :
Chapitre Contenu
Programmation RA- répond aux questions telles que "Quelle instruction utiliser ?" ou
PID de base "Que signifie cette instruction ?". Ce chapitre décrit brièvement
toutes les instructions, fonctions et types de données groupés en
fonction de la liste d’instructions que vous utilisez pour la program-
mation. Il comprend également un résumé de la syntaxe, très utile
pour la programmation hors ligne. Il explique également les détails
inhérents au langage utilisé.
Programmation de Ce chapitre décrit les systèmes de coordonnées du robot, ses cara-
mouvement et d'E/S ctéristiques de vitesse et d'autres mouvements pendant l'exécution.
Glossaire Glossaire facilitant la compréhension des différents termes abordés.

Références

Référence ID du document
Manuel d’utilisation - IRC5 avec FlexPendant 3HAC050941-004
Manuel de référence technique - Instructions, fonctions et types 3HAC050917-004
de données RAPID
Technical reference manual - RAPID kernel 3HAC050946--001
Manuel de référence technique - Paramètres système 3HAC050948-004
Application manual - Controller software IRC5 3HAC050798--001

Révisions

Révision Description
- Disponible avec les RobotWare 6.0.
A Disponible avec les RobotWare 6.01.
• Ajout de l'instruction TriggJIOs, consultez Activation des sorties
ou des interruptions sur des positions spécifiques à la page 59.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 7
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
Vue générale de ce manuel
Suite

Révision Description
B Disponible avec les RobotWare 6.02.
• Ajout de fonctions trigonométriques pour les données de type dnum,
voir Fonctions arithmétiques à la page 90.
• Ajout de TriggDataCopy, TriggDataReset et TriggDataValid,
voirActivation des sorties ou des interruptions sur des positions
spécifiques à la page 59.
• Ajout de l'instruction SaveCfgData, voir Enregistrement des données
de configuration à la page 95.
C Disponible avec RobotWare 6.03.
• Les types de données de signal sont désormais à semi-valeur, voir
Types de données sans valeurTypes de données sans valeur à la
page 28 et Signaux d'entrée et de sortie à la page 67.
D Disponible avec RobotWare 6.04.
• Mise à jour des sections concernant la déclaration de données Dé-
claration de variable à la page 31 et Déclaration de persistante à la
page 33.
• Corrections mineures.
E Disponible avec RobotWare 6.05.
• Suppression des instructions DitherAct et DitherDeact.
• Ajout de Fonctions de la matrice à la page 92.
• Corrections mineures.
F Disponible avec RobotWare 6.06.
• Mise à jour de Instructions d’aide à la programmation RAPID à la
page 94
• Mise à jour de Comportement de l’exécution vers l’arrière à la page 110
• Mise à jour de Singularités à la page 156
• Corrections mineures.
G Disponible avec RobotWare 6.07.
• Ajout de CrossProd, Max et Min à Fonctions arithmétiques à la
page 90.
H Disponible avec RobotWare 6.08.
• Corrections mineures.
• Section Interpolation des trajectoires de raccordement à la page 130
mise à jour.
J Disponible avec RobotWare 6.09.
• Modifications apportées au texte et aux exemples pour la communi-
cation, pour accorder moins d’attention aux ports série et plus d’at-
tention aux dispositifs d’E/S.
K Disponible avec RobotWare 6.11.
• Ajout de StrFormat à Fonctions de chaîne de caractères à la
page 100.
L Disponible avec RobotWare 6.12.
• Ajout d'informations sur l’arrêt anti-collision indépendant sans frein.
M Disponible avec RobotWare 6.13.
• Ajout du support pour la division de pos, voir Expressions arithmé-
tiques à la page 37.
• Ajout d'informations indiquant que les options PP to Main et PP to
routine supprimeront les zones atelier temporaires.
N Disponible avec RobotWare 6.13.02.
• Clarification de la limitation de l'exécution arrière et des erreurs
d'exécution.

8 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
Comment lire le présent manuel

Comment lire le présent manuel


Conventions typographiques
Les exemples de programmes sont toujours affichés de la même façon lorsqu’ils
sont transférés vers un fichier ou une imprimante. Ceci diffère de ce qui est affiché
sur le FlexPendant de la manière suivante :
• Certains termes de commande qui sont masqués sur l’écran du FlexPendant
sont imprimés (par exemple, les mots indiquant le début et la fin d’une
routine).
• Les déclarations de données et de routine sont imprimées de manière
formelle, par exemple VAR num reg1;.
Dans les descriptions du présent manuel, tous les noms des instructions, fonctions
et types de données s'affichent dans une police à espacement fixe, par exemple
: TPWrite. Les noms des variables, paramètres système et options s'affichent en
italique. Les commentaires dans le code d'exemple ne sont pas traduits (même si
la manuel est traduit).

Règles de syntaxe
Les instructions et les fonctions sont décrites en faisant appel aussi bien à la
syntaxe simplifiée qu’à la syntaxe formelle. Si vous utilisez le FlexPendant pour
effectuer une programmation, il vous suffit généralement de connaître la syntaxe
simplifiée, car le robot vérifie automatiquement que la syntaxe correcte est utilisée.

Exemple de syntaxe simplifiée


Voici un exemple de syntaxe simplifiée avec l'instruction TPWrite.
TPWrite String [\Num] | [\Bool] | [\Pos] | [\Orient] [\Dnum]
• Les arguments obligatoires ne se trouvent pas entre parenthèses.
• Les arguments facultatifs se trouvent entre parenthèses [ ]. On pourra omettre
ces arguments.
• Les arguments mutuellement exclusifs, c’est-à-dire qui ne peuvent pas figurer
ensemble dans une instruction, sont séparés par une barre verticale |.
• Les arguments qui peuvent être répétés un certain nombre de fois défini de
façon arbitraire se trouvent entre parenthèses { }.
L'exemple ci-dessus utilise les arguments suivants :
• String est un argument obligatoire.
• Num, Bool, Pos, Orient et Dnum sont des arguments facultatifs.
• Num, Bool, Pos, Orient et Dnum sont mutuellement exclusifs.

Exemple de syntaxe formelle


TPWrite
[String ':='] <expression (IN) of string>
['\'Num':=' <expression (IN) of num> ] |
['\'Bool':=' <expression (IN) of bool> ] |
['\'Pos':=' <expression (IN) of pos> ] |
['\'Orient ':=' <expression (IN) of orient> ]
['\' Dnum':=' <expression (IN) of dnum]';'

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 9
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
Comment lire le présent manuel
Suite

• On peut omettre le texte entre parenthèses [ ].


• Les arguments mutuellement exclusifs, c’est-à-dire qui ne peuvent pas figurer
ensemble dans une instruction, sont séparés par une barre verticale |.
• Les arguments qui peuvent être répétés un certain nombre de fois défini de
façon arbitraire se trouvent entre parenthèses { }.
• Les symboles écrits afin d’obtenir la syntaxe correcte se trouvent entre
guillemets (apostrophes) ' '.
• Le type de données de l'argument et les autres caractéristiques se trouvent
entre parenthèses angulaires < >. Pour plus de renseignements, veuillez
vous reporter à la description des paramètres d'une routine.
Les éléments de base du langage et certaines instructions sont rédigés en utilisant
une syntaxe spéciale, EBNF. Celle-ci est basée sur les mêmes règles, avec toutefois
certains ajouts.
• Le symbole ::= signifie est défini comme.
• Le texte entre parenthèses angulaires < > est défini sur une ligne séparée.

Exemple
GOTO <identifier> ';'
<identifier> ::= <ident> | <ID>
<ident> ::= <letter> {<letter> | <digit> | '_'}

10 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.1 Introduction

1 Programmation RAPID de base


1.1 Structure de programme

1.1.1 Introduction

Instructions
Le programme consiste en un certain nombre d’instructions qui décrivent le travail
du robot. Il existe donc des instructions spécifiques pour les diverses commandes,
par exemple celle pour faire avancer le robot, celle pour déterminer une sortie,
etc.
Généralement, les instructions comportent un certain nombre d’arguments associés,
lesquels définissent ce qui va se passer avec une instruction spécifique. Par
exemple, l’instruction pour la réinitialisation d’une sortie comporte un argument
qui définit la sortie à réinitialiser ; par exemple, Reset do5. Ces arguments peuvent
être spécifiés de l’une des façons suivantes :
• en tant que valeur numérique, par exemple 5 ou 4.6
• en tant que référence de données, par exemple reg1
• en tant qu'expression, par exemple 5+reg1*2
• en tant qu'appel de fonction, par exemple Abs(reg1)
• en tant que valeur de chaîne, par exemple "Producing part A"

Routines
Il existe trois types de routines – procédures, fonctions et routines d’interruption.
• Une procédure est utilisée en tant que sous-programme.
• Une fonction fournit une valeur d’un type spécifique et est utilisée en tant
qu’argument d’une instruction.
• Les routines d’interruption constituent un moyen de répondre aux
interruptions. Une routine d’interruption peut être associée à une interruption
spécifique ; par exemple, lorsqu’une entrée est sélectionnée, elle est
automatiquement exécutée si une interruption spécifique se produit.

Données
Les renseignements peuvent également être stockés dans des données, par
exemple, des données outil (qui contiennent tous les renseignements sur un outil,
par exemple son TCP et son poids) et des données numériques (lesquelles peuvent,
par exemple, être utilisées pour compter le nombre de pièces à traiter). Les données
sont regroupées selon des types de données différentes qui décrivent des types
différents de renseignements, par exemple les outils, les positions et les charges.
Ces données pouvant être créées et recevoir des noms arbitraires, il n’y a pas de
limites (sauf la limite imposée par la mémoire) quant au nombre de données. Ces
données peuvent exister soit globalement dans le programme soit localement au
sein d’une routine.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 11
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.1 Introduction
Suite

Il y a trois sortes de données – constantes, variables et persistantes.


• Une constante représente une valeur statique et peut seulement recevoir
une nouvelle valeur manuellement.
• Une variable peut également recevoir une valeur en cours d’exécution du
programme.
• Une persistante peut être décrite comme étant une variable "persistante".
Lorsqu’un programme est sauvegardé, la valeur d’initialisation reflète la
valeur actuelle de la persistante.

Autres fonctions
Parmi les autres caractéristiques du langage, nous citerons :
• Les paramètres de routine
• les expressions arithmétiques et logiques ;
• Le traitement automatique des erreurs
• Les programmes modulaires
• Multitâche
Le language n'est pas sensible à la casse, majuscules et minuscules étant
considérées de façon égale.

12 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.2 Éléments de base

1.1.2 Éléments de base

Identificateurs
Les identificateurs sont utilisés pour affecter un nom aux modules, aux routines,
aux données et aux étiquettes ; par exemple :
MODULE module_name
PROC routine_name()
VAR pos data_name;
label_name:
Le premier caractère d’un identificateur doit être une lettre. Les autres caractères
peuvent être des lettres, des chiffres ou des caractères de soulignement (_).
La longueur maximale d’un identificateur est de 32 caractères, chacun de ces
caractères étant significatif. Les identificateurs identiques, mais tapés en majuscules
ou en minuscules sont cependant considérés comme identiques.

Mots réservés
Les mots énumérés ci-après sont des mots réservés. Ils ont une signification
spéciale dans le langage RAPID et, de ce fait, ne devront pas être utilisés en tant
qu’identificateurs.
Il existe un certain nombre de noms prédéfinis pour les types de données, les
données du système, les instructions et les fonctions, lesquels ne doivent pas être
utilisés en tant qu’identificateurs.
ALIAS AND BACKWARD CASE
CONNECT CONST DEFAULT DIV
DO ELSE ELSEIF ENDFOR
ENDFUNC ENDIF ENDMODULE ENDPROC
ENDRECORD ENDTEST ENDTRAP ENDWHILE
ERROR EXIT FALSE FOR
FROM FUNC GOTO IF
INOUT LOCAL MOD MODULE
NOSTEPIN NOT NOVIEW OR
PERS PROC RAISE READONLY
RECORD RETRY RETURN STEP
SYSMODULE TEST THEN TO
TRAP TRUE TRYNEXT UNDO
VAR VIEWONLY WHILE WITH
XOR

Caractères espace et nouvelle ligne


Le langage de programmation RAPID est un langage à structure non imposée, ce
qui signifie que l’on peut utiliser des espaces n’importe où sauf dans les :
• identificateurs
• mots réservés
Suite page suivante
Manuel de référence technique - Vue d’ensemble de RAPID 13
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.2 Éléments de base
Suite

• valeurs numériques
• marques de réservation
Les caractères de nouvelle ligne, de tabulation et de changement de page peuvent
être utilisés chaque fois qu’un espace peut être utilisé, sauf au sein des
commentaires.
Les identificateurs, les mots réservés et les valeurs numériques doivent être
séparés les uns des autres par un espace, un caractère de ligne nouvelle, de
tabulation ou de changement de page.

Valeurs numériques
Une valeur numérique peut être exprimée en tant que :
• nombre entier, par exemple 3, -100, 3E2
• nombre décimal, par exemple 3,5, -0,345, -245E-2
La valeur doit se situer dans les limites spécifiées par la norme ANSI IEEE 754
(Floating-Point Arithmetic - Arithmétique de virgule flottante).

Valeurs logiques
Une valeur logique peut être exprimée en tant que TRUE ou FALSE.

Valeurs de chaîne
Une valeur de chaîne est une séquence de caractères (ISO 8859-1 (Latin-1)) et de
caractères de commande (non-ISO 8859-1 (Latin-1) se situant dans la plage de
codes numériques 0-255). Des codes de caractères peuvent être inclus, ce qui
permet également d’inclure des caractères non imprimables (données binaires)
dans la chaîne. La longueur de chaîne maximum est de 80 caractères.
Exemple :
"This is a string"
"This string ends with the BEL control character \07"
Si une barre oblique inverse (qui indique un code de caractère) ou des guillemets
doubles sont inclus, ils devront être écrits deux fois.
Exemple :
"This string contains a "" character"
"This string contains a \\ character"

Commentaires
Les commentaires sont utilisés afin de faciliter la compréhension du programme.
Ils n’affectent nullement la signification du programme.
Un commentaire commence par un point d’exclamation (!) et se termine par un
caractère de nouvelle ligne. Il occupe le reste de la ligne (à partir du point
d’exclamation) et ne peut pas se trouver en dehors d’une déclaration de module.
! comment
IF reg1 > 5 THEN
! comment
reg2 := 0;
ENDIF

Suite page suivante


14 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.2 Éléments de base
Suite

Marques de réservation
Les marques de réservation peuvent être utilisées pour représenter provisoirement
des parties de programme qui ne sont pas encore définies. Tout programme qui
contient des marques de réservation est un programme correct du point de vue
syntaxique et peut être chargé dans la mémoire du programme.
Marque de réservation Description
<TDN> définition du type de données
<DDN> déclaration de données
<RDN> déclaration de routine
<PAR> paramètre formel alternatif optionnel
<ALT> paramètre formel optionnel
<DIM> dimension formelle (conforme) de tableau
<SMT> instruction
<VAR> référence d’objet de données (variable, persistante
ou paramètre)
<EIT> else if, clause d’instruction if
<CSE> case, clause d’instruction test
<EXP> expression
<ARG> argument d'appel de procédure
<ID> identificateur

En-tête de fichier
Un fichier de programme peut commencer par l'en-tête de fichier suivant (il n'est
pas requis) :
%%%
VERSION:1
LANGUAGE:ENGLISH
%%%

Syntaxe
Identificateurs
<identifier> ::= <ident> | <ID>
<ident> ::= <letter> {<letter> | <digit> | '_'}

Valeurs numériques
<num literal> ::=
<integer> [ <exponent> ]
| <decimal integer>) [<exponent>]
| <hex integer> | <octal integer>
| <binary integer>
| <integer> '.' [ <integer> ] [ <exponent> ]
| [ <integer> ] '.' <integer> [ <exponent> ]
<integer> ::= <digit> {<digit>}
<hex integer> ::= '0' ('X' | 'x')
<hex digit> {<hex digit>}
<octal integer> ::= '0' ('O' | 'o') <octal digit> {<octal digit>}
Suite page suivante
Manuel de référence technique - Vue d’ensemble de RAPID 15
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.2 Éléments de base
Suite

<binary integer> ::= '0' ('B' | 'b') <binary digit> {<binary digit>}
<exponent> ::= ('E' | 'e') ['+' | '-'] <integer>

<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<hex digit> ::= <digit> | A | B | C | D | E | F | a | b | c | d |
e | f
<octal digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
<binary digit> ::= 0 | 1

Valeurs logiques
<bool literal> ::= TRUE | FALSE

Valeurs de chaîne
<string literal> ::= '"' {<character> | <character code> } '"'
<character code> ::= '\' <hex digit> <hex digit>
<hex digit> ::= <digit> | A | B | C | D | E | F | a | b | c | d |
e | f

Commentaires
<comment> ::= '!' {<character> | <tab>} <newline>

Caractères
<character> ::= -- ISO 8859-1 (Latin-1)--
<newline> ::= -- newline control character --
<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<hex digit> ::= <digit> | A | B | C | D | E | F | a | b | c | d |
e | f
<letter> ::= <upper case letter> | <lower case letter>
<upper case letter> ::=
A | B | C | D | E | F | G | H | I | J
| K | L | M | N | O | P | Q | R | S | T
| U | V | W | X | Y | Z | À | Á | Â | Ã
| Ä | Å | Æ | Ç | È | É | Ê | Ë | Ì | Í
| Î | Ï | Ð | Ñ | Ò | Ó | Ô | Õ | Ö | Ø
| Ù | Ú | Û | Ü | Ý | Þ | ß
<lower case letter> ::=
a | b | c | d | e | f | g | h | i | j
| k | l | m | n | o | p | q | r | s | t
| u | v | w | x | y | z | ß | à | á | â | ã
| ä | å | æ | ç | è | é | ê | ë | ì | í
| î | ï | ð | ñ | ò | ó | ô | õ | ö | ø
| ù | ú | û | ü | ý | þ | ÿ

16 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.3 Modules

1.1.3 Modules

Introduction
Le programme est divisé en modules de programme et modules système.

xx1100000550

Modules de programme
Un module de programme peut être constitué de différentes données et routines.
Chaque module, ou le programme entier, peut être copié sur une disquette, etc.,
et vice versa.
Un des modules contient la procédure d’entrée, une procédure globale appelée
Main. En fait, exécuter le programme signifie exécuter la procédure Main. Le
programme peut comporter plusieurs modules, mais un seul contiendra une
procédure principale.
Un module peut, par exemple, définir l’interface avec les équipements externes
ou contenir des données géométriques qui sont soit générées par des systèmes
CAO soit créées en ligne par numérisation (programmation par apprentissage).
Alors que la plupart du temps les petites installations sont contenues dans un seul
module, les installations plus importantes pourront comporter un module principal
qui fait référence à des routines et/ou des données qui se trouvent dans un ou
plusieurs autres modules.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 17
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.3 Modules
Suite

Modules système
Les modules système sont utilisés pour définir des données propres au système
et des routines communes, tels des outils. Ils ne sont pas inclus lorsqu’un
programme est sauvegardé, ce qui signifie que toute mise à jour apportée à un
module système affecte tous les programmes existants ou chargés à un stade
ultérieur dans la mémoire du programme.

Déclarations de module
La déclaration d’un module spécifie le nom et les attributs du module en question.
Ces attributs peuvent uniquement être ajoutés hors ligne et non à l’aide du
FlexPendant. Vous trouverez ci-après des exemples d’attributs d’un module :
Attribut S’il est spécifié
SYSMODULE Le module est un module système ; sinon, il s’agit d’un module
de programme
NOSTEPIN Le module ne peut pas être entré lors d’une exécution pas à
pas
VIEWONLY Le module ne peut pas être modifié
READONLY Le module ne peut pas être modifié, mais son attribut peut être
supprimé
NOVIEW Le module ne peut être visualisé, uniquement exécuté. Les
routines globales peuvent être atteintes à partir d’autres mo-
dules et sont toujours exécutées en tant que NOSTEPIN. Il est
possible d’atteindre les valeurs actuelles concernant les don-
nées globales à partir d’autres modules ou depuis la fenêtre
de données du FlexPendant. NOVIEW peut être défini unique-
ment hors ligne depuis un PC.

Par exemple :
MODULE module_name (SYSMODULE, VIEWONLY)
!data type definition
!data declarations
!routine declarations
ENDMODULE
Un module ne peut pas avoir le même nom qu’un autre module, une autre routine
globale ou d'autres données.

Structure de fichier de programme


Tel qu'indiqué ci-dessus, tous les modules de programme sont inclus dans un
programme avec un nom de programme spécifique. Lors de l'enregistrement d'un
programme, un nouveau répertoire est créé avec le nom du programme. Dans ce
répertoire, tous les modules de programme sont enregistrés avec une extension
de fichier .mod et un fichier de description avec le même nom que celui du
programme et une [Link]. Le fichier de description inclut une liste de tous
les modules contenus dans le programme.

Syntaxe
Déclaration de module
<module declaration> ::=
MODULE <module name> [ <module attribute list> ]

Suite page suivante


18 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.3 Modules
Suite

<type definition list>


<data declaration list>
<routine declaration list>
ENDMODULE
<module name> ::= <identifier>
<module attribute list> ::= '(' <module attribute> { ',' <module
attribute> } ')'
<module attribute> ::=

SYSMODULE
| NOVIEW
| NOSTEPIN
| VIEWONLY
| READONLY

Remarque

Si au moins deux attributs sont utilisés, ils doivent adopter l'ordre donné
ci-dessus. L'attribut NOVIEW peut uniquement être spécifié seul ou avec l'attribut
SYSMODULE.
<type definition list> ::= { <type definition> }
<data declaration list> ::= { <data declaration> }
<routine declaration list> ::= { <routine declaration> }

Manuel de référence technique - Vue d’ensemble de RAPID 19


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.4 Module système User

1.1.4 Module système User

Introduction
Afin de simplifier la programmation, le robot est livré avec un certain nombre de
données prédéfinies. Il n’est pas nécessaire de créer ces données et, de ce fait,
elles peuvent être utilisées directement.
Si ces données sont utilisées, la programmation initiale est facilitée. Toutefois, il
est généralement préférable d’attribuer vos propres noms aux données que vous
utilisez, car ceci facilitera la lecture du programme.

Contenu
User comprend cinq données numériques (registres), un jeu de données de repère
objet, un jeu de données d'horloge et deux valeurs symboliques destinées aux
signaux numériques.
Nom Type de données Déclaration
reg1 num VAR num reg1:=0
reg2 num VAR num reg2:=0
reg3 num VAR num reg3:=0
reg4 num VAR num reg4:=0
reg5 num VAR num reg5:=0
clock1 clock VAR clock clock1

User est un module système, ce qui signifie qu'il réside toujours dans la mémoire
du robot, quel que soit le programme chargé.

20 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.5 Routines

1.1.5 Routines

Introduction
Il existe trois types de routine (sous-programmes) : procédures, fonctions et
interruptions.
• Les procédures ne renvoient pas de valeur et sont utilisées dans le contexte
des instructions.
• Les fonctions renvoient une valeur d’un type spécifique et sont utilisées dans
le contexte des expressions.
• Les routines d’interruption permettent de gérer les interruptions. Une routine
d’interruption peut être associée à une interruption spécifique et, si
l’interruption en question a lieu à un stade ultérieur, elle sera
automatiquement exécutée. Une routine d’interruption ne peut jamais être
appelée explicitement à partir du programme.

Domaine de routine
Le domaine d’une routine indique la zone dans laquelle la routine est visible. La
pseudo-instruction locale optionnelle d’une déclaration de routine classe une
routine en tant que locale (au sein du module) ; sinon, il s’agit d’une routine globale.
Exemple :
LOCAL PROC local_routine (...
PROC global_routine (...
Les règles de domaine suivantes s’appliquent aux routines :
• Le domaine d’une routine globale peut inclure n’importe quel module dans
la tâche.
• Le domaine d’une routine locale comprend le module dans lequel elle se
trouve.
• Dans les limites de son domaine, une routine locale peut cacher une routine
globale ou des données portant le même nom.
• Dans les limites de son domaine, une routine peut cacher des instructions,
ainsi que des données et des routines prédéfinies portant le même nom.

xx1100000551

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 21
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.5 Routines
Suite

Dans l'exemple ci-dessous, les routines suivantes peuvent être appelées à partir
de la routine h :
• Module1 : Routine c, d.
• Module2: Toutes les routines.
Une routine ne peut pas porter le même nom qu’une autre routine, d'autres données
ou un autre type de données dans le même module. Une routine globale ne peut
pas porter le même nom qu’une routine de module ou globale, que des données
globales ou qu’un type de donnée globale dans un autre module.

Paramètres
La liste des paramètres d’une déclaration de routine spécifie les arguments (les
paramètres effectifs) qui doivent/peuvent être fournis lorsqu’on appelle la routine.
Il y a quatre types différents de paramètres (dans le mode d’accès) :
• Normalement, un paramètre est utilisé uniquement en tant qu’entrée et est
considéré comme une variable de la routine. Le fait de modifier cette variable
ne changera pas l’argument correspondant.
• Un paramètre INOUT spécifie qu’un argument correspondant doit être une
variable (entière, élément ou composante) ou une persistante entière pouvant
être modifiée par la routine.
• Un paramètre VAR spécifie qu’un argument correspondant doit être une
variable (entière, élément ou composante) pouvant être modifiée par la
routine.
• Un paramètre PERS spécifie qu’un argument correspondant doit être une
persistante entière pouvant être modifiée par la routine.
Si un paramètre INOUT, VAR ou PERS est mis à jour, ceci signifie en fait que
l’argument même est mis à jour, c’est-à-dire qu’il devient possible d’utiliser des
arguments pour renvoyer des valeurs à la routine appelante.
Exemple :
PROC routine1 (num in_par, INOUT num inout_par,
VAR num var_par, PERS num pers_par)
Un paramètre peut être optionnel et être omis de la liste des arguments d’un appel
de routine. Un paramètre optionnel est identifié par une barre oblique inverse (\)
placée devant le paramètre.
Exemple :
PROC routine2 (num required_par \num optional_par)
La valeur d’un paramètre optionnel omis dans un appel de routine peut ne pas être
référencée. Ceci signifie que les appels de routine doivent être vérifiés afin de
relever la présence de paramètres optionnels avant qu’un paramètre optionnel ne
soit utilisé.
Deux paramètres optionnels ou plus peuvent être mutuellement exclusifs
(c’est-à-dire, déclarés pour s’exclure ’un l’autre), ce qui signifie que seul l’un d’entre
eux peut être présent dans un appel de routine. Ceci est indiqué par une barre
verticale (caract. tuyaux, | )insérée entre les paramètres en question.
Exemple :
PROC routine3 (\num exclude1 | num exclude2)

Suite page suivante


22 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.5 Routines
Suite

Le type spécial, switch, peut (uniquement) être affecté aux paramètres optionnels
et permet d'utiliser des arguments d'aiguillage, c’est-à-dire des arguments qui sont
uniquement spécifiés par des noms (et non des valeurs). Une valeur ne peut pas
être transférée sur un paramètre switch. La seule façon d’utiliser un paramètre
switch consiste à vérifier sa présence en utilisant la fonction prédéfinie Present.
Exemple :
PROC routine4 (\switch on | switch off)
...
IF Present (off ) THEN
...
ENDPROC
Les tableaux peuvent être renvoyés en tant qu'arguments. Le degré d’un argument
de tableau doit être conforme au degré du paramètre formel correspondant. La
dimension d’un paramètre de tableau est conforme (marquée d’un *). La dimension
réelle dépend donc de la dimension de l’argument correspondant dans un appel
de routine. Une routine peut déterminer la dimension réelle d’un paramètre en
utilisant la fonction prédéterminée, Dim.
Exemple :
PROC routine5 (VAR num pallet{*,*})

Fin de routine
On peut mettre fin à l’exécution d’une procédure soit explicitement à l’aide de
l’instruction RETURN, soit implicitement lorsque la fin (ENDPROC, BACKWARD, ERROR
ou UNDO) de la procédure est atteinte.
L’évaluation d’une fonction doit être terminée à l’aide d'une instruction RETURN.
On peut mettre fin à l’exécution d’une routine d’interruption soit explicitement à
l’aide de l’instruction RETURN, soit implicitement lorsque la fin (ENDTRAP, ERROR
ou UNDO) de cette routine d'interruption est atteinte. L’exécution continue à partir
du point où l’interruption a eu lieu.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 23
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.5 Routines
Suite

Déclarations de routine
Une routine peut contenir des déclarations de routine (y compris des paramètres),
des données, un corps, un gestionnaire d'instruction arrière (procédures
uniquement) et un gestionnaire d’annulation. Les déclarations de routine ne peuvent
pas être imbriquées, c’est-à-dire qu’il n’est pas possible de déclarer une routine
au sein d’une routine.

xx1100000553

Déclaration de procédure
Par exemple, multipliez tous les éléments d'un tableau num par un facteur :
PROC arrmul( VAR num array{*}, num factor)
FOR index FROM 1 TO dim( array, 1 ) DO
array{index} := array{index} * factor;
ENDFOR
ENDPROC

Déclaration de fonction
Une fonction peut renvoyer n’importe quelle valeur de type de données, mais pas
une valeur de tableau.
Par exemple, le renvoi de la longueur d’un vecteur.
FUNC num veclen (pos vector)
RETURN Sqrt(Pow(vector.x,2)+Pow(vector.y,2)+Pow(vector.z,2));
ENDFUNC

Déclaration d'interruption
Par exemple, répondez à l’interruption d'alimentateur vide :
TRAP feeder_empty
wait_feeder;
RETURN;
ENDTRAP

Suite page suivante


24 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.5 Routines
Suite

Appel de procédure
Lors de l'appel d'une procédure, les arguments qui correspondent aux paramètres
de cette procédure doivent être utilisés :
• Les paramètres obligatoires doivent être spécifiés. Ils doivent également
être spécifiés dans l’ordre correct.
• Les arguments optionnels peuvent être omis.
• Les arguments conditionnels peuvent être utilisés pour transférer les
paramètres d’un appel de routine à un autre.
Voir Utilisation des appels de fonction dans les expressions à la page 42.
Le nom de la procédure est spécifié statistiquement à l’aide d’un identificateur
(attribution précoce) ou évalué pendant la durée d’exécution à partir d’une
expression sous forme de chaîne de caractères (attribution tardive). Même si une
attribution précoce doit être considérée comme la forme d’appel de procédure
normale, une attribution tardive fournit parfois un code très rapide et compact. Une
attribution tardive est définie en insérant des signes de pourcentage avant et après
la chaîne de caractères indiquant le nom de la procédure.
Exemple :
! early binding
TEST products_id
CASE 1:
proc1 x, y, z;
CASE 2:
proc2 x, y, z;
CASE 3:
...
! same example using late binding
% “proc” + NumToStr(product_id, 0) % x, y, z;
...
! same example again using another variant of late binding
VAR string procname {3} :=[“proc1”, “proc2”, “proc3”];
...
% procname{product_id} % x, y, z;
...
Notez que l’attribution tardive est disponible pour les appels de procédure
uniquement, et non pour les appels de fonction. Si une attribution tardive fait
référence à une procédure inconnue, la variable système ERRNO prend la valeur
ERR_REFUNKPRC. Si une attribution tardive fait référence à une erreur d’appel de
procédure (syntaxe, et non pas procédure), la variable système ERRNO prend la
valeur ERR_CALLPROC.

Syntaxe
Déclaration de routine
<routine declaration> ::=
[LOCAL] ( <procedure declaration>
| <function declaration>
| <trap declaration> )
| <comment>

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 25
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.5 Routines
Suite

| <RDN>

Paramètres
<parameter list> ::=
<first parameter declaration> { <next parameter declaration> }
<first parameter declaration> ::=
<parameter declaration>
| <optional parameter declaration>
| <PAR>
<next parameter declaration> ::=
',' <parameter declaration>
| <optional parameter declaration>
| ','<optional parameter declaration>
| ',' <PAR>
<optional parameter declaration> ::=
'\' ( <parameter declaration> | <ALT> )
{ '|' ( <parameter declaration> | <ALT> ) }
<parameter declaration> ::=
[ VAR | PERS | INOUT] <data type>
<identifier> [ '{' ( '*' { ',' '*' } ) | <DIM>] '}'
| 'switch' <identifier>

Déclaration de procédure
<procedure declaration> ::=
PROC <procedure name>
'(' [ <parameter list> ] ')'
<data declaration list>
<instruction list>
[ BACKWARD <instruction list> ]
[ ERROR <instruction list> ]
[ UNDO <instruction list> ]
ENDPROC
<procedure name> ::= <identifier>
<data declaration list> ::= {<data declaration>}

Déclaration de fonction
<function declaration> ::=
FUNC <value data type>
<function name>
'(' [ <parameter list> ] ')'
<data declaration list>
<instruction list>
[ ERROR <instruction list> ]
[ UNDO <instruction list> ]
ENDFUNC
<function name> ::= <identifier>

Déclaration de routine d’interruption


<trap declaration> ::=
TRAP <trap name>
<data declaration list>
<instruction list>
[ ERROR <instruction list> ]

Suite page suivante


26 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.1.5 Routines
Suite

[ UNDO <instruction list> ]


ENDTRAP
<trap name> ::= <identifier>

Appel de procédure
<procedure call> ::= <procedure> [ <procedure argument list> ] ';'
<procedure> ::=
<identifier>
| '%' <expression> '%'
<procedure argument list> ::= <first procedure argument> {
<procedure argument> }
<first procedure argument> ::=
<required procedure argument>
| <optional procedure argument>
| <conditional procedure argument>
| <ARG>
<procedure argument> ::=
',' <required procedure argument>
| <optional procedure argument>
| ',' <optional procedure argument>
| <conditional procedure argument>
| ',' <conditional procedure argument>
| ',' <ARG>
<required procedure argument> ::= [ <identifier> ':=' ] <expression>
<optional procedure argument> ::= '\' <identifier> [ ':='
<expression> ]
<conditional procedure argument> ::= '\' <identifier> '?' (
<parameter> | <VAR> )

Manuel de référence technique - Vue d’ensemble de RAPID 27


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.2.1 Types de données

1.2 Données de programme

1.2.1 Types de données

Introduction
Il existe trois types différents de données :
• Un type de données atomique dans le sens où elles ne sont pas définies sur
base d'un autre type de données et ne sont pas divisées en parties ou
composantes (par exemple num).
• Un type de données enregistrement est un type composé de composantes
nommées et ordonnées (par exemple, pos). Une composante peut être de
type atomique ou enregistrement.
Une valeur d'enregistrement qui peut être exprimée à l'aide d'une
représentation total (par exemple, la valeur de total d'enregistrement pos [
300, 500, profondeur ].
Une composante spécifique des données d'un enregistrement peut être
atteinte en utilisant le nom de cette composante (par exemple, pos1.x := 300
; affectation de la composante x de pos1.
• Par définition, un type de données alias est égal à un autre type. Les types
Alias permettent de classer des objets de données.

Types de données sans valeurTypes de données sans valeur


Chaque type de données disponible est soit un type de données valeur, soit un
type de données sans valeur. En termes simples, un type de données avec valeur
représente une certaine forme de valeur. Les données sans valeur ne peuvent pas
être utilisées dans le cadre d’opérations qui font appel à des valeurs :
• Initialisation
• Affectation (:=)
• Vérification égale à (=) et différente de (<>)
• Instructions TEST
• Paramètres IN (mode d’accès) dans les appels de routine
• Types de données fonction (retour)
Les types de données de signal (signalai, signaldi, signalgi,signalao, signaldo,
signalgo) sont du type semi-valeur. Ces données peuvent être utilisées pour les
opérations qui font appel à des valeurs, sauf pour ce qui est de l'initialisation et
de l'affectation.
La description du type de données spécifie uniquement s’il s'agit de données du
type semi-valeur ou sans valeur.

Types de données identiques (pseudonyme)


Un type de données alias (pseudonyme) est défini comme étant identique à un
autre type. Les données ayant les mêmes types de données peuvent être
interchangées.

Suite page suivante


28 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.2.1 Types de données
Suite

Exemple :
VAR num level;
VAR dionum high:=1;
level:= high;
Ceci est correct car dionum est un type de données pseudonyme pour num.

Syntaxe
<type definition>::=
[LOCAL] ( <record definition>
| <alias definition> )
| <comment>
| <TDN>

<record definition>::=
RECORD <identifier>
<record component list>
ENDRECORD

<record component list> ::=


<record component definition> |
<record component definition> <record component list>

<record component definition> ::=


<data type> <record component name> ';'

<alias definition> ::=


ALIAS <data type> <identifier> ';'

<data type> ::= <identifier>

Manuel de référence technique - Vue d’ensemble de RAPID 29


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.2.2 Déclarations de données

1.2.2 Déclarations de données

Introduction
Il existe trois types de données :
• Une variable peut recevoir une nouvelle valeur en cours d’exécution du
programme.
• Unes persistante peut être décrite en tant que variable persistante. Pour ce
faire, laissez une mise à jour de la valeur d’une persistante générer
automatiquement la valeur d’initialisation de la déclaration de persistante à
mettre à jour. (Lorsqu’un programme est sauvegardé, la valeur d’initialisation
d’une déclaration de persistante reflète la valeur actuelle de la persistante.)
• Une constante représente une valeur statique et ne peut pas recevoir de
nouvelle valeur.
Une déclaration de données introduit des données en associant un nom
(identificateur) à un type de données. À l’exception des données prédéfinies et
des variables de boucle, toutes les données utilisées doivent être déclarées.

Domaine de données
Le domaine des données indique la zone dans laquelle les données sont visibles.
La pseudo-instruction locale optionnelle d’une déclaration de données classe les
données en tant que données locales (au sein du module) ; sinon, il s’agit de
données globales. Vous noterez que la pseudo-instruction locale peut uniquement
être utilisée au niveau du module et non au sein d’une routine.

Exemple
LOCAL VAR num local_variable;
VAR num global_variable;

Données de programme
Les données déclarées en dehors d'une routine sont appelées données de
programme. Les règles suivantes s’appliquent aux données de programme :
• Le domaine de données de programme prédéfinies ou globales peut inclure
n’importe quel module.
• Le domaine de données de programme locales comprend le module dans
lequel elles se trouvent.
• Dans les limites de leur domaine, les données de programme locales peuvent
cacher des données globales ou une routine portant le même nom (y compris
des instructions et des données et routines prédéfinies).
Les données de programme ne peuvent pas avoir le même nom que d’autres
données ou une autre routine dans le même module. Les données de programme
globales ne peuvent pas avoir le même nom que d’autres données globales ou
une autre routine dans un autre module.

Suite page suivante


30 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.2.2 Déclarations de données
Suite

Données de routine
Les données déclarées à l'intérieur d'une routine sont appelées données de routine.
Vous noterez que les paramètres d’une routine sont également traités comme s’il
s’agissait de données de routine. Les règles suivantes s’appliquent aux données
de routine :
• Le domaine des données de routine comprend la routine dans lequel elles
se trouvent.
• Dans les limites de leur domaine, les données de routine cachent toute autre
routine ou donnée portant le même nom.
Des données de routine ne peuvent pas avoir le même nom que d’autres données
ou étiquettes dans la même routine.

Exemple
Dans cet exemple, les données suivantes peuvent être appelées à partir de la
routine e :
• Module1 : Données c, d.
• Module2: Données a, f, g, e1.
Les données suivantes peuvent être appelées à partir de la routine h :
• Module1 : Données d.
• Module2: Données a, f, g, h1, c.

xx1100000554

Déclaration de variable
Une variable est introduite par une déclaration de variable et peut être déclarée
en tant que variable globale (aucune condition n’est nécessaire) ou variable locale.
Exemple :
MainModule est chargé dans la tâche T_ROB1.
MODULE MainModule
! The scope of this variable is within T_ROB1, i.e. it can be
! accessed from any module in T_ROB1.
VAR num global_var := 123;

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 31
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.2.2 Déclarations de données
Suite

! The scope of this variable is within this module.


LOCAL VAR num local_var := 789;

PROC main()
! The scope of this variable is within this procedure.
VAR num local_var2 := 321;
...

ENDPROC
ENDMODULE
Une variable déclarée dans un module installé et partagé peut être déclarée avec
la condition TASK, voir Manuel de référence technique - Paramètres système,
rubrique Controller, type Automatic Loading of Modules. Une telle variable est
accessible à partir de toutes les tâches mais possède une valeur unique pour
chaque tâche. Par exemple, changer la valeur des variables d’une tâche n’affecte
pas les autres tâches.
Exemple :
SharedModule est installé et partagé dans le système.
MODULE SharedModule(SYSMODULE)
! This variable is accessible from all tasks, but has a
! unique value for each task.
TASK VAR num global_var := 123;
...
ENDMODULE
Utiliser la condition TASK dans un module qui n’est pas installé et partagé n’a
aucune conséquence.
Des variables de n’importe quel type peuvent se voir affecter un format de tableau
(1, 2 ou 3 dimensions) en ajoutant des informations dimensionnelles à la déclaration.
Une dimension est une valeur entière supérieure à 0.
Exemple :
VAR pos pallet{14, 18};
Les variables avec des types de valeur peuvent être initialisées (recevoir une valeur
initiale). L’expression utilisée pour initialiser une variable de programme doit être
une constante. Notez que la valeur d’une variable non initialisée peut être utilisée,
mais elle n’est pas définie, c’est-à-dire qu’elle est nulle s’il s’agit d’un num. Une
chaîne est définie comme chaîne vide et une variable booléenne porte la valeur
FALSE.
Exemple :
VAR string author_name := "John Smith";
VAR pos start := [100, 100, 50];
VAR num maxno{10} := [1, 2, 3, 9, 8, 7, 6, 5, 4, 3];
La valeur d’initialisation est déterminée lorsque :
• le module / programme est chargé.
• le pointeur de programme est réinitialisé, par exemple sur « main ».

Suite page suivante


32 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.2.2 Déclarations de données
Suite

Déclaration de persistante
Les persistantes ne peuvent être déclarées qu’au niveau d’un module, et non à
l’intérieur d’une routine. Les persistantes peuvent être déclarées en tant que
persistantes système globales (aucune condition n’est nécessaire), en tant que
persistantes de tâche globales ou en tant que persistantes locales.
Exemple :
Le module suivant est chargé à la fois dans T_ROB1 et T_ROB2.
MODULE MainModule
! The scope of this persistent is within the task it’s been
! loaded to. But, it will share the current value with any
! other task declaring the same persistent. I.e. changing the
! value in T_ROB1 will automatically change the value in T_ROB2.
PERS num globalpers := 123;

! The scope of this persistent is within the task this


! module has been loaded to.
TASK PERS num taskpers := 456;

! The scope of this persistent is within this module.


LOCAL PERS num localpers := 789;
...
ENDMODULE
Une valeur d’initialisation doit être affectée aux persistantes de tâche globales et
aux persistantes locales. Pour les persistantes système globales, la valeur initiale
peut être omise. La valeur d’initialisation doit être une valeur unique (sans
références aux données ni opérandes), ou un total unique avec éléments qui, à
leur tour, sont des valeurs uniques ou des totaux uniques.
Exemple :
PERS pos refpnt := [100.23, 778.55, 1183.98];
Des persistantes de n’importe quel type peuvent être associées à un tableau (1,
2 ou 3 dimensions) en ajoutant des informations dimensionnelles à la déclaration.
Une dimension est une valeur entière supérieure à 0.
Exemple :
PERS pos pallet{14, 18} := [...];
Notez que si la valeur actuelle d’une variable persistante est modifiée, la valeur
d’initialisation de la déclaration de la variable persistante (si elle n’est pas omise)
est mise à jour. Cependant, du fait de problèmes de performances, cette mise à
jour ne s’effectue pendant l’exécution du programme. La valeur initiale est mise à
jour lorsque le module est enregistré (sauvegarde, enregistrement du module,
enregistrement du programme). La mise à jour se produit également lors de l’édition
du programme. Le FlexPendant affiche toujours la valeur actuelle des variables
persistantes.
Exemple :
PERS num reg1 := 0;
...
reg1 := 5;

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 33
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.2.2 Déclarations de données
Suite

Après avoir enregistré le module, si le code a été exécuté, le module enregistré


ressemble à ce qui suit :
PERS num reg1 := 5;
...
reg1 := 5;

Déclaration de constante
Une constante est introduite par une déclaration de constante. La valeur d’une
constante ne peut pas être modifiée.
Exemple :
CONST num pi := 3.141592654;
Une constante de n’importe quel type peut être associée à un tableau (1, 2 ou 3
dimensions), en ajoutant des renseignements dimensionnels à la déclaration. Une
dimension est une valeur entière supérieure à 0.
CONST pos seq{3} := [[614, 778, 1020], [914, 998, 1021], [814, 998,
1022]];

Données d'initialisation
La valeur d'initialisation d'une constante ou d'une variable peut être une expression
constante.
La valeur d’initialisation d’une persistante ne peut être qu’une expression littérale.
Exemple :
CONST num a := 2;
CONST num b := 3;
!Correct syntax
CONST num ab := a + b;
VAR num a_b := a + b;
PERS num a__b := 5; !
!Faulty syntax
PERS num a__b := a + b;
Le tableau ci-dessous montre ce qui se produit au cours de différentes activités,
comme un redémarrage, un nouveau programme, un démarrage de programme,
etc.
Un évé- Mise Ouvrir, Démar- Démar- Démar- Démar- Démar- Démar-
nement sous ten- Fermer rer pro- rer pro- rer pro- rer pro- rer pro- rer pro-
système sion (re- ou Nou- gramme gramme gramme gramme gramme gramme
affecte démar- veau (Dépla- (Dépla- (Dépla- (Appeler (après (après
rage) progra- cer PP cer PP cer PP la rou- cycle) arrêt)
mme vers prin- vers vers cur- tine)
cipal) Routine) seur)
Consta- Inchangé Init Init Init Inchangé Inchangé Inchangé Inchangé
nte
Variable Inchangé Init Init Init Inchangé Inchangé Inchangé Inchangé
Persista- Inchangé Init i / Inchangé Inchangé Inchangé Inchangé Inchangé Inchangé
nte Inchangé
Interrup- Redema- Disparaît Disparaît Disparaît Inchangé Inchangé Inchangé Inchangé
tions co- ndé
mman-
dées

Suite page suivante


34 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.2.2 Déclarations de données
Suite

Un évé- Mise Ouvrir, Démar- Démar- Démar- Démar- Démar- Démar-


nement sous ten- Fermer rer pro- rer pro- rer pro- rer pro- rer pro- rer pro-
système sion (re- ou Nou- gramme gramme gramme gramme gramme gramme
affecte démar- veau (Dépla- (Dépla- (Dépla- (Appeler (après (après
rage) progra- cer PP cer PP cer PP la rou- cycle) arrêt)
mme vers prin- vers vers cur- tine)
cipal) Routine) seur)
Routine Non exé- Exécuter Exécuter Non exé- Non exé- Non exé- Non exé- Non exé-
de dé- cuté ii cuté cuté cuté cuté cuté
marrage
SYS_RE-
SET
(avec ré-
glages
du mou-
vement)
Fichiers Ferme Ferme Ferme Ferme Inchangé Inchangé Inchangé Inchangé
Trajec- Recréé Disparaît Disparaît Disparaît Disparaît Inchangé Inchangé Inchangé
toire lors de la
mise
sous ten-
sion
i Les persistantes sans valeur initiale ne sont initialisées que si elles ne sont pas déjà déclarées.
ii Génère une erreur lorsque le programme de tâche effectif contient une erreur de sémantique.

Classe de sauvegarde
La classe de sauvegarde d’un objet de données détermine quand le système alloue
et désalloue de la mémoire pour cet objet de données. La classe de sauvegarde
d'un objet de données est déterminée par le type d'objet de données et le contexte
de sa déclaration, et peut être statique ou volatile.
Les constantes, persistantes et variables de module sont statiques : leur sauvegarde
est la même pendant toute la durée d’une tâche. Cela veut dire que toute valeur
attribuée à une persistante ou à une variable de module reste toujours inchangée
jusqu’à la prochaine attribution.
Les variables de routine sont volatiles. La mémoire nécessaire pour sauvegarder
la valeur d’une variable volatile est d’abord allouée à l’appel de la routine qui
contient la déclaration de la variable. La mémoire est ensuite désallouée lors du
retour à l’endroit où la routine a été appelée. Cela veut dire que la valeur d’une
variable de routine est toujours indéfinie avant l’appel de la routine et est toujours
perdue (devient indéfinie) à la fin de l’exécution de la routine.
Dans une chaîne d'appels de routines récursives (une routine s'appelant elle-même
directement ou indirectement), chaque instance de routine reçoit son propre
emplacement de mémoire pour la même variable de routine - plusieurs instances
de la même variable sont créées.

Syntaxe
Déclaration de données
<data declaration> ::=
[LOCAL] ( <variable declaration>
| <persistent declaration>
| <constant declaration> )

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 35
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.2.2 Déclarations de données
Suite

| TASK <persistent declaration>


| <comment>
| <DDN>

Déclaration de variable
<variable declaration> ::=
VAR <data type> <variable definition> ';'
<variable definition> ::=
<identifier> [ '{' <dim> { ',' <dim> } '}' ]
[ ':=' <constant expression> ]
<dim> ::= <constant expression>

Déclaration de persistante
<persistent declaration> ::=
PERS <data type> <persistent definition> ';'
<persistent definition> ::=
<identifier> [ '{' <dim> { ',' <dim> } '}' ]
[ ':=' <literal expression> ]

Remarque

L’expression littérale ne peut être omise que pour les persistantes système
globales.

Déclaration de constante
<constant declaration> ::=
CONST <data type> <constant definition> ';'
<constant definition> ::=
<identifier> [ '{' <dim> { ',' <dim> } '}' ]
':=' <constant expression>
<dim> ::= <constant expression>

36 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.3.1 Types d'expressions

1.3 Expressions

1.3.1 Types d'expressions

Description
Une expression spécifie l'évaluation d'une valeur. Elle peut être utilisée, par
exemple:
dans une instruction d'affectation par exemple : a:=3*b/c;
en tant que condition dans une instruction par exemple : IF a>=3 THEN ...
IF
en tant qu'argument dans une instruction par exemple : WaitTime time;
en tant qu'argument dans un appel de fonc- par exemple : a:=Abs(3*b);
tion

Expressions arithmétiques
Une expression arithmétique est utilisée pour évaluer une valeur numérique.
Exemple :
2*pi*radius

Opérateur Fonctionnement Types d'opérande Type de résultat


+ addition num + num num i
+ addition dnum + num dnum i
+ opération unaire plus +num ou +dnum ou identique ii , i
; maintien du signe +pos
+ addition vecteur pos + pos pos
- soustraction num - num num i
- soustraction dnum - dnum dnum i
- opération unaire moi- -num ou -pos identique ii, i
ns ; changement du
signe
- opération unaire moi- -num ou -dnum ou identique ii, i
ns ; changement du -pos
signe
- soustraction vecteur pos - pos pos
* multiplication num * num num i
* multiplication dnum * dnum dnum i
* multiplication vecteur num * pos ou pos * pos
scalaire num
* produit vectoriel pos * pos pos
* enchaînement des ro- orient * orient orient
tations
/ division num / num num
/ division dnum / dnum dnum
/ division pos / num pos

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 37
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.3.1 Types d'expressions
Suite

Opérateur Fonctionnement Types d'opérande Type de résultat


DIV iii division de nombre num DIV num num
entier
DIV iii division de nombre dnum DIV dnum dnum
entier
MOD iii module de nombre num MOD num num
entier ; reste
MOD iii module de nombre dnum MOD dnum dnum
entier ; reste
i Conserve la représentation du nombre entier (exact) tant que les opérandes et le résultat sont
maintenus dans le sous-domaine de nombre entier du type numérique.
ii Le résultat reçoit le même type que l’opérande. Si l’opérande a un type de données pseudonyme,
le résultat reçoit le type de “base” pseudonyme (num, dnum ou pos).
iii Opérations de nombre entier, par exemple 14 DIV 4=3, 14 MOD 4=2. (les opérandes qui ne sont
pas des nombres entiers ne sont pas autorisés).

Expressions logiques
Une expression logique est utilisée pour évaluer une valeur logique (TRUE/FALSE).
Exemple :
a>5 AND b=3

Opérateur Fonctionnement Types d'opérande Type de résultat


< inférieur à num < num bool
< inférieur à dnum < dnum bool
<= inférieur ou égal à num <= num bool
<= inférieur ou égal à dnum <= dnum bool
= égal à n'importe quel i = bool
n'importe quel
>= supérieur ou égal à num >= num bool
>= supérieur ou égal à dnum >= dnum bool
> supérieur à num > num bool
> supérieur ou égal à dnum > dnum bool
<> différent de n'importe quel <> bool
n'importe quel
AND et bool AND bool bool
XOR exclusif ou bool XOR bool bool
OR ou bool OR bool bool
NOT non unaire ; négation NOT bool bool
i Types de données sans valeur. Les opérandes doivent avoir des types égaux.

Suite page suivante


38 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.3.1 Types d'expressions
Suite

xx1100000555

Expressions de chaîne
Une expression de chaîne est utilisée pour effectuer des opérations sur des chaînes
de caractères.
Exemple : "IN" + "PUT" donne le résultat "INPUT"
Opérateur Fonctionnement Types d'opérande Type de résultat
+ concaténation de string + string string
chaîne

Manuel de référence technique - Vue d’ensemble de RAPID 39


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.3.2 Utilisation de données dans des expressions

1.3.2 Utilisation de données dans des expressions

Introduction
Une variable entière, persistante ou constante peut faire partie d’une expression.
Exemple :
2*pi*radius

Tableaux
Une variable, persistante ou constante déclarée en tant que tableau peut être
référencée en utilisant la totalité du tableau ou un seul élément.
Un élément de tableau est désigné en utilisant le numéro d’index de l’élément.
L’index est une valeur entière supérieure à 0 et ne devra pas enfreindre la dimension
déclarée. La valeur d’index 1 choisit le premier élément. Le nombre d’éléments de
la liste d’index doit correspondre au degré déclaré (1, 2 ou 3) du tableau.
Exemple :
VAR num row{3};
VAR num column{3};
VAR num value;

! get one element from the array


value := column{3};

! get all elements in the array


row := column;

Enregistrements
Une variable, persistante ou constante déclarée en tant qu’enregistrement peut
être référencée en fonction de la totalité de l’enregistrement ou d’une seule
composante.
Une composante d’enregistrement est référencée en utilisant le nom de la
composante.
Exemple :
VAR pos home;
VAR pos pos1;
VAR num yvalue;
..
! get the Y component only
yvalue := home.y;

! get the whole position


pos1 := home;

40 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.3.3 Utilisation des totaux dans les expressions

1.3.3 Utilisation des totaux dans les expressions

Introduction
Un total est utilisé pour les valeurs d’enregistrement ou de tableau.
Exemple :
! pos record aggregate
pos := [x, y, 2*x];

! pos array aggregate


posarr := [[0, 0, 100], [0,0,z]];

Conditions préalables
Il doit être possible de déterminer le type de données d’un total en fonction du
contexte. Le type de données de chaque élément du total doit être le même que
celui de l’élément correspondant du type déterminé.
Exemple (type de total pos - déterminé par p1) :
VAR pos pl;
p1 :=[1, -100, 12];
Exemple de ce qui n'est pas autorisé (car le type de données de n'importe quel
total peut être déterminé par le contexte) :
VAR pos pl;
IF [1, -100, 12] = [a,b,b,] THEN

Manuel de référence technique - Vue d’ensemble de RAPID 41


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.3.4 Utilisation des appels de fonction dans les expressions

1.3.4 Utilisation des appels de fonction dans les expressions

Introduction
Un appel de fonction génère l’évaluation d’une fonction spécifique et reçoit la
valeur retournée par la fonction.
Exemple :
Sin(angle)

Arguments
Les arguments d’un appel de fonction sont utilisés pour transférer des données
vers (et peut-être en provenance de) la fonction appelée. Le type de données d’un
argument doit être identique au type du paramètre correspondant de la fonction.
Les arguments optionnels peuvent être omis mais l’ordre des arguments (présents)
doit être le même que l’ordre des paramètres formels. De plus, au moins deux
arguments optionnels peuvent être déclarés comme s’excluant mutuellement
auquel cas un seul pourra être présent dans la liste des arguments.
Un argument requis (obligatoire) est séparé de l’argument qui le précède par une
virgule (,). Le nom du paramètre formel peut soit être inclus soit être omis.
Exemple Description
Polar(3.937, 0.785398) Deux arguments requis, avec ou sans le nom
Polar(Dist:=3.937, de paramètre.
Angle:=0.785398)
Cosine(45) Un argument requis, avec ou sans aiguillage.
Cosine(0.785398\Rad)
Dist(p2) Un argument requis, avec ou sans argument
Dist(\distance:=pos1, p2) optionnel.

Un argument optionnel doit être précédé d’une barre oblique inverse(\) et du nom
du paramètre formel. De plus, un argument du type aiguillage est un tant soit peu
spécial ; il ne comprendra peut être pas d’expression d’argument. Par contre, un
tel argument peut être uniquement présent ou non présent.
Les arguments conditionnels sont utilisés pour la propagation continue des
arguments optionnels via des chaînes d’appels de routine. Un argument
conditionnel est considéré comme étant présent si le paramètre optionnel spécifié
(de la fonction d’appel) est présent, sinon il est tout simplement considéré comme
étant omis. Notez que le paramètre spécifié doit être optionnel.
Exemple :
PROC Read_from_file (iodev File \num Maxtime)
..
character:=ReadBin (File \Time?Maxtime);
! Max. time is only used if specified when calling the routine
! Read_from_file
..
ENDPROC

Suite page suivante


42 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.3.4 Utilisation des appels de fonction dans les expressions
Suite

Paramètres
La liste des paramètres d’une fonction affecte un mode d’accès à chaque paramètre.
Le mode d'accès peut être in, inout, var ou pers :
• Un paramètre IN (par défaut) permet à l’argument d’être n’importe quelle
expression. La fonction appelée considère le paramètre comme étant une
constante.
• Un paramètre INOUT exige que l’argument correspondant soit une variable
(entière, élément de tableau ou composante d’enregistrement) ou une
persistante entière. La fonction appelée bénéficie d’un accès total
(lecture/écriture) à l’argument.
• Un paramètre VAR exige que l’argument correspondant soit une variable
(entière, élément de tableau ou composante d’enregistrement). La fonction
appelée bénéficie d’un accès total (lecture/écriture) à l’argument.
• Un paramètre PERS exige que l’argument correspondant soit une persistante
entière. La fonction appelée bénéficie d’un accès total (lecture/mise à jour)
à l’argument.

Manuel de référence technique - Vue d’ensemble de RAPID 43


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.3.5 Priorité entre opérateurs

1.3.5 Priorité entre opérateurs

Règles de priorité
La priorité relative des opérateurs détermine l’ordre selon lequel ils sont évalués.
Les parenthèses permettent de neutraliser la priorité de l’opérateur. Les règles
ci-dessous suggèrent la priorité opérateur suivante :
Priorité opérateurs
La plus élevée * / DIV MOD
+ -
< > <> <= >= =
AND
La plus faible XOR OR NOT

Un opérateur avec priorité élevée est évalué avant un opérateur de priorité moins
élevée. Les opérateurs ayant une même priorité sont évalués de gauche à droite.
Exemple d'expression Ordre d'évaluation Commentaire
a + b + c (a + b) + c Règle de gauche à droite
a + b * c a + (b * c) * plus élevé que +
a OR b OR c (a OR b) OR c Règle de gauche à droite
a AND b OR c AND d (a AND b) OR (c AND d) AND plus élevé que OR
a < b AND c < d (a < b) AND (c < d) < plus élevé que AND

44 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.3.6 Syntaxe

1.3.6 Syntaxe

Expressions
<expression> ::= <expr> | <EXP>
<expr> ::= [ NOT ] <logical term> { ( OR | XOR ) <logical term> }
<logical term> ::= <relation> { AND <relation> }
<relation> ::= <simple expr> [ <relop> <simple expr> ]
<simple expr> ::= [ <addop> ] <term> { <addop> <term> }
<term> ::= <primary> { <mulop> <primary> }
<primary> ::=
<literal>
| <variable>
| <persistent>
| <constant>
| <parameter>
| <function call>
| <aggregate>
| '(' <expr> ')'

opérateurs
<relop> ::= '<' | '<=' | '=' | '>' | '>=' | '<>'
<addop> ::= '+' | '-'
<mulop> ::= '*' | '/' | DIV | MOD

Valeurs constantes
<literal> ::= <num literal>
| <string literal>
| <bool literal>

Données
<variable> ::=
<entire variable>
| <variable element>
| <variable component>
<entire variable> ::= <ident>
<variable element> ::= <entire variable> '{' <index list> '}'
<index list> ::= <expr> { ',' <expr> }
<variable component> ::= <variable> '.' <component name>
<component name> ::= <ident>
<persistent> ::=
<entire persistent>
| <persistent element>
| <persistent component>
<constant> ::=
<entire constant>
| <constant element>
| <constant component>

Totaux
<aggregate> ::= '[' <expr> { ',' <expr> } ']'

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 45
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.3.6 Syntaxe
Suite

Appels de fonction
<function call> ::= <function> '(' [ <function argument list> ]
')'
<function> ::= <ident>
<function argument list> ::= <first function argument> { <function
argument> }
<first function argument> ::=
<required function argument>
| <optional function argument>
| <conditional function argument>
<function argument> ::=
',' <required function argument>
| <optional function argument>
| ',' <optional function argument>
| <conditional function argument>
| ',' <conditional function argument>
<required function argument> ::= [ <ident> ':=' ] <expr>
<optional function argument> ::= '\' <ident> [ ':=' <expr> ]
<conditional function argument> ::= '\' <ident> '?' <parameter>

Expressions spéciales
<constant expression> ::= <expression>
<literal expression> ::= <expression>
<conditional expression> ::= <expression>

Paramètres
<parameter> ::=
<entire parameter>
| <parameter element>
| <parameter component>

46 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.4 Instructions

1.4 Instructions

Description
Les instructions sont exécutées successivement à moins qu’une instruction de
déroulement du programme, une interruption ou une erreur ne provoque la
continuation de l’exécution ailleurs.
La plupart des instructions se terminent par un point-virgule (;). Une étiquette se
termine par deux-points (:). Certaines instructions peuvent contenir d’autres
instructions et se terminent par des mots-clés spécifiques :
Instruction Mot de fin
IF ENDIF
FOR ENDFOR
WHILE ENDWHILE
TEST ENDTEST

Exemple :
WHILE index < 100 DO
.
index := index + 1;
ENDWHILE

Listes de sélection
Toutes les instructions sont collectées dans des groupes spécifiques, qui sont
décrits dans les sections suivantes. Ces groupes sont identiques à ceux des listes
de sélection utilisées lors de l'ajout de nouvelles instructions à un programme via
l'éditeur de programme.

Syntaxe
<instruction list> ::= { <instruction> }
<instruction> ::=
[<instruction according to separate chapter in this manual>
| <SMT>

Manuel de référence technique - Vue d’ensemble de RAPID 47


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.5 Contrôle du déroulement du programme

1.5 Contrôle du déroulement du programme

Introduction
En règle générale, le programme est exécuté de manière séquentielle, c’est-à-dire
instruction par instruction. Parfois, les instructions qui interrompent cette exécution
séquentielle et appellent une autre instruction doivent faire face à des situations
différentes susceptibles de survenir en cours d’exécution.

Principes de programmation
Le déroulement du programme peut être contrôlé selon cinq principes différents
:
• En appelant une autre routine (procédure) et, lorsque cette routine a été
exécutée, continuer l’exécution avec l’instruction qui suit l’appel de la routine.
• En exécutant différentes instructions selon qu’une condition donnée a été
satisfaite ou pas.
• En répétant une séquence d’instructions un certain nombre de fois ou jusqu’à
ce qu’une condition donnée soit satisfaite.
• En se rendant dans un label au sein de la même routine.
• En mettant fin à l’exécution d’un programme.

Appel d’une autre routine

Instruction Utilisé pour


ProcCall Appeler (passer à) une autre routine
CallByVar Appeler des procédures avec des noms spécifiques
RETURN Revenir à la routine d’origine

Contrôle du programme au sein de la routine

Instruction Utilisé pour


Compact IF Exécuter une instruction uniquement si une condition est sati-
sfaite
IF Exécuter une séquence d’instructions différentes selon que,
oui ou non, une condition est satisfaite
FOR Répéter une partie du programme un certain nombre de fois
WHILE Répéter une séquence d’instructions différentes pour autant
qu’une condition donnée soit satisfaite
TEST Exécuter différentes instructions en fonction de la valeur d'une
expression
GOTO Passer à une étiquette
label Spécifier une étiquette (nom de ligne)

Arrêt de l'exécution du programme

Instruction Utilisé pour


Stop Arrêt de l'exécution du programme

Suite page suivante


48 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.5 Contrôle du déroulement du programme
Suite

Instruction Utilisé pour


EXIT Mettre fin à l’exécution du programme lorsqu’un redémarrage
du programme n’est pas autorisé
Break Mettre provisoirement fin à l’exécution du programme à des
fins de débogage
SystemStopAction Arrêter l’exécution du programme et le mouvement du robot

Arrêter le cycle en cours

Instruction Utilisé pour


ExitCycle Interrompre le cycle en cours et déplacer le pointeur de progra-
mme sur la première instruction dans la routine principale.
Lorsque le mode d’exécution CONT est sélectionné, l’exécution
se poursuit avec le cycle de programme suivant.

Manuel de référence technique - Vue d’ensemble de RAPID 49


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.6 Instructions diverses

1.6 Instructions diverses

Introduction
Diverses instructions sont utilisées pour
• affecter des valeurs à des données
• attendre un certain temps ou attendre jusqu’à ce qu’une condition soit
satisfaite
• insérer un commentaire dans le programme
• charger des modules de programmes.

Affectation d'une valeur à des données


Les données peuvent recevoir une valeur arbitraire. Elles peuvent, par exemple,
être initialisées avec une valeur constante, par exemple 5, ou mises à jour à l’aide
d’une expression arithmétique, par exemple reg1+5*reg3.

Instruction Utilisé pour


:= Affecter une valeur à des données

Attente
Le robot peut être programmé pour attendre un certain temps ou pour attendre
jusqu’à ce qu’une condition arbitraire ait été satisfaite ; par exemple, attendre
jusqu’à ce qu’une entrée ait été déterminée.
Instruction Utilisé pour
WaitTime Attendre un certain temps ou jusqu'à ce que le robot cesse de
se déplacer
WaitUntil Attendre qu'une condition soit satisfaite
WaitDI Attendre jusqu’à ce qu’une entrée numérique soit définie
WaitDO Attendre jusqu’à ce qu’une entrée numérique soit définie

Commentaires
Les commentaires sont uniquement insérés dans le programme pour en accroître
la lisibilité. L’exécution du programme n’est pas affectée par l’insertion d’un
commentaire.
Instruction Utilisé pour
! Commentaire sur le programme. Une ligne commençant par
(! (point d’exclamation) est un commentaire et est ignorée par
l'exécution du programme.

Chargement de modules de programme


Des modules de programme peuvent être chargés à partir d’une mémoire de masse
ou effacés de la mémoire du programme. Des programmes très longs peuvent
ainsi être exécutés avec une petite mémoire.
Instruction Utilisé pour
Load Charger un module de programme dans la mémoire de progra-
mme

Suite page suivante


50 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.6 Instructions diverses
Suite

Instruction Utilisé pour


UnLoad Décharger un module de programme de la mémoire de progra-
mme
StartLoad Charger un module de programme dans la mémoire de progra-
mme en cours d’exécution
WaitLoad Connecter le module, s’il a été chargé avec StartLoad, à la
tâche de programme
CancelLoad Annuler le chargement d’un module en cours de chargement
ou qui a été chargé avec l’instruction StartLoad
CheckProgRef Consulter les références du programme
Save Sauvegarder un module de programme
EraseModule Supprimer un module de la mémoire de programme

Type de données Utilisé pour


loadsession Programmer une session de chargement

Fonctions diverses

Instruction Utilisé pour


TryInt Vérifier si un objet de données est un nombre entier valide

Fonction Utilisé pour


OpMode Lire le mode opérationnel actuel du robot
RunMode Lire le mode d’exécution de programme actuel du robot
NonMotionMode Lire le mode d’exécution sans déplacement actuel de la tâche
de programme
Dim Obtenir les dimensions d’un tableau
Present Rechercher si un paramètre optionnel était présent lors de
l'appel d'une routine
Type Renvoyer le nom de type de données pour une variable spéci-
fiée
IsPers Vérifier si un paramètre est une persistante
IsVar Vérifier si un paramètre est une variable

Données de base

Type de données Utilisée pour définir


bool Données logiques (avec les valeurs true ou false)
num Valeurs numériques (décimale ou nombre entier)
dnum Valeurs numériques (décimale ou nombre entier). Type de
données avec une plage supérieure à num.
string Chaînes de caractères
switch Paramètres de routine sans valeur

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 51
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.6 Instructions diverses
Suite

Fonction de conversion

Fonction Utilisé pour


ByteToStr Convertir un octet en des données de chaîne avec un format
de données d’octet défini.
StrToByte Convertir une chaîne avec un format de données d’octet défini
en des données d'octet.

52 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.7 Paramètres de mouvement

1.7 Paramètres de mouvement

Introduction
Certaines caractéristiques de déplacement du robot sont déterminées à partir
d’instructions logiques qui s’appliquent à tous les déplacements :
• Vitesse maximale du TCP
• Vitesse maximale et dépassement de vitesse
• Accélération
• Gestion des différentes configurations de robot
• Charge utile
• Comportement autour de points singuliers
• Déplacement du programme
• Soft servo
• Valeur de mise au point
• Activation et désactivation de la mémoire tampon d'événements
• Suppression des messages d’avertissement de la trajectoire de raccordement

Principes de programmation
Les caractéristiques de base du déplacement du robot sont déterminées par les
données spécifiées pour chaque instruction de positionnement. Toutefois, certaines
données sont spécifiées dans des instructions séparées qui s’appliquent à tous
les mouvements jusqu’à ce que ces données changent.
Les paramètres de déplacement généraux sont spécifiés à l’aide d’un certain
nombre d’instructions, mais ils peuvent également être lus à l’aide de la variable
système C_MOTSET ou C_PROGDISP.
Les valeurs par défaut sont automatiquement déterminées (en exécutant la routine
SYS_RESET dans le module système BASE_SHARED)
• lors de l'utilisation du mode de redémarrage Réinitialiser le système,
• lorsqu’un nouveau programme est chargé,
• lorsque le programme est exécuté à partir du début.

Fonction de vitesse maximale du TCP

Fonction Utilisé pour


MaxRobSpeed Renvoyer la vitesse maximale du TCP pour le type de robot
utilisé

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 53
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.7 Paramètres de mouvement
Suite

Définir la vitesse
La vitesse absolue est programmée en tant qu’argument dans l’instruction de
positionnement. Outre ceci, la vitesse maximale et la neutralisation de la vitesse
(pourcentage de la vitesse programmée) peuvent être définies.
Une limitation de vitesse peut également être définie ; elle sera appliquée
ultérieurement, lorsqu'un signal d'entrée système sera défini.
Instruction Utilisée pour définir
VelSet La vitesse maximale et la neutralisation de vitesse
SpeedRefresh Mettre à jour la neutralisation de vitesse pour le déplacement
en cours
SpeedLimAxis Définissez la limitation de vitesse pour un axe. Elle sera appli-
quée ultérieurement via un signal d'entrée système.
SpeedLimCheckPoint Définissez la limitation de vitesse pour les points de contrôle.
Elle sera appliquée ultérieurement via un signal d'entrée sys-
tème.

Définir l’accélération
Lorsque des pièces fragiles, par exemple, sont manipulées, l’accélération peut
être réduite pendant une partie du programme.
Instruction Utilisé pour
AccSet Définir l’accélération maximale.
WorldAccLim Limiter l’accélération et/ou la décélération de l’outil (et de la
charge de préhension) dans le système de coordonnées atelier.
PathAccLim Régler ou réinitialiser les limitations sur l’accélération du TCP
et/ou la décélération du TCP le long de la trajectoire de dépla-
cement.

Définir la gestion de la configuration


Normalement, la configuration du robot est vérifiée en cours de déplacement. Si
un déplacement articulaire (axe par axe) est utilisé, la configuration correcte sera
obtenue. Si on utilise un déplacement linéaire ou circulaire, le robot se déplacera
toujours vers la configuration la plus proche, toutefois, une vérification est effectuée
afin de voir s’il s’agit de la même que celle programmée. Toutefois, il est possible
de changer ceci.
Instruction Utilisé pour
ConfJ La commande ON/OFF de la configuration pendant un dépla-
cement articulaire
ConfL La vérification ON/OFF de la configuration pendant un dépla-
cement linéaire

Définir la charge utile


Afin d’obtenir le rendement optimal du robot, on devra définir la charge utile
correcte.
Instruction Utilisée pour définir
GripLoad Définir la charge utile du préhenseur

Suite page suivante


54 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.7 Paramètres de mouvement
Suite

Définir le comportement à proximité de points singuliers


Le robot peut être programmé de façon à éviter les points singuliers en modifiant
automatiquement l’orientation de l’outil.
Instruction Utilisée pour définir
SingArea Définir la méthode d’interpolation via les points singuliers

Activation et désactivation de la mémoire tampon d'événements


La mémoire tampon d'événements peut être activée et désactivée afin d'obtenir
des performances optimales du robot et un comportement correct de l'application
lors de la combinaison d'une application utilisant des points fins avec une
application continue, où les signaux doivent être définis à l'avance du fait de la
lenteur de l'équipement de processus.
Instruction Utilisée pour définir
ActEventBuffer Activez la mémoire tampon d'événements configurée
DeactEventBuffer Désactivez l'utilisation de la mémoire tampon d'événements

Suppression des messages d’avertissement de la trajectoire de raccordement


Pour éviter les messages d’avertissement sur le FlexPendant en cas d’échec de
la trajectoire de raccordement, il est possible d’activer et de désactiver ces
avertissements.
Instruction Utilisée pour définir
CornerPathWarning Suppression des messages d’avertissement de la trajectoire
TRUE; de raccordement
CornerPathWarning Activation des messages d’avertissement de la trajectoire de
FALSE; raccordement

Déplacer un programme
Lorsqu’une partie du programme doit être déplacée, par exemple à la suite d’une
recherche, on peut ajouter un déplacement de programme.
Instruction Utilisé pour
PDispOn Activer le déplacement d’un programme
PDispSet Activer le déplacement d’un programme en spécifiant une va-
leur
PDispOff Désactiver le déplacement d’un programme
EOffsOn Activer le décalage d'un axe supplémentaire
EOffsSet Activer le décalage d’un axe supplémentaire en spécifiant une
valeur
EOffsOff Désactiver le décalage d'un axe supplémentaire

Fonction Utilisé pour


DefDFrame Calculer un déplacement de programme à partir de trois posi-
tions
DefFrame Calculer un déplacement de programme à partir de six positions
ORobT Supprimer le déplacement de programme à partir d’une position

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 55
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.7 Paramètres de mouvement
Suite

Fonction Utilisé pour


DefAccFrame Définir un référentiel à partir des positions originales et des
positions déplacées

Servo mou
Un ou plusieurs axes du robot peuvent être rendus "souples". Lorsqu’on utilise
cette fonction, le robot sera "conciliant" et pourra, par exemple, remplacer un outil
à ressort.
Instruction Utilisé pour
SoftAct Activer le servo mou pour un ou plusieurs axes
SoftDeact Désactiver le servo mou

Réglage des valeurs de mise au point du robot


En général, les performances du robot s’auto-optimisent ; toutefois, dans certains
cas extrêmes, il pourra y avoir, par exemple, un dépassement de la course. Vous
pouvez régler les valeurs de mise au point du robot afin d’obtenir les performances
requises.
Instruction Utilisé pour
TuneServo Réglage des valeurs de mise au point du robot
TuneReset Rétablir la mise au point normale
PathResol Corriger la résolution de la trajectoire géométrique
CirPathMode Choisir la méthode de réorientation de l’outil durant l’interpola-
tion circulaire.

Type de données Utilisé pour


tunetype Représenter le type de mise au point comme une constante
symbolique

Zones atelier
Jusqu’à 10 volumes différents peuvent être définis à l’intérieur de la zone de travail
du robot. Ils peuvent être utilisés pour :
• Indiquer que le TCP du robot est dans une section particulière de la zone de
travail.
• Délimiter la zone de travail du robot et empêcher une collision avec l’outil.
• Créer une zone de travail commune à deux robots. La zone de travail n’est
alors accessible que pour un robot à la fois.
Les instructions reprises dans le tableau ci-dessous ne sont disponibles que
lorsque le robot est équipé de l'option World Zones.
Instruction Utilisé pour
WZBoxDef Définir une zone globale en forme de boîte
WZCylDef Définir une zone globale cylindrique
WZSphDef Définir une zone globale sphérique
WZHomeJointDef Définir une zone globale en coordonnées articulaires

Suite page suivante


56 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.7 Paramètres de mouvement
Suite

Instruction Utilisé pour


WZLimJointDef Définir une zone globale en coordonnées articulaires pour limi-
ter la zone de travail.
WZLimSup Activer la supervision des limites d’une zone globale
WZDOSet Activer une zone globale pour définir des sorties numériques
WZDisable Désactiver la supervision d’une zone globale temporaire
WZEnable Activer la supervision d’une zone globale temporaire
WZFree Supprimer la supervision d’une zone globale temporaire
wztemporary Identifier une zone globale temporaire
wzstationary Identifier une zone globale stationnaire
shapedata Décrire la géométrie d’une zone globale

Divers pour les paramètres de déplacement

Instruction Utilisé pour


WaitRob Attendre que le robot et l'axe supplémentaire aient atteint le
point d'arrêt ou une vitesse nulle.

Type de données Utilisé pour


motsetdata Paramètres de déplacement, sauf le déplacement du progra-
mme
progdisp Déplacement du programme

Manuel de référence technique - Vue d’ensemble de RAPID 57


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.8 Mouvement

1.8 Mouvement

Principe de déplacement du robot


Les déplacements du robot sont programmés en tant que déplacements de position
à position, c’est-à-dire le passage de la position actuelle à une nouvelle position.
La trajectoire entre ces deux positions est ensuite calculée automatiquement par
le robot.

Principes de programmation
Les autres caractéristiques de déplacement sont spécifiées en définissant les
données qui sont les arguments d’une instruction. Les autres caractéristiques de
déplacement sont spécifiées en définissant les données qui sont les arguments
d’une instruction.
• Données de position (position de fin du robot et des axes supplémentaires)
• Données de vitesse (vitesse souhaitée)
• Données de zone (précision de la position)
• Données d'outil (par exemple, la position du TCP)
• Données d'objet de travail (par exemple, le système de coordonnées actuel)
Certaines caractéristiques de déplacement du robot sont déterminées à partir
d’instructions logiques qui s’appliquent à tous les déplacements (voir Paramètres
de mouvement à la page 53) :
• Vitesse maximale et dépassement de vitesse
• Accélération
• Gestion des différentes configurations de robot
• Charge utile
• Comportement autour de points singuliers
• Déplacement du programme
• Soft servo
• Valeur de mise au point
• Activation et désactivation de la mémoire tampon d'événements
Le robot et les axes supplémentaires sont positionnés à partir des mêmes
instructions. Les axes supplémentaires sont déplacés à une vitesse constante et
atteignent la position de fin en même temps que le robot.

Instructions de positionnement

Instruction Type de mouvement


MoveC Le TCP se déplace le long d'une trajectoire circulaire.
MoveJ Déplacement articulaire.
MoveL Le TCP se déplace le long d'une trajectoire linéaire.
MoveAbsJ Mouvement articulaire absolu.
MoveExtJ Déplace un axe supplémentaire linéaire ou rotatif sans le TCP.

Suite page suivante


58 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.8 Mouvement
Suite

Instruction Type de mouvement


MoveCAO Mouvement circulaire du robot et définition d'une sortie analo-
gique dans le raccordement
MoveCDO Déplace le robot selon un déplacement circulaire et définit une
sortie numérique au milieu de la trajectoire de raccordement.
MoveCGO Mouvement circulaire du robot et définition d'un signal de
sortie de groupe dans le raccordement
MoveJAO Mouvement du robot par mouvement articulaire et définition
d'une sortie analogique dans le raccordement
MoveJDO Déplace le robot selon un déplacement articulaire et définit
une sortie numérique au milieu de la trajectoire de raccorde-
ment.
MoveJGO Mouvement du robot par mouvement articulaire et définition
d'un signal de sortie de groupe dans le raccordement
MoveLAO Mouvement linéaire du robot et définition d'une sortie analo-
gique dans le raccordement
MoveLDO Déplace le robot selon un déplacement linéaire et définit une
sortie numérique au milieu de la trajectoire de raccordement.
MoveLGO Mouvement linéaire du robot et définition d'un signal de sortie
de groupe dans le raccordement
MoveCSync Déplace le robot selon un déplacement circulaire et exécute
une procédure RAPID.
MoveJSync Déplace le robot selon un déplacement articulaire et exécute
une procédure RAPID.
MoveLSync Déplace le robot selon un déplacement linéaire et exécute une
procédure RAPID.

Recherche
Lors de son déplacement, le robot peut rechercher, par exemple, la position d’un
objet de travail. La position recherchée (indiquée par un signal capteur) est mise
en mémoire, et pourra être utilisée ultérieurement pour positionner le robot ou
calculer le déplacement d’un programme.
Instruction Type de mouvement
SearchC Le TCP se déplace selon une trajectoire circulaire.
SearchL Le TCP se déplace selon une trajectoire linéaire.
SearchExtJ Déplacement articulaire d’une unité mécanique sans TCP.

Activation des sorties ou des interruptions sur des positions spécifiques


Normalement, les instructions logiques sont exécutées lors du passage d’une
instruction de position à une autre. Toutefois, si des instructions de déplacement
spéciales sont utilisées, celles-ci peuvent être exécutées lorsque le robot se trouve
dans une position spécifique.
Instruction Utilisé pour
TriggC Déplacer le robot (TCP) selon une trajectoire circulaire avec
une condition de déclenchement activée.
TriggCheckIO Définir un contrôle d'E/S sur une position fixe

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 59
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.8 Mouvement
Suite

Instruction Utilisé pour


TriggEquip Définir une condition de déclenchement afin de définir une
sortie dans une position donnée, avec la possibilité d’inclure
une temporisation pour compenser le jeu dans l’équipement
externe.
TriggDataCopy Copier le contenu dans une variable triggdata
TriggDataReset Réinitialiser le contenu d'une variable triggdata
TriggRampAO Définir une condition de déclenchement afin de faire monter
ou descendre un signal de sortie analogique dans une position
donnée, avec la possibilité d’inclure une temporisation pour
compenser le jeu dans l’équipement externe.
TriggJ Déplacer le robot (TCP) axe par axe avec une condition de
déclenchement activée.
TriggJIOs Déplacer le robot (TCP) axe par axe avec une condition de
déclenchement E/S activée.
TriggInt Définir une condition de déclenchement afin d’exécuter une
routine d’interruption dans une position donnée
TriggIO Définir une condition de déclenchement afin de définir une
sortie dans une position donnée
TriggL Déplacer le robot (TCP) selon une trajectoire linéaire avec une
condition de déclenchement activée.
TriggLIOs Déplacer le robot (TCP) selon une trajectoire linéaire avec une
condition de déclenchement d'E/S activée.
StepBwdPath Déplacer le robot vers l’arrière sur sa trajectoire dans une
routine d’événement RESTART.
TriggStopProc Créer un processus interne de supervision dans le système
pour la mise à zéro de signaux de processus spécifiques et
pour la création de données de redémarrage dans une variable
persistante spécifique, à chaque arrêt du programme (STOP)
ou à chaque arrêt d’urgence (QSTOP) dans le système.

Fonctions Utilisé pour


TriggDataValid Vérifier si le contenu d'une variable triggdata est valide

Types de données Utilisé pour


triggdata Conditions de déclenchement
aiotrigg Condition du déclencheur d'E/S analogique
restartdata Données pour TriggStopProc
triggios Conditions de déclenchement pour TriggJIOs et TriggLIOs
triggstrgo Conditions de déclenchement pour TriggJIOs et TriggLIOs
triggiosdnum Conditions de déclenchement pour TriggJIOs et TriggLIOs

Contrôle d’un signal de sortie analogique proportionnel au TCP réel

Instruction Utilisé pour


TriggSpeed Définir les conditions et les actions pour le contrôle d’un signal
de sortie analogique avec une valeur de sortie proportionnelle
à la vitesse réelle du TCP.

Suite page suivante


60 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.8 Mouvement
Suite

Contrôle du déplacement en cas d’erreur/interruption


Pour rectifier une erreur ou une interruption, le déplacement peut être arrêté
provisoirement, puis redémarré.
Instruction Utilisé pour
StopMove Définir les conditions et les actions pour le contrôle d’un signal
de sortie analogique avec une valeur de sortie proportionnelle
à la vitesse réelle du TCP.
StartMove Redémarrer les déplacements du robot
StartMoveRetry Redémarrer les déplacements du robot et effectuer une nou-
velle tentative sur une séquence indivisible
StopMoveReset Réinitialiser l’état d’arrêt des déplacements sans démarrer les
déplacements du robot
StorePath Mémoriser la dernière trajectoire générée
RestoPath Générer à nouveau une trajectoire précédemment sauvegardée
ClearPath Effacer la trajectoire de déplacement complète au niveau de
la trajectoire de déplacement actuelle.
PathLevel Obtenir le niveau de trajectoire en cours.
SyncMoveSuspend i Suspendre les mouvements coordonnés synchronisés au ni-
veau StorePath.
SyncMoveResume i Reprendre les mouvements coordonnés synchronisés au ni-
veau StorePath.
i Si le robot est équipé de l’option MultiMove Coordinated.

Fonction Utilisé pour


IsStopMoveAct Obtenir l’état des indicateurs d’arrêt des mouvements.

Obtenir des informations concernant le robot dans un système MultiMove


Permet de récupérer le nom du robot ou sa référence lors de la tâche de programme
en cours.
Fonction Utilisé pour
RobName Obtenir le nom du robot commandé lors de la tâche de progra-
mme en cours (le cas échéant).

Données Utilisé pour


ROB_ID Obtenir les données contenant une référence au robot comma-
ndé lors de la tâche de programme en cours (le cas échéant).

Contrôle des axes supplémentaires


Le robot et les axes supplémentaires sont généralement positionnés à l’aide des
mêmes instructions. Toutefois, certaines instructions affectent uniquement les
déplacements des axes supplémentaires.
Instruction Utilisé pour
DeactUnit Désactiver une unité mécanique externe
ActUnit Activer une unité mécanique externe
MechUnitLoad Définir une charge utile pour une unité mécanique

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 61
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.8 Mouvement
Suite

Instruction Utilisé pour


GetTorqueMargin Lire la moindre marge de couple
ResetTorqueMargin Réinitialiser la moindre marge de couple

Fonction Utilisé pour


GetMotorTorque Lire le couple actuel du robot et des moteurs des axes ex-
ternes, et permet de détecter si un préhenseur asservi tient
une charge ou non.
GetNextMechUnit Obtenir le nom et les données des unités mécaniques
IsMechUnitActive Vérifier si une unité mécanique est activée ou pas

Axes indépendants
L’axe 6 du robot (et 4 pour les IRB 1600, 2600 et 4600, à l'exception des versions
ID) ou un axe supplémentaire peut être déplacé indépendamment des autres
mouvements. L’espace de travail d’un axe peut aussi être remis à zéro, ce qui
permet de réduire les temps de cycle.
Les instructions reprises dans le tableau ci-dessous ne sont disponibles que
lorsque le robot est équipé de l'option Independent Axis.
Instruction Utilisé pour
IndAMove Mettre un axe en mode indépendant et déplacer l'axe vers une
position absolue.
IndCMove Mettre un axe en mode indépendant et démarrer son mouve-
ment de façon continue.
IndDMove Mettre un axe en mode indépendant et déplacer l’axe d’une
distance delta.
IndRMove Mettre un axe en mode indépendant et le déplacer vers une
position relative (comprise dans un tour d'axe).
IndReset Mettre un axe en mode dépendant et/ou redéfinir la zone de
travail.
HollowWristReset i Réinitialiser la position des articulations de poignet sur les
manipulateurs de poignet creux tels que l'IRB 5402 et l'IRB
5403
i Peut également être utilisé pour les IRB 5402 et 5403.
Les fonctions reprises dans le tableau ci-dessous ne sont disponibles que lorsque
le robot est équipé de l'option Independent Axis.
Fonction Utilisé pour
IndInpos Contrôler si un axe indépendant est en position.
IndSpeed Contrôler si un axe indépendant a atteint la vitesse program-
mée.

Suite page suivante


62 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.8 Mouvement
Suite

Correction de trajectoire
Les instructions, fonctions et types de données repris dans le tableau ci-dessous
ne sont disponibles que lorsque le robot est équipé des options Path offset ou
RobotWare-Arc sensor.
Instruction Utilisé pour
CorrCon Contrôler si un axe indépendant est en position
CorrWrite Contrôler si un axe indépendant a atteint la vitesse program-
mée
CorrDiscon Déconnecter un générateur de corrections connecté précéde-
mment
CorrClear Supprimer tous les générateurs de corrections connectés

Fonction Utilisé pour


CorrRead Lire les corrections totales fournies par l'ensemble des géné-
rateurs de corrections connectés

Type de données Utilisé pour


corrdescr Ajouter des décalages géométriques dans le système de coor-
données de la trajectoire

Enregistreur de trajectoire
Les instructions, fonctions et types de données repris dans le tableau ci-dessous
ne sont disponibles que lorsque le robot est équipé de l'option Path Recovery.
Instruction Utilisé pour
PathRecStart Lancer l'enregistrement de la trajectoire du robot
PathRecStop Arrêter l'enregistrement de la trajectoire du robot
PathRecMoveBwd Déplacer le robot vers l’arrière le long d’une trajectoire enregi-
strée
PathRecMoveFwd Ramener le robot à la position où PathRecMoveBwd a été
exécuté

Fonction Utilisé pour


PathRecValidBwd Vérifier si l’enregistreur de trajectoire est actif et si une trajec-
toire vers l’arrière enregistrée est disponible
PathRecValidFwd Vérifier si l’enregistreur de trajectoire peut être utilisé pour
avancer

Type de données Utilisé pour


pathrecid Identifier un point d’arrêt pour l’enregistreur de trajectoire

Suivi de convoyeur
Les instructions reprises dans le tableau ci-dessous ne sont disponibles que
lorsque le robot est équipé de l'option Conveyor tracking.
Instruction Utilisé pour
WaitWObj Attendre un objet de travail sur le convoyeur
DropWObj Laisser tomber l'objet de travail sur le convoyeur

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 63
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.8 Mouvement
Suite

Servocommande de suivi pour convoyeur à butée


Les instructions reprises dans le tableau ci-dessous ne sont disponibles que
lorsque le robot est équipé de l'option Conveyor tracking.
Instruction Utilisé pour
IndCnvAddObject Permet d'ajouter manuellement un objet à la file d'attente des
objets.
IndCnvEnable Lancer l'écoute de l'entrée numérique et exécuter un mouve-
ment d'indexation lors du déclenchement.
IndCnvDisable Le système arrête l'écoute de l'entrée numérique.
IndCnvInit Configurer la fonctionnalité de convoyeur indexé
IndCnvReset Afin de pouvoir effectuer un déplacement manuel et exécuter
une instruction de déplacement pour le convoyeur indexé, le
système doit être réglé en mode Normal via cette instruction
ou le le déplacement de PP vers le menu principal.
indcnvdata Utilisé pour configurer le comportement de la fonctionnalité
de convoyeur indexé.

Synchronisation de capteur
La synchronisation de capteur est la fonction par laquelle la vitesse du robot suit
un capteur qui peut être monté sur un convoyeur mobile ou sur un axe de moteur
de presse.
Les instructions reprises dans le tableau ci-dessous ne sont disponibles que
lorsque le robot est équipé de l'option Sensor Synchronization.
Instruction Utilisé pour
WaitSensor Connecter un objet dans la fenêtre de démarrage sur une unité
mécanique de capteur.
SyncToSensor Démarrer ou arrêter la synchronisation du déplacement du
robot par rapport au mouvement du capteur.
DropSensor Déconnecter l'objet actuel.

Identification de charge détection de collision

Instruction Utilisé pour


MotionSup i Désactiver/activer la supervision du déplacement
ParIdPosValid Valider la position du robot pour l’identification de paramètres
ParIdRobValid Valider le type de robot pour l’identification de paramètres
LoadId LoadId - Identification de la charge utile ou de l'outil
ManLoadId Identification de charge du manipulateur externe
i Uniquement si le robot est équipé de l’option Collision Detection.

Type de données Utilisé pour


loadidnum Représenter un nombre entier avec une constante symbolique
paridnum Représenter un nombre entier avec une constante symbolique
paridvalidnum Représenter un nombre entier avec une constante symbolique

Suite page suivante


64 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.8 Mouvement
Suite

Fonctions de position

Fonction Utilisé pour


Offs Ajouter un décalage à la position du robot, exprimé par rapport
à l'objet de travail
RelTool Ajouter un décalage, exprimé dans le système de coordonnées
outil
CalcRobT Calcule robtarget à partir de jointtarget
CPos Lire la position actuelle (uniquement x, y, z du robot)
CRobT Lire la position actuelle (le robtarget complet)
CJointT Lire les angles d'articulation actuels
ReadMotor Lire les angles de moteur actuels
CTool Lire la valeur actuelle de tooldata
CWObj Lire la valeur actuelle de wobjdata
ORobT Supprimer un déplacement de programme à partir d’une posi-
tion
MirPos Mettre en miroir une position
CalcJointT Calcule les angles d'articulation à partir de robtarget
Distance La distance entre deux positions

Contrôler la trajectoire interrompue après une panne secteur

Fonction Utilisé pour


PFRestart Contrôler si la trajectoire a été interrompue lors d’une panne
secteur

Fonctions d'état

Fonction Utilisé pour


CSpeedOverride Lire l'annulation de vitesse définie par l’opérateur à partir de
l'Éditeur de programme ou de la Fenêtre de production.

Données de mouvement
Les données de mouvement sont utilisées en tant qu’argument dans les instructions
de positionnement.
Type de données Utilisée pour définir
robtarget La position de fin
jointtarget La position de fin pour une instruction MoveAbsJ ou MoveExtJ
speeddata La vitesse
zonedata La précision de la position (point d’arrêt ou point de passage)
tooldata Le système de coordonnées outil et la charge de l’outil
wobjdata Système de coordonnées du repère objet
stoppointdata La fin de la position

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 65
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.8 Mouvement
Suite

Type de données Utilisée pour définir


identno La valeur numérique permettant de contrôler la synchronisation
entre au moins deux mouvements coordonnés

Données de base pour les déplacements

Type de données Utilisée pour définir


pos Position A (x, y, z)
orient Une orientation
pose Un système de coordonnées (position + orientation)
confdata La configuration des axes du robot
extjoint La position des axes supplémentaires
robjoint La position des axes du robot
loaddata Une charge
mecunit Une unité mécanique externe

Renseignements connexes

Options Décrit dans :


Collision Detection Application manual - Controller software IRC5
Sensor Synchronization
Independent Axis
Path Corrections
Path Offset
Path Recovery
Conveyor tracking Application manual - Conveyor tracking
MultiMove Manuel sur les applications - MultiMove
RobotWare-Arc Application manual - Arc and Arc Sensor

66 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.9 Signaux d'entrée et de sortie

1.9 Signaux d'entrée et de sortie

Signaux
Le robot peut disposer d’un certain nombre de signaux utilisateur numériques et
analogiques qui peuvent être lus et modifiés à partir du programme même.

Principes de programmation
Les noms des signaux sont définis dans les paramètres du système. Ces noms
sont toujours disponibles dans le programme pour les opérations de lecture et de
réglage des E/S.
La valeur d’un signal analogique ou d’un groupe de signaux numériques est
spécifiée en tant que valeur numérique.

Changer la valeur d’un signal

Instruction Utilisée pour définir


InvertDO Inverser la valeur d'un signal de sortie numérique
PulseDO Générer une impulsion sur un signal de sortie numérique
Reset Remettre à zéro un signal de sortie numérique
Set Régler un signal de sortie numérique (sur 1)
SetAO Changer la valeur d’un signal de sortie analogique
SetDO Changer la valeur d'un signal de sortie numérique (valeur sy-
mbolique ; par exemple high/low)
SetGO Changer la valeur d’un groupe de signaux de sortie numériques

Lecture de la valeur des signaux d'entrée


La valeur d'un signal d'entrée peut être lue directement dans le programme, par
exemple :
! Digital input
IF di1 = 1 THEN ...
! Digital group input (smaller than 23 bits)
IF gi1 = 5 THEN ...
! Analog input
IF ai1 > 5.2 THEN ...
Les erreurs récupérables suivantes peuvent être générées. Les erreurs peuvent
être gérées dans un gestionnaire d'erreurs. La variable système ERRNO est
paramétrée sur:
ERR_NO_ALIASIO_DEF si la variable de signal est une variable déclarée dans
RAPID. Elle n'a pas été connectée à un signal d'E/S défini dans la configuration
d'E/S à l'aide de l'instruction AliasIO.
ERR_NORUNUNIT en l'absence de contact avec l'unité d'E/S.
ERR_SIG_NOT_VALID si le signal d'E/S est inaccessible (valide uniquement pour
le bus de terrain ICI).

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 67
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.9 Signaux d'entrée et de sortie
Suite

Lecture de la valeur des signaux de sortie


La valeur d'un signal de sortie peut être lue directement dans le programme, par
exemple :
! Digital output
IF do1 = 1 THEN ...
! Digital group output (smaller than 23 bits)
IF go1 = 5 THEN ...
! Analog output
IF ao1 > 5.2 THEN ...
Les erreurs récupérables suivantes peuvent être générées. Les erreurs peuvent
être gérées dans un gestionnaire d'erreurs. La variable système ERRNO est
paramétrée sur:
ERR_NO_ALIASIO_DEF si la variable de signal est une variable déclarée dans
RAPID. Elle n'a pas été connectée à un signal d'E/S défini dans la configuration
d'E/S à l'aide de l'instruction AliasIO.
ERR_NORUNUNIT en l'absence de contact avec l'unité d'E/S.
ERR_SIG_NOT_VALID si le signal d’E/S est inaccessible (valide uniquement pour
le bus de terrain ICI).

Lecture de la valeur de grands signaux de groupe


Les signaux de groupe de 23 à 32 bits doivent être lus par une fonction et convertis
en dnum.
! Digital group input (larger than 23 bits)
IF GInputDnum(gi1) = 4294967295 THEN ...
! Digital group output (larger than 23 bits)
IF GOutputDnum(go1) = 4294967295 THEN ...
Les erreurs récupérables suivantes peuvent être générées. Les erreurs peuvent
être gérées dans un gestionnaire d'erreurs. La variable système ERRNO est
paramétrée sur:
ERR_NO_ALIASIO_DEF si la variable de signal est une variable déclarée dans
RAPID. Elle n'a pas été connectée à un signal d'E/S défini dans la configuration
d'E/S à l'aide de l'instruction AliasIO.
ERR_NORUNUNIT en l'absence de contact avec l'unité d'E/S.
ERR_SIG_NOT_VALID si le signal d’E/S est inaccessible (valide uniquement pour
le bus de terrain ICI).

Test des signaux d’entrée ou de sortie

Instruction Utilisée pour définir


WaitDI Attendre jusqu’à ce qu’une entrée numérique soit réglée sur
1 ou sur 0 (réinitialisée)
WaitDO Attendre jusqu’à ce qu’une sortie numérique soit réglée sur 1
ou sur 0 (réinitialisée)
WaitGI Attendre jusqu’à ce qu’un groupe de signaux d’entrée numé-
rique soit réglé sur une valeur
WaitGO Attendre jusqu’à ce qu’un groupe de signaux de sortie numé-
rique soit réglé sur une valeur

Suite page suivante


68 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.9 Signaux d'entrée et de sortie
Suite

Instruction Utilisée pour définir


WaitAI Attendre jusqu’à ce qu’une entrée analogique soit inférieure
ou supérieure à une valeur
WaitAO Attendre jusqu’à ce qu’une sortie analogique soit inférieure ou
supérieure à une valeur

Fonction Utilisée pour définir


TestDI Tester si une entrée logique est définie
ValidIO Signal d'E/S valide pour l'accès
GetSignalOrigin Permet d'obtenir des informations sur l'origine d'un signal d'E/S

Type de données Utilisée pour définir


signalorigin Définir l'origine du signal d'E/S

Valider et invalider des modules d’E/S


Les modules d’E/S sont automatiquement validés au démarrage, mais ils peuvent
être invalidés au cours de l’exécution du programme et être validés de nouveau
par la suite.
Instruction Utilisée pour définir
IODisable Invalider un module d’E/S
IOEnable Valider un module d’E/S

Définir des signaux d’entrée et de sortie

Instruction Utilisée pour définir


AliasIO Définir un signal avec un pseudonyme

Type de données Utilisée pour définir


dionum La valeur symbolique d’un signal numérique
signalai Le nom d’un signal d’entrée analogique
signalao Le nom d’un signal de sortie analogique
signaldi Le nom d’un signal d’entrée numérique
signaldo Le nom d’un signal de sortie numérique
signalgi Le nom d’un groupe de signaux d’entrée numériques
signalgo Le nom d’un groupe de signaux de sortie numériques
signalorigin Définir l'origine du signal d'E/S

Obtenir l’état du réseau et du dispositif d’E/S

Instruction Utilisée pour définir


IOBusState Obtenir l’état actuel du réseau d’E/S

Fonction Utilisée pour définir


IOUnitState Renvoyer l’état actuel du dispositif d’E/S

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 69
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.9 Signaux d'entrée et de sortie
Suite

Type de données Utilisée pour définir


iounit_state L'état du dispositif d’E/S
bustate L'état du réseau d’E/S

Démarrage du réseau d’E/S

Instruction Utilisée pour définir


IOBusStart Démarrer le bus d'E/S.

Lire les informations de signal de groupe numérique

Instruction Utilisée pour définir


GetGroupSignalInfo Lire les informations à propos d'un signal de groupe numérique

70 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.10 Communication

1.10 Communication

Communication via les dispositifs d’E/S et les fichiers


Il existe quatre façons différentes de communiquer via les dispositifs d’E/S et les
fichiers :
• Des messages peuvent être envoyés vers le FlexPendant et l’utilisateur peut
répondre aux questions posées (par exemple, il peut indiquer le nombre de
pièces à traiter).
• Des informations à base de caractères peuvent être écrites ou lues à partir
de fichiers texte dans une mémoire de masse. De cette façon, des statistiques
sur la production, par exemple, peuvent être mises en mémoire et traitées
ultérieurement sur un PC. Les informations peuvent également être imprimées
directement sur une imprimante connectée au robot.
• Des informations binaires peuvent être transférées entre le robot et un
capteur, par exemple.
• Des informations binaires peuvent être transférées entre le robot et un autre
ordinateur, par exemple à l’aide d’un protocole de liaison.

Principes de programmation
La décision d’utiliser des renseignements à base de caractères ou binaires dépend
de la façon dont l’équipement qui communique avec le robot traite ces informations.
Un fichier, par exemple, peut avoir des données stockées sous forme de caractères
ou sous forme binaire.
Si la communication est requise dans les deux sens simultanément, la transmission
binaire est requise.
Chaque dispositif d’E/S ou fichier utilisé doit d’abord être ouvert. Pour cela, le
dispositif/fichier reçoit un descripteur qui est ensuite utilisé comme référence lors
de la lecture/écriture. Le FlexPendant peut être utilisé à tout moment et il n’est pas
nécessaire de l’ouvrir.
Vous pouvez imprimer aussi bien le texte que la valeur de certains types de
données.

Communication à l’aide du TP groupe de fonctions FlexPendant

Instruction Utilisé pour


TPErase Effacer l’écran du FlexPendant
TPWrite Écrire un texte sur l’écran du FlexPendant
ErrWrite Écrire un texte sur l’écran du FlexPendant et enregistrer simul-
tanément le message dans le fichier journal des erreurs de
programme.
TPReadFK Étiqueter les touches de fonction et identifier la touche enfon-
cée
TPReadDnum Lire une valeur numérique à partir du FlexPendant
TPReadNum Lire une valeur numérique à partir du FlexPendant
TPShow Choisir une fenêtre sur le FlexPendant à partir de RAPID

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 71
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.10 Communication
Suite

Instruction Utilisé pour


tpnum Représenter la fenêtre du FlexPendant par une constante sy-
mbolique

Communication à l’aide de l’interface utilisateur de groupe de fonctions du FlexPendant

Instruction Utilisé pour


UIMsgBox Écrire un message sur le FlexPendant
Bouton de lecture du FlexPendant activé
Type de base
UIShow Ouvrir une application sur le FlexPendant à partir de RAPID

Fonction Utilisé pour


UIMessageBox Écrire un message sur le FlexPendant
Bouton de lecture du FlexPendant activé
Type avancé
UIDnumEntry Lire une valeur numérique à partir du FlexPendant
UIDnumTune Régler une valeur numérique à partir du FlexPendant
UINumEntry Lire une valeur numérique à partir du FlexPendant
UINumTune Régler une valeur numérique à partir du FlexPendant
UIAlphaEntry Lire un texte à partir du FlexPendant
UIListView Sélectionner un élément dans une liste sur le FlexPendant
UIClientExist Permet de savoir si le FlexPendant est connecté au système

Type de données Utilisé pour


icondata Représenter une icône par une constante symbolique
buttondata Représenter un bouton par une constante symbolique
listitem Définir les éléments d'une liste de menu
btnres Représenter un bouton sélectionné par une constante symbo-
lique
uishownum Identificateur d’instance pour UIShow

Lecture à partir de ou écriture vers un dispositif d’E/S ou un fichier basé sur des caractères

Instruction Utilisé pour


Open Ouvrir un canal/fichier à des fins de lecture ou d’écriture
Write Écrire un texte sur le canal/fichier
Close Fermer le canal/fichier

Fonction Utilisé pour


ReadNum Lire une valeur numérique
ReadStr Lire une chaîne de texte

Suite page suivante


72 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.10 Communication
Suite

Communication à l’aide de dispositifs d’E/S ou de fichiers

Instruction Utilisé pour


Open Ouvrir un dispositif d’E/S ou un fichier pour le transfert binaire
de données
WriteBin Écrire sur un dispositif d’E/S ou un fichier binaire
WriteAnyBin Écrire sur n'importe quel dispositif d’E/S ou fichier binaire
WriteStrBin Écrire une chaîne sur un dispositif d’E/S ou un fichier binaire
Rewind Régler la position du fichier au début du fichier
Close Fermer le dispositif d’E/S ou le fichier
ClearIOBuff Effacer la mémoire tampon d’un dispositif d’E/S ou d’un fichier
binaire
ReadAnyBin Lire depuis n'importe quel dispositif d’E/S ou fichier binaire
WriteRawBytes Écrire des données de type rawbytes sur un dispositif d’E/S
ou un fichier binaire
ReadRawBytes Lire des données de type rawbytes depuis un dispositif d’E/S
ou un fichier binaire

Fonction Utilisé pour


ReadBin Lire depuis un dispositif d’E/S ou fichier binaire
ReadStrBin Lire une chaîne depuis un dispositif d’E/S ou un fichier binaire

Communication à l'aide de rawbytes


Les instructions et fonctions ci-dessous permettent de prendre en charge les
instructions de communication WriteRawBytes et ReadRawBytes.

Instruction Utilisé pour


ClearRawBytes Paramétrer une variable rawbytes sur zéro
CopyRawBytes Copier des données d’une variable rawbytes vers une autre
PackRawBytes Stocker les éléments d’une variable dans un conteneur de type
rawbytes
UnPackRawBytes Extraire les éléments d’un conteneur de type rawbytes vers
une variable
PackDNHeader Stocker l’entête d’un message DeviceNet dans un conteneur
de rawbytes

Fonction Utilisé pour


RawBytesLen Obtenir la longueur actuelle du nombre d’octets valides d’une
variable rawbyte

Données pour dispositifs d’E/S ou fichiers

Type de données Utilisée pour définir


iodev Référence à un dispositif d’E/S ou un fichier, qui pourra ensuite
être utilisée pour la lecture et l’écriture
rawbytes Conteneur de données générales destiné à la communication
avec les dispositifs d'E/S

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 73
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.10 Communication
Suite

Communication à l'aide de sockets

Instruction Utilisé pour


SocketCreate Création d'un socket
SocketConnect Se connecter à un ordinateur distant (applications client uni-
quement)
SocketSend Envoyer des données à un ordinateur distant
SocketSendTo Envoyer des données à un ordinateur distant
SocketReceive Recevoir des données d'un ordinateur distant
SocketReceiveFrom Recevoir des données d'un ordinateur distant
SocketClose Fermer le socket
SocketBind Associer un socket à un port (applications serveur uniquement)
SocketListen Détecter des connexions (applications serveur uniquement)
SocketAccept Accepter des connexions (applications serveur uniquement)

Fonction Utilisé pour


SocketGetStatus Obtenir l'état de socket en cours
SocketPeek Test de présence de données sur un socket

Type de données Utilisée pour définir


socketdev Dispositif de socket
socketstatus État de socket

Communication à l'aide de files d’attente de messages RAPID

Type de données Utilisée pour définir


rmqheader i Le rmqheader fait partie du type de données rmqmessage et
est utilisé pour décrire le message
rmqmessage Conteneur de données générales utilisé lors de la communica-
tion avec la fonctionnalité de file d’attente de messages RAPID
rmqslot Numéro d’identité d’une tâche RAPID ou d’un client SDK
IRMQMessage Commander et activer des interruptions pour un type de don-
nées spécifique
RMQFindSlot Trouver le numéro d’identité de la file d’attente configurée pour
une tâche RAPID ou un client SDK
RMQGetMessage Obtenir le premier message de la file d’attente de cette tâche
RMQGetMsgData Extraire les données d’un message
RMQGetMsgHeader Extraire les informations d’en-tête d’un message
RMQSendMessage Envoyer les données vers la file d'attente configurée pour une
tâche RAPID ou un client SDK
RMQSendWait Envoyer un message et attendre la réponse
RMQEmptyQueue Vider le RMQ connecté à l'instruction d'exécution de tâche.

Suite page suivante


74 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.10 Communication
Suite

Type de données Utilisée pour définir


RMQReadWait Attendre qu'un message arrive ou qu'un délai expiration soit
atteint.
i Uniquement si le robot est équipé d'au moins une des options FlexPendant Interface, PC Interface,
or Multitasking.

Fonction Utilisé pour


RMQGetSlotName i Obtenir le nom d’une file d’attente de messages RAPID à partir
d’un numéro d’identité donné, c’est-à-dire à partir d’un rmqslot
donné
i Uniquement si le robot est équipé d'au moins une des options FlexPendant Interface, PC Interface,
or Multitasking.

Manuel de référence technique - Vue d’ensemble de RAPID 75


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.11 Interruptions

1.11 Interruptions

Introduction
Les interruptions sont des événements définis par le programme, identifiés par
des numéros d’interruption. Une interruption a lieu lorsqu’une condition
d’interruption est vérifiée. Contrairement aux erreurs, l’apparition d’une interruption
n’est pas directement liée (synchrone avec) à une position de code spécifique.
L’apparition d’une interruption provoque la suspension de l’exécution normale du
programme et le contrôle est transféré vers une routine d'interruption.
Bien que le robot reconnaisse immédiatement l’apparition d’une interruption
(uniquement retardée par la vitesse du matériel), sa réponse – c’est-à-dire appeler
la routine d’interruption correspondante – peut uniquement avoir lieu en des
endroits spécifiques du programme, à savoir :
• lorsque l’instruction suivante est introduite,
• à n’importe quel moment lors de l’exécution d’une instruction d’attente, par
exemple, WaitUntil,
• à n’importe quel moment lors de l’exécution d’une instruction d’attente, par
exemple, MoveL.
Ceci génère normalement un délai de 2-30 ms entre l’identification d’une interruption
et la réponse, selon le type de mouvement effectué au moment de l’interruption.
Le déclenchement des interruptions peut être invalidé et validé. Si des interruptions
sont invalidées, toute interruption qui a lieu est mise en file d’attente et ne sera
pas déclenchée, jusqu’à ce que les interruptions soient à nouveau validées. Notez
que la file d’attente des interruptions peut contenir plusieurs interruptions en
attente. Les interruptions mises en file d’attente sont déclenchées selon le système
FIFO (première entrée, première sortie). Les interruptions sont toujours invalidées
pendant l’exécution d’une routine d’interruption.
Pendant une exécution pas à pas et en cas d’arrêt du programme, aucune
interruption ne sera traitée. Les interruptions de la file d'attente à l'arrêt sont
éliminées, et aucune interruption générée pendant un arrêt n'est traitée, à
l'exception des interruption de sécurité (voir Interruption de sécurité à la page 78).
Le nombre maximum d'interruptions se produisant au même moment s'élève à
100 par tâche de programme.

Principes de programmation
Chaque interruption reçoit une identité d’interruption. Elle obtient cette identité en
créant une variable (de type de données intnum) et en la connectant à une routine
d’interruption.
L’identité d’interruption (variable) est ensuite utilisée pour commander une
interruption, c’est-à-dire spécifier la raison de l’interruption. Il pourra s’agir d’un
des événements suivants :
• Une entrée ou une sortie est réglée sur 1 ou sur 0.
• Un certain temps s’écoule après la commande d’une interruption.
• Une position précise est atteinte.

Suite page suivante


76 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.11 Interruptions
Suite

Lorsqu’une interruption est commandée, elle est également automatiquement


validée, mais elle peut être temporairement invalidée. Ceci peut se faire de deux
façons :
• Toutes les interruptions peuvent être invalidées. Toutes les interruptions qui
ont lieu pendant ce temps seront placées dans une file d’attente puis
automatiquement générées lorsque les interruptions sont à nouveau validées.
• Des interruptions individuelles peuvent être désactivées. Toutes les
interruptions qui ont lieu pendant ce temps sont ignorées.

Connexion d’interruptions à des routines d’interruption

Instruction Utilisé pour


CONNECT Connecter une variable (identité d’interruption) à une routine
d’interruption

Commander des interruptions

Instruction Permet de commander


ISignalDI Interruption à partir d’un signal d’entrée numérique
ISignalDO Interruption à partir d’un signal de sortie numérique
ISignalGI Interruption à partir d’un groupe de signaux d’entrée numé-
riques
ISignalGO Interruption à partir d’un groupe de signaux de sortie numé-
riques
ISignalAI Interruption à partir d’un signal d’entrée analogique
ISignalAO Interruption à partir d’un signal de sortie analogique
ITimer Interruption chronométrée
TriggInt Interruption à position fixe (à partir de la liste de sélection de
déplacement)
IPers Interruption survenue lors de la modification d'une valeur per-
sistante.
IError Commander et valider une interruption quand une erreur se
produit
IRMQMessage i Interruption lorsqu’un type de données spécifique est reçu par
la file d'attente de messages RAPID.
i Uniquement si le robot est équipé d'au moins une des options FlexPendant Interface, PC Interface,
or Multitasking.

Annuler des interruptions

Instruction Utilisé pour


IDelete Annuler (supprimer) une interruption

Valider/invalider des interruptions

Instruction Utilisé pour


ISleep Désactiver une interruption individuelle
IWatch Activer une interruption individuelle

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 77
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.11 Interruptions
Suite

Instruction Utilisé pour


IDisable Invalider toutes les interruptions
IEnable Valider toutes les interruptions

Données d’interruption

Instruction Utilisé pour


GetTrapData Obtention des données d'interruption de la routine TRAP ac-
tuelle
ReadErrData Obtenir des informations relatives à une erreur

Type de données d’interruptions

Type de données Utilisé pour


intnum Définir l’identité d’une interruption.
trapdata Contenir les données d’interruption ayant provoqué l’exécution
de la routine TRAP.
errtype Spécifier un type d’erreur (gravité)
errdomain Commander et valider une interruption quand une erreur se
produit.
errdomain Spécifier un domaine d’erreur.

Interruption de sécurité
Certaines instructions (par exemple ITimer et ISignalDI) peuvent être utilisées
avec la fonction d'interruption de sécurité. Les interruptions de sécurité sont des
interruptions qui sont mises en file d'attente si elles se produisent pendant un arrêt
ou une exécution pas à pas. Les interruptions mises en file d'attente seront traitées
dès que l'exécution continue est démarrée, selon le système FIFO (première entrée,
première sortie). Les interruptions mises en file d'attente à l'arrêt sont également
traitées. L'instruction ISleep ne peut pas être utilisée avec les interruptions de
sécurité.

Traitement des interruptions


Le fait de définir une interruption permet de la porter à la connaissance du système.
La définition spécifie la condition de l’interruption, et active et permet l’interruption.
Exemple :
VAR intnum sig1int;
ISignalDI di1, high, sig1int;
Une interruption activée peut ensuite être désactivée (et vice versa).
Quand un type d’interruption est désactivé, la routine d’interruption correspondante
n’est pas exécutée si une interruption de ce type est générée.
Exemple :
! deactivate
ISleep sig1int;

! activate

Suite page suivante


78 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.11 Interruptions
Suite

IWatch sig1int;
Une interruption autorisée peut ensuite être désactivée (et vice versa).
Quand un type d’interruption est inhibé, si une interruption de ce type est générée,
elle est mise dans une file d’attente et traitée dès qu’elle est de nouveau autorisée.
Exemple :
! disable
IDisable sig1int;

1 enable
IEnable sig1int;
Le fait de supprimer une interruption supprime sa définition. Il n’est pas nécessaire
de supprimer explicitement la définition d’une interruption, mais une nouvelle
interruption ne peut pas être définie selon une variable d’interruption jusqu’à ce
que la définition précédente ait été supprimée.
Exemple :
IDelete sig1int;

Routines d'interruption
Les routines d’interruption permettent de gérer les interruptions. Une routine
d’interruption peut être associée à une interruption spécifique à l’aide de l’instruction
CONNECT. Lorsqu’une interruption a lieu, le contrôle est immédiatement transféré
à la routine d’interruption correspondante (s’il y en a une). Si une interruption a
lieu et qu’elle ne dispose pas de routine d’interruption à laquelle se connecter, il
s’agira alors d’une erreur fatale, c’est-à-dire qui met fin immédiatement à l’exécution
du programme.
Exemple :
VAR intnum empty;
VAR intnum full;
PROC main()
! Connect trap routines
CONNECT empty WITH etrap;
CONNECT full WITH ftrap;
! Define feeder interrupts
ISignalDI di1, high, empty;
ISignalDI di3, high, full;
...
! Delete interrupts
IDelete empty;
IDelete full;
ENDPROC
! Responds to “feeder empty” interrupt
TRAP etrap
open_valve;
RETURN;
ENDTRAP
! Responds to “feeder full” interrupt
TRAP ftrap
close_valve;

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 79
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.11 Interruptions
Suite

RETURN;
ENDTRAP
Plusieurs interruptions peuvent être connectées à la même routine d’interruption.
La variable système INTNO contient le numéro d’interruption et peut être utilisée
par une routine d’interruption afin d’identifier une interruption. Une fois les mesures
nécessaires prises, vous pouvez mettre fin à une routine d’interruption à l’aide de
l’instruction RETURN ou lorsque la fin de la routine d’interruption (ENDTRAP ou
ERROR) est atteinte. L’exécution continue à partir du point où l’interruption a eu
lieu.

80 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.12 Récupération d'erreur

1.12 Récupération d'erreur

Introduction
Plusieurs des erreurs qui se produisent lors de l’exécution d’un programme peuvent
être traitées au sein du programme même, ce qui signifie qu’il n'est pas nécessaire
d’interrompre l’exécution du programme. Ces erreurs sont du type détecté par le
système (par exemple, une division par zéro) ou du type généré par le programme
(par exemple, un programme générant une erreur lorsqu’une valeur incorrecte est
lue par un lecteur de code à barres).
Une erreur d’exécution est une situation anormale, liée à l’exécution d’une partie
spécifique d’une tâche de programme. Une erreur rend impossible (ou au moins
dangereuse) la poursuite de toute exécution. Le Dépassement de capacité et la
division par zéro sont des exemples d’erreurs.

Numéros d'erreur
Les erreurs sont identifiées par leur numéro d'erreur unique et sont toujours
reconnues par le système. L’apparition d’une erreur provoque l’arrêt de l’exécution
normale du programme, et le contrôle est transféré au gestionnaire d’erreurs. Le
concept des gestionnaires d’erreurs fait qu’il est possible de répondre et,
probablement, de reprendre après des erreurs qui surviennent en cours d’exécution
du programme. S’il s’avère impossible de poursuivre l’exécution, le gestionnaire
d’erreurs pourra au moins garantir un abandon en toute sécurité.

Principes de programmation
Lorsqu’une erreur se produit, le gestionnaire d’erreurs de la routine est appelé (le
cas échéant). Il est également possible de générer une erreur à partir du programme
même, puis de passer au gestionnaire d’erreurs.
Dans le gestionnaire d’erreurs, les erreurs peuvent être traitées à l’aide
d’instructions normales. Le paramètre ERRNO des données du système peut être
utilisé pour déterminer le type d’erreur survenue. Un retour au gestionnaire d’erreurs
pourra alors se faire de diverses façons (RETURN, RETRY, TRYNEXT et RAISE).
Si la routine en cours n’a pas de gestionnaire d’erreurs, le gestionnaire d’erreurs
interne du robot prend directement le contrôle. Le gestionnaire d’erreurs interne
émet un message d’erreur et arrête l’exécution du programme en positionnant le
pointeur de programme sur l’instruction à l’origine de l’erreur.

Créer une situation d’erreur à partir de l'instruction de programme

Instruction Utilisé pour


RAISE Créer une erreur et appeler le gestionnaire d’erreurs

Instruction utilisée pour réserver un numéro d’erreur

Instruction Utilisé pour


BookErrNo Réserver un nouveau numéro d’erreur du système RAPID.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 81
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.12 Récupération d'erreur
Suite

Redémarrer le gestionnaire d’erreurs/sortir du gestionnaire d’erreurs

Instruction Utilisé pour


EXIT Arrêter l’exécution du programme en cas d’erreur fatale
RAISE Appeler la routine du gestionnaire d’erreurs du programme qui
a appelé le programme en cours
RETRY Réexécuter l’instruction à l’origine de l’erreur
TRYNEXT Exécuter l’instruction qui suit l'instruction à l'origine de l’erreur
RETURN Retourner à la routine qui a appelé la routine en cours
RaiseToUser À partir d’une routine NOSTEPIN, l’erreur est générée vers le
gestionnaire d’erreurs au niveau utilisateur.
StartMoveRetry Instruction qui remplace les deux instructions StartMove et
RETRY. La reprise des déplacements et la réexécution de
l’instruction à l’origine de l’erreur sont effectuées.
SkipWarn Ignorer le dernier message d’avertissement demandé.
ResetRetryCount Réinitialiser le dompte de nouvelles tentatives.

Fonction Utilisé pour


RemainingRetries Nombre de nouvelles tentatives qu’il est encore possible d’ef-
fectuer.

Générer une erreur de processus

Instruction Utilisé pour


ErrLog Afficher un message d’erreur sur le FlexPendant et l'écrire
dans le journal des messages du robot.
ErrRaise Générer une erreur dans le programme, puis le gestionnaire
d'erreurs de la routine.

Fonction Utilisé pour


ProcerrRecovery Générer une erreur de processus lorsque le robot se déplace.

Données pour le traitement des erreurs

Type de données Utilisé pour


errnum Raison de l’erreur
errstr Texte d'un message d'erreur

Configuration du traitement des erreurs

Paramètre système Utilisée pour définir


No Of Retry Nombre de tentatives d’exécution d’une instruction en échec
si le gestionnaire d’erreurs utilise RETRY. No Of Retry appartient
au type System Misc de la rubrique Controller.

Suite page suivante


82 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.12 Récupération d'erreur
Suite

Gestionnaires d'erreurs
Toute routine est susceptible de comprendre un gestionnaire d’erreurs. Le
gestionnaire d’erreurs fait en réalité partie de la routine et le domaine de toutes
données de routines comprend également le gestionnaire d’erreurs de la routine.
Si une erreur survient en cours d’exécution de la routine, le contrôle est transféré
au gestionnaire d’erreurs.
Exemple :
FUNC num safediv( num x, num y)
RETURN x / y;
ERROR
IF ERRNO = ERR_DIVZERO THEN
TPWrite "The number cannot be equal to 0";
RETURN x;
ENDIF
ENDFUNC
La variable système ERRNO contient le numéro de l’erreur (la plus récente) et peut
être utilisée par le gestionnaire d’erreurs pour identifier l’erreur en question. Une
fois les mesures nécessaires prises, le gestionnaire d’erreurs peut:
• Reprendre l’exécution, à partir de l’instruction au sein de laquelle l’erreur a
eu lieu. Cette opération s’effectue à l’aide de l’instruction RETRY. Si cette
instruction génère à nouveau la même erreur, jusqu’à quatre reprises après
erreur ont lieu ; l’exécution prend ensuite fin. Pour pouvoir effectuer plus de
quatre tentatives, vous devez configurer le paramètre système No Of Retry,
voir Manuel de référence technique - Paramètres système.
• Redémarrer l’exécution, en commençant par l’instruction suivant celle où
s’est produite l’erreur. Cette opération s’effectue à l’aide de l’instruction
TRYNEXT.
• Retransférer le contrôle à la routine appelante à l’aide de l’instruction RETURN.
Si la routine est une fonction, l’instruction RETURN doit spécifier une valeur
de retour appropriée.
• Transmettre l’erreur à la routine appelante à l’aide de l’instruction RAISE.

Gestionnaire d’erreurs du système


Si une erreur a lieu dans une routine qui ne comporte pas de gestionnaire d’erreurs
ou lorsque la routine atteint la fin du gestionnaire d’erreurs (ENDFUNC, ENDPROC
ou ENDTRAP), le gestionnaire d’erreurs du système est appelé. Le gestionnaire
d’erreurs du système signale l’erreur et interrompt l’exécution.
Dans une chaîne d’appels de routine, chaque routine peut avoir son propre
gestionnaire d’erreurs. Si une erreur a lieu dans une routine qui comporte un
gestionnaire d’erreurs et que l’erreur est explicitement transmise à l’aide de
l’instruction RAISE, la même erreur est à nouveau générée à l’endroit où la routine
a été appelée - l’erreur est transmise. Si le haut de la chaîne d’appels (la routine
d’entrée de la tâche) est atteint sans que l’on ait trouvé un gestionnaire d’erreurs,
ou si la fin d’un gestionnaire d’erreurs quelconque est atteinte à l’intérieur de la
chaîne d’appels, le gestionnaire d’erreurs du système est alors appelé. Le
gestionnaire d’erreurs du système signale l’erreur et interrompt l’exécution. Comme

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 83
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.12 Récupération d'erreur
Suite

les routines d’interruption ne peuvent être appelées que par le système (en réponse
à une interruption), la transmission d’une erreur à partir d’une routine d’interruption
est effectuée par le gestionnaire d’erreurs du système.
La reprise après erreur n’est pas possible pour les instructions qui se trouvent
dans le gestionnaire d'instruction arrière. Ces erreurs sont toujours transmises au
gestionnaire d’erreurs du système.
Il n’est pas possible de répondre ou de reprendre après des erreurs qui se
produisent au sein d’un gestionnaire d’erreurs. Ces erreurs sont toujours transmises
au gestionnaire d’erreurs du système.

Erreurs générées par le programme


Outre les erreurs détectées et générées par le robot, un programme pourra générer
explicitement des erreurs à l’aide de l’instruction RAISE. Cette fonction peut être
utilisée pour résoudre des problèmes complexes. Elle peut, par exemple, être
utilisée pour sortir de positions de code fortement imbriquées. Les numéros d’erreur
1 à 90 peuvent être utilisés dans l’instruction RAISE. Les erreurs générées
explicitement sont traitées comme celles générées par le système.

Le journal des événements


Les erreurs gérées par un gestionnaire d’erreurs entraînent l’écriture d’un
avertissement dans le journal des événements. En consultant le journal des
événements, il est possible de suivre les erreurs qui se sont produites.
Si une erreur doit être gérée sans qu’un avertissement soit écrit dans le journal
des événements, utilisez l’instruction SkipWarn dans le gestionnaire d’erreurs.
Cette opération peut s’avérer utile lorsque vous utilisez le gestionnaire d’erreurs
pour un test (par exemple, pour tester l’existence d’un fichier) sans laisser pour
autant de trace de suivi si le test échoue.

84 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.13 UNDO

1.13 UNDO

Introduction
Les routines RAPID peuvent contenir un gestionnaire UNDO Le gestionnaire est
exécuté automatiquement si le pointeur de programme est déplacé hors de la
routine. Ceci sert à éliminer les effets qui subsistent quand les routines sont
exécutées partiellement, par exemple pour annuler des instructions modales
(ouverture d'un fichier, etc.). La plupart des éléments du langage RAPID peuvent
être utilisés dans un gestionnaire UNDO mais font l'objet de limitations (par exemple,
les instructions de mouvement).

Terminologie
Les termes suivants sont associés à UNDO.
• UNDO : exécution du code de nettoyage avant que le programme soit
réinitialisé.
• Gestionnaire UNDO : composant en option d'une procédure ou d'une fonction
RAPID contenant le code RAPID qui fait l'objet d'une exécution UNDO.
• Routine UNDO : procédure ou fonction dotée d'un gestionnaire UNDO.
• Chaîne d'appels : toutes les procédures ou fonctions associées les unes aux
autres par le biais d'appels de routine qui ne sont pas encore terminés. Est
censée démarrer dans la routine Main si aucun autre élément n'est spécifié.
• Contexte UNDO : lorsque la routine actuelle fait partie d’une chaîne d’appels
démarrant dans un gestionnaire UNDO.

Quand utiliser UNDO


L’exécution d’une routine RAPID peut être abandonnée à tout moment en déplaçant
le pointeur de programme hors de cette routine. Dans certains cas, si le programme
exécute des routines sensibles, il ne convient pas d’en abandonner l’exécution.
Grâce à UNDO, il est possible de protéger les routines sensibles contre toute
réinitialisation inattendue du programme. UNDO permet d’exécuter
automatiquement un code spécifique si la routine est annulée. En général, ce code
doit effectuer des opérations de nettoyage, par exemple fermer un fichier.

Comportement détaillé de UNDO


Lorsque UNDO est activé, tous les gestionnaires UNDO de la chaîne d’appels
actuelle sont exécutés. Ces gestionnaires sont des composants en option d’une
procédure ou d’une fonction RAPID contenant un code RAPID. Sont considérés
comme gestionnaires UNDO actifs ceux qui appartiennent aux procédures ou aux
fonctions appelées, mais dont l’exécution n’a pas encore été interrompue, à savoir
les routines de la chaîne d’appels actuelle.
UNDO est activé lorsque le pointeur du programme effectue un mouvement
inattendu hors d'une routine UNDO (par exemple, si l'utilisateur déplace le pointeur
de programme vers le menu Main). UNDO est également démarré si une instruction
EXIT, provoquant la réinitialisation du programme, est exécutée, ou si le programme
est réinitialisé pour toute autre raison ; par exemple, lors de la modification de
certains éléments de configuration, ou si programme ou le module est supprimé.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 85
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.13 UNDO
Suite

Toutefois, UNDO n’est pas démarré si le programme parvient à la fin de la routine


ou d’une instruction RETURN, et qu’il renvoie comme d’habitude des données de
cette routine.
Si la chaîne d’appels se compose de plusieurs routines UNDO, les gestionnaires
UNDO correspondants sont traités dans l’ordre de renvoi des données des routines
(de bas en haut). Les gestionnaires UNDO les plus proches de la fin de la chaîne
d’appels s’exécutent en premier, et celui le plus proche du menu Main, en dernier.

Limitations
Un gestionnaire UNDO peut accéder à toute variable ou à tout symbole accessible
depuis le corps d’une routine normale, y compris les variables déclarées localement.
Toutefois, les codes RAPID à exécuter dans un contexte UNDO font l’objet de
limitations.
Un gestionnaire UNDO doit contenir une instruction STOP, BREAK, RAISE ou
RETURN. Si vous tentez d’utiliser l’une de ces instructions dans un contexte UNDO,
elle est ignorée et un avertissement ELOG généré.
Les instructions de mouvement (par exemple MoveL) ne sont pas non plus
autorisées dans un contexte UNDO.
L’exécution est permanente dans UNDO. Il est impossible de procéder pas à pas.
Lorsque UNDO démarre, le mode d’exécution est paramétré de manière à ce que
l’exécution soit automatiquement permanente. Une fois la session UNDO terminée,
l’ancien mode d’exécution est restauré.
Si le programme est arrêté lors de l’exécution d’un gestionnaire UNDO, les autres
composants de ce dernier ne sont pas exécutés. Si la chaîne d’appels inclut d’autres
gestionnaires UNDO qui n’ont pas encore été exécutés, ils ne sont pas pris en
compte non plus. Cela entraîne la génération d’un avertissement ELOG. et implique
l’arrêt du programme en raison d’une erreur d’exécution.
Le pointeur du programme n’apparaît dans aucun gestionnaire UNDO. Lorsque
UNDO s’exécute, le pointeur du programme conserve son ancienne position, mais
est mis à jour quand l’exécution du/des gestionnaire(s) UNDO s’achève.
Une instruction EXIT annule l’exécution de UNDO de la même manière qu’une
erreur d’exécution ou qu’une instruction Stop. Les autres gestionnaires UNDO
sont ignorés et le pointeur du programme est déplacé vers le menu Main.

Exemple
Le programme :
PROC B
TPWrite "In Routine B";
Exit;
UNDO
TPWrite "In UNDO of routine B";
ENDPROC

PROC A
TPWrite "In Routine A";
B;

Suite page suivante


86 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.13 UNDO
Suite

ENDPROC

PROC main
TPWrite "In main";
A;
UNDO
TPWrite "In UNDO of main";
ENDPROC
La sortie :
In main
In Routine A
In Routine B
In UNDO of routine B
In UNDO of main

xx1100000588

Manuel de référence technique - Vue d’ensemble de RAPID 87


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.14 Système & temps

1.14 Système & temps

Description
Les instructions relatives au système et au temps permettent à l’utilisateur de
mesurer, d’inspecter et d’enregistrer le temps.

Principes de programmation
Les instructions horloge permettent à l’utilisateur d’utiliser des horloges qui
fonctionnent en tant que chronomètres. Ainsi, le programme du robot peut être
utilisé pour mesurer la durée d’un événement souhaité.
L’heure ou la date actuelle peut être reprise sous forme de chaîne. Cette chaîne
peut ensuite être affichée sur l’écran du FlexPendant ou utilisée pour horodater
les dossiers d’archives.
Il est également possible de récupérer des composants du temps du système
actuel sous forme de valeur numérique. Ceci permet au programme du robot
d’effectuer une action à un certain moment ou un certain jour de la semaine.

Utiliser une horloge pour chronométrer un événement

Instruction Utilisé pour


ClkReset Réinitialiser une horloge utilisée pour la mesure du temps
ClkStart Démarrer une horloge utilisée pour la mesure du temps
ClkStop Arrêter une horloge utilisée pour la mesure du temps

Fonction Utilisé pour


ClkRead Lire une horloge utilisée pour la mesure du temps

Type de données Utilisé pour


clock Mesure du temps – stocke une mesure du temps en secondes

Lire l’heure et la date actuelle

Fonction Utilisé pour


CDate Lire la date actuelle sous forme de chaîne de caractères
CTime Lire l'heure actuelle sous forme de chaîne de caractères
GetTime Lire l'heure actuelle sous forme de valeur numérique

Extraire des données de temps d’un fichier

Fonction Utilisé pour


FileTimeDnum Extraire la dernière heure de modification d’un fichier.
ModTimeDnum Obtenir l’heure de modification du fichier pour le module
chargé.
ModExist Vérifier si le module de programme existe.

Suite page suivante


88 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.14 Système & temps
Suite

Obtenir la taille de la mémoire libre du programme

Fonction Utilisé pour


ProgMemFree Obtenir la taille de la mémoire libre du programme.

Manuel de référence technique - Vue d’ensemble de RAPID 89


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.15 Mathématique

1.15 Mathématique

Description
Des instructions et des fonctions mathématiques sont utilisées pour calculer et
modifier la valeur des données.

Principes de programmation
Les calculs sont normalement effectués à l'aide de l'instruction d'affectation ; par
exemple, reg1:= reg2 + reg3 / 5. Il existe également des instructions pour
les calculs simples, par exemple pour la suppression d’une variable numérique.

Calculs simples sur des variables numériques

Instruction Utilisé pour


Clear Effacer la valeur
Add Ajouter ou soustraire une valeur
Incr Incrémenter de 1
Decr Décrémenter de 1
Rand Générer un nombre aléatoire

Calculs plus complexes

Instruction Utilisé pour


:= Effectuer des calculs sur n’importe quel type de données.

Fonctions arithmétiques

Fonction Utilisé pour


Abs Calculer la valeur absolue
AbsDnum Calculer la valeur absolue
Round Arrondir une valeur numérique
RoundDnum Arrondir une valeur numérique
Trunc Tronquer une valeur numérique
TruncDnum Tronquer une valeur numérique
Max Renvoie la plus grande des deux valeurs.
Min Renvoie la plus petite des deux valeurs.
Sqrt Calculer la racine carrée
SqrtDnum Calculer la racine carrée
Exp Calculer la valeur exponentielle avec la base « e »
Pow Calculer la valeur exponentielle avec une base arbitraire
PowDnum Calculer la valeur exponentielle avec une base arbitraire
ACos Calculer la valeur de arc cosinus
ACosDnum Calculer la valeur de arc cosinus

Suite page suivante


90 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.15 Mathématique
Suite

Fonction Utilisé pour


ASin Calculer la valeur de arc sinus
ASinDnum Calculer la valeur de arc sinus
ATan Calculer la valeur de arc tangente dans la plage [-90,90]
ATanDnum Calculer la valeur de arc tangente dans la plage [-90,90]
ATan2 Calculer la valeur de arc tangente dans la plage [-180,180]
ATan2Dnum Calculer la valeur de arc tangente dans la plage [-180,180]
Cos Calculer la valeur de cosinus
CosDnum Calculer la valeur de cosinus
Sin Calculer la valeur de sinus
SinDnum Calculer la valeur de sinus
Tan Calculer la valeur de tangente
TanDnum Calculer la valeur de tangente
EulerZYX Calculer les angles d’Euler à partir d’une orientation
OrientZYX Calculer l’orientation à partir des angles d’Euler
PoseInv Inverser une position
PoseMult Multiplier une position
PoseVect Multiplier une position et un vecteur
VectMagn Calculer l’amplitude d’un vecteur pos
DotProd Calculer le produit scalaire de deux vecteurs pos
CrossProd Calculer le produit vectoriel de deux vecteurs pos
NOrient Normaliser une orientation non normalisée (quaternion)

Fonctions sur les chaînes de caractères de chiffres

Fonction Utilisé pour


StrDigCmp Comparaison numérique de deux chaînes de caractères ne
comportant que des chiffres
StrDigCalc Opérations arithmétiques sur deux chaînes de caractères ne
comportant que des chiffres

Type de données Utilisé pour


stringdig Chaîne de caractères ne comportant que des chiffres

Fonctions de bit

Instruction Utilisé pour


BitClear Effacer un bit spécifique dans des données byte ou dnum dé-
finies.
BitSet Régler un bit spécifique dans des données byte ou dnum défi-
nies.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 91
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.15 Mathématique
Suite

Fonction Utilisé pour


BitCheck Vérifier si un bit spécifique dans des données byte définies
est réglé sur 1.
BitCheckDnum Vérifier si un bit spécifique dans des données dnum définies
est réglé sur 1.
BitAnd Exécuter une opération logique de manipulation de bit AND
sur les types de données byte.
BitAndDnum Exécuter une opération logique de manipulation de bit AND
sur les types de données dnum.
BitNeg Exécuter une opération logique de manipulation de bit NEGA-
TION sur les types de données byte.
BitNegDnum Exécuter une opération logique de manipulation de bit NEGA-
TION sur les types de données dnum.
BitOr Exécuter une opération logique de manipulation de bit OR sur
les types de données byte.
BitOrDnum Exécuter une opération logique de manipulation de bit OR sur
les types de données dnum.
BitXOr Exécuter une opération logique de manipulation de bit XOR
sur les types de données byte.
BitXOrDnum Exécuter une opération logique de manipulation de bit XOR
sur les types de données dnum.
BitLSh Exécuter une opération logique de manipulation de bit LEFT
SHIFT sur les types de données byte.
BitLShDnum Exécuter une opération logique de manipulation de bit LEFT
SHIFT sur les types de données dnum.
BitRSh Exécuter une opération logique de manipulation de bit RIGHT
SHIFT sur les types de données byte.
BitRShDnum Exécuter une opération logique de manipulation de bit RIGHT
SHIFT sur les types de données dnum.

Type de données Utilisé pour


byte Utilisé en association avec des instructions et des fonctions
qui prennent en charge la manipulation de bit (8 bits).
dnum Utilisé en association avec des instructions et des fonctions
qui prennent en charge la manipulation de bit (52 bits).

Fonctions de la matrice

Instruction Utilisé pour


MatrixSolve Résoudre des systèmes d'équations linéaires selon la forme
A*x=b.
MatrixSolveQR Calculer une factorisation QR d'une matrice A (m x n).
MatrixSVD Calculer la décomposition en valeurs singulières (SVD).

92 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.16 Fonctions d’opération de fichier

1.16 Fonctions d’opération de fichier

Instructions

Instruction Utilisé pour


MakeDir Crée un répertoire.
RemoveDir Supprimer un répertoire.
OpenDir Ouvrir un répertoire pour investigation ultérieure.
CloseDir Fermer un répertoire de même niveau que OpenDir.
RemoveFile Supprimer un fichier.
RenameFile Renommer un fichier.
CopyFile Copier un fichier.

Fonctions

Fonction Utilisé pour


ISFile Vérifie le type d'un fichier.
FSSize Obtenir la taille d'un système de fichiers.
FileSize Obtenir la taille d'un fichier spécifique.
ReadDir Lire l'entrée suivante dans un répertoire.

Types de données

Type de données Utilisé pour


dir Traverser la structure de répertoires.

Manuel de référence technique - Vue d’ensemble de RAPID 93


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.17 Instructions d’aide à la programmation RAPID

1.17 Instructions d’aide à la programmation RAPID

Description
Différentes fonctions pour l’aide à la programmation du langage RAPID :
• Obtenir des données système
• Lire des données de configuration
• Écrire des données de configuration
• Redémarrer le système de commande
• Tester des données système
• Obtenir un nom d’objet
• Obtenir un nom de tâche
• Rechercher des symboles
• Obtenir le type d’événement en cours, le gestionnaire d'exécution ou le
niveau d'exécution
• Lire les informations d'entretien

Obtenir des données système


Instruction pour aller chercher la valeur et (en option) le nom du symbole pour les
données actuelles du système du type indiqué.
Instruction Utilisé pour
GetSysData Obtenir les données relatives à l’outil ou à l'objet de travail
actif, ainsi que son nom.
ResetPPMoved Réinitialiser l’état pour le pointeur du programme déplacé en
mode manuel.
SetSysData Activer un nom de donnée système spécifique pour un type
de données spécifique.

Fonction Utilisé pour


IsSysID Tester l’identité du système.
IsStopStateEvent Obtenir des informations concernant le mouvement du pointeur
de programme (PP).
PPMovedInManMode Tester si le pointeur du programme déplacé en mode manuel.
RobOS Contrôler si l’exécution s’effectue sur le contrôleur du robot
(RC) ou sur le contrôleur virtuel (VC).

Obtenir des informations concernant le système


Fonction permettant d’obtenir des informations sur le numéro de série, la version
du logiciel, le type du robot, l'adresse IP LAN ou la langue du contrôleur.
Fonction Utilisé pour
GetSysInfo Obtenir des informations concernant le système.

Suite page suivante


94 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.17 Instructions d’aide à la programmation RAPID
Suite

Obtenir des informations concernant la mémoire

Fonction Utilisé pour


ProgMemFree Obtenir la taille de la mémoire libre du programme

Lire des données de configuration


Instruction pour écrire un attribut d’un paramètre système nommé.
Instruction Utilisé pour
ReadCfgData Lire un attribut d’un paramètre système nommé.

Écrire des données de configuration


Instruction pour écrire un attribut d’un paramètre système nommé.
Instruction Utilisé pour
WriteCfgData Écrire un attribut d’un paramètre système nommé.

Enregistrement des données de configuration


Instruction d'enregistrement du paramètre système dans le fichier.
Instruction Utilisé pour
SaveCfgData Enregistrer les paramètres système dans un fichier

Redémarrer le contrôleur

Instruction Utilisé pour


WarmStart Redémarrer le contrôleur, par exemple, lorsque vous avez
modifié les paramètres système à partir de RAPID.

Instructions pour tableaux de texte

Instruction Utilisé pour


TextTabInstall Installer un tableau de texte dans le système.

Fonction Utilisé pour


TextTabGet Obtenir le numéro d’un tableau de texte défini par l’utilisateur.
TextGet Obtenir une chaîne de caractères à partir des tableaux de texte
système.
TextTabFreeToUse Tester si le nom de tableau de texte (chaîne de ressources
texte) est libre ou non pour l’utilisation.

Obtenir un nom d’objet


Instruction pour obtenir le nom d’un objet de données original pour un argument
ou une donnée en cours.
Instruction Utilisé pour
ArgName Retourner le nom d’objet de données original.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 95
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.17 Instructions d’aide à la programmation RAPID
Suite

Obtenir des informations concernant les tâches

Fonction Utilisé pour


GetTaskName Obtenir l’identité de la tâche de programme actuelle, avec son
nom et son numéro.
MotionPlannerNo Obtenir le numéro du planificateur de mouvement en cours.
TaskIsExecuting Vérifier si une tâche s'exécute

Obtenir le type d’événement en cours, le gestionnaire d'exécution ou le niveau d'exécution

Fonction Utilisé pour


EventType Obtenir le type de routine d’événement en cours.
ExecHandler Obtenir le type de gestionnaire d'exécution.
ExecLevel Obtenir le niveau d'exécution.

Type de données Utilisé pour


event_type Type de routine d’événement.
handler_type Type de gestionnaire d'exécution.
exec_level Niveau d'exécution.

Obtenir l'état actuel du panneau de sélection des tâches pour une tâche du programme

Fonction Utilisé pour


GetTSPStatus Obtenir l'état actuel du panneau de sélection des tâches
TaskIsActive Vérifier si une tâche normale est active

Type de données Utilisé pour


tsp_status État du panneau de sélection des tâches

Rechercher des symboles


Instructions pour rechercher des objets de données dans le système.
Instruction Utilisé pour
SetAllDataVal Définir une nouvelle valeur pour tous les objets de données
d’un certain type correspondant à une syntaxe donnée.
SetDataSearch En association avec GetNextSym, des objets de données
peuvent être récupérés à partir du système.
GetDataVal Obtenir une valeur d’un objet de données qui est spécifié avec
une variable de chaîne de caractères.
SetDataVal Définir une valeur d’un objet de données qui est spécifié avec
une variable de chaîne de caractères.

Fonction Utilisé pour


GetNextSym En association avec SetDataSearch, des objets de données
peuvent être récupérés à partir du système.

Suite page suivante


96 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.17 Instructions d’aide à la programmation RAPID
Suite

Type de données Utilisé pour


datapos Contient des informations concernant l’emplacement de défi-
nition d’un certain objet dans le système.

Lire des informations d'entretien

Instruction Utilisé pour


GetServiceInfo Lire des informations d'entretien à partir du système.

Manuel de référence technique - Vue d’ensemble de RAPID 97


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.18 Étalonnage & entretien

1.18 Étalonnage & entretien

Description
Il existe un certain nombre d’instructions qui permettent de tester le système de
robot.

Étalonnage de l’outil

Instruction Utilisé pour


MToolRotCalib Étalonner la rotation d’un outil mobile.
MToolTCPCalib Étalonner le point central de l'outil (TCP) d’un outil mobile.
SToolRotCalib Étalonner le point central de l'outil (TCP) et la rotation d’un
outil fixe.
SToolTCPCalib Étalonner le point central de l'outil (TCP) d’un outil fixe.

Diverses méthodes d’étalonnage

Fonction Utilisé pour


CalcRotAxisFrame Calculer le système de coordonnées utilisateur pour un type
d’axe de rotation.
CalcRotAxFrameZ Calculer le système de coordonnées utilisateur d’un type d’axe
de rotation lorsque le robot maître et l’axe supplémentaire font
partie de différentes tâches RAPID.
DefAccFrame Définir un référentiel à partir des positions originales et des
positions déplacées.

Envoyer une valeur au signal de test du robot


Un signal de référence, par exemple la vitesse d’un moteur, peut être envoyé vers
un signal de sortie analogique situé sur le plan arrière du robot.
Instruction Utilisé pour
TestSignDefine Définir un signal de test
TestSignReset Réinitialiser toutes les définitions de signaux de test

Fonction Utilisé pour


TestSignRead Lire une valeur de signal de test

Type de données Utilisé pour


testsignal Pour l'instruction de programmation TestSignDefine

Enregistrement d’une exécution


Les données enregistrées sont stockées dans un fichier pour être analysées plus
tard, et sont destinées à déboguer les programmes RAPID, notamment pour les
systèmes multitâches.
Instruction Utilisé pour
SpyStart Démarrer l'enregistrement des données d'instruction et de te-
mps durant l'exécution.

Suite page suivante


98 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.18 Étalonnage & entretien
Suite

Instruction Utilisé pour


SpyStop Arrêter l'enregistrement des données d'instruction et de temps
durant l'exécution.

Manuel de référence technique - Vue d’ensemble de RAPID 99


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.19 Fonctions de chaîne de caractères

1.19 Fonctions de chaîne de caractères

Description
Les fonctions de chaînes de caractères sont utilisées pour des opérations sur des
chaînes de caractères, comme la concaténation, la comparaison, la recherche, la
conversion, etc.

Opérations de base

Type de données Utilisé pour


string Chaîne de caractères.
Constantes prédéfinies STR_DIGIT, STR_UPPER, STR_LOWER
et STR_WHITE.

Instruction/opérateur Utilisé pour


StrFormat Formatage d’une chaîne
:= Affecter une valeur (copie de chaîne de caractères)
+ Concaténation de chaîne

Fonction Utilisé pour


StrLen Obtenir la longueur de la chaîne de caractères
StrPart Obtenir une partie d'une chaîne de caractères

Comparaison et recherche

Opérateur Utilisé pour


= Tester si c’est égal à
<> Tester si ce n’est pas égal à

Fonction Utilisé pour


StrMemb Contrôler si un caractère fait partie d’un jeu de caractères
StrFind Rechercher un caractère dans une chaîne de caractères
StrMatch Rechercher une suite de caractères définie dans une chaîne
de caractères
StrOrder Contrôler si des chaînes de caractères sont dans l’ordre

Conversion

Fonction Utilisé pour


DnumToNum Convertir une valeur numérique dnum en une valeur numérique
num
DnumToStr Convertir une valeur numérique en une chaîne de caractères
NumToDnum Convertir une valeur numérique num en une valeur numérique
dnum
NumToStr Convertir une valeur numérique en une chaîne de caractères
ValToStr Convertir une valeur en une chaîne de caractères

Suite page suivante


100 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.19 Fonctions de chaîne de caractères
Suite

Fonction Utilisé pour


StrToVal Convertir une chaîne de caractères en une valeur
StrMap Mapper une chaîne de caractères
StrToByte Convertir une chaîne de caractères en un octet
ByteToStr Convertir un octet en données de chaîne de caractères
DecToHex Convertir la valeur numérique spécifique en une chaîne de
caractères lisible de la base 10 à la base 16
HexToDec Convertir la valeur numérique spécifique en une chaîne de
caractères lisible de la base 16 à la base 10

Manuel de référence technique - Vue d’ensemble de RAPID 101


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.20 Multitâche

1.20 Multitâche

Description
Les événements dans la cellule du robot interviennent simultanément, alors
pourquoi pas les programmes ?
Le Multitâche RAPID permet d’exécuter des programmes parallèlement (ou
presque). Un programme parallèle peut être placé en arrière-plan ou au premier
plan d’un autre programme. Il peut aussi être au même niveau qu’un autre
programme.
Pour tous les paramètres, voir Manuel de référence technique - Paramètres
système.

Limitations
L’utilisation du Multitâche RAPID présente toutefois quelques restrictions.
• N’utilisez pas un programme parallèle avec un PLC. Le temps de réponse
est le même que celui d’une tâche à une interruption. Cela, bien sûr, si la
tâche n’est pas en arrière-plan d’un autre programme déjà occupé.
• Lors de l’exécution d’une instruction Wait en mode manuel, une boîte de
simulation apparaît après 3 secondes, Cela se produit uniquement dans une
tâche NORMAL.
• Les instructions de déplacement peuvent uniquement être exécutées dans
la tâche de mouvement (la tâche est reliée à l’instance de programme 0, voir
Manuel de référence technique - Paramètres système).
• L’exécution de la tâche sera interrompue pendant que d’autres tâches
accèdent au système du fichier, c’est-à-dire si l’opérateur choisit de
sauvegarder ou d’ouvrir un programme, ou si le programme d’une tâche
utilise les instructions charger/effacer/lire/écrire.
• Le FlexPendant ne peut pas accéder aux tâches autres qu’une tâche
NORMAL. Donc, l'élaboration de programmes RAPID pour d'autres tâches
SEMISTATIC ou STATIC ne peut être réalisée que si le code est chargé dans
une tâche NORMAL, ou hors ligne.

Généralités
Pour utiliser cette fonction, le robot doit être configuré avec une TÂCHE
supplémentaire pour chaque programme supplémentaire. Chaque tâche peut être
du type NORMAL, STATIC ou SEMISTATIC.
Jusqu’à 20 tâches différentes peuvent être exécutées en pseudo parallèle. Chaque
tâche consiste en un ensemble de modules, comme pour le programme normal.
Tous les modules sont locaux dans chaque tâche.
Les variables, les constantes et les persistantes sont locales dans chaque tâche,
mais les persistantes globales ne le sont pas. Par défaut, une persistante est
globale si elle n’est pas déclarée en tant que LOCAL ou TASK. Une persistante
globale portant le même nom et type est accessible dans toutes les tâches,
c’est-à-dire qu’elle y est déclarée. Si deux persistantes globales portent le même

Suite page suivante


102 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.20 Multitâche
Suite

nom, mais le type ou taille (dimension de tableau) diffère, une erreur d’exécution
se produit alors.
Une tâche a sa propre gestion d’interruptions et les routines d’événement ne sont
déclenchées que par le système de leur propre tâche (par exemple,
Démarrage/Arrêt/Redémarrage ....).

Instructions et fonctions générales

Instruction Utilisé pour


WaitSyncTask i Synchroniser plusieurs tâches de programme à un point spécial
dans chaque programme
i Si le robot est équipé de l’option MultiTasking.

Fonction Utilisé pour


TestAndSet Extraire le droit exclusif d’une zone de code spécifique RAPID
ou de ressources système (type d’interrogation utilisateur)
WaitTestAndSet Extraire le droit exclusif d’une zone de code spécifique RAPID
ou de ressources système (type de contrôle d’interruption)
TaskRunMec Vérifier si la tâche de programme commande une unité méca-
nique.
TaskRunRob Vérifier si la tâche de programme commande un robot TCP
GetMecUnitName Obtenir le nom de l’unité mécanique

Type de données Utilisé pour


taskid Identifier les tâches de programme disponibles dans le sys-
tème.
syncident Spécifier le nom d'un point de synchronisation
tasks Spécifier plusieurs tâches de programme RAPID

Système MultiMove avec robots coordonnés

Instruction Utilisé pour


SyncMoveOn i Démarrer une séquence de mouvements synchronisés
SyncMoveOff Pour mettre fin à des mouvements synchronisés
SyncMoveUndo Réinitialiser les mouvements synchronisés
i Si le robot est équipé de l’option MultiMove Coordinated.

Fonction Utilisé pour


IsSyncMoveOn Indiquer si la tâche en cours est en mode synchronisé
TasksInSync Renvoie le nombre de tâches synchronisées

Type de données Utilisé pour


syncident i Pour spécifier le nom d'un point de synchronisation
tasks Spécifier plusieurs tâches de programme RAPID
identno Identité des instructions de déplacement
i Si le robot est équipé de l’option MultiTasking.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 103
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.20 Multitâche
Suite

Synchronisation des tâches


Dans beaucoup d’applications, une tâche parallèle ne supervise que des cellules
totalement indépendantes de l’exécution d’autres tâches, et aucun mécanisme de
synchronisation n’est alors nécessaire. Mais il existe d’autres applications qui
doivent savoir ce que la tâche principale est en train de faire, par exemple :

Synchronisation à l'aide d'interrogations


Le type de synchronisation le plus facile à réaliser, mais offrant le fonctionnement
le plus lent. Des persistantes sont utilisées avec les instructions WaitUntil, IF,
WHILE ou GOTO.
Si l’instruction WaitUntil est utilisée, elle interroge en interne toutes les 100 ms
et n'interroge pas plus souvent dans d’autres implémentations.

Exemple
TÂCHE 1 :
MODULE module1
PERS bool startsync:=FALSE;
PROC main()
startsync:= TRUE;
ENDPROC
ENDMODULE
TÂCHE 2 :
MODULE module2
PERS bool startsync:=FALSE;
PROC main()
WaitUntil startsync;
ENDPROC
ENDMODULE

Synchronisation à l’aide d’une interruption


Les instructions SetDO et ISignalDO sont utilisées.

Exemple
TÂCHE 1 :
MODULE module1
PROC main()
SetDO do1,1;
ENDPROC
ENDMODULE
TÂCHE 2 :
MODULE module2
VAR intnum isiint1;
PROC main()
CONNECT isiint1 WITH isi_trap;
ISignalDO do1, 1, isiint1;

WHILE TRUE DO
WaitTime 200;
ENDWHILE

Suite page suivante


104 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.20 Multitâche
Suite

IDelete isiint1;
ENDPROC

TRAP isi_trap
.
ENDTRAP
ENDMODULE

Communication entre tâches


Tous les types de données peuvent être échangés entre deux tâches (ou plus) à
l’aide de variables persistantes globales.
Une variable persistante globale est globale dans toutes les tâches. La variable
persistante doit être de même type et de même taille (dimension de tableau) dans
toutes les tâches qui la déclarent. Sinon, une erreur d’exécution se produit.

Exemple
TÂCHE 1 :
MODULE module1
PERS bool startsync:=FALSE;
PERS string stringtosend:=””;
PROC main()

stringtosend:=”this is a test”;

startsync:= TRUE

ENDPROC
ENDMODULE
TASK 2:
MODULE module2
PERS bool startsync:=FALSE;
PERS string stringtosend:=””;
PROC main()

WaitUntil startsync;
!read string
IF stringtosend = “this is a test” THEN
...
ENDIF
ENDPROC
ENDMODULE

Type de tâche
Chaque tâche peut être du type NORMAL, STATIC ou SEMISTATIC.
Les tâches STATIC et SEMISTATIC sont démarrées au cours de la séquence de
démarrage du système. Si la tâche est du type STATIC, elle sera redémarrée à la
position actuelle (à l’endroit où se trouvait le PP lorsque le système a été mis hors
tension). Si le type est défini sur SEMISTATIC, la tâche sera démarrée à partir du

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 105
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.20 Multitâche
Suite

début à chaque mise sous tension, et les modules spécifiés dans les paramètres
du système seront rechargés si le fichier du module est plus récent que le module
chargé.
Les tâches du type NORMAL ne seront pas démarrées au démarrage. Elles sont
démarrées normalement, à partir du FlexPendant, par exemple.

Priorités
Pour exécuter les tâches par défaut, il suffit d’exécuter toutes les tâches de même
niveau en mode "round robbin" (un pas de base à chaque étape). Mais il est
possible de modifier le degré de priorité d’une tâche en plaçant la tâche en
arrière-plan d’une autre. L’arrière-plan n’est exécuté que quand l’avant-plan est
en attente d’un événement ou en arrêt d’exécution (au point mort). Un
programme-robot contenant des instructions de mouvement est la plupart du temps
au point mort.
L’exemple ci-dessous décrit quelques cas où le système a 10 tâches à réaliser
(voir la Figure 9).
Round robbin-chaîne 1 : les tâches 1, 2 et 9 sont occupées.
Round robbin-chaîne 2 : les tâches 1, 4, 5, 6 et 9 sont occupée, les tâches 2 et 3
sont au point mort.
Round robbin-chaîne 3 : les tâches 3, 5 et 6 sont occupée, les tâches 1, 2, 9 et 10
sont au point mort.
Round robbin-chaîne 4 : les tâches 7 et 8 sont occupée, les tâches 1, 2, 3, 4, 5, 6,
9 et 10 sont au point mort.

xx1100000589

Figure 9 : Les tâches peuvent avoir des priorités différentes

Suite page suivante


106 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.20 Multitâche
Suite

TrustLevel
Le paramètre TrustLevel gère le comportement du système lorsqu'une tâche
SEMISTATIC ou STATIC est arrêtée ou ne peut pas être exécutée.
• SysFail - Il s’agit du comportement par défaut ; toutes les autres tâches
NORMAL s’arrêtent également et le système prend l’état SYS_FAIL. Tous
les ordres de pilotage manuel et de démarrage de programme seront rejetés.
Seul un nouveau démarrage à chaud permet de relancer le système. Ce
procédé doit être utilisé si la tâche possède certaines supervisions de
sécurité.
• SysHalt - Toutes les tâches NORMAL seront arrêtées. Le système est forcé
de passer en mode Moteurs désactivés. Lors du passage du système en
mode Moteurs désactivés, il est possible de piloter manuellement le robot,
mais une nouvelle tentative de démarrage du programme sera rejetée. Un
nouveau démarrage à chaud permet de relancer le système.
• SysStop - Toutes les tâches NORMAL seront arrêtées, mais peuvent être
redémarrées. Le pilotage manuel est également possible.
• NoSafety - Seule la tâche réelle concernée s’arrêtera.
Voir Manuel de référence technique - Paramètres système, rubrique Controller,
type Task.

Recommendation
Lorsque vous spécifiez des priorités de tâche, pensez aux points suivants :
• Toujours utiliser le mécanisme ou les boucles d’interruption avec retard dans
les tâches de supervision. Sinon, le FlexPendant n’aura jamais le temps de
communiquer avec l’utilisateur. De plus, si la tâche de supervision est en
avant-plan, elle n’autorisera jamais l’exécution d’une autre tâche en
arrière-plan.

Manuel de référence technique - Vue d’ensemble de RAPID 107


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.21 Rétro-exécution

1.21 Rétro-exécution

Description
Un programme peut être exécuté en sens inverse, en procédant à une instruction
à la fois. Les restrictions générales suivantes sont valables pour la rétro-exécution
:
• Il n'est pas possible de retourner en arrière à partir des instructions IF, FOR,
WHILE et TEST.
• Il n'est pas possible de retourner en arrière à partir d'une routine lorsque le
début de la routine est atteint.
• Les instructions relatives aux paramètres de mouvement, ainsi que d’autres
instructions concernant le mouvement, ne peuvent pas être exécutées vers
l’arrière. Si vous tentez d’exécuter une telle instruction, un avertissement
est inscrit dans le journal des événements.
• Lors de l'exécution des gestionnaires d’exécutions arrière et en présence
d'une erreur d'exécution, il ne sera pas possible de gérer l'erreur dans un
gestionnaire d'erreurs.

Gestionnaires d'instruction arrière


Les procédures sont susceptibles de contenir un gestionnaire d'instruction arrière
qui définit la rétro-exécution d’un appel de procédure. Si vous appelez une routine
du gestionnaire d'instruction arrière, la routine est exécutée vers l’avant.
Le gestionnaire d'instruction arrière fait partie de la procédure et le domaine de
toutes données d’une routine comprend également le gestionnaire d'instruction
arrière de la procédure.
Les instructions se trouvant dans le gestionnaire d'instruction arrière ou d’erreurs
d’une routine ne peuvent pas faire l’objet d’une rétro-exécution. La rétro-exécution
ne peut pas être imbriquée, c’est-à-dire que deux instructions d’une chaîne d’appels
ne pourront pas faire l’objet d’une rétro-exécution simultanée.
Une procédure qui ne comporte pas de gestionnaire d'instruction arrière ne pourra
pas faire l’objet d’une rétro-exécution. Une procédure avec une routine de
rétro-exécution vide sera exécutée en tant que "pas d’opération".

Exemple 1
PROC MoveTo ()
MoveL p1,v500,z10,tool1;
MoveC p2,p3,v500,z10,tool1;
MoveL p4,v500,z10,tool1;
BACKWARD
MoveL p4,v500,z10,tool1;
MoveC p2,p3,v500,z10,tool1;
MoveL p1,v500,z10,tool1;
ENDPROC
Lorsque la procédure est appelée pendant l’exécution vers l’avant, ce qui suit a
lieu :
MoveL p1,v500,z10,tool1;
MoveC p2,p3,v500,z10,tool1;

Suite page suivante


108 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.21 Rétro-exécution
Suite

MoveL p4,v500,z10,tool1;

Exemple 2
PROC MoveTo ()
MoveL p1,v500,z10,tool1;
MoveC p2,p3,v500,z10,tool1;
MoveL p4,v500,z10,tool1;
BACKWARD
MoveL p4,v500,z10,tool1;
MoveC p2,p3,v500,z10,tool1;
MoveL p1,v500,z10,tool1;
ENDPROC
Lorsque la procédure est appelée pendant l’exécution vers l’avant, le code suivant
est exécuté (le code de la procédure jusqu'au gestionnaire d'instruction arrière) :
MoveL p1,v500,z10,tool1;
MoveC p2,p3,v500,z10,tool1;
MoveL p4,v500,z10,tool1;
Lorsque la procédure est appelée pendant l’exécution vers l’arrière, le code suivant
est exécuté (le code de la procédure jusqu'au gestionnaire d'instruction arrière) :
MoveL p4,v500,z10,tool1;
MoveC p2,p3,v500,z10,tool1;
MoveL p1,v500,z10,tool1;

Limites des instructions de déplacement dans le gestionnaire d'instruction arrière


Le type et la séquence des instructions de déplacement du gestionnaire d'instruction
arrière doivent être un reflet du type et de la séquence des instructions de
déplacement pour l’exécution vers l’avant dans la même routine :

xx1100000633

Notez que l'ordre de CirPoint p2 et ToPoint p3 dans le MoveC doit être le


même.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 109
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.21 Rétro-exécution
Suite

Les instructions de mouvement incluent toutes les instructions qui entraînent un


mouvement du robot ou des axes supplémentaires, comme MoveL, SearchC,
TriggJ, ArcC ou PaintL.

AVERTISSEMENT

Si ces limitations de programmation ne sont pas respectées dans le gestionnaire


d'instruction arrière, le mouvement vers l’arrière résultant peut être erroné. Un
mouvement linéaire peut devenir un mouvement circulaire, et vice-versa, dans
certaines parties de la trajectoire vers l’arrière.

Comportement de l’exécution vers l’arrière


Routines MoveC et nostepin
Lorsque vous avancez pas à pas dans une instruction MoveC, le robot s’arrête au
point circulaire (l’instruction est exécutée en deux étapes). Toutefois, quand vous
reculez pas à pas dans une instruction MoveC, le robot ne s’arrête pas au point
circulaire (l’instruction est exécutée en une seule étape).
Il est interdit de passer d’une exécution vers l’avant à une exécution vers l’arrière
lorsque le robot exécute une instruction MoveC.
Afin de pouvoir passer de l'exécution avant à l’exécution arrière dans une routine
nostepin, ou vice versa, le paramètre système StepOutNoStepin doit être défini.

Cible, type de mouvement et vitesse


Lorsque vous avancez pas à pas via le code programme, un pointeur de programme
indique l'instruction suivante à exécuter et un pointeur de mouvement indique
l'instruction de déplacement que le robot exécute.
Lorsque vous reculez pas à pas dans le code programme, le pointeur de programme
indique l’instruction au-dessus du pointeur de mouvement. Lorsque le pointeur de
programme indique une instruction de mouvement et que le pointeur de mouvement
en spécifie une autre, le mouvement vers l’arrière suivant se déplace vers la cible
indiquée par le pointeur de programme en utilisant la vitesse et le type de
mouvement signalés par le pointeur de mouvement.
L’instruction MoveExtJ constitue une exception en matière de vitesse d’exécution
vers l’arrière. Cette instruction utilise la vitesse liée à la valeur robtarget pour
l’exécution vers l’avant et vers l’arrière.

Suite page suivante


110 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.21 Rétro-exécution
Suite

Exemple
Cet exemple illustre le déroulement lorsque vous retournez en arrière via des
instructions de mouvement. Les pointeurs de programme et de mouvement vous
aident à suivre la position de l'exécution RAPID et celle du robot.

xx1100000634

A Pointeur de programme
B Pointeur de mouvement
C Mise en surbrillance de la valeur robtarget vers laquelle le robot se dé-
place ou qu’il a déjà atteinte.

1 Le programme est exécuté vers l’avant jusqu’à ce que le robot atteigne la


position p5. Le pointeur de mouvement indique p5 et le pointeur de
programme indique l'instruction de déplacement suivante (MoveL p6).
2 La première fois que vous appuyez sur le bouton de retour en arrière, le
robot ne se déplace pas, mais le pointeur de programme se déplace jusqu’à
l'instruction précédente (MoveC p3, p4). Cela signifie qu'il s'agit de
l'instruction qui sera exécutée la prochaine fois que vous appuierez sur le
bouton de retour en arrière.
3 La deuxième fois que vous appuyez sur le bouton de retour en arrière, le
robot se déplace de façon linéaire jusqu’à p4 à la vitesse v300. La cible de
ce mouvement (p4) provient de l'instruction MoveC. Le type de mouvement
(linéaire) et la vitesse proviennent de l'instruction située au-dessous (MoveL
p5). Le pointeur de mouvement indique p4 et le pointeur de programme se
déplace jusqu'à MoveL p2.
4 La troisième fois que vous appuyez sur le bouton de retour en arrière, le
robot se déplace de façon circulaire jusqu’à p2 via p3 à la vitesse v100. La

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 111
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
1 Programmation RAPID de base
1.21 Rétro-exécution
Suite

cible p2 provient de l'instruction MoveL p2. Le type de mouvement


(circulaire), le point circulaire (p3) et la vitesse proviennent de l'instruction
MoveC. Le pointeur de mouvement indique p2 et le pointeur de programme
se déplace jusqu'à MoveL p1.
5 La quatrième fois que vous appuyez sur le bouton de retour en arrière, le
robot se déplace de façon linéaire jusqu’à p1 à la vitesse v200. Le pointeur
de mouvement indique p1 et le pointeur de programme se déplace jusqu'à
MoveJ p0.
6 La première fois que vous appuyez sur le bouton d'accès à l'étape suivante,
le robot ne se déplace pas, mais le pointeur de programme se déplace jusqu’à
l'instruction suivante (MoveL p2).
7 La deuxième fois que vous appuyez sur le bouton d’accès à l’étape suivante,
le robot se déplace jusqu’à p2 à la vitesse v200.

112 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.1.1 Le point central de l'outil (TCP) du robot

2 Programmation de mouvement et d'E/S


2.1 Systèmes de coordonnées

2.1.1 Le point central de l'outil (TCP) du robot

Description
La position du robot et ses déplacements sont toujours fonction du point central
de l'outil (TCP). Le point est normalement défini comme se situant quelque part
sur l’outil, par exemple sur l’embout d’un pistolet à colle, au centre d’une pince ou
à l’extrémité d’un outil de nivellement.
Plusieurs TCP (outils) peuvent être définis, mais un seul à la fois pourra être actif.
Lorsqu’une position est enregistrée, c’est la position du TCP qui est enregistrée.
Il s’agit également du point qui se déplace le long d’une trajectoire donnée, à une
vitesse donnée.
Si le robot tient un objet de travail et travaille sur un outil stationnaire, un TCP fixe
est utilisé. Si cet outil est actif, la trajectoire et la vitesse programmées sont fonction
de l'objet de travail. Voir TCP fixes à la page 123.

Renseignements connexes

Décrit dans :
Définition du système de coordonnées atelier Manuel de référence technique - Paramètres
système
Définition du système de coordonnées utili- Manuel d’utilisation - IRC5 avec FlexPendant
sateur
Définition du système de coordonnées objet Manuel d’utilisation - IRC5 avec FlexPendant
Définition du système de coordonnées outil Manuel d’utilisation - IRC5 avec FlexPendant
Définition du point central de l'outil Manuel d’utilisation - IRC5 avec FlexPendant
Définition du référentiel de déplacement Manuel d’utilisation - IRC5 avec FlexPendant
Déplacement manuel dans des systèmes de Manuel d’utilisation - IRC5 avec FlexPendant
coordonnées différents

Manuel de référence technique - Vue d’ensemble de RAPID 113


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.1.2 Systèmes de coordonnées utilisés pour déterminer la position du TCP

2.1.2 Systèmes de coordonnées utilisés pour déterminer la position du TCP

Description
La position de l’outil (TCP) peut être spécifiée dans différents systèmes de
coordonnées afin de faciliter la programmation et l'ajustement des programmes.
Le système de coordonnées défini dépend de ce que le robot doit faire.
Lorsqu’aucun système de coordonnées n’est défini, les positions du robot sont
définies à partir du système de coordonnées de base.

Système de coordonnées de base


Dans une application simple, la programmation peut se faire dans le système de
coordonnées de base; dans ce cas, l’axe z coïncide avec l’axe 1 du robot.

xx1100000611

Le système de coordonnées de base se situe à la base du robot :


• Lorigine se situe à l’intersection de l’axe 1 et de la surface de montage de
base.
• Le plan xy est le même que celui de la surface de montage de base.
• L'axe x est tourné vers l'avant.
• L'axe y est tourné vers la gauche (depuis la perspective du robot).
• L'axe z est tourné vers le haut.

Système de coordonnées de l'atelier


Si le robot est monté sur le sol, la programmation du système de coordonnées de
base est aisée. Si, par contre, le robot est monté à l’envers (suspendu), la
programmation à partir du système de coordonnées de base sera plus difficile car
les directions de ses axes ne sont pas les mêmes que les directions principales
au sein de la zone de travail. Dans ces cas-là, il est utile de définir un système de
coordonnées atelier. Le système de coordonnées atelier coïncidera avec le système
de coordonnées de base, s’il n’est pas spécifiquement défini.
Parfois, plusieurs robots travaillent au sein d’une même zone de travail. Dans ce
cas, un système de coordonnées atelier commun est utilisé afin de permettre aux
programmes des robots de communiquer entre eux. Il est également recommandé
de l’utiliser lorsque les positions doivent être exprimées en fonction d’un point fixe
dans l’atelier.

Suite page suivante


114 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.1.2 Systèmes de coordonnées utilisés pour déterminer la position du TCP
Suite

La figure ci-dessous présente deux robots (dont un suspendu) avec un système


de coordonnées atelier commun.

xx1100000612

Système de coordonnées utilisateur


Un robot peut travailler avec différents montages ou surfaces de travail ayant
différentes positions et orientation. Un système de coordonnées utilisateur peut
être défini pour chaque montage. Si toutes les positions sont stockées dans les
coordonnées objet, vous n’aurez pas à reprogrammer si un montage doit être
déplacé ou tourné. En déplaçant/tournant le système de coordonnées utilisateur
de la même valeur que celle dont l'objet de travail aura été déplacée/tournée, toutes
les positions programmées suivront le montage et il ne sera pas utile de
reprogrammer.
Le système de coordonnées de l’utilisateur est défini en fonction du système de
coordonnées atelier.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 115
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.1.2 Systèmes de coordonnées utilisés pour déterminer la position du TCP
Suite

La figure ci-dessous présente deux systèmes de coordonnées utilisateur qui


décrivent la position de deux fixations différentes.

xx1100000613

Système de coordonnées objet


Le système de coordonnées utilisateur est utilisé afin d’obtenir différents systèmes
de coordonnées pour différents montages ou surfaces de travail. Toutefois, un
montage pourra comprendre plusieurs objets de travail qui doivent être traités ou
manipulés par le robot. Donc, il est souvent préférable de définir un système de
coordonnées pour chaque objet de travail afin de faciliter tout ajustement éventuel
du programme si l'objet de travail est déplacé ou si un nouvel objet de travail,
identique au premier, doit être programmé à un endroit différent. Un système de
coordonnées qui correspond à un objet de travail est connu sous le nom de système
de coordonnées objet. Ce système de coordonnées convient également très bien
à la programmation hors ligne vu que les positions spécifiées peuvent généralement
être fournies directement sur un plan de l'objet de travail. Le système de
coordonnées objet peut également être utilisé lors du pilotage manuel du robot.
Le système de coordonnées objet est défini en fonction du système de coordonnées
utilisateur.

Suite page suivante


116 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.1.2 Systèmes de coordonnées utilisés pour déterminer la position du TCP
Suite

La figure ci-dessous présente deux systèmes de coordonnées objet qui décrivent


la position de deux objets de travail différents situés dans la même fixation.

xx1100000614

Les positions programmées sont toujours définies par rapport à un système de


coordonnées objet. Si un montage est déplacé/tourné, ceci peut être compensé
en déplaçant/tournant le système de coordonnées utilisateur. Ni les positions
programmées ni les systèmes de coordonnées objet définis ne doivent être
changés. Si l'objet de travail est déplacé/tourné, ceci peut être compensé en
déplaçant/tournant le système de coordonnées objet.
Si le système de coordonnées utilisateur est mobile, c’est-à-dire lorsque des axes
supplémentaires coordonnés sont utilisés, le système de coordonnées objet se
déplace alors avec le système de coordonnées utilisateur. Ceci permet de déplacer
le robot par rapport à l'objet de travail, même lorsque le montage est déplacé.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 117
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.1.2 Systèmes de coordonnées utilisés pour déterminer la position du TCP
Suite

Système de coordonnées de déplacement


La même trajectoire doit parfois être effectuée à plusieurs endroits sur le même
objet. Afin de ne pas avoir à reprogrammer toutes les positions chaque fois, un
système de coordonnées, connu sous le nom de système de coordonnées de
déplacement, est défini. Ce système de coordonnées peut également être utilisé
avec les recherches afin de compenser les différences de positions des divers
composants.
Le système de coordonnées de déplacement est défini en fonction du système de
coordonnées de l'objet.

xx1100000615

Si le déplacement de programme est actif, toutes les positions sont déplacées.

Suite page suivante


118 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.1.2 Systèmes de coordonnées utilisés pour déterminer la position du TCP
Suite

Axes supplémentaires coordonnés


Coordination du système de coordonnées utilisateur
Si un objet de travail est placé sur une unité mécanique externe qui est déplacée
pendant que le robot effectue une trajectoire définie dans le système de
coordonnées objet, un système de coordonnées utilisateur mobile peut être défini.
La position et l’orientation du système de coordonnées utilisateur dépendront,
dans ce cas, de la rotation des axes de l’unité externe. La trajectoire et la vitesse
programmées sont donc fonction de l'objet de travail, et il n’est pas nécessaire de
tenir compte du fait que l'objet de travail est déplacé par l’unité externe.
La figure ci-dessous présente un système de coordonnées utilisateur, défini de
façon à suivre le déplacement d’une unité mécanique à trois axes externes.

xx1100000616

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 119
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.1.2 Systèmes de coordonnées utilisés pour déterminer la position du TCP
Suite

Coordination du système de coordonnées de base


Un système de coordonnées mobile peut également être défini pour la base du
robot. Ceci est intéressant lorsque le robot est monté sur un rail ou un portique
par exemple. Comme dans le cas du système de coordonnées utilisateur mobile,
la position et l’orientation du système de coordonnées de base dépendront des
mouvements de l’unité externe. La trajectoire et la vitesse programmées sont
exprimées dans le système de coordonnées objet, et il n’est pas nécessaire de
tenir compte du fait que la base du robot est déplacée par une unité externe. Un
système de coordonnées utilisateur et un système de coordonnées de base
coordonné peuvent tous deux être définis en même temps.
La figure ci-dessous présente une interpolation coordonnée avec un rail de
déplacement du système de coordonnées de base du robot.

xx1100000617

Pour pouvoir calculer les systèmes de coordonnées utilisateur et de base lorsque


les unités concernées se déplacent, le robot doit tenir compte des éléments suivants
:
• Les positions d’étalonnage des systèmes de coordonnées utilisateur et de
base .
• Les connexions entre les angles des axes supplémentaires et la
translation/rotation de l’utilisateur, ainsi que des systèmes de coordonnées
de base.
• Ces connexions sont définies dans les paramètres système.

120 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.1.3 Systèmes de coordonnées utilisés pour déterminer la direction de l’outil

2.1.3 Systèmes de coordonnées utilisés pour déterminer la direction de l’outil

Description
L’orientation d’un outil au niveau d’une position programmée correspond à
l’orientation du système de coordonnées outil. Le système de coordonnées outil
est référencé au système de coordonnées du poignet, défini au niveau du flasque
de montage du poignet du robot.

Système de coordonnées du poignet


Dans une application simple, le système de coordonnées du poignet peut être
utilisé pour définir l'orientation de l'outil ; dans ce cas, l'axe z coïncide avec l'axe
6 du robot.

xx1600000580

Le système de coordonnées du poignet ne peut pas être changé et doit toujours


être le même que celui du plateau terminal du robot pour autant que :
• L'origine se situe au centre du flasque de montage (sur la surface de
montage).
• Les points de l'axe x sont tournés dans la direction opposée, vers le trou de
détrompage du flasque de montage.
• L'axe Z est tourné vers l’extérieur, perpendiculaire au flasque de montage.

Système de coordonnées outil


L’outil monté sur le flasque de montage du robot a souvent besoin de son propre
système de coordonnées afin de pouvoir définir son TCP, qui est l’origine du
système de coordonnées outil. Le système de coordonnées outil peut également
être utilisé afin d’obtenir les directions de déplacement appropriées lors du pilotage
manuel du robot.
Si un outil est endommagé ou remplacé, il vous suffit de redéfinir le système de
coordonnées outil. Normalement, il ne sera pas nécessaire de changer le
programme.
Le TCP (origine) est choisi comme étant le point sur l’outil qui doit être correctement
positionné, par exemple l’extrémité d’un pistolet à colle. Les axes de coordonnées
outil sont définis comme étant les axes naturels de l’outil en question.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 121
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.1.3 Systèmes de coordonnées utilisés pour déterminer la direction de l’outil
Suite

La figure ci-dessous présente un système de coordonnées outil, tel qu'il est


habituellement défini pour une pince de soudage à l'arc (gauche) et une pince de
soudage par points (droite).

xx1600000581

Le système de coordonnées outil est défini en fonction du système de coordonnées


poignet.
La figure ci-dessous présente un système de coordonnées outil défini par rapport
au système de coordonnées poignet, ici un préhenseur.

xx1600000582

Suite page suivante


122 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.1.3 Systèmes de coordonnées utilisés pour déterminer la direction de l’outil
Suite

TCP fixes
Si le robot tient un objet de travail et travaille sur un outil stationnaire, un TCP fixe
est utilisé. Si cet outil est actif, la trajectoire et la vitesse programmées sont fonction
de l'objet de travail tenu par le robot. Ceci signifie que les systèmes de coordonnées
seront inversés, tel qu'indiqué sur la figure ci-dessous.
La figure ci-dessous présente un TCP fixe, où le système de coordonnées objet
est basé sur le système de coordonnées poignet.

xx1100000635

Dans la figure ci-dessous, ni le système de coordonnées utilisateur, ni le


déplacement de programme ne sont utilisés. Toutefois, il est possible de les utiliser
et, dans ce cas, ils sont liés l’un à l’autre.

xx1100000636

Le déplacement de programme peut également être utilisé avec des TCP fixes

Manuel de référence technique - Vue d’ensemble de RAPID 123


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.1 Introduction

2.2 Positionnement durant l’exécution du programme

2.2.1 Introduction

Comment les déplacements sont effectués


Durant l’exécution du programme, les instructions de positionnement du programme
du robot contrôlent tous les déplacements. La tâche principale des instructions
de positionnement consiste à fournir les renseignements suivants sur la façon
d’effectuer les déplacements :
• Le point visé du déplacement (défini comme étant la position du TCP,
l’orientation de l’outil, la configuration du robot et la position des axes
supplémentaires).
• La méthode d’interpolation utilisée pour atteindre le point visé (par exemple,
mouvements articulaires conjugués, interpolation linéaire ou interpolation
circulaire).
• La vitesse du robot et des axes supplémentaires.
• Les données de zone (définissent comment le robot et les axes
supplémentaires doivent aller au-delà du point visé, par exemple le point
d’arrêt ou le point de passage).
• Les systèmes de coordonnées (outil, utilisateur et objet) utilisés pour les
déplacements.
Au lieu de définir la vitesse du robot et les axes supplémentaires, on peut aussi
programmer la durée du mouvement. On évitera cependant cette approche si l’on
utilise la fonction balayage. À la place, on utilisera les vitesses des axes
d’orientation et des axes supplémentaires pour limiter la vitesse pour les petits
déplacements et les mouvements non-TCP.

AVERTISSEMENT

Dans les applications nécessitant des mouvements fréquents et intensifs, comme


dans les applications de manutention et de palettisation, la supervision du
système d’entraînement peut débrayer et arrêter le robot, afin d’éviter une
surchauffe des organes moteurs ou des moteurs. Dans ce cas, vous devez
légèrement allonger le temps de cycle en réduisant l’accélération ou la vitesse
programmée.

Renseignements connexes

Voir :
Définition de la vitesse Manuel de référence technique - Instructions, fonctio-
ns et types de données RAPID
Définition des zones (trajectoires de Manuel de référence technique - Instructions, fonctio-
raccordement) ns et types de données RAPID
Instruction pour l'interpolation articu- Manuel de référence technique - Instructions, fonctio-
laire ns et types de données RAPID

Suite page suivante


124 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.1 Introduction
Suite

Voir :
Instruction pour l'interpolation li- Manuel de référence technique - Instructions, fonctio-
néaire ns et types de données RAPID
Instruction pour l'interpolation circu- Manuel de référence technique - Instructions, fonctio-
laire ns et types de données RAPID
Instruction pour l'interpolation modi- Manuel de référence technique - Instructions, fonctio-
fiée ns et types de données RAPID
Singularité Singularités à la page 156
Exécution simultanée d'instructions Synchronisation avec les instructions logiques à la
du programme page 140
Optimisation du processeur Manuel de référence technique - Paramètres système

Manuel de référence technique - Vue d’ensemble de RAPID 125


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.2 Interpolation de la position et de l’orientation de l’outil

2.2.2 Interpolation de la position et de l’orientation de l’outil

Interpolation articulaire
Lorsque la précision de la trajectoire n’est pas spécialement importante, ce type
de mouvement est utilisé pour déplacer l’outil rapidement d’une position à une
autre. Le mouvement articulaire permet également à un axe de se déplacer d’un
endroit à un autre au sein de sa zone de travail, en un seul mouvement.
Tous les axes se déplacent du point de départ jusqu’au point visé à une vitesse
d’axe constante, voir la figure ci-dessous.
Le mouvement articulaire est souvent la façon la plus rapide de se déplacer entre
deux points, car les axes du robot suivent la trajectoire la plus courte entre le point
de départ et le point visé (dans le contexte des angles de l’axe).

xx1100000637

La vitesse TCP est exprimée en mm/s (dans le système de coordonnées objet).


Durant le mouvement articulaire, la vitesse ne sera pas exactement la valeur
programmée.
Durant le mouvement, la vitesse de l’axe menant, c’est-à-dire l’axe dont la vitesse
est la plus proche de sa vitesse maximale, est prise comme référence. Ensuite,
les vitesses des autres axes sont calculées de sorte que tous les axes atteignent
le point visé en même temps.
Tous les axes sont coordonnés afin d’obtenir une trajectoire indépendante de la
vitesse. L’accélération est optimisée automatiquement en fonction des
performances maximales du robot.

Interpolation linéaire
Pendant l’interpolation linéaire, le TCP se déplace le long d’une ligne droite entre
le point de départ et les points visés.

xx1100000638

Pour obtenir une trajectoire linéaire dans le système de coordonnées objet, les
axes du robot doivent suivre une trajectoire non linéaire dans l’espace de l’axe.
Moins la configuration du robot est linéaire, plus des accélérations et des
décélérations sont requises pour que l’outil puisse se déplacer selon une ligne
droite et obtenir l’orientation souhaitée. Si la configuration est fortement non linéaire

Suite page suivante


126 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.2 Interpolation de la position et de l’orientation de l’outil
Suite

(par exemple, à proximité des singularités du poignet et du bras), un ou plusieurs


des axes pourraient subir un couple supérieur à celui que peuvent fournir leurs
moteurs. Dans ce cas, la vitesse de tous les axes sera automatiquement réduite.
L’orientation de l’outil reste constante pendant tout le déplacement à moins qu’une
réorientation n’ait été programmée. Si l’outil est réorienté, il fait l’objet d’une rotation
à vitesse constante.
Une vitesse de rotation maximale (en degrés par secondes) peut être spécifiée
lorsqu’on fait tourner l’outil. Si celle-ci est d’une valeur peu élevée, la réorientation
se fera progressivement, indépendamment de la vitesse définie pour le point d’outil.
S’il s’agit d’une valeur élevée, la vitesse de la réorientation est uniquement limitée
par les vitesses maximales des moteurs. Tant qu’aucun des moteurs ne dépasse
ses limites, la vitesse définie est maintenue. Si, en revanche, un des moteurs
dépasse la vitesse courante, la vitesse de l’ensemble du mouvement (aussi bien
pour la position que pour l’orientation) est réduite.
Tous les axes sont coordonnés afin d’obtenir une trajectoire indépendante de la
vitesse. L’accélération est optimisée automatiquement.

Interpolation circulaire
Une trajectoire circulaire est définie à partir de trois positions programmées qui
définissent un segment de cercle. Le premier point devant être programmé est le
point de départ du segment de cercle. Le point suivant est un point de support
(point du cercle) utilisé pour définir les dimensions du cercle et le troisième point
représente la fin du cercle. Les trois points programmés devraient être répartis à
intervalles réguliers le long de l’arc de cercle afin que celui-ci soit le plus précis
possible.
L’orientation définie pour le point de support servira à sélectionner soit la torsion
courte, soit la torsion longue, pour l’orientation du point de départ au point visé.
Si l’orientation programmée est la même par rapport au cercle aux points de départ
et visé, et que l’orientation au point de support est proche de la même orientation
par rapport au cercle, celle de l’outil restera constante par rapport à la trajectoire.
La figure ci-dessous présente une interpolation circulaire d’une partie de cercle
(segment de cercle) avec un point de départ, un point de cercle et un point visé.

xx1100000639

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 127
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.2 Interpolation de la position et de l’orientation de l’outil
Suite

Cependant, si l’on programme l’orientation du point de support de façon à ce qu’elle


soit plus proche de l’orientation tournée de 180°, on sélectionnera l’autre torsion,
tel qu’indiqué à la figure ci-dessous.

xx1100000640

Tant que les couples de tous les moteurs ne dépassent pas les couples autorisés
maximum, l’outil se déplacera selon la vitesse programmée le long de l’arc de
cercle. Si le couple d’un des moteurs est insuffisant, la vitesse sera
automatiquement réduite sur les tronçons de la trajectoire circulaire où les
performances du moteur sont insuffisantes.
Tous les axes sont coordonnés afin d’obtenir une trajectoire indépendante de la
vitesse. L’accélération est optimisée automatiquement.

Suite page suivante


128 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.2 Interpolation de la position et de l’orientation de l’outil
Suite

SingArea\Wrist
Lors de l’exécution à proximité d’un point singulier, l’interpolation linéaire ou
circulaire risque de poser des problèmes. Dans ce cas, il est préférable d’utiliser
l’interpolation modifiée, ce qui signifie que les axes du poignet sont interpolés axe
par axe, le TCP suivant une trajectoire linéaire ou circulaire. Toutefois, l’orientation
de l’outil sera quelque peu différente de l’orientation programmée. L’orientation
résultante du point programmé peut également être différente de l’orientation
programmée, en raison des deux singularités.

xx1100000641

La première singularité se présente lorsque le TCP est tout droit par rapport à l’axe
2 (a2 dans le schéma ci-dessus). Le TCP ne peut pas passer de l’autre côté de
l’axe 2; à la place, les axes 2 et 3 vont plier un peu plus pour maintenir le TCP du
même côté. L’orientation finale du déplacement sera éloignée par rapport à
l’orientation programmée de la même taille.
La seconde singularité se présente lorsque le TCP passe à proximité de l’axe 1
(z1 dans le schéma ci-dessus). Dans ce cas, l’axe 1 fera un demi-tour à vitesse
maximale et la réorientation de l’outil suivra de la même manière. Le sens du
retournement dépend du côté sur lequel va le TCP. Il est recommandé de changer
le mouvement articulaire (MoveJ) à proximité de l’axe z. Notez que c’est le TCP
qui fait la singularité, et non le WCP comme lorsque SingArea\Off est utilisé.
Dans le cas de SingArea\Wrist, l’orientation au point de support du cercle sera
la même que l’orientation programmée. Cependant, l’outil n’aura pas une direction
constante par rapport au plan du cercle comme dans le cas d’une interpolation
circulaire normale. Si la trajectoire circulaire passe par une singularité, l’orientation
aux positions programmées doit quelquefois être modifiée pour éviter les trop
grands mouvements du poignet qui peuvent se produire si une reconfiguration
complète du poignet est générée quand le cercle est exécuté (les articulations 4
et 6 tournant chacune de 180°).

Manuel de référence technique - Vue d’ensemble de RAPID 129


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.3 Interpolation des trajectoires de raccordement

2.2.3 Interpolation des trajectoires de raccordement

Description
Des trajectoires de raccordement sont utilisées afin d’obtenir un mouvement continu
le long des positions programmées. Ainsi, on pourra passer des positions à grande
vitesse sans devoir réduire inutilement la vitesse. Un point de passage génère une
trajectoire parabolique au point. Le début et la fin de cette trajectoire de
raccordement sont obtenus en définissant une zone autour du point programmé.

Corner zone
for the TCP path Programmed
position

Corner path

xx1100000643

Tous les axes sont coordonnés afin d’obtenir une trajectoire indépendante de la
vitesse. La vitesse et l’accélération sont optimisées automatiquement.

Définition d’une trajectoire de raccordement


La taille de la zone de raccordement est définie dans le type de données zonedata,
utilisé comme argument dans les instructions de mouvement. Pour plus
d’informations, reportez-vous à zonedata dans Manuel de référence
technique - Instructions, fonctions et types de données RAPID.

Transitions progressives d’une vitesse à l’autre


Si des vitesses de PDO différentes ont été programmées avant ou après la position
de raccordement, le passage de l’une à l’autre sera progressif et se fera au sein
de la trajectoire de raccordement sans pour autant affecter la trajectoire réelle.
Si des vitesses de réorientation différentes sont programmées avant ou après la
position de raccordement et si les vitesses de réorientation limitent le déplacement,
le passage d’une vitesse à l’autre sera progressif au sein de la trajectoire de
raccordement.

Réglage de la trajectoire avec précision


Si l’outil doit effectuer une opération (soudage à l’arc, encollage ou découpe par
jet d’eau) le long de la trajectoire de raccordement, la dimension de la zone peut
être ajustée afin d’obtenir la trajectoire souhaitée. Si la forme de la trajectoire
parabolique est incorrecte, les positions programmées peuvent être placées à
proximité les unes des autres, rendant ainsi possible une approximation de la
trajectoire souhaitée grâce à l’utilisation de plusieurs trajectoires paraboliques
plus petites.

Suite page suivante


130 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.3 Interpolation des trajectoires de raccordement
Suite

Trajectoires de raccordement avec réorientation


Un point de passage peut avoir une taille de zone pour la position du PDO (zone
de position) et une taille de zone pour la réorientation de l’outil et le mouvement
des axes supplémentaires (zone d’axe supplémentaire et de réorientation).
La zone d’axe supplémentaire et de réorientation peut être définie sur la même
valeur que celle de la zone de position. Elle est généralement plus grande que la
zone de position. Dans ce cas, la réorientation commencera à interpoler vers
l’orientation de la position suivante avant que ne commence la trajectoire de
raccordement. La réorientation se fera ainsi de manière plus progressive.
L’outil sera réorienté de sorte que l’orientation à la fin de la zone soit la même que
si un point d’arrêt avait été programmé, voir les figures suivantes. Notez que
l’orientation hors de la zone d’axe supplémentaire et de réorientation est identique
dans les deux cas (position C - E), mais que l’orientation à l’intérieur de la zone
change plus progressivement que les positions programmées.
A B Reorientation and
p2 additional axis zone
C
Position zone
D
p2
C
E
D
p1 p3

xx1100000647 E
p1 p3

Si trois positions avec différentes orientations xx1100000648


d’outil sont programmées comme points d’arrêt,
l’exécution du programme sera de ce type. Si la position centrale est un point de
passage, l’exécution du programme sera
de ce type.

La zone d’axe supplémentaire et de réorientation est normalement exprimée en


millimètres. Ainsi, vous pouvez déterminer directement où, sur la trajectoire,
commence et se termine la zone. Si l’outil n’est pas déplacé, la taille de la zone
sera alors exprimée en degrés d’angle de rotation au lieu de mm PDO.
La zone d’axe supplémentaire et de réorientation peut aussi être définie pour des
axes supplémentaires, de la même manière que pour l’orientation. Si l’on fixe une
la zone d’axe supplémentaire et de réorientation plus large que la zone de position,
l’interpolation des axes supplémentaires vers la destination de la position
programmée suivante débutera avant le commencement de la trajectoire de
raccordement de la position du PDO. Cette caractéristique peut être utilisée pour
lisser des mouvements d’axes supplémentaires, de la même manière que
l’orientation de l’outil est utilisée pour régulariser les mouvements du poignet.

Trajectoires de raccordement lorsque l’on change de méthode d’interpolation


Des trajectoires de raccordement sont également générées lorsqu’on change de
méthode d’interpolation. La méthode d’interpolation utilisée sur les trajectoires
réelles est choisie de façon à rendre le passage d’une méthode à l’autre aussi
progressif que possible. Si les zones de la trajectoire de raccordement pour
l’orientation et la position sont de dimensions différentes, on peut utiliser plusieurs
méthodes d’interpolation pour la trajectoire de raccordement (voir la Figure 30).
La figure ci-dessous présente un exemple d’interpolation lorsque l’on passe d’une
méthode d’interpolation à une autre. L’interpolation linéaire a été programmée

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 131
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.3 Interpolation des trajectoires de raccordement
Suite

entre p1 et p2 ; le mouvement articulaire entre p2 et p3 ; et l'interpolation Sing


Area\Wrist entre p3 et p4.

xx1100000649

Si une interpolation est changée d’un mouvement TCP normal en une réorientation
sans mouvement TCP ou réciproquement, aucune zone de raccordement ne sera
générée. Il en est de même si l’on change l’interpolation depuis ou vers un
mouvement articulaire externe sans mouvement du TCP.

Interpolation lors du changement de système de coordonnées


Lorsqu’il y a changement de système de coordonnées au cours d’une trajectoire
de raccordement (par exemple, un nouveau TCP ou un nouvel objet de travail),
une interpolation commune de la trajectoire de raccordement est utilisée. Cela est
aussi utilisé lorsque l’on passe d’un fonctionnement coordonné à un fonctionnement
non coordonné, ou vice versa.

Réduction de la taille des zones de raccordement programmées


Si les positions programmées se trouvent près les unes des autres, il n’est pas
anormal que les zones programmées se chevauchent. Afin d’obtenir une trajectoire
bien définie et d’atteindre une vitesse optimale à tout moment, le robot réduit la
taille de la zone. Par défaut, il la réduit à la moitié de la distance d’une position
programmée chevauchant l’autre.

Comportement en cas de paramètres de zone par défaut


Avec les paramètres par défaut, les zones programmées qui atteignent la moitié
de la distance jusqu’à un point avoisinant donnent lieu à une zone réduite (voir la
figure suivante). Par défaut, le même rayon de zone est utilisé pour les trajectoires
entrante ou sortante vers ou depuis une position programmée.
La figure ci-dessous présente un exemple d’interpolation avec des zones de position
trop grandes. La zone autour de p3 est supérieure à la demi-distance entre p2 et
p3. Donc, le robot réduit la dimension de la zone afin de la rendre égale à la moitié

Suite page suivante


132 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.3 Interpolation des trajectoires de raccordement
Suite

de la distance entre p2 et p3, générant ainsi une trajectoire de raccordement


symétrique au sein de la zone.

Generated
path
p2 p4

p1

Programmed
position zone
p3

Corner zone as
calculated by the robot

xx1800000780

La zone de position et la zone d’axe supplémentaire et de réorientation peuvent


toutes deux se chevaucher. Dès que l’une de ces zones de raccordement est trop
grande, cette zone est réduite.

Remarque

Il est possible de permettre à la zone de raccordement d’atteindre plus de la


moitié de la distance jusqu’à un point fin avoisinant en modifiant le paramètre
système Relative zone size with finepoint (rubrique Motion, type Motion Planner).
Il est possible de régler la taille de la zone de raccordement sur des valeurs
différentes pour les trajectoires entrante et sortante en réglant le paramètre
système Allow asymmetric zones (rubrique Motion, type Motion Planner).
Consultez Manuel de référence technique - Paramètres système.

Chronologie des points de passage


Parfois, si le déplacement suivant n’est pas suffisamment anticipé, les points de
passage programmés peuvent être transformés en points d’arrêt. Ceci est
susceptible de se produire lorsque :
• Un certain nombre d’instructions logiques avec de longues durées d’exécution
de programme sont programmées entre des déplacements de courte distance.
• Les points sont très proches les uns des autres à vitesse élevée.
Si les points d’arrêt posent problème, utilisez alors l’exécution simultanée
d’instructions du programme.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 133
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.3 Interpolation des trajectoires de raccordement
Suite

Pour supprimer les messages d’avertissement dus à l’échec de la trajectoire de


raccordement, utilisez l’instruction CornerPathWarning.

Remarque

Si le point de passage devient un point fin, la trajectoire après le point recalculé


peut également en être affectée.
Trajectoire si p2 est un point de passage :
Generated
path p2 Corner zone as
calculated by the robot
p1

Programmed
corner zone p4

p3

xx1800002286

Trajectoire si p2 est un point fin :


p2

p1

Generated
p4
path
p3
Programmed Corner zone as
corner zone calculated by the robot

xx1800001538

134 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.4 Axes indépendants

2.2.4 Axes indépendants

Description
Un axe indépendant est un axe se déplaçant indépendamment des autres axes
dans le système de robot. Il est possible de passer un axe en mode autonome et
de repasser en mode normal ultérieurement.
Les instructions utilisées pour manœuvrer les axes indépendants sont spéciales.
Quatre instructions de mouvement différentes permettent de définir le mouvement
de l’axe. Par exemple, l’instruction IndCMove démarre un mouvement continu de
l’axe. L’axe continue alors de se déplacer à vitesse constante (indépendamment
de ce que fait le robot) jusqu’à ce qu’une nouvelle instruction “indépendante” soit
exécutée.
Pour repasser en mode normal, l’instruction de réinitialisation IndReset est utilisée.
Cette instruction peut aussi fixer une nouvelle référence pour le système de mesure,
une sorte de nouvelle synchronisation de l’axe. Quand un axe repasse en mode
normal, il fonctionne alors comme un axe normal.

Exécution du programme
Un axe passe immédiatement en mode autonome quand une instruction Ind_Move
est exécutée, même si l’exécution de l’instruction a lieu au cours d’un déplacement
de l’axe, comme quand un point précédent a été programmé en tant que point de
passage, ou lorsque l’exécution de programmes simultanés est utilisée.
Si une nouvelle instruction Ind_Move est exécutée avant que la précédente soit
finie, la nouvelle instruction est prioritaire par rapport à la précédente.
Si l’exécution d’un programme est arrêtée au cours du déplacement d’un axe
indépendant, cet axe s’arrête. Quand le programme est redémarré, l’axe
indépendant démarre automatiquement. Aucune coordination active entre les axes
indépendants et les axes en mode normal n’a lieu.
Le programme ne peut pas être redémarré après une perte de puissance, survenue
alors qu’un axe est en mode indépendant. Un message d’erreur est alors affiché
et le programme doit être redémarré du début.
Notez qu’une unité mécanique ne peut pas être désactivée si l’un de ses axes est
en mode autonome.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 135
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.4 Axes indépendants
Suite

Exécution pas à pas


Au cours d’une exécution pas à pas, un axe indépendant n’est manœuvré que
quand une autre instruction est exécutée. Le mouvement de l’axe s’effectue aussi
pas à pas, au fur et à mesure de l’exécution d’autres instruments.

xx1100000652

Pilotage manuel
Les axes en mode indépendant ne peuvent pas être pilotés manuellement. Si l’on
essaie de manœuvrer l’axe manuellement, l’axe ne bouge pas et un message
d’erreur est affiché. Exécutez une instruction IndReset ou déplacez le pointeur
de programme sur Principal pour quitter le mode indépendant.

Rayon d'action
Le rayon d’action physique correspond au mouvement total de l’axe.
Le rayon d’action logique correspond au domaine utilisé par les instructions RAPID
et l’instruction de lecture dans la fenêtre de pilotage manuel.
Après synchronisation (compteur de tours mis à jour), les rayons d’action physique
et logique coïncident. Le rayon d’action logique peut être déplacé à l’aide de
l'instruction IndReset, voir la figure ci-dessous.

xx1100000653

La résolution des positions décroît lorsqu’on s’éloigne de la position logique 0.


Une résolution faible associée à un système de commande ajusté avec précision
peut perturber le couple de rotation de façon inacceptable et entraîner l’instabilité
du système de commande. Contrôlez l’ajustage du système de commande et les
caractéristiques de l’axe à la limite du rayon d’action lors de l’installation. Vérifiez
aussi que la résolution de la position et le suivi de la trajectoire sont acceptables.

Suite page suivante


136 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.4 Axes indépendants
Suite

Vitesse et accélération
En mode manuel à vitesse réduite, la vitesse est réduite à la vitesse qu’aurait l’axe
s’il fonctionnait en mode non-indépendant. Notez que la fonction IndSpeed ne
prend pas la valeur TRUE si la vitesse de l’axe est réduite.
L’instruction VelSet et la correction de vitesse, exprimée en pourcentage par
l’intermédiaire de la fenêtre de production, sont actives durant les mouvements
indépendants. Notez qu’une correction par l’intermédiaire de la fenêtre de
production empêche la fonction IndSpeed de prendre la valeur TRUE.
La valeur la plus basse d’accélération et de décélération spécifiée dans le fichier
de configuration est utilisée à la fois pour l’accélération et la décélération en mode
autonome. Cette valeur peut être réduite à l’aide de la valeur de rampe dans
l’instruction (1 - 100 %). L’instruction AccSet n’a aucune influence sur les axes
en mode autonome.

Axes du robot
Seul l’axe 6 du robot peut être utilisé comme axe indépendant. Normalement,
l’instruction IndReset est utilisée seulement pour cet axe. L’instruction IndReset
peut toutefois être aussi utilisée pour l’axe 4 des modèles IRB 1600, 2600 et 4600
(pas pour les versions ID). Si l’instruction IndReset est utilisée pour l’axe 4 du
robot, l’axe 6 ne doit pas être en mode autonome.
Si l’axe 6 est utilisé comme axe indépendant, des problèmes de singularité peuvent
se poser, puisque la fonction normale de transformation des coordonnées de l’axe
6 est toujours utilisée. Si un problème se pose, exécutez le même programme,
avec l’axe 6 en mode normal. Modifiez les points ou utilisez les instructions
SingArea\Wrist ou MoveJ.
L’axe 6 est aussi actif en interne, dans le calcul des performances de la trajectoire.
Cela a pour conséquence qu’un mouvement interne de l’axe 6 peut réduire la
vitesse des autres axes dans le système.
Le rayon d’action indépendant de l’axe 6 est défini avec les axes 4 et 5 en position
de repos. Si l’un des axes 4 ou 5 n’est pas en position de repos, le rayon d’action
de l’axe 6 est déplacé suite à l’accouplement du réducteur. La position de l’axe 6
lue sur le FlexPendant est toutefois compensée par les positions des axes 4 et 5
via l’accouplement du réducteur.

Manuel de référence technique - Vue d’ensemble de RAPID 137


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.5 Servo mou

2.2.5 Servo mou

Description
Certaines applications nécessiteront un servomécanisme, qui fera office de ressort
mécanique. Dans ce cas, la force appliquée par le robot à l’objet travaillé
augmentera en fonction de la distance entre la position programmée (derrière
l’objet travaillé) et la position de contact (outil robot - objet travaillé).

Souplesse
La relation entre la déviation de position et la force est définie par un paramètre
appelé mollesse. Plus ce paramètre mollesse sera élevé, plus la déviation de
position requise pour obtenir la même force sera importante.
Ce paramètre mollesse est fixé dans le programme, et il est possible d’en changer
la valeur en n’importe quel point du programme. Différentes mollesses peuvent
être fixées pour différentes articulations, et il est également possible de mélanger
des articulations à servo normal et à servo mou.
L’activation et la désactivation du servo mou, ainsi que les changements des
valeurs de mollesse, peuvent être effectués pendant que le robot bouge. Un accord
est ensuite effectué entre les différents modes servo et entre les différentes valeurs
de la mollesse afin d’obtenir des transitions progressives. Le temps d’accord peut
être réglé dans le programme avec la rampe de paramètre. Avec ramp = 1, les
transitions prendront 0,5 seconde et, en général, le temps de transition sera égal
à ramp x 0.5 en secondes.

Remarque

La désactivation du servo mou ne devra pas être effectuée lorsqu’il y aura une
force entre le robot et l’objet travaillé.

Remarque

Les mollesses élevées présentent le risque que les déviations de position dues
au servo soient si élevées que les axes sortent du rayon d’action du robot.

138 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.2.6 Arrêt et redémarrage

2.2.6 Arrêt et redémarrage

Arrêts de mouvement
Un mouvement peut être arrêté de trois manières différentes :
• Dans le cas d’un arrêt normal, le robot s’arrête sur la trajectoire, ce qui facilite
le redémarrage.
• Dans le cas d’un arrêt accéléré, le robot s’arrête plus rapidement que dans
le cas d’un arrêt normal, mais la trajectoire de décélération ne suit pas la
trajectoire programmée. C’est le type d’arrêt utilisé par exemple pour un arrêt
recherche, lorsqu’il est important d’arrêter le mouvement dès que possible.
Dans le cas d’un arrêt accéléré, le robot s’arrête plus rapidement que dans
le cas d’un arrêt progressif, mais la trajectoire de décélération ne suit pas la
trajectoire programmée. C’est le type d’arrêt utilisé par exemple pour un arrêt
recherche, lorsqu’il est important d’arrêter le mouvement dès que possible.
• Dans le cas d’un arrêt rapide, les freins mécaniques sont appliqués pour
atteindre une distance de décélération qui doit être aussi courte que possible,
pour des raisons de sécurité. La déviation par rapport à la trajectoire est
généralement plus importante pour un arrêt rapide que pour un arrêt accéléré.

Démarrage de mouvement
Après un arrêt (quel qu’en soit le type), il est toujours possible d’effectuer un
redémarrage sur la trajectoire interrompue. Si le robot s’est arrêté en dehors de
la trajectoire programmée, ce redémarrage débutera par un retour à la position
sur la trajectoire à laquelle le robot aurait dû s'arrêter.
Un redémarrage à la suite d’une panne secteur est équivalent à un redémarrage
après un arrêt rapide. Notez que le robot revient toujours à la trajectoire avant que
l’exécution du programme interrompu ne reprenne, même dans les cas où la panne
secteur est intervenue pendant l’exécution d’une instruction logique. Au
redémarrage, toutes les durées sont comptées à partir du début; par exemple, un
positionnement à temps ou une interruption dans l’instruction WaitTime.

Manuel de référence technique - Vue d’ensemble de RAPID 139


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.3 Synchronisation avec les instructions logiques

2.3 Synchronisation avec les instructions logiques

Instructions logiques
Les instructions sont normalement exécutées de manière séquentielle dans le
programme. Toutefois, les instructions logiques peuvent également être exécutées
sur des positions spécifiques ou en cours de déplacement.
Une instruction logique est une instruction qui ne déclenche pas de déplacement
du robot ou des axes supplémentaires, par exemple une instruction d'E/S.

Exécution séquentielle du programme au niveau des points d’arrêt


Si une instruction de positionnement a été programmée en tant que point d’arrêt,
l’instruction successive ne sera pas exécutée tant que le robot et les axes
supplémentaires ne seront pas arrêtés, c’est-à-dire lorsque la position programmée
aura été atteinte.

xx1100000654

Exécution séquentielle du programme au niveau des points de passage


Si une instruction de positionnement a été programmée en tant que point de
passage, les instructions logiques successives sont exécutées un certain temps
avant d’atteindre la zone la plus importante (pour la position, l’orientation ou les
axes supplémentaires). Voir les figures suivantes. Ces instructions sont ensuite
exécutées dans l’ordre.

xx1100000655

Une instruction logique qui vient à la suite


d’un point de passage est exécutée avant
d’atteindre la zone la plus large.

xx1100000656

Une instruction logique qui vient à la suite


d’un point de passage est exécutée avant
d’atteindre la zone la plus large.

L’instant auquel elles sont exécutées (DT) dépend des composantes de temps
suivantes :
• Temps nécessaire au robot pour planifier le déplacement suivant : environ
0,1 s.

Suite page suivante


140 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.3 Synchronisation avec les instructions logiques
Suite

• Le délai (servo-décalage) du robot en secondes :-0-1,0 s, en fonction de la


vitesse et des possibilités réelles de décélération du robot.

Exécution simultanée du programme


L’exécution simultanée du programme peut être programmée à l’aide de l’argument
\Conc dans l’instruction de positionnement. Cet argument est utilisé pour exécuter
une ou plusieurs instructions logiques en même temps au fur et à mesure du
déplacement du robot, de sorte à réduire le temps de cycle (par exemple lors d'une
communication via un dispositif d’E/S).
Lorsqu’une instruction de positionnement avec l’argument \Conc est exécutée,
les instructions logiques suivantes sont également exécutées (en séquence).
Si le robot ne se déplace pas ou si l’instruc- Si l’instruction de positionnement précédente
tion de positionnement précédente s’est ter- se termine par un point de passage, les ins-
minée par un point d’arrêt, les instructions tructions logiques sont exécutées à un mome-
logiques sont exécutées dès que démarre nt donné (DT) avant d’atteindre la zone la
l’instruction de positionnement actuelle (en plus importante (pour la position, l’orientation
même temps que le déplacement). ou les axes supplémentaires).

xx1100000657

xx1100000658

Les instructions qui affectent indirectement les déplacements (par exemple, ConfL
et SingArea), sont exécutées de la même façon que les autres instructions
logiques. Toutefois, elles n’affectent pas les déplacements demandés par des
instructions de positionnement précédentes.
Si plusieurs instructions de positionnement avec l’argument \Conc et plusieurs
instructions logiques d’une séquence longue sont mélangées, Les instructions
logiques sont exécutées directement dans l’ordre de programmation. Cette
opération a lieu en même temps que le déplacement, ce qui signifie que les

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 141
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.3 Synchronisation avec les instructions logiques
Suite

instructions logiques sont exécutées sur la trajectoire à un stade antérieur à leur


programmation.

xx1100000659

Lors de l’exécution simultanée d’instructions du programme, les instructions


suivantes sont programmées pour mettre fin à la séquence et resynchroniser les
instructions de positionnement et les instructions logiques:
• une instruction de positionnement sans l’argument \Conc
• l'instruction WaitTime ou WaitUntil avec l'argument \Inpos.

Synchronisation de la trajectoire
Pour pouvoir synchroniser l’équipement de traitement (pour des applications telles
que l’encollage, la peinture et le soudage à l’arc) avec les mouvements du robot,
différents types de signal de synchronisation peuvent être générés.
Avec ce que l’on appelle un événement de position, un signal trigonométrique sera
créé lorsque le robot passera par une position définie sur la trajectoire. Avec un
événement de temps, un signal sera créé dans un temps prédéfini avant que le
robot s’arrête à une position d’arrêt. De plus, le système de commande traite
également les événements de balayage, qui génèrent des impulsions à des angles
de phase prédéfinis d’un mouvement de balayage.
Tous les signaux synchronisés avec la position peuvent être créés aussi bien avant
(temps d’avance) qu’après (temps de retard) le moment où le robot passe par la
position prédéfinie. La position est donnée par une position programmée et elle
peut être réglée comme une distance de trajectoire avant la position programmée.
La précision standard de répétition pour un jeu de sorties numériques sur la
trajectoire est de +/- 2 ms.
Si une panne secteur intervient au cours de l’exécution d’une instruction Trigg,
tous les événements déclenchés seront recréés sur la trajectoire restante de
déplacement pour l’instruction Trigg.
Suite page suivante
142 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.3 Synchronisation avec les instructions logiques
Suite

Renseignements connexes

Voir :
Instructions de positionnement Mouvement à la page 58
Définition de la dimension d’une zone Manuel de référence technique - Instructions, fonc-
tions et types de données RAPID

Manuel de référence technique - Vue d’ensemble de RAPID 143


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.4 Configuration du robot

2.4 Configuration du robot

Différents types de configuration du robot


Il est généralement possible d’obtenir la même position et la même orientation de
l’outil du robot de diverses façons, en faisant appel à différentes valeurs d’angle
d’axe. Il s’agit des différentes configurations du robot.
Si, par exemple, une position se situe approximativement au centre d'une cellule
de travail, certains robots peuvent atteindre cette position du dessus et du dessous
en utilisant différentes directions de l’axe 1, tel qu'indiqué à la figure ci-dessous,
où la configuration à droite est obtenir en faisant tourner les bras vers l’arrière.
L’axe 1 est tourné à 180°.

xx1100000660

Certains robots peuvent aussi atteindre cette position du dessus ou du dessous


tout en utilisant la même direction de l’axe 1. Cela est possible pour les types de
robots dont l’axe 3 a un rayon d’action étendu. Sur la figure ci-dessous, deux
configurations de bras différentes sont utilisées pour obtenir la même position et
la même orientation. L’angle de l’axe 1 est identique pour les deux configurations.
La configuration à droite est obtenue en faisant tourner le bras inférieur vers l’avant
et le bras supérieur vers l’arrière.

xx1100000661

Cela peut aussi être obtenu en faisant tourner la partie avant du bras supérieur du
robot (axe 4) pour la mettre « tête en bas » et en faisant tourner les axes 5 et 6
jusqu’à la position et l’orientation souhaitées.

Suite page suivante


144 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.4 Configuration du robot
Suite

Les figures ci-dessous présentent deux configurations de poignet différentes


utilisées pour obtenir la même position et la même orientation. Sur la configuration
où la partie avant du bras supérieur est tournée vers le haut (en bas), l’axe 4 a
effectué une rotation de 180°, l’axe 5 de 180° et l’axe 6 de 180°, afin d’obtenir la
configuration où la partie avant du bras supérieur est tournée vers le bas (en haut).

xx1100000662

Définition de la configuration du robot


Une configuration de robot est également définie avec confdata cf1, cf4,
cf6, cfx lors de la programmation d’une position du robot.
La façon de définir la configuration du robot n’est pas la même pour les différents
types de robots (voir Manuel de référence technique - Instructions, fonctions et
types de données RAPID - confdata, pour obtenir une description complète).
Toutefois, pour la plupart des types de robots, il faut définir les quarts de tour
corrects pour les axes 1, 4 et 6. Par exemple, si l’axe 1 se situe entre 0 et 90°,
cf1=0 Voir les figures ci-dessous.

xx1100000663 xx1100000664

Rotation d’un quart de tour pour un angle Rotation d’un quart de tour pour un angle
d’articulation positif d’articulation négatif

Commande et surveillance de la configuration


Pour arriver à un mouvement du robot bien défini, il est généralement préférable
de laisser le robot parvenir à la même configuration que celle spécifiée dans le
programme pendant l’exécution du programme. Pour ce faire, la commande et la
surveillance de la configuration avec ConfL\On ou ConfJ\On doivent être utilisées.
La surveillance de la configuration implique une comparaison entre la configuration
de la position programmée et celle du robot.
Au cours du mouvement linéaire, le robot se déplace toujours vers la configuration
possible la plus proche. Si le contrôle des configurations est actif avec ConfL\On,
une vérification est effectuée à l’avance afin de savoir s’il est possible d’atteindre

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 145
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.4 Configuration du robot
Suite

la configuration programmée. Si c’est impossible, le programme est arrêté. Lorsque


le mouvement est terminé (dans une zone ou un point fin), il est également vérifié
que le robot a atteint la configuration programmée. Si la configuration est différente,
le programme est arrêté. Pour une description détaillée des données de
configuration pour un type de robot spécifique, reportez-vous au type de données
confdata dans le Manuel de référence technique - Instructions, fonctions et types
de données RAPID.
Pendant le mouvement de chaque axe, le robot se déplace toujours vers la
configuration programmée lorsque ConfJ\On est utilisé. Aucune supervision des
mouvements de l’axe n’est effectuée lorsque la commande de configuration est
activée. Cela peut donc provoquer un grand mouvement, notamment du poignet,
en fonction de la différence entre la configuration du point de départ et la
configuration du point d’arrivée. Si la supervision de la configuration n’est pas
active, le robot se déplace vers la position et l’orientation spécifiées de la
configuration qui possèdent les valeurs d’axe les plus proches du point de départ.
Lorsque l’exécution d’une position programmée est arrêtée à cause d’une erreur
de configuration, cela est souvent dû à certaines des causes suivantes :
• La position a été programmée hors ligne avec une configuration erronée.
• Comme l’outil du robot a été changé, la configuration du robot est différente
de celle qui a été programmée.
• La position dépend d’une opération sur le repère actif (déplacement,
utilisateur, objet, base).
• Vous pouvez déterminer la configuration correcte à la position de destination
en positionnant le robot près de cette dernière et en lisant la configuration
sur le FlexPendant.
Si les paramètres de configuration changent à cause d’une opération sur le repère
actif, le contrôle de la configuration peut être désactivé.

Informations détaillées pour ConfJ


MoveJ avec ConfJ\Off :
• Le robot est déplacé vers la position programmée, avec une position d'axe
aussi proche que possible de celle de départ. Cela signifie que le confdata
dans l'instruction n'est pas utilisé. Aucune supervision de la configuration
n'est effectuée.
MoveJ avec ConfJ\On :
• Le robot est déplacé vers la position programmée, avec une position d'axe
telle que la configuration correspondante est identique à ou proche de la
configuration programmée dans le confdata.
• Si le déplacement d’un programme ou la correction d’une trajectoire est
activé(e), il y a un risque que la configuration programmée soit différente de
la position initiale. Ainsi, le robot peut effectuer de grands mouvements de
l’axe du poignet afin d’atteindre la configuration programmée.

Suite page suivante


146 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.4 Configuration du robot
Suite

Informations détaillées pour ConfL


MoveL avec ConfL\Off :
• Le robot est déplacé le long d’une ligne droite vers la position programmée,
avec une position d’axe aussi proche que possible de celle de départ. Cela
signifie que le confdata dans l’instruction n’est pas utilisé. Aucune
supervision de la configuration n’est effectuée.
MoveL avec ConfL\On :
• D'abord, la position de fin est calculée pour les articulations à l'aide du
confdata programmé afin de déterminer la solution. Ensuite, les valeurs
d'articulation pour les axes de configuration en position finale sont comparées
aux axes correspondants pour la position de départ.
Si les nouvelles données de configuration comparées au point de départ
sont correctes, le déplacement est autorisé. Dans les autres cas, le robot
s’arrête en position de départ avec un message d’erreur. Pour plus de détails
sur l’erreur de configuration autorisée pour différents types de robot,
consultez la description du confdata, Manuel de référence
technique - Instructions, fonctions et types de données RAPID.
• Si aucune erreur n'a été signalée avant le début du déplacement, le système
vérifie à nouveau la configuration une fois le déplacement terminé. Si elle
est différente de la configuration programmée, le programme est arrêté.

Renseignements connexes

Voir :
Définition d'une configuration de robot Manuel de référence technique - Instructions,
fonctions et types de données RAPID
Activation/désactivation de la supervision Mouvement à la page 58
de la configuration

Manuel de référence technique - Vue d’ensemble de RAPID 147


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.5 Modèles cinématiques de robot

2.5 Modèles cinématiques de robot

Cinématique de robot
La position et l’orientation d’un robot sont déterminées à partir du modèle
cinématique de sa structure mécanique. Pour chaque installation, il est nécessaire
que les modèles des unités mécaniques spécifiques soient définis. Pour les robots
ABB principal et externe, ces modèles sont prédéfinis dans la baie.

Robot principal
Le modèle cinématique du robot principal modélise la position et l’orientation de
l’outil du robot par rapport à sa base comme une fonction des angles des
articulations du robot.
Les paramètres de cinématique spécifiant les longueurs de bras, les écarts et le
comportement aux articulations sont prédéfinis dans le fichier de configuration de
chaque type de robot.

xx1100000666

Suite page suivante


148 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.5 Modèles cinématiques de robot
Suite

Une procédure d’étalonnage permet la définition du repère de base du robot


principal par rapport au repère atelier.

xx1100000667

Robot externe
La coordination avec un robot externe nécessite également un modèle cinématique
pour le robot externe. Un certain nombre de classes prédéfinies de structures
mécaniques dimensionnelles 2 et 3 est permis.
La figure ci-dessous présente une structure cinématique d’un robot ORBIT 160B
utilisant un modèle prédéfini.

xx1100000668

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 149
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.5 Modèles cinématiques de robot
Suite

Les procédures d’étalonnage pour définir le référentiel de base par rapport au


repère atelier sont fournies pour chaque classe de structures.

xx1100000669

Référentiel de base d'un robot


ORBIT_160B.

xx1100000670

Points de référence de table tournante pour l’étalonnage


du référentiel de base d’un robot ORBIT_160B en position
de repos, à l’aide d’un modèle prédéfini.

Cinématique générale
Les structures mécaniques non prises en charge par les structures prédéfinies
peuvent être modélisées à l’aide d’un modèle de cinématique générale. Ceci est
possible pour les robots externes.
La modélisation est basée sur la convention Denavit-Hartenberg, d’après l’ouvrage
Introduction to Robotics, Mechanics & Control de John J. Craigh (Addison-Wesley
1986).
La figure ci-dessous présente une structure cinématique d’un robot ORBIT 160B
utilisant un modèle cinématique général.

xx1100000671

Suite page suivante


150 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.5 Modèles cinématiques de robot
Suite

Une procédure d’étalonnage permet la définition du référentiel de base du robot


externe par rapport au repère atelier.

xx1100000672

Référentiel de base d’un robot OR-


BIT_160B utilisant un modèle de ciné- xx1100000673
matique général.
Points de référence de table tournante pour l’étalo-
nnage du référentiel de base d’un robot OR-
BIT_160B en position de repos (articulations =
0 degré).

Renseignements connexes

Voir :
Définition de la cinématique générale d'un Manuel de référence technique - Paramètres
robot externe système

Manuel de référence technique - Vue d’ensemble de RAPID 151


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.6 Supervision de déplacement/détection de collision

2.6 Supervision de déplacement/détection de collision

Introduction
Supervision du déplacement est le nom donné à un ensemble de fonctions
permettant un contrôle très précis du robot et de ses mouvements en fonction du
modèle. La supervision du déplacement comprend la fonctionnalité de détection
des collisions, des blocages et des définitions incorrectes de charge. Cette
fonctionnalité est appelée détection de collision (option Collision Detection).
La détection de collision peut se déclencher si les charges montées sur le robot
ne sont pas correctement définies. Il s’agit des données de charge des outils, des
charges utiles et des charges des bras. Si les données de l’outil ou de la charge
utile ne sont pas connues, la fonction d’identification de charge peut être utilisée
pour les définir. Les données de charge des bras ne peuvent pas être identifiées.
Lorsque la détection des collisions est déclenchée, le robot s’arrête le plus vite
que possible. Par défaut, les couples sont inversés et les freins sont appliqués,
mais il est également possible de configurer un arrêt qui n’utilise pas les freins.
Par défaut, le contrôle de mouvement est actif uniquement lorsqu'au moins un axe
(y compris les axes supplémentaires) est en mouvement. Lorsque tous les axes
sont immobiles, la fonction est désactivée. Ceci afin d'éviter le déclenchement
inutile dû à des forces de processus externes. Le paramètre Collision detection at
standstill permet de détecter une collision, même à l'arrêt, voir Manuel de référence
technique - Paramètres système.

Mise au point des niveaux de détection des collisions


La détection de collision utilise un niveau de supervision variable. Elle est plus
sensible à faible vitesse qu’à vitesse élevée. Pour cette raison, l’utilisateur n’a pas
besoin d’effectuer une mise au point de la fonction dans les conditions normales
d’utilisation. Toutefois, il est possible d’activer et de désactiver la fonction, et
d’effectuer une mise au point des niveaux de supervision. Des paramètres de mise
au point séparés sont disponibles pour le pilotage manuel et l’exécution du
programme. Les différents paramètres de réglage sont décrits en détail à la Manuel
de référence technique - Paramètres système.
Une instruction RAPID appelée MotionSup permet d’activer et de désactiver la
fonction et de modifier le niveau de surveillance. Cette instruction est utile lorsque
des forces de processus externes agissent sur le robot à certaines étapes du cycle.
L'instruction MotionSup est décrite en détail à la Manuel de référence
technique - Instructions, fonctions et types de données RAPID.
Les valeurs de réglage sont indiquées sous forme de pourcentages du réglage de
base ; 100 % correspond aux valeurs de base. Si un pourcentage est augmenté,
le système est moins sensible et s’il est diminué, l’effet est inverse. Il est important
de remarquer que si les valeurs de réglage sont définies dans les paramètres du
système et dans l’instruction RAPID, les deux valeurs sont prises en compte.

Suite page suivante


152 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.6 Supervision de déplacement/détection de collision
Suite

Exemple : si la valeur de réglage est de 150 % dans les paramètres du système


et de 200 % dans l’instruction RAPID, le niveau de réglage résultant est de 300 %.

xx1100000674

Il existe un niveau maximal pour le niveau de réglage total de la détection de


collision. Cette valeur est définie par défaut sur 300 %, mais peut être modifiée via
le paramètre système motion_sup_max_level.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 153
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.6 Supervision de déplacement/détection de collision
Suite

Modification de supervision de mouvement


Pour modifier le contrôle de mouvement, ouvrez les tâches.
1 Appuyez sur Tâche, puis sélectionnez une tâche. Si vous disposez de
plusieurs tâches, vous devez définir séparément les valeurs souhaitées pour
chaque tâche.
2 Appuyez sur OFF/ON pour supprimer ou activer la supervision de trajectoire.
Appuyez sur -/+ pour régler la sensibilité. La sensibilité peut être réglée entre
0 et 300. À moins que l'option Collision Detection soit installée, la supervision
de trajectoire n'affecte le robot qu'en mode vitesse maximale automatique
ou manuelle.
3 Appuyez sur OFF/ON pour supprimer ou activer la supervision du pilotage
manuel. Appuyez sur -/+ pour régler la sensibilité. La sensibilité peut être
réglée entre 0 et 300. Ce paramètre n'a aucun effet, a moins que l'option
Collision Detection soit installée.
Pour plus d’informations sur Collision Detection, consultez le Application
manual - Controller software IRC5.

Sorties numériques
La sortie numérique MotSupOn est élevée lorsque la fonction de détection de
collision est active. Elle est faible lorsque cette dernière n’est pas active. Remarque
: une modification de l’état de la fonction devient effective dès qu’un déplacement
est commencé. C’est pourquoi MotSupOn est élevée si la détection de collision
est active et le robot en déplacement. Si le robot est arrêté et la fonction désactivée,
MotSupOn demeure élevée. Lorsque le robot commence à se déplacer, MotSupOn
devient faible.
La sortie numérique MotSupTrigg augmente lorsque la détection de collision se
déclenche. Elle reste élevée jusqu’à ce que le code d’erreur soit acquitté depuis
le FlexPendant ou depuis l’entrée numérique AckErrDialog.
Les sorties numériques sont décrites en détail dans les sections Manuel
d’utilisation - IRC5 avec FlexPendant et Manuel de référence technique - Paramètres
système.

Limitations
La supervision du déplacement est disponible uniquement pour les axes du robot.
Elle n’est pas disponible pour les axes de translation, les stations périphériques
ou tout autre manipulateur externe.
La détection de collision est désactivée lorsqu’un axe au minimum se trouve en
mode d’articulation indépendante. C’est aussi le cas lorsqu’il s’agit d’un axe
supplémentaire utilisé comme une articulation indépendante.
La détection de collision peut se déclencher lorsque le robot est utilisé en mode
de servo mou. C’est pourquoi il est recommandé de désactiver la détection de
collision lorsque le robot est en mode de servo mou.
Si l’instruction RAPID MotionSup est utilisée pour désactiver la détection de
collision, elle devient effective uniquement lorsque le robot commence à se

Suite page suivante


154 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.6 Supervision de déplacement/détection de collision
Suite

déplacer. Par conséquent, la sortie logique MotSupOn peut être temporairement


élevée au démarrage du programme, avant que le robot commence à se déplacer.
La distance de recul du robot après une collision est proportionnelle à la vitesse
de déplacement avant la collision. En cas de collisions répétées à faible vitesse,
le robot risque de reculer insuffisamment pour supprimer la contrainte de collision.
Il peut alors s’avérer impossible de piloter le robot manuellement sans le
déclenchement de la supervision. Dans ce cas, utilisez le menu de pilotage manuel
pour désactiver la détection de collision temporairement, puis éloignez le robot de
l’obstacle par pilotage manuel.
En cas de collision sérieuse pendant l’exécution du programme, quelques secondes
risquent de s’écouler avant que le robot ne commence à reculer.
Si le robot est monté sur un axe linéaire, la détection de collision doit être arrêtée
quand l’axe se déplace. Si elle n’est pas arrêtée, elle risque de se déclencher
quand l’axe se déplace, même en l’absence de collision.

Renseignements connexes

Voir :
Instruction RAPID MotionSup Mouvement à la page 58
Paramètres de mise au point du système Manuel de référence technique - Paramètres
système
Signaux d'E/S de supervision de mouve- Manuel de référence technique - Paramètres
ment système
Détection de collision à l'arrêt Manuel de référence technique - Paramètres
système
Arrêt anti-collision indépendant sans frein Manuel de référence technique - Paramètres
système
Identification de la charge Manuel d’utilisation - IRC5 avec FlexPendant

Manuel de référence technique - Vue d’ensemble de RAPID 155


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.7 Singularités

2.7 Singularités

Description
Certaines positions au sein de l’espace de travail du robot peuvent être obtenues
à l’aide d’un nombre infini de configurations de robot permettant de positionner et
d’orienter l’outil. Ces positions, que l’on appelle points singuliers (singularités),
constituent un problème lorsqu’on doit calculer les angles du bras du robot à partir
de la position et de l’orientation de l’outil.
Généralement, un robot comporte deux types de singularité : singularités du bras
et singularités du poignet.
Les singularités du bras sont toutes les configurations où le centre du poignet (les
intersections des axes 4, 5 et 6) se trouvent directement au-dessus de l'axe 1. Les
singularités du poignet correspondent aux configurations pour lesquelles les axes 4
et 6 se situent sur la même ligne, l’angle de l'axe 5 étant alors égal à 0.

xx1100000676

La singularité du poignet a lieu lorsque


l’angle de l’axe 5 est à 0°.
xx1100000675

La singularité du bras a lieu à l’intersection du


centre du poignet et de l’axe 1.

Suite page suivante


156 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.7 Singularités
Suite

Points de singularité des robots sans bielle parallèle


Les robots sans bielle parallèle (robots à liaison série) comportent une singularité
au niveau du poignet et du bras, et possèdent également une troisième singularité.
Cette singularité apparaît dans les positions du robot pour lesquelles le centre du
poignet et les centres de rotation des axes 2 et 3 se trouvent sur la même droite,
voir la figure ci-dessous).

xx1100000677

Les points de singularité des robots à liaison sérielle avec 7 axes


Les robots à liaison sérielle avec 7 axes, tels que le IRB 14000/14050, ont toutes
les singularités des robots à 6 axes mais ont également deux singularités
supplémentaires.
La première est lorsque l'axe 2 a un angle égal à zéro, de sorte que l'axe 1 et l'axe
7 sont sur la même ligne. Cela est similaire à la singularité du poignet.
La seconde singularité est liée au calcul de l'angle du bras et varie en fonction de
la direction de référence configurée, car la singularité se produit lorsque le WCP
est sur la direction de référence. Pour de plus amples informations, voir Arm-Angle
Reference Direction dans Manuel de référence technique - Paramètres système.

Exécution d’un programme à travers des singularités


Lors de l’interpolation d’une articulation, le robot n’éprouve aucun problème à
traverser des points singuliers.
Lors d’une trajectoire linéaire ou circulaire à proximité d’une singularité, les vitesses
dans certaines articulations (1 et 6/4 et 6) peuvent être très élevées. Pour ne pas
dépasser les vitesses maximales d’articulation, la vitesse en trajectoire linéaire
est réduite.
Ces vitesses d’articulation élevées peuvent être réduites à l’aide du mode
(SingArea\Wrist) lorsque les axes des poignets sont interpolés en angles
Suite page suivante
Manuel de référence technique - Vue d’ensemble de RAPID 157
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.7 Singularités
Suite

d’articulation, tout en maintenant la trajectoire linéaire de l’outil. Cependant, cela


introduit une erreur d’orientation par rapport à une interpolation linéaire intégrale.
On notera que la configuration du robot change énormément quand il passe près
d’une singularité avec interpolation linéaire ou circulaire. Pour éviter toute
reconfiguration, la première position de l’autre côté de la singularité devra être
programmée avec une orientation qui rende inutile la reconfiguration.
On notera également que le robot ne devrait pas être dans sa singularité quand
seules les articulations externes bougent, car cela provoquerait des mouvements
inutiles de ces articulations.
Pour les robots à 7 axes ou plus, le robot peut automatiquement ajuster l'angle du
bras afin d'éviter certaines singularités, voir Manuel d’utilisation - IRC5 avec
FlexPendant.

Pilotage manuel à travers des singularités


Lors de l’interpolation d’une articulation, le robot n’éprouve aucun problème à
traverser des points singuliers.
Durant l'interpolation linéaire, le robot ne peut pas passer des points singuliers.
Se rapprocher des singularités peut entraîner une vitesse TCP moindre tout en
ayant de grands mouvements d'articulation.

Renseignements connexes

Voir :
Contrôle du comportement du robot à Manuel de référence technique - Instructions,
proximité des points singuliers fonctions et types de données RAPID

158 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.8 Limitation d’accélération optimisée

2.8 Limitation d’accélération optimisée

Description
L’accélération et la vitesse du robot sont contrôlées, de manière continue, afin de
ne pas dépasser les limites définies.
Les limites sont définies par le programme de l’utilisateur (par exemple, vitesse
programmée ou AccSet) ou par le système lui-même (par exemple, couple maximal
dans un réducteur ou un moteur, contrainte ou couple maximal dans la structure
du robot).

Chargement des données


Tant que les données de charge (masse, centre de gravité et inertie) se trouvent
dans les limites du diagramme de charge et qu’elles sont introduites correctement
dans les données d’outil, aucune limite d’accélération définie par l’utilisateur n’est
nécessaire et la durée de vie du robot est automatiquement garantie.
Si les données de charge se trouvent en dehors des limites du diagramme de
charge, des restrictions particulières peuvent s’avérer nécessaires, c’est-à-dire
AccSet ou une vitesse plus basse, comme spécifié sur la demande d’ABB.

Accélération du TCP
L’accélération et la vitesse du TCP sont contrôlées par le planificateur de trajectoire,
avec l’aide d’un modèle dynamique complet des bras du robot, incluant les charges
définies par l’utilisateur.
L’accélération et la vitesse du TCP dépendent de la position, de la vitesse et de
l’accélération de tous les axes à tout moment ; l’accélération réelle varie donc de
manière continue. De cette manière, on obtient un temps de cycle optimal,
c'est-à-dire qu'au moins une des limites se trouve à sa valeur maximale à chaque
instant. Cela signifie que les moteurs et la structure du robot sont utilisés à tout
moment au maximum de leur capacité.

Manuel de référence technique - Vue d’ensemble de RAPID 159


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.9 Zones atelier

2.9 Zones atelier

Description des zones atelier


Grâce aux zones atelier (option World Zones), le robot s’arrête ou une sortie est
automatiquement définie quand le robot se trouve dans une zone spéciale définie
par l’utilisateur. Voici quelques exemples d’applications :
• Quand deux robots ont une partie de leurs zones de travail en commun. Le
risque de collision entre deux robots peut être éliminé de façon sûre à l’aide
de ces signaux.
• Quand un équipement externe se trouve dans la zone de travail du robot.
Une zone de travail “interdite” peut être créée pour éviter que le robot n’entre
en collision avec cet équipement.
• Cela signifie que le robot est dans une position dans laquelle il est possible
de démarrer l’exécution du programme à partir d’une API.

AVERTISSEMENT

Pour des raisons de sécurité, ce logiciel ne doit pas être utilisé pour la protection
des individus. Pour ce faire, utilisez un équipement de protection matérielle.

Utilisation des zones atelier


Utilisez les zones atelier :
• Pour indiquer que le point d’outil se trouve à un endroit précis de la zone de
travail.
• Pour limiter la zone de travail du robot afin d'éviter une collision avec l'outil.
• Pour rendre une zone de travail commune à deux robots, accessible à un
seul robot à la fois.

Suite page suivante


160 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.9 Zones atelier
Suite

Définition des zones atelier dans le système de coordonnées atelier


Définition des zones atelier dans le système de coordonnées atelier Les côtés des
boîtes sont parallèles aux axes de coordonnées et les axes des cylindres sont
parallèles à l'axe des Z du système de coordonnées atelier.

xx1100000678

Une zone atelier peut être définie comme étant à l’intérieur ou à l’extérieur d’une
boîte, d’une sphère ou d’un cylindre.
Une zone atelier peut également être définie pour les articulations. La zone doit
être définie entre (intérieur) ou pas entre (extérieur) deux valeurs d’articulation
pour n’importe quel robot ou axe supplémentaire.

Supervision du TCP d’un robot

xx1100000679

Le mouvement du point central de l’outil est supervisé, ainsi que tous les autres
points du robot.
Le TCP est toujours supervisé, quel que soit le mode de fonctionnement, pendant
l'exécution d'un programme ou au cours d'un pilotage manuel par exemple.

TCP fixes
Si le robot tient un objet de travail et travaille sur un outil stationnaire, un TCP fixe
est utilisé. Si cet outil est actif, il ne se déplace pas et, s’il se trouve à l’intérieur
d’une zone atelier, il y reste.

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 161
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.9 Zones atelier
Suite

Actions
Définir une sortie numérique lorsque le TCP est à l'intérieur d'une zone atelier.
Cette action définit une sortie numérique lorsque le TCP est à l’intérieur d’une
zone atelier. Elle est utile pour indiquer que le robot s’est arrêté dans une zone
spécifique.

xx1100000680

Définir une sortie numérique avant que le TCP n’atteigne une zone atelier.
Cette action définit une sortie numérique avant que le TCP n’atteigne une zone
atelier. Elle peut être utilisée pour arrêter le robot juste à l'intérieur de la zone
atelier.

xx1100000681

Arrêt du robot avant que le TCP n’atteigne une zone atelier.


Une zone atelier peut être définie comme se trouvant en dehors de la zone de
travail. Le robot s'arrête au cours de son mouvement vers la zone lorsque le TCP
se trouve juste en dehors de la zone atelier.

xx1100000682

Si le robot a été déplacé dans une zone atelier définie comme étant en dehors de
la zone de travail, par exemple en desserrant les freins et en le poussant
manuellement, la seule façon de sortir le robot de la zone est d’utiliser le pilotage
manuel ou de le pousser manuellement, les freins desserrés.

Suite page suivante


162 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.9 Zones atelier
Suite

Taille minimale des zones atelier.


La supervision du mouvement du point d’outil est effectuée à des points discrets,
à des intervalles dépendants de la résolution de la trajectoire. L'utilisateur doit
s'assurer que les zones sont suffisamment grandes pour que le robot ne puisse
pas les traverser sans vérification.
Assurez-vous que les zones sont légèrement supérieures à la taille minimum.

xx1100000683

Si la même sortie numérique est utilisée pour plus d’une zone atelier, la distance
entre les zones doit être supérieure à la taille minimale indiquée dans le tableau
ci-dessus, afin d’éviter que la sortie n’ait une valeur incorrecte.
Il est possible que le robot passe par un coin d'une zone sans la voir si le temps
que passe le robot dans la zone est trop court. Assurez-vous donc que la zone est
plus grande que la zone dangereuse.

xx1100000684

Si les zones atelier sont utilisées avec un servo mou, la taille de la zone doit être
augmentée de façon à compenser le décalage du servo mou. Le décalage du servo
mou est la distance entre le TCP du robot et la supervision de la zone atelier au
temps d’interpolation. Le décalage du servo mou sera augmenté avec davantage
de souplesse définie via l'instruction SoftAct.

Nombre maximum de zones atelier


Un maximum de 20 zones atelier peuvent être définies simultanément.
Suite page suivante
Manuel de référence technique - Vue d’ensemble de RAPID 163
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.9 Zones atelier
Suite

Panne secteur, redémarrage et marche en avant


Les zones atelier fixes sont effacées à la mise hors tension et doivent être
réinsérées à la mise sous tension par une routine d’événement connectée à
l’événement MISE EN MARCHE.
Les zones atelier temporaires résistent à une panne secteur, mais sont effacées
quand un nouveau programme est chargé ou quand un programme est démarré
à partir du programme principal (PP to Main ou PP to routine).
Les sorties numériques des zones atelier sont d'abord mises à jour sur Moteurs
en marche. C'est-à-dire que, lorsque le contrôleur est redémarré, l'état de la zone
atelier sera défini à l'extérieur lors du démarrage. Lorsque, après un redémarrage,
les moteurs sont pour la première fois mis en marche, l'état de la zone atelier est
correctement mis à jour.
Si le robot se déplace pendant la mise en marche des moteurs, l'état de la zone
atelier n'est pas mis à jour jusqu'à la prochaine commande Moteurs en marche.
Un arrêt d'urgence brusque (pas SoftAS, SoftGS ou SoftES) peut provoquer un
état de la zone atelier incorrect, car le robot peut pénétrer dans la zone ou en sortie
pendant le mouvement d'arrêt, sans mise à jour des signaux de zone atelier. Les
signaux de zone atelier seront correctement mis à jour après une nouvelle
commande Moteurs en marche.

Renseignements connexes

Principes de déplacement Systèmes de coordonnées


et d’E/S
Types de données : Manuel de référence technique - Instructions, fonctions et types
• wztemporary de données RAPID
• wzstationary
• shapedata
Instructions: Manuel de référence technique - Instructions, fonctions et types
• WZBoxDef de données RAPID
• WZSphDef
• WZCylDef
• WZHomeJointDef
• WZLimJointDef
• WZLimSup
• WZDOSet
• WZDisable
• WZEnable
• WZFree

164 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.10 Principes d’E/S

2.10 Principes d’E/S

Description
Généralement, le robot comporte une carte E/S ou plus. Chaque carte comporte
plusieurs canaux numériques et/ou analogiques qui doivent être connectés à des
signaux logiques avant de pouvoir être utilisés. Ceci est effectué au niveau des
paramètres du système et, généralement, a déjà été effectué à l’aide de noms
standard lorsque le robot est livré. Vous devez toujours utiliser des signaux logiques
en cours de programmation.
Un canal physique peut être connecté à plusieurs signaux logiques, mais peut
également ne pas avoir de connexions logiques, comme indiqué à la figure
ci-dessous.
Pour que vous puissiez utiliser une carte d'E/S, ses canaux doivent recevoir des signaux logiques
déterminés. Sur la figure ci-dessous, la sortie physique 2 est connectée à deux signaux logiques
différents. Par contre, IN16 n’a pas de signal logique et ne peut donc pas être utilisée.

xx1100000685

Caractéristiques des signaux


Les caractéristiques d’un signal dépendent du canal physique utilisé, mais aussi
du mode de définition de ce canal dans les paramètres du système. Le canal
physique détermine les délais et les niveaux de tension (voir les spécifications du
produit dans le système de commande du robot). Les caractéristiques, les temps
de filtre et la mise à l’échelle entre les valeurs programmées et les valeurs
physiques sont définis dans les paramètres du système.
Lorsque le robot est mis sous tension, tous les signaux sont remis à zéro. Toutefois,
ils ne sont pas affectés par les arrêts d’urgence ou tout autre événement similaire.
Une sortie peut être réglée sur 1 ou sur 0 à partir du programme même. Ceci peut
également être effectué à l’aide d’un délai ou d’une impulsion. Si une impulsion
ou un changement retardé est demandé pour une sortie, l’exécution du programme
continue. Le changement est ensuite effectué sans pour autant affecter le reste

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 165
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.10 Principes d’E/S
Suite

de l’exécution du programme. Si, par contre, un nouveau changement est demandé


pour la même sortie avant que le délai donné se soit écoulé, le premier changement
n’aura pas lieu.
La figure ci-dessous présente un exemple où l’instruction SetDO n’est pas effectuée parce qu’une
nouvelle commande est donnée avant que le délai donné ne soit écoulé.

xx1100000686

Signaux connectés à une interruption


Les fonctions d’interruption de RAPID peuvent être connectées à des variations
de signaux logiques. La fonction peut être appelée sur un front montant ou
descendant du signal. Si la variation du signal logique est très rapide, l’interruption
peut toutefois ne pas avoir lieu.
Par exemple, si une fonction est connectée à un signal appelé do1 et le code de
programme se présente comme suit :
SetDO do1,1;
SetDO do1,0;
Le signal passe d’abord à une valeur haute (1), puis à une valeur basse (0) en
quelques millisecondes. Dans ce cas, il se peut que l'interruption soit perdue. Pour
être sûr que l’interruption ait lieu, assurez-vous que le signal est passé à 1, avant
de le passer à 0.
Par exemple :
SetDO do1,1;
WaitDO do1 ,1;
SetDO do1,0;
Cette méthode permet d'éviter toute perte d'interruption.

Signaux système
Les signaux logiques peuvent être interconnectés à l’aide de fonctions système
spéciales. Si, par exemple, une entrée est connectée à la fonction système Start,
un démarrage de programme est automatiquement généré dès que cette entrée
est validée. Ces fonctions système sont généralement uniquement validées en
mode automatique.

Suite page suivante


166 Manuel de référence technique - Vue d’ensemble de RAPID
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
2 Programmation de mouvement et d'E/S
2.10 Principes d’E/S
Suite

Interconnexions
Les signaux logiques peuvent être interconnectés de façon à ce qu’ils influent
automatiquement les uns sur les autres :
• Un signal de sortie peut être connecté à un ou plusieurs signaux d’entrée
ou de sortie.
• Un signal d’entrée peut être connecté à un ou plusieurs signaux d’entrée ou
de sortie.
• Si le même signal est utilisé sur plusieurs interconnexions, la valeur de ce
signal est la dernière valeur établie (changée).
• Les interconnexions peuvent être reliées. Autrement dit, une interconnexion
peut en influencer une autre. Toutefois, elles en doivent pas être connectées
de façon à former un "cercle vicieux" ; par exemple, interconnecter di1 à
di2 alors que di2 est interconnecté à di1.
• S’il y a une interconnexion sur un signal d’entrée, la connexion physique
correspondante est automatiquement invalidée. Tout changement apporté
à ce canal physique ne sera par conséquent pas détecté.
• Les impulsions ou les délais ne sont pas transmis via les interconnexions.
• Les conditions logiques peuvent être définies à l’aide de NOT, AND, et OR.

Exemples Description
di2=di1 Si di1 change, di2, di3 et do4 seront modifiés vers la valeur
di3=di2 correspondante.
do4=di2
do8=do7 Si do7 est défini sur 1, do8 sera également défini sur 1. Si di5 est
do8=di5 ensuite défini sur 0, do8 sera également modifié (bien que do7 soit
toujours défini sur 1).
do5 = di6 AND do5 est défini sur 1 si di6 et do1 sont définis sur 1.
do1

Limitations
Un maximum de 10 signaux peuvent être pulsés en même temps et un maximum
de 20 signaux peuvent être retardés en même temps.

Renseignements connexes

Décrit dans :
Définition des cartes et signaux d'E/S Manuel de référence technique - Paramètres sys-
tème
Instructions de gestion d’E/S Signaux d'entrée et de sortie à la page 67
Manipulation manuelle d'E/S Manuel d’utilisation - IRC5 avec FlexPendant

Manuel de référence technique - Vue d’ensemble de RAPID 167


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
Cette page a été volontairement laissée vierge
3 Glossaire

3 Glossaire
Glossaire

Terme Description
Argument Les parties d'une instruction qui peuvent être modifiées, c'est à
dire n'importe quoi, à l'exception du nom de l'instruction.
Mode automatique Le mode en application lorsque le sélecteur du mode de fonctio-
nnement est réglé sur .

xx1100000688

Composante Une partie d’un enregistrement.


Configuration La position des axes du robot à un emplacement particulier.
Constante Données qui peuvent être modifiées manuellement.
Trajectoire de raccorde- La trajectoire générée à un point de passage.
ment
Déclaration La partie d’une routine ou de données qui définit leurs propriétés.
Dialogue/Boîte de dia- Les boîtes de dialogue sur le FlexPendant doivent toujours être
logue reconnues (généralement en appuyant sur OK ou Annuler)
avant de pouvoir les fermer.
Gestionnaire d'erreurs Une partie séparée d’une routine dans laquelle une erreur peut
être traitée. L’exécution normale peut ensuite redémarrer auto-
matiquement.
Expression Une séquence de données et d’opérandes associés ; par exe-
mple, reg1+5 ou reg1>5.
Point de passage Un point à proximité duquel le robot ne fait que passer, sans
s’arrêter. La distance jusqu’à ce point dépend de la taille de la
zone programmée.
Fonction Une routine qui renvoie une valeur.
Groupe de signaux Plusieurs signaux digitaux qui sont regroupés et traités comme
un seul signal.
Interruption Un événement qui interrompt temporairement l’exécution d’un
programme qui exécute une routine d’interruption.
E/S Entrées et sorties électriques.
Routine principale La routine qui démarre habituellement lorsque le bouton de dé-
marrage est pressé.
Mode manuel Le mode en application lorsque le contacteur de mode de fonc-
tionnement est réglé sur ce mode

xx1100000687

Suite page suivante


Manuel de référence technique - Vue d’ensemble de RAPID 169
3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
3 Glossaire
Suite

Terme Description
Unité mécanique Un groupe d'axes supplémentaires.
Module Un groupe de routines et de données, c'est-à-dire une partie du
programme.
Moteurs en marche/à l’ar- L’état du robot, c'est-à-dire si l’alimentation électrique des mo-
rêt teurs est enclenchée ou non.
Panneau de commande Le panneau situé à l'avant du contrôleur.
Orientation Le sens d'un outil terminal.
Paramètre Les données d’entrée d’une routine, envoyées avec un appel
de routine. Elles correspondent à l’argument d’une instruction.
Persistante Une variable dont la valeur est persistante.
Procédure Une routine qui, lorsqu’elle est appelée, peut former une instru-
ction indépendamment.
Programme L’ensemble d’instructions et de données qui définissent la tâche
du robot.
Cependant, les programmes ne contiennent pas de modules
système.
Données de programme Données auxquelles on peut accéder dans un module complet
ou dans le programme complet.
Module de programme Module inclus dans le programme du robot et transféré lors de
la copie du programme sur une disquette.
Enregistrement Un type de données composé.
Routine Un sous-programme.
Données de routine Données locales qui ne peuvent être utilisées que dans une
routine.
Point de départ L’instruction qui sera exécutée en premier lieu lors du démarrage
de l’exécution du programme.
Point d'arrêt Point auquel le robot s'arrête avant de passer au point suivant.
Module de système Un module qui est toujours présent dans la mémoire du progra-
mme. Lors de la lecture d’un nouveau programme, le module
système reste dans la mémoire du programme.
Paramètres système Les paramètres qui définissent l’équipement du robot et ses
propriétés ; en d’autres termes, ce sont les données de configu-
ration.
Point central de l'outil Point (généralement situé sur la pointe d'un outil) qui se déplace
(TCP) le long de la trajectoire programmée à la vitesse programmée.
Routine d'interruption La routine qui définit la marche à suivre lorsque survient une
interruption spécifique.
Variable Données qui peuvent être modifiées dans un programme, mais
qui perdent leur valeur (reviennent à leur valeur initiale) lorsqu'un
programme est redémarré depuis le début.
Zone L’espace sphérique qui entoure un point de passage. Dès que
le robot pénètre dans cette zone, il commence à se déplacer
jusqu’à la position suivante.

170 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
Index

Index déplacement articulaire, 58


déplacement circulaire, 58
déplacement linéaire, 58
7 détection de collision, 64, 152
7 axes robots, 157
DIV, 38
A dnum, 51
affectation d'une valeur à des données, 50 domaine
AND, 38 données, 30
Appel de procédure, 25 routine, 21
appels de fonction, 42 données, 28
argument, 169 affectation de valeurs, 50
conditionnel, 42 classe de sauvegarde, 35
argument conditionnel, 42 constante, 30
arguments déclarations, 30
description, 11 description, 11
arrêt, 139 domaine, 30
arrêt de l'exécution du programme, 48 initialisation, 34
au système de coordonnées de l'atelier, 114 persistante, 30
axes indépendants, 62, 135 programme, 30
axes supplémentaires, 61, 119 routine, 31
axes supplémentaires coordonnés, 119 utilisées dans des expressions, 40
variable, 30
B données d'initialisation, 34
boîte de dialogue, 169 données de configuration, 95
bool, 51 données de mouvement, 65
données de programme, 28, 30, 170
C données de routine, 31, 170
chaîne, 14 données système, 94
chargement de modules, 50
cinématique de robot, 148 E
commentaire, 14 E/S, 169
commentaires, 50 E/S de position fixe, 142
communication à l'aide d'un socket, 74 enregistrement, 28, 170
communication via rawbytes, 73 enregistrements
composante d'un enregistrement, 28 expressions, 40
composante d’un enregistrement, 169 enregistreur de trajectoire, 63
confdata, 145 en-tête de fichier, 15
configuration, 169 entretien, 98
robot, 144 ERRNO, 83
configuration d'axe, 144 étalonnage, 98
configuration du robot, 144 exécution simultanée, 141
ConfJ, 146 expression, 169
ConfL, 147 expressions, 37
CONST, 34 arithmétique, 37
constante, 30, 169 chaîne, 39
constantes, 34 logique, 38
valeur d'initialisation, 34 expressions arithmétiques, 37
conversion, 100 expressions de chaîne, 39
conversions, 52 expressions logiques, 38
convoyeur à butée, 64
correction de trajectoire, 63 F
Files d’attente de messages RAPID, 74
D fin de routine, 23
déclaration, 169 fonction, 21, 169
module, 18 fonctions arithmétiques, 90
routine, 24 fonctions d'état, 65
Déclaration d'interruption, 24 fonctions de bit, 91
Déclaration de fonction, 24 fonctions de chaîne de caractères, 100
déclaration de module, 18 fonctions de position, 65
déclaration de procédure, 24 fonctions d’opération de fichier, 93
déclaration de routine, 24
déclarations G
constantes, 34 gestionnaire d'erreurs, 169
persistantes, 33 gestionnaire d'exécution, 96
variables, 31 gestionnaire d'instruction arrière, 108
de communication binaire, 73 gestionnaires d'erreurs, 83
global

Manuel de référence technique - Vue d’ensemble de RAPID 171


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
Index

données, 30 N
globale niveau d'exécution, 96
routine, 21 NOT, 38
glossaire, 169 num, 51
groupe de signaux, 169 numéros d'erreur, 81

H O
horloge, 88 OR, 38
orientation, 170
I
I/O communication avec dispositif d’E/S, 72 P
identificateurs, 13 panneau de commande, 170
identification de charge, 64 paramètre, 22, 170
informations d'entretien, 97 paramètres de mouvement
INOUT, 22 instructions, 53
instructions paramètres optionnels, 22
déroulement de programme, 48 paramètres système, 170
description, 11 PERS, 33
listes de sélection, 47 persistante, 30, 170
instructions de communication, 71 persistantes, 33
instructions de déplacement, 58 valeurs d'initialisation, 34
instructions de déroulement de programme, 48 point central de l'outil, 113, 170
instructions de fichier, 72 point d'arrêt, 170
instructions de positionnement, 58 point de départ, 170
instructions de recherche, 59 point de passage, 130, 140, 169
instructions de temps, 88 principes d’E/S, 165
instructions d’attente, 50 priorité
instructions mathématiques, 90 opérateurs, 44
interconnexions, 167 tâches, 106
interpolation, 126, 130 priorité opérateur, 44
interpolation articulaire, 126 procédure, 21, 170
interpolation circulaire, 127 programme, 17, 170
interpolation linéaire, 126
interpolation linéaire modifiée, 129 R
interruption, 169 récupération d'erreur, 81
interruptions, 59, 76 redémarrer le contrôleur, 95
règles de syntaxe, 9
J Respect de la casse, 12
journal des événements, 84 rétro-exécution, 108
robot à liaison sérielle, 157
L rotations d’un quart de tour, 145
listes de sélection, 47 routine, 21, 170
local routine d'interruption, 21, 170
données, 30 routine principale, 17, 169
locale routines
routine, 21 description, 11
routines d'interruption, 76, 79
M
marques de réservation, 15 S
mémoire, 95 servocommande de suivi, 64
MOD, 38 servo mou, 56, 138
mode automatique, 169 signaux, 67, 165
modèles cinématiques, 148 signaux d'E/S, 67
mode manuel, 169 signaux d'entrée, 67
module, 170 signaux de sortie, 67
module de programme, 17, 170 singularité, 129
modules, 17 singularités, 156
description, 17 string, 51
module système, 18, 170 suivi de convoyeur, 63
moteurs en marche/à l’arrêt, 170 supervision
mots réservés, 13 de la configuration du robot, 145
mouvement, 58 supervision de déplacement, 152
mouvement articulaire, 126 supervision de la configuration du robot, 145
mouvement circulaire, 127 switch, 23, 51
mouvement linéaire, 126 synchronisation, 140
MultiMove, 61, 103 synchronisation d'E/S, 140
Multitâche, 102 synchronisation de capteur, 64

172 Manuel de référence technique - Vue d’ensemble de RAPID


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
Index

synchronisation de la trajectoire, 142 pseudonyme, 28


système de coordonnées de base, 114, 120 sans valeur, 28
système de coordonnées de déplacement, 118 semi-valeur, 28
système de coordonnées du poignet, 121 totaux, 28
système de coordonnées objet, 116 types de données à semi-valeur, 28
système de coordonnées outil, 121 types de données identiques, 28
système de coordonnées utilisateur, 115, 119 types de données pseudonyme, 28
systèmes de coordonnées, 113, 148 types de données sans valeur, 28

T U
tableaux UNDO, 85
expressions, 40 unité mécanique, 170
variables, 32 User module système, 20
tâches, 96, 102
task selection panel, 96 V
TCP, 113, 170 valeurs logiques, 14
fixe, 123 valeurs numériques, 14
TCP fixe, 123 VAR, 31
total, 28 variable, 30, 170
totaux variables, 31
expressions, 41 tableaux, 32
trajectoire de raccordement, 130, 169 valeurs d'initialisation, 34
trajectoire interrompue, 65
type d'événement, 96 X
type de données atomique, 28 XOR, 38
types de données, 28
atomique, 28 Z
composantes, 28 zone, 130, 170
enregistrement, 28 zones atelier, 56, 160

Manuel de référence technique - Vue d’ensemble de RAPID 173


3HAC050947-004 Révision: N
© Copyright 2004-2022- ABB. Tous droits réservés.
ABB AB
Robotics & Discrete Automation
S-721 68 VÄSTERÅS, Sweden
Telephone +46 (0) 21 344 400

ABB AS
Robotics & Discrete Automation
Nordlysvegen 7, N-4340 BRYNE, Norway
Box 265, N-4349 BRYNE, Norway
Telephone: +47 22 87 2000

ABB Engineering (Shanghai) Ltd.


Robotics & Discrete Automation
No. 4528 Kangxin Highway
PuDong District
SHANGHAI 201319, China
Telephone: +86 21 6105 6666

ABB Inc.
Robotics & Discrete Automation
1250 Brown Road
Auburn Hills, MI 48326
USA
Telephone: +1 248 391 9000

[Link]/robotics
3HAC050947-004, Rev N, fr

© Copyright 2004-2022- ABB. Tous droits réservés.


Spécifications sujettes à changement sans préavis.

Vous aimerez peut-être aussi