You are on page 1of 1362

ABB Robotics

Manual de referencia técnica
Instrucciones, funciones y tipos de datos de RAPID

Trace back information:
Workspace R11-2 version a3
Checked in 2011-10-19
Skribenta version 774

Manual de referencia técnica
Instrucciones, funciones y tipos de datos de RAPID
RobotWare 5.14
ID de documento: 3HAC16581-5
Revisión: L

© Copyright 2004-2011 ABB. Reservados todos los derechos.

La información de este manual puede cambiar sin previo aviso y no puede entenderse
como un compromiso por parte de ABB. ABB no se hace responsable de ningún
error que pueda aparecer en este manual.
Excepto en los casos en que se indica expresamente en este manual, ninguna parte
del mismo debe entenderse como una garantía por parte de ABB por las pérdidas,
lesiones, daños materiales, idoneidad para un fin determinado ni garantías similares.
ABB no será en ningún caso responsable de los daños accidentales o consecuentes
que se produzcan como consecuencia del uso de este manual o de los productos
descritos en el mismo.
Se prohíbe la reproducción o la copia de este manual o cualquiera de sus partes si
no se cuenta con una autorización escrita de ABB.
Usted puede obtener copias adicionales de este manual a través de ABB.
El idioma original de esta publicación es el inglés. Cualquier otro idioma suministrado
ha sido traducido del inglés.

© Copyright 2004-2011 ABB. Reservados todos los derechos.
ABB AB
Robotics Products
SE-721 68 Västerås
Suecia

Contenido

Contenido
Descripción general de este manual ............................................................................................... 15
1

Instrucciones
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13
1.14
1.15
1.16
1.17
1.18
1.19
1.20
1.21
1.22
1.23
1.24
1.25
1.26
1.27
1.28
1.29
1.30
1.31
1.32
1.33
1.34
1.35
1.36
1.37
1.38
1.39
1.40
1.41
1.42
1.43
1.44
1.45
1.46
1.47
1.48
1.49
1.50
1.51
1.52
1.53

17

AccSet - Reduce la aceleración ............................................................................
ActUnit - Activa una unidad mecánica ...................................................................
Add - Suma un valor numérico .............................................................................
AliasIO - Define una señal de E/S con un nombre de alias ........................................
":=" - Asigna un valor .........................................................................................
BitClear - Desactiva un bit específico de un dato de byte ..........................................
BitSet - Activa un bit específico de un dato de byte ..................................................
BookErrNo - Registra un número de error de sistema de RAPID ................................
Break - Interrumpe la ejecución del programa .........................................................
CallByVar - Llama a un procedimiento mediante una variable ...................................
CancelLoad - Cancela la carga de un módulo .........................................................
CheckProgRef - Comprobar referencias de programa ..............................................
CirPathMode - Reorientación de la herramienta durante trayectorias circulares ............
Clear - Borra el valor ..........................................................................................
ClearIOBuff - Vacía el búfer de entrada de un canal serie .........................................
ClearPath - Elimina la trayectoria actual ................................................................
ClearRawBytes - Borra el contenido de un dato de tipo rawbytes ...............................
ClkReset - Pone a cero un reloj utilizado como temporizador .....................................
ClkStart - Pone en marcha un reloj utilizado para la temporización .............................
ClkStop - Detiene un reloj utilizado para la temporización .........................................
Close - Cierra un archivo o un canal serie ..............................................................
CloseDir - Cierra un directorio .............................................................................
Comentario - Comentario ....................................................................................
Compact IF (IF compacto) - Si se cumple una condición, entonces... (una instrucción) ....
ConfJ - Controla la configuración durante el movimiento de los ejes ...........................
ConfL - Monitoriza la configuración durante el movimiento lineal ................................
CONNECT - Conecta una interrupción a una rutina TRAP .........................................
CopyFile - Copia un archivo ................................................................................
CopyRawBytes - Copia el contenido de un dato de tipo rawbytes ...............................
CorrClear - Elimina todos los generadores de correcciones ......................................
CorrCon - Establece una conexión con un generador de correcciones ........................
CorrDiscon - Cierra la conexión con un generador de correcciones ............................
CorrWrite - Escribe en un generador de correcciones ..............................................
DeactUnit - Desactiva una unidad mecánica ...........................................................
Decr - Reduce un número en 1 ............................................................................
DitherAct - Activa la función de oscilación del servo suave .......................................
DitherDeact - Desactiva la función de oscilación del servo suave ...............................
DropWObj - Suelta un objeto de trabajo sobre un transportador .................................
EOffsOff - Desactiva un offset de ejes externos ......................................................
EOffsOn - Activa un offset de ejes externos ...........................................................
EOffsSet - Activa un offset de ejes externos a partir de valores conocidos ...................
EraseModule - Elimina un módulo ........................................................................
ErrLog - Escribe un mensaje de error ....................................................................
ErrRaise - Escribe un aviso y llama a un gestor de errores ........................................
ErrWrite - Escribe un mensaje de error ..................................................................
EXIT - Finaliza la ejecución del programa ..............................................................
ExitCycle - Interrumpe el ciclo actual y pasa al siguiente ..........................................
FOR - Repite un número determinado de veces ......................................................
GetDataVal - Obtiene el valor de un objeto de datos ................................................
GetSysData - Obtiene datos del sistema ................................................................
GetTrapData - Obtiene datos de interrupción para la rutina TRAP actual .....................
GOTO - Salta a otra instrucción ...........................................................................
GripLoad - Define la carga útil de un robot .............................................................

3HAC16581-5 Revisión: L

17
19
21
23
26
28
30
32
34
35
37
39
40
46
47
49
53
55
56
58
59
60
61
62
63
65
67
69
71
74
75
80
81
83
85
87
89
90
91
92
94
96
98
102
107
109
110
112
115
118
121
123
125

5
© Copyright 2004-2011 ABB. Reservados todos los derechos.

Contenido

1.54
1.55
1.56
1.57
1.58
1.59
1.60
1.61
1.62
1.63
1.64
1.65
1.66
1.67
1.68
1.69
1.70
1.71
1.72
1.73
1.74
1.75
1.76
1.77
1.78
1.79
1.80
1.81
1.82
1.83
1.84
1.85
1.86
1.87
1.88
1.89
1.90
1.91
1.92
1.93
1.94
1.95
1.96
1.97
1.98
1.99
1.100
1.101
1.102
1.103
1.104
1.105
1.106
1.107
1.108

HollowWristReset - Restablece la muñeca hueca en los modelos IRB5402 e IRB5403 ....
IDelete - Cancela una interrupción ........................................................................
IDisable - Desactiva todas las interrupciones ..........................................................
IEnable - Habilita el uso de interrupciones .............................................................
IError - Solicita una interrupción para errores .........................................................
IF - Si se cumple una condición, ...; de lo contrario, ... ..............................................
Incr - Aumenta en 1 un valor ...............................................................................
IndAMove - Movimiento independiente de posición absoluta .....................................
IndCMove - Movimiento independiente continuo .....................................................
IndDMove - Movimiento independiente de posición delta ..........................................
IndReset - Restablecimiento independiente ...........................................................
IndRMove - Movimiento independiente de posición relativa ......................................
InvertDO - Invierte el valor de una señal de salida digital ..........................................
IOBusStart - Start of I/O bus ................................................................................
IOBusState - Obtener el estado actual de un bus de E/S ...........................................
IODisable - Desactiva una unidad de E/S ...............................................................
IOEnable - Activa una unidad de E/S .....................................................................
IPers - Interrupción en caso de cambio de valor de una variable persistente ................
IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato ........................
ISignalAI - Interrupciones a partir de una señal analógica de entrada ..........................
ISignalAO - Interrupciones a partir de una señal analógica de salida ...........................
ISignalDI - Solicita interrupciones a partir de una señal digital de entrada ....................
ISignalDO - Interrupciones a partir de una señal digital de salida ...............................
ISignalGI - Solicita interrupciones de un grupo de señales digitales de entrada ............
ISignalGO - Solicita interrupciones de un grupo de señales digitales de salida .............
ISleep - Desactiva una interrupción ......................................................................
ITimer - Solicita una interrupción temporizada ........................................................
IVarValue - Solicita una interrupción a partir del valor de una variable .........................
IWatch - Activar una interrupción .........................................................................
Etiqueta - Nombre de línea ..................................................................................
Load - Carga un módulo de programa durante la ejecución .......................................
LoadId - Identificación de carga de la herramienta o la carga útil ................................
MakeDir - Crea un nuevo directorio ......................................................................
ManLoadIdProc - Identificación de carga de los manipuladores IRBP .........................
MechUnitLoad - Define una carga útil para una unidad mecánica ...............................
MotionSup - Desactiva/activa la supervisión del movimiento .....................................
MoveAbsJ - Mueve el robot a una posición de ejes absoluta .....................................
MoveC - Mueve el robot en círculo .......................................................................
MoveCDO - Mueve el robot en una trayectoria circular y establece una salida digital en la
esquina ...........................................................................................................
MoveCSync - Mueve el robot en una trayectoria circular y ejecuta un procedimiento de
RAPID .............................................................................................................
MoveExtJ - Mueve una o varias unidades mecánicas sin TCP ...................................
MoveJ - Mueve el robot mediante un movimiento de ejes .........................................
MoveJDO - Mueve el robot mediante el movimiento de los ejes y activa una salida digital
en la esquina ....................................................................................................
MoveJSync - Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de
RAPID .............................................................................................................
MoveL - Mueve el robot siguiendo una trayectoria lineal ...........................................
MoveLDO - Mueve el robot linealmente y establece una salida digital en la esquina. .....
MoveLSync - Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID .......
MToolRotCalib - Calibración de la rotación de una herramienta móvil .........................
MToolTCPCalib - Calibración del TCP de una herramienta móvil ................................
Open - Abre un archivo o un canal serie ................................................................
OpenDir - Abre un directorio ................................................................................
PackDNHeader - Empaqueta un encabezado de DeviceNet en datos rawbytes .............
PackRawBytes - Empaqueta datos en un dato de tipo rawbytes .................................
PathAccLim - Reduce la aceleración del TCP a lo largo de la trayectoria .....................
PathRecMoveBwd - Hace retroceder la grabadora de trayectorias ..............................

6

127
129
130
131
132
135
137
139
143
147
151
156
161
163
164
167
170
173
175
180
190
194
197
200
203
206
208
211
214
216
217
221
227
228
232
237
240
246
253
257
261
265
270
274
278
283
287
291
294
297
302
304
307
312
316

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

Contenido

1.109
1.110
1.111
1.112
1.113
1.114
1.115
1.116
1.117
1.118
1.119
1.120
1.121
1.122
1.123
1.124
1.125
1.126
1.127
1.128
1.129
1.130
1.131
1.132
1.133
1.134
1.135
1.136
1.137
1.138
1.139
1.140
1.141
1.142
1.143
1.144
1.145
1.146
1.147
1.148
1.149
1.150
1.151
1.152
1.153
1.154
1.155
1.156
1.157
1.158
1.159
1.160
1.161
1.162
1.163
1.164

PathRecMoveFwd - Hace avanzar la grabadora de trayectorias .................................
PathRecStart - Inicia la grabadora de trayectorias ...................................................
PathRecStop - Detiene la grabadora de trayectorias ................................................
PathResol - Ajusta la resolución de la trayectoria ....................................................
PDispOff - Desactiva el desplazamiento de programa ..............................................
PDispOn - Activa el desplazamiento de programa ...................................................
PDispSet - Activa un desplazamiento de programa a partir de una base de coordenadas
conocida ..........................................................................................................
ProcCall - Llama a un nuevo procedimiento ...........................................................
ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperación
tras ellos .........................................................................................................
PulseDO - Genera un pulso en una señal digital de salida .........................................
RAISE - Llama a un gestor de errores ...................................................................
RaiseToUser - Propaga un error al nivel del usuario ................................................
ReadAnyBin - Lee datos de un canal serie o un archivo binario .................................
ReadBlock - Lee un bloque de datos de un dispositivo .............................................
ReadCfgData - Lee un atributo de un parámetro del sistema .....................................
ReadErrData - Obtiene información sobre un error ..................................................
ReadRawBytes - Lee datos de tipo rawbytes ..........................................................
RemoveDir - Elimina un directorio ........................................................................
RemoveFile - Elimina un archivo ..........................................................................
RenameFile - Cambia el nombre de un archivo .......................................................
Reset - Pone a cero una señal digital de salida .......................................................
ResetPPMoved - Restablecer el estado del puntero de programa movido en el modo
manual. ...........................................................................................................
ResetRetryCount - Restablece el número de reintentos ............................................
RestoPath - Restablece la trayectoria después de una interrupción ............................
RETRY - Reanuda la ejecución después de un error ................................................
RETURN - Finaliza la ejecución de una rutina .........................................................
Rewind - Rebobina la posición del archivo .............................................................
RMQEmptyQueue - Vacía la cola de mensajes de RAPID .........................................
RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura ...................
RMQGetMessage - Obtener un mensaje de RMQ ....................................................
RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ ........................
RMQGetMsgHeader - Obtener información de encabezado de un mensaje de RMQ ......
RMQReadWait - Devuelve un mensaje de una cola RMQ ..........................................
RMQSendMessage - Enviar un mensaje de datos de RMQ .......................................
RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta ............
Save - Guarda un módulo de programa .................................................................
SCWrite - Envía los datos de la variable a una aplicación cliente ................................
SearchC - Realiza una búsqueda en círculo usando el robot .....................................
SearchExtJ - Busca con una o varias unidades mecánicas sin TCP ............................
SearchL - Realiza una búsqueda lineal usando el robot ............................................
SenDevice - Establece una conexión a un dispositivo de sensor ................................
Set - Activa una señal digital de salida ..................................................................
SetAllDataVal - Establece un valor en todos los objetos de datos de un conjunto definido .
SetAO - Cambia el valor de una señal analógica de salida ........................................
SetDataSearch - Definir el conjunto de símbolos de una secuencia de búsqueda ..........
SetDataVal - Establece el valor de un objeto de datos ..............................................
SetDO - Cambia el valor de una señal digital de salida .............................................
SetGO - Cambia el valor de un grupo de señales digitales de salida ...........................
SetSysData - Establece datos del sistema .............................................................
SingArea - Define el método de interpolación alrededor de puntos singulares ..............
SkipWarn - Omitir el último aviso .........................................................................
SocketAccept - Acepta una conexión entrante ........................................................
SocketBind - Enlaza un zócalo a mi dirección IP y puerto .........................................
SocketClose - Cierra un zócalo ............................................................................
SocketConnect - Establece una conexión a un ordenador remoto ..............................
SocketCreate - Crea un nuevo zócalo ...................................................................

3HAC16581-5 Revisión: L

324
327
330
333
336
337
342
344
346
352
355
358
361
364
366
370
374
377
379
380
382
383
384
386
388
390
392
395
397
399
402
405
409
412
416
422
425
428
437
444
454
456
458
460
462
466
469
471
474
476
478
479
482
484
486
489

7
© Copyright 2004-2011 ABB. Reservados todos los derechos.

Contenido

1.165
1.166
1.167
1.168
1.169
1.170
1.171
1.172
1.173
1.174
1.175
1.176
1.177
1.178
1.179
1.180
1.181
1.182
1.183
1.184
1.185
1.186
1.187
1.188
1.189
1.190
1.191
1.192
1.193
1.194
1.195
1.196
1.197
1.198
1.199
1.200
1.201
1.202
1.203
1.204
1.205
1.206
1.207
1.208
1.209
1.210
1.211
1.212
1.213
1.214
1.215
1.216
1.217
1.218
1.219
1.220
1.221
1.222

SocketListen - Permanece a la escucha de conexiones entrantes ..............................
SocketReceive - Recibe datos de un ordenador remoto ............................................
SocketSend - Envía datos a un ordenador remoto ...................................................
SoftAct - Activa el servo suave ............................................................................
SoftDeact - Desactiva el servo suave ....................................................................
SpeedRefresh - El ajuste de velocidad para el movimiento en curso ...........................
SpyStart - Comienza la grabación de los datos de tiempo de ejecución .......................
SpyStop - Detiene la grabación de los datos de tiempo de ejecución ..........................
StartLoad - Carga un módulo de programa durante la ejecución ................................
StartMove - Reanuda el movimiento del robot .........................................................
StartMoveRetry - Reanuda el movimiento y la ejecución del robot ..............................
STCalib - Calibra una herramienta servo ................................................................
STClose - Cierra una herramienta servo ................................................................
StepBwdPath - Retrocede un paso a lo largo de la trayectoria ...................................
STIndGun - Pone la pistola en el modo independiente .............................................
STIndGunReset - Restablece el modo independiente de la pistola .............................
SToolRotCalib - Calibración del TCP y de la rotación de una herramienta estacionaria ....
SToolTCPCalib - Calibración del TCP de una herramienta estacionaria .......................
Stop - Detiene la ejecución del programa ...............................................................
STOpen - Abre una herramienta servo ..................................................................
StopMove - Detiene el movimiento del robot ..........................................................
StopMoveReset - Restablece el estado de movimiento de paro de sistema ..................
StorePath - Almacena la trayectoria cuando se produce una interrupción ....................
STTune - Ajusta una herramienta servo .................................................................
STTuneReset - Restablece el ajuste de la herramienta servo .....................................
SyncMoveOff - Finaliza los movimientos sincronizados coordinados ..........................
SyncMoveOn - Inicia los movimientos sincronizados coordinados ..............................
SyncMoveResume - Activa el modo de movimientos sincronizados coordinados ..........
SyncMoveSuspend - Activa el movimiento independiente-semicoordinado ..................
SyncMoveUndo - Activa los movimientos independientes .........................................
SystemStopAction - Para el sistema de robot .........................................................
TEST - En función del valor de una expresión... ......................................................
TestSignDefine - Define una señal de prueba .........................................................
TestSignReset - Restablece todas las definiciones de señales de prueba ....................
TextTabInstall - Instalación de una tabla de textos ...................................................
TPErase - Borra el texto mostrado en el FlexPendant ...............................................
TPReadDnum - Lee un número del FlexPendant .....................................................
TPReadFK - Lee las teclas de función ...................................................................
TPReadNum - Lee un número del FlexPendant .......................................................
TPShow - Cambia de ventana en el FlexPendant ....................................................
TPWrite - Escribe en el FlexPendant .....................................................................
TriggC - Movimiento circular del robot con eventos .................................................
TriggCheckIO - Define una comprobación de E/S en una posición fija .........................
TriggEquip - Define un evento de E/S basado en la posición y el tiempo en la trayectoria .
TriggInt - Define una interrupción dependiente de una posición .................................
TriggIO - Define un evento de E/S de posición o tiempo fijos cerca de un punto de paro ..
TriggJ - Movimientos de ejes del robot a partir de eventos ........................................
TriggL - Movimiento lineal del robot con eventos .....................................................
TriggLIOs - Movimientos lineales del robot con eventos de E/S .................................
TriggRampAO - Define un evento AO de rampa de posición fija en la trayectoria ..........
TriggSpeed - Define la velocidad del TCP en proporción a una salida analógica con un
evento de escala fija de posición-tiempo ...............................................................
TriggStopProc - Genera datos de reinicio para las señales de disparo ante paros .........
TryInt - Comprobar si un objeto de dato es un entero válido ......................................
TRYNEXT - Salta sobre una instrucción que ha provocado un error ............................
TuneReset - Restablecimiento del ajuste del servo ..................................................
TuneServo - Ajuste de servos ..............................................................................
UIMsgBox - Cuadro de mensaje de usuario de tipo básico ........................................
UIShow - Visualización de interfaz de usuario .........................................................

8

491
493
499
504
506
507
510
513
514
518
521
524
528
531
533
535
536
539
543
546
548
552
555
558
562
563
570
578
580
582
584
586
588
590
591
593
594
597
602
606
607
609
616
622
628
633
639
646
653
659
666
674
679
681
682
683
689
697

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

Contenido

1.223
1.224
1.225
1.226
1.227
1.228
1.229
1.230
1.231
1.232
1.233
1.234
1.235
1.236
1.237
1.238
1.239
1.240
1.241
1.242
1.243
1.244
1.245
1.246
1.247
1.248
1.249
1.250
1.251
1.252
1.253
1.254
1.255
1.256
1.257
1.258
1.259
2

UnLoad - Descarga un módulo de programa durante la ejecución ..............................
UnpackRawBytes - Desempaqueta datos de un dato de tipo rawbytes ........................
VelSet - Cambia la velocidad programada ..............................................................
WaitAI - Espera hasta que se establece un valor de señal analógica de entrada ............
WaitAO - Espera hasta que se establece un valor de señal analógica de salida ............
WaitDI - Espera hasta que se activa una señal digital de entrada ...............................
WaitDO - Espera hasta que se activa una señal digital de salida ................................
WaitGI - Espera hasta que se activa un grupo de entradas digitales ............................
WaitGO - Espera hasta que se activa un grupo de salidas digitales ............................
WaitLoad - Conecta el módulo cargado a la tarea ....................................................
WaitRob - Esperar hasta un punto de paro o una velocidad cero ................................
WaitSyncTask - Espera en un punto de sincronización con otras tareas de programa ....
WaitTestAndSet - Espera a que se desactive una variable y la activa a continuación .....
WaitTime - Espera una cantidad de tiempo determinada ...........................................
WaitUntil - Espera hasta que se cumple una condición .............................................
WaitWObj - Espera a un objeto de trabajo en un transportador ..................................
WarmStart - Reinicia el controlador ......................................................................
WHILE - Repite una o varias operaciones siempre y cuando... ...................................
WorldAccLim - Control de aceleración en el sistema de coordenadas mundo ...............
Write - Escribe en un archivo o un canal serie alfanumérico ......................................
WriteAnyBin - Escribe datos en un canal serie o archivo binario ................................
WriteBin - Escribe en un canal serie binario ...........................................................
WriteBlock - Escribe un bloque de datos en un dispositivo ........................................
WriteCfgData - Escribe un atributo de un parámetro del sistema ................................
WriteRawBytes - Escribe un dato de tipo rawbytes ..................................................
WriteStrBin - Escribe una cadena de caracteres en un canal serie binario ....................
WriteVar - Escribe una variable ............................................................................
WZBoxDef - Define una zona mundo con forma de prisma ........................................
WZCylDef - Define una zona mundo con forma cilíndrica ..........................................
WZDisable - Desactiva la supervisión de las zonas mundo temporales ........................
WZDOSet - Activación de salidas digitales basadas en zonas mundo .........................
WZEnable - Activa la supervisión de las zonas mundo temporales .............................
WZFree - Elimina la supervisión de las zonas mundo temporales ...............................
WZHomeJointDef - Define una zona mundo para las posiciones iniciales de los ejes .....
WZLimJointDef - Define una zona mundo para la limitación de los ejes .......................
WZLimSup - Activa la supervisión de límites de las zonas mundo ..............................
WZSphDef - Define una zona mundo con forma esférica ..........................................

701
704
709
711
714
717
719
721
725
729
734
736
740
743
745
749
752
753
755
757
761
764
766
768
772
775
777
780
782
785
787
791
793
795
799
803
806

Funciones

809

2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
2.12
2.13
2.14
2.15
2.16
2.17
2.18
2.19
2.20

809
811
813
814
816
820
821
822
823
825
827
829
831
833
835
837
839
843
845
850

Abs - Obtiene el valor absoluto ............................................................................
AbsDnum - Obtiene el valor absoluto de un dnum ...................................................
ACos - Calcula el valor de arco coseno .................................................................
AOutput - Lee el valor de una señal analógica de salida ...........................................
ArgName - Obtiene el nombre de un argumento .....................................................
ASin - Calcula el valor del arco seno .....................................................................
ATan - Calcula el valor de arco tangente ................................................................
ATan2 - Calcula el valor de arco tangente 2 ...........................................................
BitAnd - AND lógico bit a bit - Operación con datos de byte ......................................
BitCheck - Comprueba si un bit especificado de un dato de byte está activado .............
BitLSh - DESPLAZAMIENTO A LA IZQUIERDA lógico bit a bit - Operación de byte ........
BitNeg - NEGACIÓN lógica bit a bit - Operación con datos de byte .............................
BitOr - OR lógico bit a bit - Operación con datos de byte ..........................................
BitRSh - DESPLAZAMIENTO A LA DERECHA lógico bit a bit - Operación de byte .........
BitXOr - XOR lógico bit a bit - Operación con datos de byte .......................................
ByteToStr - Convierte un byte en un dato de cadena de caracteres ............................
CalcJointT - Calcula los ángulos de las articulaciones a partir de un robtarget ..............
CalcRobT - Calcula el valor de robtarget a partir de jointtarget ...................................
CalcRotAxFrameZ - Calcular la base de coordenadas de un eje de rotación .................
CalcRotAxisFrame - Calcular la base de coordenadas de un eje de rotación ................

3HAC16581-5 Revisión: L

9
© Copyright 2004-2011 ABB. Reservados todos los derechos.

Contenido

2.21
2.22
2.23
2.24
2.25
2.26
2.27
2.28
2.29
2.30
2.31
2.32
2.33
2.34
2.35
2.36
2.37
2.38
2.39
2.40
2.41
2.42
2.43
2.44
2.45
2.46
2.47
2.48
2.49
2.50
2.51
2.52
2.53
2.54
2.55
2.56
2.57
2.58
2.59
2.60
2.61
2.62
2.63
2.64
2.65
2.66
2.67
2.68
2.69
2.70
2.71
2.72
2.73
2.74
2.75
2.76
2.77
2.78
2.79

CDate - Lee la fecha actual como una cadena ........................................................
CJointT - Lee los ángulos actuales de los ejes ........................................................
ClkRead - Lee un reloj utilizado para la temporización ..............................................
CorrRead - Lee los offsets totales actuales ............................................................
Cos - Calcula el valor del coseno .........................................................................
CPos - Lee los datos de posición (pos) actuales .....................................................
CRobT - Lee los datos de posición (robtarget) actuales ............................................
CSpeedOverride - Lee el ajuste de velocidad actual .................................................
CTime - Lee la hora actual en forma de una cadena .................................................
CTool - Lee los datos actuales de la herramienta ....................................................
CWObj - Lee los datos del objeto de trabajo actual ..................................................
DecToHex - Convierte de decimal a hexadecimal ....................................................
DefAccFrame - Define una base de coordenadas exacta ..........................................
DefDFrame - Define una base de coordenadas de desplazamiento .............................
DefFrame - Define una base de coordenadas .........................................................
Dim - Obtiene las dimensiones de una matriz .........................................................
Distance - Distancia entre dos puntos ...................................................................
DnumToNum - Convierte dnum a num ..................................................................
DnumToStr - Convierte un valor numérico en una cadena de caracteres .....................
DotProd - Producto escalar de dos vectores pos .....................................................
DOutput - Lee el valor de una señal digital de salida ................................................
EulerZYX - Obtiene ángulos Euler a partir de una orientación ....................................
EventType - Obtiene el tipo de evento actual dentro de cualquier rutina de evento ........
ExecHandler - Obtener el tipo de gestor de ejecución ..............................................
ExecLevel - Obtener el nivel de ejecución ..............................................................
Exp - Calcula el valor exponencial ........................................................................
FileSize - Obtiene el tamaño de un archivo ............................................................
FileTime - Obtiene la información de hora de un archivo ...........................................
FSSize - Obtiene el tamaño de un sistema de archivos .............................................
GetMecUnitName - Obtiene el nombre de la unidad mecánica. ..................................
GetNextMechUnit - Obtener el nombre y los datos de las unidades mecánicas .............
GetNextSym - Obtiene el siguiente símbolo coincidente ...........................................
GetServiceInfo - Obtener información de servicio del sistema ...................................
GetSysInfo - Obtener información acerca del sistema ..............................................
GetTaskName - Obtiene el nombre y el número de la tarea actual ..............................
GetTime - Lee la hora actual como un valor numérico ..............................................
GInputDnum - Lee el valor de una señal de entrada de grupo ....................................
GOutput - Lee el valor de un grupo de señales digitales de salida ..............................
GOutputDnum - Lee el valor de una señal de salida de grupo ....................................
HexToDec - Convierte de hexadecimal a decimal ....................................................
IndInpos - Estado de posición de un eje independiente ............................................
IndInpos - Estado de velocidad de un eje independiente ...........................................
IOUnitState - Obtiene el estado actual de una unidad de E/S .....................................
IsFile - Comprobar el tipo de un archivo ................................................................
IsMechUnitActive - Indica si una unidad mecánica está activa ...................................
IsPers - Determina si es una variable persistente ....................................................
IsStopMoveAct - Está activo el indicador de movimiento de paro ...............................
IsStopStateEvent - Comprueba si se ha movido el puntero de programa .....................
IsSyncMoveOn - Comprueba si el modo de movimiento sincronizado está activado ......
IsSysID - Comprobar la identidad del sistema .........................................................
IsVar - Determina si un dato es una variable ...........................................................
MaxRobSpeed - Velocidad máxima del robot ..........................................................
MirPos - Obtención de la posición espejo de una posición ........................................
ModExist - Comprobar si un módulo de programa existe ..........................................
ModTime - Obtiene la hora de modificación del módulo cargado ................................
MotionPlannerNo - Obtiene el número de planificador de movimientos conectado ........
NonMotionMode - Lee el modo de ejecución sin movimiento .....................................
NOrient - Normaliza la orientación ........................................................................
NumToDnum - Convierte num a dnum ..................................................................

10

855
856
858
860
861
862
864
867
869
870
872
874
875
878
881
884
886
888
890
892
894
896
898
900
901
902
903
906
910
913
914
917
919
921
924
926
928
931
933
936
937
939
941
944
948
949
951
953
955
957
958
959
960
962
963
965
967
969
971

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

Contenido

2.80
2.81
2.82
2.83
2.84
2.85
2.86
2.87
2.88
2.89
2.90
2.91
2.92
2.93
2.94
2.95
2.96
2.97
2.98
2.99
2.100
2.101
2.102
2.103
2.104
2.105
2.106
2.107
2.108
2.109
2.110
2.111
2.112
2.113
2.114
2.115
2.116
2.117
2.118
2.119
2.120
2.121
2.122
2.123
2.124
2.125
2.126
2.127
2.128
2.129
2.130
2.131
2.132
2.133
2.134
2.135

NumToStr - Convierte un valor numérico en una cadena de caracteres ....................... 972
Offs - Desplaza una posición del robot .................................................................. 974
OpMode - Lee el modo de funcionamiento ............................................................. 976
OrientZYX - Genera una orientación a partir de ángulos Euler ................................... 977
ORobT - Elimina el desplazamiento de programa de una posición .............................. 979
ParIdPosValid - Posición de robot válida para la identificación de parámetros .............. 981
ParIdRobValid - Tipo de robot válido para la identificación de parámetros ................... 984
PathLevel - Obtiene el nivel de trayectoria actual .................................................... 987
PathRecValidBwd - Comprueba si existe una trayectoria de retroceso válida guardada ... 989
PathRecValidFwd - Comprueba si existe una trayectoria de avance válida guardada ..... 992
PFRestart - Comprueba si se ha interrumpido una trayectoria después de un fallo de
alimentación ..................................................................................................... 997
PoseInv - Invierte los datos de pose ..................................................................... 998
PoseMult - Multiplica datos de pose ...................................................................... 1000
PoseVect - Aplica una transformación a un vector ................................................... 1002
Pow - Calcula el resultado de elevar un valor a una potencia ..................................... 1004
PowDnum - Calcula el resultado de elevar un valor a una potencia ............................. 1005
PPMovedInManMode - Comprobar si el puntero de programa se ha movido en el modo
manual. ........................................................................................................... 1007
Present - Comprueba si se está usando un parámetro opcional ................................. 1008
ProgMemFree - Obtiene el tamaño de memoria libre del programa ............................. 1010
RawBytesLen - Obtiene la longitud de un dato de tipo rawbytes ................................. 1011
ReadBin - Lee un byte de un archivo o un canal serie .............................................. 1013
ReadDir - Lee la siguiente entrada de un directorio .................................................. 1016
ReadMotor - Lee los ángulos actuales de los motores .............................................. 1019
ReadNum - Lee un número de un archivo o un canal serie ........................................ 1021
ReadStr - Lee una cadena de caracteres de un archivo o un canal serie ...................... 1024
ReadStrBin - Lee una cadena de un canal serie o un archivo binario ........................... 1028
ReadVar - Lee una variable de un dispositivo ......................................................... 1030
RelTool - Hace un desplazamiento respecto de la herramienta .................................. 1032
RemainingRetries - Reintentos restantes aún pendientes ......................................... 1034
RMQGetSlotName - Obtener el nombre de un cliente de RMQ ................................... 1035
RobName - Obtiene el nombre del robot del TCP .................................................... 1037
RobOS - Comprueba si el programa se está ejecutando en RC o VC .......................... 1039
Round - Redondear un valor numérico .................................................................. 1040
RoundDnum - Redondear un valor numérico .......................................................... 1042
RunMode - Obtiene el modo de ejecución .............................................................. 1044
Sin - Calcula el valor del seno .............................................................................. 1046
SocketGetStatus - Obtiene el estado actual de un zócalo .......................................... 1047
Sqrt - Calcula el valor de la raíz cuadrada .............................................................. 1050
SqrtDnum - Calcula el valor de la raíz cuadrada ...................................................... 1051
STCalcForce - Calcula fuerza de la punta de una herramienta servo ........................... 1052
STCalcTorque - Calcula el par motor de una herramienta servo ................................. 1054
STIsCalib - Compruebe si una herramienta servo está calibrada ................................ 1056
STIsClosed - Comprueba si una herramienta servo está cerrada ................................ 1058
STIsIndGun - Comprueba si una herramienta servo se encuentra en el modo
independiente ................................................................................................... 1060
STIsOpen - Comprueba si una herramienta servo está abierta ................................... 1061
StrDigCalc - Operaciones aritméticas con el tipo de dato stringdig ............................. 1063
StrDigCmp - Comparar dos cadenas que sólo contienen dígitos ................................ 1066
StrFind - Busca un carácter en una cadena de caracteres ......................................... 1069
StrLen - Obtiene la longitud de una cadena ............................................................ 1071
StrMap - Mapea una cadena de caracteres ............................................................. 1072
StrMatch - Busca un patrón dentro de una cadena de caracteres ............................... 1074
StrMemb - Comprueba si un carácter pertenece a un conjunto .................................. 1076
StrOrder - Comprueba si dos cadenas de caracteres están ordenadas ........................ 1078
StrPart - Busca una parte de una cadena ............................................................... 1081
StrToByte - Convierte una cadena en un byte ......................................................... 1083
StrToVal - Convierte una cadena de caracteres en un valor ....................................... 1085

3HAC16581-5 Revisión: L

11
© Copyright 2004-2011 ABB. Reservados todos los derechos.

Contenido

2.136
2.137
2.138
2.139
2.140
2.141
2.142
2.143
2.144
2.145
2.146
2.147
2.148
2.149
2.150
2.151
2.152
2.153
2.154
2.155
2.156
2.157
2.158
2.159
3

Tan - Calcula el valor de tangente ........................................................................ 1087
TaskRunMec - Comprueba si una tarea controla alguna unidad mecánica ................... 1088
TaskRunRob - Comprueba si una tarea controla algún robot ..................................... 1089
TasksInSync - Devuelve el número de tareas sincronizadas ...................................... 1090
TestAndSet - Comprueba una variable y la establece si no está establecida ................ 1092
TestDI - Se comprueba si una entrada digital está activada ....................................... 1095
TestSignRead - Obtiene el valor de una señal de test ............................................... 1096
TextGet - Obtener un texto de las tablas de textos del sistema .................................. 1098
TextTabFreeToUse - Comprueba si una tabla de textos está libre para su uso .............. 1100
TextTabGet - Obtiene el número de una tabla de textos ............................................ 1102
Trunc - Trunca un valor numérico ......................................................................... 1104
TruncDnum - Trunca un valor numérico ................................................................. 1106
Type - Obtener el nombre del tipo de dato de una variable ........................................ 1108
UIAlphaEntry - Introducción alfanumérica del usuario .............................................. 1110
UIClientExist - Existe cliente de usuario ................................................................. 1116
UIDnumEntry - Introducción de número de usuario .................................................. 1118
UIDnumTune - Ajuste de número de usuario .......................................................... 1125
UIListView - Vista de lista de usuario .................................................................... 1132
UIMessageBox - Cuadro de mensaje de usuario de tipo avanzado ............................. 1141
UINumEntry - Introducción de número de usuario ................................................... 1149
UINumTune - Ajuste de número de usuario ............................................................ 1156
ValidIO - Señal de E/S válida para su uso .............................................................. 1162
ValToStr - Convierte un valor en una cadena .......................................................... 1164
VectMagn - Magnitud de un vector pos .................................................................. 1166

Tipos de datos
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13
3.14
3.15
3.16
3.17
3.18
3.19
3.20
3.21
3.22
3.23
3.24
3.25
3.26
3.27
3.28
3.29
3.30
3.31
3.32
3.33

1169

aiotrigg - Condición de disparo con E/S analógica ................................................... 1169
bool - Valores lógicos ......................................................................................... 1171
btnres - Datos de resultado de pulsador ................................................................ 1172
busstate - Estado de bus de E/S .......................................................................... 1174
buttondata - Datos de pulsador ............................................................................ 1175
byte - Valores enteros de 0 a 255 ......................................................................... 1177
clock - Medición de tiempo .................................................................................. 1178
confdata - Datos de configuración del robot ........................................................... 1179
corrdescr - Descriptor de generador de correcciones ............................................... 1185
datapos - Inclusión de un bloque para un objeto de datos ......................................... 1187
dionum - Valores digitales (0 - 1) .......................................................................... 1188
dir - Estructura de directorio de archivos ............................................................... 1189
dnum - Valores numéricos dobles ........................................................................ 1190
errdomain - Dominio de error ............................................................................... 1192
errnum - Número de error ................................................................................... 1194
errstr - Cadena de error ...................................................................................... 1201
errtype - Tipo de error ........................................................................................ 1202
event_type - Tipo de rutina de evento ................................................................... 1203
exec_level - Execution level ................................................................................ 1204
extjoint - Posición de los ejes externos .................................................................. 1205
handler_type - Type of execution handler .............................................................. 1207
icondata - Datos de visualización de iconos ........................................................... 1208
identno - Identidad para las instrucciones de movimiento ......................................... 1210
intnum - Identidad de interrupción ........................................................................ 1212
iodev - Canales serie y archivos ........................................................................... 1214
iounit_state - Estado de la unidad de E/S ............................................................... 1215
jointtarget - Datos de posición de eje .................................................................... 1216
listitem - Estructura de datos de elementos de lista ................................................. 1218
loaddata - Datos de carga ................................................................................... 1219
loadidnum - Tipo de identificación de la carga ........................................................ 1225
loadsession - Programar una sesión de carga ........................................................ 1226
mecunit - Unidad mecánica ................................................................................. 1227
motsetdata - Datos de parámetros de movimiento ................................................... 1229

12

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

Contenido

3.34
3.35
3.36
3.37
3.38
3.39
3.40
3.41
3.42
3.43
3.44
3.45
3.46
3.47
3.48
3.49
3.50
3.51
3.52
3.53
3.54
3.55
3.56
3.57
3.58
3.59
3.60
3.61
3.62
3.63
3.64
3.65
3.66
3.67
3.68
3.69
3.70
3.71
3.72
3.73
3.74
3.75
3.76
3.77
3.78
4

num - Valores numéricos .................................................................................... 1234
opcalc - Arithmetic Operator ................................................................................ 1236
opnum - Operador de comparación ...................................................................... 1237
orient - Orientación ............................................................................................ 1238
paridnum - Tipo de identificación de parámetro ....................................................... 1243
paridvalidnum - Resultado de ParIdRobValid .......................................................... 1245
pathrecid - Identificador de grabadora de trayectorias .............................................. 1247
pos - Posiciones (sólo X, Y y Z) ............................................................................ 1249
pose - Transformaciones de coordenadas ............................................................. 1251
progdisp - Desplazamiento de programa ............................................................... 1252
rawbytes - Datos sin formato ............................................................................... 1254
restartdata - Datos de reinicio de señales de disparo ............................................... 1256
rmqheader - Encabezado de mensaje de RAPID Message Queue .............................. 1260
rmqmessage - Mensaje de RAPID Message Queue ................................................. 1262
rmqslot - Número de identidad de un cliente de RMQ ............................................... 1264
robjoint - Posición de eje de los ejes del robot ........................................................ 1265
robtarget - Datos de posición ............................................................................... 1266
shapedata - Datos de forma de zonas mundo ......................................................... 1270
signalxx - Señales digitales y analógicas ............................................................... 1272
socketdev - Dispositivo de zócalo ......................................................................... 1274
socketstatus - Estado de comunicación de zócalo ................................................... 1275
speeddata - Datos de velocidad ........................................................................... 1276
stoppointdata - Datos de punto de paro ................................................................. 1280
string - Cadenas de caracteres ............................................................................ 1287
stringdig - Cadena de caracteres con sólo dos dígitos .............................................. 1289
switch - Optional parameters .............................................................................. 1290
symnum - Número simbólico ............................................................................... 1291
syncident - Identidad de punto de sincronización .................................................... 1293
Datos del sistema - Valores actuales de los datos del sistema de RAPID ..................... 1294
taskid - Identificación de tareas ............................................................................ 1297
tasks - Tareas de programa de RAPID ................................................................... 1298
testsignal - Señal de prueba ................................................................................ 1300
tooldata - Datos de herramientas .......................................................................... 1301
tpnum - Número de ventana del FlexPendant ......................................................... 1308
trapdata - Datos de interrupción para la rutina TRAP actual ....................................... 1309
triggdata - Eventos de posicionamiento, trigg ......................................................... 1311
triggios - Positioning events, trigg ........................................................................ 1313
triggiosdnum - Positioning events, trigg ................................................................. 1316
triggstrgo - Positioning events, trigg ..................................................................... 1318
tunetype - Tipo de ajuste de servo ........................................................................ 1321
uishownum - ID de instancia para UIShow ............................................................. 1322
wobjdata - Datos del objeto de trabajo .................................................................. 1323
wzstationary - Datos de zona mundo estacionaria ................................................... 1327
wztemporary - Datos de zona mundo temporal ....................................................... 1329
zonedata - Datos de zonas .................................................................................. 1331

Ejemplos de tipos de programación

1339

4.1
4.2
4.3
4.4

Gestor de ERROR con movimientos ..................................................................... 1339
Rutinas de servicio con o sin movimientos ............................................................. 1342
Interrupciones de E/S del sistema con o sin movimiento ........................................... 1346
Rutinas TRAP con movimientos ........................................................................... 1350

Índice

1355

3HAC16581-5 Revisión: L

13
© Copyright 2004-2011 ABB. Reservados todos los derechos.

Esta página se ha dejado vacía intencionadamente

Descripción general de este manual

Descripción general de este manual
Acerca de este manual
Éste es un manual de referencia técnica destinado a los programadores de RAPID.
En este manual se detallan las instrucciones, las funciones y tipos de datos básicos
de RAPID.
Utilización
Este manual debe leerse durante la programación y siempre que se necesite
información específica acerca de una instrucción, función o tipo de dato de RAPID.
¿A quién va destinado este manual?
Este manual está destinado a personas que tengan cierta experiencia anterior con
la programación, por ejemplo un programador de robots.
Requisitos previos
El lector debe tener cierta experiencia en programación y haber estudiado:

Operating manual - Introduction to RAPID

Technical reference manual - RAPID overview

Organización de los capítulos
Este manual está organizado en los capítulos siguientes:
Capítulo

Contenido

1Instrucciones

Descripciones detalladas de todas las instrucciones básicas de RAPID, con ejemplos de
cómo usarlas.

2Funciones

Descripciones detalladas de todas las funciones básicas de RAPID, con ejemplos de cómo
usarlas.

3 Tipos de datos

Descripciones detalladas de todos los tipos
de datos básicos de RAPID, con ejemplos de
cómo usarlas.

4 Ejemplos de tipos de programación

Una visión general de cómo escribir código
de programa con instrucciones/funciones/tipos
de datos diferentes. Este capítulo también
contiene sugerencias y explicaciones de programación.

Referencia

ID de documento

Referencias

Operating manual - Introduction to RAPID 3HAC029364-005
Technical reference manual - RAPID over- 3HAC16580-5
view
Technical reference manual - RAPID kernel 3HAC16585-1

Continúa en la página siguiente
3HAC16581-5 Revisión: L

15
© Copyright 2004-2011 ABB. Reservados todos los derechos.

Descripción general de este manual
Continuación

Revisiones
Revisión

Descripción

F

7ª edición. RobotWare 5.10.
Añadido un nuevo capítulo, 4 Ejemplos de tipos de programación.

G

8ª edición. RobotWare 5.11.
Añadidos nuevos tipos de datos, instrucciones y funciones. También se
ha añadido un nuevo ejemplo de tipo de programación.

H

9ª edición. RobotWare 5.12.
Añadidos nuevos tipos de datos, instrucciones y funciones.

J

10ª edición. RobotWare 5.13.
Añadidos los siguientes nuevos tipos de datos, instrucciones y funciones:
• TPReadNum - Lee un número del FlexPendant en la página 602
• Type - Obtener el nombre del tipo de dato de una variable en la página 1108
• UIDnumEntry - Introducción de número de usuario en la página 1118
• UIDnumTune - Ajuste de número de usuario en la página 1125
• triggiosdnum - Positioning events, trigg en la página 1316
Actualizados los gráficos de las señales de seguridad para los niveles Peligro y Aviso.

K

11ª edición. RobotWare 5.14.
Añadidas las siguientes funciones nuevas:
• AbsDnum - Obtiene el valor absoluto de un dnum en la página 811
• DnumToStr - Convierte un valor numérico en una cadena de caracteres en la página 890
• GetServiceInfo - Obtener información de servicio del sistema en la
página 919
• PowDnum - Calcula el resultado de elevar un valor a una potencia
en la página 1005
• RoundDnum - Redondear un valor numérico en la página 1042
• SqrtDnum - Calcula el valor de la raíz cuadrada en la página 1051
• TruncDnum - Trunca un valor numérico en la página 1106

L

12ª edición. RobotWare 5.14.02.
Actualizaciones relacionadas con el caso estacionario y la relación de los
diferentes sistemas de coordenadas en los siguientes tipos de datos:
• loaddata - Datos de carga en la página 1219
• tooldata - Datos de herramientas en la página 1301
Actualizaciones diversas en las siguientes instrucciones:
• GripLoad - Define la carga útil de un robot en la página 125
• MechUnitLoad - Define una carga útil para una unidad mecánica en
la página 232

16

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.1 AccSet - Reduce la aceleración

1 Instrucciones
1.1 AccSet - Reduce la aceleración
Utilización
AccSet se utiliza para manejar cargas frágiles. Permite obtener aceleraciones y
deceleraciones más lentas, lo que da lugar a movimientos más suaves en el robot.
Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción AccSet.
Ejemplo 1
AccSet 50, 100;

La aceleración se limita al 50% del valor normal.
Ejemplo 2
AccSet 100, 50;

La pendiente de aceleración se limita al 50% del valor normal.
Argumentos
AccSet Acc Ramp

Acc
Tipo de dato: num
Aceleración y deceleración como porcentaje de los valores normales. El 100% es
la aceleración máxima. Valor máximo: 100%. Un valor de entrada < 20% proporciona
un 20% de la aceleración máxima.
Ramp
Tipo de dato: num
La proporción en que la aceleración y deceleración aumentan como porcentaje
de los valores normales. La reducción de este valor permite limitar la vibración.
El 100% es el valor máximo. Valor máximo: 100%. Un valor de entrada < 10%
proporciona un 10% del valor máximo.

Continúa en la página siguiente
3HAC16581-5 Revisión: L

17
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.1 AccSet - Reduce la aceleración
Continuación
Las figuras muestran cómo la reducción de la aceleración da lugar a unos
movimientos más suaves.

Aceleración

Tiempo
AccSet 100, 100, es decir, aceleración normal
Aceleración

Aceleración

Tiempo

Tiempo
AccSet 30, 100

AccSet 100, 30

xx0500002146_es

Ejecución de programas
La aceleración se aplica tanto a los ejes del robot como a los ejes externos hasta
que se ejecuta una nueva instrucción AccSet.
Los valores predeterminados (100%) se establecen automáticamente en los casos
siguientes:

En los arranques en frío.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecución del programa desde el principio

Sintaxis
AccSet
[ Acc ':=' ] < expression (IN) of num > ','
[ Ramp ':=' ] < expression (IN) of num > ';'

Información relacionada
Para obtener más información sobre Consulte
Control de aceleración en el sistema de WorldAccLim - Control de aceleración en el sistecoordenadas mundo
ma de coordenadas mundo en la página 755
Reducción de la aceleración del TCP a PathAccLim - Reduce la aceleración del TCP a lo
lo largo de la trayectoria
largo de la trayectoria en la página 312
Instrucciones de posicionamiento

Technical reference manual - RAPID overview

18

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.2 ActUnit - Activa una unidad mecánica

1.2 ActUnit - Activa una unidad mecánica
Utilización
ActUnit se utiliza para activar una unidad mecánica.
Puede usarse para determinar qué unidad debe estar activa, por ejemplo cuando
se utilizan unidades de accionamiento comunes.
Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos básicos
A continuación aparece un ejemplo básico de la instrucción ActUnit.
Ejemplo 1
ActUnit orbit_a;

Activación de la unidad mecánica orbit_a.
Argumentos
ActUnit MechUnit

MechUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecánica que debe activarse.
Ejecución de programas
Cuando la trayectoria del robot y de los ejes externos ha sido completada, la
trayectoria del nivel de trayectoria actual se borra y se activa la unidad mecánica
especificada. Esto significa que es controlada y monitorizada por el robot.
Si varias unidades mecánicas comparten una misma unidad de accionamiento, la
activación de una de estas unidades mecánicas también conecta la unidad a la
unidad de accionamiento común.
Limitaciones
Si esta instrucción va precedida de una instrucción de movimiento, ésta última
debe programarse con un punto de paro (zonedata fine), no un punto de paso.
De lo contrario, no será posible reanudar la ejecución tras una caída de suministro
eléctrico.
ActUnit no puede ejecutarse en rutinas de RAPID que estén conectadas a los
siguientes eventos especiales del sistema: PowerOn, Stop, QStop, Restart, Reset.o
Step.
Es posible usar ActUnit - DeactUnit en el nivel StorePath, pero al ejecutar
RestoPath deben estar activadas las mismas unidades mecánicas al ejecutar
StorePath. Esta operación en la grabadora de trayectorias y la trayectoria del
nivel básico estarán intactas, pero la trayectoria del nivel StorePath se borrará.

Continúa en la página siguiente
3HAC16581-5 Revisión: L

19
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.2 ActUnit - Activa una unidad mecánica
Continuación
Sintaxis
ActUnit
[MechUnit ':=' ] < variable (VAR) of mecunit> ';'

Información relacionada
Para obtener más información
sobre

Consulte

Desactivación de unidades mecá- DeactUnit - Desactiva una unidad mecánica en la páginicas
na 83
Unidades mecánicas

mecunit - Unidad mecánica en la página 1227

Más ejemplos

DeactUnit - Desactiva una unidad mecánica en la página 83

Grabadora de trayectorias

PathRecMoveBwd - Hace retroceder la grabadora de
trayectorias en la página 316

20

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.3 Add - Suma un valor numérico

1.3 Add - Suma un valor numérico
Utilización
Add se utiliza para sumar o restar un valor a o de una variable o una variable
persistente de tipo numérico.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción Add.
Ejemplo 1
Add reg1, 3;

3 se suma areg1, es decir reg1:=reg1+3.
Ejemplo 2
Add reg1, -reg2;

El valor de reg2 se resta de reg1, i.e. reg1:=reg1-reg2.
Ejemplo 3
VAR dnum mydnum:=5;
Add mydnum, 500000000;

500000000 se suma a mydnum, es decir mynum:=mynum+500000000.
Ejemplo 4
VAR dnum mydnum:=5000;
VAR num mynum:=6000;
Add mynum, DnumToNum(mydnum \Integer);

5000 se suma amynum, es decir mynum:=mynum+5000. Debe usar DnumToNum
para obtener un valor numérico num que puede usar junto con la variable nummynum.
Argumentos
Add Name | Dname AddValue | AddDvalue

Name
Tipo de dato: num
El nombre de la variable o de la variable persistente que se desea cambiar.
Dname
Tipo de dato: dnum
El nombre de la variable o de la variable persistente que se desea cambiar.
AddValue
Tipo de dato: num
El valor a sumar.
AddDvalue
Tipo de dato: dnum
El valor a sumar.

Continúa en la página siguiente
3HAC16581-5 Revisión: L

21
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.3 Add - Suma un valor numérico
Continuación
Limitaciones
Si el valor añadir es del tipo dnum y la variable/persistente que debe cambiarse es
de tipo num, se generará un error de tiempo de ejecución. La combinación de
argumentos no es posible (consulte el Ejemplo 4 anterior acerca de cómo resolver
esto).
Sintaxis
Add
[
|
[
|

Name ':=' ] < var or pers (INOUT) of
[ Dname’ :=’ ] < var or pers (INOUT)
AddValue ':=' ] < expression (IN) of
[ AddDvalue’ :=’ ] < expression (IN)

num >
of dnum > ’,’
num >
of dnum > ’;’

Información relacionada
Para obtener más información sobre

Consulte

Incremento de una variable en 1

Incr - Aumenta en 1 un valor en la página 137

Decremento de una variable en 1

Decr - Reduce un número en 1 en la página 85

Cambio de un dato mediante una expre- ":=" - Asigna un valor en la página 26
sión arbitraria, por ejemplo una multiplicación

22

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.4 AliasIO - Define una señal de E/S con un nombre de alias

1.4 AliasIO - Define una señal de E/S con un nombre de alias
Utilización
AliasIO se utiliza para definir una señal de cualquier tipo con un nombre de alias
o para usar señales en los módulos de tarea incorporados.
Las señales con nombres de alias pueden usarse en los programas genéricos
predefinidos, sin ninguna modificación del programa antes de ejecutarlo en distintas
instalaciones de robot.
Es necesario ejecutar la instrucción AliasIO antes de cualquier uso de la señal
en sí. Consulte Ejemplos básicos en la página 23 para los módulos cargados y
Más ejemplos en la página 24 para los módulos instalados.
Ejemplos básicos
A continuación aparece un ejemplo básico de la instrucción AliasIO.
Consulte también Más ejemplos en la página 24.
Ejemplo 1
VAR signaldo alias_do;
PROC prog_start()
AliasIO config_do, alias_do;
ENDPROC

La rutina prog_start está conectada al evento START en los parámetros del
sistema. La señal digital de salida definida por el programa alias_do está
conectada a la señal digital de salida configurada config_do en el momento del
inicio del programa.
Argumentos
AliasIO FromSignal ToSignal

FromSignal
Tipo de dato: signalxx o string
Módulos cargados:
El identificador de la señal, con un nombre que se corresponde con la configuración
(tipo de dato signalxx) de la que se copia el descriptor de la señal. La señal debe
estar definida en la configuración de E/S.
Módulos instalados o módulos cargados:
Una referencia (CONST, VAR o un parámetro de este tipo) que contenga el nombre
de la señal (tipo de dato string) de la que se copia el descriptor de la señal tras
buscarlo en el sistema. La señal debe estar definida en la configuración de E/S.
ToSignal
Tipo de dato: signalxx
El identificador de la señal de acuerdo con el programa (tipo de dato signalxx)
del que se copia el descriptor de la señal. La señal debe estar declarada en el
programa de RAPID.

Continúa en la página siguiente
3HAC16581-5 Revisión: L

23
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.4 AliasIO - Define una señal de E/S con un nombre de alias
Continuación
Debe usarse (o buscarse) el mismo tipo de datos para los argumentos FromSignal
y ToSignal y debe ser uno de los tipos signalxx (signalai, signalao,
signaldi, signaldo, signalgi o signalgo).
Ejecución de programas
El valor del descriptor de la señal se copia de la señal indicada en el argumento
FromSignal a la señal indicada en el argumento ToSignal.
Gestión de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_ALIASIO_DEF

La señal FromSignal no está definida en la configuración
de E/S
O la señal ToSignal no está declarada en el programa de
RAPID
O la señal ToSignal está definida en la configuración de
E/S.

ERR_ALIASIO_TYPE

Los tipos de datos de los argumentos FromSignal y ToSignal no son del mismo tipo.

Más ejemplos
A continuación aparecen más ejemplos de la instrucción AliasIO.
Ejemplo 1
VAR signaldi alias_di;
PROC prog_start()
CONST string config_string := "config_di";
AliasIO config_string, alias_di;
ENDPROC

La rutina prog_start se conecta al evento START en los parámetros del sistema.
La señal digital de entrada definida por el programa alias_di es conectada a la
señal digital de entrada configurada config_di (a través de la constante
config_string) en el momento del inicio del programa.
Limitación
Al iniciar el programa, no es posible utilizar la señal de alias hasta ejecutar la
instrucción AliasIO.
La instrucción AliasIOdebe estar situada en uno de los lugares siguientes:

En la rutina de evento ejecutada al iniciar el programa (evento START)

O bien en la parte del programa que se ejecuta después de cada inicio del
programa (antes de usar la señal).

Para evitar errores, no se recomienda utilizar la reconexión dinámica de una señal
AliasIO a varias señales físicas diferentes.
Sintaxis
AliasIO
[ FromSignal ':=' ] < reference (REF) of anytype> ','
[ ToSignal ':=' ] < variable (VAR) of anytype> ';'

Continúa en la página siguiente
24

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.4 AliasIO - Define una señal de E/S con un nombre de alias
Continuación
Información relacionada
Para obtener más información so- Consulte
bre
Instrucciones de entrada/salida

Technical reference manual - RAPID overview

Funcionalidad de entrada/salida en Technical reference manual - RAPID overview
general
Configuración de E/S

Manual de referencia técnica - Parámetros del sistema

Definición de rutinas de evento

Manual de referencia técnica - Parámetros del sistema

Módulos de tarea cargados o insta- Manual de referencia técnica - Parámetros del sistema
lados

3HAC16581-5 Revisión: L

25
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.5 ":=" - Asigna un valor

1.5 ":=" - Asigna un valor
Utilización
La instrucción ":="se utiliza para asignar un nuevo valor a un dato. Este valor
puede ser desde un valor constante hasta una expresión aritmética, por ejemplo
reg1+5*reg3.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción ":=".
Consulte también Más ejemplos en la página 26.
Ejemplo 1
reg1 := 5;

reg1 recibe el valor 5.
Ejemplo 2
reg1 := reg2 - reg3;

Se asigna a reg1 el valor que devuelve el cálculo reg2-reg3.
Ejemplo 3
counter := counter + 1;

counter aumenta en 1.
Argumentos
Data := Value

Data
Tipo de dato: All
El dato al que se desea asignar un nuevo valor.
Value
Tipo de dato: Same as Data
El valor deseado.
Más ejemplos
A continuación aparecen más ejemplos de la instrucción ":=".
Ejemplo 1
tool1.tframe.trans.x := tool1.tframe.trans.x + 20;

El TCP de tool1 se desplaza 20 mm en la dirección X.
Ejemplo 2
pallet{5,8} := Abs(value);

Se asigna a un elemento de la matriz pallet un valor igual al valor absoluto de
la variable value.
Limitaciones
El dato (cuyo valor se desea cambiar) no debe ser ninguno de los siguientes:

Una constante

Continúa en la página siguiente
26

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.5 ":=" - Asigna un valor
Continuación

Un tipo de dato sin valor

El dato y el valor deben tener tipos de dato similares (el mismo tipo o el mismo
alias).
Sintaxis
(EBNF)
<assignment target> ':=' <expression> ';'
<assignment target> ::=
<variable>
| <persistent>
| <parameter>
| <VAR>

Información relacionada
Para obtener más información sobre Consulte
Expresiones

Technical reference manual - RAPID overview

Tipos de datos sin valor

Technical reference manual - RAPID overview

Asignación de un valor inicial a un
dato

Manual del operador - IRC5 con FlexPendant

3HAC16581-5 Revisión: L

27
© Copyright 2004-2011 ABB. Reservados todos los derechos.

. 0 0 0 0 0 1 0 La posición de bit 8 tiene el valor 1. Contenido de data1 después de BitClear. Las posiciones de bit válidas son de la 1 a la 8. BitClear data1. Limitaciones El rango de los tipos de datos byte es de 0 a 255 en decimal.Desactiva un bit específico de un dato de byte Utilización BitClear se utiliza para desactivar (poner a 0) un bit especificado de un dato de byte definido. parity_bit. VAR byte data1 := 130. Ejemplo 1 CONST num parity_bit := 8.. . La manipulación de bits de un dato de tipo byte al utilizar BitClear se muestra en la figura siguiente. 0 0 0 0 0 1 0 0 BitPos 1 BitPos 8 1 BitPos 1 BitPos 8 El bit número 8 (parity_bit) de la variable data1 cambia a 0. BitPos Bit Position Tipo de dato: num El valor de la posición de bit (de 1 a 8) de BitData que se desea cambiar a 0. con lo que el contenido de la variable data1 cambia de 130 a 2 (en su valor decimal). : 130 xx0500002147_es Argumentos BitClear BitData BitPos BitData Tipo de dato: byte Los datos de bits a cambiar.6 BitClear . : 2 Contenido de data1 antes de BitClear. VAR byte data1 := 130..Desactiva un bit específico de un dato de byte 1. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción BitClear. BitClear data1. El valor de la posición de bit 8 cambia a 0.6 BitClear . en representación entera. Reservados todos los derechos.. Continúa en la página siguiente 28 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. parity_bit.1 Instrucciones 1.

Comprueba si un bit especificado de un dato de byte está activado un dato de byte está activado en la página 825 Otras funciones de bits Manual de referencia técnica .6 BitClear .Desactiva un bit específico de un dato de byte Continuación Sintaxis BitClear [ BitData ':=' ] < var or pers (INOUT) of byte > '.' Información relacionada Para obtener más información sobre Consulte Activación de un bit específico de un dato BitSet .Activa un bit específico de un dato de de byte byte en la página 30 Comprobación de si un bit específico de BitCheck .' [ BitPos ':=' ] < expression (IN) of num > '. Reservados todos los derechos.1 Instrucciones 1.Descripción general de RAPID 3HAC16581-5 Revisión: L 29 © Copyright 2004-2011 ABB. .

VAR byte data1 := 2. es decir. 0 0 0 0 0 1 0 La posición de bit 8 tiene el valor 0. VAR byte data1 := 2. BitPos Bit Position Tipo de dato: num El valor de la posición de bit (de 1 a 8) de BitData que se desea cambiar a 1. Las posiciones de bit válidas son de la 1 a la 8. . BitSet data1. el contenido de la variable data1 cambia de 2 a 130 (en su representación entera). 0 0 0 0 0 1 0 1 BitPos 1 BitPos 8 0 BitPos 1 BitPos 8 El bit número 8 (parity_bit) de la variable data1 cambia a 1. BitSet data1. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción BitSet. Ejemplo 1 CONST num parity_bit := 8. Reservados todos los derechos.1 Instrucciones 1..Activa un bit específico de un dato de byte 1. Contenido de data1 después de BitSet.Activa un bit específico de un dato de byte Utilización BitSet se utiliza para cambiar a 1 un bit especificado dentro de un dato de byte definido. : 2 xx0500002148_es Argumentos BitSet BitData BitPos BitData Tipo de dato: byte Los datos de bits a cambiar. El valor de la posición de bit 8 cambia a 1.. en representación entera.. parity_bit. Continúa en la página siguiente 30 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.7 BitSet . La manipulación de bits de un dato de tipo byte al utilizar BitSet se muestra en la figura siguiente.7 BitSet . parity_bit.. Limitaciones El rango de los tipos de datos byte es de 0 a 255 en su representación de número entero. : 130 Contenido de data1 antes de BitSet.

RAPID overview 3HAC16581-5 Revisión: L 31 © Copyright 2004-2011 ABB.Comprueba si un bit especificado dato de byte está activado de un dato de byte está activado en la página 825 Otras funciones de bits Technical reference manual .' Información relacionada Para obtener más información sobre Consulte Desactivación de un bit específico de un dato BitClear . Reservados todos los derechos. .Desactiva un bit específico de un de byte dato de byte en la página 28 Comprobación de si un bit específico de un BitCheck .7 BitSet .1 Instrucciones 1.Activa un bit específico de un dato de byte Continuación Sintaxis BitSet [ BitData':=' ] < var or pers (INOUT) of byte > '.' [ BitPos':=' ] < expression (IN) of num > '.

De esta forma.Registra un número de error de sistema de RAPID 1. ENDIF Si la entrada digital di1 contiene 0.8 BookErrNo . ENDIF ! Error handling ERROR IF ERRNO = ERR_GLUEFLOW THEN .8 BookErrNo . Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción BookErrNo. ELSE . Argumentos BookErrNo ErrorName ErrorName Tipo de dato: errnum El nombre de la variable del nuevo número de error de sistema de RAPID.. Continúa en la página siguiente 32 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. La variable del nuevo error debe estar declarada con un valor inicial de -1. el manejo de errores de los errores generados por el usuario puede realizarse con el gestor de errores. lo que indica que este error debe ser un error de sistema de RAPID. Reservados todos los derechos.Registra un número de error de sistema de RAPID Utilización BookErrNose utiliza para registrar un nuevo número de error de sistema de RAPID. Limitaciones La variable del nuevo error no debe estar declarada como una variable de rutina. Ejemplo 1 ! Introduce a new error number in a glue system ! Note: The new error variable must be declared with the initial value -1 VAR errnum ERR_GLUEFLOW := -1..1 Instrucciones 1. de la forma habitual. ! Book the new RAPID system error number BookErrNo ERR_GLUEFLOW. . el nuevo número de error registrado será elevado y la variable de error de sistema ERRNO cambiará al nuevo número de error registrado..... La variable ERR_GLUEFLOW se asignará a un número de error de sistema que esté libre en el código de RAPID. ! Use the new error number IF di1 = 0 THEN RAISE ERR_GLUEFLOW. ELSE .

' Información relacionada Para obtener más información sobre Consulte Gestión de errores Technical reference manual . Reservados todos los derechos. .Llama a un gestor de errores en la página 355 3HAC16581-5 Revisión: L 33 © Copyright 2004-2011 ABB.8 BookErrNo .1 Instrucciones 1.RAPID overview Número de error errnum .Registra un número de error de sistema de RAPID Continuación Sintaxis BookErrNo [ ErrorName ':='] < variable (VAR) of errnum > '.Número de error en la página 1194 Llamada a un gestor de errores RAISE .

Reservados todos los derechos..Finaliza la ejecución del programa en la ma página 109 Paro de los movimientos del robot úni.Interrumpe la ejecución del programa Utilización Break se utiliza para provocar la interrupción inmediata de la ejecución de un programa con fines de depuración del código de un programa de RAPID. El movimiento del robot se detiene. etc.. . La rutina de evento se ejecutará desde el principio la próxima vez que tenga lugar el mismo evento. Break.EXIT . Posteriormente es posible reanudar la ejecución del programa a partir de la instrucción siguiente.Detiene la ejecución del programa en la página 543 Paro después de un error no recupera. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción Break. Ejecución de programas La instrucción detiene inmediatamente la ejecución del programa. con fines de depuración. valores.9 Break .Detiene el movimiento del robot en la camente página 548 34 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.. Sintaxis Break'.StopMove . Ejemplo 1 .Interrumpe la ejecución del programa 1.' Información relacionada Para obtener más información sobre Consulte Paro para acciones de programa Stop . Si hay una instrucción Break en alguna rutina de evento. la ejecución de la rutina se interrumpirá y no se ejecutará ninguna rutina de evento STOP.. sin esperar a que los ejes del robot o los ejes externos alcancen sus puntos de destino programados para el movimiento que se está realizando.1 Instrucciones 1.Finaliza la ejecución del programa en la ble página 109 Finalización de la ejecución del progra.EXIT . .9 Break . La ejecución del programa se detiene y es posible analizar variables.

Llama a un procedimiento mediante una variable 1. CallByVar "proc". La ubicación de la puerta se indica en el argumento door_loc.. proc_name2. Argumentos CallByVar Name Number Name Tipo de dato: string La primera parte del nombre del procedimiento. ENDTEST door_loc. Number Tipo de dato: num El valor numérico del número del procedimiento.10 CallByVar . door_loc. . 2. Este valor se convierte en una cadena y constituye la segunda parte del nombre del procedimiento. proc_name3 .10 CallByVar . por ejemplo proc_name. por ejemplo 1. 3 ó 4.1 Instrucciones 1. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción CallByVar. door_loc. Ejemplo 1 reg1 := 2. El valor debe ser número entero positivo. Reservados todos los derechos. Consulte también Más ejemplos en la página 35.. proc_namex a través de una variable. Se llama al procedimiento proc2. door_loc. reg1. como proc_name1. Continúa en la página siguiente 3HAC16581-5 Revisión: L 35 © Copyright 2004-2011 ABB. Más ejemplos Más ejemplos sobre cómo hacer selecciones estáticas y dinámicas de llamadas a procedimiento. Ejemplo 1: Selección estática de llamadas a procedimientos TEST reg1 CASE 1: lf_door CASE 2: rf_door CASE 3: lr_door CASE 4: rr_door DEFAULT: EXIT.Llama a un procedimiento mediante una variable Utilización CallByVar (Call By Variable) puede usarse para llamar a procedimientos que tienen nombres específicos. En función de si el valor del registro reg1 es 1. se llama a procedimientos distintos que realizan el tipo adecuado de trabajo para la puerta seleccionada.

como proc1.Llama a un procedimiento mediante una variable Continuación Ejemplo 2: Selección dinámica de llamadas a procedimientos con sintaxis de RAPID reg1 := 2.0)% door_loc. . la variable de sistema ERRNO cambia al valor ERR_REFUNKPRC.reg1. la variable de sistema ERRNO cambia a ERR_ARGVALERR. Ejemplo 3: Selección dinámica de llamadas a procedimientos con CallByVar reg1 := 2. proc2. proc3. Gestión de errores Si el argumento Number es < 0 o no es un entero. como proc1. No puede usarse para llamar a procedimientos de tipo LOCAL. Limitación: Todos los procedimientos deben tener un nombre específico.' [Number ':='] <expression (IN) of num>'. La ejecución de CallByVar requiere un poco más de tiempo que la ejecución de una llamada normal a un procedimiento. Se llama al procedimiento proc2.10 CallByVar . Limitaciones Sólo puede usarse para llamar a procedimientos que no utilizan parámetros. Limitación: Todos los procedimientos deben tener un nombre específico.Consulte ción sobre Llamadas a procedimientos Technical reference manual .1 Instrucciones 1. la variable de sistema ERRNO cambia a ERR_CALLPROC. Sintaxis CallByVar [Name ':='] <expression (IN) of string>'. Estos errores pueden ser gestionados en el gestor de errores.' Información relacionada Para obtener más informa. proc3 y no puede usarse ningún argumento. CallByVar "proc". Se llama al procedimiento proc2 con el argumento door_loc.IRC5 con FlexPendant 36 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Si se hace referencia a un procedimiento desconocido. proc2. En caso de un error en la llamada a un procedimiento (que no se trate de un procedimiento). %"proc"+NumToStr(reg1.RAPID overview Manual del operador . Reservados todos los derechos.

Argumentos CancelLoad LoadNo LoadNo Tipo de dato: loadsession Una referencia a la sesión de carga.MOD. Ejemplo 1 VAR loadsession load1. la variable de sistema ERRNO cambia a ERR_LOADNO_NOUSE. . A continuación. creada por la instrucción StartLoad. IF . Se cancela la sesión de carga load1. lo que significa que no hay ninguna sesión de carga vigente.. StartLoad "HOME:"\File:="PART_C. WaitLoad load1. este error puede ser gestionado en el gestor de errores. CancelLoad load1. La instrucción CancelLoad cancela la carga en curso del módulo PART_B.1 Instrucciones 1.MOD y permite cargar en su lugar el módulo PART_C. Consulte también Más ejemplos en la página 37... .MOD".load1..11 CancelLoad ..11 CancelLoad . StartLoad "HOME:"\File:="PART_B. ENDIF . Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción CancelLoad. Continúa en la página siguiente 3HAC16581-5 Revisión: L 37 © Copyright 2004-2011 ABB.load1.MOD".Cancela la carga de un módulo 1. Reservados todos los derechos. Limitación CancelLoad sólo puede usarse en la secuencia una vez que la instrucción StartLoad esté lista y antes del inicio de la instrucción WaitLoad. Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción CancelLoad.. Ejemplo 1 CancelLoad load1.Cancela la carga de un módulo Utilización CancelLoad puede usarse para cancelar la operación de carga generada por la instrucción StartLoad. CancelLoad sólo puede usarse entre instrucciones StartLoad y WaitLoad. Gestión de errores Si la variable especificada en el argumento LoadNo no se está utilizando.

Carga un módulo de programa durante la ejecución la ejecución en la página 514 Conexión de un módulo cargado a una WaitLoad .Cancela la carga de un módulo Continuación Sintaxis CancelLoad [ LoadNo ':=' ] < variable (VAR) of loadsession >'.Conecta el módulo cargado a la tarea tarea en la página 729 Sesión de carga loadsession .Programar una sesión de carga en la página 1226 Carga de un módulo de programa Load .11 CancelLoad .Comprobar referencias de programa en la página 39 38 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.1 Instrucciones 1.Descarga un módulo de programa durante la ejecución en la página 701 Comprobar referencias de programa CheckProgRef . .Carga un módulo de programa durante la ejecución en la página 217 Descarga de un módulo de programa UnLoad .' Información relacionada Para obtener más información sobre Consulte Carga de módulos de programa durante StartLoad . Reservados todos los derechos.

diskhome \File:="PART_B. Unload "PART_A.MOD. lo cual puede ser gestionado en el gestor de errores. A continuación se descarga PART_A.Comprobar referencias de programa 1. En este caso. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción CheckProgRef. Esta instrucción también puede usarse como sustituta del uso del argumento opcional \CheckRef en la instrucción Load o WaitLoad.1 Instrucciones 1. CheckProgRef. Se carga un nuevo módulo PART_B. Reservados todos los derechos.Comprobar referencias de programa Utilización CheckProgRef se usa para comprobar la existencia de referencias no resueltas en cualquier momento durante la ejecución. Por tanto. Sintaxis CheckProgRef'. la variable de sistema ERRNO cambiará a ERR_LINKREF. . Sólo indica que existe una referencia sin resolver en la tarea de programa.12 CheckProgRef .Carga un módulo de programa durante la ejecución en la página 217 Descarga de un módulo de programa UnLoad .Conecta el módulo cargado a la tarea en la página 729 3HAC16581-5 Revisión: L 39 © Copyright 2004-2011 ABB.12 CheckProgRef . Ejecución de programas La ejecución del programa fuerza un nuevo enlace de la tarea de programa y comprueba la existencia de referencias no resueltas. el programa no se ve afectado. Ejemplo 1 Load \Dynamic.MOD. utilice CheckProgRef inmediatamente después de cambiar el número de módulos de la tarea de programa (cargando o descargando).' Información relacionada Para obtener más información sobre Consulte Carga de un módulo de programa Load .MOD".Descarga un módulo de programa durante la ejecución en la página 701 Inicio de la carga de un módulo de programa StartLoad . Para buscar referencias no resueltas tras la descarga. se realiza una llamada a CheckProgRef.Carga un módulo de programa durante la ejecución en la página 514 Finalización de la carga de un módulo de programa WaitLoad . Si se produce un error durante CheckProgRef. que comprueba si todas las referencias son correctas. con el fin de saber qué módulo provocó el error de enlace.MOD" \CheckRef. Gestión de errores Si la tarea de programa contiene referencias no resueltas. el programa contiene un módulo con el nombre PART_A.MOD.

en las tareas de movimiento. Ejemplo 5 CirPathMode \Wrist46. desde el punto de inicio hasta el ToPoint durante todos los movimientos circulares posteriores. Continúa en la página siguiente 40 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. desde el punto de inicio hasta el ToPoint durante todos los movimientos circulares posteriores. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción CirPathMode. Ejemplo 4 CirPathMode \Wrist45. de forma que la proyección del eje Z de la herramienta sobre el plano de corte seguirá el segmento de círculo programado. Sólo se utilizan los ejes de muñeca 4 y 6. El modo modificado de reorientación de la herramienta en la base de coordenadas del objeto actual. Ejemplo 2 CirPathMode \ObjectFrame.13 CirPathMode .Reorientación de la herramienta durante trayectorias circulares Utilización CirPathMode (Circle Path Mode) permite seleccionar formas distintas de reorientar la herramienta durante los movimientos circulares. Este modo sólo debe usarse con objetos delgados. Ejemplo 1 CirPathMode \PathFrame. de forma que la proyección del eje Z de la herramienta sobre el plano de corte seguirá el segmento de círculo programado. El modo estándar de reorientación de la herramienta en la base de coordenadas de la trayectoria actual. Ejemplo 3 CirPathMode \CirPointOri. . de forma que la proyección del eje Z de la herramienta sobre el plano de corte seguirá el segmento de círculo programado. Sólo se utilizan los ejes de muñeca 5 y 6.13 CirPathMode . Un modo modificado. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. El modo modificado de reorientación de la herramienta desde el punto de inicio a través de la orientación CirPoint programada hasta el ToPoint durante todos los movimientos circulares posteriores. Un modo modificado. Un modo modificado. Este modo sólo debe usarse con objetos delgados. Éste es el modo predeterminado del sistema. Este modo sólo debe usarse con objetos delgados. si se cuenta con un sistema MultiMove.1 Instrucciones 1.Reorientación de la herramienta durante trayectorias circulares 1. Sólo se utilizan los ejes de muñeca 4 y 5. Ejemplo 6 CirPathMode \Wrist56. Reservados todos los derechos.

para los puntos programados.1 Instrucciones 1. La trayectoria del punto central de la muñeca se representa con una línea de puntos en la figura.13 CirPathMode . xx0500002153 Continúa en la página siguiente 3HAC16581-5 Revisión: L 41 © Copyright 2004-2011 ABB. Figura Descripción Las flechas representan la posición de la herramienta respecto del punto central de la muñeca hasta el punto central de la herramienta. La muñeca del robot no pasa a través de la orientación programada en CirPoint xx0500002152 La figura de la tabla muestra el uso del modo estándar \PathFrame con una orientación de herramienta fija. El modo \PathFrame permite conseguir fácilmente el mismo ángulo de la herramienta alrededor del cilindro. Compárela con la figura que aparece más abajo para el modo \ObjectFrame. Reservados todos los derechos. utilizando una herramienta de programación y el modo \PathFrame. Figura Descripción En la figura siguiente se representa la orientación obtenida para la herramienta en la mitad de la trayectoria circular. .Reorientación de la herramienta durante trayectorias circulares Continuación Descripción PathFrame La figura de la tabla muestra la reorientación de la herramienta del modo estándar \PathFrame.

El modo \CirPointOri hace que la muñeca del robot atraviese la orientación programada en CirPoint. Este modo realizará una reorientación lineal de la herramienta de la misma forma que con MoveL.13 CirPathMode . Figura Descripción Las flechas representan la posición de la herramienta respecto del punto central de la muñeca hasta el punto central de la herramienta. Compárela con la figura que aparece más arriba para el modo \PathFrame. La muñeca del robot no pasa a través de la orientación programada en CirPoint. para los puntos programados. . Reservados todos los derechos. utilizando una herramienta de programación y el modo \ObjectFrame.Reorientación de la herramienta durante trayectorias circulares Continuación Base de coordenadas del objeto La figura de la tabla muestra el uso del modo modificado \ObjectFrame con una orientación de herramienta fija. xx0500002150 Continúa en la página siguiente 42 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. xx0500002151 CirPointOri La figura de la tabla representa las diferencias de reorientación de la herramienta existentes entre el modo estándar \PathFrame y el modo modificado \CirPointOri. Figura Descripción En la figura siguiente se representa la orientación obtenida para la herramienta en la mitad de la trayectoria circular. Las distintas trayectorias del punto central de la muñeca se representan con líneas discontinuas en la figura.1 Instrucciones 1.

respecto de la base de coordenadas del objeto actual. y) Plano de corte z xx0800000294_es Argumentos CirPathMode [\PathFrame] | [\ObjectFrame] | [\CirPointOri] | [\Wrist45] | [\Wrist46] | [\Wrist56] [ \PathFrame ] Tipo de dato: switch Durante el movimiento circular. [ \Wrist45 ] Tipo de dato: switch El robot moverá los ejes 4 y 5 de forma que la proyección del eje Z de la herramienta sobre el plano de corte seguirá el segmento de círculo programado..13 CirPathMode . lo que proporciona una mayor exactitud pero a la vez un menor control. la reorientación de la herramienta se realiza de forma continua desde la orientación en el punto de inicio hasta la orientación programada en CirPoint y más adelante hasta la orientación de ToPoint. NOTA: Este modificador requiere la opción Wrist Move. . la reorientación de la herramienta se realiza de forma continua desde la orientación en el punto de inicio hasta la orientación en ToPoint. Reservados todos los derechos. Este modo sólo debe usarse con objetos delgados y sólo se utilizan 2 ejes de muñeca. la reorientación de la herramienta se realiza de forma continua desde la orientación en el punto de inicio hasta la orientación en ToPoint. respecto de la base de coordenadas de la trayectoria actual.Reorientación de la herramienta durante trayectorias circulares Continuación Wrist45 / Wrist46 / Wrist56 La figura de la tabla muestra las bases de coordenadas implicadas a la hora de cortar una forma al utilizar los ejes 4 y 5. Continúa en la página siguiente 3HAC16581-5 Revisión: L 43 © Copyright 2004-2011 ABB. Éste es el modo estándar del sistema. [ \CirPointOri ] Tipo de dato: switch Durante el movimiento circular. Figura Descripción Herramienta Se supone que el haz de corte está alineado z x x con el eje Z de la herramienta. Forma (x. [ \ObjectFrame ] Tipo de dato: switch Durante el movimiento circular.1 Instrucciones 1. La base de coordenadas del plano de corte se define por la posición inicial del robot al ejecutar la instrucción MoveC.

Los modos \Wrist46 y \Wrist56 sólo deben usarse para cortar objetos delgados. ). Cuando se utiliza el modo \CirPointOri. lo que proporciona una mayor exactitud pero a la vez un menor control.Reorientación de la herramienta durante trayectorias circulares Continuación [ \Wrist46 ] Tipo de dato: switch El robot moverá los ejes 4 y 6 de forma que la proyección del eje Z de la herramienta sobre el plano de corte seguirá el segmento de círculo programado. Reservados todos los derechos. y permanece vigente hasta que se ejecuta una nueva instrucción CirPathMode (o una instrucción CirPathReori.1 Instrucciones 1. SearchC. NOTA: Este modificador requiere la opción Wrist Move. PaintC . MoveCDO. Limitaciones Esta instrucción sólo afecta a los movimientos circulares. MoveCSync. sean del tipo que sean (MoveC. xx0500002149 \Wrist45. para que el movimiento circular atraviese la orientación programada en CirPoint. Este modo sólo debe usarse con objetos delgados y sólo se utilizan 2 ejes de muñeca. Este modo sólo debe usarse con objetos delgados y sólo se utilizan 2 ejes de muñeca. dado que la posibilidad de controlar el ángulo de la herramienta Continúa en la página siguiente 44 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. lo que proporciona una mayor exactitud pero a la vez un menor control. El modo estándar de reorientación en trayectorias circulares (CirPathMode \PathFrame) se establece automáticamente en los casos siguientes: • En los arranques en frío. [ \Wrist56 ] Tipo de dato: switch El robot moverá los ejes 5 y 6 de forma que la proyección del eje Z de la herramienta sobre el plano de corte seguirá el segmento de círculo programado. ahora obsoleta). • Cuando se carga un nuevo programa. se consigue el mismo efecto que con CirPointMode \PathFrame Ejecución de programas El modo especificado para la reorientación de la herramienta en una trayectoria circular se aplica a los siguientes movimientos circulares del robot.. • Cuando se inicia la ejecución del programa desde el principio. .13 CirPathMode . ArcC.. TriggC. Si utiliza CirPathMode sin ningún modificador. NOTA: Este modificador requiere la opción Wrist Move. el valor de CirPoint debe encontrarse entre los puntos A y B que se representan en la figura siguiente.

No es posible utilizar movimientos coordinados dado que el eje principal está bloqueado.Motion performance. sección Movimiento de muñeca 3HAC16581-5 Revisión: L 45 © Copyright 2004-2011 ABB. .' Información relacionada Para obtener más información sobre Consulte Interpolación Technical reference manual .Datos de parámetros de movimiento en la página 1229 Instrucción para movimiento circular MoveC .13 CirPathMode . la instrucción CirPathMode no tiene ningún efecto porque el sistema selecciona en este caso otro modo de reorientación de la herramienta para los movimientos circulares (la interpolación de ejes). Sintaxis CirPathMode ['\'PathFrame] | ['\'ObjectFrame] | ['\'CirPointOri] | ['\'Wrist45] | ['\'Wrist46] | ['\'Wrist56] '.1 Instrucciones 1.Reorientación de la herramienta durante trayectorias circulares Continuación se pierde al utilizar sólo dos ejes de muñeca. Reservados todos los derechos.Mueve el robot en círculo en la página 246 Movimientos de la muñeca Application manual .RAPID overview Datos de parámetros de movimiento motsetdata . Esta instrucción sustituye a la instrucción CirPathReori (ésta seguirá funcionando en adelante pero ya no se recomienda ni se documenta). Si se trabaja en un área de singularidad de muñeca y se ha ejecutado la instrucción SingArea\Wrist.

. Se borra el valor de Reg1. Dname Tipo de dato: dnum El nombre de la variable o de la variable persistente cuyo contenido se desea borrar. Clear mydnum. Argumentos Clear Name | Dname Name Tipo de dato: num El nombre de la variable o de la variable persistente cuyo contenido se desea borrar. con lo que reg1:=0. Ejemplo 2 CVAR dnum mydnum:=5. Se borra el valor de mydnum.14 Clear . Sintaxis Clear [ Name ':=' ] < var or pers (INOUT) of num > | [ Dname ':=' ] < var or pers (INOUT) of dnum > '. con lo que mydnum:=0.Aumenta en 1 un valor en la página 137 Decremento de una variable en 1 Decr . Reservados todos los derechos. asignarle el valor 0. es decir.Borra el valor Utilización Clear se utiliza para borrar el contenido de una variable numérica o una variable persistente.":=" .' Información relacionada Para obtener más información sobre Consulte Incremento de una variable en 1 Incr .Suma un valor numérico en la página 21 Cambio de un dato mediante una expre.1 Instrucciones 1.Asigna un valor en la página 26 sión arbitraria 46 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Borra el valor 1.14 Clear . Ejemplo 1 Clear reg1. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción Clear.Reduce un número en 1 en la página 85 Suma de cualquier valor a una variable Add .

Vacía el búfer de entrada de un canal serie 1. Las instrucciones de lectura siguientes esperarán nuevos datos recibidos a través del canal. Se vacía el búfer de entrada del canal serie al que se hace referencia con channel2. todos los archivos o canales serie abiertos del sistema se cierran y el descriptor de E/S de la variable del tipo iodev se restablece.1 segundos tras la instrucción para proporcionar a la operación un tiempo suficiente en cada aplicación.1. No se espera la confirmación de la operación para finalizar. En caso de un reinicio tras una caída de alimentación. este error puede ser gestionado en el gestor de errores. Gestión de errores Si se intenta usar la instrucción con un archivo. channel2 \Bin.Vacía el búfer de entrada de un canal serie Utilización ClearIOBuff (Clear I/O Buffer) se utiliza para vaciar el búfer de entrada de un canal serie. Ejecución de programas Se desechan todos los caracteres almacenados en el búfer del canal serie de entrada.. Deje un tiempo de espera de 0. Argumentos ClearIOBuff IODevice IODevice Tipo de dato: iodev El nombre (la referencia) del canal serie cuyo búfer de entrada se desea vaciar. . Open "com2:".. Ejemplo 1 VAR iodev channel2. A continuación.1 Instrucciones 1. . Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción ClearIOBuff.15 ClearIOBuff . WaitTime 0. El tiempo de espera garantiza a la operación de borrado un tiempo suficiente para su finalización. Continúa en la página siguiente 3HAC16581-5 Revisión: L 47 © Copyright 2004-2011 ABB. ClearIOBuff channel2. Se desechan todos los caracteres almacenados en el búfer del canal serie de entrada. la variable de sistema ERRNO cambia a ERR_FILEACC.15 ClearIOBuff . Reservados todos los derechos. Limitaciones Esta instrucción sólo puede usarse con los canales serie.

RAPID overview 48 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. .15 ClearIOBuff . Reservados todos los derechos.Vacía el búfer de entrada de un canal serie Continuación Sintaxis ClearIOBuff [IODevice ':='] <variable (VAR) of iodev>'.1 Instrucciones 1.' Información relacionada Para obtener más información sobre Consulte Apertura de un canal serie Technical reference manual .

La ejecución continúa en la rutina TRAP gohome. Punto final p1 px El robot suelta aquí la carga útil y la ejecución continúa en la rutina TRAP. xx0500002154_es En el ejemplo de programa siguiente.1 Instrucciones 1.Elimina la trayectoria actual Utilización ClearPath (Clear Path) elimina toda la trayectoria de movimientos del nivel de trayectoria de movimiento actual (nivel base o nivel StorePath). . la señal di1 indicará que se ha soltado la carga útil. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ClearPath. el robot se mueve desde la posición home hasta la posición p1. fine. Reservados todos los derechos. Punto de inicio home MoveL p1. v500. El robot debe encontrarse en un punto de paro o debe ser parado por una instrucción StopMove para poder ejecutar la instrucción ClearPath.16 ClearPath . se borra la trayectoria y el robot se traslada a la posición home. La expresión “trayectoria de movimientos” se refiere a todos los segmentos de movimiento de cualquier instrucción de movimiento que se ejecute en RAPID pero que no ha sido realizado aún en el momento de la ejecución de ClearPath. gripper. El robot detiene el movimiento (comienza el frenado) en el punto px.Elimina la trayectoria actual 1. En el punto px. El error se eleva hacia la rutina desde la que se Continúa en la página siguiente 3HAC16581-5 Revisión: L 49 © Copyright 2004-2011 ABB.16 ClearPath .

.. Ejemplo 1 VAR intnum drop_payload. fine. el robot continúa hasta la posición p1 antes de volver a la posición home. di1. .... proc2. el movimiento continúa durante la instrucción RAISE para volver al gestor de errores del procedimiento minicycle y más allá hasta que el movimiento está preparado. VAR errnum ERR_DROP_LOAD := -1. RestoPath. ERROR RAISE. MoveL home. v500. . proc2 se ejecuta desde el principio una vez más. IDelete drop_payload. v500. MoveL p1...16 ClearPath . Reservados todos los derechos. drop_payload. ERROR (ERR_DROP_LOAD) RETRY. StorePath. y todo el ciclo de programa definido por el usuario proc1 . minicycle.Elimina la trayectoria actual Continuación hace la llamada.. ClearPath.. Si se programa MoveLhome con un punto (zona) de paso en lugar de un punto de paro (fine).. ENDPROC PROC proc2() CONNECT drop_payload WITH gohome. ENDTRAP Si se ejecuta el mismo programa pero sinStopMoveniClearPath en la rutina TRAP gohome. ENDPROC PROC proc1() .... IDelete drop_payload ENDPROC TRAP gohome StopMove \Quick. PROC minicycle() BookErrNo ERR_DROP_LOAD. . ISignalDI \Single.1 Instrucciones 1. gripper... Continúa en la página siguiente 50 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.. 1.. . gripper. RAISE ERR_DROP_LOAD. proc1. fine.

el movimiento en curso se interrumpirá y el robot pasará a p10 en TRAP trap_move_stop. MoveJ p10. pero no se realiza ninguna acción para interrumpir la instrucción activa MoveJ p10 o MoveL p20 en PROC test_move_stop. Durante el movimiento del robot hacia p10 y p20.16 ClearPath . Continúa en la página siguiente 3HAC16581-5 Revisión: L 51 © Copyright 2004-2011 ABB. gripper. v200. pero no se realizará ningún movimiento adicional hacia p10 o p20 en PROC test_move_stop. o con un error elevado asíncronamente con la instrucción ProcerrRecovery.. StorePath. v200. gripper. v200. de la forma descrita en el ejemplo 2 que aparece a continuación. . ISignalDI di1. La ejecución del programa se quedará en suspenso. RestoPath. MoveJ p10. ClearPath. ENDPROC TRAP trap_move_stop StopMove. int_move_stop. Reservados todos los derechos.. . PROC test_move_stop() CONNECT int_move_stop WITH trap_move_stop.1 Instrucciones 1.Limitación VAR intnum int_move_stop. el movimiento en curso se detiene y la trayectoria de movimiento se borra. 1. z20. Ejemplo 1 . ENDTRAP Éste es un ejemplo de la limitación de ClearPath. z20. gripper. z20.Elimina la trayectoria actual Continuación Limitaciones A continuación aparecen algunos ejemplos de limitación de la instrucción ClearPath . Este problema puede resolverse con la recuperación de errores con un salto largo. StartMove. Por tanto. MoveL p20.

z20. el movimiento en curso se interrumpe y el robot pasa a p10 en ERROR handler..Sin limitaciones VAR intnum int_move_stop. RETRY. Reservados todos los derechos. RestoPath.16 ClearPath . StorePath. gripper. PROC test_move_stop() BookErrNo err_move_stop. MoveL p20.Detiene el movimiento del robot en la página 548 robot Recuperación en caso de error Technical reference manual . gripper. ClearPath. z20. 1. . CONNECT int_move_stop WITH trap_move_stop. se detiene el movimiento en curso. y se ejecuta una vez más la instrucción interrumpida MoveJ p10 o MoveL p20 en PROC test_move_stop. v200. ENDTRAP Éste es un ejemplo de cómo usar la recuperación de errores con un salto largo junto con ClearPath y sin limitaciones. se realiza una interrupción en la instrucción activa MoveJ p10 o MoveL p20. z20. StartMove.ProcerrRecovery . ISignalDI di1. Sintaxis ClearPath '. Durante el movimiento del robot a p10 y p20.RAPID overview Technical reference manual .. La trayectoria de movimiento se borra y.1 Instrucciones 1. Por tanto. VAR errnum err_move_stop := -1. ENDPROC TRAP trap_move_stop RAISE err_move_stop. ERROR RAISE. MoveJ p10. int_move_stop. . MoveJ p10.' Información relacionada Para obtener más informa. v200.RAPID kernel Error elevado asíncronamen.Elimina la trayectoria actual Continuación Ejemplo 2 . ERROR (err_move_stop) StopMove.Consulte ción sobre Paro de los movimientos del StopMove . debido a la recuperación de errores más allá de los límites de nivel de ejecución. gripper.Genera errores de movimiento de proceso te y permite la recuperación tras ellos en la página 346 52 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. v200.

1) si se programa \FromIndex. raw_data. se borra el contenido de float.Borra el contenido de un dato de tipo rawbytes 1. raw_data.17 ClearRawBytes . 1 \IntX := DINT. La última ilustración del ejemplo borra el contenido de raw_data. en los 4 bytes siguientes. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción. pero el valor de integer se conserva en raw_data. ClearRawBytes raw_data \FromIndex := 5. PackRawBytes integer. La longitud actual de los bytes válidos de raw_data cambia a 4. Ejemplo 1 VAR rawbytes raw_data. a partir del número de índice 5. . el valor de float. [ \FromIndex ] Tipo de dato: num Con \FromIndex se especifica a partir de qué punto se empieza a borrar el contenido de RawData. Reservados todos los derechos. PackRawBytes float.Borra el contenido de un dato de tipo rawbytes Utilización ClearRawBytes se utiliza para cambiar a 0 todo el contenido de una variable de tipo rawbytes.17 ClearRawBytes . Si no se especifica \FromIndex. Se borra todo el contenido hasta el final. Continúa en la página siguiente 3HAC16581-5 Revisión: L 53 © Copyright 2004-2011 ABB. Es decir. Ejecución de programas Se restablecen a 0 los datos a partir del número de índice 1 (predeterminado) o a partir de \FromIndex en la variable especificada.4. Se guarda en los primeros 4 bytes el valor de integer (a partir del número de índice 1) y. se borran todos los datos que existan a partir del número de índice 1. La longitud actual de los bytes válidos de la variable especificada cambia a 0 (predeterminado) o a (FromIndex. Argumentos ClearRawBytes RawData [ \FromIndex ] RawData Tipo de dato: rawbytes RawData es el contenedor de datos cuyo contenido se borrará. VAR num integer := 8 VAR num float := 13. (RawBytesLen(raw_data)+1) \Float4.1 Instrucciones 1. a partir del número de índice 5.

Escribe un dato de tipo rawbytes en la página 772 Lectura de un dato rawbytes ReadRawBytes .Empaqueta datos en un dato de tipo rawbytes en la página 307 Escritura de un dato rawbytes WriteRawBytes .Copia el contenido de un dato rawbytes de tipo rawbytes en la página 71 Empaquetamiento de un encabezado de PackDNHeader .Desempaqueta datos de un dato de tipo rawbytes en la página 704 54 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Lee datos de tipo rawbytes en la página 374 Desempaquetamiento de datos de un dato rawbytes UnpackRawBytes .1 Instrucciones 1. .Borra el contenido de un dato de tipo rawbytes Continuación Sintaxis ClearRawBytes [RawData ':=' ] < variable (VAR) of rawbytes> ['\'FromIndex ':=' <expression (IN) of num>]'.Datos sin formato en la página 1254 Obtención de la longitud de un dato rawbytes RawBytesLen . Reservados todos los derechos.Empaqueta un encabezado de DeviceNet en datos rawbytes DeviceNet en datos rawbytes en la página 304 Empaquetamiento de datos en datos rawbytes PackRawBytes .17 ClearRawBytes .Obtiene la longitud de un dato de tipo rawbytes en la página 1011 Copiado del contenido de un dato de tipo CopyRawBytes .' Información relacionada Para obtener más información sobre Consulte rawbytes datos rawbytes .

su valor es 0. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción ClkReset.1 Instrucciones 1.RAPID overview 3HAC16581-5 Revisión: L 55 © Copyright 2004-2011 ABB. para garantizar que está puesto a cero.Pone a cero un reloj utilizado como temporizador 1.' Información relacionada Para obtener más información sobre Consulte Otras instrucciones de reloj Technical reference manual .Pone a cero un reloj utilizado como temporizador Utilización ClkReset se utiliza para poner a cero un reloj que funciona como un cronómetro para funciones de temporización. Sintaxis ClkReset [ Clock ':=' ] < variable (VAR) of clock > '. .18 ClkReset . se detendrá y se pondrá a cero.18 ClkReset . Esta instrucción puede usarse antes de usar un reloj. Argumentos ClkReset Clock Reloj Tipo de dato: clock El nombre del reloj que se desea poner a cero. Ejecución de programas Tras poner a cero un reloj. Si el reloj está en marcha. Se pone a cero el reloj clock1. Ejemplo 1 ClkReset clock1. Reservados todos los derechos.

ClkStop clock2.19 ClkStart . Continúa en la página siguiente 56 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Sin embargo. Argumentos ClkStart Clock Reloj Tipo de dato: clock El nombre del reloj que se desea poner en marcha. el programa no podrá ser consciente de que el evento se ha producido mientras la ejecución estuvo parada. éste sigue contando segundos hasta que se decide detenerlo. WaitUntil di1 = 1. Los relojes siguen funcionando cuando se apaga el robot.19 ClkStart .1 Instrucciones 1. . Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción ClkStart. Ejemplo 1 ClkStart clock1. El reloj sigue en marcha incluso cuando se detiene el programa que lo puso en marcha. Se pone en marcha el reloj clock1. ClkReset clock2. Se mide el tiempo que se espera a que di1 tenga el valor 1. parado o puesto a cero. time:=ClkRead(clock2). ClkStart clock2. Mientras está en marcha.Pone en marcha un reloj utilizado para la temporización 1. cualquier reloj puede ser leído. En este caso. Ejecución de programas Cuando se pone en marcha el reloj. Más ejemplos A continuación aparecen más ejemplos de la instrucción ClkStart. es posible que la entrada se haya recibido mientras el programa estaba parado. si el programa estaba midiendo el tiempo de espera de una entrada. es posible que el evento que se intenta temporizar ya no sea válido. Por ejemplo. siempre y cuando la energía de respaldo de la batería proteja al programa que contiene la variable de reloj. VAR num time.Pone en marcha un reloj utilizado para la temporización Utilización ClkStart se utiliza para poner en marcha un reloj que funciona como un cronómetro para funciones de temporización. Ejemplo 1 VAR clock clock2. Reservados todos los derechos.

RAPID overview 3HAC16581-5 Revisión: L 57 © Copyright 2004-2011 ABB. se desborda y la variable de sistema ERRNO cambia a ERR_OVERFLOW.Pone en marcha un reloj utilizado para la temporización Continuación Gestión de errores Si el reloj funciona de forma continuada durante 4. El error puede ser gestionado en el gestor de errores. 17 horas. Reservados todos los derechos. .294.967 segundos (49 días. Sintaxis ClkStart [ Clock ':=' ] < variable (VAR) of clock >'.1 Instrucciones 1. 2 minutos y 47 segundos).19 ClkStart .' Información relacionada Para obtener más información sobre Consulte Otras instrucciones de reloj Technical reference manual ..

Sintaxis ClkStop [ Clock ':=' ] < variable (VAR) of clock >'.294. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción ClkStop. ClkStop clock1. Ejecución de programas Cuando se detiene un reloj. El error puede ser gestionado en el gestor de errores. se desborda y la variable de sistema ERRNO cambia a ERR_OVERFLOW.RAPID overview Más ejemplos ClkStart .Detiene un reloj utilizado para la temporización 1.1 Instrucciones 1. puede ser leído. puesto en marcha de nuevo o puesto a cero. Se detiene el reloj clock1.' Información relacionada Para obtener más información sobre Consulte Otras instrucciones de reloj Technical reference manual . .20 ClkStop .967 segundos (49 días.20 ClkStop .Detiene un reloj utilizado para la temporización Utilización ClkStop se utiliza para parar un reloj que funciona como un cronómetro para funciones de temporización. 2 minutos y 47 segundos). Gestión de errores Si el reloj funciona de forma continuada durante 4. éste deja de funcionar. Reservados todos los derechos.Pone en marcha un reloj utilizado para la temporización en la página 56 58 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Argumentos ClkStop Clock Reloj Tipo de dato: clock El nombre del reloj a detener. 17 horas. Cuando un reloj está parado.

Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción Close.Cierra un archivo o un canal serie 1. Ejecución de programas El archivo o el canal serie especificado se cierra y es necesario abrirlo de nuevo antes de leer o escribir en él.21 Close . . Si ya está cerrado. Reservados todos los derechos.' Información relacionada Para obtener más información sobre Consulte Apertura de un archivo o canal serie Technical reference manual . Ejemplo 1 Close channel2. Se cierra el canal serie al que se hace referencia con channel2. la instrucción no se tiene en cuenta.21 Close .Cierra un archivo o un canal serie Utilización Close se utiliza para cerrar un archivo o un canal serie. Sintaxis Close [IODevice ':='] <variable (VAR) of iodev>'. Argumentos Close IODevice IODevice Tipo de dato: iodev El nombre (la referencia) del archivo o del canal serie que debe cerrarse.1 Instrucciones 1.RAPID overview 3HAC16581-5 Revisión: L 59 © Copyright 2004-2011 ABB.

Cierra un directorio 1.RenameFile . como contraposición de OpenDir.' Información relacionada Para obtener más información Consulte sobre Directorio dir . Reservados todos los derechos. Argumentos CloseDir Dev Dev Tipo de dato: dir Una variable que hace referencia a un directorio y capturada con la instrucción OpenDir. ENDWHILE CloseDir directory. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción CloseDir. . OpenDir directory.Elimina un directorio en la página 377 Eliminación de un archivo RemoveFile . VAR string filename.Elimina un archivo en la página 379 Cambio del nombre de un archi.Cambia el nombre de un archivo en la págivo na 380 60 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. dirname.22 CloseDir . ENDPROC Este ejemplo imprime los nombres de todos los archivos o subdirectorios que se encuentran dentro del directorio especificado.22 CloseDir . WHILE ReadDir(directory. Sintaxis CloseDir [ Dev ':=' ] < variable (VAR) of dir>'.Estructura de directorio de archivos en la página 1189 Creación de un directorio MakeDir . filename) DO TPWrite filename.1 Instrucciones 1.Crea un nuevo directorio en la página 227 Apertura de un directorio OpenDir . Ejemplo 1 PROC lsdir(string dirname) VAR dir directory.Cierra un directorio Utilización CloseDir se utiliza para cerrar un directorio.Lee la siguiente entrada de un directorio en la página 1016 Eliminación de un directorio RemoveDir .Abre un directorio en la página 302 Lectura de un directorio ReadDir .

Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción Comment. v500.23 Comentario . Ejemplo 1 ! Goto the position above pallet MoveL p100. tool1.RAPID overview de datos y rutinas 3HAC16581-5 Revisión: L 61 © Copyright 2004-2011 ABB. no ocurre nada. . No tiene ningún efecto sobre la ejecución del programa.Comentario Utilización Comment sólo se utiliza para facilitar la comprensión del programa. z20. Sintaxis (EBNF) '!' {<character>} <newline> Información relacionada Para obtener más información sobre Consulte Caracteres permitidos en los comenta. Se inserta un comentario en el programa para facilitar su comprensión.Technical reference manual .1 Instrucciones 1.23 Comentario . Ejecución de programas Cuando se ejecuta esta instrucción.Comentario 1. Argumentos ! Comment Comment Cadena de texto Cualquier texto.RAPID overview rios Comentarios dentro de declaraciones Technical reference manual . Reservados todos los derechos.

Si reg1 es mayor que 5..Si se cumple una condición... entonces. entonces. La señal do1 se activa si counter > 10.. Ejemplo 2 IF counter > 10 Set do1. Ejemplo 1 IF reg1 > 5 GOTO next. .24 Compact IF (IF compacto) ..24 Compact IF (IF compacto) . . (una instrucción) Utilización Compact IF se utiliza cuando sólo es necesario ejecutar una instrucción si se cumple una condición determinada. (una instrucción) 1. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción CompactIF.... la ejecución del programa continúa a partir de la etiqueta next. Sintaxis (EBNF) IF <conditional expression> ( <instruction> | <SMT>) '. en la página 135 62 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Condition Tipo de dato: bool La condición que debe cumplirse para que se ejecute la instrucción. se utiliza la instrucción IF.Si se cumple una condición..Si se cumple una condición..RAPID overview IF con varias instrucciones IF . Argumentos IF Condition . .1 Instrucciones 1.. de lo contrario. Si es necesario ejecutar distintas instrucciones en función de si se cumple o no una condición especificada. Reservados todos los derechos.' Información relacionada Para obtener más información sobre Consulte Condiciones (expresiones lógicas) Technical reference manual .

moviéndose sin embargo hasta la configuración de muñeca más cercana para los ejes 4 y 6.25 ConfJ . se detiene la ejecución del programa.25 ConfJ . tool1. se elige la posición más cercana posible. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ConfJ. . Reservados todos los derechos. Si no es posible. MoveJ *. se detiene la ejecución del programa. El robot se mueve hacia la posición y la orientación programadas. Con ConfJ \Off. Continúa en la página siguiente 3HAC16581-5 Revisión: L 63 © Copyright 2004-2011 ABB. el robot no puede cambiar de configuración de ejes principales. en las tareas de movimiento. v1000. La ejecución del programa no se detiene si es imposible alcanzar la configuración de ejes programada. v1000. fine. Ejemplo 1 ConfJ \Off. fine. MoveJ *. Si no es posible hacerlo con la posición y la orientación programadas. la orientación y la configuración de ejes programadas. es posible que el robot utilice en ocasiones una configuración distinta de la programada.1 Instrucciones 1. Argumentos ConfJ [\On] | [\Off] [ \On ] Tipo de dato: switch El robot se mueve siempre hacia la configuración de ejes programada. si se cuenta con un sistema MultiMove. [ \Off ] Tipo de dato: switch El robot se mueve siempre hacia la configuración de ejes más cercana. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. tool1. Ejemplo 2 ConfJ \On. Si no se controla.Controla la configuración durante el movimiento de los ejes Utilización ConfJ (Configuration Joint) se utiliza para especificar si es necesario controlar la configuración del robot durante el movimiento de los ejes. El robot se mueve hacia la posición. El robot IRB5400 se mueve hacia la configuración de ejes programada o hacia una configuración de ejes cercana a la programada. sino que busca una solución con la misma configuración de ejes principales que la actual. Si es posible alcanzar esta posición de varias formas con distintas configuraciones de ejes.Controla la configuración durante el movimiento de los ejes 1.

Sintaxis ConfJ [ '\' On] | [ '\' Off]'. Esta configuración puede ser distinta de la programada si la configuración se ha especificado incorrectamente de forma manual o si se ha realizado un desplazamiento de programa.RAPID overview Configuración del robot durante el movimiento lineal ConfL . se detiene la ejecución del programa antes de que comience el movimiento. Reservados todos los derechos. Si no es posible hacerlo con la posición y la orientación programadas. . el robot se mueve siempre hacia la configuración de ejes programada. • Cuando se carga un nuevo programa.' Información relacionada Para obtener más información sobre Consulte Manejo de configuraciones diferentes Technical reference manual . Si se elige el argumento \Off. Se activa automáticamente en los casos siguientes: • En los arranques en frío. • Cuando se inicia la ejecución del programa desde el principio.25 ConfJ . El control de la configuración (ConfJ \On) está activado de forma predeterminada.1 Instrucciones 1. el robot se mueve siempre hacia la configuración de ejes más cercana.Monitoriza la configuración durante el movimiento lineal en la página 65 64 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Controla la configuración durante el movimiento de los ejes Continuación Ejecución de programas Si se elige el argumento \On (o no se especifica ningún argumento).

si se cuenta con un sistema MultiMove. fine. se detiene la ejecución del programa. v1000. que puede ser distinta de la programada. Argumentos ConfL [\On]|[\Off] [ \On ] Tipo de dato: switch Se monitoriza la configuración del robot. la orientación y la configuración de ejes de muñeca programadas. MoveL *.Monitoriza la configuración durante el movimiento lineal 1. La ejecución del programa se detiene si no es posible alcanzar la configuración programada desde la posición actual. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ConfL. la configuración utilizada en el momento de la ejecución puede ser distinta de la configuración programada. v1000. v1000.26 ConfL . El robot se mueve hacia la posición y la orientación programadas. Ejemplo 2 SingArea \Wrist. Ejemplo 1 ConfL \On. El robot se mueve hacia la posición. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. la monitorización está siempre desactivada. tool1. ConfL \On. fine. Reservados todos los derechos. en las tareas de movimiento. pero usando la configuración de ejes más cercana posible. tool1. Si no se controla. Si no es posible. Esto también puede dar lugar a movimientos de barrido inesperados en el robot cuando se cambia el modo al movimiento de ejes. . Ejemplo 3 ConfL \Off. independientemente de lo que se especifique en la instrucción ConfL. Nota En el caso del robot IRB 5400. fine.26 ConfL . Continúa en la página siguiente 3HAC16581-5 Revisión: L 65 © Copyright 2004-2011 ABB.Monitoriza la configuración durante el movimiento lineal Utilización ConfL (Configuration Linear) se utiliza para especificar si es necesario controlar la configuración del robot durante los movimientos lineales o circulares.1 Instrucciones 1. [ \Off ] Tipo de dato: switch No se monitoriza la configuración del robot. MoveL *. MoveL *. tool1.

si bien los ejes de la muñeca pueden continuar moviéndose hacia la configuración incorrecta. en los puntos de paro. . tanto con ConfL\On como con \Off.RAPID overview Configuración del robot durante el movimiento de ejes ConfJ . el robot comprobará que se han alcanzado las configuraciones de todos los ejes.Monitoriza la configuración durante el movimiento lineal Continuación Ejecución de programas Durante un movimiento lineal o circular.Define el método de interpolación alrealrededor de puntos singulares dedor de puntos singulares en la página 476 66 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Se activa automáticamente en los casos siguientes: • En los arranques en frío.Controla la configuración durante el movimiento de los ejes en la página 63 Definición del método de interpolación SingArea . la monitorización está activada.' Información relacionada Para obtener más información sobre Consulte Manejo de configuraciones diferentes Technical reference manual . • Cuando se inicia la ejecución del programa desde el principio. Si se elige el argumento \On (o no se utiliza ningún argumento). como puntos de partida de las distintas partes del programa. Reservados todos los derechos. Si se usa además SingArea\Wrist. (1+6). De forma predeterminada. • Cuando se carga un nuevo programa. En programas que utilizan ConfL\Off. En los puntos de paro. no sólo de los ejes de la muñeca. Más exactamente. Sin embargo. se recomienda usar movimientos hacia puntos de configuración conocidos mediante “ConfJ\On” o “MoveJ + ConfL\On + SingArea\Wrist + MoveL”. es insertar puntos intermedios para hacer que el movimiento de cada eje sea inferior a los 90 grados entre dos puntos. Sintaxis ConfL [ '\' On] | [ '\' Off]'. se comprueban las demás configuraciones de ejes. la suma de movimientos de cualquier par de ejes (1+4). Una regla sencilla para evitar problemas.26 ConfL . Si se utiliza ConfL\Off con un movimiento grande. generando el error 50050 Position outside reach o 50080 Position not compatible. (3+4) o (3+6) no debe sobrepasar los 180 grados.1 Instrucciones 1. el robot se mueve siempre hacia la configuración programada para los ejes de la muñeca y. la ejecución del programa se detiene tan pronto como aparezca el riesgo de que la configuración de la posición programada no pueda alcanzarse desde la posición actual. el robot se mueve siempre hacia la posición y la orientación programadas que presenten la configuración de ejes más cercana posible. es posible reanudar el programa. Si se utiliza el argumento \Off. éste puede causar paros en ese mismo momento o después en el programa. no se realiza ninguna monitorización.

Reservados todos los derechos. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción CONNECT. Ejecución de programas Se asigna a la variable una identidad de interrupción que se usará a partir de ese momento para pedir o desactivar interrupciones. Nota Todas las interrupciones de una tarea se cancelan cuando el puntero de programa se sitúa en Main para esa tarea y deben ser reconectadas. se ejecuta la rutina TRAP feeder_empty. PROC main() CONNECT feeder_low WITH feeder_empty. cuando se produce un evento.27 CONNECT .27 CONNECT .1 Instrucciones 1.Conecta una interrupción a una rutina TRAP 1. . Esta identidad también se conecta a la rutina TRAP especificada. 1 . Se crea una identidad de interrupción feeder_low que se conecta a la rutina TRAP feeder_empty. La declaración NO DEBE hacerse dentro de una rutina (como dato de la rutina). cuando la señal pasa al modo activo. Por tanto. . Continúa en la página siguiente 3HAC16581-5 Revisión: L 67 © Copyright 2004-2011 ABB. Ejemplo 1 VAR intnum feeder_low.Conecta una interrupción a una rutina TRAP Utilización CONNECT se utiliza para determinar la identidad de una interrupción y conectarla a una rutina TRAP. Las interrupciones no se ven afectadas por caídas de alimentación ni arranques en caliente. Argumentos CONNECT Interrupt WITH Trap routine Interrupt Tipo de dato: intnum La variable a la que se desea asignar la identidad de la interrupción. ISignalDI di1. Se producirá una interrupción en el momento en el que la entrada di1 pasa al nivel alto. La interrupción se define mediante la petición de un evento de interrupción y la especificación de su identidad. feeder_low.. la rutina TRAP se ejecuta automáticamente. Trap routine Identifier El nombre de la rutina TRAP. En otras palabras..

la variable de sistema ERRNO cambia a ERR_CNTNOTVAR. la variable de sistema ERRNO cambia a ERR_ALRDYCNT.' <connect target> ::= <variable> | <parameter> | <VAR> <trap> ::= <identifier> Información relacionada Para obtener más información sobre Consulte Resumen de interrupciones Technical reference manual .Identidad de interrupción en la página 1212 Cancelación de una interrupción IDelete . Es necesario eliminarla en primer lugar mediante la instrucción IDelete.27 CONNECT . Cuando se conecta una interrupción a una rutina TRAP. Se gestionarán al iniciar de nuevo el programa. Las interrupciones que lleguen o que no hayan sido gestionadas antes de la detención de la ejecución del programa no se procesan. Reservados todos los derechos. .RAPID overview Más información sobre la gestión de interrup. no es posible conectarla de nuevo ni transferirla a otra rutina. es posible conectar varias interrupciones a una misma rutina TRAP. Si la variable utilizada para especificar la interrupción no es una referencia a una variable. Estos errores pueden ser gestionados en el gestor ERROR. la variable de sistema ERRNO cambia a ERR_INOMAX. Sintaxis (EBNF) CONNECT <connect target> WITH <trap>'. Gestión de errores Si la variable utilizada para especificar la interrupción ya está conectada a una rutina TRAP. Sin embargo. Las interrupciones definidas como seguras no serán descuidadas al realizar el paro de programa.Conecta una interrupción a una rutina TRAP Continuación Limitaciones No es posible conectar una interrupción (una identidad de interrupción) a más de una rutina TRAP a la vez.Cancela una interrupción en la página 129 68 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Las interrupciones no se tienen en cuenta al detener el programa.RAPID overview ciones Tipos de datos de las interrupciones intnum .1 Instrucciones 1. Si no hay más números de interrupción disponibles.Technical reference manual .

la variable de sistema ERRNO cambia a ERR_FILEEXIST. NewPath Tipo de dato: string La ruta completa a la que se desea copiar el archivo. El archivo myfile se copia a yourfile.' [ NewPath ':=' ] < expression (IN) of string >'. Ejecución de programas El archivo especificado en OldPath se copia al archivo especificado en NewPath. Gestión de errores Si el archivo especificado en NewPath ya existe.Copia un archivo 1.Copia un archivo Utilización CopyFile se utiliza para hacer una copia de un archivo existente. En este momento. El archivo myfile se copia a yourfile en el directorio mydir. A continuación. "HOME:/suarchivo".Elimina un directorio en la página 377 Cambio del nombre de un archivo RenameFile . este error puede ser gestionado en el gestor de errores. los dos archivos son idénticos. Sintaxis CopyFile [ OldPath ':=' ] < expression (IN) of string > '.Crea un nuevo directorio en la página 227 Eliminación de un directorio RemoveDir . CopyFile "HOME:/myfile". "HOME:/mydir/yourfile". Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción CopyFile.Cambia el nombre de un archivo en la página 380 Continúa en la página siguiente 3HAC16581-5 Revisión: L 69 © Copyright 2004-2011 ABB. Ejemplo 1 CopyFile "HOME:/miarchivo".28 CopyFile . .28 CopyFile .' Información relacionada Para obtener más información sobre Consulte Creación de un directorio MakeDir . Argumentos CopyFile OldPath NewPath OldPath Tipo de dato: string La ruta completa del archivo del que se desea copiar. Reservados todos los derechos.1 Instrucciones 1.

28 CopyFile . .Comprobar el tipo de un archivo en la página 944 Comprobación del tamaño del archivo FileSize . Reservados todos los derechos.Elimina un archivo en la página 379 Comprobación del tipo del archivo IsFile .Copia un archivo Continuación Para obtener más información sobre Consulte Eliminación de un archivo RemoveFile .Obtiene el tamaño de un sistema de archivos en la página 910 70 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Obtiene el tamaño de un archivo en la página 903 Comprobación del tamaño del sistema de archivos FSSize .1 Instrucciones 1.

1 \IntX := DINT. empezando por la posición 3. el contenido (8 bytes) se copia a to_raw_data. . rawbytes to_raw_data. la variable from_raw_data de tipo rawbytes se borra en primer lugar. ToRawData Tipo de dato: rawbytes ToRawData es el contenedor de datos al cual se copiarán los datos de tipo rawbytes. se cambian a 0 todos sus bytes. FromIndex Tipo de dato: num FromIndex es la posición de FromRawData a partir de la cual comienza el copiado de los datos. from_raw_data. Ejemplo 1 VAR VAR VAR VAR rawbytes from_raw_data. se almacena en los 4 primeros bytes el valor de integer y en los siguientes 4 bytes el valor de float.4. (RawBytesLen(from_raw_data)+1) \Float4. Reservados todos los derechos. num integer := 8 num float := 13. PackRawBytes integer. ToIndex Tipo de dato: num Continúa en la página siguiente 3HAC16581-5 Revisión: L 71 © Copyright 2004-2011 ABB. CopyRawBytes from_raw_data. Argumentos CopyRawBytes FromRawData FromIndex ToRawData ToIndex[\NoOfBytes] FromRawData Tipo de dato: rawbytes FromRawData es el contenedor de datos del cual se copiarán los datos de tipo rawbytes.29 CopyRawBytes . El primer número de índice es 1. es decir. A continuación.Copia el contenido de un dato de tipo rawbytes Utilización CopyRawBytes se utiliza para copiar todo el contenido o una parte del mismo de una variable de tipo rawbytes a otra. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción CopyRawBytes. En este ejemplo.Copia el contenido de un dato de tipo rawbytes 1. PackRawBytes float. ClearRawBytes from_raw_data.1 Instrucciones 1. 3. from_raw_data. RawBytesLen(from_raw_data). to_raw_data. 1.29 CopyRawBytes . Después de guardar un dato en from_raw_data.

Empaqueta un encabezado de Dede DeviceNet en datos rawbytes viceNet en datos rawbytes en la página 304 Empaquetamiento de datos en datos PackRawBytes . La longitud actual de los bytes válidos de la variable ToRawData cambia a: • (ToIndex + número de bytes copiados . Sintaxis CopyRawBytes [FromRawData ':=' ] < variable (VAR) of rawbytes> '.Escribe un dato de tipo rawbytes en la página 772 Lectura de un dato rawbytes ReadRawBytes . se copian los datos de una variable rawbytes a otra.1) • La longitud actual de los bytes válidos de la variable ToRawData no cambia si la totalidad de la operación de copia se realiza dentro de la longitud anterior de bytes válidos de la variable ToRawData. Se copia todo el contenido hasta el final.' [ToIndex ':=' ] < expression (IN) of num> ['\'NoOfBytes ':=' < expression (IN) of num> ]'.29 CopyRawBytes . Ejecución de programas Durante la ejecución del programa. .Empaqueta datos en un dato de tipo rawbytes rawbytes en la página 307 Escritura de un dato rawbytes WriteRawBytes .' Información relacionada Para obtener más información sobre Consulte rawbytes datos rawbytes .Obtiene la longitud de un dato de tipo rawbytes rawbytes en la página 1011 Borrado del contenido de un dato de ClearRawBytes .Copia el contenido de un dato de tipo rawbytes Continuación ToIndex es la posición de ToRawData a partir de la cual se guardarán los datos copiados. se copian todos los bytes que van desde FromIndex hasta el final de la longitud actual de bytes válidos de FromRawData. Limitaciones CopyRawBytes no puede usarse para copiar parte de los datos de una variable de tipo rawbytes a otra parte de la misma variable rawbytes.1 Instrucciones 1. Si no se especifica \NoOfBytes. El primer número de índice es 1.' [ToRawData ':=' ] < variable (VAR) of rawbytes> '. Reservados todos los derechos.Datos sin formato en la página 1254 Obtención de la longitud de un dato RawBytesLen . [\NoOfBytes] Tipo de dato: num El valor especificado con \NoOfBytes es el número de bytes que se desea copiar de FromRawData a ToRawData.Borra el contenido de un dato de tipo rawbytes tipo rawbytes en la página 53 Empaquetamiento de un encabezado PackDNHeader .' [FromIndex ':=' ] < expression (IN) of num> '.Lee datos de tipo rawbytes en la página 374 Continúa en la página siguiente 72 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.

29 CopyRawBytes .Copia el contenido de un dato de tipo rawbytes Continuación Para obtener más información sobre Consulte Desempaquetamiento de datos de un UnpackRawBytes .Desempaqueta datos de un dato dato rawbytes de tipo rawbytes en la página 704 3HAC16581-5 Revisión: L 73 © Copyright 2004-2011 ABB. .1 Instrucciones 1. Reservados todos los derechos.

Descriptor de generador de correcciones en la página 1185 74 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Establece una conexión con un genenes rador de correcciones en la página 75 Desconexión de un generador de correc. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción CorrClear.CorrDiscon . Esta instrucción elimina todos los generadores de corrección conectados.Elimina todos los generadores de correcciones 1.30 CorrClear .Lee los offsets totales actuales en la página 860 Descriptor de corrección corrdescr . Nota Una forma sencilla de garantizar que todos los generadores de correcciones (con sus correcciones) se eliminen al iniciarse el programa. Reservados todos los derechos. La instrucción puede usarse para eliminar todos los offsets proporcionados anteriormente por todos los generadores de correcciones. es ejecutar CorrClear en una rutina de evento START.1 Instrucciones 1.Escribe en un generador de correcciones en la página 81 Lectura de los offsets totales actuales CorrRead .30 CorrClear .CorrCon .Elimina todos los generadores de correcciones Descripciones CorrClear se utiliza para eliminar todos los generadores de correcciones conectados. Ejemplo 1 CorrClear. Consulte Manual de referencia técnica .Cierra la conexión con un generaciones dor de correcciones en la página 80 Escritura en un generador de correcciones CorrWrite . tema Controller. Sintaxis CorrClear '.' Información relacionada Para obtener más información sobre Consulte Conexión con un generador de correccio. .Parámetros del sistema.

.31 CorrCon . Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción CorrCon. Continúa en la página siguiente 3HAC16581-5 Revisión: L 75 © Copyright 2004-2011 ABB. Ejemplo 1 VAR corrdescr id. La variable id se conecta a una referencia del generador de correcciones..1 Instrucciones 1. . Sistema de coordenadas de la trayectoria Todas las correcciones de la trayectoria (offsets aplicados a la trayectoria) se añaden en el sistema de coordenadas de la trayectoria. Más ejemplos A continuación aparecen más ejemplos de la instrucción CorrCon. Argumentos CorrCon Descr Descr Tipo de dato: corrdescr Descriptor del generador de correcciones. El sistema de coordenadas de la trayectoria se define de la forma mostrada a continuación: xx0500002156_en A Dirección de la trayectoria B Herramienta X Sistema de coordenadas de la trayectoria X Sistema de coordenadas de la herramienta • El eje de coordenadas X de la trayectoria se indica como la tangente de la trayectoria. CorrCon id. Reservados todos los derechos.31 CorrCon . Consulte también Más ejemplos en la página 75.Establece una conexión con un generador de correcciones 1..Establece una conexión con un generador de correcciones Utilización CorrCon se utiliza para conectarse a un generador de correcciones.

En la figura siguiente se muestra un dispositivo de corrección de trayectoria. Continúa en la página siguiente 76 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Establece una conexión con un generador de correcciones Continuación • El eje de coordenadas Y se deriva como el producto cruzado del eje de coordenadas X de la trayectoria y el eje de coordenadas Z de la herramienta. xx0500002155_en A Sensor para corrección horizontal B Sensor para corrección vertical C Sistema de coordenadas de la trayectoria T Herramienta Ejemplo de programa Nota hori_sig y vert_sig son señales analógicas definidas en los parámetros del sistema. . • El eje de coordenadas Z se deriva como el producto cruzado del eje de coordenadas Z de la trayectoria y el eje de coordenadas Y de la trayectoria. Reservados todos los derechos. Ejemplo de aplicación Un ejemplo de una aplicación en la que se utilizan correcciones de trayectoria es un robot que sostiene una herramienta con dos sensores montados en él para detectar las distancias vertical y horizontal respecto de un objeto de trabajo.1 Instrucciones 1.31 CorrCon .

5. conFlag := FALSE.z10. ! Write the total vertical correction on the FlexPendant.v100.z10. 0. ! Run MoveL with only horizontal interrupt correction. CorrCon hori_id. ! Position for start of contour tracking MoveJ p10.v100.z10.v100. VAR corrdescr hori_id. VAR pos total_offset. intno1.z.Establece una conexión con un generador de correcciones Continuación CONST num TARGET_DIST := 5. CorrCon vert_id. ! Disconnect the correction generator for vertical correction. VAR corrdescr vert_id. ! Run MoveL with both vertical and horizontal correction. ! Read the total corrections added by all connected correction generators. MoveL p20. CONNECT intno1 WITH ReadSensors. IDelete intno1. CorrDiscon vert_id. PROC PathRoutine() ! Conectar con los generadores de correcciones para la corrección horizontal y vertical. ! Remove the timer interrupt. the only connected correction generator is the one for horizontal ! correction. CorrClear.2. MoveL p30. ! Horizontal corrections will be unaffected. ! Remove all outstanding connected correction generators.tool1\Corr. TPWrite "The total vertical correction is:" \Num:=total_offset.31 CorrCon . The trap routine will read the sensor values and ! compute the path corrections.1 Instrucciones 1. ENDPROC Continúa en la página siguiente 3HAC16581-5 Revisión: L 77 © Copyright 2004-2011 ABB. . VAR bool conFlag. CONST num SCALE_FACTOR := 0. VAR pos write_offset.tool1. total_offset := CorrRead(). ! Setup a 5 Hz timer interrupt.tool1\Corr. conFlag := TRUE. Reservados todos los derechos. VAR intnum intno1. ! In this case. ITimer\Single.

Se hace referencia a cada generador de correcciones con un descriptor exclusivo (hori_id y vert_id) del tipo corrdescr. ! Compute the horizontal correction values and execute the correction.2. Reservados todos los derechos. De lo contrario. ENDTRAP Explicación del programa Se establece la conexión a dos generadores de correcciones con la instrucción CorrCon.y := (hori_sig .z := (vert_sig . write_offset. A continuación. Cada uno de los dos sensores utilizará un generador de correcciones. . write_offset. CorrWrite vert_id. CorrDiscon desconecta el generador de correcciones de la corrección vertical (al que se hace referencia con el descriptor vert_id).31 CorrCon . write_offset.Establece una conexión con un generador de correcciones Continuación TRAP ReadSensors VAR num horiSig.TARGET_DIST)*SCALE_FACTOR. Se configura una interrupción de temporización para llamar a la rutina TRAP ReadSensors con una frecuencia de 5 Hz. IF conFlag THEN ! Compute the vertical correction values and execute the correction. VAR num vertSig. El resultado de la corrección vertical total de la trayectoria se escribe en el FlexPendant con la instrucción TPWrite. horiSig := hori_sig. Cuando la primera instrucción MoveL está preparada. se utiliza la función CorrRead para leer la suma de todas las correcciones (la corrección total de la trayectoria) indicada por todos los generadores de correcciones conectados.1 Instrucciones 1. Los offsets necesarios para la corrección de la trayectoria se calculan en la rutina TRAP y se escriben en el generador de correcciones correspondiente (al que se hace referencia con los descriptores hori_id y vert_id) con la instrucción CorrWrite. ITimer\single. write_offset. no se ejecuta ninguna corrección. Todas las correcciones añadidas por este generador de correcciones se eliminarán de Continúa en la página siguiente 78 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. La instrucción MoveL debe ser programada con el argumento modificador Corr si se utilizan correcciones de trayectoria.x := 0. Todas las correcciones tienen un efecto inmediato sobre la trayectoria.z := 0. write_offset. write_offset.x := 0. intno1. 0. CONNECT intno1 WITH ReadSensors. ENDIF !Setup interrupt again IDelete intnol. CorrWrite hori_id. write_offset. write_offset.TARGET_DIST)*SCALE_FACTOR.y := 0.

X Y Z Eje de coordenadas de la trayectoria 0 0 3 Generador de correcciones vertical. junto con sus correcciones añadidas previamente.Cierra la conexión con un generador de correcciones en la página 80 Escritura en un generador de correcciones CorrWrite .Establece una conexión con un generador de correcciones Continuación la corrección total de la trayectoria. con la suma de todas sus correcciones de trayectoria - - - Generador de correcciones no conectado - - - Generador de correcciones no conectado - - - Generador de correcciones no conectado 0 1 3 La suma de todas las correcciones realizadas por todos los generadores de corrección conectados Limitaciones Es posible conectarse a un máximo de 5 generadores de correcciones a la vez.' Información relacionada Para obtener más información sobre Consulte Desconexión de un generador de correcciones CorrDiscon .31 CorrCon . La interrupción de temporización también se elimina con la instrucción IDelete. .Lee los offsets totales actuales en la página 860 Eliminación de todos los generadores de correcciones CorrClear .Escribe en un generador de correcciones en la página 81 Lectura de los offsets totales actuales CorrRead .1 Instrucciones 1. la función CorrClear elimina todos los generadores de correcciones restantes. Por último.Elimina todos los generadores de correcciones en la página 74 Descriptor de generador de correcciones corrdescr . Los generadores de correcciones no se mantienen al reiniciar el controlador. Reservados todos los derechos. el único que se elimina es el generador de correcciones para la corrección horizontal.Descriptor de generador de correcciones en la página 1185 3HAC16581-5 Revisión: L 79 © Copyright 2004-2011 ABB. Sintaxis CorrCon [ Descr ':=' ] < variable (VAR) of corrdescr > '. con la suma de todas sus correcciones de trayectoria 0 1 0 Generador de correcciones horizontal. Las correcciones añadidas por el generador de correcciones para la corrección horizontal se siguen conservando. En este caso. Los generadores de correcciones En la tabla siguiente se muestran los generadores de correcciones.

consulte CorrCon Establece una conexión con un generador de correcciones en la página 75. Consulte también Más ejemplos en la página 80. Argumentos CorrDiscon Descr Descr Tipo de dato: corrdescr Descriptor del generador de correcciones.32 CorrDiscon . Reservados todos los derechos. Ejemplo 1 VAR corrdescr id. Esta instrucción puede utilizarse para eliminar las correcciones obtenidas anteriormente. CorrDiscon id.CorrCon .. .Cierra la conexión con un generador de correcciones Descripción CorrDiscon se utiliza para desconectarse de un generador de correcciones con el que se ha conectado anteriormente.' Información relacionada Para obtener más información sobre Consulte Conexión con un generador de correccio.32 CorrDiscon .Descriptor de generador de correcciones en la página 1185 80 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Más ejemplos Para obtener más ejemplos de la instrucción CorrDiscon. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción CorrDiscon.. . Sintaxis CorrDiscon [ Descr ':=' ] < variable (VAR) of corrdescr > '.1 Instrucciones 1.Establece una conexión con un genenes rador de correcciones en la página 75 Escritura en un generador de correccio. ..CorrWrite . CorrCon id. CorrDiscon cierra la conexión con el generador de correcciones con el que se había conectado anteriormente y al que se hace referencia con el descriptor id.Escribe en un generador de correcciones nes en la página 81 Lectura de los offsets totales actuales CorrRead .Elimina todos los generadores de correcciones en la página 74 Descriptor de corrección corrdescr .Lee los offsets totales actuales en la página 860 Eliminación de todos los generadores de correcciones CorrClear ..Cierra la conexión con un generador de correcciones 1.

. CorrWrite id.1 Instrucciones 1. Reservados todos los derechos. Datos Tipo de dato: pos El offset a escribir.33 CorrWrite . A medida que aumentan la velocidad y los ángulos entre dos trayectorias lineales consecutivas. Los offsets actuales.CorrCon . consulte CorrCon Establece una conexión con un generador de correcciones en la página 75..Escribe en un generador de correcciones Descripción CorrWrite se utiliza para escribir offsets en el sistema de coordenadas de trayectoria de un generador de correcciones. Más ejemplos Para obtener más ejemplos de la instrucción CorrWrite. VAR pos offset. Argumentos CorrWrite Descr Data Descr Tipo de dato: corrdescr Descriptor del generador de correcciones.' Información relacionada Para obtener más información sobre Consulte Conexión con un generador de correccio.33 CorrWrite . la desviación respecto de la trayectoria esperada aumenta consiguientemente. Esto mismo se aplica a los círculos a medida que se reduce el radio del círculo. Limitaciones El mayor rendimiento se consigue en las trayectorias rectas.. se escriben en un generador de correcciones al que se hace referencia con el descriptor id. . almacenados en la variable offset.Establece una conexión con un genenes rador de correcciones en la página 75 Continúa en la página siguiente 3HAC16581-5 Revisión: L 81 © Copyright 2004-2011 ABB. Ejemplo 1 VAR corrdescr id.Escribe en un generador de correcciones 1. Sintaxis CorrWrite [ Descr ':=' ] < variable (VAR) of corrdescr > '. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción CorrWrite.' [ Data ':=' ] < expression (IN) of pos > '. offset.

CorrDiscon .Lee los offsets totales actuales en la página 860 Eliminación de todos los generadores de CorrClear .1 Instrucciones 1.Descriptor de generador de correcciones en la página 1185 82 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Cierra la conexión con un generaciones dor de correcciones en la página 80 Lectura de los offsets totales actuales CorrRead . Reservados todos los derechos.33 CorrWrite . .Escribe en un generador de correcciones Continuación Para obtener más información sobre Consulte Desconexión de un generador de correc.Elimina todos los generadores de correcciones correcciones en la página 74 Descriptor de generador de correcciones corrdescr .

fine. Ejemplo 3 MoveL p10. tool1. A continuación. Puede usarse para determinar qué unidad debe estar activa. por ejemplo cuando se utilizan unidades de accionamiento comunes. fine. tanto el robot como track_motion se mueven hacia p40. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. tool1. MoveL p20.1 Instrucciones 1. tool1. MoveL p40. v100. z10. Se desactiva la unidad orbit1 y se activa orbit2. Desactivación de la unidad mecánica orbit_a. v100. Argumentos DeactUnit MechUnit MechUnit Mechanical Unit Tipo de dato: mecunit El nombre de la unidad mecánica que debe desactivarse. en las tareas de movimiento. Esto significa que no se controlará ni monitorizará hasta que se reactive.Desactiva una unidad mecánica 1. z10.34 DeactUnit . Reservados todos los derechos. Ejemplo 2 MoveL p10. MoveL p30. fine. la trayectoria del nivel de trayectoria actual se borra y se desactiva la unidad mecánica especificada. DeactUnit orbit1. Ejecución de programas Cuando la trayectoria del robot y de los ejes externos ha sido completada. tool1. tool1. v100. Ejemplos A continuación aparecen algunos ejemplos básicos de la instrucción DeactUnit. v100. Ejemplo 1 DeactUnit orbit_a.34 DeactUnit . ActUnit orbit2. v100. v100. z10. ActUnit track_motion. La unidad track_motion quedará estacionaria cuando el robot se mueve hacia p20 y p30. tool1.Desactiva una unidad mecánica Utilización DeactUnit se utiliza para desactivar una unidad mecánica. Continúa en la página siguiente 3HAC16581-5 Revisión: L 83 © Copyright 2004-2011 ABB. si se cuenta con un sistema MultiMove. MoveL p20. DeactUnit track_motion. .

QStop.DeactUnit en el nivel StorePath. Restart o Step. no un punto de paso. la desactivación de una de estas unidades mecánicas también desconecta la unidad de la unidad de accionamiento común.' Información relacionada Para obtener más información sobre Consulte Activación de unidades mecánicas ActUnit .1 Instrucciones 1.Desactiva una unidad mecánica Continuación Si varias unidades mecánicas comparten una misma unidad de accionamiento. De lo contrario. Sintaxis DeactUnit [MechUnit ':='] < variable (VAR) of mecunit> '.Activa una unidad mecánica en la página 19 Unidades mecánicas mecunit . Es posible usar ActUnit . ésta última debe programarse con un punto de paro (zonedata fine). Stop. pero la trayectoria del nivel StorePath se borrará. la grabadora de trayectorias y la trayectoria del nivel básico estarán intactas.Unidad mecánica en la página 1227 84 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.34 DeactUnit . Reservados todos los derechos. pero al ejecutar RestoPath deben estar activadas las mismas unidades mecánicas al ejecutar StorePath. Limitaciones La instrucción DeactUnit no puede utilizarse si una de las unidades mecánicas se encuentra en el modo independiente. no será posible reanudar la ejecución tras una caída de suministro eléctrico.Unidad mecánica en la página 1227 Grabadora de trayectorias PathRecMoveBwd . En una operación de este tipo. Si esta instrucción va precedida de una instrucción de movimiento. .Hace retroceder la grabadora de trayectorias en la página 316mecunit . DeactUnit no puede ejecutarse en rutinas de RAPID que estén conectadas a los siguientes eventos especiales del sistema: PowerOn.

. .1 Instrucciones 1. WHILE no_of_parts>0 DO produce_part.35 Decr . Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción Decr.Reduce un número en 1 1. Ejemplo 1 VAR num no_of_parts:=0. Ejemplo 1 Decr reg1. Ejemplo 2 VAR dnum no_of_parts:=0. es decir reg1:=reg1-1. TPReadNum no_of_parts. "How many parts should be produced? ". "How many parts should be produced? ". .Reduce un número en 1 Utilización Decr se utiliza para restar 1 a una variable o una variable persistente de tipo numérico.. Continúa en la página siguiente 3HAC16581-5 Revisión: L 85 © Copyright 2004-2011 ABB. Decr no_of_parts. Dname Tipo de dato: dnum El nombre de la variable o de la variable persistente cuyo valor se desea reducir... Consulte también Más ejemplos en la página 85. Se resta 1 a reg1. TPReadDnum no_of_parts. Argumentos Decr Name | Dname Name Tipo de dato: num El nombre de la variable o de la variable persistente cuyo valor se desea reducir. Reservados todos los derechos. ENDWHILE Se pregunta al operador cuántas piezas deben producirse. La variable no_of_parts se utiliza para contar el número de piezas que quedan por producir. . Más ejemplos A continuación aparecen más ejemplos de la instrucción Decr. WHILE no_of_parts>0 DO produce_part. ENDWHILE Se pregunta al operador cuántas piezas deben producirse.35 Decr . Decr no_of_parts. La variable no_of_parts se utiliza para contar el número de piezas que quedan por producir.

Reservados todos los derechos.Suma un valor numérico en la página 21 ble Cambio de un dato mediante una expre.Reduce un número en 1 Continuación Sintaxis Decr [ Name ':=' ] < var or pers (INOUT) of num > | [ Dname ':=' ] < var or pers (INOUT) of dnum >' .' Información relacionada Para obtener más información sobre Consulte Incremento de una variable en 1 Incr .Aumenta en 1 un valor en la página 137 Sustracción de cualquier valor a una varia. .":=" . por ejemplo una multiplicación 86 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Add .1 Instrucciones 1.35 Decr .Asigna un valor en la página 26 sión arbitraria.

v50. Se activa la oscilación para el eje 2. Argumentos DitherAct [\MechUnit] Axis [\Level] [ \MechUnit ] Mechanical Unit Tipo de dato: mecunit El nombre de la unidad mecánica. 2. la oscilación comenzará tan pronto como se ejecuta SoftAct para el eje. . WaitTime 1. 2. WaitTime 2. SoftDeact. significa la activación del servo suave para el eje especificado del robot.Activa la función de oscilación del servo suave 1. que reduce la fricción del servo suave en el modelo IRB 7600. SoftAct \MechUnit:=ROB_1.Activa la función de oscilación del servo suave Utilización DitherAct se utiliza para activar la función de oscilación. Reservados todos los derechos. en las tareas de movimiento.36 DitherAct .1 Instrucciones 1. El movimiento se retarda un segundo para permitir un tiempo de transición suficiente para la pendiente de SoftAct. Si se llama a DitherAct antes de SoftAct. z20. DitherDeact. La oscilación sólo permanece activada durante un segundo durante el servo suave.36 DitherAct . si se cuenta con un sistema MultiMove. Axis Tipo de dato: num Número de eje (1-6). 2. DitherAct \MechUnit:=ROB_1. [ \Level ] Tipo de dato: num Continúa en la página siguiente 3HAC16581-5 Revisión: L 87 © Copyright 2004-2011 ABB. la oscilación permanece activada para todas las llamadas posteriores a SoftAct. WaitTime 1. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. MoveL p1. SoftDeact. DitherDeact. 100. 100. tool1. Si se omite este argumento. 2. Ejemplo 1 SoftAct \MechUnit:=ROB_1. Si no se realiza ninguna llamada a DitherDeact. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción DitherAct. Ejemplo 2 DitherAct \MechUnit:=ROB_1.

Technical reference manual . Normalmente. Reservados todos los derechos.' Información relacionada Para obtener más información sobre Consulte Activación del servo suave SoftAct .Activa la función de oscilación del servo suave Continuación La amplitud de la oscilación (del 50% al 150%).Activa el servo suave en la página 504 Comportamiento con el servo suave acti.1 Instrucciones 1.Desactiva la función de oscilación del servo suave en la página 89 88 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. las oscilaciones se reducen (la fricción aumenta). La única forma de eliminar este comportamiento es llamar a DitherAct antes de SoftAct. El máximo efecto de la reducción de la fricción se produce en los ejes 2 y 3. La instrucción sólo debe utilizarse con el sistema IRB 7600.36 DitherAct . La llamada a DitherAct después de SoftAct resulta más rápida. Si se hiciera. se utiliza la máxima oscilación (puede dar lugar a vibraciones en el elemento terminal). La oscilación se desactiva siempre que se produce una caída de alimentación eléctrica. es necesario aumentar el tiempo de pendiente de SoftAct. Con el 150%. que varía de un robot a otro. . Los parámetros de oscilación se ajustan automáticamente. Sintaxis DitherAct [ '\' MechUnit ':=' < variable (VAR) of mecunit > ] [Axis ':=' ] < expression (IN) of num > [ '\' Level ':=' < expression (IN) of num > ] '. el robot debe estar en un punto fino. el eje 1 del sistema IRB 7600 no requiere oscilación. El máximo rendimiento de la oscilación se consigue después de tres o cuatro ejecuciones de SoftAct en una posición de proceso. multiplicado por el factor de pendiente de la instrucción SoftAct. La oscilación no está disponible para el eje 6. no se permite abandonar el punto fino hasta que ha transcurrido el tiempo de transición de la pendiente. podrían causarse daños en las cajas de engranajes. Además.RAPID overview vado Desactivación de la oscilación DitherDeact . Ejecución de programas La llamada a DitherAct puede hacerse antes o después de SoftAct. Limitaciones La llamada a DitherAct después de SoftAct puede dar lugar a un movimiento no deseado del robot. El valor predeterminado es 100%. ¡AVISO! Al llamar a DitherAct antes de SoftAct. Con el 50%. Si sigue habiendo movimiento. pero presenta otras limitaciones. El tiempo de transición es el tiempo de pendiente.

1 Instrucciones
1.37 DitherDeact - Desactiva la función de oscilación del servo suave

1.37 DitherDeact - Desactiva la función de oscilación del servo suave
Utilización
DitherDeact se utiliza para desactivar la función de oscilación del servo suave
en el modelo IRB 7600.
Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos básicos
A continuación aparece un ejemplo básico de la instrucción DitherDeact.
Ejemplo 1
DitherDeact;

Desactiva la oscilación de todos los ejes.
Ejecución de programas
DitherDeact puede usarse en cualquier momento. Si el servo suave está activado,
la oscilación se detiene inmediatamente en todos los ejes. Si el servo suave no
está activado, la oscilación no estará activada cuando se ejecute SoftAct
posteriormente.
La oscilación se desactiva automáticamente en los casos siguientes:

En los arranques en frío

Cuando se carga un nuevo programa

Cuando se inicia la ejecución del programa desde el principio

Sintaxis
DitherDeact';'

Información relacionada
Para obtener más información sobre

Consulte

Activación de la oscilación

DitherAct - Activa la función de oscilación del
servo suave en la página 87

3HAC16581-5 Revisión: L

89
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.38 DropWObj - Suelta un objeto de trabajo sobre un transportador

1.38 DropWObj - Suelta un objeto de trabajo sobre un transportador
Utilización
DropWObj (Drop Work Object) se utiliza para desconectarse del objeto actual para
dejar el programa preparado para el siguiente objeto.
Ejemplos básicos
A continuación aparece un ejemplo básico de la instrucción DropWObj.
Ejemplo 1
MoveL *,
MoveL *,
DropWObj
MoveL *,

v1000, z10, tool, \WObj:=wobj_on_cnv1;
v1000, fine, tool, \WObj:=wobj0;
wobj_on_cnv1;
v1000, z10, tool, \WObj:=wobj0;

Argumentos
DropWObj WObj

WObj
Work Object
Tipo de dato: wobjdata
El objeto de trabajo móvil (sistema de coordenadas) con el que está relacionada
la posición de robot indicada en la instrucción. El transportador de la unidad
mecánica debe especificarse con ufmec en el objeto de trabajo.
Ejecución de programas
Al soltar el objeto de trabajo, la unidad de codificador deja de seguir al objeto. El
objeto se elimina de la cola de objetos y no puede ser recuperado.
Limitaciones
Si se ejecuta la instrucción mientras el trabajo está utilizando activamente el objeto
de trabajo coordinado con el transportador, el movimiento se detiene.
La instrucción sólo puede ejecutarse después de utilizar un objeto de trabajo fijo
en las instrucciones de movimiento precedentes, con instrucciones de punto fino
o (>1) zonas de esquina.
Sintaxis
DropWObj
[ WObj ':='] < persistent (PERS) of wobjdata>';'

Información relacionada
Para obtener más información sobre

Consulte

Espera a objetos de trabajo

WaitWObj - Espera a un objeto de trabajo en un
transportador en la página 749

Seguimiento de transportadores

Application manual - Conveyor tracking

90

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.39 EOffsOff - Desactiva un offset de ejes externos

1.39 EOffsOff - Desactiva un offset de ejes externos
Utilización
EOffsOff (External Offset Off) se utiliza para desactivar un offset de los ejes
externos.
El offset de los ejes externos se activa con la instrucción EOffsSet o EOffsOn y
se aplica a todos los movimientos hasta que se activa otro offset para los ejes
externos o hasta que se desactiva el offset de todos los ejes externos.
Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción EOffsOff.
Ejemplo 1
EOffsOff;

Desactivación del offset de los ejes externos.
Ejemplo 2
MoveL p10, v500, z10, tool1;
EOffsOn \ExeP:=p10, p11;
MoveL p20, v500, z10, tool1;
MoveL p30, v500, z10, tool1;
EOffsOff;
MoveL p40, v500, z10, tool1;

Se define un offset como la diferencia entre la posición de cada eje en p10 y p11.
El desplazamiento afecta al movimiento hacia p20 y p30, pero no hacia p40.
Ejecución de programas
Se desactivan los offsets activos para los ejes externos.
Sintaxis
EOffsOff ';'

Información relacionada
Para obtener más información sobre

Consulte

Definición del desplazamiento con dos EOffsOn - Activa un offset de ejes externos en la
posiciones
página 92
Definición de offsets a partir de valores EOffsSet - Activa un offset de ejes externos a
conocidos
partir de valores conocidos en la página 94
Desactivación del desplazamiento de
programa del robot

PDispOff - Desactiva el desplazamiento de programa en la página 336

3HAC16581-5 Revisión: L

91
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.40 EOffsOn - Activa un offset de ejes externos

1.40 EOffsOn - Activa un offset de ejes externos
Utilización
EOffsOn(External Offset On) se utiliza para definir y activar un offset de ejes
externos a partir de dos posiciones.
Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción EOffsOn.
Consulte también Más ejemplos en la página 93.
Ejemplo 1
MoveL p10, v500, z10, tool1;
EOffsOn \ExeP:=p10, p20;

Se activa un offset para los ejes externos. El offset se calcula para cada eje, a
partir de la diferencia entre las posiciones p10 y p20.
Ejemplo 2
MoveL p10, v500, fine \Inpos := inpos50, tool1;
EOffsOn *;

Se activa un offset para los ejes externos. Dado que en la instrucción anterior se
ha utilizado un punto de paro bien definido, no es necesario utilizar el argumento
\ExeP. El desplazamiento se calcula a partir de la diferencia existente entre la
posición real de cada eje y el punto programado (*) almacenado en la instrucción.
Argumentos
EOffsOn [\ExeP] ProgPoint

[ \ExeP ]
Executed Point
Tipo de dato: robtarget
La nueva posición, utilizada para el cálculo del offset. Si se omite el argumento,
se utiliza la posición actual de los ejes en el momento de la ejecución del programa.
ProgPoint
Programmed Point
Tipo de dato: robtarget
La posición original de los ejes en el momento de la programación.
Ejecución de programas
El offset se calcula como la diferencia entre \ExeP y ProgPoint en cada eje
externo por separado. Si no se ha especificado el valor de \ExeP, se utiliza en su
lugar la posición actual de los ejes en el momento de la ejecución del programa.
Dado que es la posición real de los ejes que se utiliza, los ejes no deben estar en
movimiento cuando se ejecuta EOffsOn.

Continúa en la página siguiente
92

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.40 EOffsOn - Activa un offset de ejes externos
Continuación
A continuación, se utiliza este offset para desplazar la posición de los ejes externos
en las instrucciones de posicionamiento posteriores. El offset permanece activo
hasta que se activa un offset diferente (con la instrucción EOffsSet o EOffsOn)
o hasta que se desactiva el offset de los ejes externos (la instrucción EOffsOff).
Sólo es posible activar al mismo tiempo un offset para cada eje individual. Por
otro lado, es posible programar varios EOffsOn uno tras otro y, si se hace, se
suman los distintos offsets.
El offset de los ejes externos se desactiva automáticamente en los casos siguientes:

En los arranques en frío.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecución del programa desde el principio.

Más ejemplos
A continuación aparecen más ejemplos de cómo usar la instrucción EOffsOn.
Ejemplo 1
SearchL sen1, psearch, p10, v100, tool1;
PDispOn \ExeP:=psearch, *, tool1;
EOffsOn \ExeP:=psearch, *;

Se realiza una búsqueda en la cual la posición buscada tanto de los ejes del robot
como de los ejes externos se almacena en la posición psearch. Cualquier
movimiento realizado a continuación parte de esta posición utilizando un
desplazamiento de programa tanto de los ejes del robot como de los ejes externos.
El desplazamiento se calcula a partir de la diferencia existente entre la posición
buscada y el punto programado (*) almacenado en la instrucción.
Sintaxis
EOffsOn
[ '\' ExeP ':=' < expression (IN) of robtarget> ',']
[ ProgPoint ':=' ] < expression (IN) of robtarget> ';'

Información relacionada
Para obtener más información sobre

Consulte

Desactivación de un offset de ejes exter- EOffsOff - Desactiva un offset de ejes externos
nos
en la página 91
Definición de offsets a partir de valores
conocidos

EOffsSet - Activa un offset de ejes externos a
partir de valores conocidos en la página 94

Desplazamiento de los movimientos del PDispOn - Activa el desplazamiento de prograrobot
ma en la página 337
Sistemas de coordenadas

Technical reference manual - RAPID overview

3HAC16581-5 Revisión: L

93
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.41 EOffsSet - Activa un offset de ejes externos a partir de valores conocidos

1.41 EOffsSet - Activa un offset de ejes externos a partir de valores conocidos
Utilización
EOffsSet (External Offset Set) se utiliza para definir y activar un offset para ejes
externos a partir de valores conocidos.
Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos básicos
A continuación aparece un ejemplo básico de la instrucción EOffsSet.
Ejemplo 1
VAR extjoint eax_a_p100 := [100, 0, 0, 0, 0, 0];
...
EOffsSet eax_a_p100;

Activación de un offset eax_a_p100 para los ejes externos, lo que implica que
(siempre y cuando el eje externo lógico "a" sea lineal):

El sistema de coordenadas ExtOffs se desplaza 100 mm para el eje lógico
"a" (consulte la figura siguiente).

Siempre y cuando esté activado este offset, todas las posiciones se desplazan
100 mm en la dirección del eje x.

La figura muestra el desplazamiento de un eje externo.

100
Sistema de coordenadas
normal
0
Sistema de coordenadas
ExtOffs

+X

0

+X

xx0500002162_es

Argumentos
EOffsSet EAxOffs

EAxOffs
External Axes Offset
Tipo de dato: extjoint
El offset de los ejes externos se define como un dato del tipo extjoint, expresado
en:

mm en el caso de los ejes lineales

Grados en el caso de los ejes de rotación

Continúa en la página siguiente
94

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.41 EOffsSet - Activa un offset de ejes externos a partir de valores conocidos
Continuación
Ejecución de programas
El offset de los ejes externos se activa cuando se ejecuta la instrucción EOffsSet
y permanece activo hasta que se activa otro offset (con una instrucción EOffsSet
o EOffsOn) o hasta que se desactiva el offset de los ejes externos (con una
instrucción EOffsOff).
Sólo es posible activar un offset para los ejes externos al mismo tiempo. No es
posible sumar un offset a otro mediante EOffsSet.
El offset de los ejes externos se desactiva automáticamente en los casos siguientes:

En los arranques en frío.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecución del programa desde el principio.

Sintaxis
EOffsSet
[ EAxOffs ':=' ] < expression (IN) of extjoint> ';'

Información relacionada
Para obtener más información sobre

Consulte

Activación de un offset de ejes externos EOffsOn - Activa un offset de ejes externos en
la página 92
Desactivación de un offset de ejes exter- EOffsOff - Desactiva un offset de ejes externos
nos
en la página 91
Desplazamiento de los movimientos del PDispOn - Activa el desplazamiento de prograrobot
ma en la página 337
Definición de datos del tipo extjoint

extjoint - Posición de los ejes externos en la
página 1205

Sistemas de coordenadas

Technical reference manual - RAPID overview

3HAC16581-5 Revisión: L

95
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.42 EraseModule - Elimina un módulo

1.42 EraseModule - Elimina un módulo
Utilización
EraseModule se utiliza para eliminar un módulo de la memoria de programas
durante la ejecución.
No existe ninguna restricción en cuanto a cómo se haya cargado el módulo. Puede
haber sido cargado manualmente, desde la configuración o con una combinación
de las instrucciones Load, StartLoad y WaitLoad.
El módulo no puede definirse como Shared en la configuración.
Ejemplos básicos
A continuación aparece un ejemplo básico de la instrucción EraseModule.
Ejemplo 1
EraseModule "PART_A";

Borra el módulo de programa PART_A de la memoria de programas.
Argumentos
EraseModule ModuleName

ModuleName
Tipo de dato: string
El nombre del módulo que debe eliminarse. Recuerde que se trata del nombre del
módulo, no el nombre del archivo.
Ejecución de programas
La ejecución del programa espera a que el módulo de programa termine el proceso
de eliminación antes de que la ejecución continúe con la instrucción siguiente.
Una vez eliminado el módulo de programa, se vinculan los demás módulos de
programa.
Limitaciones
No se permite eliminar módulos de programa que se estén ejecutando.
Las rutinas TRAP, los eventos de E/S del sistema y otras tareas de programa no
pueden ejecutarse durante el proceso de eliminación.
Evite tener movimientos en curso durante la eliminación.
La detención del programa durante la ejecución de la instrucción EraseModule
da lugar a un paro protegido con los motores apagados y un mensaje de error
"20025 Tiempo excesivo Orden paro" en el FlexPendant.
Gestión de errores
Si el archivo de la instrucción EraseModule no puede ser eliminado porque no
ha sido encontrado, la variable ERRNO cambia a ERR_MODULE. A continuación,
este error puede ser gestionado en el gestor de errores.

Continúa en la página siguiente
96

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.42 EraseModule - Elimina un módulo
Continuación
Sintaxis
EraseModule
[ModuleName':=']<expression (IN) of string>';'

Información relacionada
Para obtener más información sobre Consulte
Descarga de un módulo de programa

UnLoad - Descarga un módulo de programa durante la ejecución en la página 701

Carga de módulos de programa en pa- StartLoad - Carga un módulo de programa durante
ralelo con la ejecución de otro programa la ejecución en la página 514
WaitLoad - Conecta el módulo cargado a la tarea
en la página 729
Aceptación de una referencia no resuel- Manual de referencia técnica - Parámetros del
ta
sistema, sección Controller

3HAC16581-5 Revisión: L

97
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.43 ErrLog - Escribe un mensaje de error

1.43 ErrLog - Escribe un mensaje de error
Utilización
ErrLog se utiliza para mostrar un mensaje de error en el FlexPendant y escribirlo
en el registro de eventos. Es necesario indicar el número de error y cinco
argumentos acerca del mismo. El mensaje se almacena en el dominio de proceso
del registro del robot. ErrLog también puede usarse para mostrar avisos y
mensajes de información.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción ErrLog.
Ejemplo 1
Si desea crear su propio archivo .xml, puede usar el valor de ErrorId 4800 como
en el ejemplo siguiente:
VAR errstr my_title := "myerror";
VAR errstr str1 := "errortext1";
VAR errstr str2 := "errortext2";
VAR errstr str3 := "errortext3";
VAR errstr str4 := "errortext4";
ErrLog 4800, my_title, str1,str2,str3,str4;

En el FlexPendant, el mensaje tendría el aspecto siguiente:
Mensaje de evento: 4800
myerror
errortext1
errortext2
errortext3
errortext4
Ejemplo 2
Las ID ErrorId deben declararse en un archivo .xml. El número debe estar entre
5.000 y 9.999. El mensaje de error se escribe en el archivo .xml y los argumentos
del mensaje enviados en la instrucción ErrLog. El valor de ErrorId del archivo
.xml es el mismo que se indica en la instrucción ErrLog.
NOTA: Si usa un valor de ErrorId de entre 5.000-9.999, debe instalar su propio
archivo xml.
Ejemplo de mensaje en un archivo .xml:
<Message number="5210" eDefine="ERR_INPAR_RDONLY">
<Title>Parameter error</Title>
<Description>Task:<arg format="%s" ordinal="1" />
<p />Symbol <arg format="%s" ordinal="2" />is read-only
<p />Context:<arg format="%s" ordinal="3" /><p />
</Description>
</Message>

Continúa en la página siguiente
98

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.43 ErrLog - Escribe un mensaje de error
Continuación
Ejemplo de instrucción:
MODULE MyModule
PROC main()
VAR num errorid := 5210;
VAR errstr arg := "P1";
ErrLog errorid, ERRSTR_TASK, arg, ERRSTR_CONTEXT,ERRSTR_UNUSED,
ERRSTR_UNUSED;
ErrLog errorid \W, ERRSTR_TASK, arg,
ERRSTR_CONTEXT,ERRSTR_UNUSED, ERRSTR_UNUSED;
ENDPROC
ENDMODULE

En el FlexPendant, el mensaje tendría el aspecto siguiente:
Mensaje de evento: 5210
Error de parámetro
Tarea: T_ROB1
El símbolo P1 es de sólo lectura.
Contexto: MyModule/main/ErrLog
La primera instrucción ErrLog genera un mensaje de error. El mensaje se almacena
en el registro del robot, en el dominio de proceso. También se muestra en la
pantalla del FlexPendant.
La segunda instrucción es una advertencia. Sólo se almacena un mensaje en el
registro del robot.
En ambos casos, el programa sigue ejecutándose una vez terminada la instrucción.
Argumentos
ErrLog ErrorID [\W] | [\I] Argument1 Argument2 Argument3 Argument4
Argument5

ErrorId
Tipo de dato: num
El número de un error concreto que se desea monitorizar. El número de error debe
estar en el intervalo 4.800-4.814 si se utiliza el archivo xml preinstalado y en el
intervalo 5.000-9.999 si se usa un archivo xml propio.
[ \W ]
Warning
Tipo de dato: switch
Genera una advertencia que sólo se almacena en el registro de eventos (no se
muestra directamente en la pantalla del FlexPendant).
[ \I ]
Information
Tipo de dato: switch
Genera un mensaje de información que sólo se almacena en el registro de eventos
(no se muestra directamente en la pantalla del FlexPendant).

Continúa en la página siguiente
3HAC16581-5 Revisión: L

99
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.43 ErrLog - Escribe un mensaje de error
Continuación
Si no se especifica ninguno de los argumentos \W o \I, la instrucción genera un
mensaje de error directamente en el FlexPendant y lo almacena también en el
registro de eventos.
Argument1
Tipo de dato: errstr
Primer argumento del mensaje de error. Puede usar cualquier cadena de tipo string
o un dato predefinido del tipo errstr.
Argument2
Tipo de dato: errstr
Segundo argumento del mensaje de error. Puede usar cualquier cadena de tipo
string o un dato predefinido del tipo errstr.
Argument3
Tipo de dato: errstr
Tercer argumento del mensaje de error. Puede usar cualquier cadena de tipo string
o un dato predefinido del tipo errstr.
Argument4
Tipo de dato: errstr
Cuarto argumento del mensaje de error. Puede usar cualquier cadena de tipo
string o un dato predefinido del tipo errstr.
Argument5
Tipo de dato: errstr
Quinto argumento del mensaje de error. Puede usar cualquier cadena de tipo string
o un dato predefinido del tipo errstr.
Ejecución de programas
Un mensaje de error (máximo 5 líneas) se muestra en el FlexPendant y se escribe
en el registro de eventos.
En el caso del argumento \W o el argumento \I se escribe un aviso o un mensaje
de información en el registro de eventos.
ErrLog genera errores de programa en el intervalo 4.800-4.814 si se usa el archivo
de programa instalado por el sistema y en el intervalo 5.000-9.999 si se instala un
archivo xml propio. El error generado depende del valor de ErrorID indicado.
El mensaje se almacena en el dominio de proceso del registro de eventos.
La forma de instalar un archivo xml propio se describe en el manual Opciones
adicionales; consulte Información relacionada más abajo.
Limitaciones
La longitud total de la cadena (Argument1-Argument5) está limitada a 195
caracteres.

Continúa en la página siguiente
100

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.43 ErrLog - Escribe un mensaje de error
Continuación
Sintaxis
ErrLog
[ErrorId ':=' ] < expression (IN) of num> ','
[ '\'W ] | [' \' I ] ','
[Argument1 ':=' ] < expression (IN) of errstr>
[Argument2 ':=' ] < expression (IN) of errstr>
[Argument3 ':=' ] < expression (IN) of errstr>
[Argument4 ':=' ] < expression (IN) of errstr>
[Argument5 ':=' ] < expression (IN) of errstr>

','
','
','
','
';'

Información relacionada
Para obtener más información sobre

Consulte

Datos predefinidos de tipo errstr

errstr - Cadena de error en la página 1201

Visualización de mensajes en el FlexPen- TPWrite - Escribe en el FlexPendant en la págidant
na 607
UIMsgBox - Cuadro de mensaje de usuario de
tipo básico en la página 689
Registro de eventos

Manual del operador - IRC5 con FlexPendant

Mensajes del registro de eventos, explica- Application manual - Additional options, sección
ción del archivo XML
Event log messages
Cómo instalar archivos XML al utilizar
opciones adicionales

Application manual - Additional options

3HAC16581-5 Revisión: L

101
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.44 ErrRaise - Escribe un aviso y llama a un gestor de errores

1.44 ErrRaise - Escribe un aviso y llama a un gestor de errores
Utilización
ErrRaise se utiliza para crear un error en el programa y llamar a continuación
al gestor de errores de la rutina. Se almacena un aviso en el registro de eventos.
ErrRaise también puede usarse en el gestor de errores para propagar el error
actual hacia el gestor de errores de la rutina desde la que se llamó a la rutina
actual.
Es necesario indicar el nombre del error, el número de error y cinco argumentos
acerca del mismo. El mensaje se almacena en el dominio de proceso del registro
del robot.
Ejemplos básicos
A continuación aparecen ejemplos básicos de la instrucción ErrRaise.
Ejemplo 1
Si desea crear su propio archivo .xml, puede usar el valor de ErrorId 4800 como
en el ejemplo siguiente:
MODULE MyModule
VAR errnum ERR_BATT:=-1;
PROC main()
VAR num errorid := 4800;
VAR errstr my_title := "Backup battery status";
VAR errstr str1 := "Bacup battery is fully charged";
BookErrNo ERR_BATT;
ErrRaise "ERR_BATT", errorid, my_title, ERRSTR_TASK, str1,
ERRSTR_CONTEXT,ERRSTR_EMPTY;
ERROR
IF ERRNO = ERR_BATT THEN
TRYNEXT;
ENDIF
ENDPROC
ENDMODULE

En el FlexPendant, el mensaje tendría el aspecto siguiente (aviso y/o un error):
Mensaje de evento: 4800
Estado de batería de respaldo
Tarea: main
La batería de respaldo está totalmente cargada.
Contexto: MyModule/main/ErrRaise
Es necesario registrar un número de error con la instrucción BookErrNo. La
cadena correspondiente se indica como primer argumento,ErrorName en la
instrucción ErrRaise.
ErrRaise crear un error y llama al gestor de errores. Si el error se ha resuelto,
se genera un aviso en el registro de eventos, dentro del dominio de proceso. De
lo contrario, se genera un error no recuperable y el programa se detiene.

Continúa en la página siguiente
102

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.44 ErrRaise - Escribe un aviso y llama a un gestor de errores
Continuación
ErrRaise también puede usarse en un gestor de errores en una subrutina. En
este caso, la ejecución continúa en el gestor de errores de la rutina desde la que
se realiza la llamada.
Ejemplo 2
Las ID ErrorId deben declararse en un archivo .xml. El número debe estar entre
5.000 y 9.999. El mensaje de error se escribe en el archivo .xml y los argumentos
del mensaje enviados en la instrucción ErrRaise. El valor de ErrorId del archivo
.xml es el mismo que se indica en la instrucción ErrRaise.
NOTA: Si usa un valor de ErrorId de entre 5.000-9.999, debe instalar su propio
archivo xml.
Ejemplo de mensaje en un archivo .xml:
<Message number="7055" eDefine="SYS_ERR_ARL_INPAR_RDONLY">
<Title>Parameter error</Title>
<Description>Task:<arg format="%s" ordinal="1" />
<p />Symbol <arg format="%s" ordinal="2" />is read-only
<p />Context:<arg format="%s" ordinal="3" /><p /></Description>
</Message>

Ejemplo de instrucción:
MODULE MyModule
VAR errnum ERR_BATT:=-1;
PROC main()
VAR num errorid := 7055;
BookErrNo ERR_BATT;
ErrRaise "ERR_BATT", errorid, ERRSTR_TASK,
ERRSTR_CONTEXT,ERRSTR_UNUSED, ERRSTR_UNUSED,
ERRSTR_UNUSED;
ERROR
IF ERRNO = ERR_BATT THEN
TRYNEXT;
ENDIF
ENDPROC
ENDMODULE

En el FlexPendant, el mensaje tendría el aspecto siguiente (aviso y/o un error):
Mensaje de evento: 7055
Estado de batería de respaldo
Tarea: main
La batería de respaldo está totalmente cargada.
Contexto: MyModule/main/ErrRaise
Es necesario registrar un número de error con la instrucción BookErrNo. La
cadena correspondiente se indica como primer argumento,ErrorName en la
instrucción ErrRaise.
ErrRaise crear un error y llama al gestor de errores. Si el error se ha resuelto,
se genera un aviso en el registro de eventos, dentro del dominio de proceso. De
lo contrario, se genera un error no recuperable y el programa se detiene.

Continúa en la página siguiente
3HAC16581-5 Revisión: L

103
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.44 ErrRaise - Escribe un aviso y llama a un gestor de errores
Continuación
ErrRaise también puede usarse en un gestor de errores en una subrutina. En
este caso, la ejecución continúa en el gestor de errores de la rutina desde la que
se realiza la llamada.
Argumentos
ErrRaise ErrorName ErrorId Argument1 Argument2 Argument3 Argument4
Argument5

ErrorName
Tipo de dato: string
Es necesario registrar un número de error con la instrucción BookErrNo. La
variable correspondiente se indica como ErrorName.
ErrorId
Tipo de dato: num
El número de un error concreto que se desea monitorizar. El número de error debe
estar en el intervalo 4.800-4.814 si se utiliza el archivo xml preinstalado y en el
intervalo 5.000-9.999 si se usa un archivo xml propio.
Argument1
Tipo de dato: errstr
Primer argumento del mensaje de error. Puede usar cualquier cadena de tipo string
o un dato predefinido del tipo errstr.
Argument2
Tipo de dato: errstr
Segundo argumento del mensaje de error. Puede usar cualquier cadena de tipo
string o un dato predefinido del tipo errstr.
Argument3
Tipo de dato: errstr
Tercer argumento del mensaje de error. Puede usar cualquier cadena de tipo string
o un dato predefinido del tipo errstr.
Argument4
Tipo de dato: errstr
Cuarto argumento del mensaje de error. Puede usar cualquier cadena de tipo
string o un dato predefinido del tipo errstr.
Argument5
Tipo de dato: errstr
Quinto argumento del mensaje de error. Puede usar cualquier cadena de tipo string
o un dato predefinido del tipo errstr.

Continúa en la página siguiente
104

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.44 ErrRaise - Escribe un aviso y llama a un gestor de errores
Continuación
Ejecución de programas
ErrRaise genera avisos de programa en el intervalo 4.800-4.814 si se usa el
archivo de programa instalado por el sistema y en el intervalo 5.000-9.999 si se
instala un archivo xml propio. El error generado depende del valor de ErrorID
indicado. Se almacena un aviso en el registro de mensajes del robot, en el dominio
de proceso.
Cuando se ejecuta ErrRaise, el comportamiento depende de cuándo se ejecute:

Si se ejecuta la instrucción en el cuerpo de la rutina, se genera un aviso y
la ejecución continúa en el gestor de errores.

Si se ejecuta la instrucción en un gestor de errores, el aviso anterior se omite,
se genera uno nuevo y el control es elevado a la instrucción desde la que
se hizo la llamada.

Limitaciones
La longitud total de la cadena (Argument1-Argument5) está limitada a 195
caracteres.
Más ejemplos
A continuación aparecen más ejemplos de cómo usar la instrucción ErrRaise.
Ejemplo 1
VAR errnum ERR_BATT:=-1;
VAR errnum ERR_NEW_ERR:=-1;
PROC main()
testerrraise;
ENDPROC
PROC testerrraise()
BookErrNo ERR_BATT;
BookErrNo ERR_NEW_ERR;
ErrRaise "ERR_BATT",7055,ERRSTR_TASK,ERRSTR_CONTEXT,
ERRSTR_UNUSED,ERRSTR_UNUSED,ERRSTR_UNUSED;
ERROR
IF ERRNO = ERR_BATT THEN
ErrRaise "ERR_NEW_ERR",7156,ERRSTR_TASK,ERRSTR_CONTEXT,
ERRSTR_UNUSED,ERRSTR_UNUSED, ERRSTR_UNUSED;
ENDIF
ENDPROC

Generar un nuevo aviso 7156 desde un gestor de errores. Elevar el control a la
rutina desde la que se hizo la llamada y detener la ejecución.

Continúa en la página siguiente
3HAC16581-5 Revisión: L

105
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.44 ErrRaise - Escribe un aviso y llama a un gestor de errores
Continuación
Sintaxis
ErrRaise
[ErrorName ':='
[ErrorId ':=' ]
[Argument1 ':='
[Argument2 ':='
[Argument3 ':='
[Argument4 ':='
[Argument5 ':='

]
<
]
]
]
]
]

< expression (IN) of string>
expression (IN) of num> ','
< expression (IN) of errstr>
< expression (IN) of errstr>
< expression (IN) of errstr>
< expression (IN) of errstr>
< expression (IN) of errstr>

','
','
','
','
','
';'

Información relacionada
Para obtener más información sobre

Consulte

Datos predefinidos de tipo errstr

errstr - Cadena de error en la página 1201

Registro de números de error

BookErrNo - Registra un número de error de
sistema de RAPID en la página 32

Gestión de errores

Technical reference manual - RAPID overview

106

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.45 ErrWrite - Escribe un mensaje de error

1.45 ErrWrite - Escribe un mensaje de error
Utilización
ErrWrite (Error Write) se utiliza para mostrar un mensaje de error en el
FlexPendant y escribirlo en el registro de eventos. También puede usarse para
mostrar avisos y mensajes de información.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción ErrWrite.
Ejemplo 1
ErrWrite "PLC error", "Fatal error in PLC" \RL2:="Call service";
Stop;

Se almacena un mensaje en el registro del robot. También se muestra en la pantalla
del FlexPendant.
Ejemplo 2
ErrWrite \W, "Search error", "No hit for the first search";
RAISE try_search_again;

Sólo se almacena un mensaje en el registro del robot. Después la ejecución del
programa continúa.
Argumentos
ErrWrite [ \W ] | [\I] Header Reason [ \RL2] [ \RL3] [ \RL4]

[ \W ]
Warning
Tipo de dato: switch
Genera una advertencia que sólo se almacena en el registro de mensajes del robot
(no se muestra directamente en la pantalla del FlexPendant).
[ \I ]
Information
Tipo de dato: switch
Genera un mensaje de información que sólo se almacena en el registro de eventos
(no se muestra directamente en la pantalla del FlexPendant).
Si no se especifica ninguno de los argumentos \W o \I, la instrucción genera un
mensaje de error directamente en el FlexPendant y lo almacena también en el
registro de eventos.
Header
Tipo de dato: string
El título del mensaje de error (máximo 46 caracteres).
Reason
Tipo de dato: string
Motivo del error.

Continúa en la página siguiente
3HAC16581-5 Revisión: L

107
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.45 ErrWrite - Escribe un mensaje de error
Continuación
[ \RL2]
Reason Line 2
Tipo de dato: string
Motivo del error.
[ \RL3]
Reason Line 3
Tipo de dato: string
Motivo del error.
[ \RL4]
Reason Line 4
Tipo de dato: string
Motivo del error.
Ejecución de programas
Un mensaje de error (máximo 5 líneas) se muestra en el FlexPendant y se escribe
en el registro de mensajes del robot.
En el caso del argumento \W o el argumento \I se escribe un aviso o un mensaje
de información en el registro de eventos.
ErrWrite genera el error de programa nº 80001 para un error, nº 80002 para un
aviso (\W) y nº 80003 para un mensaje de información (\I).
Limitaciones
La longitud total de la cadena (título+motivo+\RL2+\RL3+\RL4) está limitada a 195
caracteres.
Sintaxis
ErrWrite
[ '\'W ]
[ Header
[ Reason
[ ’\’RL2
[ ’\’RL3
[ ’\’RL4

| [ '\' I ] ','
':=' ] < expression (IN) of string>','
':=' ] < expression (IN) of string>
':=' < expression (IN) of string> ]
':=' < expression (IN) of string> ]
':=' < expression (IN) of string> ] ';'

Información relacionada
Para obtener más información sobre

Consulte

Datos predefinidos de tipo errstr

errstr - Cadena de error en la página 1201

Visualización de mensajes en el FlexPen- TPWrite - Escribe en el FlexPendant en la págidant
na 607
UIMsgBox - Cuadro de mensaje de usuario de
tipo básico en la página 689
Registro de eventos

Manual del operador - IRC5 con FlexPendant

Escritura de un mensaje de error - ErrLog ErrLog - Escribe un mensaje de error en la página 98

108

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.46 EXIT - Finaliza la ejecución del programa

1.46 EXIT - Finaliza la ejecución del programa
Utilización
EXIT se utiliza para finalizar la ejecución de un programa. Se impide la
reanudación del programa, es decir, éste sólo puede ejecutarse empezando de
nuevo desde la primera instrucción de la rutina main.
La instrucción EXIT debe usarse cuando se producen errores no recuperables o
cuando se debe detener definitivamente la ejecución del programa. Para detener
temporalmente la ejecución del programa, se utiliza la instrucción Stop. Tras la
ejecución de la instrucción EXIT, el puntero de programa se pierde. Para continuar
con la ejecución del programa, es necesario establecer el puntero de programa.
Ejemplos básicos
A continuación aparece un ejemplo básico de la instrucción EXIT.
Ejemplo 1
ErrWrite "Fatal error","Illegal state";
EXIT;

La ejecución del programa se detiene y no puede reanudarse en la posición en la
que se detiene el programa.
Sintaxis
EXIT ';'

Información relacionada
Para obtener más información sobre

Consulte

Detención temporal de la ejecución del
programa

Stop - Detiene la ejecución del programa en la
página 543

3HAC16581-5 Revisión: L

109
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.47 ExitCycle - Interrumpe el ciclo actual y pasa al siguiente

1.47 ExitCycle - Interrumpe el ciclo actual y pasa al siguiente
Utilización
ExitCycle se utiliza para interrumpir el ciclo actual y trasladar el puntero de
programa (PP) a la primera instrucción de la rutina principal.
Si el programa se ejecuta en modo continuo, se empezará a ejecutar el ciclo
siguiente.
Si la ejecución se encuentra en el modo cíclico, la ejecución se detiene en la
primera instrucción de la rutina principal.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción ExitCycle.
Ejemplo 1
VAR num cyclecount:=0;
VAR intnum error_intno;
PROC main()
IF cyclecount = 0 THEN
CONNECT error_intno WITH error_trap;
ISignalDI di_error,1,error_intno;
ENDIF
cyclecount:=cyclecount+1;
! start to do something intelligent
...
ENDPROC
TRAP error_trap
TPWrite "ERROR, I will start on the next item";
ExitCycle;
ENDTRAP

En este programa, se ejecuta el ciclo siguiente si se activa la señal di_error.
Ejecución de programas
La ejecución de ExitCycle en la tarea de programa que controla las unidades
mecánicas da lugar a lo siguiente en la tarea actual:

Se detienen los movimientos en curso del robot.

Se eliminan todas las trayectorias del robot que no se hayan realizado aún
en los distintos niveles de trayectoria (tanto en el nivel normal como en el
nivel StorePath ).

Se interrumpen todas las instrucciones iniciadas pero no terminadas en
todos los niveles de ejecución (tanto en la ejecución normal como en las
rutinas TRAP).

El puntero de programa se traslada a la primera instrucción de la rutina
principal.

La ejecución del programa continúa y pasa a ejecutar el ciclo siguiente.

Continúa en la página siguiente
110

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.47 ExitCycle - Interrumpe el ciclo actual y pasa al siguiente
Continuación
La ejecución de ExitCycle en cualquier otra tarea de programa que no controle
las unidades mecánicas da lugar a lo siguiente en la tarea actual:

Se interrumpen todas las instrucciones iniciadas pero no terminadas en
todos los niveles de ejecución (tanto en la ejecución normal como en las
rutinas TRAP).

El puntero de programa se traslada a la primera instrucción de la rutina
principal.

La ejecución del programa continúa y pasa a ejecutar el ciclo siguiente.

Los demás elementos modales del programa y del sistema no se ven afectados
por la instrucción ExitCycle. Entre ellos se encuentran los siguientes:

El valor actual de las variables o variables persistentes.

Cualquier parámetro de movimiento, como secuencias
StorePath-RestoPath , zonas mundo, etc.

Archivos abiertos, directorios, etc.

Interrupciones definidas, etc.

Cuando se utiliza ExitCycle en llamadas a rutinas y la rutina de entrada se define
como “Mover el puntero de programa a la rutina...” o “Llamar a la rutina...”,
ExitCycle interrumpe el ciclo actual y devuelve el puntero de programa a la
primera instrucción de la rutina de entrada (en lugar de la rutina principal como
se especificaba anteriormente).
Sintaxis
ExitCycle';'

Información relacionada
Para obtener más información sobre

Consulte

Paro después de un error no recuperable EXIT - Finaliza la ejecución del programa en la
página 109
Finalización de la ejecución del programa EXIT - Finaliza la ejecución del programa en la
página 109
Paro para acciones de programa

Stop - Detiene la ejecución del programa en la
página 543

Finalización de la ejecución de una rutina RETURN - Finaliza la ejecución de una rutina en
la página 390

3HAC16581-5 Revisión: L

111
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.48 FOR - Repite un número determinado de veces

1.48 FOR - Repite un número determinado de veces
Utilización
FOR se utiliza cuando es necesario repetir una o varias instrucciones un número
determinado de veces.
Ejemplos básicos
A continuación aparece un ejemplo básico de la instrucción FOR.
Consulte también Más ejemplos en la página 113.
Ejemplo 1
FOR i FROM 1 TO 10 DO
routine1;
ENDFOR

Repite el procedimiento routine110 veces.
Argumentos
FOR Loop counter FROM Start value TO End value [STEP Step value]
DO ... ENDFOR

Loop counter
Identifier
El nombre del dato que contendrá el valor del contador del bucle actual. Este dato
se declara automáticamente.
Si el nombre del contador del bucle es el mismo que cualquier otro dato que exista
dentro del ámbito actual, el dato existente se oculta dentro del bucle FOR y no se
ve afectado de ningún modo.
Start value
Tipo de dato: Num
El valor inicial deseado para el contador del bucle. (normalmente valores enteros)
End value
Tipo de dato: Num
El valor final deseado para el contador del bucle. (normalmente valores enteros)
Step value
Tipo de dato: Num
El valor en el que debe incrementarse (o reducirse) el contador del bucle con cada
bucle. (normalmente valores enteros)
Si no se especifica este valor, el valor de paso es automáticamente 1 (o -1 si el
valor inicial es mayor que el valor final).

Continúa en la página siguiente
112

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.48 FOR - Repite un número determinado de veces
Continuación
Más ejemplos
A continuación aparecen más ejemplos de cómo usar la instrucción FOR.
Ejemplo 1
FOR i FROM 10 TO 2 STEP -2 DO
a{i} := a{i-1};
ENDFOR

Se ajustan hacia arriba los valores de una matriz de forma que a{10}:=a{9},
a{8}:=a{7} etc.
Ejecución de programas
1 Se evalúan las expresiones usadas para los valores inicial, final y de paso.
2 Se asigna al contador del bucle el valor inicial.
3 El valor del contador del bucle se comprueba para comprobar si se encuentra
entre el valor inicial y el final o si es igual al valor inicial o final. Si el valor
de un contador de bucle queda fuera de este rango, el bucle FOR se detiene
y la ejecución del programa continúa en la instrucción que aparece a
continuación de ENDFOR.
4 Se ejecutan las instrucciones incluidas dentro del bucle FOR.
5 Se incrementa (o reduce) el contador del bucle acorde con el valor de paso.
6 El bucle FOR se repite, empezando por el punto 3.
Limitaciones
El contador del bucle (del tipo de dato num) sólo está disponible desde dentro del
bucle FOR y por tanto supone la ocultación de otros datos y rutinas que tengan el
mismo nombre. Sólo pueden leerlo (pero no actualizarlo) las instrucciones del
bucle FOR.
No es posible utilizar valores decimales para los valores de inicio, final o paso en
combinación con condiciones de finalización exactas para el bucle FOR (sin una
definición de si se está utilizando o no la última pasada del bucle).
Comentarios
Si el número de repeticiones de las operaciones depende de que una expresión
determinada dé como resultado el valor TRUE, se deben utilizar instrucciones
WHILE en lugar de FOR.
Sintaxis
(EBNF)
FOR <loop variable> FROM <expression> TO <expression>
[ STEP <expression> ] DO
<instruction list>
ENDFOR
<loop variable> ::= <identifier>

Continúa en la página siguiente
3HAC16581-5 Revisión: L

113
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.48 FOR - Repite un número determinado de veces
Continuación
Información relacionada
Para obtener más información sobre

Consulte

Expresiones

Technical reference manual - RAPID overview

Repetición siempre y cuando se cumpla WHILE - Repite una o varias operaciones siemuna condición
pre y cuando... en la página 753
Identificadores

Technical reference manual - RAPID overview

114

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.49 GetDataVal - Obtiene el valor de un objeto de datos

1.49 GetDataVal - Obtiene el valor de un objeto de datos
Utilización
GetDataVal (Get Data Value) permite obtener un valor de un objeto de datos que
se especifica mediante una variable de cadena de caracteres.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción GetDataVal.
Ejemplo 1
VAR num value;
...
GetDataVal "reg"+ValToStr(ReadNum(mycom)),value;

Esta instrucción obtiene el valor de un registro cuyo número se recibe del canal
serie mycom. El valor se almacena en la variable value.
Ejemplo 2
VAR datapos block;
VAR string name;
VAR num valuevar;
...
SetDataSearch "num" \Object:="my.*" \InMod:="mymod";
WHILE GetNextSym(name,block) DO
GetDataVal name\Block:=block,valuevar;
TPWrite name+" "\Num:=valuevar;
ENDWHILE

Esta sesión imprime en el FlexPendant todas las variables de tipo num cuyo nombre
comience con my en el módulo mymod, junto con sus valores respectivos.
Ejemplo 3
VAR num NumArrConst_copy{2};
...
GetDataVal "NumArrConst", NumArrConst_copy;
TPWrite "Pos1 = " \Num:=NumArrConst_copy{1};
TPWrite "Pos2 = " \Num:=NumArrConst_copy{2};

Esta sesión imprimirá las variables num de la matriz NumArrConst.
Argumentos
GetDataVal Object [\Block]|[\TaskRef]|[\TaskName]Value

Object
Tipo de dato: string
El nombre del objeto de datos.
[ \Block ]
Tipo de dato: datapos
El bloque que contiene el objeto de datos. Sólo es posible realizar la obtención
con la función GetNextSym.

Continúa en la página siguiente
3HAC16581-5 Revisión: L

115
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.49 GetDataVal - Obtiene el valor de un objeto de datos
Continuación
Si se omite el argumento, se captura el valor del objeto de datos visible en el
ámbito de ejecución actual del programa.
[\TaskRef]
Task Reference
Tipo de dato: taskid
La identidad de tarea de programa en la que se buscará el objeto de datos
especificado. Con ayuda de este argumento, puede buscar declaraciones PERS o
TASKPERS en otras tareas. Cualquier otra declaración dará lugar a un error.
Existen variables predefinidas con el tipo de dato taskid para todas las tareas
de programa del sistema. La identificación de la variable será “nombre_tarea”+“ID”.
Por ejemplo, para la tarea T_ROB1 la identificación de la tarea es T_ROB1Id.
[\TaskName]
Tipo de dato: string
El nombre de la tarea de programa en la que se buscará el objeto de datos
especificado. Con ayuda de este argumento, puede buscar declaraciones PERS o
TASKPERS en otras tareas. Cualquier otra declaración dará lugar a un error.
Value
Tipo de dato: anytype
La variable en la que se almacena el valor obtenido. Su tipo de dato debe ser el
mismo que el del objeto de datos a buscar. El valor obtenido puede capturarse de
una constante, una variable o una variable persistente, pero debe almacenarse
en una variable.
Gestión de errores
La variable de sistema ERRNO cambia a ERR_SYM_ACCESS si:

El objeto de datos no existe.

Si el objeto de datos es un dato o un parámetro de rutina y no está situado
en la rutina activa actualmente.

Buscar en otras tareas declaraciones distintas de PERS o TASKPERS

Con ayuda de los argumentos TaskRef o TaskName, puede buscar declaraciones
PERS o TASKPERS en otras tareas. Cualquier otra declaración da lugar a un error
y la variable de sistema ERRNO cambia a ERR_SYM_ACCESS. La búsqueda de una
PERS declarada como LOCAL en otras tareas también da lugar a un error y al cambio
de la variable ERRNO al valor ERR_SYM_ACCESS.
La variable de sistema ERRNO cambia a ERR_INVDIM si el objeto de datos y la
variable utilizados en el argumento Value tienen dimensiones diferentes.
El error puede ser gestionado en el gestor de errores de la rutina.

Continúa en la página siguiente
116

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.49 GetDataVal - Obtiene el valor de un objeto de datos
Continuación
Limitaciones
En el caso de los tipos de datos de semivalor, no es posible buscar por el tipo de
dato asociado al valor. Por ejemplo, si se busca dionum, no se obtendrá ninguna
coincidencia de búsqueda con las señales signaldi. Si se busca num, no se
obtendrá ninguna coincidencia de búsqueda con las señales signalgi o
signalai.
No es posible obtener el valor de una variable declarada como LOCAL en un módulo
de RAPID incorporado.
Sintaxis
GetDataVal
[ Object ’:=’ ] < expression (IN) of string >
[’\’Block’ :=’<variable (VAR) of datapos>]
|[ ’\’TaskRef’ :=’ <variable (VAR) of taskid>]
|[ ’\’TaskName’ :=’ <expression (IN) of string>] ’,’]
[ Value ’:=’ ] <variable (VAR) of anytype>]’;’

Información relacionada
Para obtener más información so- Consulte
bre
Definición de un conjunto de símbo- SetDataSearch - Definir el conjunto de símbolos de
los en una sesión de búsqueda
una secuencia de búsqueda en la página 462
Obtención del siguiente símbolo
coincidente

GetNextSym - Obtiene el siguiente símbolo coincidente en la página 917

Asignación del valor de un objeto
de datos

SetDataVal - Establece el valor de un objeto de datos
en la página 466

Asignación del valor de varios obje- SetAllDataVal - Establece un valor en todos los objetos
tos de datos
de datos de un conjunto definido en la página 458
El tipo de datos relacionado datapos datapos - Inclusión de un bloque para un objeto de
datos en la página 1187

3HAC16581-5 Revisión: L

117
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.50 GetSysData - Obtiene datos del sistema

1.50 GetSysData - Obtiene datos del sistema
Utilización
GetSysData captura el valor y, opcionalmente, el nombre de símbolo de un dato
de sistema actual del tipo de dato especificado.
Esta instrucción permite capturar datos sobre la herramienta, el objeto de trabajo
o la carga útil del robot, además de su nombre, en la tarea de movimiento actual
o la conectada, o bien en cualquier tarea de movimiento que tenga un nombre.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción GetSysData.
Ejemplo 1
PERS tooldata curtoolvalue := [TRUE, [[0, 0, 0], [1, 0, 0, 0]],
[2, [0, 0, 2], [1, 0, 0, 0], 0, 0, 0]];
VAR string curtoolname;
GetSysData curtoolvalue;

Copia el valor actual del dato de la herramienta a la variable persistente
curtoolvalue.
Ejemplo 2
GetSysData curtoolvalue \ObjectName := curtoolname;

También copia el nombre de la herramienta activa a la curtoolname.
Argumentos
GetSysData [\TaskRef]|[\TaskName] DestObject[\ObjectName ]

[\TaskRef]
Task Reference
Tipo de dato: taskid
La identidad de tarea de programa desde la cual deben leerse los datos del sistema
activo actual.
Existen variables predefinidas con el tipo de dato taskid para todas las tareas
de programa del sistema. La identificación de la variable será "nombre_tarea"+"ID".
Por ejemplo, para la tarea T_ROB1 la identificación de la tarea es T_ROB1Id.
[\TaskName]
Tipo de dato: string
El nombre de tarea de programa desde la cual deben leerse los datos del sistema
activo actual.
Si no se especifica ninguno de los argumentos, ni \TaskRef ni \TaskName, se
usa la tarea actual.
DestObject
Tipo de dato: anytype
La variable persistente para el almacenamiento del valor actual del dato de sistema.

Continúa en la página siguiente
118

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.50 GetSysData - Obtiene datos del sistema
Continuación
El tipo de dato de este argumento también especifica el tipo de dato de sistema
(herramienta, objeto de trabajo o carga útil) que se desea capturar.
Tipo de dato

Tipo de dato de sistema

tooldata

Herramienta

wobjdata

Objeto de trabajo

loaddata

Carga útil

No es posible usar una matriz ni un componente de registro.
[\ObjectName]
Tipo de dato:string
El argumento opcional (variable o variable persistente) para capturar también el
nombre del dato de sistema activo.
Ejecución de programas
Cuando se ejecuta la instrucción GetSysData, el valor actual del dato se almacena
en la variable persistente especificada en el argumento DestObject.
Si se utiliza el argumento \ObjectName, el nombre del dato actual se almacena
en la variable o la variable persistente especificada en el argumento ObjectName.
El dato de sistema actual para la herramienta o el objeto de trabajo se activa
mediante la ejecución de cualquier instrucción de movimiento. La carga útil se
activa mediante la ejecución de la instrucción GripLoad.
Gestión de errores
Si el argumento \TaskRef o \TaskName especifica alguna tarea sin movimiento,
la variable de sistema ERRNO cambia a ERR_NOT_MOVETASK. El error puede ser
gestionado en el gestor de errores.
Sin embargo, no se genera ningún error si los argumentos \TaskRef o \TaskName
especifican la tarea sin movimiento que ejecuta esta función GetSysData (hace
referencia a la propia tarea sin movimiento). En este caso, los datos del sistema
actual se capturan de la tarea de movimiento conectada.
Sintaxis
GetSysData
[’\’ TaskRef ’:=’ <variable (VAR) of taskid>]
|[’\’ TaskName’ :=’ <expression (IN) of string>]
[ DestObject’ :=’] < persistent(PERS) of anytype>
[’\’ObjectName’ :=’ < variable or persistent (INOUT) of string>
] ’;’

Información relacionada
Para obtener más información sobre

Consulte

Definición de herramientas

tooldata - Datos de herramientas en la página 1301

Definición de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la página 1323

Definición de una carga útil

loaddata - Datos de carga en la página 1219

Continúa en la página siguiente
3HAC16581-5 Revisión: L

119
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.50 GetSysData - Obtiene datos del sistema
Continuación
Para obtener más información sobre

Consulte

Establecimiento de datos del sistema

SetSysData - Establece datos del sistema en la
página 474

120

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.51 GetTrapData - Obtiene datos de interrupción para la rutina TRAP actual

1.51 GetTrapData - Obtiene datos de interrupción para la rutina TRAP actual
Utilización
GetTrapData se utiliza en rutinas TRAP para obtener todos los datos sobre la
interrupción que causó la ejecución de la rutina TRAP.
Debe utilizarse en las rutinas TRAP generadas por la instrucción IError, antes
del uso de la instrucción ReadErrData.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción GetTrapData.
Consulte también Más ejemplos en la página 121.
Ejemplo 1
VAR trapdata err_data;
GetTrapData err_data;

La información de las interrupciones se almacenan en la variable sin valor
err_data.
Argumentos
GetTrapData TrapEvent

TrapEvent
Tipo de dato: trapdata
La variable en la que se desea almacenar la información de qué hecho provocó la
ejecución de la rutina TRAP.
Limitación
Esta instrucción sólo puede usarse desde dentro de una rutina TRAP.
Más ejemplos
A continuación aparecen más ejemplos de la instrucción GetTrapData.
Ejemplo 1
VAR errdomain err_domain;
VAR num err_number;
VAR errtype err_type;
VAR trapdata err_data;
...
TRAP trap_err
GetTrapData err_data;
ReadErrData err_data, err_domain, err_number, err_type;
ENDTRAP

Cuando se detecta un error con la rutina TRAP trap_err, el dominio, el número
y el tipo de error se almacenan en las variables adecuadas sin valor, del tipo
trapdata.

Continúa en la página siguiente
3HAC16581-5 Revisión: L

121
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.51 GetTrapData - Obtiene datos de interrupción para la rutina TRAP actual
Continuación
Sintaxis
GetTrapData
[TrapEvent ’:=’] <variable (VAR) of trapdata>’;’

Información relacionada
Para obtener más información sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview,
sección Resumen sobre RAPID - Interrupciones

Más información sobre la gestión de in- Technical reference manual - RAPID overview,
terrupciones
sección Características básicas - Interrupciones
Datos de interrupción para la rutina
TRAP actual

trapdata - Datos de interrupción para la rutina
TRAP actual en la página 1309

Solicitud de una interrupción para erro- IError - Solicita una interrupción para errores en
res
la página 132
Obtención de información sobre un error ReadErrData - Obtiene información sobre un error
en la página 370

122

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.52 GOTO - Salta a otra instrucción

1.52 GOTO - Salta a otra instrucción
Utilización
GOTOse utiliza para transferir la ejecución del programa a otra línea (una etiqueta)
creada dentro de la misma rutina.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción GOTO.
Ejemplo 1
GOTO next;
...
next:

La ejecución del programa continúa en la instrucción que sigue a la etiqueta "next".
Ejemplo 2
reg1 := 1;
next:
...
reg1 := reg1 + 1;
IF reg1<=5 GOTO next;

La ejecución se transfiere cuatro veces a next (for reg1= 2, 3, 4, 5).
Ejemplo 3
IF reg1>100 THEN
GOTO highvalue
ELSE
GOTO lowvalue
ENDIF
lowvalue:
...
GOTO ready;
highvalue:
...
ready:

Si reg1 es mayor que 100, la ejecución se transfiere a la etiqueta highvalue.
De lo contrario, la ejecución se transfiere a la etiqueta lowvalue.
Argumentos
GOTO Label

Label
Identifier
La etiqueta que indica dónde debe continuar la ejecución del programa.
Limitaciones
Sólo es posible transferir la ejecución del programa a una etiqueta que se encuentra
dentro de la misma rutina.

Continúa en la página siguiente
3HAC16581-5 Revisión: L

123
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.52 GOTO - Salta a otra instrucción
Continuación
Sólo es posible transferir la ejecución del programa a una etiqueta que se encuentre
dentro de una instrucción IF o TEST si la instrucción GOTO se encuentra también
dentro de la misma bifurcación de la instrucción.
Sólo es posible transferir la ejecución del programa a una etiqueta que se encuentre
dentro de una instrucción FOR o WHILE si la instrucción GOTO se encuentra también
dentro de la instrucción.
Sintaxis
(EBNF)
GOTO <identifier>’;’

Información relacionada
Para obtener más información sobre Consulte
Adhesivo

Etiqueta - Nombre de línea en la página 216

Otras instrucciones que modifican el Technical reference manual - RAPID overview, secflujo del programa
ción Resumen sobre RAPID - Control del flujo del
programa

124

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.53 GripLoad - Define la carga útil de un robot

1.53 GripLoad - Define la carga útil de un robot
Utilización
GripLoad se utiliza para definir la carga útil que se sostiene con la pinza del robot.
Descripción
GripLoad especifica qué carga lleva el robot. La carga especificada se utiliza para
configurar un modelo dinámico del robot que permita controlar de la mejor manera
posible sus movimientos.
La carga útil se conecta y desconecta mediante la instrucción GripLoad, lo que
suma o resta el peso de la carga útil al peso de la pinza.
¡AVISO!
Es importante definir siempre la carga real de la herramienta y, si se usa, la carga
útil del robot (por ejemplo una pieza sujeta por una pinza). Una definición
incorrecta de los datos de carga puede dar lugar a la sobrecarga de la estructura
mecánica del robot.
Cuando se especifican datos de carga incorrectos, este hecho suele tener las
consecuencias siguientes:

El robot no funcionará a su capacidad máxima

Peor exactitud de la trayectoria, con riesgo de sobrepasar posiciones

Riesgo de sobrecarga de la estructura mecánica

Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción GripLoad.
Ejemplo 1
Set gripper;
WaitTime 0.3;
GripLoad piece1;

Conexión de la carga útil, piece1, especificada en el momento en que el robot
sujeta la carga.
Ejemplo 2
Reset gripper;
WaitTime 0.3;
GripLoad load0;

Desconexión de la carga útil, especificada en el momento en que el robot suelta
una carga útil.
Argumentos
GripLoad Load

Load
Tipo de dato: loaddata
El dato de carga que describe la carga útil actual.
Continúa en la página siguiente
3HAC16581-5 Revisión: L

125
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.53 GripLoad - Define la carga útil de un robot
Continuación
Ejecución de programas
La carga especificada afecta al rendimiento del robot.
La carga predeterminada (load0), de 0 kg, se establece automáticamente en los
casos siguientes:

En los arranques en frío.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecución del programa desde el principio.

Se actualiza la carga útil para la unidad mecánica controlada desde la tarea de
programa actual. Si GripLoad se utiliza desde una tarea sin movimiento, la carga
útil se actualiza para la unidad mecánica controlada por la tarea de movimiento
conectada.
Sintaxis
GripLoad
[ Load ':=' ] < persistent (PERS) of loaddata > ';'

Información relacionada
Para obtener más información sobre

Consulte

Identificación de la carga de la herramienta, Manual del operador - IRC5 con FlexPendant,
carga útil o carga de brazo
sección Programación y testing - Rutinas de
servicio
Definición de una carga útil para unidades MechUnitLoad - Define una carga útil para
mecánicas
una unidad mecánica en la página 232
Definición de datos de carga

loaddata - Datos de carga en la página 1219

126

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.54 HollowWristReset - Restablece la muñeca hueca en los modelos IRB5402 e IRB5403

1.54 HollowWristReset - Restablece la muñeca hueca en los modelos IRB5402 e
IRB5403
Utilización
HollowWristReset (Reset hollow wris) restablece la posición de las articulaciones
de muñeca de los manipuladores de muñeca hueca, como los modelos IRB5402
e IRB5403.
Esta instrucción hace posible evitar el rebobinado de los ejes 4 y 5 de la muñeca
después de que hayan descrito una o varias revoluciones en un sentido. Después
de ejecutar una instrucción HollowWristReset, los ejes de la muñeca pueden
continuar el giro en el mismo sentido.
Descripción
HollowWristReset facilita la creación de programas de aplicación. No tiene que
asegurarse de que la posición de la muñeca esté dentro de ±2 revoluciones en el
momento de la programación. Además, puede ahorrar tiempo de ciclo porque el
robot no tiene que perder tiempo rebobinando la muñeca. Sin embargo, existe una
limitación de ±144 revoluciones para el avance de los ejes 4 y 5 antes de que la
posición de la muñeca se restablezca con HollowWristReset. El programador
del robot debe ser consciente de esta limitación y tenerla en cuenta al planificar
los programas del robot. Para garantizar que no se supere el límite de 144
revoluciones después de ejecutar varias veces un programa de giro de muñeca,
debe esperar siempre a que el robot se haya detenido completamente y restablecer
la posición absoluta en cada programa (o cada ciclo/rutina/módulo, etc., según
sus necesidades). Recuerde que todos los ejes deben permanecer parados durante
la ejecución de la instrucción HollowWristReset. Siempre que se tengan en
cuenta estas limitaciones, los ejes 4 y 5 pueden girar indefinidamente y de forma
independiente del eje 6 durante la ejecución del programa.
Utilice HollowWristReset en lugar de IndReset para restablecer la muñeca
hueca dado que esta instrucción conserva los límites del eje 6, impidiendo así que
se produzca una torsión excesiva de los tubos o cables de las aplicaciones de
pintura.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción
HollowWristReset.
Ejemplo 1
MoveL p10,v800,fine,paintgun1\WObj:=workobject1;
HollowWristReset;

Todos los ejes activos se detienen con un punto de parada y la muñeca se
restablece.
Limitaciones
Todos los ejes activos deben permanecer parados mientras se ejecuta la instrucción
HollowWristReset.

Continúa en la página siguiente
3HAC16581-5 Revisión: L

127
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.54 HollowWristReset - Restablece la muñeca hueca en los modelos IRB5402 e IRB5403
Continuación
Los ejes de la muñeca deben ser restablecidos antes de que cualquiera de ellos
alcance el límite de ±144 revoluciones (es decir, 51.840 grados/ 904 rad).
Siempre que tiene lugar un paro de programa, un paro de emergencia o un paro
de caída de alimentación, el controlador conserva el contexto de la trayectoria
para poder volver a ésta y permitir que el robot prosiga con la ejecución del
programa en el punto en el que se interrumpió la trayectoria. En el modo manual,
si se ha sacado al manipulador de la trayectoria entre un paro y el reinicio, se
informa de este hecho al operador con el mensaje siguiente del FlexPendant:
“¡Fuera de trayectoria! El robot ha sido movido tras el paro de programa. ¿Desea
que el robot vuelva a la trayectoria en el momento del inicio? Sí/No/Cancelar”.
De esta forma, podrá volver a la trayectoria antes del reinicio. En el modo
automático, el robot vuelve automáticamente a la trayectoria.
HollowWristReset elimina el contexto de la trayectoria. Esto significa que no
es posible volver a la trayectoria en caso de un reinicio de programa, si en el
intervalo se ha ejecutado la instrucción HollowWristReset. Si se ejecuta esta
instrucción manualmente (“Depurar + Llamar rut. serv.” en el Editor de programas),
sólo debe ejecutarse en situaciones en las que no sea necesario volver a la
trayectoria. Es decir, debe usarse una vez que un programa ha terminado
completamente o que una instrucción haya finalizado completamente la ejecución
paso a paso sin que el manipulador haya sido sacado de su trayectoria con
movimientos manuales, etc.
Sintaxis
HollowWristReset ´;’

Información relacionada
Para obtener más información Consulte
sobre
Parámetros del sistema relaciona- Manual de referencia técnica - Parámetros del sistema,
dos
sección Motion - Arm - Independent Joint
Regreso a la trayectoria

Technical reference manual - RAPID overview, sección
Principios de movimiento y E/S - Posicionamiento durante la ejecución del programa

128

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.55 IDelete - Cancela una interrupción

1.55 IDelete - Cancela una interrupción
Utilización
IDelete (Interrupt Delete) se utiliza para cancelar (eliminar) una interrupción.
Si sólo se desea desactivar temporalmente la interrupción, deben utilizarse las
instrucciones ISleep o IDisable.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción IDelete.
Ejemplo 1
IDelete feeder_low;

Se cancela la interrupción feeder_low.
Argumentos
IDelete Interrupt

Interrupt
Tipo de dato: intnum
La identidad de la interrupción.
Ejecución de programas
La definición de la interrupción se elimina completamente. Para definirla de nuevo,
es necesario reconectarla primero a la rutina TRAP.
Se recomienda colocar un punto de paro antes de IDelete. De lo contrario, la
interrupción se desactivará antes de alcanzar el punto final de la trayectoria del
movimiento.
No es imprescindible eliminar las interrupciones, ya que esto se produce
automáticamente en los casos siguientes:

Cuando se carga un nuevo programa

Cuando se reinicia el programa desde el principio

Cuando se traslada el puntero de programa al principio de una rutina

Sintaxis
IDelete [ Interrupt ´:=’ ] < variable (VAR) of intnum > ´;’

Información relacionada
Para obtener más información sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview,
sección Resumen sobre RAPID - Interrupciones

Más información sobre la gestión de inte- Technical reference manual - RAPID overview,
rrupciones
sección Características básicas - Interrupciones
Desactivación temporal de una interrup- ISleep - Desactiva una interrupción en la págición
na 206
Desactivación temporal de todas las inte- IDisable - Desactiva todas las interrupciones en
rrupciones
la página 130

3HAC16581-5 Revisión: L

129
© Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.56 IDisable - Desactiva todas las interrupciones

1.56 IDisable - Desactiva todas las interrupciones
Utilización
IDisable(Interrupt Disable) se utiliza para desactivar temporalmente todas las
interrupciones. Por ejemplo, puede usarse en una parte especialmente delicada
del programa en la que no debe permitirse que se produzcan interrupciones, si
éstas impiden la ejecución normal del programa.
Ejemplos básicos
A continuación aparecen algunos ejemplos básicos de la instrucción IDisable.
Ejemplo 1
IDisable;
FOR i FROM 1 TO 100 DO
character[i]:=ReadBin(sensor);
ENDFOR
IEnable;

No se permite ninguna interrupción mientras se está leyendo el canal serie.
Ejecución de programas
Las interrupciones que se produzcan durante el periodo en el que esté vigente la
instrucción IDisable se almacenan en una cola. Cuando vuelven a permitirse
las interrupciones, se empiezan a generar inmediatamente las interrupciones de
la cola, que se ejecutan en un orden FIFO.
IEnable está activo de forma predeterminado. IEnable se define automáticamente
en los casos siguientes:

En los arranques en frío

Cuando se inicia la ejecución del programa desde el principio de main

Después de ejecutar un ciclo (más allá de main) o tras ejecutar ExitCycle

Sintaxis
IDisable´;’

Información relacionada
Para obtener más información sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview,
sección Resumen sobre RAPID - Interrupciones

Más información sobre la gestión de inte- Technical reference manual - RAPID overview,
rrupciones
sección Características básicas - Interrupciones
Activación de interrupciones

IEnable - Habilita el uso de interrupciones en la
página 131

130

3HAC16581-5 Revisión: L
© Copyright 2004-2011 ABB. Reservados todos los derechos.

. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IEnable. Cuando se completa la lectura.Interrupciones Desactivación de interrupciones IDisable .’ Información relacionada Para obtener más información sobre Consulte Resumen de interrupciones Technical reference manual . se empiezan a generar inmediatamente las interrupciones. la ejecución del programa continúa del modo normal y las interrupciones que se produzcan a continuación se procesan tan pronto como se producen. que se ejecutan en un orden FIFO.57 IEnable .Technical reference manual . ENDFOR IEnable. terrupciones sección Características básicas . las interrupciones vuelven a permitirse. FOR i FROM 1 TO 100 DO character[i]:=ReadBin(sensor). Las interrupciones desactivadas por la instrucción ISleep no se ven afectadas por la instrucción IEnable. De forma predeterminada. se permite el uso de interrupciones siempre que se empieza a ejecutar un programa. Cuando vuelven a permitirse las interrupciones (IEnable). No se permite ninguna interrupción mientras se está leyendo el canal serie.RAPID overview. Sintaxis IEnable´.Desactiva todas las interrupciones en la página 130 3HAC16581-5 Revisión: L 131 © Copyright 2004-2011 ABB. Ejemplo 1 IDisable. sección Resumen sobre RAPID . A partir de ese momento.57 IEnable .Habilita el uso de interrupciones Utilización IEnable(Interrupt Enable) se utiliza para permitir el uso de interrupciones durante la ejecución del programa.Interrupciones Más información sobre la gestión de in.Habilita el uso de interrupciones 1. Reservados todos los derechos.RAPID overview. Ejecución de programas Las interrupciones que se produzcan durante el periodo en el que esté vigente la instrucción IDisable se almacenan en una cola.1 Instrucciones 1.

que se desea monitorizar. el número de un error concreto que se desea monitorizar. PROC main() CONNECT err_int WITH err_trap. IError permite registrar los errores. La interrupción debe estar ya conectada a una rutina TRAP mediante la instrucción CONNECT. Ejemplo 1 VAR intnum err_int. Continúa en la página siguiente 132 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. . Por ejemplo. Consulte también Más ejemplos en la página 133. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IError.. ErrorType Tipo de dato: errtype El tipo de evento. Consulte el tipo de dato predefinido errdomain. [ \ErrorId ] Tipo de dato: num Opcionalmente. . err_int. utilice COMMON_ERR. Para especificar cualquier tipo. el error 10008 Program restarted. Interrupt Tipo de dato: intnum La identidad de la interrupción. Para especificar cualquier dominio.58 IError . Consulte el tipo de dato predefinido errtype. una advertencia o un cambio de estado. debe especificarse como 0008 o simplemente 8. Reservados todos los derechos..Solicita una interrupción para errores 1. Argumentos IError ErrorDomain [\ErrorId] ErrorType Interrupt ErrorDomain Tipo de dato: errdomain El dominio de error que debe monitorizarse. El número de error debe especificarse sin el primer dígito (el que corresponde al dominio del error) del número de error completo. advertencias o cambios de estado.Solicita una interrupción para errores Utilización IError (Interrupt Errors) se utiliza para solicitar y activar una interrupción cuando se produce un error.1 Instrucciones 1. Solicita una interrupción de RAPID y la ejecución de la rutina TRAPerr_trap cada vez que el sistema genera un error. IError COMMON_ERR. TYPE_ALL. por ejemplo un error. utilice TYPE_ALL.58 IError . una advertencia o un cambio de estado.

VAR intnum err_interrupt. la tarea debe ser de tipo estático o semiestático.. Reservados todos los derechos.1 Instrucciones 1. Continúa en la página siguiente 3HAC16581-5 Revisión: L 133 © Copyright 2004-2011 ABB. no las advertencias ni los cambios de estado). el evento es descartado al pararse el programa. err_domain. TYPE_ERR. Para capturar todos los eventos. err_number.58 IError . VAR num err_number. ! Set domain no 1 . . . VAR trapdata err_data.Solicita una interrupción para errores Continuación Ejecución de programas La llamada a la rutina TRAP correspondiente se realiza automáticamente cuando se produce un error. IError COMMON_ERR.. 11 SetGO go_err1. de forma que no todos los eventos pueden ser capturados en una tarea NORMAL.. ENDTRAP Cuando se produce un error (sólo en el caso de los errores.. en el dominio especificado. ENDPROC TRAP trap_err GetTrapData err_data. Una vez ejecutada la rutina. del tipo especificado y opcionalmente con el número de error especificado. En una tarea de tipo NORMAL. err_interrupt. err_domain. .. err_type..9999 SetGO go_err2. Más ejemplos A continuación aparecen más ejemplos de la instrucción IError. VAR errtype err_type. IDelete err_interrupt. err_number.. PROC main() CONNECT err_interrupt WITH trap_err. el número de error se obtiene en la rutina TRAP y su valor se utiliza para activar dos grupos de señales digitales de salida. Limitación No es posible solicitar interrupciones para los errores internos. la ejecución del programa continúa a partir del punto en el que se produjo la interrupción. VAR errdomain err_domain.. ReadErrData err_data. ! Set error no 1 .

IError COMMON_ERR.’ Información relacionada Para obtener más información sobre Consulte Resumen de interrupciones Technical reference manual .Obtiene información sobre un error en la página 370 134 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. rrupciones sección Características básicas . Sintaxis IError [ErrorDomain ’:=’] <expression (IN) of errdomain> [’\’ErrorId’:=’ <expression (IN) of num>\\ ’. TYPE_ERR.’ [ErrorType’ :=’] <expression (IN) of errtype> ´.Interrupciones Dominios de error. . con una de las alternativas siguientes. WHILE TRUE DO : : ENDWHILE ENDPROC Las interrupciones están activadas cuando se empieza a ejecutar el programa.1 Instrucciones 1. las interrupciones deben tratarse de la forma mostrada. err_interupt. Reservados todos los derechos. es importante recordar que la interrupción permanece inactiva durante un periodo breve.Solicita una interrupción para errores Continuación No es posible utilizar más de una vez la identidad de la interrupción sin eliminarla previamente. En este caso.’ [Interrupt’ :=’] <variable (VAR) of intnum>’. ENDPROC La interrupción se elimina al final del programa y se activa de nuevo.Dominio de error en la página 1192 Tipos de errores.Technical reference manual . : : IDelete err_interrupt.58 IError .Tipo de error en la página 1202 Obtención de datos de interrupción para la rutina TRAP actual GetTrapData .Interrupciones Más información sobre la gestión de inte. las instrucciones se mantienen inicialmente fuera del flujo principal del programa.Obtiene datos de interrupción para la rutina TRAP actual en la página 121 Obtención de información sobre un error ReadErrData . PROC main ( ) CONNECT err_interrupt WITH err_trap. PROC main ( ) CONNECT err_interrupt WITH err_trap. En este caso. err_interupt. constantes predefinidas errtype . VAR intnum err_interrupt. Por tanto. sección Resumen sobre RAPID . VAR intnum err_interrupt. IError COMMON_ERR. constantes predefinidas errdomain .RAPID overview.RAPID overview. TYPE_ERR.

. ELSE Reset do1. ENDIF Las señales do1 y do2 se activan o desactivan en función de si reg1 es mayor que 5 .Si se cumple una condición.. Ejemplo 1 IF reg1 > 5 THEN Set do1.. Reservados todos los derechos. ENDIF Las señales do1 and do2 sólo se activan si reg1 es mayor que 5.1 Instrucciones 1. de lo contrario. Utilización IFse utiliza cuando es necesario ejecutar instrucciones diferentes en función de si se cumple una condición. .59 IF . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IF.. Continúa en la página siguiente 3HAC16581-5 Revisión: L 135 © Copyright 2004-2011 ABB.. Reset do2.. Consulte también Más ejemplos en la página 136..} [ELSE . 1...59 IF . Set do2. . {ELSEIF Condition THEN ....] ENDIF Condition Tipo de dato: bool La condición que debe cumplirse para que se ejecuten las instrucciones que se encuentran entre THEN y ELSE/ELSEIF..Si se cumple una condición. . Argumentos IF Condition THEN .. de lo contrario... . Set do2. . Ejemplo 2 IF reg1 > 5 THEN Set do1.

ELSE counter := counter + 1. sólo se ejecutan las instrucciones asociadas con la primera de las condiciones. Ejemplo 1 IF counter > 100 THEN counter := 100. si el valor de counter se encuentra fuera de los límites 0-100. La ejecución del programa continúa con las instrucciones asociadas con la condición.. Sin embargo.1 Instrucciones 1.Expresiones 136 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.59 IF .Si se cumple una condición. Si no se cumple ninguna de las condiciones. Sintaxis (EBNF) IF <conditional expression> THEN <instruction list> {ELSEIF <conditional expression> THEN <instruction list> | <EIT>} [ELSE <instruction list>] ENDIF Información relacionada Para obtener más información sobre Consulte Condiciones (expresiones lógicas) Technical reference manual . de lo contrario. . sección Características básicas ... Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción IF. Ejecución de programas Las condiciones se comprueban una tras otra hasta que una de ellas se cumple. . ELSEIF counter < 0 THEN counter := 0..RAPID overview. la ejecución del programa continúa con las instrucciones que aparecen a continuación de ELSE. se asigna a counter el valor de límite correspondiente.. Reservados todos los derechos. ENDIF Se incrementa el valor de Counter en 1. Si se cumple más de una condición. .

60 Incr . WHILE stop_production=0 DO produce_part.60 Incr . Incr no_of_parts. Ejemplo 1 VAR num no_of_parts:=0. ENDWHILE Con cada ciclo.Aumenta en 1 un valor 1. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción Incr. . La producción sigue en marcha siempre y cuando no se active la señal de entrada stop_production. ENDWHILE Continúa en la página siguiente 3HAC16581-5 Revisión: L 137 © Copyright 2004-2011 ABB... Dname Tipo de dato: dnum El nombre de la variable o de la variable persistente que se desea cambiar. reg1:=reg1+1.Aumenta en 1 un valor Utilización Incr se utiliza para sumar 1 a una variable o una variable persistente de tipo numérico. Consulte también Más ejemplos en la página 137. Se suma 1 a reg1. TPWrite "No of produced parts= "\Dnum:=no_of_parts. Ejemplo 1 Incr reg1. es decir. WHILE stop_production=0 DO produce_part. Ejemplo 2 VAR dnum no_of_parts:=0... Reservados todos los derechos. Argumentos Incr Name | Dname Name Tipo de dato: num El nombre de la variable o de la variable persistente que se desea cambiar. . . TPWrite "No of produced parts= "\Num:=no_of_parts. se actualiza en el FlexPendant el número de piezas.1 Instrucciones 1. Más ejemplos A continuación aparecen más ejemplos de la instrucción Incr. Incr no_of_parts.

60 Incr . .’ Información relacionada Para obtener más información sobre Consulte Decremento de una variable en 1 Decr .Suma un valor numérico en la página 21 Cambio de un dato mediante una ex.Reduce un número en 1 en la página 85 Suma de cualquier valor a una variable Add .":=" .Asigna un valor en la página 26 presión arbitraria. La producción sigue en marcha siempre y cuando no se active la señal de entrada stop_production. Sintaxis Incr [ Name ’:=’ ] < var or pers (INOUT) of num > | [ Dname’ :=’ ] < var or pers (INOUT) of dnum >’ .Aumenta en 1 un valor Continuación Con cada ciclo. se actualiza en el FlexPendant el número de piezas.1 Instrucciones 1. Reservados todos los derechos. por ejemplo una multiplicación 138 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.

Dado que la ejecución del programa prosigue inmediatamente. Ejemplo 1 IndAMove Station_A. Continúa en la página siguiente 3HAC16581-5 Revisión: L 139 © Copyright 2004-2011 ABB. se debe utilizar en su lugar la instrucción IndRMove.Movimiento independiente de posición absoluta Utilización IndAMove(Independent Absolute Movement) se utiliza para cambiar un eje al modo independiente y mover el eje a una posición determinada. El valor se utiliza como un valor de posición absoluta en grados (mm en el caso de los ejes lineales). El eje 2 de Station_A se mueve hasta la posición p4 a una velocidad de 20 grados/s.2\ToAbsPos:=p4. Argumentos IndAMove MecUnit Axis [\ToAbsPos] | [\ToAbsNum] Speed [\Ramp] MecUnit Mechanical Unit Tipo de dato: mecunit El nombre de la unidad mecánica.61 IndAMove . Si el eje debe moverse dentro de una revolución. Los ejes independientes son ejes que se mueven independientemente de los demás ejes del sistema de robot. se debe utilizar la instrucción IndDMove. si se cuenta con un sistema MultiMove. se debe utilizar en su lugar el argumento \ToAbsNum. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. La posición del eje se verá afectada si el eje se desplaza utilizando la instrucción EOffsSet o EOffsOn. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IndAMove. . En el caso de los ejes del robot.20. en las tareas de movimiento.1 Instrucciones 1. Axis Tipo de dato: num El número del eje actual de la unidad mecánica (del 1 al 6) [\ToAbsPos] To Absolute Position Tipo de dato: robtarget La posición del eje se especifica como un robtarget. es posible ejecutar otras instrucciones (incluidas las instrucciones de posicionamiento) durante el tiempo del movimiento del eje independiente. Sólo se utiliza el componente de este eje Axis en concreto. Reservados todos los derechos.61 IndAMove .Movimiento independiente de posición absoluta 1. Consulte también Más ejemplos en la página 141. Si el movimiento debe producirse a una corta distancia de la posición actual.

Speed Tipo de dato: num Velocidad del eje en grados/s (mm/s si es un eje lineal). Para devolver el eje al modo normal. se utiliza la instrucción IndReset.Descripción general de RAPID. el eje se ajusta sólo en el modo independiente. el eje se detiene y acelera hasta la nueva velocidad y en el nuevo sentido. El eje empieza a moverse cuando se ejecuta la instrucción siguiente y continúa siempre y cuando tenga lugar la ejecución del programa. el eje especificado se mueve a la velocidad programada hasta la posición de eje especificada.Movimiento independiente de posición absoluta Continuación [\ToAbsNum] To Absolute Numeric value Tipo de dato: num La posición del eje se define en grados (mm si es un eje lineal). se producirá una reducción de la aceleración o deceleración. Continúa en la página siguiente 140 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Durante la ejecución paso a paso de la instrucción.Posicionamiento durante la ejecución del programa . Mediante este argumento. Si se selecciona una velocidad en el sentido opuesto. sin cambiar el sistema de medición (lo que equivale a la ejecución de la instrucción IndReset\Old). Para obtener más información. La velocidad puede alterarse mediante la ejecución de otra instrucción IndAMove (u otra instrucción IndXMove). la posición NO se verá afectada por ningún desplazamiento. Cuando se sitúa un puntero de programa al principio del programa o en una nueva rutina. En conexión con este cambio. Reservados todos los derechos. . consulte el Manual de referencia de RAPID . por ejemplo EOffsSet o PDispOn.Ejes independientes. utilice una instrucción IndReset antes de la instrucción IndAMove o bien utilice una instrucción IndRMove. 100% = rendimiento máximo). pero la posición se define como un valor numérico para facilitar el cambio manual de la posición. sección Principios de movimiento y E/S . Tiene la misma función que \ToAbsPos.1 Instrucciones 1. Nota Una instrucción IndAMove a continuación de una operación IndCMove puede dar lugar a que el eje deshaga el movimiento realizado en la instrucción IndCMove.61 IndAMove . Ejecución de programas Cuando se ejecuta IndAMove.100%. [\Ramp] Tipo de dato: num Reducción de la aceleración y deceleración respecto del rendimiento máximo (1 . Si se programa \Ramp. todos los ejes cambian automáticamente al modo normal. es posible cambiar la posición lógica del eje de forma que se eliminen varias revoluciones completas de la posición para evitar que se produzca el retroceso en el giro para el movimiento siguiente. Para evitarlo.

20\Ramp:=50. este error puede ser gestionado en el gestor de errores. ActUnit Station_B.Descripción general de RAPID.Movimiento independiente de posición absoluta Continuación Limitaciones Los ejes en el modo independiente no pueden tener movimientos asignados.1 ) = TRUE.’ Continúa en la página siguiente 3HAC16581-5 Revisión: L 141 © Copyright 2004-2011 ABB. Cuando la estación A alcanza esta posición. La velocidad del eje es de 20 grados/s. no es posible reanudar el programa. Esta instrucción no es recomendable en el caso de los ejes de muñeca de robot acoplados (consulte Manual de referencia de RAPID . Si se intenta ejecutar el eje manualmente. Gestión de errores Si el eje no está activado.Posicionamiento durante la ejecución del programa . .1\ToAbsNum:=90. sección Principios de movimiento y E/S .2. Reservados todos los derechos. weld_stationA. A continuación. Ejemplo 1 ActUnit Station_A. DeactUnit Station_A. Si se produce una caída de alimentación mientras hay un eje en modo independiente. La velocidad cambia con la aceleración/deceleración reducida al 50% del rendimiento máximo.Ejes independientes). se mueve Station_A (el eje 1) hasta la posición de 90 grados mientras el robot realiza la soldadura en la estación B. la variable de sistema ERRNO cambia a ERR_AXIS_ACT. Sintaxis IndAMove [ MecUnit’:=’ ] < variable (VAR) of mecunit>’ .’ [ Speed ’:=’ ] < expression (IN) of num> [ ’\’ Ramp’:=’ < expression (IN) of num > ] ’.1 Instrucciones 1.61 IndAMove . WaitUntil IndInpos(Station_A. IndAMove Station_A. weld_stationB_1. éste no se mueve y se muestra un mensaje de error. es desactivada y es posible realizar la recarga en la estación al mismo tiempo que el robot continúa soldando en la estación B. Se activa Station_A y se inicia la soldadura en la estación A. A continuación. Ejecute una instrucción IndReset o mueva el puntero del programa a main para poder salir del modo independiente. WaitTime 0. weld_stationB_2. Más ejemplos A continuación aparecen más ejemplos de la instrucción IndAMove.’ [ Axis’:=’ ] < expression (IN) of num> [ ’\’ToAbsPos’:=’ < expression (IN) of robtarget> ] | [ ’\’ ToAbsNum’:=’ < expression (IN) of num> ] ’. En este caso aparece un mensaje de error y es necesario reiniciar un programa desde el principio.

Restablecimiento independiente en la página 151 Restablecimiento del sistema de medición IndReset .Ejes independientes Cambio de nuevo al modo manual IndReset .Estado de velocidad de un eje independiente en la página 939 Comprobación del estado de posición de los IndInpos .Independent Joint 142 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos.Movimiento independiente de posición relativa en la página 156 IndDMove . sección Motion .Estado de posición de un eje indeejes independientes pendiente en la página 937 Definición de ejes independientes Manual de referencia técnica .Arm .61 IndAMove .1 Instrucciones 1.RAPID overview.Parámetros del sistema. sección Principios de movimiento y E/S .Posicionamiento durante la ejecución del programa .Movimiento independiente continuo en la página 143 Comprobación del estado de velocidad de los ejes independientes IndInpos .Movimiento independiente de posición delta en la página 147 IndCMove . .Movimiento independiente de posición absoluta Continuación Información relacionada Para obtener más información sobre Consulte Ejes independientes en general Technical reference manual .Restablecimiento independiente en la página 151 Otros movimientos de ejes independientes IndRMove .

-30.62 IndCMove .62 IndCMove . Argumentos IndCMove MecUnit Axis Speed [\Ramp] MecUnit Mechanical Unit Tipo de dato: mecunit El nombre de la unidad mecánica. El sentido del movimiento se especifica con el signo del argumento de velocidad. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IndCMove.1 Instrucciones 1. Continúa en la página siguiente 3HAC16581-5 Revisión: L 143 © Copyright 2004-2011 ABB. Speed Tipo de dato: num Velocidad del eje en grados/s (mm/s si es un eje lineal). Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. El eje 2 de Station_A empieza a moverse en el sentido negativo a una velocidad de 30.Movimiento independiente continuo 1.5 grados/s. 100% = rendimiento máximo). Dado que la ejecución del programa prosigue inmediatamente. .5. Axis Tipo de dato: num El número del eje actual de la unidad mecánica (del 1 al 6).100%. Reservados todos los derechos. Ejemplo 1 IndCMove Station_A. Los ejes independientes son ejes que se mueven independientemente de los demás ejes del sistema de robot. en las tareas de movimiento.Movimiento independiente continuo Utilización IndCMove (Independent Continuous Movement) se utiliza para cambiar un eje al modo independiente y empezar a moverlo continuamente a una velocidad determinada. Consulte también Más ejemplos en la página 145.2. [\Ramp] Tipo de dato: num Reducción de la aceleración y deceleración respecto del rendimiento máximo (1 . si se cuenta con un sistema MultiMove. es posible ejecutar otras instrucciones (incluidas las instrucciones de posicionamiento) durante el tiempo del movimiento del eje independiente.

consulte el Manual de referencia de RAPID .Descripción general de RAPID. Si se solicita una velocidad en el sentido opuesto.1 Instrucciones 1.Ejes independientes). Es posible cambiar la velocidad ejecutando una instrucción IndCMove posterior. Para volver a disponer de una resolución elevada. Para detener el eje. Si se programa \Ramp. el eje se detiene y acelera hasta la nueva velocidad y en el nuevo sentido.Movimiento independiente continuo Continuación Ejecución de programas Cuando se ejecuta IndCMove. Ejecute una instrucción IndReset o mueva el puntero del programa a main para poder salir del modo independiente. La posición lógica del eje puede cambiarse en conexión con este cambio.62 IndCMove .Posicionamiento durante la ejecución del programa . Continúa en la página siguiente 144 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Posicionamiento durante la ejecución del programa .Ejes independientes. se producirá una reducción de la aceleración o deceleración. Por ejemplo. se utiliza la instrucción IndReset. Para obtener más información. Si se intenta ejecutar el eje manualmente. todos los ejes cambian automáticamente al modo normal. Limitaciones La resolución de la posición del eje empeora a medida que se mueve hasta su posición cero lógica (normalmente el centro del área de trabajo). El sentido del movimiento se especifica con el signo del argumento de velocidad. sección Principios de movimiento y E/S .Descripción general de RAPID. Reservados todos los derechos. es posible eliminar un número de revoluciones completas para evitar que se produzca el retroceso en el giro para el movimiento siguiente. Para obtener más información. sin cambiar el sistema de medición (lo que equivale a la ejecución de la instrucción IndReset\Old). Cuando se sitúa un puntero de programa al principio del programa o en una nueva rutina. el eje se ajusta sólo en el modo independiente.Ejes independientes. En este caso. En este caso aparece un mensaje de error y es necesario reiniciar un programa desde el principio. Esta instrucción no es recomendable en el caso de los ejes de muñeca de robot acoplados (consulte Manual de referencia de RAPID .Posicionamiento durante la ejecución del programa . sección Principios de movimiento y E/S . Si se produce una caída de alimentación cuando el eje se encuentra en el modo independiente. sección Principios de movimiento y E/S .Descripción general de RAPID. consulte el Manual de referencia de RAPID . es posible cambiar a cero el área de trabajo lógica con la instrucción IndReset. Para devolver el eje al modo normal. Los ejes en el modo independiente no pueden tener movimientos asignados. éste no se mueve y se muestra un mensaje de error. puede usarse el argumento de velocidad 0. sigue teniendo el modo independiente. el eje especificado empieza a moverse a la velocidad programada. no es posible reanudar el programa. . Durante la ejecución paso a paso de la instrucción. El eje empieza a moverse cuando se ejecuta la instrucción siguiente y continúa siempre y cuando continúe también la ejecución del programa.

±180 grados). fine.1 Instrucciones 1. tool1.10.’ [ Speed ’:=’ ] < expression (IN) of num> [ ’\’ Ramp’:=’ < expression (IN) of num > ] ’. WaitUntil IndInpos(Station_A. fine. el eje 2 de Station_A se detiene lo más rápidamente posible en la posición p1 dentro de la revolución actual.2 ) = TRUE. Al mismo tiempo.2.2 \ToRelPos:=p1 \Short. el eje externo cambia de sentido y gira a una velocidad de 10 grados/s. IndCMove Station_A. Cuando el eje ha alcanzado la velocidad seleccionada.2. El cambio de velocidad se realiza con una aceleración/deceleración reducida al 50% del rendimiento máximo. los ejes del robot empiezan a moverse. WaitTime 0. el robot ejecuta el movimiento hacia p20.Movimiento independiente continuo Continuación Más ejemplos A continuación aparecen más ejemplos de la instrucción IndCMove. .’ Continúa en la página siguiente 3HAC16581-5 Revisión: L 145 © Copyright 2004-2011 ABB. este error puede ser gestionado en el gestor de errores. la variable de sistema ERRNO cambia a ERR_AXIS_ACT. MoveL p20.62 IndCMove . fine. A continuación.’ [ Axis’:=’ ] < expression (IN) of num> ’. v1000.2.2. A continuación. IndRMove Station_A. tool1. v1000. el eje 2 vuelve de nuevo al modo normal. Gestión de errores Si el eje no está activado. IndCMove Station_A. El offset del sistema de medición para este eje se cambia a un número entero de revoluciones de eje. MoveL p10. tool1. WaitTime 0. WaitUntil IndSpeed(Station_A. IndReset Station_A. Reservados todos los derechos.20. A continuación. el eje 2 de Station_A es movido por la instrucción MoveL p40 por la vía más corta hasta la posición p40 (máx. MoveL p40. v1000. v1000. cuando el robot se mueve hasta la posición p40. z50. de forma que la posición actual esté lo más cerca posible de p40. El eje 2 de Station_A empieza a moverse en el sentido positivo a una velocidad de 20 grados/s.2 \InSpeed) = TRUE.2 \RefPos:=p40\Short. tool1.-10\Ramp:=50. Sintaxis IndCMove [ MecUnit’:=’ ] < variable (VAR) of mecunit>’ . Una vez que el eje 2 ha alcanzado esta posición y el robot se ha detenido en la posición p30. MoveL p30. Cuando el robot alcanza la posición p10.

IndAMove .IndReset .Arm .Estado de velocidad de un eje independe los ejes independientes diente en la página 939 Comprobación del estado de posición de los ejes independientes IndInpos . sección Motion . Reservados todos los derechos.RAPID overview.Movimiento independiente continuo Continuación Información relacionada Para obtener más información sobre Consulte Ejes independientes en general Technical reference manual .Restablecimiento independiente en la ción página 151 Otros movimientos de ejes independien.Posicionamiento durante la ejecución del programa Ejes independientes Cambio de nuevo al modo manual IndReset .1 Instrucciones 1. sección Principios de movimiento y E/S .62 IndCMove .IndependentJoint 146 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Movimiento independiente de posición relativa en la página 156 IndDMove .Parámetros del sistema.Estado de posición de un eje independiente en la página 937 Definición de ejes independientes Manual de referencia técnica . .Restablecimiento independiente en la página 151 Restablecimiento del sistema de medi.Movimiento independiente de posición delta en la página 147 Comprobación del estado de velocidad IndInpos .Movimiento independiente de posites ción absoluta en la página 139 IndRMove .

si se cuenta con un sistema MultiMove. Reservados todos los derechos.20. Speed Tipo de dato: num Velocidad del eje en grados/s (mm/s si es un eje lineal). Delta Tipo de dato: num La distancia que se desea mover el eje actual. Se mueve el eje 2 de Station_A30 grados en el sentido negativo a una velocidad de 20 grados/s.2.1 Instrucciones 1. Ejemplo 1 IndDMove Station_A. [ \Ramp ] Tipo de dato: num Continúa en la página siguiente 3HAC16581-5 Revisión: L 147 © Copyright 2004-2011 ABB.63 IndDMove . es posible ejecutar otras instrucciones (incluidas las instrucciones de posicionamiento) durante el tiempo del movimiento del eje independiente. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IndDMove. Axis Tipo de dato: num El número del eje actual de la unidad mecánica (del 1 al 6).Movimiento independiente de posición delta Utilización IndDMove(Independent Delta Movement se utiliza para cambiar un eje al modo independiente y mover el eje a una distancia determinada. Dado que la ejecución del programa prosigue inmediatamente. Si se desea mover el eje hasta una posición determinada.-30. en las tareas de movimiento. El signo especifica el sentido del movimiento. Los ejes independientes son ejes que se mueven independientemente de los demás ejes del sistema de robot. expresada en grados (mm en el caso de los ejes lineales).Movimiento independiente de posición delta 1. Argumentos IndDMove MecUnit Axis Delta Speed [\Ramp] MecUnit Mechanical Unit Tipo de dato: mecunit El nombre de la unidad mecánica. Consulte también Más ejemplos en la página 149.63 IndDMove . . Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. debe utilizar en su lugar una instrucción IndAMove o IndRMove.

En este caso aparece un mensaje de error y es necesario reiniciar un programa desde el principio. Reservados todos los derechos.Ejes independientes). Durante la ejecución paso a paso de la instrucción. Por ejemplo. Limitaciones Los ejes en el modo independiente no pueden tener movimientos asignados. El sentido del movimiento se especifica con el signo del argumento Delta. Si se ejecuta una instrucción IndDMove con una distancia 0 y el eje ya está cambiando de posición. Para obtener más información.Descripción general de RAPID. Cuando se sitúa un puntero de programa al principio del programa o en una nueva rutina. el eje se detiene y acelera hasta la nueva velocidad y en el nuevo sentido. La posición lógica del eje puede cambiarse en conexión con este cambio. el eje se ajusta sólo en el modo independiente.1 Instrucciones 1. es posible eliminar un número de revoluciones completas de la posición para evitar que se produzca el retroceso en el giro para el movimiento siguiente. todos los ejes cambian automáticamente al modo normal. 100% = rendimiento máximo). sección Principios de movimiento y E/S . el eje especificado se mueve a la velocidad programada hasta la distancia especificada. Ejecute una instrucción IndReset o mueva el puntero del programa a main para poder salir del modo independiente. Si se intenta ejecutar el eje manualmente. Esta instrucción no es recomendable en el caso de los ejes de muñeca de robot acoplados (consulte Manual de referencia de RAPID .63 IndDMove .Ejes independientes.100%. . Ejecución de programas Cuando se ejecuta IndDMove. sección Principios de movimiento y E/S . El eje empieza a moverse cuando se ejecuta la instrucción siguiente y continúa siempre y cuando continúe también la ejecución del programa. Si se produce un fallo de caída de alimentación cuando el eje se encuentra en el modo independiente. Para devolver el eje al modo normal. se utiliza la instrucción IndReset. el eje se detiene y retrocede hasta la posición ocupada por el eje en el momento de la ejecución de la instrucción.Movimiento independiente de posición delta Continuación Reducción de la aceleración y deceleración respecto del rendimiento máximo (1 . la nueva posición se calcula a partir de la posición momentánea que tiene el eje en el momento de ejecutar la instrucción IndDMove.Descripción general de RAPID.Posicionamiento durante la ejecución del programa . Continúa en la página siguiente 148 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. no es posible reanudar el programa. La velocidad puede cambiarse ejecutando una instrucción IndDMove adicional (u otra instrucción IndXMove). sin cambiar el sistema de medición (lo que equivale a la ejecución de la instrucción IndReset \Old). éste no se mueve y se muestra un mensaje de error. Si el eje se está moviendo. Si se programa \Ramp. Si se selecciona una velocidad en el sentido opuesto. consulte el Manual de referencia de RAPID .Posicionamiento durante la ejecución del programa . se producirá una reducción de la aceleración o deceleración.

WaitUntil IndInpos(ROB_1.6\ToAbsNum:=90.2. A continuación.Movimiento independiente de posición delta Continuación Más ejemplos A continuación aparecen más ejemplos de la instrucción IndDMove.63 IndDMove .Estado de velocidad de un eje independe los ejes independientes diente en la página 939 Comprobación del estado de posición de los ejes independientes IndInpos . Ejemplo 1 IndAMove ROB_1.IndReset .6.’ [ Speed ’:=’ ] < expression (IN) of num> [ ’\’ Ramp’:=’ < expression (IN) of num > ] ’.2.Ejes independientes Cambio de nuevo al modo manual IndReset .Restablecimiento independiente en la página 151 Restablecimiento del sistema de medi.IndAMove .Posicionamiento durante la ejecución del programa .Movimiento independiente continuo en la página 143 Comprobación del estado de velocidad IndInpos .6) = TRUE.RAPID overview.20.20. WaitUntil IndInpos(ROB_1.6) = TRUE. WaitTime 0. la variable de sistema ERRNO cambia a ERR_AXIS_ACT.’ [ Axis’:=’ ] < expression (IN) of num> ’. WaitTime 0. IndDMove ROB_1.2. Se mueve el eje 6 del robot hasta las posiciones siguientes: • 90 grados • 60 grados • 460 grados (1 revolución + 100 grados) Gestión de errores Si el eje no está activado.-30.Movimiento independiente de posición tes absoluta en la página 139 IndRMove . sección Principios de movimiento y E/S . este error puede ser gestionado en el gestor de errores.Movimiento independiente de posición relativa en la página 156 IndCMove .’ [ Delta’:=’ ] < expression (IN) of num>’.Estado de posición de un eje independiente en la página 937 Continúa en la página siguiente 3HAC16581-5 Revisión: L 149 © Copyright 2004-2011 ABB.’ Información relacionada Para obtener más información sobre Consulte Ejes independientes en general Technical reference manual . .1 Instrucciones 1.400. Sintaxis IndDMove [ MecUnit’:=’ ] < variable (VAR) of mecunit> ’.20.Restablecimiento independiente en la ción página 151 Otros movimientos de ejes independien. IndDMove Station_A. Reservados todos los derechos.

63 IndDMove . Reservados todos los derechos. .Arm .1 Instrucciones 1.IndependentJoint 150 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Parámetros del sistema.Movimiento independiente de posición delta Continuación Para obtener más información sobre Consulte Definición de ejes independientes Manual de referencia técnica . sección Motion .

Por eso la posición anterior es un punto de paro y la instrucción IndCMove se ejecuta con la velocidad cero. Consulte también Más ejemplos en la página 154. WaitTime 0.2. el sistema de medición de los ejes de rotación puede moverse un número de revoluciones de eje.2\ZeroSpeed). si se cuenta con un sistema MultiMove.64 IndReset . MoveL *. .Restablecimiento independiente Utilización IndReset (Independent Reset) se utiliza para devolver un eje independiente al modo normal. se utiliza una pausa de 0. IndCMove Station_A. [ \RefPos ] Reference Position Tipo de dato: robtarget Continúa en la página siguiente 3HAC16581-5 Revisión: L 151 © Copyright 2004-2011 ABB. Nota Ni el eje independiente actual ni los ejes normales deben moverse cuando se ejecuta la instrucción IndReset. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IndReset. Se mueve en primer lugar el eje 2 de Station_A en el modo independiente.5. Además.2.0. Axis Tipo de dato: num El número del eje actual de la unidad mecánica (del 1 al 6). Argumentos IndReset MecUnit Axis [\RefPos] | [\RefNum] [\Short] | [\Fwd] |[\Bwd] | \Old] MecUnit Mechanical Unit Tipo de dato: mecunit El nombre de la unidad mecánica.2 segundos para garantizar que se ha conseguido el estado correcto. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. Reservados todos los derechos.1 Instrucciones 1.2 IndReset Station_A.tool1. devolviéndolo a continuación al modo normal. Al mismo tiempo.Restablecimiento independiente 1.2.64 IndReset .fine.v1000. en las tareas de movimiento. IndCMove Station_A. El eje se mantendrá en su posición. WaitUntil IndSpeed(Station_A.

Este argumento sólo debe ser definido junto con el argumento \Short. Sólo se utiliza el componente de este eje Axis en concreto. el eje gira en sentido positivo menos de 360 grados para alcanzar la posición. pero la posición se define como un valor numérico para facilitar el cambio manual de la posición. [ \Bwd ] Backward Tipo de dato: switch El sistema de medición cambiará un número entero de revoluciones en el lado del eje. Si se ejecuta una instrucción de posicionamiento con la misma posición después de IndReset. No se permite junto con el argumento \Old. La posición debe estar dentro del área de trabajo normal. En el caso de los ejes del robot.64 IndReset . de forma que el eje quede lo más cerca posible de la posición especificada con \RefPos o \RefNum.1 Instrucciones 1. Reservados todos los derechos. [ \Short ] Tipo de dato: switch El sistema de medición cambiará un número entero de revoluciones en el lado del eje. . \Fwd o \Bwd. [ \RefNum ] Reference Numeric value Tipo de dato: num La posición del eje de referencia se define en grados (mm si es un eje lineal). Si se ejecuta una instrucción de posicionamiento con la misma posición después de IndReset. se debe utilizar en su lugar el argumento \RefNum. [ \Fwd ] Forward Tipo de dato: switch El sistema de medición cambiará un número entero de revoluciones en el lado del eje. de forma que la posición de referencia quede en el lado positivo de la posición especificada con \RefPos o \RefNum. [ \Old ] Tipo de dato: switch Mantiene la posición anterior. para alcanzar la posición. No se permite junto con el argumento \Old.Restablecimiento independiente Continuación La posición del eje de referencia se especifica como un robtarget. el eje gira en sentido negativo menos de 360 grados para alcanzar la posición. Este argumento sólo debe ser definido junto con el argumento \Short. el eje se desplaza por la ruta más corta. inferior a ±180 grados. Si se ejecuta una instrucción de posicionamiento con la misma posición después de IndReset. Tiene la misma función que \RefPos. \Fwd o \Bwd. La posición debe estar dentro del área de trabajo normal. de forma que la posición de referencia quede en el lado negativo de la posición especificada con \RefPos o \RefNum. Continúa en la página siguiente 152 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.

el sistema de medición del eje puede moverse un número entero de revoluciones de eje.12 segundos tras la instrucción IndReset. Nota La posición sólo se utiliza para ajustar el sistema de medición. el eje 6 no debe estar en el modo independiente.1 Instrucciones 1. No es posible cambiar el sistema de medición de los ejes lineales.64 IndReset . utilizando un argumento distinto de \Old. Al mismo tiempo. no un punto de paso. Continúa en la página siguiente 3HAC16581-5 Revisión: L 153 © Copyright 2004-2011 ABB. \Bwd u \Old. un eje que gira progresivamente más y más desde la posición 0 debe ser puesto a cero con la instrucción IndReset. Si se utiliza IndReset en el eje 4 del robot. En el caso de los ejes que se encuentran en el modo normal. De lo contrario. IndRMove. La resolución de las posiciones se reduce al alejarse de la posición lógica 0. Reservados todos los derechos. IndAMove o IndDMove. \Fwd. . esto se consigue ejecutando una instrucción de movimiento con el argumento fine. El único eje del robot que puede usarse como eje independiente es el eje 6. no será posible reanudar la ejecución tras una caída de suministro eléctrico.Restablecimiento independiente Continuación Nota La resolución se reduce en las posiciones más alejadas de la posición cero. Para garantizar una puesta en marcha adecuada tras ejecutar IndReset con un eje y utilizando un sistema de medición relativo (modificadores de sincronización). el eje independiente vuelve al modo normal. se utiliza \Old como valor predeterminado.2 segundos). Si esta instrucción va precedida de una instrucción de movimiento. Esta instrucción también puede utilizarse en el modo normal con el fin de cambiar de sistema de medición. Limitaciones Esta instrucción sólo puede ejecutarse cuando todos los ejes activos que se encuentren en el modo normal estén parados. El eje independiente que se desea cambiar al modo normal también debe estar en reposo. El eje independiente se detiene con una instrucción IndCMove con Speed:=0 (seguida de un periodo de espera de 0. Si no se especifica ningún argumento \Short. es necesario añadir un retardo adicional de 0. Por tanto. La instrucción IndReset también puede usarse con el eje 4 en los modelos IRB2400 e IRB 4400. Ejecución de programas Si se ejecuta IndReset. ésta última debe programarse con un punto de paro (zonedata fine). El eje en sí no se mueve hasta la posición. Todos los ejes activos de todas las unidades mecánicas conectadas al mismo planificador de movimientos deben permanecer parados.

este error puede ser gestionado en el gestor de errores. A continuación. Para detener un movimiento independiente. WaitUntil IndInpos(Station_A.64 IndReset . se cambia la posición lógica a 390 grados (1 revolución más 30 grados).50.50.1 Instrucciones 1.2.1\ToAbsNum:=750. QStop.2. debe alcanzar una condición de paro o el usuario debe. WaitUntil IndInpos(Station_A. Stop.’ [ Axis’:=’ ] < expression (IN) of num> [ ’\’ RefPos’:=’ < expression (IN) of robtarget> ] | [ ’\’ RefNum’:=’ < expression (IN) of num> ] [ ’\’ Short ] | [ ’\’ Fwd ] | [ ’\’ Bwd ] | [ ’\’ Old ]’. por ejemplo. Gestión de errores Si el eje está en movimiento.’ Información relacionada Para obtener más información sobre Consulte Ejes independientes en general Technical reference manual .1\ToAbsNum:=750. se cambia la posición lógica a 30 grados. WaitTime 0. la variable de sistema ERRNO cambia a ERR_AXIS_ACT. IndAMove Station_A.1 \RefNum:=0 \Short. mover el PP a main.1 \RefNum:=300 \Short.1). Ejemplo 1 IndAMove Station_A. IndReset Station_A. Más ejemplos A continuación aparecen más ejemplos de la instrucción IndReset.Posicionamiento durante la ejecución del programa . Si el eje no está activado. Se mueve en primer lugar el eje 1 de Station_A de forma independiente hasta la posición de 750 grados (2 revoluciones más 30 grados). Restart o Step. se mueve el eje 1 de Station_A de forma independiente hasta la posición de 750 grados (2 revoluciones más 30 grados).RAPID overview. .Restablecimiento independiente Continuación IndReset no puede ejecutarse en rutinas de RAPID que estén conectadas a los siguientes eventos especiales del sistema: PowerOn.Ejes independientes Continúa en la página siguiente 154 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Sintaxis IndReset [ MecUnit’:=’ ] < variable (VAR) of mecunit> ’. sección Principios de movimiento y E/S . la variable de sistema ERRNO cambia a ERR_AXIS_MOVING.1). IndReset sólo conmuta el estado independiente de un solo eje. En el mismo momento en que cambia al modo normal. A continuación. IndReset Station_A. En el mismo momento en que cambia al modo normal. WaitTime 0. Reservados todos los derechos. No puede usarse para detener un movimiento independiente.

Movimiento independiente de posición delta en la página 147 IndRMove .Restablecimiento independiente Continuación Para obtener más información sobre Consulte Cambio de un eje al modo independien.Parámetros del sistema.IndAMove .Movimiento independiente continuo en la página 143 IndDMove .Movimiento independiente de posición relativa en la página 156 Comprobación del estado de velocidad IndInpos .1 Instrucciones 1. sección Motion .64 IndReset .Movimiento independiente de posición te absoluta en la página 139 IndCMove . .Arm .Estado de velocidad de un eje independe los ejes independientes diente en la página 939 Comprobación del estado de posición de los ejes independientes IndInpos . Reservados todos los derechos.Independent Joint 3HAC16581-5 Revisión: L 155 © Copyright 2004-2011 ABB.Estado de posición de un eje independiente en la página 937 Definición de ejes independientes Manual de referencia técnica .

Axis Tipo de dato: num El número del eje actual de la unidad mecánica (del 1 al 6). El valor se utiliza como un valor de posición en grados dentro de una revolución de eje.20. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IndRMove. Continúa en la página siguiente 156 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.2\ToRelPos:=p5 \Short. Esto significa que el eje se mueve menos de una revolución. Ejemplo 1 IndRMove Station_A.65 IndRMove . se debe utilizar la instrucción IndDMove. Dado que la ejecución del programa prosigue inmediatamente. si se cuenta con un sistema MultiMove. se debe utilizar en su lugar la instrucción IndAMove.1 Instrucciones 1. [ \ToRelPos ] To Relative Position Tipo de dato: robtarget La posición del eje se especifica como un robtarget. Si se desea mover el eje hasta una posición absoluta (varias revoluciones) o se trata de un eje lineal. Argumentos IndRMove MecUnit Axis [\ToRelPos] | [\ToRelNum] [\Short] | [\Fwd] | [\Bwd] Speed [\Ramp] MecUnit Mechanical Unit Tipo de dato: mecunit El nombre de la unidad mecánica. Se mueve el eje 2 de Station_A por la ruta más corta hasta la posición p5 dentro de una revolución (rotación máxima ± 180 grados) a una velocidad de 20 grados/s. Sólo se utiliza el componente de este eje Axis en concreto.65 IndRMove . . Los ejes independientes son ejes que se mueven independientemente de los demás ejes del sistema de robot. en las tareas de movimiento. es posible ejecutar otras instrucciones (incluidas las instrucciones de posicionamiento) durante el tiempo del movimiento del eje independiente.Movimiento independiente de posición relativa 1. Si el movimiento debe producirse a una distancia determinada de la posición actual. Consulte también Más ejemplos en la página 158. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. Reservados todos los derechos.Movimiento independiente de posición relativa Utilización IndRMove (Independent Relative Movement) se utiliza para cambiar un eje de rotación al modo independiente y mover el eje a una posición determinada dentro de una revolución.

por ejemplo EOffsSet o PDispOn. Esto significa que la rotación máxima será de 180 grados en cualquier sentido.1 Instrucciones 1. [ \Short ] Tipo de dato: switch El eje se mueve por la ruta más corta hasta la nueva posición. . Mediante este argumento.Movimiento independiente de posición relativa Continuación La posición del eje se verá afectada si el eje se desplaza utilizando la instrucción EOffsSet o EOffsOn. [ \ToRelNum ] To Relative Numeric value Tipo de dato: num La posición del eje. [ \Bwd ] Backward Tipo de dato: switch El eje se mueve en sentido negativo hasta la nueva posición.100%. 100% = rendimiento máximo). se debe utilizar en su lugar el argumento \ToRelNum. la posición NO se verá afectada por ningún desplazamiento. Esto significa que la rotación máxima será de 360 grados y siempre en sentido negativo (con reducción del valor de posición).65 IndRMove . pero la posición se define como un valor numérico para facilitar el cambio manual de la posición. \Fwd o \Bwd. definida en grados. Por tanto. Tiene la misma función que \ToRelPos. [ \Ramp ] Tipo de dato: num Reducción de la aceleración y deceleración respecto del rendimiento máximo (1 . Esto significa que la rotación máxima será de 360 grados y siempre en sentido positivo (con aumento del valor de posición). el sentido del movimiento depende de la ubicación actual del eje. Continúa en la página siguiente 3HAC16581-5 Revisión: L 157 © Copyright 2004-2011 ABB. Si se omite el argumento \Short. Speed Tipo de dato: num La velocidad del eje en grados/s. [ \Fwd ] Forward Tipo de dato: switch El eje se mueve en sentido positivo hasta la nueva posición. En el caso de los ejes del robot. se utiliza \Short como valor predeterminado. Reservados todos los derechos.

. En este caso aparece un mensaje de error y es necesario reiniciar un programa desde el principio. Ejemplo 1 IndRMove Station_A. Si se produce una caída de alimentación cuando el eje se encuentra en el modo independiente. Si se programa \Ramp. Limitaciones Los ejes en el modo independiente no pueden tener movimientos asignados. Esta instrucción no es recomendable en el caso de los ejes de muñeca de robot acoplados (consulte el Manual de referencia de RAPID . El eje 1 de Station_A empieza a moverse en sentido positivo hacia la posición p5 dentro de una revolución (rotación máxima 360 grados) a una velocidad de 20 Continúa en la página siguiente 158 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. éste no se mueve y se muestra un mensaje de error. sin cambiar el sistema de medición (lo que equivale a la ejecución de la instrucción IndReset \Old). no es posible reanudar el programa.1\ToRelPos:=p5 \Fwd. pero sólo una revolución como máximo. La velocidad puede cambiarse ejecutando una instrucción IndRMove adicional (u otra instrucción IndXMove).Movimiento independiente de posición relativa Continuación Ejecución de programas Cuando se ejecuta IndRMove. Cuando se sitúa un puntero de programa al principio del programa o en una nueva rutina. Reservados todos los derechos.Posicionamiento durante la ejecución del programa . Para devolver el eje al modo normal. sección Principios de movimiento y E/S . sección Principios de movimiento y E/S . Para obtener más información. Más ejemplos A continuación aparecen más ejemplos de la instrucción IndRMove. Ejecute una instrucción IndReset o mueva el puntero del programa a main para poder salir del modo independiente. Si se intenta ejecutar el eje manualmente. el eje especificado se mueve a la velocidad programada hasta la posición de eje especificada. El eje empieza a moverse cuando se ejecuta la instrucción siguiente y continúa siempre y cuando continúe también la ejecución del programa. Por ejemplo. el eje se ajusta sólo en el modo independiente.Ejes independientes). La posición lógica del eje puede cambiarse en conexión con este cambio. se utiliza la instrucción IndReset. Si se selecciona una velocidad en el sentido opuesto. el eje se detiene y acelera hasta la nueva velocidad y en el nuevo sentido. Durante la ejecución paso a paso de la instrucción.Ejes independientes.1 Instrucciones 1.Descripción general de RAPID.20\Ramp:=50. es posible eliminar un número de revoluciones completas de la posición para evitar que se produzca el retroceso en el giro para el movimiento siguiente. todos los ejes cambian automáticamente al modo normal.Posicionamiento durante la ejecución del programa . se producirá una reducción de la aceleración o deceleración.65 IndRMove .Descripción general de RAPID. consulte el Manual de referencia de RAPID .

WaitTime 0. WaitTime 0.Restablecimiento independiente en la página 151 Continúa en la página siguiente 3HAC16581-5 Revisión: L 159 © Copyright 2004-2011 ABB.1\ToRelNum:=150 \Short.20. IndAMove Station_A. WaitTime 0. A continuación. WaitUntil IndInpos(Station_A.65 IndRMove . Sintaxis IndRMove [ MecUnit’:=’ ] < variable (VAR) of mecunit> ’.Posicionamiento durante la ejecución del programa .1 ) = TRUE.2. WaitTime 0.1\ToRelNum:=50 \Bwd. IndAMove Station_A.1\ToRelNum:=80 \Fwd. Se mueve el eje 1 de Station_A hasta las posiciones siguientes: • 90 grados • 440 grados (1 revolución + 80 grados) • 410 grados (1 revolución + 50 grados) • 510 grados (1 revolución + 150 grados) • 10 grados Gestión de errores Si el eje no está activado.’ [ Axis’:=’ ] < expression (IN) of num> [ ’\’ToRelPos’:=’ < expression (IN) of robtargets> ] | [ ’\’ToRelNum’:=’ < expression (IN) of num> ] [ ’\’Short ] | [ ’\’ Fwd ] | [ ’\’ Bwd ] ’.2. WaitUntil IndInpos(Station_A. . IndRMove Station_A.Movimiento independiente de posición relativa Continuación grados/s. sección Principios de movimiento y E/S . WaitUntil IndInpos(Station_A.1\ToAbsNum:=90.2.1 ) = TRUE.’ Información relacionada Para obtener más información sobre Consulte Ejes independientes en general Technical reference manual .Ejes independientes Cambio de nuevo al modo manual IndReset .2. WaitUntil IndInpos(Station_A.20. La velocidad cambia con la aceleración/deceleración reducida al 50% del rendimiento máximo. Reservados todos los derechos.20.1 Instrucciones 1. este error puede ser gestionado en el gestor de errores. IndRMove Station_A.20.Restablecimiento independiente en la página 151 Restablecimiento del sistema de medición IndReset .1\ToAbsNum:=10.1 ) = TRUE.’ [ Speed ’:=’ ] < expression (IN) of num> [ ’\’Ramp’:=’ < expression (IN) of num > ] ’. IndRMove Station_A.1 ) = TRUE. la variable de sistema ERRNO cambia a ERR_AXIS_ACT.20.RAPID overview.

.Movimiento independiente de posición relativa Continuación Para obtener más información sobre Consulte Otros movimientos de ejes independientes IndAMove . Reservados todos los derechos. sección Motion .Movimiento independiente de posición delta en la página 147 IndCMove .65 IndRMove .Movimiento independiente de posición absoluta en la página 139 IndDMove .Independent Joint 160 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.1 Instrucciones 1.Estado de posición de un eje indepenlos ejes independientes diente en la página 937 Definición de ejes independientes Manual de referencia técnica .Parámetros del sistema.Arm .Movimiento independiente continuo en la página 143 Comprobación del estado de velocidad de los ejes independientes IndInpos .Estado de velocidad de un eje independiente en la página 939 Comprobación del estado de posición de IndInpos .

Reservados todos los derechos. Ejecución de programas Se invierte el valor actual de la señal (consulte la figura siguiente).’ Continúa en la página siguiente 3HAC16581-5 Revisión: L 161 © Copyright 2004-2011 ABB.66 InvertDO . .Invierte el valor de una señal de salida digital 1. El error puede ser gestionado en un gestor de errores. En la figura siguiente se muestra la inversión de una señal digital de salida. la variable de sistema ERRNO cambia a: ERR_NORUNUNIT Sintaxis InvertDO [ Signal ’:=’ ] < variable (VAR) of signaldo > ’. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción InvertDO. Argumentos InvertDO Signal Signal Tipo de dato: signaldo El nombre de la señal a invertir. Se invierte el valor actual de la señal do15.Invierte el valor de una señal de salida digital Utilización InvertDO (Invert Digital Output) invierte el valor de una señal digital de salida (0 -> 1 y 1 -> 0). Ejemplo 1 InvertDO do15. Si se ha perdido el contacto con la unidad de E/S.1 Instrucciones 1.66 InvertDO . 1 Nivel de la señal 0 Ejecución de la instrucción InvertDO Ejecución de la instrucción InvertDO 1 Nivel de la señal 0 xx0500002164_es Gestión de errores Pueden generarse los errores recuperables siguientes.

Señales de entrada y salida Funcionalidad de entrada/salida en Technical reference manual .66 InvertDO .Parámetros del sistema 162 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.1 Instrucciones 1. secgeneral ción Principios de movimiento y E/S .RAPID overview.RAPID overview. .Consulte bre Instrucciones de entrada/salida Technical reference manual .Principios de E/S Configuración de E/S Manual de referencia técnica .Invierte el valor de una señal de salida digital Continuación Información relacionada Para obtener más información so. Reservados todos los derechos. sección Resumen sobre RAPID .

’ Información relacionada Para obtener más información sobre Consulte Cómo obtener el estado del bus de E/S IOBusState .Start of I/O bus Utilización IOBusStart se utiliza para poner en marcha un determinado bus de E/S. . Reservados todos los derechos. Sintaxis IOBusStart [ BusName ’:=’ ] < expression (IN) of string>’.67 IOBusStart . Ejemplo 1 IOBusStart "IBS". Ese error puede ser gestionado en un gestor de ERROR.Obtener el estado actual de un bus de E/S en la página 164 Configuración de E/S Manual de referencia técnica . Argumentos IOBusStart BusName BusName Tipo de dato: string El nombre del bus que se desea poner en marcha. Gestión de errores La variable de sistema ERRNO cambia a ERR_NAME_INVALID si el nombre de bus no existe.Start of I/O bus 1.1 Instrucciones 1. Ejecución de programas Se pone en marcha el bus cuyo nombre se especifica en el parámetro BusName.Parámetros del sistema 3HAC16581-5 Revisión: L 163 © Copyright 2004-2011 ABB. La instrucción pone en marcha el bus con el nombre IBS.67 IOBusStart . Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción IOBusStart.

en Ejecución de programas. TEST bstate CASE IOBUS_PHYS_STATE_RUNNING: ! Possible to access the signals on the IBS bus DEFAULT: ! Actions for not up and running IBS bus ENDTEST Esta instrucción devuelve el estado físico del bus de IBS en la variable bstate del tipo busstate.68 IOBusState . State Tipo de dato: busstate La variable en la que se devuelve el estado del bus. IOBusState "IBS". . Ejemplo 1 VAR busstate bstate. IOBusState "IBS". Su estado físico y su estado lógico definen el estado de un bus de E/S. bstate \Logic. Ejemplo 2 VAR busstate bstate.Obtener el estado actual de un bus de E/S Utilización IOBusState se usa para leer el estado de un bus de E/S determinado.Obtener el estado actual de un bus de E/S 1. Reservados todos los derechos. Consulte los datos predefinidos del tipo busstate que aparecen más abajo.1 Instrucciones 1.68 IOBusState . TEST bstate CASE IOBUS_LOG_STATE_STARTED: ! The IBS bus is started DEFAULT: ! Actions for stopped IBS bus ENDTEST Esta instrucción devuelve el estado lógico del bus de IBS en la variable bstate del tipo busstate. Argumentos IOBusState BusName State [\Phys] | [\Logic] BusName Tipo de dato: string El nombre del bus cuyo estado se desea averiguar. [\Phys] Physical Continúa en la página siguiente 164 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. bstate \Phys. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IOBusState.

. En RobotWare 5. [\Logic] Logical Tipo de dato: switch Si se utiliza este parámetro.1 Instrucciones 1.09. Valor de retorno Constante simbólica Comentario 0 BUSSTATE_HALTED El bus se ha detenido 3) 1 BUSSTATE_RUN Bus en funcionamiento 1) 2 BUSSTATE_ERROR El bus no está trabajando 2) Continúa en la página siguiente 3HAC16581-5 Revisión: L 165 © Copyright 2004-2011 ABB. Ejecución de programas Devuelve en el parámetro State el estado del bus especificado en el parámetro BusName. \Phys ni \Logic. Reservados todos los derechos. El estado del bus de E/S se define en la tabla siguiente cuando se utiliza el argumento opcional \Phys. 24 IOBUS_PHYS_STATE_INIT 3) El bus no está trabajando 2) El bus sólo ha sido creado 3) Nota Ni en RobotWare 5. Valor de retorno Constante simbólica Comentario 20 IOBUS_PHYS_STATE_HALTED El bus se ha detenido 21 IOBUS_PHYS_STATE_RUNNING Bus en funcionamiento 1) 22 IOBUS_PHYS_STATE_ERROR 23 IOBUS_PHYS_STATE_STARTUP El bus está en el modo de puesta en marcha. El estado del bus de E/S se define en la tabla siguiente cuando no se utiliza ninguno de los argumentos opcionales.08 ni en versiones anteriores es posible utilizar la instrucción IOBusState con el argumento opcional \Phys o \Logic. se recomienda usar el argumento opcional \Phys o \Logic.Obtener el estado actual de un bus de E/S Continuación Tipo de dato: switch Si se utiliza este parámetro.Constante simbólica no Comentario 10 IOBUS_LOG_STATE_STOPPED El bus se ha detenido debido a un error 2) 11 IOBUS_LOG_STATE_STARTED El bus se ha iniciado 1) El estado físico del bus de E/S describe el estado cuya activación puede ordenar el controlador de bus de campo.68 IOBusState . se lee el estado lógico del bus. se lee el estado físico del bus . Valor de retor. El estado del bus de E/S se define en la tabla siguiente cuando se utiliza el argumento opcional \Logic. No se comunica con ninguna unidad. Los estados lógicos del bus de E/S describen el estado cuya activación puede solicitar el usuario.

1 Instrucciones 1. Sintaxis IOBusState [ BusName ’:=’ ] < expression (IN) of string>’ .OS. sección general Principios de movimiento y E/S .Consulte bre Definición de estado de bus busstate .Principios de E/S Configuración de E/S Manual de referencia técnica . IOBUS_PHYS_STATE_ERROR o BUSSTATE_ERROR en función de si se usan parámetros opcionales o no en IOBusState. .Start of I/O bus en la página 163 Funcionalidad de entrada/salida en Technical reference manual . 4 BUSSTATE_INIT El bus sólo ha sido creado 3) 1) Si el bus está funcionando.Obtener el estado actual de un bus de E/S Continuación Valor de retorno Constante simbólica Comentario 3 BUSSTATE_STARTUP El bus está en el modo de puesta en marcha. el estado devuelto en el argumento State puede ser IOBUS_LOG_STATE_STOPPED. Ese error puede ser gestionado en un gestor de ERROR. Gestión de errores La variable de sistema ERRNO cambia a ERR_NAME_INVALID si el nombre de bus no existe.68 IOBusState . IOBUS_PHYS_STATE_RUNNING o BUSSTATE_RUN en función de si se utilizan o no parámetros opcionales en IOBusState. el estado devuelto en el argumento State de la instrucción IOBusState puede ser IOBUS_LOG_STATE_STARTED. 2) Si el bus se ha detenido debido a algún error. 3) No es posible obtener este estado en el programa de RAPID con la versión actual de Robotware .RAPID overview.Estado de bus de E/S en la página 1174 Inicio de un bus de E/S IOBusStart . No se comunica con ninguna unidad.Parámetros del sistema 166 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos.’ [ State ’:=’ ] < variable (VAR) of busstate> [ ’\’ Phys] | [ ’\’ Logic]’.’ Información relacionada Para obtener más información so.

Consulte también Más ejemplos en la página 168. En las ocasiones en que sea necesario. Si se agota este tiempo antes de que la unidad de E/S haya finalizado los pasos de desactivación. La desactivación de una unidad de E/S requiere de 0 a 5 segundos aproximadamente.Desactiva una unidad de E/S 1. Ejemplo 1 CONST string cell1:="cell1". . se detiene la ejecución del programa. con el código de error ERR_IODISABLE. El tiempo de espera máximo es de 5 s. Argumentos IODisable UnitName MaxTime UnitName Tipo de dato: string El nombre de una unidad de E/S (el nombre de la unidad debe estar presente en los parámetros del sistema). Si no hay ningún gestor de errores. es posible llamar al gestor de errores. MaxTime Tipo de dato: num El periodo máximo permitido para el tiempo de espera.69 IODisable . Reservados todos los derechos. Las unidades de E/S están activadas de forma automática después del inicio. Desactivar una unidad de E/S denominada cell1. No obstante.1 Instrucciones 1. IODisable cell1. Continúa en la página siguiente 3HAC16581-5 Revisión: L 167 © Copyright 2004-2011 ABB. expresado en segundos. es posible desactivar o activar las unidades de E/S durante la ejecución del programa. Nota No es posible desactivar una unidad de E/S cuyo Trustlevel tenga el valor Required. 5.Desactiva una unidad de E/S Utilización IODisable se utiliza para desactivar una unidad de E/S durante la ejecución del programa. si lo hay. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IODisable.69 IODisable . el proceso de desactivación de la unidad de E/S siempre continúa independientemente del valor de MaxTime o del error. si están definidas en los parámetros del sistema.

..Desactiva una unidad de E/S Continuación Ejecución de programas La unidad de E/S especificada inicia los pasos de desactivación. ENDIF ELSEIF ERRNO <> ERR_EXCRTYMAX THEN RAISE. el establecimiento de salidas de esta unidad da lugar a errores. ELSEIF recover_flag = 2 THEN RETRY. Stop. ELSE ErrWrite "IODisable error". Ejemplo 1 PROC go_home() VAR num recover_flag :=0. Después de la desactivación de una unidad de E/S.. Gestión de errores Pueden generarse los errores recuperables siguientes. 0. .fine. ! Move to home position MoveJ home. Los errores pueden ser gestionados en un gestor de errores.tool1. . ERROR IF ERRNO = ERR_IODISABLE THEN IF recover_flag = 1 THEN TRYNEXT. ENDIF ENDPROC Continúa en la página siguiente 168 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Más ejemplos A continuación aparecen más ejemplos de la instrucción IODisable. IODisable "cell1". La instrucción queda finalizada tan pronto como terminan los pasos de la desactivación. v1000. La variable de sistema ERRNO cambia a: ERR_IODISABLE Si se alcanza el tiempo límite de espera antes de que la unidad de E/S se desactive ERR_TRUSTLEVEL Si el nivel trustlevel de la unidad de E/S tiene el valor 0.69 IODisable . ERR_NAME_INVALID Si el nombre de la unidad de E/S no existe. no es posible desactivar la unidad de E/S. ! Start to disable I/O unit cell1 recover_flag := 1.. . "Not possible to disable I/O unit cell1". Reservados todos los derechos.1 Instrucciones 1. IODisable "cell1". se genera un error recuperable. 5. Si se agota el tiempo límite MaxTime antes de que la unidad de E/S haya finalizado los pasos de desactivación. ! Wait until deactivation of I/O unit cell1 is ready recover_flag := 2.

Technical reference manual . se ahorra tiempo de ciclo en comparación con IODisable).RAPID overview.69 IODisable . la ejecución del robot se detiene con un mensaje de error. Sintaxis IODisable [ UnitName ’:=’ ] < expression (IN) of string>’ .Señales de entrada y salida Funcionalidad de entrada/salida en gene.RAPID overview.’ Información relacionada Para obtener más información sobre Consulte Activación de una unidad de E/S IOEnable . ral sección Principios de movimiento y E/S . Reservados todos los derechos. Cuando el robot se encuentra en la posición home.Activa una unidad de E/S en la página 170 Instrucciones de entrada/salida Technical reference manual .Parámetros del sistema 3HAC16581-5 Revisión: L 169 © Copyright 2004-2011 ABB. se realiza una comprobación para determinar si la unidad de E/S cell1 se ha desactivado completamente. Después del número máximo de reintentos (5 con un tiempo de espera de 5 s).Desactiva una unidad de E/S Continuación Con el fin de ahorrar tiempo de ciclo. El mismo principio puede usarse con IOEnable (de esta forma.1 Instrucciones 1. se desactiva la unidad de E/S cell1 durante el movimiento del robot hacia la posición home. sección Resumen sobre RAPID . .Principios de E/S Configuración de E/S Manual de referencia técnica .’ [ MaxTime’ :=’ ] < expression (IN) of num> ’.

es posible llamar al gestor de errores.Activa una unidad de E/S 1. Consulte Parámetros de sistema. Las unidades de E/S están activadas de forma automática después del inicio. IOEnable cell1. La activación de una unidad de E/S requiere de 2 a 5 segundos aproximadamente. No obstante. todas las salidas de la unidad de E/S actual vuelven a los valores anteriores (los que tenían antes de la instrucción IODisable). MaxTime Tipo de dato: num El periodo máximo permitido para el tiempo de espera. Continúa en la página siguiente 170 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. La instrucción queda finalizada tan pronto como terminan los pasos de la activación.IOEnable. con el código de error ERR_IOENABLE. Unit Trustlevel. se detiene la ejecución. El tiempo de espera es de 5 s. . se genera un error recuperable. Ejecución de programas La unidad de E/S especificada inicia los pasos de activación.1 Instrucciones 1. si lo hay. Consulte también Más ejemplos en la página 171. Ejemplo 1 CONST string cell1:="cell1". Después de una secuencia IODisable . Si no hay ningún gestor de errores. Se activa la unidad de E/S con el nombre cell1. Reservados todos los derechos. Si se agota el tiempo límite MaxTime antes de que la unidad de E/S haya finalizado los pasos de activación.70 IOEnable .Activa una unidad de E/S Utilización IOEnable se utiliza para activar una unidad de E/S durante la ejecución del programa. Argumentos IOEnable UnitName MaxTime UnitName Tipo de dato: string El nombre de una unidad de E/S (el nombre de la unidad de E/S debe estar presente en los parámetros del sistema). En las ocasiones en que sea necesario. Si se agota este tiempo antes de que la unidad de E/S haya finalizado los pasos de activación. es posible desactivar o activar las unidades de E/S durante la ejecución del programa. 5. si están definidas en los parámetros del sistema. La acción del controlador al activar una unidad de E/S depende del nivel Trustlevel definido para la unidad. el proceso de activación de la unidad de E/S siempre continúa independientemente del valor de MaxTime o del error. expresado en segundos.70 IOEnable . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IOEnable.

70 IOEnable . Los errores pueden ser gestionados en un gestor de errores. ERR_NAME_INVALID Si el nombre de la unidad de E/S no existe. ERROR IF ERRNO = ERR_IOENABLE THEN WaitTime 1.’ Continúa en la página siguiente 3HAC16581-5 Revisión: L 171 © Copyright 2004-2011 ABB. se salta al gestor de errores. IOEnable "cell1". Más ejemplos IOEnable también puede usarse para comprobar si una unidad de E/S está desconectada por algún motivo.. . SetDO cell1_sig3.. Ejemplo 1 VAR num max_retry:=0. La variable de sistema ERRNO cambia a: ERR_IOENABLE Si se agota el tiempo límite antes de que la unidad de E/S se active. la ejecución del programa espera durante 1 segundo y se hace un nuevo intento. En el gestor de errores. . 1. Después de 5 reintentos. ERR_BUSSTATE Si se ejecuta IOEnable y el bus se encuentra en el estado de error o entra en el estado de error antes de que la unidad de E/S se active. A continuación aparecen más ejemplos de cómo usar la instrucción IOEnable. el error ERR_IOENABLE se propaga hacia la rutina desde la que se llama a esta rutina de prueba. ENDIF ENDIF Antes de usar señales de la unidad de E/S cell1. 0. RETRY. se realiza una comprobación mediante un intento de activación de la unidad de E/S con un tiempo límite de 0 segundos. .’ [ MaxTime’ :=’ ] < expression (IN) of num > ’. Si la comprobación falla. Stop. ELSEIF ERRNO <> Err_EXCRTYMAX THEN RAISE. Reservados todos los derechos.. ELSE ErrWrite "IOEnable error"..1 Instrucciones 1. Sintaxis IOEnable [ UnitName ’:=’ ] < expression (IN) of string>’ .Activa una unidad de E/S Continuación Gestión de errores Pueden generarse los errores recuperables siguientes. "Not possible to enable I/O unit cell".

sección Resumen sobre RAPID .Activa una unidad de E/S Continuación Información relacionada Para obtener más información sobre Consulte Desactivación de una unidad de E/S IODisable .70 IOEnable .RAPID overview. sección Principios de movimiento y E/S .Señales de entrada y salida Funcionalidad de entrada/salida en general Technical reference manual .Principios de E/S Configuración de E/S Manual de referencia técnica . Reservados todos los derechos. .1 Instrucciones 1.Desactiva una unidad de E/S en la página 167 Instrucciones de entrada/salida Technical reference manual .RAPID overview.Parámetros del sistema 172 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.

Interrupt Tipo de dato: intnum La identidad de la interrupción. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IPers. Ejemplo 1 VAR intnum pers1int. Reservados todos los derechos.1 Instrucciones 1. En este caso. Argumentos IPers Name Interrupt Name Tipo de dato: anytype La variable persistente a partir de la cual deben generarse las interrupciones. registro.. PROC main() CONNECT pers1int WITH iroutine1. componente de registro. pers1int.Interrupción en caso de cambio de valor de una variable persistente 1. la ejecución del programa continúa a partir del punto en el que se produjo la interrupción. se realiza una llamada a la rutina TRAP iroutine1.. Idelete pers1int. se realiza una llamada a la rutina TRAP correspondiente. .71 IPers . ENDPROC TRAP iroutine1 TPWrite "Current value of counter = " \Num:=counter. PERS num counter := 0. Si la variable persistente cambia de valor durante un paro de programa. matriz o elemento de matriz.71 IPers .Interrupción en caso de cambio de valor de una variable persistente Utilización IPers (Interrupt Persistent) se utiliza para solicitar y activar la generación de interrupciones en caso de cambio de valor de una variable persistente. ENDTRAP Solicitita una interrupción que debe tener lugar cada vez que cambie el valor de la variable persistente counter. Ejecución de programas En el momento en el que la variable persistente cambia de valor. Puede usar todo tipo de datos. no tendrá lugar ninguna interrupción cuando el programa se inicie de nuevo. . Una vez ejecutada la rutina. IPers counter. Continúa en la página siguiente 3HAC16581-5 Revisión: L 173 © Copyright 2004-2011 ABB. como atómico. La interrupción debe estar ya conectada a una rutina TRAP mediante la instrucción CONNECT.

Interrupciones Interrupción a partir de una señal de entrada ISignalDI . Sintaxis IPers [ Name ’:=’ ] < persistent (PERS) of anytype > ’. Reservados todos los derechos.71 IPers .Interrupción en caso de cambio de valor de una variable persistente Continuación Limitaciones No es posible utilizar más de una vez la identidad de la interrupción sin eliminarla previamente.’ Información relacionada Para obtener más información sobre Consulte Resumen de interrupciones Technical reference manual .1 Instrucciones 1. sección Resumen sobre RAPID . en el parámetro Name.Interrupciones Identidad de interrupción intnum . Si se indica una parte de un dato. Consulte la instrucción ISignalDI.RAPID overciones view.Solicita interrupciones a partir de una señal digital de entrada en la página 194 Más información sobre la gestión de interrup.’ [ Interrupt’ :=’ ] < variable (VAR) of intnum > ’. . la interrupción tendrá lugar cada vez que se cambie cualquier parte del dato. Al ejecutar la rutina TRAP y leer el valor de la variable persistente. no existe ninguna garantía de que el valor leído sea el que disparó la interrupción. por ejemplo un componente de registro o un elemento de matriz.Technical reference manual .RAPID overview.Identidad de interrupción en la página 1212 174 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. sección Características básicas .

Ordenar interrupciones de RMQ para un tipo de dato 1.1 Instrucciones 1. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IRMQMessage. Todos los mensajes que contengan datos del mismo tipo de dato. se realiza una llamada a la rutina TRAP correspondiente.72 IRMQMessage . Reservados todos los derechos. se realiza una llamada a la rutina TRAPiroutine1. Ejecución de programas En el momento en el que se recibe el mensaje RMQ con el tipo de dato especificado. Una vez ejecutada la rutina. . Interrupt Tipo de dato: intnum La identidad de la interrupción. PROC main() CONNECT rmqint WITH iroutine1.. serán gestionadas por la misma interrupción. Consulte también IRMQMessage .Ordenar interrupciones de RMQ para un tipo de dato Utilización IRMQMessage (Interrupt RAPID Message Queue Message) se usa para solicitar y activar interrupciones para un tipo de dato en concreto al utilizar la funcionalidad RMQ. Continúa en la página siguiente 3HAC16581-5 Revisión: L 175 © Copyright 2004-2011 ABB. VAR string dummy. En este caso.Ordenar interrupciones de RMQ para un tipo de dato en la página 175..72 IRMQMessage . rmqint. Argumentos IRMQMessage InterruptDataType Interrupt InterruptDataType Tipo de dato: anytype Una referencia a una variable. Solicita una interrupción que debe producirse cada vez que se reciba un nuevo rmqmessage que contenga el tipo de dato string. utilice RMQGetMsgHeader para adaptarse a ello. Si se utilizan diferentes dimensiones. . una variable persistente o una constante de un tipo de dato que generará una interrupción cuando se reciba un rmqmessage con el tipo de dato especificado. IRMQMessage dummy. independientemente de su número de dimensiones. Ejemplo 1 VAR intnum rmqint. La interrupción debe estar ya conectada a una rutina TRAP mediante la instrucción CONNECT. la ejecución del programa continúa a partir del punto en el que se produjo la interrupción.

Ejemplo 1 MODULE ReceiverMod Continúa en la página siguiente 176 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos. la interrupción se ejecuta. por ejemplo el traslado del PP a main.72 IRMQMessage . En este caso se genera un error. Una interrupción segura no puede ponerse en reposo con la instrucción ISleep. El evento de interrupción segura se almacena en la cola en caso de paro del programa y ejecución paso a paso y cuando se inicia de nuevo en el modo continuo. Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción IRMQMessage.Ordenar interrupciones de RMQ para un tipo de dato Continuación Cualquier mensaje que contenga datos de un tipo de dato que no tiene conectada ninguna interrupción generará un aviso. El único momento en el que una interrupción segura se desecha es cuando la cola de interrupciones está llena. La instrucción RMQSendWait tiene la máxima prioridad si se recibe un mensaje y éste se corresponde con la descripción tanto de la respuesta esperada como de un mensaje conectado a una rutina TRAP con la instrucción IRMQMessage. La interrupción no sobrevive al restablecimiento del programa. Se considera que la interrupción es una interrupción segura. . No todos los tipos de datos pueden usarse en el argumento InterruptDataType (consulte las limitaciones).1 Instrucciones 1.

ndim = 0 THEN ! Get the data received in rmqmessage1 RMQGetMsgData rmqmessage1.. intno1.. ! Get the message from the RMQ RMQGetMessage rmqmessage1. receivestr. CONNECT intno1 WITH RecMsgs. TPWrite "Rec string: " + receivestr. PROC main() VAR string interrupt_on_str := stEmpty. ! Get information about the message RMQGetMsgHeader rmqmessage1 \Header:=rmqheader1 \SenderId:=rmqslot1 \UserDef:=userdef.datatype = "string" AND rmqheader1. rmqslot rmqslot1. TPWrite "User Def: " + ValToStr(userdef). esta situación se muestra en el FlexPendant. se ejecuta la rutina TRAPRecMsgs y los datos recibidos en el mensaje se muestran en el FlexPendant. client_name := RMQGetSlotName(rmqslot1). ! Perform cycle WHILE TRUE DO . Continúa en la página siguiente 3HAC16581-5 Revisión: L 177 © Copyright 2004-2011 ABB.Ordenar interrupciones de RMQ para un tipo de dato Continuación VAR VAR VAR VAR intnum intno1. VAR num userdef.1 Instrucciones 1. Reservados todos los derechos. rmqheader rmqheader1.72 IRMQMessage . . VAR string client_name. Cuando se recibe un mensaje. ELSE TPWrite "Faulty data received!" ENDIF ENDTRAP ENDMODULE Este ejemplo muestra cómo configurar interrupciones para un tipo de dato en concreto. IF rmqheader1. TPWrite "From: " + client_name. ENDWHILE ENDPROC TRAP RecMsgs VAR string receivestr. Si el tipo de dato recibido o la dimensión de los datos son distintos de lo esperado. ! Set up interrupts for data type string IRMQMessage interrupt_on_str. rmqmessage rmqmessage1.

sección RAPID Message Queue. IRMQMessage dummy. VAR intnum rmqint. Por tanto. ENDWHILE ENDPROC Al principio del programa se produce la activación de todas las interrupciones. No es posible usar en interrupciones. las interrupciones deben tratarse de la forma mostrada. VAR intnum rmqint. . Reservados todos los derechos. En este caso. IDelete rmqint.‘ Información relacionada Para obtener más información sobre Consulte Descripción de la funcionalidad de RAPID Message Queue Application manual . Provocaría un error de tiempo de ejecución no recuperable. las instrucciones iniciales se mantienen fuera del flujo principal del programa. PROC main ( ) VAR mytype dummy.. Sintaxis IRMQMessage [ InterruptDataType‘ :=’ ] < reference (REF) of anytype > [ Interrupt‘ :=’ ] < variable (VAR) of intnum >‘. enviar ni recibir instancias de tipos de datos que no tienen valor. IRMQMessage dummy.Robot communication and I/O control. es importante recordar que la interrupción permanece inactiva durante un periodo breve.. CONNECT rmqint WITH iroutine1. .1 Instrucciones 1.Buscar una identidad de ranuo de un cliente de Robot Application Builder. Enviar datos a la cola de una tarea de RAPID RMQFindSlot . PROC main () VAR mytype dummy.Ordenar interrupciones de RMQ para un tipo de dato Continuación Limitaciones No se permite ejecutar IRMQMessage en el modo sincronizado. No es posible utilizar más de una vez la identidad de la interrupción sin eliminarla previamente.. WHILE TRUE DO . CONNECT rmq1int WITH iroutine1.. son de semivalor o corresponden al tipo de dato motsetdata. rmqint. RMQGetMessage .72 IRMQMessage . ra para el nombre de ranura en la página 397 Obtener el primer mensaje de una cola de RAPID Message Queue. con una de las alternativas siguientes. ENDPROC La interrupción se elimina al final del programa y se activa de nuevo.Obtener un mensaje de RMQ en la página 399 Continúa en la página siguiente 178 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. En este caso. rmqint.

.RMQGetMsgHeader .1 Instrucciones 1.Ordenar interrupciones de RMQ para un tipo de dato Continuación Para obtener más información sobre Consulte Enviar datos a la cola de una tarea de RAPID RMQSendWait . na 416 Extraer los datos de encabezado de un rmq.RMQGetSlotName . Reservados todos los derechos. RMQGetMsgData .Enviar un mensaje de datos o un cliente de Robot Application Builder y de RMQ y esperar una respuesta en la págiesperar una respuesta del cliente.Obtener el nombre de dad de ranura especificada.Enviar un mensaje de o de un cliente de Robot Application Builder. la página 405 Enviar datos a la cola de una tarea de RAPID RMQSendMessage .Obtener información de encabezado de un mensaje de RMQ en message.72 IRMQMessage . un cliente de RMQ en la página 1035 3HAC16581-5 Revisión: L 179 © Copyright 2004-2011 ABB.Obtener la parte de datos de un mensaje de RMQ en la página 402 Obtener el nombre de ranura de una identi. datos de RMQ en la página 412 Extraer los datos de un rmqmessage.

5 y cuando la diferencia absoluta de la señal respecto del valor de referencia almacenado sea superior a 0. 1. ISignalAI \Single. 1.Interrupciones a partir de una señal analógica de entrada 1. En este caso.5.5 y 1. 0. Reservados todos los derechos. Solicita una interrupción que debe producirse cada vez que el valor lógico de la señal analógica de entrada ai1 se encuentre entre 0.5. 0. Ejemplo 2 ISignalAI ai1. sig1int.Interrupciones a partir de una señal analógica de entrada Utilización ISignalAI (Interrupt Signal Analog Input) se utiliza para solicitar y activar interrupciones a partir de una señal analógica de entrada. Si se omiten los argumentos Single y SingleSafe. 0.1. Argumentos ISignalAI [\Single] | [\SingleSafe] Signal Condition HighValue LowValue DeltaValue[\DPos] | [\DNeg] Interrupt [\Single] Tipo de dato: switch Especifica si la interrupción debe producirse una sola vez o de forma cíclica.1. AIO_BETWEEN. Ejemplo 1 VAR intnum sig1int. 0.5. Una interrupción segura no puede ponerse en reposo con la instrucción ISleep.1. Solicita una interrupción que debe producirse la primera vez que el valor lógico de la señal analógica de entrada ai1 se encuentre entre 0. .73 ISignalAI .5. ai1. la interrupción se produce como máximo una sola vez. Si se utiliza el argumento Single. se genera una interrupción cada vez que se cumpla la condición. [\SingleSafe] Tipo de dato: switch Especifica que la interrupción es única y segura.5 o superior a 1. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ISignalAI.1.5. 0. Para la definición de única.73 ISignalAI . PROC main() CONNECT sig1int WITH iroutine1. El evento de interrupción segura se almacena en la cola en caso de paro del programa y ejecución paso a paso y Continúa en la página siguiente 180 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.5 y 1. sig1int.5. sig1int. 0. AIO_BETWEEN. 1. se realiza una llamada a la rutina TRAP iroutine1.1 Instrucciones 1.5 y cuando la diferencia absoluta de la señal respecto del valor de referencia almacenado sea superior a 0. AIO_OUTSIDE.5. Ejemplo 3 ISignalAI ai1. consulte la descripción del argumento Single. Se solicita una interrupción que debe producirse cada vez que el valor lógico de la señal analógica de entrada ai1 sea inferior a 0.

1 Instrucciones 1. la interrupción se ejecuta. En este caso se genera un error. Signal Tipo de dato: signalai El nombre de la señal a partir de la cual deben generarse las interrupciones. comparado con el valor de referencia almacenado. DeltaValue Tipo de dato: num Define la diferencia mínima entre dos señales lógicas antes de que se genere una nueva interrupción. Condition Tipo de dato: aiotrigg Especifica cómo HighValue y LowValue definen la condición que debe cumplirse: Valor Constante simbólica Comentario 1 AIO_ABOVE_HIGH La señal genera interrupciones si se encuentra por encima del valor máximo especificado 2 AIO_BELOW_HIGH La señal genera interrupciones si se encuentra por debajo del valor máximo especificado 3 AIO_ABOVE_LOW La señal genera interrupciones si se encuentra por encima del valor mínimo especificado 4 AIO_BELOW_LOW La señal genera interrupciones si se encuentra por debajo del valor mínimo especificado 5 AIO_BETWEEN La señal genera interrupciones si se encuentra entre los valores mínimo y máximo especificados 6 AIO_OUTSIDE La señal genera interrupciones si se encuentra por debajo del valor mínimo especificado o por encima del valor máximo especificado 7 AIO_ALWAYS La señal siempre genera interrupciones HighValue Tipo de dato: num El valor lógico de límite máximo utilizado para definir la condición.73 ISignalAI . El único momento en el que una interrupción segura se desecha es cuando la cola de interrupciones está llena. por ejemplo el traslado del PP a main.Interrupciones a partir de una señal analógica de entrada Continuación cuando se inicia de nuevo en el modo continuo. debe ser mayor que el valor especificado en DeltaValue para que se genere una nueva interrupción. Reservados todos los derechos. . LowValue Tipo de dato: num El valor lógico de límite mínimo utilizado para definir la condición. El valor actual de la señal. Continúa en la página siguiente 3HAC16581-5 Revisión: L 181 © Copyright 2004-2011 ABB. [\DPos] Tipo de dato: switch Especifica que sólo las diferencias positivas entre señales lógicas suponen la generación de nuevas interrupciones. La interrupción no sobrevive al restablecimiento del programa.

Interrupciones a partir de una señal analógica de entrada Continuación [\DNeg] Tipo de dato: switch Especifica que sólo las diferencias negativas entre señales lógicas suponen la generación de nuevas interrupciones. Si el nuevo valor leído satisface los valores especificados en HighValue. Si no se utiliza el argumento \DPos ni el argumento \DNeg tanto las diferencias positivas como las negativas suponen la generación de nuevas interrupciones. no se produce ninguna interrupción. Interrupt Tipo de dato: intnum La identidad de la interrupción. se guarda y se utiliza posteriormente como valor de referencia para la condición DeltaValue. se compara el valor de la señal con HighValue y LowValue según el valor de Condition y teniendo en cuenta el valor de DeltaValue para decidir si debe generarse o no una interrupción. cada vez que se muestre la señal. siempre y cuando la diferencia entre las señales cumpla el argumento especificado (en cualquier sentido. La interrupción debe estar ya conectada a una rutina TRAP mediante la instrucción CONNECT. . el valor de ésta se lee. la ejecución del programa continúa a partir del punto en el que se produjo la interrupción. no en el momento de la suscripción de la interrupción.1 Instrucciones 1. independientemente del modificador \DPos o \DNeg especificado) El valor de referencia sólo se actualiza en el momento del muestreo. siempre y cuando se cumplan las condiciones siguientes: • Argumento Condition con valores especificados en HighValue y LowValue (dentro de límites) • Argumento DeltaValue (variación suficiente de la señal en cualquier sentido. En el momento de la suscripción de la interrupción si se ha especificado DeltaValue = 0. El valor de referencia almacenado para la condición DeltaValue se actualiza con un nuevo valor leído para su uso en los muestreos posteriores. \DPos0 o \DNeg). LowValue y Condition. pero su diferencia respecto del último valor de referencia almacenado es menor o igual al valor del argumento DeltaValue. También se genera una interrupción en el momento del muestreo que se hace para actualizar el valor de referencia. y tras el momento de la suscripción de la interrupción se muestrea la señal. Condiciones para la generación de interrupciones Antes de solicitar la suscripción a una interrupción. A continuación. Ejecución de programas En el momento en el que la señal satisface las condiciones especificadas (tanto Condition como DeltaValue). Reservados todos los derechos. se realiza una llamada a la rutina TRAP correspondiente. Una vez ejecutada la rutina. no se genera ninguna interrupción (argumento \DPos o \DNeg). Si la diferencia entre las señales no se produce en el sentido especificado. Continúa en la página siguiente 182 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.73 ISignalAI .

Si el modificador \Single (interrupción cíclica) no se utiliza. Se realiza una comparación entre el valor actual de la señal y el último valor de referencia almacenado para decidir si debe generarse una interrupción o no. Reservados todos los derechos.73 ISignalAI . sólo se genera una interrupción como máximo. se realiza una nueva prueba con las condiciones especificadas (tanto Condition como DeltaValue) con cada muestreo del valor de la señal. .Interrupciones a partir de una señal analógica de entrada Continuación Si se utiliza el modificador \Single. Condición para la generación de una interrupción en el momento de la suscripción Muestreo antes de la suscripción de la interrupción RefValue:=CurrentValue Suscripción de False la interrupción CurrentValue comprobado respecto de Condition HighValue y LowValue True False DeltaValue = 0 True Se genera una interrupción Continue xx0500002165_es Continúa en la página siguiente 3HAC16581-5 Revisión: L 183 © Copyright 2004-2011 ABB.1 Instrucciones 1.

Reservados todos los derechos.73 ISignalAI .RefValue) > DeltaValue False True RefValue: = CurrentValue Continuar xx0500002166_es Continúa en la página siguiente 184 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. .1 Instrucciones 1.RefValue) > DeltaValue False True Se especifica DPos y CurrentValue .CurrentValue) > DeltaValue False RefValue: = CurrentValue Se genera una interrupción ABS(CurrentValue .RefValue) > DeltaValue False True Se especifica DNeg y RefValue .Interrupciones a partir de una señal analógica de entrada Continuación Condición para la generación de una interrupción con cada muestreo a partir del momento de la suscripción New Sample False CurrentValue comprobado respecto de Condition HighValue y LowValue True True No se especifica DPos ni DNeg y ABS(CurrentValue .

ya que la diferencia entre las señales es inferior a DeltaValue. sig1int. AIO_BETWEEN. ya que el valor de la señal se encuentra entre HighValue y LowValue y la diferencia entre las señales respecto del muestreo 1 es superior a DeltaValue.1 Instrucciones 1.0. . el 4 ni el 5 generan interrupciones. Continúa en la página siguiente 3HAC16581-5 Revisión: L 185 © Copyright 2004-2011 ABB. porque la diferencia entre las señales respecto del muestreo 6 es inferior a DeltaValue. El muestreo 2 genera una interrupción. Los muestreos del 7 al 10 no generan ninguna interrupción. Reservados todos los derechos. El muestreo 12 no genera ninguna interrupción. El muestreo 1 genera una interrupción. Ni el muestreo 3. ya que el valor de la señal se encuentra entre HighValue y LowValue y la diferencia entre las señales respecto del muestreo 0 es superior a DeltaValue.73 ISignalAI . El muestreo 6 genera una interrupción. 2.1. porque la señal se encuentra por encima de HighValue.2. porque la diferencia entre las señales respecto del muestreo 6 es igual a DeltaValue. El muestreo 11 no genera ninguna interrupción. 6.Interrupciones a partir de una señal analógica de entrada Continuación Ejemplo 1 de generación de interrupciones Valor lógico de la señal HighValue Signal Value LowValue 0 1 2 3 4 5 6 7 8 9 10 11 Tiempo de solicitud de suscripción de la interrupción Almacenamiento del valor de referencia 12 Muestreos xx0500002167_es Suponiendo que la interrupción se solicita entre el muestreo 0 y el 1. 1. la instrucción siguiente da lugar a los resultados siguientes: ISignalAI ai1.

0.Interrupciones a partir de una señal analógica de entrada Continuación Ejemplo 2 de generación de interrupciones Valor lógico de la señal HighValue Signal Value LowValue 0 1 2 3 4 5 6 7 8 9 10 11 12 Muestreos Tiempo de solicitud de suscripción de la interrupción Almacenamiento del valor de referencia xx0500002168_es Suponiendo que la interrupción se solicita entre el muestreo 0 y el 1. ya que la señal se encuentra dentro de los límites y el valor absoluto de la diferencia entre el valor actual y el último valor de referencia almacenado es superior a 1. Reservados todos los derechos.2. El muestreo 6 genera una interrupción. 6. . ya que el valor de la señal se encuentra entre HighValue y LowValue y la diferencia entre las señales en sentido positivo respecto del muestreo 2 es superior a DeltaValue. 1. 2. Continúa en la página siguiente 186 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. No se genera ninguna interrupción porque las variaciones de la señal se producen en sentido negativo.0 \DPos.1 Instrucciones 1. AIO_BETWEEN.1. sig1int.73 ISignalAI . la instrucción siguiente da lugar a los resultados siguientes: ISignalAI ai1. Se almacena un nuevo valor de referencia en los muestreos 1 y 2.

1. 6.0 El muestreo 8 genera una interrupción.2.0 \DPos. .1 Instrucciones 1. ya que la señal se encuentra dentro de los límites y el valor absoluto de la diferencia entre el valor actual y el último valor de referencia almacenado es superior a 1. la instrucción siguiente da lugar a los resultados siguientes: ISignalAI \Single. 2. ai1. AIO_OUTSIDE. Se almacena un nuevo valor de referencia en el muestreo 7. Reservados todos los derechos. sig1int. 1.73 ISignalAI . ya que el valor de la señal se encuentra por encima de HighValue y la diferencia en sentido positivo entre las señales respecto del muestreo 7 es superior a DeltaValue.Interrupciones a partir de una señal analógica de entrada Continuación Ejemplo 3 de generación de interrupciones Valor lógico de la señal HighValue Signal Value LowValue 0 1 2 3 4 5 6 7 8 9 10 11 Tiempo de solicitud de suscripción de la interrupción Almacenamiento del valor de referencia 12 Muestreos xx0500002169_es Suponiendo que la interrupción se solicita entre el muestreo 0 y el 1. Continúa en la página siguiente 3HAC16581-5 Revisión: L 187 © Copyright 2004-2011 ABB.

1. la instrucción siguiente da lugar a los resultados siguientes: ISignalAI ai1. Si el valor analógico presenta ruido. utilice en DeltaValue un nivel superior a 0. es posible que se generen muchas interrupciones.2. A partir de ese momento. AIO_ALWAYS.0 \DPos. Para evitar la generación de interrupciones para pequeños cambios del valor de la entrada analógica. no se genera ninguna interrupción hasta que el cambio del valor analógico sea superior al valor especificado para DeltaValue. ya que la diferencia entre las señales en sentido positivo respecto del muestreo 2 es superior a DeltaValue. Los muestreos 7 y 8 generan una interrupción. Reservados todos los derechos. .73 ISignalAI . sig1int. 2.0 El muestreo 6 genera una interrupción. 6. se genera una interrupción para cada variación en el valor analógico que cumpla la condición especificada al solicitar la suscripción de la interrupción. ya que la señal se encuentra dentro de los límites y el valor absoluto de la diferencia entre el valor actual y el último valor de referencia almacenado es superior a 1. ya que la diferencia entre las señales en sentido positivo respecto del muestreo anterior es superior a DeltaValue. Continúa en la página siguiente 188 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Interrupciones a partir de una señal analógica de entrada Continuación Ejemplo 4 de generación de interrupciones Valor lógico de la señal HighValue Signal Value LowValue 0 1 2 3 4 5 6 7 8 9 10 11 Tiempo de solicitud de suscripción de la interrupción Almacenamiento del valor de referencia 12 Muestreos xx0500002170_es Suponiendo que la interrupción se solicita entre el muestreo 0 y el 1.0 Gestión de errores Si se produce la suscripción de una interrupción para una señal analógica de entrada. ya que la señal se encuentra dentro de los límites y el valor absoluto de la diferencia entre el valor actual y el último valor de referencia almacenado es superior a 1. incluso a pesar de que sólo varíen uno o dos bits del valor analógico. Se almacena un nuevo valor de referencia en los muestreos 1 y 2. Se almacena un nuevo valor de referencia en los muestreos 11 y 12.1.1 Instrucciones 1.

' [ Condition ':=' ] <expression (IN) of aiotrigg> '. HighValue debe ser superior a LowValue. Reservados todos los derechos.Condición de disparo con E/S analógica en la página 1169 Interrupción a partir de una señal analógica ISignalAO .Interrupciones a partir de una señal de salida analógica de salida en la página 190 Interrupción a partir de una señal digital de ISignalDI .' [ DeltaValue ':=' ] <expression (IN) of num> [['\'DPos] | [ '\' DNeg] '.' Información relacionada Para obtener más información sobre Consulte Resumen de interrupciones Technical reference manual .Identidad de interrupción en la página 1212 Parámetros del sistema relacionados (filtro) Manual de referencia técnica . Sintaxis ISignalAI [ '\' Single ] | [ '\' SingleSafe ] '. • ERR_AO_LIM si el argumento programado HighValue o LowValue para la señal analógica de entrada especificada Signal está fuera de límites.Interrupciones a partir de una sesalida ñal digital de salida en la página 197 Más información sobre la gestión de inte.' [ Signal ':=' ] <variable (VAR) of signalai> '.Solicita interrupciones a partir de entrada una señal digital de entrada en la página 194 Interrupción a partir de una señal digital de ISignalDO .RAPID overview.73 ISignalAI . DeltaValue debe ser 0 o un valor positivo.' [ LowValue ':=' ] <expression (IN) of num> '.Interrupciones Identidad de interrupción intnum .Interrupciones a partir de una señal analógica de entrada Continuación Pueden generarse los errores recuperables siguientes.Technical reference manual . sección IOsignals 3HAC16581-5 Revisión: L 189 © Copyright 2004-2011 ABB.'] [ Interrupt ':=' ] <variable (VAR) of intnum> '.1 Instrucciones 1.Interrupciones Definición de constantes aiotrigg . Limitaciones Los argumentos HighValue y LowValue deben estar dentro del rango: valor lógico máximo y valor lógico mínimo definidos para la señal.RAPID overview.Parámetros del sistema. Las limitaciones de la identidad de la interrupción son las mismas que en el caso de ISignalDI. . El error puede ser gestionado en un gestor de errores.' [ HighValue ':=' ] <expression (IN) of num> '. La variable de sistema ERRNO cambia a: • ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S. sección Resumen sobre RAPID . rrupciones sección Características básicas .

ao1.5 y cuando la diferencia absoluta de la señal respecto del valor de referencia almacenado sea superior a 0.5. Ejemplo 2 ISignalAO ao1. consulte la descripción del argumento Single. Se solicita una interrupción que debe producirse cada vez que el valor lógico de la señal de salida analógica ao1 sea inferior a 0. Si se utiliza el argumento Single.5 o superior a 1. Reservados todos los derechos. AIO_BETWEEN.1. sig1int.74 ISignalAO .Interrupciones a partir de una señal analógica de salida Utilización ISignalAO (Interrupt Signal Analog Output) se utiliza para solicitar y activar interrupciones a partir de una señal analógica de salida. AIO_BETWEEN.5.5 y cuando la diferencia absoluta de la señal respecto del valor de referencia almacenado anteriormente sea superior a 0. 1. se realiza una llamada a la rutina TRAP iroutine1. sig1int. 0.5. 0.1.5.5. Ejemplo 3 ISignalAO ao1. Argumentos ISignalAO [\Single] | [\SingleSafe] Signal Condition HighValue LowValue DeltaValue[\DPos] | [\DNeg] Interrupt [\Single] Tipo de dato: switch Especifica si la interrupción debe producirse una sola vez o de forma cíclica.5 y 1. .5. 0. Una interrupción segura no puede ponerse en reposo con la instrucción ISleep. la interrupción se produce como máximo una sola vez.1 Instrucciones 1. Solicita una interrupción que debe producirse la primera vez que el valor lógico de la señal analógica de salida ao1 se encuentre entre 0. 0. El evento de interrupción segura se almacena en la cola en caso de paro del programa y ejecución paso a paso y Continúa en la página siguiente 190 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. 0. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ISignalAO.Interrupciones a partir de una señal analógica de salida 1. En este caso. PROC main() CONNECT sig1int WITH iroutine1. Ejemplo 1 VAR intnum sig1int. 1.5. AIO_OUTSIDE.74 ISignalAO .1.1. sig1int. Solicita una interrupción que debe producirse cada vez que el valor lógico de la señal de salida analógica ao1 se encuentre entre 0. se genera una interrupción cada vez que se cumpla la condición. Para la definición de única. Si se omiten los argumentos Single y SingleSafe.5 y 1. ISignalAO \Single. 0. 1. [\SingleSafe] Tipo de dato: switch Especifica que la interrupción es única y segura.

Signal Tipo de dato: signalao El nombre de la señal a partir de la cual deben generarse las interrupciones. Reservados todos los derechos. La interrupción no sobrevive al restablecimiento del programa. Continúa en la página siguiente 3HAC16581-5 Revisión: L 191 © Copyright 2004-2011 ABB. El valor actual de la señal. LowValue Tipo de dato: num El valor lógico de límite mínimo utilizado para definir la condición. Condition Tipo de dato: aiotrigg Especifica cómo HighValue y LowValue definen la condición que debe cumplirse: Valor Constante simbólica Comentario 1 AIO_ABOVE_HIGH La señal genera interrupciones si se encuentra por encima del valor máximo especificado 2 AIO_BELOW_HIGH La señal genera interrupciones si se encuentra por debajo del valor máximo especificado 3 AIO_ABOVE_LOW La señal genera interrupciones si se encuentra por encima del valor mínimo especificado 4 AIO_BELOW_LOW La señal genera interrupciones si se encuentra por debajo del valor mínimo especificado 5 AIO_BETWEEN La señal genera interrupciones si se encuentra entre los valores mínimo y máximo especificados 6 AIO_OUTSIDE La señal genera interrupciones si se encuentra por debajo del valor mínimo especificado o por encima del valor máximo especificado 7 AIO_ALWAYS La señal siempre genera interrupciones HighValue Tipo de dato: num El valor lógico de límite máximo utilizado para definir la condición. debe ser mayor que el valor especificado en DeltaValue para que se genere una nueva interrupción. . [\DPos] Tipo de dato: switch Especifica que sólo las diferencias positivas entre señales lógicas suponen la generación de nuevas interrupciones. DeltaValue Tipo de dato: num Define la diferencia mínima entre dos señales lógicas antes de que se genere una nueva interrupción. En este caso se genera un error. El único momento en el que una interrupción segura se desecha es cuando la cola de interrupciones está llena. por ejemplo el traslado del PP a main.1 Instrucciones 1. la interrupción se ejecuta. comparado con el valor de referencia almacenado anteriormente.74 ISignalAO .Interrupciones a partir de una señal analógica de salida Continuación cuando se inicia de nuevo en el modo continuo.

La interrupción debe estar ya conectada a una rutina TRAP mediante la instrucción CONNECT. El error puede ser gestionado en un gestor de errores. Si no se utilizan los argumentos \DPos ni \DNeg. Gestión de errores Pueden generarse los errores recuperables siguientes. DeltaValue debe ser 0 o un valor positivo. La variable de sistema ERRNO cambia a: ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S.1 Instrucciones 1.Interrupciones a partir de una señal analógica de salida Continuación [\DNeg] Tipo de dato: switch Especifica que sólo las diferencias negativas entre señales lógicas suponen la generación de nuevas interrupciones. tanto las diferencias positivas como las negativas suponen la generación de nuevas interrupciones. ERR_AO_LIM si el argumento programado HighValue o LowValue para la señal analógica de salida especificada Signal está fuera de límites. Interrupt Tipo de dato: intnum La identidad de la interrupción. Continúa en la página siguiente 192 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos. Ejecución de programas Consulte la instrucción ISignalAI para obtener más información sobre: • Ejecución de programas • Condiciones para la generación de interrupciones • Más ejemplos Los principios en los que se basa ISignalAO son los mismos que se aplican a ISignalAI. Limitaciones Los argumentos HighValue y LowValue deben estar dentro del rango: valor lógico máximo y valor lógico mínimo definidos para la señal.74 ISignalAO . Las limitaciones de la identidad de la interrupción son las mismas que en el caso de ISignalDO. HighValue debe ser superior a LowValue. .

Solicita interrupciones a partir de entrada una señal digital de entrada en la página 194 Interrupción a partir de una señal digital de ISignalDO .’ Información relacionada Para obtener más información sobre Consulte Resumen de interrupciones Technical reference manual . Reservados todos los derechos.RAPID overview.Interrupciones a partir de una señal analógica de salida Continuación Sintaxis ISignalAO [ ’\’ Single ] | [ ’\’ SingleSafe ] ’.1 Instrucciones 1.’ [ DeltaValue’:=’ ]<expression (IN) of num> [[’\’DPos] | [ ’\’DNeg] ’.Manual de referencia de RAPID .Interrupciones a partir de una salida señal digital de salida en la página 197 Más información sobre la gestión de interrup.Condición de disparo con E/S analógica en la página 1169 Interrupción a partir de una señal analógica ISignalAI .Identidad de interrupción en la página 1212 Parámetros del sistema relacionados (filtro) Manual de referencia técnica .Parámetros del sistema.74 ISignalAO .’ [ Condition’:=’ ]<expression (IN) of aiotrigg>’.Interrupciones Definición de constantes aiotrigg .’ [ HighValue’:=’ ]<expression (IN) of num>’.’ [ Signal’:=’ ]<variable (VAR) of signalao>’.Interrupciones Identidad de interrupción intnum .’ [ LowValue’:=’ ]<expression (IN) of num>’. . sección IOsignals 3HAC16581-5 Revisión: L 193 © Copyright 2004-2011 ABB. sección Características básicas .Interrupciones a partir de una sede entrada ñal analógica de entrada en la página 180 Interrupción a partir de una señal digital de ISignalDI . sección Resumen sobre RAPID .Descripción ciones general de RAPID.’] [ Interrupt’:=’ ]<variable (VAR) of intnum>’.

la interrupción se produce como máximo una sola vez. . Argumentos ISignalDI [ \Single] | [ \SingleSafe] Signal TriggValue Interrupt [ \Single ] Tipo de dato: switch Especifica si la interrupción debe producirse una sola vez o de forma cíclica.1. se realiza una llamada a la rutina TRAP iroutine1.sig1int. La interrupción no sobrevive al restablecimiento del programa. Para la definición de única.sig1int.1 Instrucciones 1. El único momento en el que una interrupción segura se desecha es cuando la cola de interrupciones está llena. di1. Si se omiten los argumentos Single y SingleSafe. Una interrupción segura no puede ponerse en reposo con la instrucción ISleep. Continúa en la página siguiente 194 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. [ \SingleSafe ] Tipo de dato: switch Especifica que la interrupción es única y segura. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ISignalDI. Reservados todos los derechos. por ejemplo el traslado del PP a main. Solicita una interrupción que debe producirse cada vez que la señal digital de entrada di1 cambie a 1. ISignalDI di1. la interrupción se ejecuta. Ejemplo 1 VAR intnum sig1int.Solicita interrupciones a partir de una señal digital de entrada Utilización ISignalDI (Interrupt Signal Digital In) se utiliza para solicitar y activar interrupciones a partir de una señal digital de entrada.1.sig1int.0. Ejemplo 2 ISignalDI di1. Si se utiliza el argumento Single. Ejemplo 3 ISignalDI \Single. En este caso se genera un error. consulte la descripción del argumento Single. El evento de interrupción segura se almacena en la cola en caso de paro del programa y ejecución paso a paso y cuando se inicia de nuevo en el modo continuo. PROC main() CONNECT sig1int WITH iroutine1. se genera una interrupción cada vez que se cumpla la condición.75 ISignalDI .Solicita interrupciones a partir de una señal digital de entrada 1. En este caso. Solicita una interrupción que debe producirse sólo la primera vez que la señal digital de entrada di1 cambie a 1. Solicita una interrupción que debe producirse cada vez que la señal digital de entrada di1 cambie a 0.75 ISignalDI .

El valor se especifica como 0 ó 1 o como un valor simbólico (por ejemplo high/low). El error puede ser gestionado en un gestor de errores.Solicita interrupciones a partir de una señal digital de entrada Continuación Signal Tipo de dato: signaldi El nombre de la señal a partir de la cual deben generarse las interrupciones. se realiza una llamada a la rutina TRAP correspondiente.75 ISignalDI . Las interrupciones de una señal digital de entrada a partir del nivel de señal 1 se ilustran en la figura siguiente. .1 Instrucciones 1. la ejecución del programa continúa a partir del punto en el que se produjo la interrupción. 1 0 Valor lógico de la señal Muestreos Tiempo de solicitud de suscripción de la interrupción Tiempo de solicitud de suscripción de la interrupción 1 0 Valor lógico de la señal Muestreos xx0500002189_es Gestión de errores Pueden generarse los errores recuperables siguientes. Si la señal cambia al valor especificado antes de la solicitud de la interrupción. La variable de sistema ERRNO cambia a: ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S. Ejecución de programas En el momento en el que la señal recibe el valor especificado. Reservados todos los derechos. Una vez ejecutada la rutina. Interrupt Tipo de dato: intnum La identidad de la interrupción. La interrupción debe estar ya conectada a una rutina TRAP mediante la instrucción CONNECT. no se produce ninguna interrupción. La señal se dispara en el momento del cambio a 0 ó 1. Continúa en la página siguiente 3HAC16581-5 Revisión: L 195 © Copyright 2004-2011 ABB. TriggValue Tipo de dato: dionum El valor al que debe cambiar la señal para que se produzca la interrupción. En TriggValue es posible usar el valor 2 o el valor simbólico edge para la generación de interrupciones tanto en el flanco positivo (0 -> 1) como en el flanco negativo (1 -> 0).

VAR intnum sig1int. 1.RAPID overview. las instrucciones iniciales se mantienen fuera del flujo principal del programa.’ [ Signal ’:=’ ] < variable (VAR) of signaldi > ’.1 Instrucciones 1. 1. ENDPROC La interrupción se elimina al final del programa y se activa de nuevo..Solicita interrupciones a partir de una señal digital de entrada Continuación Limitaciones No es posible utilizar más de una vez la identidad de la interrupción sin eliminarla previamente.75 ISignalDI . es importante recordar que la interrupción permanece inactiva durante un periodo breve. ISignalDI di1. sección Características básicas .’ Información relacionada Para obtener más información so. IDelete sig1int.Interrupciones Interrupción a partir de una señal de salida ISignalDO . . PROC main () CONNECT sig1int WITH iroutine1. ISignalDI di1.Interrupciones a partir de una señal digital de salida en la página 197 Más información sobre la gestión de interrupciones Technical reference manual . VAR intnum sig1int. En este caso.Interrupciones Identidad de interrupción intnum . ..Identidad de interrupción en la página 1212 196 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.’ [ Interrupt’ :=’ ] < variable (VAR) of intnum > ’. sig1int. sig1int. WHILE TRUE DO . las interrupciones deben tratarse de la forma mostrada.’ [ TriggValue’ :=’ ] < expression (IN) of dionum > ’.RAPID overview. con una de las alternativas siguientes. Sintaxis ISignalDI [ ’\’ Single ] | [ ’\’ SingleSafe ] ’.. Reservados todos los derechos. Por tanto.Consulte bre Resumen de interrupciones Technical reference manual . ENDWHILE ENDPROC Al principio del programa se produce la activación de todas las interrupciones.. sección Resumen sobre RAPID . PROC main () CONNECT sig1int WITH iroutine1. En este caso.

do1.1 Instrucciones 1. Solicita una interrupción que debe producirse cada vez que la señal de salida digital do1 cambie a 0. la interrupción se ejecuta. Si se omiten los argumentos Single y SingleSafe.0.sig1int.1. En este caso se genera un error. [ \SingleSafe ] Tipo de dato: switch Especifica que la interrupción es única y segura.1. la interrupción se produce como máximo una sola vez. consulte la descripción del argumento Single. La interrupción no sobrevive al restablecimiento del programa.76 ISignalDO . se realiza una llamada a la rutina TRAP iroutine1.Interrupciones a partir de una señal digital de salida 1. . Una interrupción segura no puede ponerse en reposo con la instrucción ISleep. Ejemplo 2 ISignalDO do1. Si se utiliza el argumento Single. Reservados todos los derechos. se genera una interrupción cada vez que se cumpla la condición. En este caso.Interrupciones a partir de una señal digital de salida Utilización ISignalDO (Interrupt Signal Digital Out) se utiliza para solicitar y activar interrupciones a partir de una señal digital de salida. Ejemplo 1 VAR intnum sig1int. Para la definición de única.sig1int.76 ISignalDO . ISignalDO do1. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ISignalDO. El evento de interrupción segura se almacena en la cola en caso de paro del programa y ejecución paso a paso y cuando se inicia de nuevo en el modo continuo. Solicita una interrupción que debe producirse cada vez que la señal de salida digital do1 cambie a 1. Ejemplo 3 ISignalDO\Single. El único momento en el que una interrupción segura se desecha es cuando la cola de interrupciones está llena. Continúa en la página siguiente 3HAC16581-5 Revisión: L 197 © Copyright 2004-2011 ABB.sig1int. por ejemplo el traslado del PP a main. PROC main() CONNECT sig1int WITH iroutine1. Solicita una interrupción que debe producirse sólo la primera vez que la señal de salida digital do1 cambie a 1. Argumentos ISignalDO [ \Single ] | [ \SingleSafe ] Signal TriggValue Interrupt [ \Single ] Tipo de dato: switch Especifica si la interrupción debe producirse una sola vez o de forma cíclica.

La variable de sistema ERRNO cambia a: ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S. Reservados todos los derechos. Una vez ejecutada la rutina. Interrupt Tipo de dato: intnum La identidad de la interrupción. El valor se especifica como 0 ó 1 o como un valor simbólico (por ejemplo high/low). no se produce ninguna interrupción. la ejecución del programa continúa a partir del punto en el que se produjo la interrupción. La señal se dispara en el momento del cambio a 0 ó 1.Interrupciones a partir de una señal digital de salida Continuación Signal Tipo de dato: signaldo El nombre de la señal a partir de la cual deben generarse las interrupciones. Si la señal cambia al valor especificado antes de la solicitud de la interrupción. 0 ó 1. . La interrupción debe estar ya conectada a una rutina TRAP mediante la instrucción CONNECT. Las interrupciones de una señal digital de salida a partir del nivel de señal 1 se ilustran en la figura siguiente. se realiza una llamada a la rutina TRAP correspondiente. En TriggValue es posible usar el valor 2 o el valor simbólico edge para la generación de interrupciones tanto en el flanco positivo (0 -> 1) como en el flanco negativo (1 -> 0).76 ISignalDO . TriggValue Tipo de dato: dionum El valor al que debe cambiar la señal para que se produzca la interrupción. El error puede ser gestionado en un gestor de errores. Continúa en la página siguiente 198 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Ejecución de programas En el momento en el que la señal recibe el valor especificado. 1 0 Valor lógico de la señal Muestreos Tiempo de solicitud de suscripción de la interrupción Tiempo de solicitud de suscripción de la interrupción 1 0 Valor lógico de la señal Muestreos xx0500002190_es Gestión de errores Pueden generarse los errores recuperables siguientes.1 Instrucciones 1.

Interrupciones Interrupción a partir de una señal de entrada ISignalDI . Por tanto. En este caso.’ Información relacionada Para obtener más información sobre Consulte Resumen de interrupciones Technical reference manual .Solicita interrupciones a partir de una señal digital de entrada en la página 194 Más información sobre la gestión de interrup. PROC main () CONNECT sig1int WITH iroutine1.Technical reference manual . ENDPROC La interrupción se elimina al final del programa y se activa de nuevo. ISignalDO do1.Interrupciones Identidad de interrupción intnum .. sig1int. Reservados todos los derechos. con una de las alternativas siguientes. ENDWHILE ENDPROC Al principio del programa se produce la activación de todas las interrupciones. .’ [ Interrupt’ :=’ ] < variable (VAR) of intnum > ’. Sintaxis ISignalDO [ ’\’ Single ] | [ ’\’ SingleSafe ] ’.76 ISignalDO . VAR intnum sig1int.1 Instrucciones 1. las interrupciones deben tratarse de la forma mostrada. 1. 1.’ [ TriggValue’ :=’ ] < expression (IN) of dionum > ’. VAR intnum sig1int.. sección Resumen sobre RAPID . IDelete sig1int. es importante recordar que la interrupción permanece inactiva durante un periodo breve.Interrupciones a partir de una señal digital de salida Continuación Limitaciones No es posible utilizar más de una vez la identidad de la interrupción sin eliminarla previamente.RAPID overview.Identidad de interrupción en la página 1212 3HAC16581-5 Revisión: L 199 © Copyright 2004-2011 ABB. PROC main () CONNECT sig1int WITH iroutine1. WHILE TRUE DO . sección Características básicas .’ [ Signal ’:=’ ] < variable (VAR) of signaldo > ’. En este caso. . ISignalDO do1..RAPID overciones view. sig1int.. las instrucciones iniciales se mantienen fuera del flujo principal del programa.

Ejemplo 1 VAR intnum sig1int. Si se utiliza el argumento Single. [ \SingleSafe ] Tipo de dato: switch Especifica que la interrupción es única y segura. se genera una interrupción cada vez que se cumpla la condición. consulte la descripción del argumento Single. Si se omiten los argumentos Single y SingleSafe. Para la definición de única.Solicita interrupciones de un grupo de señales digitales de entrada Utilización ISignalGI (Interrupt Signal Group Digital In) se utiliza para solicitar y activar interrupciones a partir de un grupo de señales digitales de entrada. la interrupción se produce como máximo una sola vez. El evento de interrupción segura se almacena en la cola en caso de paro del programa y ejecución paso a paso y cuando se inicia de nuevo en el modo continuo. por ejemplo el traslado del PP a main. En este caso se genera un error. la interrupción se ejecuta. El único momento en el que una interrupción segura se desecha es cuando la cola de interrupciones está llena. Interrupt Tipo de dato: intnum La identidad de la interrupción. PROC main() CONNECT sig1int WITH iroutine1. Solicita una interrupción ante un cambio de valor de una señal de un grupo de entradas digitales. La interrupción no sobrevive al restablecimiento del programa. Signal Tipo de dato: signalgi El nombre de la señal de entrada de grupo a partir de la cual deben generarse las interrupciones.77 ISignalGI . Reservados todos los derechos.77 ISignalGI .1 Instrucciones 1. La interrupción debe estar ya conectada a una rutina TRAP mediante la instrucción CONNECT. .Solicita interrupciones de un grupo de señales digitales de entrada 1. Continúa en la página siguiente 200 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ISignalGI. ISignalGI gi1. Una interrupción segura no puede ponerse en reposo con la instrucción ISleep.sig1int. Argumentos ISignalGI [ \Single ] | [ \SingleSafe ] Signal Interrupt [ \Single ] Tipo de dato: switch Especifica si la interrupción debe producirse una sola vez o de forma cíclica.

No es posible utilizar más de una vez la identidad de la interrupción sin eliminarla previamente. con el fin de obtener la funcionalidad correcta al utilizar ISignalGI. se realiza una llamada a la rutina TRAP correspondiente. con una de las alternativas siguientes. es decir. El motivo es que los cambios de los bits individuales incluidos en la señal de grupo no se detectan simultáneamente en el sistema de robot. ISignalGI gi1. Si los bits de la señal de grupo cambian de valor con un retardo que está dentro de los valores especificados. Es necesario contar con conocimientos sobre cómo funciona la tarjeta de E/S. Si se generan varias interrupciones en los valores de entrada del grupo. No se posible usar una condición con valor numérico en la instrucción para especificar que debe producirse una interrupción si el valor cambia a ese valor específico. . las interrupciones deben tratarse de la forma mostrada. PROC main () CONNECT sig1int WITH iroutine1. Para evitar la generación de múltiples interrupciones para un solo cambio de señal de grupo. Las interrupciones se generan como interrupciones de bits.. ENDWHILE ENDPROC Continúa en la página siguiente 3HAC16581-5 Revisión: L 201 © Copyright 2004-2011 ABB. mediante la lectura del valor de la señal de grupo en el momento de la ejecución de la rutina TRAP. pueden generarse varias interrupciones. La variable de sistema ERRNO cambia a: ERR_NORUNUNIT Se ha perdido el contacto con la unidad. VAR intnum sig1int.1 Instrucciones 1. Gestión de errores Pueden generarse los errores recuperables siguientes. Limitaciones El número máximo de señales que pueden usarse con un grupo determinado es de 32. utilice en su lugar ISignalDI con una señal de muestreo que se activa cuando todos los bits de la señal de grupo están activados. WHILE TRUE DO . es posible definir un tiempo de filtro para la señal.77 ISignalGI . Si la señal cambia de valor antes de la solicitud de la interrupción. se generarán varias interrupciones. sig1int. no se produce ninguna interrupción.. Reservados todos los derechos. Una vez ejecutada la rutina. Al cambiar una señal de grupo de entradas digitales a un valor. Por tanto.Solicita interrupciones de un grupo de señales digitales de entrada Continuación Ejecución de programas En el momento en el que la señal de grupo cambia de valor. Esta funcionalidad debe ser creada en el programa de usuario. El error puede ser gestionado en un gestor de errores. las interrupciones ante señales digitales de entrada individuales cambian dentro del grupo. la ejecución del programa continúa a partir del punto en el que se produjo la interrupción.

Parámetros del sistema.Consulte bre Resumen de interrupciones Technical reference manual ..1 Instrucciones 1.RAPID overview. ISignalGI gi1. VAR intnum sig1int..Identidad de interrupción en la página 1212 Tiempo de filtro Manual de referencia técnica .Solicita interrupciones de un grupo de señales digitales de entrada Continuación Al principio del programa se produce la activación de todas las interrupciones. Reservados todos los derechos. Sintaxis ISignalGI [ ’\’ Single ] | [ ’\’ SingleSafe ] ’. En este caso. las instrucciones iniciales se mantienen fuera del flujo principal del programa. PROC main () CONNECT sig1int WITH iroutine1. . En este caso. sig1int.Solicita interrupciones de un grupo de señales digitales de salida en la página 203 Más información sobre la gestión de Technical reference manual . tipo Signal 202 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. ENDPROC La interrupción se elimina al final del programa y se activa de nuevo. IDelete sig1int.Interrupciones Interrupción a partir de una señal de ISignalDI .RAPID overview.77 ISignalGI .’ Información relacionada Para obtener más información so.’ [ Interrupt’:=’ ] < variable (VAR) of intnum > ’. .Interrupciones Identidad de interrupción intnum .Solicita interrupciones a partir de una seentrada ñal digital de entrada en la página 194 Interrupción a partir de señales de salida de grupo ISignalGO . es importante recordar que la interrupción permanece inactiva durante un periodo breve. Tema IO. sección Resumen sobre RAPID .’ [ Signal ’:=’ ] < variable (VAR) of signalgi > ’. secinterrupciones ción Características básicas .

Solicita interrupciones de un grupo de señales digitales de salida 1. por ejemplo el traslado del PP a main. En este caso se genera un error. La interrupción no sobrevive al restablecimiento del programa. Una interrupción segura no puede ponerse en reposo con la instrucción ISleep. La interrupción debe estar ya conectada a una rutina TRAP mediante la instrucción CONNECT. PROC main() CONNECT sig1int WITH iroutine1. Si se utiliza el argumento \Single.sig1int. Solicita una interrupción ante un cambio de valor de una señal de un grupo de salidas digitales. Continúa en la página siguiente 3HAC16581-5 Revisión: L 203 © Copyright 2004-2011 ABB. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ISignalGO. Si se omiten los argumentos Single y SingleSafe. Signal Tipo de dato: signalgo El nombre de la señal de salida de grupo a partir de la cual deben generarse las interrupciones.1 Instrucciones 1. El evento de interrupción segura se almacena en la cola en caso de paro del programa y ejecución paso a paso y cuando se inicia de nuevo en el modo continuo. . Ejemplo 1 VAR intnum sig1int.78 ISignalGO . ISignalGO go1.Solicita interrupciones de un grupo de señales digitales de salida Utilización ISignalGO (Interrupt Signal Group Digital Out) se utiliza para solicitar y activar interrupciones a partir de un grupo de señales digitales de salida. El único momento en el que una interrupción segura se desecha es cuando la cola de interrupciones está llena. [ \SingleSafe ] Tipo de dato: switch Especifica que la interrupción es única y segura. la interrupción se ejecuta. Reservados todos los derechos. consulte la descripción del argumento Single. Argumentos ISignalGO [ \Single ] | [ \SingleSafe ] Signal Interrupt [ \Single ] Tipo de dato: switch Especifica si la interrupción debe producirse una sola vez o de forma cíclica. Para la definición de única. se genera una interrupción cada vez que se cumpla la condición.78 ISignalGO . la interrupción se produce como máximo una sola vez. Interrupt Tipo de dato: intnum La identidad de la interrupción.

ISignalGO go1. Reservados todos los derechos. No se posible usar una condición con valor numérico en la instrucción para especificar que debe producirse una interrupción si el valor cambia a ese valor específico. El error puede ser gestionado en un gestor de errores. VAR intnum sig1int. WHILE TRUE DO . IDelete sig1int. sig1int. las interrupciones deben tratarse de la forma mostrada. es importante recordar que la interrupción permanece inactiva durante un periodo breve. sig1int. la ejecución del programa continúa a partir del punto en el que se produjo la interrupción.78 ISignalGO . ISignalGO go1. con una de las alternativas siguientes. No es posible utilizar más de una vez la identidad de la interrupción sin eliminarla previamente. La variable de sistema ERRNO cambia a: ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S. ENDWHILE ENDPROC Al principio del programa se produce la activación de todas las interrupciones. las instrucciones iniciales se mantienen fuera del flujo principal del programa. Limitaciones El número máximo de señales que pueden usarse con un grupo determinado es de 32. PROC main () CONNECT sig1int WITH iroutine1. Gestión de errores Pueden generarse los errores recuperables siguientes. se realiza una llamada a la rutina TRAP correspondiente.. no se produce ninguna interrupción. . . Esta funcionalidad debe ser creada en el programa de usuario.. PROC main () CONNECT sig1int WITH iroutine1. ENDPROC La interrupción se elimina al final del programa y se activa de nuevo.Solicita interrupciones de un grupo de señales digitales de salida Continuación Ejecución de programas En el momento en el que la señal de grupo cambia de valor. VAR intnum sig1int. Continúa en la página siguiente 204 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.1 Instrucciones 1... Si la señal cambia de valor antes de la solicitud de la interrupción. En este caso. Una vez ejecutada la rutina. Por tanto. En este caso. mediante la lectura del valor de la señal de grupo en el momento de la ejecución de la rutina TRAP.

1 Instrucciones 1.’ [ Signal ’:=’ ] < variable (VAR) of signalgo > ’.’ Información relacionada Para obtener más información sobre Consulte Resumen de interrupciones Technical reference manual . Reservados todos los derechos.Interrupciones a partir de una señal digital de salida en la página 197 Interrupción a partir de señales de entrada ISignalGI .Interrupciones Interrupción a partir de una señal de salida ISignalDO .Interrupciones Identidad de interrupción intnum .78 ISignalGO .’ [ Interrupt’:=’ ] < variable (VAR) of intnum > ’. sección Resumen sobre RAPID .RAPID overciones view.Solicita interrupciones de un grupo de señales digitales de salida Continuación Sintaxis ISignalGO [ ’\’ Single ] | [ ’\’ SingleSafe ] ’.Technical reference manual . .Identidad de interrupción en la página 1212 3HAC16581-5 Revisión: L 205 © Copyright 2004-2011 ABB.Solicita interrupciones de un grupo de grupo de señales digitales de entrada en la página 200 Más información sobre la gestión de interrup. sección Características básicas .RAPID overview.

Ejemplo 1 VAR intnum timeint.79 ISleep . 1. hasta que se reactive la interrupción mediante la instrucción IWatch. Argumentos ISleep Interrupt Interrupt Tipo de dato: intnum La variable (la identidad) de la interrupción. Durante el periodo en el que una interrupción está desactivada.. timeint. No se procesa ninguna interrupción generada mientras ISleep. ITimer 60. 30.79 ISleep . Más ejemplos A continuación aparecen más ejemplos de la instrucción ISleep. EXIT. TRAP check_serialch WriteBin ch1.Desactiva una interrupción 1. .. Reservados todos los derechos.. ISleep timeint. . Consulte también Más ejemplos en la página 206. Ejecución de programas Cualquier interrupción del tipo especificado que se genere después de ejecutar la instrucción se desecha sin ejecutar ninguna rutina TRAP. IWatch timeint. . Ejemplo 1 ISleep sig1int. IF ReadBin(ch1\Time:=5) < 0 THEN TPWrite "The serial communication is broken". buffer. ENDIF ENDTRAP Continúa en la página siguiente 206 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. sin ejecutar ninguna rutina TRAP. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción.. WriteBin ch1. su aparición no se detecta y se desecha.1 Instrucciones 1. buffer. PROC main() CONNECT timeint WITH check_serialch. Se desactiva la interrupción sig1int.Desactiva una interrupción Utilización ISleep(Interrupt Sleep) se utiliza para desactivar temporalmente una interrupción determinada.

la variable de sistema ERRNO cambia a ERR_INOISSAFE.Activar una interrupción en la página 214 Desactivación de todas las interrupcio. La rutina TRAP comprueba si la comunicación está funcionando. la variable de sistema ERRNO cambiará a ERR_UNKINO (consulte errnum .’ Información relacionada Para obtener más información sobre Consulte Resumen de interrupciones Technical reference manual . Estos errores pueden ser gestionados en un gestor de errores.79 ISleep . Si se está intentando desactivar temporalmente una interrupción segura con ISleep. si hay una comunicación en curso. sección Resumen sobre RAPID . no se permiten estas interrupciones.Desactiva una interrupción Continuación Se monitoriza la comunicación a través del canal serie ch1. Reservados todos los derechos.RAPID overview.Número de error en la página 1194). Si se desconoce el número de la interrupción. Sin embargo.IDisable . mediante interrupciones generadas cada 60 segundos. Gestión de errores No se permite ninguna interrupción que no se haya solicitado ni activado.Interrupciones Activación de interrupciones IWatch . Sintaxis ISleep [ Interrupt ‘:=’ ] < variable (VAR) of intnum > ‘.Cancela una interrupción en la página 129 3HAC16581-5 Revisión: L 207 © Copyright 2004-2011 ABB.Desactiva todas las interrupciones en nes la página 130 Cancelación de una interrupción IDelete . .1 Instrucciones 1.

se genera una interrupción cada vez que se alcanza el momento especificado. Consulte también Más ejemplos en la página 209. Una interrupción segura no puede ponerse en reposo con la instrucción ISleep. Continúa en la página siguiente 208 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Si se utiliza el argumento Single. Solicita una interrupción que debe producirse cíclicamente cada 60 segundos. El evento de interrupción segura se almacena en la cola en caso de paro del programa y ejecución paso a paso y cuando se inicia de nuevo en el modo continuo. Para la definición de única. esta instrucción puede utilizarse para comprobar el estado de los equipos periféricos una vez por minuto.Solicita una interrupción temporizada 1. . consulte la descripción del argumento Single.80 ITimer . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ITimer. 60. timeint.1 Instrucciones 1. PROC main() CONNECT timeint WITH iroutine1. Por ejemplo. Ejemplo 2 ITimer \Single.80 ITimer .Solicita una interrupción temporizada Utilización ITimer (Interrupt Timer) se utiliza para solicitar y activar una interrupción temporizada. la interrupción se ejecuta. Time Tipo de dato: num La cantidad de tiempo que debe transcurrir antes de que se produzca la interrupción. la interrupción se produce una sola vez. [ \SingleSafe ] Tipo de dato: switch Especifica que la interrupción es única y segura. Reservados todos los derechos. ITimer 60. Argumentos ITimer [ \Single ] | [ \SingleSafe ] Time Interrupt [ \Single ] Tipo de dato: switch Especifica si la interrupción debe producirse una sola vez o de forma cíclica. se realiza una llamada a la rutina TRAP iroutine1. Solicita una interrupción que debe producirse una vez cada 60 segundos. Si se omiten los argumentos Single y SingleSafe. Ejemplo 1 VAR intnum timeint. timeint. En este caso.

La rutina TRAP comprueba si la comunicación está funcionando. Más ejemplos A continuación aparecen más ejemplos de la instrucción ITimer..’ [ Time ’:=’ ] < expression (IN) of num >’. Limitaciones No es posible utilizar más de una vez la identidad de la interrupción sin eliminarla previamente..01 segundos. Ejecución de programas Se llama automáticamente a la rutina TRAP correspondiente en un momento determinado a partir de la solicitud de la interrupción. Una vez ejecutada la rutina. Si se ha definido Single o SingleSafe. Reservados todos los derechos. comienza un nuevo cálculo del tiempo a partir del momento en que se produce. TRAP check_serialch WriteBin ch1. . Consulte la instrucción ISignalDI. EXIT.’ [ Interrupt’ :=’ ] < variable (VAR) of intnum > ’. este tiempo no puede ser inferior a los 0.’ Continúa en la página siguiente 3HAC16581-5 Revisión: L 209 © Copyright 2004-2011 ABB. Sintaxis ITimer [ ’\’ Single ] | [ ’\’ SingleSafe ] ’. . buffer. 1. la ejecución del programa finaliza y aparece un mensaje de error. Ejemplo 1 VAR intnum timeint. PROC main() CONNECT timeint WITH check_serialch. Si la interrupción se produce de forma cíclica. El tiempo correspondiente para las interrupciones cíclicas es de 0. ITimer 60.1 Instrucciones 1.1 segundos. timeint. La interrupción debe estar ya conectada a una rutina TRAP mediante la instrucción CONNECT.Solicita una interrupción temporizada Continuación El valor se especifica en segundos. IF ReadBin(ch1\Time:=5) < 0 THEN TPWrite "The serial communication is broken".80 ITimer . mediante interrupciones generadas cada 60 segundos. Si no es así. la ejecución del programa continúa a partir del punto en el que se produjo la interrupción. Interrupt Tipo de dato: intnum La variable (la identidad) de la interrupción. ENDIF ENDTRAP Se monitoriza la comunicación a través del canal serie ch1.

Technical reference manual . .Interrupciones Más información sobre la gestión de interrup.1 Instrucciones 1. sección Resumen sobre RAPID . Reservados todos los derechos. sección Características básicas .Solicita una interrupción temporizada Continuación Información relacionada Para obtener más información sobre Consulte Resumen de interrupciones Technical reference manual .80 ITimer .RAPID overview.Interrupciones 210 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.RAPID overciones view.

CONNECT IntAdap WITH AdapTrp.Solicita una interrupción a partir del valor de una variable 1.1.3. VAR intnum IntAdap.cfg).25[.]..16667.16667.6667..adaptWd.*. PROC main() ! Setup the interrupt.6.adaptWd. IVarValue "sen1:".21.81 IVarValue .33333.5.*. esta instrucción puede utilizarse para obtener valores de volumen de cordón o valores de huecos de un sistema de seguimiento de cordón.12. LOCAL PERS num adptSpd{25}:=10.8. ! Start welding ArcL\On.2.3333.2.].tool\j\Track:=track.3.adaptSm.14. Por ejemplo.v100.2. The new value will be ! available in the PERS gp_value variable. LOCAL CONST num GAP_VARIABLE_NO:=11.z10. ! Connect to the sensor device "sen1:" (defined in sio.adaptSm. .z10.1.1 Instrucciones 1.2. The trap routine AdapTrp will be called ! when the gap variable with number ´GAP_VARIABLE_NO’ in the !sensor interface has been changed. SenDevice "sen1:".33333.4.5.18...1. LOCAL PERS num adptWfd{25}:=[2. ENDPROC Continúa en la página siguiente 3HAC16581-5 Revisión: L 211 © Copyright 2004-2011 ABB.Solicita una interrupción a partir del valor de una variable Utilización IVarValue (Interrupt Variable Value) se utiliza para solicitar y activar una interrupción cuando cambia al valor de una variable consultada a través de la interfaz serie de sensores.2.adaptWv.2. Ejemplo 1 LOCAL PERS num adptVlt{25}:=[1.v100.81 IVarValue ..20.2.adaptWv.1.23. gap_value.2. ArcL\On.2.3.6.4. PERS num gap_value.. Reservados todos los derechos..16.8..2. IntAdap. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IVarValue.tool\j\Track:=track.3. GAP_VARIABLE_NO.]..

81 IVarValue . ! Update active welddata PERS variable ‘adaptWd’ with new data ! from the arrays of predefined parameter arrays. no se genera ninguna interrupción. VarNo Tipo de dato: num El número de la variable a controlar. . Interrupt Tipo de dato: intnum La variable (la identidad) de la interrupción.weld_speed:=adptSpd{ArrInd}. !Scale the raw gap value received ArrInd:=ArrIndx(gap_value). Value Tipo de dato: num Una variable PERS que contendrá el nuevo valor de VarNo. La interrupción debe estar ya conectada a una rutina TRAP mediante la instrucción CONNECT.weld_voltage:=adptVlt{ArrInd}. Continúa en la página siguiente 212 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos. ENDTRAP Argumentos IVarValue device VarNo Value Interrupt [ \Unit ] [ \DeadBand ] device Tipo de dato: string El nombre del dispositivo de E/S configurado en sio. [ \Unit ] Tipo de dato: num El factor de escala por el que se multiplicará el valor de sensor de VarNo antes de la comprobación y antes del guardado en Value. The scaled gap ! value is used as index in the voltage. wirefeed and ! speed arrays. !Request a refresh of AW parameters using the new data i adaptWd ArcRefresh. adaptWd. [ \DeadBand ] Tipo de dato: num Si el valor de Varno devuelto por el sensor está dentro de +/. adaptWd.weld_wirefeed:=adptWfd{ArrInd}. adaptWd.1 Instrucciones 1.Solicita una interrupción a partir del valor de una variable Continuación TRAP AdapTrap VAR num ArrInd.cfg para el sensor utilizado.DeadBand.

Arc and arc sensor 3HAC16581-5 Revisión: L 213 © Copyright 2004-2011 ABB.’ Información relacionada Para obtener más información sobre Consulte Establecimiento de una conexión a un SenDevice .RAPID overview.’ [ Value ’:=’ ] < persistent (PERS) of num >’. Reservados todos los derechos.Interrupciones Más información sobre la gestión de interrupciones Technical reference manual .81 IVarValue .’ [ ’\’ Unit’ :=’ ] < expression (IN) of num >’.1 Instrucciones 1. ¡CUIDADO! Una frecuencia de interrupción demasiado elevada bloqueará toda la ejecución de RAPID. Una vez ejecutada la rutina. la ejecución del programa continúa a partir del punto en el que se produjo la interrupción.RAPID overview.Establece una conexión a un disposidispositivo de sensor tivo de sensor en la página 454 Resumen de interrupciones Technical reference manual . sección Resumen sobre RAPID . sección Características básicas .Solicita una interrupción a partir del valor de una variable Continuación Ejecución de programas Se llama automáticamente a la rutina TRAP correspondiente en un momento determinado a partir de la solicitud de la interrupción. Sintaxis IVarValue [ device ’:=’ ] < expression (IN) of string>’. Limitaciones No es posible utilizar la misma variable para una identidad de interrupción más de cinco veces sin eliminarla primero.’ [ Interrupt’ :=’ ] < variable (VAR) of intnum > ’.’ [ VarNo ’:=’ ] < expression (IN) of num >’.’ [ ’\’ DeadBand’ :=’ ] < expression (IN) of num > ’.Continuous application platform Optical Tracking Art Application manual .Interrupciones Optical Tracking Application manual . .

Consulte también Más ejemplos en la página 214. Más ejemplos A continuación aparecen más ejemplos de la instrucción IWatch.Activar una interrupción 1. PROC main() CONNECT sig1int WITH iroutine1. Ejecución de programas Vuelve a reactivar las interrupciones del tipo especificado. las interrupciones generadas durante el periodo en el que está vigente la instrucción ISleep no se procesan. Argumentos IWatch Interrupt Interrupt Tipo de dato: intnum La variable (la identidad) de la interrupción.82 IWatch .Activar una interrupción Utilización IWatch(Interrupt Watch) se utiliza para activar una interrupción que se ha solicitado anteriormente pero que ha sido desactivada mediante ISleep. El error puede ser gestionado en el gestor de errores. weldpart1. Continúa en la página siguiente 214 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.1 Instrucciones 1. Durante la ejecución de la rutina weldpart1.. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción IWatch. no se permite ninguna interrupción a partir de la señal di1. Sin embargo.1. Ejemplo 1 VAR intnum sig1int.. Ejemplo 1 IWatch sig1int.Número de error en la página 1194). . Gestión de errores No se permite utilizar con esta instrucción ninguna interrupción que no se haya solicitado anteriormente. .sig1int. Si se desconoce el número de la interrupción. ISignalDI di1. ISleep sig1int. IWatch sig1int. Reservados todos los derechos. la variable de sistema ERRNO cambia a ERR_UNKINO (consulte errnum .82 IWatch . Se activa la interrupción sig1int que fue desactivada anteriormente.

Activar una interrupción Continuación Sintaxis IWatch [ Interrupt ‘:=’ ] < variable (VAR) of intnum > ‘.82 IWatch .1 Instrucciones 1. Reservados todos los derechos. sección Resumen sobre RAPID . .Desactiva una interrupción en la página 206 3HAC16581-5 Revisión: L 215 © Copyright 2004-2011 ABB.Interrupciones Desactivación de una interrupción ISleep .RAPID overview.’ Información relacionada Para obtener más información sobre Consulte Resumen de interrupciones Technical reference manual .

Ejecución de programas Cuando se ejecuta esta instrucción.83 Etiqueta . • Cualquier nombre de dato dentro de la misma rutina El uso de una etiqueta supone la ocultación de los datos globales y las rutinas que tengan el mismo nombre dentro de la rutina en la que se define. next: La ejecución del programa continúa en la instrucción que sigue a la etiqueta next.Salta a otra instrucción en la página 123 216 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Ejemplo 1 GOTO next.83 Etiqueta . Reservados todos los derechos.Elementos básicos Trasladar la ejecución del programa a una etiqueta GOTO . Argumentos Label: Label Identifier El nombre que desea asignar a la línea.RAPID overview.. Sintaxis (EBNF) <identifier>’:’ Información relacionada Para obtener más información sobre Consulte Identificadores Technical reference manual . . Limitaciones La etiqueta no debe tener el mismo nombre que ninguno de los elementos siguientes: • Cualquier otra etiqueta dentro de la misma rutina. no ocurre nada. ..1 Instrucciones 1. sección Características básicas . Cuando se usa la instrucción GOTO . este nombre puede usarse para trasladar la ejecución del programa a otro punto dentro de la misma rutina. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción Label.Nombre de línea 1.Nombre de línea Utilización Labelse utiliza para asignar un nombre a una línea del programa.

Carga un módulo de programa durante la ejecución 1.MOD contiene referencias a PART_B.Carga un módulo de programa durante la ejecución Utilización Load se utiliza para cargar un módulo de programa en la memoria durante la ejecución.MOD" \CheckRef. diskhome \File:="PART_A. diskhome \File:="PART_B. Reservados todos los derechos. Load \Dynamic. Tanto los módulos cargados en modo estático como los cargados en modo dinámico se descargan al utilizar la instrucción UnLoad. . Ejemplo 1 Load \Dynamic. Los programas o módulos de sistema pueden cargarse en el modo estático (predeterminado) o en el modo dinámico. Si PART_A. Cargar el módulo de programa en modo dinámico.MOD". Modo estático En la tabla siguiente se describe cómo afectan las distintas operaciones a los programas o módulos de sistema cargados en el modo estático. Tipo de módulo Trasladar el puntero de progra.MOD.MOD.MOD. Si se usa \CheckRef en PART_A. se produciría un error de enlace y el módulo no se cargaría. El módulo de programa cargado se añade a los módulos que ya existen en la memoria de programa. puede usarse \CheckRef para comprobar si hay referencias no resueltas sólo cuando se carga el último módulo. Tipo de módulo Trasladar el puntero de progra. Carga en la memoria de programa el módulo PART_A.84 Load .Abrir un nuevo programa de ma a main desde el FlexPendant RAPID Módulo de programa No se ve afectado Descargado Módulo de sistema No se ve afectado No se ve afectado Modo dinámico En la tabla siguiente se describe cómo afectan las distintas operaciones a los programas o módulos de sistema cargados en el modo dinámico. Ejemplo 2 Load \Dynamic.Abrir un nuevo programa de ma a main desde el FlexPendant RAPID Módulo de programa Descargado Descargado Módulo de sistema Descargado Descargado Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción Load. Continúa en la página siguiente 3HAC16581-5 Revisión: L 217 © Copyright 2004-2011 ABB. Consulte también Más ejemplos en la página 218.MOD en la memoria de programas y a continuación se carga PART_B.MOD.1 Instrucciones 1. Carga el módulo de programa PART_A. diskhome es una constante predefinida de cadena de caracteres con el contenido ""HOME:".84 Load .MOD". diskhome \File:="PART_A. desde diskhome .

pero se producirá un error de tiempo de ejecución durante la ejecución de las referencias no resueltas. todas las operaciones de carga y descarga de módulos de programa deben hacerse en el módulo principal (“main”) que siempre está presente en la memoria de programa durante la ejecución. El nombre de archivo se excluye cuando se utiliza el argumento \File. Continúa en la página siguiente 218 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. [\CheckRef] Tipo de dato: switch Busca referencias no resueltas en la tarea de programa después de la carga del módulo. no se realiza ninguna búsqueda de referencias no resueltas. Si no se usa. Reservados todos los derechos. De lo contrario. fácil de comprender y mantener. Para conseguir una estructura de programa idónea. Las referencias no resueltas se aceptan siempre en la operación de carga. Más ejemplos generales Load \Dynamic. el módulo cargado no estará ya disponible en la memoria de programas. es necesario definirlo con este argumento.Carga un módulo de programa durante la ejecución Continuación Argumentos Load [\Dynamic] FilePath [\File] [\CheckRef] [\Dynamic] Tipo de dato: switch El modificador permite cargar un módulo en modo dinámico. incluidas las referencias no resueltas si se usa el modificador \CheckRef. consulte Más ejemplos en la página 218 a continuación. Una vez que el módulo de programa queda cargado. se vincula e inicializa.84 Load . "HOME:/DOORDIR/DOOR1. la carga se realiza en modo estático. [\File] Tipo de dato: string Cuando se excluye el nombre del archivo en el argumento FilePath . si el parámetro \CheckRef no se usa. . Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción Load. Si se produce algún error en la operación de carga. Para la carga de un programa que contiene un procedimiento principal desde un programa principal (que tiene su propio procedimiento principal). La inicialización del módulo cargado devuelve todas las variables del nivel de módulo a los valores de la unidad.MOD". Ejecución de programas La ejecución del programa espera a que el módulo de programa termine de cargarse antes de continuar en la instrucción siguiente. FilePath Tipo de dato: string La ruta y el nombre del archivo que se cargará en la memoria de programa.1 Instrucciones 1.

UnLoad "HOME:/DOORDIR/DOOR1. Reservados todos los derechos..prg o window. %"routine_x"%. El módulo se carga en el modo estático. situados en "HOME:". Dado que los procedimientos main de door. WaitLoad en el sistema.1 Instrucciones 1.MOD". "HOME:/DOORDIR/DOOR1. Este programa puede haber sido desarrollado y probado por separado para su carga posterior con Load o StartLoad.84 Load .prg o window. Lo mismo que en el ejemplo anterior pero con otra sintaxis.prg.prg y window.MOD".prg. En este ejemplo se trata de car..MOD desde HOME: en el directorio DOORDIR en la memoria de programa. La descarga de los módulos con el argumento \Save hará que los procedimientos main sean de nuevo globales en el programa guardado. El procedimiento routine_x se enlazará durante la ejecución (enlazamiento en tiempo de ejecución). las llamadas a los procedimientos se realizan de la forma siguiente: %"door:main"% o %"window: main"%. se carga door. En el programa car. a través de un marco de trabajo del programa principal. Se carga el módulo de programa en el modo dinámico. Load "HOME:" \File:="DOORDIR/DOOR1. Esta sintaxis se utiliza cuando se desea tener acceso a los procedimientos de tipo LOCAL de otros módulos.prg. .MOD". El programa cargado contiene un procedimiento principal Load_MoreExamples_1_xx0500002104 En el ejemplo anterior se muestra cómo es posible cargar un programa que incluye un procedimiento main. el puntero de programa siempre se Continúa en la página siguiente 3HAC16581-5 Revisión: L 219 © Copyright 2004-2011 ABB.Carga un módulo de programa durante la ejecución Continuación Carga el módulo de programa DOOR1. Load\Dynamic. Si tras la carga de los módulos car o window se traslada el puntero de programa a main desde cualquier parte del programa. que carga los programas secundarios door.prg se consideran como locales (LOCAL) tras la carga del módulo del sistema. en este ejemplo el procedimiento main del módulo door o del módulo window.prg.

Conecta el módulo cargado a la tarea en la página 729 Comprobar referencias de programa CheckProgRef . Sintaxis Load [´\´Dynamic´.Comprobar referencias de programa en la página 39 220 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. la variable de sistema ERRNO cambia a ERR_LINKREF.Descarga un módulo de programa durante la ejecución en la página 701 Carga de módulos de programa en paralelo StartLoad . Si el módulo ya está cargado en la memoria de programa.´ Información relacionada Para obtener más información sobre Consulte Descarga de un módulo de programa UnLoad . Si el módulo cargado da lugar a errores de enlace no recuperables. Si no es posible cargar el módulo porque la memoria de programas está llena. Limitaciones Evite tener movimientos en curso durante la carga.´] [FilePath´:=´]<expression (IN) of string> [´\´File´:=´ <expression (IN) of string>] [´\´CheckRef]´.prg. Si se produce alguno de estos errores. la variable de sistema ERRNO cambia a ERR_LINKREF. Si se produce otro tipo de problemas para leer el archivo a cargar. la variable de sistema ERRNO cambia a ERR_PRGMEMFULL. la variable de sistema ERRNO cambia a ERR_FILNOTFND en el momento de la ejecución. Gestión de errores Si no es posible encontrar el archivo especificado en la instrucción Load.Carga un módulo de programa con la ejecución de otro programa durante la ejecución en la página 514 WaitLoad . Si el módulo cargado contiene errores de sintaxis.84 Load . la variable de sistema ERRNO cambia a ERR_LOADED. el propio módulo se descarga y no estará disponible en el gestor de ERROR. la variable de sistema ERRNO cambia a ERR_IOERROR.1 Instrucciones 1. . Estos errores pueden ser gestionados en el gestor de ERROR. en este ejemplo car. la variable de sistema ERRNO cambia a ERR_SYNTAX. Si se usa Load con el modificador \CheckRef para buscar errores de referencia y la memoria de programas contiene referencias no resueltas.Carga un módulo de programa durante la ejecución Continuación traslada al procedimiento main global del programa principal. Reservados todos los derechos.

mediante la ejecución de un programa de RAPID definido por el usuario. Continúa en la página siguiente 3HAC16581-5 Revisión: L 221 © Copyright 2004-2011 ABB./LoadIdentify. Nota Una forma más fácil de identificar la carga de la herramienta o la carga útil es utilizar el programa de RAPID de diálogo interactivo LoadIdentify.85 LoadId . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción LoadId.1 Instrucciones 1.Identificación de carga de la herramienta o la carga útil Utilización LoadId (Load Identification) puede usarse para la identificación de la carga de una herramienta (también de una herramienta de pinza si tiene un TCP fijo en el espacio) o de una carga útil (se activa con la instrucción GripLoad).85 LoadId . Este programa puede iniciarse desde el menú ProgramEditor/Debug/Call Service Rout.Identificación de carga de la herramienta o la carga útil 1. Reservados todos los derechos. .

grip3. Condición Las condiciones siguientes deben cumplirse antes de las mediciones de carga con LoadId: • Asegúrese de que todas las cargas estén montadas correctamente en el robot. fine. ELSE ! Invalid position ! Adjust the position by program movements (horizontal tilt house) MoveAbsJ joints.85 LoadId . grip3 \SlowTest.4. 5]. con el eje 4 en la posición cero. 223.Identificación de carga de la herramienta o la carga útil Continuación Consulte también Más ejemplos en la página 225.1 Instrucciones 1. valid_joints) = TRUE THEN ! Valid position invalid_pos := FALSE. Identificación de la carga de la herramienta grip3. Ejemplo 1 VAR bool invalid_pos := TRUE. 0. PERS tooldata grip3 := [ TRUE. 20. [0. VAR bool valid_joints{12}. es decir. 0]. 0. ENDIF ENDWHILE ! Do slow test for check of free working area IF slow_test_flag = TRUE THEN LoadId TOOL_LOAD_ID. ENDIF ! Do measurement and update all load data in grip3 LoadId TOOL_LOAD_ID. tool0. - Carcasa de inclinación casi horizontal. 0. 0]]. low_ori_speed. CONST speeddata low_ori_speed := [20. ENDIF ! Check if valid robot position WHILE invalid_pos = TRUE DO joints := CJointT(). joints. 0. con ayuda de ParIdPosValid: • - Los ejes 3.924. IF ParIdPosValid (TOOL_LOAD_ID. MASS_WITH_AX3. • Compruebe si el tipo de robot es válido. VAR jointtarget joints.1].383 . 0. VAR bool slow_test_flag := TRUE. 0. Reservados todos los derechos.0]]. 5. 5 y 6 no deben estar cerca de su área de trabajo correspondiente. Es necesario definir los datos siguientes en los parámetros del sistema y en los argumentos de LoadId antes de ejecutar LoadId Continúa en la página siguiente 222 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. [[97. 0. ! Check if valid robot type IF ParIdRobValid(TOOL_LOAD_ID) <> ROB_LOAD_VAL THEN EXIT. [1. 0]. [0. . MASS_WITH_AX3. 0. con ayuda de ParIdRobValid • Compruebe si la posición es válida. [0.

Reservados todos los derechos. Modos de identificación Se conoce Se desconoce Se conoce Se desconoce de carga / Datos defini. Modos de identificación Se conoce Se desconoce Se conoce la Se desconode carga / Datos defini.la masa del la masa del masa del ce la masa dos antes de LoadId TCP móvil TCP móvil TCP fijo del TCP fijo Carga del brazo superior (parámetro del sistema) Definido Definido Masa de la herramienta Definido Definido En la tabla siguiente se ilustra la identificación de carga de la carga útil. Valor Constante simbólica Comentario 1 TOOL_LOAD_ID Identificación de la carga de la herramienta 2 PAY_LOAD_ID Identificación de la carga útil (consulte la instrucción GripLoad) LoadIdType Tipo de dato: loadidnum Continúa en la página siguiente 3HAC16581-5 Revisión: L 223 © Copyright 2004-2011 ABB.Identificación de carga de la herramienta o la carga útil Continuación En la tabla siguiente se ilustra la identificación de carga de la herramienta.1 Instrucciones 1.Definido rramienta Definido Masa de la carga útil Definido Base de coordenadas de Definido herramienta en la herramienta • Definido Definido Definido Definido Definido Base de coordenadas de usuario en el objeto de trabajo Definido Definido Base de coordenadas de objeto en el objeto de trabajo Definido Definido Modo de funcionamiento y redefinición de velocidad: - Prueba lenta en el modo manual con velocidad reducida - Mediciones de carga en el modo automático (o en el modo manual a máxima velocidad) con una redefinición de velocidad del 100% Argumentos LoadId ParIdType LoadIdType Tool [\PayLoad] [\WObj] [\ConfAngle] [\SlowTest] [\Accuracy] ParIdType Tipo de dato: paridnum Un tipo de identificación de carga de los definidos en la tabla siguiente. .85 LoadId .la masa del la masa del la masa del la masa del dos antes de LoadId TCP móvil TCP móvil TCP fijo TCP fijo Carga del brazo superior (parámetros del sistema) Definido Datos de carga de la he.

Valor óptimo + o -90 grados. el valor predeterminado es +90 grados. La identificación de la masa de la herramienta o la carga útil se realiza con los movimientos del eje 3. Valor Constante simbólica Comentario 1 MASS_KNOWN Masa conocida de la herramienta o de la carga útil respectivamente. + ó -30 grados. [ \ ConfAngle ] Tipo de dato: num El argumento de opción para la especificación de un ángulo de configuración específico ± grados para su uso en la identificación de parámetros. la variable persistente de la herramienta en uso. no deben especificarse los argumentos \PayLoad ni \WObj . [ \ WObj ] Tipo de dato: wobjdata Variable persistente del objeto de trabajo en uso.1 Instrucciones 1. Mín.85 LoadId . *) *) Identificación de carga en la posición del eje 6 en otra configuración (se selecciona con ConfAngle) ConfAngle positivo en grados *) Medición de movimientos en distintas configuraciones del eje 6 Eje 6 Identificación de carga de la posición del eje 6 en el inicio (se verifica con ParIdPosValid) xx0500002198_es Si no se especifica este argumento. Este argumento opcional debe especificarse siempre para la identificación de la carga de una carga útil con un TCP fijo en el espacio. Para la identificación de la carga de la herramienta. Este argumento opcional debe especificarse siempre para la identificación de la carga de una carga útil.Identificación de carga de la herramienta o la carga útil Continuación Un tipo de identificación de carga de los definidos en la tabla siguiente. [ \ PayLoad ] Tipo de dato: loaddata Variable persistente de la carga útil que se desea identificar. Reservados todos los derechos. (Debe especificarse la masa de la herramienta o la carga útil especificada) 2 MASS_WITH_AX3 Masa de la herramienta o de la carga útil desconocida respectivamente. . Continúa en la página siguiente 224 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Si se especifica el argumento \PayLoad. Tool Tipo de dato: tooldata Variable persistente de la herramienta que se desea identificar.

[1. 0. 0. 100]. 0.5. 0]. [10.5. 0.0. iz en kgm Más ejemplos A continuación aparecen más ejemplos de la instrucción LoadId. 10.4. 0. TPWrite " Load accuracy for piece5 (%) = " \Num:=load_accuracy. -0.1 Instrucciones 1. Se calculan los datos de carga siguientes: • Masa en kg (si la masa es desconocida. 0. Reservados todos los derechos. los datos de carga se devuelven en el argumento Tool o PayLoad. iy.5 . 1.2.5] ] ]. Ejemplo 1 PERS tooldata grip3 := [ FALSE. 0]. 0..5. 0. 0.. 223.5]]. 2. y.85 LoadId . grip3 \PayLoad:=piece5 \WObj:=wobj2 \Accuracy:=load_accuracy. [0. [ [0. . también se realizarán movimientos con el eje 3.56. "".5. [0. 0.Identificación de carga de la herramienta o la carga útil Continuación [ \ SlowTest ] Tipo de dato: switch Este argumento opcional permite especificar si debe realizarse una prueba lenta para la comprobación del área de trabajo libre. TRUE. [6. Para la identificación de la masa. 0.924.5.-0. 0. PERS loaddata piece5 := [ 5. Consulte la tabla siguiente: LoadId . [0.5.5] ]. MASS_KNOWN. [[97. 0. 68]. 0. 0]. movimientos y cálculos de carga. VAR num load_accuracy.383 .5]. Continúa en la página siguiente 3HAC16581-5 Revisión: L 225 © Copyright 2004-2011 ABB. z y eje de momento • Inercia ix. [0. Después del conjunto de mediciones.0]]. Identificación de carga de la carga útil piece5 con una masa conocida en una instalación cuyo TCP está fijo en el espacio. ! Do measurement and update all payload data except mass in piece5 LoadId PAY_LOAD_ID.7.1]. -45].5 . [0... 0. de lo contrario no se ve afectado) • Centro de gravedad x. 0. Realizar sólo la medición y actualizar la herramienta o la carga útil [ \ Accuracy ] Tipo de dato: num Una variable para la salida de la exactitud de medición calculada en % para todo el cálculo de identificación de la carga (el 100% significa la máxima exactitud). \SlowTest Realizar sólo la prueba lenta LoadId . Ejecución de programas El robot realizará un gran número de movimientos relativos pequeños de transporte y medición en los ejes 5 y 6. 10.5. [ [34. PERS wobjdata wobj2 := [ TRUE.

"RELEASE:/system/mockit. No es posible reiniciar los movimientos de identificación de la carga después de ningún tipo de paro.IRC5 con FlexPendant. los movimientos de identificación de carga deben iniciarse desde el principio.Tipo de identificación de parámetro en la página 1243 Resultado de ParIdRobValid paridvalidnum .1 Instrucciones 1.Posición de robot válida para la identificación de parámetros en la página 981 226 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. "RELEASE:/system/mockit1.sys". Reservados todos los derechos. debe cargar los módulos siguientes en el sistema: Load \Dynamic. . sección Programación y pruebas Tipo de identificación de parámetro paridnum .Tipo de identificación de la carga en la página 1225 Tipo de robot válido ParIdRobValid .Resultado de ParIdRobValid en la página 1245 Tipo de identificación de carga loadidnum . Antes de cargar o ejecutar el programa con LoadId. la variable de sistema ERRNO cambia a ERR_PID_MOVESTOP. También es posible realizar esta identificación con la instrucción de RAPID LoadId.' [ Tool ':=' ] <persistent (PERS) of tooldata> [ '\' PayLoad ':=' <persistent (PERS) of loaddata> ] [ '\' WObj ':=' <persistent (PERS) of wobjdata> ] [ '\' ConfAngle ':=' <expression (IN) of num> ] [ '\' SlowTest ] [ '\' Accuracy ':=' <variable (VAR) of num> ] '. Sintaxis LoadId [ ParIdType ':=' ] <expression (IN) of paridnum> '.sys". En este caso. la identificación de la carga de la herramienta o de la carga útil se realiza con la rutina de servicio LoadIdentify. Gestión de errores Con cualquier error durante la ejecución de la rutina de RAPID NOSTEPINLoadId. ERR_PID_RAISE_PP o ERR_LOADID_FATAL y el puntero de programa es elevado hacia la llamada del usuario a LoadId. como el paro programado.' Información relacionada Para obtener más información sobre Consulte Programa predefinido Load Identify Manual del operador .85 LoadId .Tipo de robot válido para la identificación de parámetros en la página 984 Posición de robot válida ParIdPosValid .Identificación de carga de la herramienta o la carga útil Continuación Limitaciones Normalmente. Load \Dynamic. [ LoadIdType ':=' ] <expression (IN) of loadidnum> '. el paro de emergencia o la caída de alimentación.

Elimina un archivo en la página 379 Copia de un archivo CopyFile .Crea un nuevo directorio Utilización MakeDir se utiliza para crear un nuevo directorio. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MakeDir. Sintaxis MakeDir [ Path’:=’ ] < expression (IN) of string>’. Ejemplo 1 MakeDir "HOME:/newdir". A continuación. Gestión de errores Si no es posible crear el directorio. Reservados todos los derechos. especificado con una ruta completa o relativa.Cambia el nombre de un archivo en la página 380 Eliminación de un archivo RemoveFile . este error puede ser gestionado en el gestor de errores. .Obtiene el tamaño de un sistema de archivos en la página 910 3HAC16581-5 Revisión: L 227 © Copyright 2004-2011 ABB.86 MakeDir . El usuario debe tener permisos de escritura y ejecución del directorio principal debajo del cual se creará el nuevo directorio. la variable de sistema ERRNO cambia a ERR_FILEACC.Comprobar el tipo de un archivo en la página 944 Comprobación del tamaño del archivo FileSize .1 Instrucciones 1.Obtiene el tamaño de un archivo en la página 903 Comprobación del tamaño del sistema de archivos FSSize .’ Información relacionada Para obtener más información sobre Consulte Eliminación de un directorio RemoveDir .Elimina un directorio en la página 377 Cambio del nombre de un archivo RenameFile .Copia un archivo en la página 69 Comprobación del tipo del archivo IsFile .86 MakeDir . En este ejemplo se crea un nuevo directorio llamado newdir dentro de HOME: Argumentos MakeDir Path Path Tipo de dato:string El nombre del nuevo directorio.Crea un nuevo directorio 1.

ActUnit STN1. VAR bool defined.0.Identificación de carga de los manipuladores IRBP 1. .0]. myload se ha actualizado y su definición cambia a TRUE. en las tareas de movimiento. Argumentos ManLoadIdProc [\ParIdType] [\MechUnit] | [\MechUnitName] [\AxisNumber] [\PayLoad] [\ConfigAngle] [\DeactAll] | [\AlreadyActive] [DefinedFlag] [DoExit] [ \ ParIdType ] Tipo de dato: paridnum Tipo de identificación de parámetro Las constantes predefinidas se encuentran dentro del tipo de dato paridnum.[0./ManLoadIdentify. El manipulador se activa antes de la identificación de carga y se desactiva a continuación.87 ManLoadIdProc . mediante la ejecución de un programa de RAPID definido. El manipulador externo es del tipo IRBP-L.. Identificación de carga de la carga útil myload montada sobre la unidad mecánica STN1. DeactUnit STN1. Reservados todos los derechos.0].0.0. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ManLoadIdProc. Se establece el ángulo de configuración en 60 grados. ManLoadIdProc \ParIdType := IRBP_L \MechUnit := STN1 \PayLoad := myload \ConfigAngle := 60 \AlreadyActive \DefinedFlag := defined.Identificación de carga de los manipuladores IRBP Utilización ManLoadIdProc (Manipulator Load Identification Procedure) se utiliza para la identificación de carga de la carga útil de los manipuladores externos.0. Continúa en la página siguiente 228 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.0].[1.1 Instrucciones 1. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. Tras la identificación.87 ManLoadIdProc .0. si se cuenta con un sistema MultiMove. Este programa puede iniciarse desde el menú ProgramEditor/Debug/Call Routine.. Nota Una forma más fácil de identificar la carga útil es utilizar el programa de RAPID de diálogo interactivo ManLoadIdentify. [ \ MechUnit ] Tipo de dato: mecunit La unidad mecánica utilizada para la identificación de carga. PERS loaddata myload := [6. No puede utilizarse conjuntamente con el argumento \MechUnitName.

. Reservados todos los derechos. Esta variable se actualiza después de la identificación. [ \ PayLoad ] Tipo de dato: loaddata Variable de la carga útil que se desea identificar. [ \ AlreadyActive ] Tipo de dato: switch Este modificador se utiliza si la unidad mecánica a identificar está activa. [ \ DefinedFlag ] Tipo de dato: bool Continúa en la página siguiente 3HAC16581-5 Revisión: L 229 © Copyright 2004-2011 ABB.Identificación de carga de los manipuladores IRBP Continuación [ \ MechUnitName ] Tipo de dato: string La unidad mecánica utilizada para la identificación de carga. A continuación. No puede utilizarse conjuntamente con el argumento \MechUnit. indicada como una cadena. Valor óptimo + o -90 grados. No puede utilizarse conjuntamente con el argumento \AlreadyActive. [ \ ConfigAngle ] Tipo de dato: num Especificación de un ángulo de configuración específico ± grados para su uso en la identificación de parámetros. + ó -30 grados. se activa la unidad mecánica a identificar.87 ManLoadIdProc . [ \ AxisNumber ] Tipo de dato: num Dentro de la unidad mecánica. *) Identificación de carga del eje actual en otra configuración (se selecciona con Congle) *) ConfigAngle positivo en grados *) Medición de movimientos en distintas configuraciones del eje actual Posición de identificación de carga del eje actual en el inicio xx0500002197_es Mín. No puede utilizarse conjuntamente con el argumento \DeactAll. todas las unidades mecánicas del sistema se desactivarán antes de la realización de la identificación.1 Instrucciones 1. [ \ DeactAll ] Tipo de dato: switch Si se utiliza este modificador. Es necesario especificar el componente mass. el número del eje que sostiene la carga que se desea identificar.

x cog. la identificación de la carga del manipulador externo se realiza con la rutina de servicio ManLoadIdentify. iy. Reservados todos los derechos. Si no está presente o tiene el valor FALSE. También es posible realizar esta identificación con la instrucción de RAPID ManLoadIdProc. movimientos y cálculos de carga. no se ejecuta EXIT. el paro de emergencia o la caída de alimentación.x. Continúa en la página siguiente 230 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.y cog.y cog. el valor de z en mm. como el paro programado. la identificación de la carga terminará con un comando EXIT para forzar al usuario a cambiar el PP a Main antes de continuar con la ejecución. Ejecución de programas Todos los argumentos son opcionales.x cog.ix. Tipo de manipulador/datos de carga IRBP-K calculados IRBP-L IRBP-C IRBP_T IRBP-R IRBP-A IRBP-B IRBP-D Parámetro PayLoad cog. Si no se indica un argumento. si el manipulador es del tipo IRBP R.x cog.87 ManLoadIdProc . El puntero de programa se perderá tras la identificación de la carga si se usa el argumento \DoExit:=TRUE. . los datos de carga se devuelven en el argumento Payload si se usa. Los movimientos de identificación de carga deben reiniciarse de nuevo desde el principio.z de loaddata en mm Parámetro PayLoad . iz de loaddata en kgm2 iz iz ix iy iz ix iy iz Los datos calculados se muestran en el FlexPendant. Se calculan los datos de carga siguientes. Limitaciones Normalmente.z cog. Recuerde que ManLoadIdProc siempre elimina la trayectoria actual. No es posible reiniciar los movimientos de identificación de la carga después de ningún tipo de paro. Después del conjunto de mediciones. Cualquier trayectoria en curso se borrará antes de la identificación de la carga. cog. [ \ DoExit] Tipo de dato: bool Si tiene el valor TRUE.y.y cog. La unidad mecánica realizará un gran número de movimientos relativos pequeños de transporte y medición. Siempre se pedirá al usuario que indique la masa y.y cog.x cog. cog.1 Instrucciones 1. se solicitará al usuario el valor a través del FlexPendant (excepto \DoExit).Identificación de carga de los manipuladores IRBP Continuación Este argumento tendrá el valor TRUE si la identificación ha sido realizada o FALSE en caso contrario.

Sintaxis ManLoadIdProc [ '\'ParIdType ':=' <expression (IN) of paridnum>] [ '\'MechUnit ':=' <variable (VAR) of mecunit> ] | ['\' MechUnitName ':=' <expression (IN) of string>] [ '\' AxisNumber ':=' <expression (IN) of num> ] [ '\' PayLoad ':=' <var or pers (INOUT) of loaddata> [ '\' ConfigAngle ':=' <expression (IN) of num>] [ '\' DeactAll] | [ '\' AlreadyActive] [ '\' DefinedFlag ':=' <variable (VAR) of bool> ] [ '\' DoExit ':=' <expression (IN) of bool> ] '.Identificación de carga de los manipuladores IRBP Continuación Gestión de errores Con cualquier error durante la ejecución de la rutina NOSTEPIN de RAPID ManLoadIdProc. Reservados todos los derechos.87 ManLoadIdProc . o ERR_LOADID_FATAL y el puntero de programa son elevados hacia la llamada de usuario de ManLoadIdProc.1 Instrucciones 1.' Información relacionada Para obtener más información sobre Consulte Tipo de identificación de parámetro paridnum .Datos de carga en la página 1219 3HAC16581-5 Revisión: L 231 © Copyright 2004-2011 ABB. la variable de sistema ERRNO cambia a ERR_PID_MOVESTOP. .Tipo de identificación de parámetro en la página 1243 Unidad mecánica mecunit . ERR_PID_RAISE_PP.Unidad mecánica en la página 1227 Carga útil loaddata .

lo que suma o resta el peso de la carga útil al peso de la unidad mecánica.88 MechUnitLoad . (La carga útil del robot se define con la instrucción GripLoad.Define una carga útil para una unidad mecánica Utilización MechUnitLoad se utiliza para definir una carga útil para una unidad mecánica externa. en las tareas de movimiento. este hecho suele tener las consecuencias siguientes: • La unidad mecánica no funcionará a su capacidad máxima • Peor exactitud de la trayectoria. IRBP).1 Instrucciones 1. si se cuenta con un sistema MultiMove.88 MechUnitLoad . Cuando se especifican datos de carga incorrectos. ¡AVISO! Es importante definir siempre la carga útil real de la unidad mecánica (es decir.) Esta instrucción debe usarse con todas las unidades mecánicas que tengan un modelo dinámico en servo (posicionadores ABB.Define una carga útil para una unidad mecánica 1. La instrucción MechUnitLoad debe ejecutarse siempre después de ejecutar la instrucción ActUnit. con riesgo de sobrepasar posiciones • Riesgo de sobrecarga de la estructura mecánica Continúa en la página siguiente 232 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Las cargas especificadas se utilizan para configurar un modelo dinámico de la unidad mecánica que permita controlar de la mejor manera posible sus movimientos. para conseguir el máximo rendimiento de los movimientos. accesorio y pieza de trabajo). . Descripción MechUnitLoad especifica qué cargas son transportadas por la unidad mecánica. La carga útil se conecta y desconecta mediante la instrucción MechUnitLoad. Una definición incorrecta de los datos de carga puede dar lugar a la sobrecarga de la estructura mecánica. Reservados todos los derechos. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o.

. montada en el eje 1. xx0500002142_en Ejemplo 1 ActUnit SNT1. Se activa la unidad mecánica STN1 y se define la carga útil fixture1 que corresponde al accesorio montado en el eje 1. fixture1. Load Tipo de dato: loaddata Continúa en la página siguiente 3HAC16581-5 Revisión: L 233 © Copyright 2004-2011 ABB. Reservados todos los derechos. MechUnitLoad STN1. load0. workpiece1.Define una carga útil para una unidad mecánica Continuación Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MechUnitLoad. Se activa la unidad mecánica STN1 y se define la carga útil load0 que corresponde a ninguna carga (en absoluto) montada en el eje 1. dentro de la unidad mecánica. La numeración de los ejes comienza en el número 1.1 Instrucciones 1. Ejemplo 3 ActUnit STN1. AxisNo Axis Number Tipo de dato: num El número del eje. Argumentos MechUnitLoad MechUnit AxisNo Load MechUnit Mechanical Unit Tipo de dato: mecunit El nombre de la unidad mecánica. Ejemplo 2 ActUnit STN1.88 MechUnitLoad . Se activa la unidad mecánica y se define la carga útil STN1 que corresponde al accesorio y a la pieza de trabajo workpiece1. 1. que sostiene la carga. Figura En la figura que aparece a continuación se muestra el eje 1 de una unidad mecánica con el nombre STN1 y del tipo IRBP L. MechUnitLoad STN1. MechUnitLoad STN1. 1. 1.

Define una carga útil para una unidad mecánica Continuación El dato de carga que describe la carga útil actual que se desea definir. Esto debe hacerse siempre después de la activación de la unidad mecánica. xx0500002143_en A Elemento terminal B Accesorio y pieza de trabajo C Centro de gravedad de la carga útil (accesorio + pieza de trabajo) D Unidad mecánica Continúa en la página siguiente 234 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. La carga útil definida permanece definida después de reanudaciones tras caídas de alimentación. Ejecución de programas Después de la ejecución de MechUnitLoad. en función de si la pieza de trabajo está montada en la unidad mecánica o no. cuando los ejes del robot y los ejes adicionales se han detenido. es necesario redefinir con esta instrucción la carga útil real de la unidad mecánica y del eje. La carga útil definida también permanece vigente después de reanudar el programa tras la activación manual de otras unidades mecánicas mediante la pantalla de movimientos.88 MechUnitLoad . La carga útil predeterminada en un arranque en frío para un tipo de unidad mecánica determinada. Reservados todos los derechos. es la carga útil máxima predefinida para dicho tipo de unidad mecánica. Esto significa que la carga útil es controlada y monitorizada por el sistema de control. .1 Instrucciones 1. es decir. Cuando se utiliza otra carga útil. se define la carga especificada para la unidad mecánica y el eje especificados. En el siguiente gráfico se muestra una carga útil montada en el elemento terminal de una unidad mecánica (sistema de coordenadas de elemento terminal de la unidad mecánica). el accesorio o bien el accesorio junto con la pieza de trabajo.

no un punto de paso. Se activa la unidad mecánica STN1. gun1. 2. v1000. Define la carga útil workpiece1 en el eje 2 de la unidad mecánica INTERCH. MechUnitLoad STN1. xx0500002144_en Ejemplo 1 MoveL homeside1. workpiece1. Define la carga útil workpiece1 en el eje 1 de la unidad mecánica STN1. 2 y 3). Reservados todos los derechos. 1. Limitaciones Si esta instrucción va precedida de una instrucción de movimiento. . gun1.. fine. Continúa en la página siguiente 3HAC16581-5 Revisión: L 235 © Copyright 2004-2011 ABB. workpiece1. no será posible reanudar la ejecución tras una caída de suministro eléctrico. Define la carga útil workpiece2 en el eje 3 de la unidad mecánica INTERCH.88 MechUnitLoad . fine. Ejemplo 3 MechUnitLoad INTERCH. De lo contrario.. workpiece2. Los ejes de la unidad mecánica INTERCH se mueven a la posición de cambio homeside2 con la carga útil montada en los dos ejes 2 y 3.Define una carga útil para una unidad mecánica Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción MechUnitLoad. Ejemplo 2 MechUnitLoad INTERCH. Se activa la totalidad de la unidad mecánica INTERCH . ésta última debe programarse con un punto de paro (zonedata fine). Figura En la figura que aparece a continuación se muestra una unidad mecánica con el nombre INTERCH y el tipo IRBP K con tres ejes (1.1 Instrucciones 1. . Ejemplo 5 ActUnit STN1. v1000. 3. Ejemplo 4 MoveL homeside2. ActUnit INTERCH.

Unidad mecánica en la página 1227 cas Definición de datos de carga loaddata .88 MechUnitLoad .Define una carga útil para una unidad mecánica Continuación MechUnitLoad no puede ejecutarse en rutinas de RAPID que estén conectadas a los siguientes eventos especiales del sistema: PowerOn.mecunit .IRBP /D2009 des mecánicas externas Definición de datos de unidades mecáni. Reservados todos los derechos. GripLoad .Define la carga útil de un robot en la página 125 236 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. QStop.' [AxisNo ':=' ] <expression (IN) of num> '. Restart o Step. Sintaxis MechUnitLoad [MechUnit ':=' ] <variable (VAR) of mecunit> '.' [Load ':=' ] <persistent (PERS) of loaddata> '. .1 Instrucciones 1.' Información relacionada Para obtener más información sobre Consulte Identificación de la carga útil de las unida. Stop.Datos de carga en la página 1219 Define la carga útil del robot.Product manual .

Descripción Se conoce como supervisión de movimiento a un conjunto de funciones que permiten supervisar el robot con una alta sensibilidad y con bases de coordenadas. ! then it cannot be activated through the MotionSup instruction . Si la carga no está definida correctamente.. si se cuenta con un sistema MultiMove.. ! Tune the supervision level to 200% (makes the function less ! sensitive) of the level in ! the system parameters MotionSup \On \TuneValue:= 200. ! Deactivate motion supervision during program execution MotionSup \Off....1 Instrucciones 1.Desactiva/activa la supervisión del movimiento Utilización MotionSup (Motion Supervision) se utiliza para desactivar o activar la función de supervisión del movimiento para los movimientos del robot durante la ejecución del programa.. ! Activate motion supervision again during program execution MotionSup \On. ! then it is active by default during program execution . ! If the motion supervision is deactivated through the system ! parameters.. . . . Dado que la supervisión se ha diseñado de forma que sea muy sensible. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MotionSup. si las fuerzas externas son sólo temporales. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. Ejemplo 1 ! If the motion supervision is active in the system parameters.. se debe utilizar la instrucción MotionSup para aumentar el nivel de supervisión (o incluso desactivar la función) en las partes de la aplicación sobre las que actúa esta alteración.Desactiva/activa la supervisión del movimiento 1. contiene funcionalidad para supervisión de cargas. Sin embargo. . Reservados todos los derechos.89 MotionSup . por ejemplo cuando se cierra una pistola de soldadora por puntos de gran tamaño. en las tareas de movimiento.. utilice los parámetros del sistema para aumentar el nivel la supervisión de movimientos hasta que deje de saltar. Continúa en la página siguiente 3HAC16581-5 Revisión: L 237 © Copyright 2004-2011 ABB. utilice la función de identificación de carga para especificarla. Si existen grandes fuerzas de proceso externas en la mayor parte de la aplicación. puede saltar si existen grandes fuerzas de proceso que actúan sobre el robot.. En la actualidad. por ejemplo durante la eliminación de rebabas.89 MotionSup . supervisión de atascos y detección de colisiones.

Al utilizar el robot en el modo de servo suave.1 Instrucciones 1. [ \Off ] Tipo de dato: switch Desactivación de la función de supervisión del movimiento durante la ejecución del programa.´ Continúa en la página siguiente 238 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. está también activada de forma predeterminada durante la ejecución del programa (TuneValue 100%). • La ejecución del programa se detiene y se genera un mensaje de error. • Cuando se inicia la ejecución del programa desde el principio Limitaciones La supervisión del movimiento no está nunca activa en el caso de los ejes externos ni al mover uno o varios ejes en el modo de ejes independientes. Un nivel superior proporciona una sensibilidad más robusta. Es imprescindible especificar uno de los argumentos \On o \Off. Si la supervisión del movimiento está activada en los parámetros del sistema. • El robot retrocederá para eliminar todas las fuerzas residuales. Este argumento sólo puede ser combinado con el argumento \On. Ejecución de programas Si la función de supervisión del movimiento está activada tanto en los parámetros del sistema como en el programa de RAPID y se dispara la supervisión del movimiento debido a una colisión: • El robot se detendrá en el menor tiempo posible. . Sintaxis MotionSup [ ’\’ On] | [ ’\’ Off ] [’\’ Tunevalue’:=’< expression (IN) of num> ] ’. Reservados todos los derechos.Desactiva/activa la supervisión del movimiento Continuación Argumentos MotionSup[\On] | [\Off] [\TuneValue] [ \On ] Tipo de dato: switch Activación de la función de supervisión del movimiento durante la ejecución del programa (si ya ha sido activada en los parámetros del sistema). [ \TuneValue ] Tipo de dato: num Ajuste del nivel de sensibilidad de la supervisión de movimientos en porcentaje (del 1% al 300%) del nivel de los parámetros del sistema. Estos valores se establecen automáticamente en los casos siguientes: • En los arranques en frío. • Cuando se carga un nuevo programa. es posible que sea necesario desactivar la supervisión del movimiento para evitar que salte accidentalmente.89 MotionSup .

89 MotionSup .Motion Planner .Desactiva/activa la supervisión del movimiento Continuación Información relacionada Para obtener más información sobre Consulte Descripción general de la función Technical reference manual .RAPID overview.1 Instrucciones 1.Use Motion Supervision 3HAC16581-5 Revisión: L 239 © Copyright 2004-2011 ABB. sección Principios de movimiento y E/S . . Reservados todos los derechos. sección Motion .Parámetros del sistema.Supervisión del movimiento/detección de colisiones Ajuste con los parámetros del sistema Manual de referencia técnica .

Consulte también Más ejemplos en la página 243. la velocidad del TCP y la trayectoria de esquina. Es posible usar las mismas herramientas en instrucciones de movimiento adyacentes. Ejemplo 1 MoveAbsJ p50. .90 MoveAbsJ . Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. tool2.90 MoveAbsJ . p50. por ejemplo para movimientos con la herramienta situada sobre el robot. Argumentos MoveAbsJ [\Conc] ToJointPos [\ID] [\NoEOffs] Speed [\V] | [\T] Zone [\Z] [\Inpos] Tool [\WObj] [\Conc] Concurrent Tipo de dato:switch Distintas instrucciones consecutivas se ejecutan mientras el robot está en movimiento.Mueve el robot a una posición de ejes absoluta 1. El robot que tiene montada la herramienta grip3 se mueve siguiendo una trayectoria lineal hasta un punto de paro que se almacena como una posición absoluta de ejes en la instrucción (se marca con *). en las tareas de movimiento. Reservados todos los derechos. La posición final del robot durante un movimiento con MoveAbsJ no se ve afectada por la herramienta. fine. z50. Los ejes del robot y los ejes externos se desplazan hasta la posición de destino a lo largo de una trayectoria no lineal. Todos los ejes alcanzan la posición de destino al mismo tiempo.1 Instrucciones 1. si se cuenta con un sistema MultiMove. El robot que tiene montada la herramienta tool2 se mueve a lo largo de una trayectoria no lineal hacia la posición absoluta de ejes. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MoveAbsJ. grip3.Mueve el robot a una posición de ejes absoluta Utilización MoveAbsJ (Move Absolute Joint) se utiliza para mover el robot hacia una posición absoluta definida en posiciones de ejes. Ejemplo 2 MoveAbsJ *. • Para posiciones ambiguas en el caso del IRB 6400C. El argumento no se utiliza normalmente para acortar el tiempo de Continúa en la página siguiente 240 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. con los datos de velocidad v1000 y los datos de zona z50. Ejemplos de uso: • El punto final es un punto singular. Todo el movimiento requiere 5 segundos. por el objeto de trabajo ni por el desplazamiento de programa. el robot utiliza estos datos para calcular la carga. v1000\T:=5. v1000. Sin embargo.

Continúa en la página siguiente 3HAC16581-5 Revisión: L 241 © Copyright 2004-2011 ABB. especificada en los datos de velocidad. [ \NoEOffs ] No External Offsets Tipo de dato: switch Si se utiliza el argumento \NoEOffs. ToJointPos To Joint Position Tipo de dato: jointtarget La posición absoluta de destino de los ejes del robot y de los ejes externos Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). se sustituye por la velocidad correspondiente. la instrucción siguiente se ejecuta algún tiempo antes de que el robot alcance la zona programada. el movimiento con MoveAbsJ no se ve afectado por los offsets activos para los ejes externos. Los datos de velocidad definen la velocidad del punto central de la herramienta. [ \ID ] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si el movimiento está sincronizado y coordinado y no está permitido en ningún otro caso. El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. [ \V ] Velocity Tipo de dato: num Este argumento se utiliza para especificar la velocidad del TCP en mm/s directamente en la instrucción. A continuación. El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí. Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos. Reservados todos los derechos.1 Instrucciones 1.90 MoveAbsJ . no se permite el uso de instrucciones con el argumento \Conc.Mueve el robot a una posición de ejes absoluta Continuación ciclo si. . la reorientación de la misma y los ejes externos. En secciones de programa que incluyen StorePath-RestoPath. el número de instrucciones de movimiento seguidas está limitado a 5. Cuando se utiliza el argumento \Conc. Este argumento no puede usarse en los movimientos sincronizados coordinados en un sistema MultiMove. por ejemplo se realiza una comunicación con equipos externos y no se requiere sincronización. Si se omite este argumento y ToJointPos no es un punto de paro.

se sustituye por los datos de velocidad correspondientes. [ \Z ] Zone Tipo de dato: num Este argumento se utiliza para especificar la exactitud de la posición del TCP del robot. es necesario especificar este argumento. si el robot sostiene el objeto de trabajo. Sin embargo. La posición del TCP se utiliza para calcular la velocidad y la trayectoria de esquina del movimiento. [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo en uso durante el movimiento. Este argumento puede ser omitido si la herramienta es sostenida por el robot. Los datos de puntos de paro sustituyen a la zona especificada en el parámetro Zone. En el caso de las herramientas estacionarias o los ejes externos coordinados. Continúa en la página siguiente 242 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Tool Tipo de dato: tooldata La herramienta en uso durante el movimiento. . directamente en la instrucción. Zone Tipo de dato:zonedata Los datos de zona del movimiento. La longitud de la trayectoria de esquina se indica en mm y es sustituida por la zona correspondiente especificada en los datos de zona. si la herramienta es estacionaria. los datos utilizados por el sistema para calcular la velocidad y la trayectoria de esquinas del movimiento se definen en el objeto de trabajo.Mueve el robot a una posición de ejes absoluta Continuación [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento del robot. [ \Inpos ] In position Tipo de dato: stoppointdata Este argumento se utiliza para especificar los criterios de convergencia para la posición del TCP del robot en el punto de paro. es decir.1 Instrucciones 1. A continuación. Reservados todos los derechos. o si se utilizan ejes externos coordinados.90 MoveAbsJ . La posición del TCP y la carga de la herramienta se definen en los datos de la herramienta. Los datos de zona describen el tamaño de la trayectoria de esquina generada.

fine \Inpos := inpos50. lo que da lugar a una trayectoria no lineal. los ejes externos del destino del movimiento se ven afectados por el offset activo en los ejes externos.1 Instrucciones 1. v2000\V:=2200. grip3.90 MoveAbsJ . Ejemplo 4 MoveAbsJ \Conc. El robot considera que se encuentra en el punto cuando se satisface el 50% de la condición de posición y el 50% de la condición de velocidad de un punto de paro fine. el TCP se mueve a una velocidad aproximada a la programada. Normalmente se generan trayectorias de esquina cuando se transfiere el movimiento a la siguiente sección de la trayectoria. z40. La herramienta. Reservados todos los derechos. pero con la diferencia de que no se ve afectado por los offsets activos para los ejes externos. Si se especifica un punto de paro en los datos de zona. La herramienta. En términos generales. grip3. * \NoEOffs. Continúa en la página siguiente 3HAC16581-5 Revisión: L 243 © Copyright 2004-2011 ABB. Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción MoveAbsJ. La herramienta se traslada a la posición absoluta de destino de los ejes.Mueve el robot a una posición de ejes absoluta Continuación Ejecución de programas Los movimientos realizados con MoveAbsJ no se ven afectados por el desplazamiento activo del programa. grip3. Si no es posible alcanzar la velocidad programada para la orientación o para los ejes externos. si se ejecutan con el modificador \NoEOffs. El mismo movimiento que el anterior. Las instrucciones lógicas posteriores se ejecutan mientras el robot está en movimiento. Consulte los datos predefinidos inpos50 del tipo de dato stoppointdata. Esto significa que cada eje se mueve a una velocidad constante y que todos los ejes alcanzan al mismo tiempo el punto de destino de ejes. no se utilizará ningún offset para los ejes externos. La herramienta se reorienta y los ejes externos se mueven al mismo tiempo que se mueve el TCP. *. . z40 \Z:=45. v2000. v2000. se mueve siguiendo una trayectoria no lineal hasta una posición absoluta de ejes almacenada en la instrucción. La herramienta. grip3. Si no se utiliza el modificador \NoEOffs. Espera al menos 2 segundos a que se satisfagan las condiciones. se mueve siguiendo una trayectoria no lineal hasta la posición absoluta de ejes p5. se reduce la velocidad del TCP. grip3. La velocidad y el tamaño de la zona del TCP son de 2200 mm/s y 45 mm respectivamente. Ejemplo 3 MoveAbsJ \Conc. la ejecución del programa sólo continúa una vez que los ejes del robot y los ejes externos han alcanzado la posición de ejes adecuada. z40. v2000. grip3. Ejemplo 1 MoveAbsJ *. se mueve siguiendo una trayectoria no lineal hasta una posición absoluta de ejes almacenada en la instrucción. Ejemplo 2 MoveAbsJ p5. grip3. El movimiento se realiza con los datos establecidos en v2000 y z40. Además. con interpolación de los ángulos de los ejes.

90 MoveAbsJ . como se indica a continuación (consulte la figura siguiente). Punto singular MoveJ MoveAbsJ Área ambigua MoveAbsJ Cualquier instrucción Move MoveAbsJ xx0500002201_es Sintaxis MoveAbsJ [ ’\’ Conc ’. z40.’ Información relacionada Para obtener más información sobre Consulte Otras instrucciones de posicionamiento Technical reference manual . grip3 \WObj:= obj.Datos de zonas en la página 1331 Continúa en la página siguiente 244 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Datos de posición de eje en la página 1216 Definición de velocidad speeddata . MoveAbsJ start. Reservados todos los derechos. resulta esencial que las instrucciones posteriores cumplan determinados requisitos.Mueve el robot a una posición de ejes absoluta Continuación Ejemplo 5 GripLoad obj_mass.1 Instrucciones 1. Limitaciones Para poder ejecutar hacia atrás la instrucción MoveAbsJ y evitar problemas con puntos singulares o áreas ambiguas.’ [ Speed ’:=’ ] < expression (IN) of speeddata > [ ’\’ V ’:=’ < expression (IN) of num > ] | [ ’\’ T’ :=’ < expression (IN) of num > ] ’. start. v2000.Datos de velocidad en la página 1276 Definición de datos de zona zonedata .RAPID overview.Movimiento Definición de jointtarget jointtarget .’ [Zone ’:=’ ] < expression (IN) of zonedata> [’\’ Z ´:=’ ] < expression (IN) of num > [ ’\’ Inpos’ :=’ < expression (IN) of stoppointdata > ] ´. El robot mueve el objeto de trabajo obj respecto de la herramienta fija grip3. sección Resumen sobre RAPID . La figura muestra la limitación para la ejecución hacia atrás con MoveAbsJ.’ ] [ ToJointPos’ :=’ ] < expression (IN) of jointtarget > [ ’\’ ID ’:=’ < expression (IN) of identno >] [ ’\’ NoEoffs ] ’.’ [ Tool ’:=’ ] < persistent (PERS) of tooldata > [ ’\’ WObj’ :=’ < persistent (PERS) of wobjdata > ] ’. siguiendo una trayectoria no lineal hasta una posición absoluta de ejes. .

RAPID overview.Datos del objeto de trabajo en la página 1323 Movimiento en general Technical reference manual . Reservados todos los derechos.Mueve el robot a una posición de ejes absoluta Continuación Para obtener más información sobre Consulte Definición de datos de punto de paro stoppointdata .1 Instrucciones 1.Datos de punto de paro en la página 1280 Definición de herramientas tooldata . .90 MoveAbsJ .Datos de herramientas en la página 1301 Definición de objetos de trabajo wobjdata .RAPID overview.Sincronización con instrucciones lógicas 3HAC16581-5 Revisión: L 245 © Copyright 2004-2011 ABB. sección Principios de movimiento y E/S . sección Principios de movimiento y E/S Ejecución simultánea de programas Technical reference manual .

El TCP de la herramienta. tool1. Ejemplo 1 MoveC p1.91 MoveC . v500. xx0500002212 Continúa en la página siguiente 246 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. MoveC p4. fine.91 MoveC .1 Instrucciones 1. El círculo se define a partir de la posición inicial. Durante el movimiento. MoveC p2. tool2. v500. fine. La figura muestra cómo se realiza un círculo completo mediante dos instrucciones MoveC . Todo el movimiento requiere 5 segundos.Mueve el robot en círculo 1. p2. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. grip3. el punto de círculo p1 y el punto de destino p2. tool2. grip3. *. v500 \T:=5.Mueve el robot en círculo Utilización MoveC se utiliza para trasladar el punto central de la herramienta (TCP) en sentido circular hacia un punto de destino determinado. si se cuenta con un sistema MultiMove. p3. tool1. la orientación suele permanecer sin cambios respecto del círculo. Ejemplo 2 MoveC *. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MoveC. Reservados todos los derechos. El punto del círculo también está almacenado en la instrucción (marcado por el primer asterisco *). z30. Ejemplo 3 MoveL p1. se mueve en círculo hasta un punto fino almacenado en la instrucción (marcado por el segundo asterisco *). v500. se mueve en círculo hacia la posición p2 con los datos de velocidad v500 y los datos de zona z30. . tool1. en las tareas de movimiento. El TCP de la herramienta. Consulte también Más ejemplos en la página 250. fine. p1. z20. v500.

pero puede utilizarse para evitar los paros no deseados. el número de instrucciones de movimiento seguidas está limitado a 5. En secciones de programa que incluyen StorePath-RestoPath. Continúa en la página siguiente 3HAC16581-5 Revisión: L 247 © Copyright 2004-2011 ABB. Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). la instrucción siguiente se ejecuta algún tiempo antes de que el robot alcance la zona programada. Esto resulta útil cuando los puntos programados están muy cercanos entre sí y se trabaja a velocidades elevadas. Este argumento no puede usarse en los movimientos sincronizados coordinados en un sistema MultiMove. es posible que el robot genere una advertencia. Reservados todos los derechos. [ \ID ] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si el movimiento está sincronizado y coordinado y no está permitido en ningún otro caso. Si se omite este argumento y ToPoint no es un punto de paro. . por ejemplo. Para conseguir la máxima exactitud. El punto de círculo se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). Cuando se utiliza el argumento \Conc. Este argumento no se utiliza normalmente. Si lo sitúa demasiado cerca del punto de inicio o del punto de destino. El punto de círculo es una posición del círculo entre el punto de inicio y el punto de destino. causados por la sobrecarga de la CPU al utilizar puntos de paso. No se utiliza la posición de los ejes externos. debe estar situado a mitad de camino entre los puntos inicial y de destino.1 Instrucciones 1. ToPoint Tipo de dato:robtarget El punto de destino de los ejes del robot y de los ejes externos.91 MoveC . no se permite el uso de instrucciones con el argumento \Conc. no se requiere la comunicación con equipos externos ni la sincronización entre los equipos externos y los movimientos del robot. Este argumento también resulta útil si.Mueve el robot en círculo Continuación Argumentos MoveC [\Conc] CirPoint ToPoint [\ID] Speed [\V] | [\T] Zone [\Z] [\Inpos] Tool [\WObj] [\Corr] [ \Conc ] Concurrent Tipo de dato:switch Distintas instrucciones consecutivas se ejecutan mientras el robot está en movimiento. CirPoint Tipo de dato:robtarget El punto de círculo del robot.

Tool Tipo de dato: tooldata La herramienta en uso durante el movimiento del robot. [ \Z ] Zone Tipo de dato: num Este argumento se utiliza para especificar la exactitud de la posición del TCP del robot. Continúa en la página siguiente 248 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Los datos de velocidad definen la velocidad del TCP. Zone Tipo de dato:zonedata Los datos de zona del movimiento.1 Instrucciones 1. A continuación. se sustituye por los datos de velocidad correspondientes.91 MoveC . se sustituye por la velocidad correspondiente. Los datos de puntos de paro sustituyen a la zona especificada en el parámetro Zone . El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento del robot y de los ejes externos. Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos. . Reservados todos los derechos. [ \Inpos ] In position Tipo de dato: stoppointdata Este argumento se utiliza para especificar los criterios de convergencia para la posición del TCP del robot en el punto de paro. directamente en la instrucción. especificada en los datos de velocidad. El punto central de la herramienta es el punto que se mueve hacia el punto de destino especificado. Los datos de zona describen el tamaño de la trayectoria de esquina generada. A continuación.Mueve el robot en círculo Continuación El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí. la reorientación de la herramienta y los ejes externos. [ \V ] Velocity Tipo de dato: num Este argumento se utiliza para especificar la velocidad del TCP en mm/s directamente en la instrucción. La longitud de la trayectoria de esquina se indica en mm y es sustituida por la zona correspondiente especificada en los datos de zona.

1 Instrucciones 1. La figura muestra la orientación de la herramienta durante un movimiento circular. es necesario especificar este argumento para que se ejecute un círculo respecto del objeto de trabajo. Ejecución de programas Las unidades del robot y las externas se trasladan hacia el punto de destino de la forma siguiente: • El TCP de la herramienta se mueve en círculo a una velocidad constante programada. . Es posible omitir este argumento. [ \Corr ] Correction Tipo de dato: switch Los datos de corrección escritos en una entrada de corrección mediante una instrucción CorrWrite se añaden a la trayectoria y a la posición de destino si se utiliza este argumento. Continúa en la página siguiente 3HAC16581-5 Revisión: L 249 © Copyright 2004-2011 ABB. • La reorientación se realiza respecto de la trayectoria circular. la posición depende del sistema de coordenadas mundo. Por tanto. Reservados todos los derechos. La exactitud de la reorientación a lo largo de la trayectoria sólo depende de la orientación en los puntos inicial y de destino. • La herramienta se reorienta a una velocidad constante. desde la orientación de la posición inicial hasta la orientación del punto de destino. Los distintos modos de orientación de la herramienta durante una trayectoria circular se describen en la instrucción CirPathMode. Si se omite. Si por otro lado se usa un TCP estacionario o ejes externos coordinados.Mueve el robot en círculo Continuación [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo (sistema de coordenadas de objeto) con el que está relacionada la posición de robot indicada en la instrucción. si la orientación respecto de la trayectoria es la misma en los puntos inicial y final.91 MoveC . CirPoint Orientación de la herramienta Punto de inicio ToPoint xx0500002214_es La orientación del punto circular no se alcanza. la orientación relativa permanece sin cambios durante el movimiento (consulte la figura siguiente). Sólo se usa para distinguir entre dos sentidos de orientación posibles.

grip3. grip3. grip3. Estas posiciones se especifican en el sistema de coordenadas de objeto de fixture. *. El TCP de la herramienta. Ejemplo 2 MoveC p5. p15. v500. p15. v2000.Mueve el robot en círculo Continuación Los ejes externos no coordinados se ejecutan a una velocidad constante para que alcancen el punto de destino al mismo tiempo que los ejes del robot. grip3. Las instrucciones lógicas posteriores se ejecutan mientras el robot está en movimiento. se mueve en círculo hacia un punto de paro p6. Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción MoveC. grip3. fine \Inpos := inpos50.91 MoveC . La velocidad y el tamaño de zona del TCP son 550 mm/s y 45 mm. *. El TCP de la herramienta. Continúa en la página siguiente 250 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. respectivamente. Normalmente se general trayectorias de esquina cuando se transfiere el movimiento a la siguiente sección de una trayectoria. z40. se reduce la velocidad del TCP.. se mueve en círculo hacia una posición. Espera al menos 2 segundos a que se satisfagan las condiciones. El robot considera que se encuentra en el punto cuando se satisface el 50% de la condición de posición y el 50% de la condición de velocidad de un punto de paro fine. grip3. Consulte los datos predefinidos inpos50 del tipo de dato stoppointdata. la ejecución del programa sólo continúa una vez que los ejes del robot y los ejes externos han alcanzado la posición adecuada.1 Instrucciones 1. grip3. El movimiento se realiza con los datos establecidos en v500 y z40. Reservados todos los derechos. se mueve en círculo hacia una posición almacenada en la instrucción. El TCP de la herramienta. v500 \V:=550. El TCP de la herramienta. z40. grip3 \WObj:=fixture. . v500. Ejemplo 3 MoveC \Conc. Ejemplo 1 MoveC *. *. a través del punto de círculo cir1. se mueve en círculo hacia una posición almacenada en la instrucción. Si no es posible alcanzar la velocidad programada para la reorientación o para los ejes externos. Si se especifica un punto de paro en los datos de zona. p6. z40 \Z:=45. Ejemplo 4 MoveC cir1. El punto del círculo también está almacenado en la instrucción. No se utiliza la posición de la posición de círculo.

es decir. De lo contrario. Asegúrese de que el robot pueda alcanzar el punto de círculo durante la ejecución del programa y dividir el segmento del círculo si es necesario. el robot no toma la trayectoria programada (posicionamiento alrededor de la trayectoria circular en otra dirección.1 Instrucciones 1. • La distancia mínima entre el punto de inicio y CirPoint es de 0. como se muestra en la figura siguiente. si el punto de inicio y el punto ToPoint del círculo están muy cerca el uno del otro. Para reducir al mínimo el riesgo. el error causado por la inclinación del círculo puede ser mucho mayor que la exactitud con la que se programaron los puntos.1 mm x start a a > 1 grado x CirPoint x ToPoint xx0500002213_es • La distancia mínima entre el punto de inicio y ToPoint es de 0. cambie el valor del parámetro de sistema Restrict placing of circlepoints a TRUE (tipo Motion Planner. .Mueve el robot en círculo Continuación Limitaciones Existen algunas limitaciones en cuanto a las posibilidades de posicionamiento de CirPoint y ToPoint. Reservados todos los derechos. con un TCP entre el punto de círculo y el punto final.1 mm. • El ángulo mínimo entre CirPoint y ToPoint a partir del punto de inicio es de 1 grado. Este parámetro añade una supervisión en el sentido de que la trayectoria circular no gire más de 240 grados y que el punto de círculo esté situado en la parte central de la trayectoria circular. ¡AVISO! La instrucción MoveC (o cualquier otra instrucción que incluya un movimiento circular) no debe empezarse en ningún caso desde el principio. Continúa en la página siguiente 3HAC16581-5 Revisión: L 251 © Copyright 2004-2011 ABB. La exactitud puede ser baja cerca de los límites. o viceversa. x CirPoint 0. mientras el robot se detiene en una trayectoria circular no se permiten y generan un mensaje de error.91 MoveC . Los cambios del modo de ejecución de la ejecución hacia adelante a la ejecución hacia atrás. en comparación con la programada).1 mm x x CirPoint start x ToPoint inicio ToPoint x x 0. tema Motion).1 mm.

RAPID overview.Mueve el robot en círculo Continuación Sintaxis MoveC [ ’\’ Conc ’.’ [ ToPoint’ :=’ ] < expression (IN) of robtarget> ’.CorrWrite .Datos del objeto de trabajo en la página 1323 Escritura en una entrada de co.’ [ Tool ’:=’ ] < persistent (PERS) of tooldata> [ ’\’ WObj’ :=’ < persistent (PERS) of wobjdata> ] [ ’\’ Corr ]’. Reservados todos los derechos. sección mas Principios de movimiento y E/S .Datos de herramientas en la página 1301 Definición de objetos de trabajo wobjdata .Technical reference manual .’ Información relacionada Para obtener más información Consulte sobre Otras instrucciones de posiciona.’ [Zone ’:=’ ] < expression (IN) of zonedata> [ ’\’ Z ’:=’ < expression (IN) of num> ] [ ’\’ Inpos’ :=’ < expression (IN) of stoppointdata> ] ´.Movimiento Definición de velocidad speeddata . .Datos de velocidad en la página 1276 Definición de datos de zona zonedata .1 Instrucciones 1. sección Principios de movimiento y E/S Sistemas de coordenadas Technical reference manual .Parámetros del sistema 252 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Datos de punto de paro en la página 1280 paro Definición de herramientas tooldata .’ [ ’\’ ID ’:=’ < expression (IN) of identno>]’.RAPID overview.Sincronización con instrucciones lógicas Parámetros del sistema Manual de referencia técnica .’ ] [ CirPoint’ :=’ ] < expression (IN) of robtarget> ’.Sistemas de coordenadas Ejecución simultánea de progra.Escribe en un generador de correcciones en rrección la página 81 Reorientación de la herramienta CirPathMode .Datos de zonas en la página 1331 Definición de datos de punto de stoppointdata . sección Principios de movimiento y E/S .Reorientación de la herramienta durante durante trayectorias circulares trayectorias circulares en la página 40 Movimiento en general Technical reference manual .RAPID overview.91 MoveC . sección miento Resumen sobre RAPID .’ [ Speed ’:=’ ] < expression (IN) of speeddata> [ ’\’ V ’:=’ < expression (IN) of num> ] [ ’\’ T ’:=’ < expression (IN) of num> ] ’.Technical reference manual .RAPID overview.

92 MoveCDO . z30.Mueve el robot en una trayectoria circular y establece una salida digital en la esquina 1.92 MoveCDO . debe estar situado a mitad de camino entre los puntos inicial y de destino. El TCP de la herramienta. El punto de círculo es una posición del círculo entre el punto de inicio y el punto de destino. Continúa en la página siguiente 3HAC16581-5 Revisión: L 253 © Copyright 2004-2011 ABB. El punto de círculo se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). se mueve en círculo hacia la posición p2 con los datos de velocidad v500 y los datos de zona z30. Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). [ \ID ] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si el movimiento está sincronizado y coordinado y no está permitido en ningún otro caso. Durante el movimiento. v500. La salida do1 se activa en el centro de la trayectoria de esquina de p2. . en las tareas de movimiento. es posible que el robot genere una advertencia. tool2. Reservados todos los derechos. si se cuenta con un sistema MultiMove. El círculo se define a partir de la posición inicial.1. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. Si lo sitúa demasiado cerca del punto de inicio o del punto de destino. la orientación suele permanecer sin cambios respecto del círculo. Argumentos MoveCDO CirPoint ToPoint [\ID] Speed [\T] Zone Tool [\WObj] Signal Value CirPoint Tipo de dato:robtarget El punto de círculo del robot. Ejemplo 1 MoveCDO p1. ToPoint Tipo de dato:robtarget El punto de destino de los ejes del robot y de los ejes externos. el punto de círculo p1 y el punto de destino p2. p2.1 Instrucciones 1.Mueve el robot en una trayectoria circular y establece una salida digital en la esquina Utilización MoveCDO (Move Circular Digital Output) se utiliza para trasladar el punto central de la herramienta (TCP) en sentido circular hacia un punto de destino determinado. La salida digital especificada se activa o desactiva en el centro de la trayectoria de esquina del punto de destino. tool2. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MoveCDO. No se utiliza la posición de los ejes externos. Para conseguir la máxima exactitud. do1.

1 Instrucciones 1. Si por otro lado se usa un TCP estacionario o ejes externos coordinados. Los datos de velocidad definen la velocidad del TCP. A continuación. es necesario especificar este argumento para que se ejecute un círculo respecto del objeto de trabajo. Zone Tipo de dato:zonedata Los datos de zona del movimiento. Value Tipo de dato: dionum El valor deseado para la señal (0 ó 1). Los datos de zona describen el tamaño de la trayectoria de esquina generada. [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo (sistema de coordenadas de objeto) con el que está relacionada la posición de robot indicada en la instrucción. Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos. la posición depende del sistema de coordenadas mundo. Tool Tipo de dato: tooldata La herramienta en uso durante el movimiento del robot. se sustituye por los datos de velocidad correspondientes. la reorientación de la herramienta y los ejes externos. Ejecución de programas Consulte la instrucción MoveC para obtener más información acerca del movimiento circular. . Continúa en la página siguiente 254 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.92 MoveCDO . Si se omite. [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento del robot y de los ejes externos. El punto central de la herramienta es el punto que se mueve hacia el punto de destino especificado. Es posible omitir este argumento. Signal Tipo de dato: signaldo El nombre de la señal digital de salida que debe cambiar de valor. El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. Reservados todos los derechos.Mueve el robot en una trayectoria circular y establece una salida digital en la esquina Continuación El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí.

sección Resumen sobre RAPID . CirPoint Punto de inicio Activar/desactivar la señal Punto siguiente ToPoint Zone xx0500002215_es En el caso de los puntos de paro.’ Información relacionada Para obtener más información so.Consulte bre Otras instrucciones de posicionamiento Technical reference manual . La señal de E/S especificada se activa o desactiva en el modo de ejecución continua y paso a paso hacia adelante.Mueve el robot en círculo en la página 246 Definición de velocidad speeddata .’ [ ’\’ ID ’:=’ < expression (IN) of identno >]’.Datos de velocidad en la página 1276 Continúa en la página siguiente 3HAC16581-5 Revisión: L 255 © Copyright 2004-2011 ABB.RAPID overview. la señal digital de salida se activa o desactiva cuando el robot alcanza el punto de paro. recomendamos el uso de una secuencia de programa “normal”. Sin embargo. .Movimiento Movimiento del robot en círculo MoveC . Sintaxis MoveCDO [ CirPoint ’:=’ ] < expression (IN) of robtarget > ’. con el uso de MoveC + SetDO. pero no en la ejecución paso a paso hacia atrás.’ [ Speed ’:=’ ] < expression (IN) of speeddata > [ ’\’ T ’:=’ < expression (IN) of num > ] ’.’ [ Zone ’:=’ ] < expression (IN) of zonedata > ’.’ [ Signal ’:=’ ] < variable (VAR) of signaldo > ] ´. Limitaciones Limitaciones generales acorde con la instrucción MoveC.’ [ Tool ’:=’ ] < persistent (PERS) of tooldata > [ ’\’ WObj’ :=’ < persistent (PERS) of wobjdata > ] ’.1 Instrucciones 1. cuando se utiliza un punto de paro en la instrucción MoveCDO.Mueve el robot en una trayectoria circular y establece una salida digital en la esquina Continuación La señal digital de salida se activa o desactiva en el centro de la trayectoria de esquina en el caso de los puntos de paso. como se muestra en la figura siguiente. Reservados todos los derechos.’ [ Value ´:=’ ] < expression (IN) of dionum > ] ’.’ [ ToPoint’ :=’ ] < expression (IN) of robtarget > ’. La figura muestra la activación/desactivación de una señal digital de salida en la trayectoria de esquina con MoveCDO.92 MoveCDO .

1 Instrucciones 1. Reservados todos los derechos.Datos de herramientas en la página 1301 Definición de objetos de trabajo wobjdata .Consulte bre Definición de datos de zona zonedata . sección Principios de movimiento y E/S Sistemas de coordenadas Technical reference manual .Sincronización con instrucciones lógicas 256 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.RAPID overview.Mueve el robot en una trayectoria circular y establece una salida digital en la esquina Continuación Para obtener más información so. .Datos del objeto de trabajo en la página1323 Movimiento en general Technical reference manual . sección Principios de movimiento y E/S .Sistemas de coordenadas Movimientos con parámetros de E/S Technical reference manual .Datos de zonas en la página 1331 Definición de herramientas tooldata .RAPID overview.92 MoveCDO . sección Principios de movimiento y E/S .RAPID overview.

"proc1". El procedimiento proc1 se ejecuta en el centro de la trayectoria de esquina de p2. tool2. tool2. pero en este caso el procedimiento declarado localmente proc1 del módulo MyModule será llamado en medio de la trayectoria de esquina. El TCP de la herramienta. se ordena la ejecución del procedimiento de RAPID especificado.Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID 1. El punto de círculo es una posición del círculo entre el punto de inicio y el punto de destino.93 MoveCSync . es posible que el robot genere una advertencia.93 MoveCSync . Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). p2. Durante el movimiento.Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID Utilización MoveCSync (Move Circular Synchronously) se utiliza para trasladar el punto central de la herramienta (TCP) en sentido circular hacia un punto de destino determinado. Continúa en la página siguiente 3HAC16581-5 Revisión: L 257 © Copyright 2004-2011 ABB. "MyModule:proc1". si se cuenta con un sistema MultiMove. la orientación suele permanecer sin cambios respecto del círculo. Si lo sitúa demasiado cerca del punto de inicio o del punto de destino. en las tareas de movimiento. v500. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MoveCSync. Argumentos MoveCSync CirPoint ToPoint [\ID] Speed [\T] Zone Tool [\WObj] ProcName CirPoint Tipo de dato:robtarget El punto de círculo del robot. Ejemplo 1 MoveCSync p1. z30. p2. No se utiliza la posición de los ejes externos. v500. El punto de círculo se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o.1 Instrucciones 1. Igual que en el ejemplo 1 anterior. debe estar situado a mitad de camino entre los puntos inicial y de destino. el punto de círculo p1 y el punto de destino p2. El círculo se define a partir de la posición inicial. tool2. Para conseguir la máxima exactitud. se mueve en círculo hacia la posición p2 con los datos de velocidad v500 y los datos de zona z30. En el centro de la trayectoria de esquina del punto de destino. . z30. Ejemplo 2 MoveCSync p1. ToPoint Tipo de dato:robtarget El punto de destino de los ejes del robot y de los ejes externos. Reservados todos los derechos.

Si. se sustituye por los datos de velocidad correspondientes. Es posible omitir este argumento. Los datos de velocidad definen la velocidad del TCP. Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos. A continuación.1 Instrucciones 1. Zone Tipo de dato:zonedata Los datos de zona del movimiento. [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento del robot y de los ejes externos. . ProcName Procedure Name Tipo de dato: string El nombre del procedimiento de RAPID que debe ejecutarse en el centro de la trayectoria de esquina del punto de destino. la reorientación de la herramienta y los ejes externos. Reservados todos los derechos. la posición depende del sistema de coordenadas mundo.Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID Continuación [ \ID ] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si el movimiento está sincronizado y coordinado y no está permitido en ningún otro caso. Continúa en la página siguiente 258 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Tool Tipo de dato: tooldata La herramienta en uso durante el movimiento del robot. Si se omite. El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí. El punto central de la herramienta es el punto que se mueve hacia el punto de destino especificado. El procedimiento se ejecutará en el nivel de rutina TRAP (consulte Ejecución de programas más abajo). es necesario especificar este argumento.93 MoveCSync . El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo (sistema de coordenadas de objeto) con el que está relacionada la posición de robot indicada en la instrucción. se utiliza un TCP estacionario o ejes externos coordinados. por otro lado. Los datos de zona describen el tamaño de la trayectoria de esquina generada.

como se muestra en la figura siguiente. no se realizará la llamada al procedimiento (la ejecución del programa se para). con el uso de MoveC y otras instrucciones de RAPID una tras otra. existe normalmente un retardo de 2 a 30 ms hasta que se ejecuta la rutina de RAPID especificada. z30. MoveCSync p2. se ejecuta my_proc Zone xx0500002216_es En el caso de los puntos de paro. con distintos modos de ejecución: Modo de ejecución Ejecución del procedimiento de RAPID Continuous o Cycle De acuerdo con esta descripción Paso hacia delante En el punto de paro Paso hacia atrás Ninguno en absoluto MoveCSync es una encapsulación de las instrucciones TriggInt y TriggC. Si tras un punto de paro se cambia el modo de ejecución del modo continuo o cíclico al modo de ejecución paso a paso hacia adelante o hacia atrás. La figura muestra el orden de ejecución del procedimiento de RAPID definido por el usuario al llegar al centro de la trayectoria de esquina. Cuando el TCP se encuentra aquí. . La llamada al procedimiento se ejecuta en el nivel de rutina TRAP. En la tabla se describe la ejecución del procedimiento de RAPID especificado. tool2. se genera Continúa en la página siguiente 3HAC16581-5 Revisión: L 259 © Copyright 2004-2011 ABB. El procedimiento de RAPID especificado se ejecuta cuando el TCP alcanza el centro de la trayectoria de esquina del punto de destino de la instrucción MoveCSync. v1000. La llamada al procedimiento se ejecuta en el siguiente inicio de programa. Reservados todos los derechos. Si el centro de la trayectoria de esquina del punto de destino se alcanza durante la deceleración posterior a un paro de programa.Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID Continuación Ejecución de programas Consulte la instrucción MoveC para obtener más información acerca de los movimientos circulares. en función de qué tipo de movimiento se realice en el momento. Cuando el robot alcanza el centro de la trayectoria de esquina. Limitación Limitaciones generales acorde con la instrucción MoveC. “my_proc”.93 MoveCSync . p3. recomendamos el uso de una secuencia de programa “normal”.1 Instrucciones 1.

Movimiento circular del robot con eventos en la página 609 260 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Este error informa al usuario de que el cambio de modo de ejecución puede dar lugar a que no llegue a ejecutarse un procedimiento de RAPID que está en cola para su ejecución en la trayectoria.93 MoveCSync .Mueve el robot en círculo en la página 246 Definición de velocidad speeddata .RAPID overview.’ [ Tool ’:=’ ] < persistent (PERS) of tooldata > [ ’\’ WObj’ :=’ < persistent (PERS) of wobjdata > ] ’.’ [’\’ ID ’:=’ < expression (IN) of identno >]’.Sistemas de coordenadas Define una interrupción dependiente de una posición TriggInt .’ [ ToPoint’ :=’ ] < expression (IN) of robtarget > ’. . No es posible usar la instrucción MoveCSync en rutinas TRAP. to sección Resumen sobre RAPID . sección Principios de movimiento y E/S Sistemas de coordenadas Technical reference manual .Technical reference manual .Datos de zonas en la página 1331 Definición de herramientas tooldata .’ Información relacionada Para obtener más información sobre Consulte Otras instrucciones de posicionamien. Sintaxis MoveCSync [ CirPoint ’:=’ ] < expression (IN) of robtarget > ’.Datos de velocidad en la página 1276 Definición de datos de zona zonedata .Datos de herramientas en la página 1301 Definición de objetos de trabajo wobjdata .’ [ Zone ’:=’ ] < expression (IN) of zonedata > ’.RAPID overview.Define una interrupción dependiente de una posición en la página 628 Movimiento circular del robot con eventos TriggC . sección Principios de movimiento y E/S .1 Instrucciones 1.’ [ Speed ’:=’ ] < expression (IN) of speeddata > [ ’\’ T ’:=’ < expression (IN) of num > ] ’.Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID Continuación un error.Datos del objeto de trabajo en la página 1323 Movimiento en general Technical reference manual . No es posible comprobar el procedimiento de RAPID con la ejecución paso a paso. Reservados todos los derechos.RAPID overview.’ [ ProcName ´:=’ ] < expression (IN) of string > ] ’.Movimiento Mueve el robot en círculo MoveC .

Esto resulta útil cuando los puntos programados están muy cercanos entre sí y se trabaja a velocidades elevadas. Este argumento también resulta útil si. Reservados todos los derechos. Este argumento no se utiliza normalmente.1 Instrucciones 1. . Ejemplo 1 MoveExtJ jpos10. la instrucción siguiente se ejecuta algún tiempo antes de que los ejes externos alcancen la zona programada. vrot10 \T:=5. no se requiere la comunicación con equipos externos ni la sincronización entre los equipos externos y los movimientos del robot. causados por la sobrecarga de la CPU al utilizar puntos de paso.94 MoveExtJ . el número de instrucciones de movimiento seguidas está limitado a 5. La ejecución del programa avanza de una vez pero el eje externo se detiene en la posición jpos20 hasta que se cumplan los criterios de convergencia en inpos20. Estos ejes externos pueden pertenecer a una o varias unidades mecánicas sin TCP. Continúa en la página siguiente 3HAC16581-5 Revisión: L 261 © Copyright 2004-2011 ABB. por ejemplo. En secciones de programa que incluyen StorePath-RestoPath. Ejemplo 2 MoveExtJ \Conc. Mueve los ejes externos a la posición de eje jpos20 en 5 s. Consulte también Más ejemplos en la página 263. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MoveExtJ. no se permite el uso de instrucciones con el argumento \Conc. fine \InPos:=inpos20.94 MoveExtJ . pero puede utilizarse para evitar los paros no deseados. vrot10. Mueve el eje externo de rotación a la posición de eje jpos10 a una velocidad de 10 grados/s con los datos de zona z50. Argumentos MoveExtJ [\Conc] ToJointPos [\ID] [\UseEOffs] Speed [\T] Zone [\Inpos] [ \Conc ] Concurrent Tipo de dato:switch Las instrucciones posteriores se ejecutan mientras el eje externo está en movimiento. Esta instrucción sólo puede usarse con una tarea de programa real defnida como tarea de movimiento y siempre y cuando la tarea controle una o varias unidades mecánicas sin TCP. z50.Mueve una o varias unidades mecánicas sin TCP Utilización MoveExtJ (Move External Joints) se utiliza para mover ejes externos sólo lineales o de rotación. Cuando se utiliza el argumento \Conc.Mueve una o varias unidades mecánicas sin TCP 1. Si se omite este argumento y ToJointPos no es un punto de paro. jpos20.

Los datos de velocidad definen la velocidad del eje externo lineal o de rotación. El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí. En un punto de paso. A continuación. el tamaño de la zona describe la deceleración y aceleración de los ejes externos lineales o de rotación. se sustituye por los datos de velocidad correspondientes.1 Instrucciones 1. configurado por la instrucción EOffsSet. Reservados todos los derechos. ToJointPos To Joint Position Tipo de dato:jointtarget La posición absoluta de destino de los ejes externos. Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos. Los datos de zona definen un punto de paro o un punto de paso. . [ \ID ] Synchronization ID Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si el movimiento está sincronizado y coordinado y no está permitido en ningún otro caso. Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento de los ejes externos. se activa para la instrucción MoveExtJ cuando se utiliza el argumento UseEOffs. Zone Tipo de dato:zonedata Los datos de zona del movimiento. [ \UseEOffs ] Use External Offset Tipo de dato: switch El offset de los ejes externos.Mueve una o varias unidades mecánicas sin TCP Continuación Este argumento no puede usarse en los movimientos sincronizados coordinados en un sistema MultiMove. Consulte la instrucción EOffsSet para obtener más información acerca del offset externo. [ \Inpos ] In position Tipo de dato: stoppointdata Continúa en la página siguiente 262 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.94 MoveExtJ .

9E9.9E9. CONST jointtarget j3 := [[9E9.9E9.9E9.9E9.[30.’ ] [ Speed ’:=’ ] < expression (IN) of speeddata > [ ’\’ T ’:=’ < expression (IN) of num > ] ’. Ejecución de programas Los ejes externos lineales o de rotación se mueven hasta el punto programado a la velocidad programada. j2. En este ejemplo.9E9.9E9.9E9. MoveExtJ MoveExtJ MoveExtJ MoveExtJ j1. rot_ax_speed.9E9.9E9. 60 y 90 grados a la velocidad de 45 grados/s.9E9.9E9].9E9]].9E9. rot_ax_speed.9E9. rot_ax_speed. fine. z20. sección Principios de movimiento y E/S Continúa en la página siguiente 3HAC16581-5 Revisión: L 263 © Copyright 2004-2011 ABB.9E9.9E9. j3.RAPID overview.9E9. 45].Mueve una o varias unidades mecánicas sin TCP Continuación Este argumento se utiliza para especificar los criterios de convergencia para la posición del eje externo en el punto de paro.’ [ ’\’ UseEOffs’ . . el eje de rotación sencillo se mueve hasta las posiciones de eje 0. Reservados todos los derechos.Datos de posición de eje en la página 1216 Definición de velocidad speeddata .9E9. Más ejemplos CONST jointtarget j1 := [[9E9. CONST jointtarget j4 := [[9E9. z20. sección Movimiento Definición de jointtarget jointtarget . 0.[0.9E9]].’ Información relacionada Para obtener más información sobre Consulte Otras instrucciones de posicionamiento Technical reference manual .9E9]. Sintaxis MoveExtJ [ ’\’ Conc ’.9E9.9E9. CONST speeddata rot_ax_speed := [0.[60.9E9.9E9.’ [Zone ’:=’ ] < expression (IN) of zonedata > [ ’\’ Inpos’ :=’ < expression (IN) of stoppointdata >]‘.9E9. Los datos de puntos de paro sustituyen a la zona especificada en el parámetro Zone.9E9. j4.9E9.9E9.Datos de velocidad en la página 1276 Definición de datos de zona zonedata . CONST jointtarget j2 := [[9E9.9E9.Datos de zonas en la página 1331 Movimiento en general Technical reference manual .9E9].9E9. fine.9E9.’ ] [ ToJointPos’ :=’ ] < expression (IN) of jointtarget > [’\’ ID ’:=’ < expression (IN) of identno >]’.9E9.9E9.9E9.RAPID overview.1 Instrucciones 1.9E9]].9E9]].9E9].9E9.[90. 0. rot_ax_speed. 30.94 MoveExtJ .

1 Instrucciones 1.Sincronización con instrucciones lógicas 264 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. .94 MoveExtJ . sección Principios de movimiento y E/S .Mueve una o varias unidades mecánicas sin TCP Continuación Para obtener más información sobre Consulte Ejecución simultánea de programas Technical reference manual . Reservados todos los derechos.RAPID overview.

en las tareas de movimiento. Este argumento también resulta útil si. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. vmax \T:=5. tool2. Argumentos MoveJ [\Conc] ToPoint [\ID] Speed [\V] | [\T] Zone [\Z] [\Inpos] Tool [\WObj] [ \Conc ] Concurrent Tipo de dato:switch Distintas instrucciones consecutivas se ejecutan mientras el robot está en movimiento. tool2. Todos los ejes alcanzan la posición de destino al mismo tiempo. por ejemplo. se mueve siguiendo una trayectoria no lineal hacia la posición p1. Todo el movimiento requiere 5 segundos. El punto central de la herramienta (TCP). grip3.Mueve el robot mediante un movimiento de ejes Utilización MoveJ se utiliza para mover el robot rápidamente de un punto a otro cuando no es imprescindible que el movimiento siga una línea recta. grip3. Los ejes del robot y los ejes externos se desplazan hasta la posición de destino a lo largo de una trayectoria no lineal. z30.1 Instrucciones 1.95 MoveJ . vmax. si se cuenta con un sistema MultiMove.Mueve el robot mediante un movimiento de ejes 1. Reservados todos los derechos. se mueve siguiendo una trayectoria no lineal hacia un punto de paro almacenado en la instrucción (marcado con un asterisco *). el número de instrucciones de movimiento seguidas está limitado a 5. El TCP de la herramienta. pero puede utilizarse para evitar los paros no deseados. Continúa en la página siguiente 3HAC16581-5 Revisión: L 265 © Copyright 2004-2011 ABB. Ejemplo 1 MoveJ p1. Esto resulta útil cuando los puntos programados están muy cercanos entre sí y se trabaja a velocidades elevadas. Ejemplo 2 MoveJ *. . En secciones de programa que incluyen StorePath-RestoPath. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MoveJ. fine. causados por la sobrecarga de la CPU al utilizar puntos de paso. no se requiere la comunicación con equipos externos ni la sincronización entre los equipos externos y los movimientos del robot.95 MoveJ . Cuando se utiliza el argumento \Conc. con los datos de velocidad vmax y los datos de zona z30. Este argumento no se utiliza normalmente. no se permite el uso de instrucciones con el argumento \Conc. Consulte también Más ejemplos en la página 267.

ToPoint Tipo de dato:robtarget El punto de destino de los ejes del robot y de los ejes externos. Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos.Mueve el robot mediante un movimiento de ejes Continuación Si se omite este argumento y ToPoint no es un punto de paro. El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí. Los datos de velocidad definen la velocidad del punto central de la herramienta. Los datos de zona describen el tamaño de la trayectoria de esquina generada. Reservados todos los derechos. especificada en los datos de velocidad. [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento del robot. A continuación. Zone Tipo de dato:zonedata Los datos de zona del movimiento. la reorientación de la misma y los ejes externos. A continuación. se sustituye por la velocidad correspondiente.95 MoveJ . [ \ID] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si el movimiento está sincronizado y coordinado y no está permitido en ningún otro caso.1 Instrucciones 1. Este argumento no puede usarse en los movimientos sincronizados coordinados en un sistema MultiMove. [ \V ] Velocity Tipo de dato: num Este argumento se utiliza para especificar la velocidad del TCP en mm/s directamente en la instrucción. la instrucción siguiente se ejecuta algún tiempo antes de que el robot alcance la zona programada. El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. . se sustituye por los datos de velocidad correspondientes. [ \Z ] Zone Continúa en la página siguiente 266 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.

v2000\V:=2200. el TCP se traslada a la velocidad programada aproximada (independientemente de si los ejes externos están coordinados). [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo (sistema de coordenadas) con el que está relacionada la posición de robot indicada en la instrucción.Mueve el robot mediante un movimiento de ejes Continuación Tipo de dato: num Este argumento se utiliza para especificar la exactitud de la posición del TCP del robot. la posición depende del sistema de coordenadas mundo. lo que da lugar a una trayectoria no lineal.1 Instrucciones 1. Si se omite. Esto significa que cada eje se mueve a una velocidad constante y que todos los ejes alcanzan al mismo tiempo el punto de destino. Es posible omitir este argumento. Ejemplo 1 MoveJ *. . Tool Tipo de dato: tooldata La herramienta en uso durante el movimiento del robot. se reduce la velocidad del TCP. grip3. Los datos de puntos de paro sustituyen a la zona especificada en el parámetro Zone.95 MoveJ . Si se especifica un punto de paro en los datos de zona. El punto central de la herramienta es el punto que se mueve hacia el punto de destino especificado. por otro lado. es necesario especificar este argumento. Si. Continúa en la página siguiente 3HAC16581-5 Revisión: L 267 © Copyright 2004-2011 ABB. Reservados todos los derechos. Normalmente se generan trayectorias de esquina cuando se transfiere el movimiento a la siguiente sección de la trayectoria. la ejecución del programa sólo continúa una vez que los ejes del robot y los ejes externos han alcanzado la posición adecuada. z40 \Z:=45. En términos generales. directamente en la instrucción. La longitud de la trayectoria de esquina se indica en mm y es sustituida por la zona correspondiente especificada en los datos de zona. Ejecución de programas El punto central de la herramienta se mueve hacia el punto de destino mediante la interpolación de los ángulos de los ejes. [ \Inpos ] In position Tipo de dato: stoppointdata Este argumento se utiliza para especificar los criterios de convergencia para la posición del TCP del robot en el punto de paro. se utiliza un TCP estacionario o ejes externos coordinados. Si no es posible alcanzar la velocidad programada para la orientación o para los ejes externos. Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción MoveJ. La herramienta se reorienta y los ejes externos se mueven al mismo tiempo que se mueve el TCP.

Sintaxis MoveJ [ ’\’ Conc ’. Ejemplo 4 MoveJ start. se mueve siguiendo una trayectoria no lineal hacia una posición almacenada en la instrucción. v2000. El TCP de la herramienta. Esta posición se especifica en el sistema de coordenadas de objeto de fixture. se mueve siguiendo una trayectoria no lineal hacia un punto de paro p5. Espera al menos 2 segundos a que se satisfagan las condiciones. sección Resumen sobre RAPID . z40. . Consulte los datos predefinidos inpos50 del tipo de dato stoppointdata.95 MoveJ .Datos de zonas en la página 1331 Definición de datos de punto de paro stoppointdata . Reservados todos los derechos. Ejemplo 3 MoveJ \Conc. v2000. El movimiento se realiza con los datos establecidos en v2000 y z40. La velocidad y el tamaño de zona del TCP son 2200 mm/s y 45 mm. grip3. grip3. z40.Mueve el robot mediante un movimiento de ejes Continuación El TCP de la herramienta. Las instrucciones lógicas posteriores se ejecutan mientras el robot está en movimiento.RAPID overview.1 Instrucciones 1. se mueve siguiendo una trayectoria no lineal hacia una posición almacenada en la instrucción.Datos de punto de paro en la página 1280 Continúa en la página siguiente 268 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.’ ] [ ToPoint’ :=’ ] < expression (IN) of robtarget > [ ’\’ ID ’:=’ < expression (IN) of identno >]’. se mueve siguiendo una trayectoria no lineal hacia la posición start. grip3.’ [ Speed ’:=’ ] < expression (IN) of speeddata > [ ’\’ V ’:=’ < expression (IN) of num > ] | [ ’\’ ’:=’ < expression (IN) of num > ] ’.Movimiento Definición de velocidad speeddata . El TCP de la herramienta. El TCP de la herramienta. grip3. v2000.Datos de velocidad en la página 1276 Definición de datos de zona zonedata .’ Información relacionada Para obtener más información so.’ [ Tool’ :=’ ] < persistent (PERS) of tooldata > [ ’\’ WObj’ :=’ < persistent (PERS) of wobjdata > ] ’.Consulte bre Otras instrucciones de posicionamiento Technical reference manual . Ejemplo 2 MoveJ p5. grip3. grip3 \WObj:=fixture. *. respectivamente. El robot considera que se encuentra en el punto cuando se satisface el 50% de la condición de posición y el 50% de la condición de velocidad de un punto de paro fine. grip3. fine \Inpos := inpos50.’ [Zone ’:=’ ] < expression (IN) of zonedata > [ ’\’ Z ‘:=’ < expression (IN) of num > ] [ ’\’ Inpos’ :=’ < expression (IN) of stoppointdata > ] ´.

sección Principios de movimiento y E/S .Sincronización con instrucciones lógicas 3HAC16581-5 Revisión: L 269 © Copyright 2004-2011 ABB.1 Instrucciones 1.RAPID overview.Datos del objeto de trabajo en la página 1323 Movimiento en general Technical reference manual . sección Principios de movimiento y E/S . .RAPID overview.RAPID overview.Sistemas de coordenadas Ejecución simultánea de programas Technical reference manual . sección Principios de movimiento y E/S Sistemas de coordenadas Technical reference manual .Mueve el robot mediante un movimiento de ejes Continuación Para obtener más información so.95 MoveJ . Reservados todos los derechos.Datos de herramientas en la página 1301 Definición de objetos de trabajo wobjdata .Consulte bre Definición de herramientas tooldata .

tool2. Los datos de velocidad definen la velocidad del punto central de la herramienta. 1. Los ejes del robot y los ejes externos se desplazan hasta la posición de destino a lo largo de una trayectoria no lineal. vmax. La salida do1 se activa en el centro de la trayectoria de esquina de p1. La señal digital de salida especificada se activa o desactiva en el centro de la trayectoria de esquina. con los datos de velocidad vmax y los datos de zona z30. en las tareas de movimiento. Ejemplo 1 MoveJDO p1. El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí. . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MoveJDO. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. z30.Mueve el robot mediante el movimiento de los ejes y activa una salida digital en la esquina Utilización MoveJDO(Move Joint Digital Output) se utiliza para mover el robot rápidamente de un punto a otro cuando no es imprescindible que el movimiento siga una línea recta. Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción).96 MoveJDO . El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. tool2 . Todos los ejes alcanzan la posición de destino al mismo tiempo. Reservados todos los derechos.96 MoveJDO . do1. Continúa en la página siguiente 270 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos.Mueve el robot mediante el movimiento de los ejes y activa una salida digital en la esquina 1. [ \ID ] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si el movimiento está sincronizado y coordinado y no está permitido en ningún otro caso.1 Instrucciones 1. El punto central de la herramienta (TCP). se mueve siguiendo una trayectoria no lineal hacia la posición p1. si se cuenta con un sistema MultiMove. Argumentos MoveJDO ToPoint [\ID] Speed [\T] Zone Tool [\WObj] Signal Value ToPoint Tipo de dato:robtarget El punto de destino de los ejes del robot y de los ejes externos. la reorientación de la misma y los ejes externos.

A continuación. Signal Tipo de dato: signaldo El nombre de la señal digital de salida que debe cambiar de valor. como se muestra en la figura siguiente. Zone Tipo de dato:zonedata Los datos de zona del movimiento. Continúa en la página siguiente 3HAC16581-5 Revisión: L 271 © Copyright 2004-2011 ABB. por otro lado. Si se omite. [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo (sistema de coordenadas) con el que está relacionada la posición de robot indicada en la instrucción.96 MoveJDO . la posición depende del sistema de coordenadas mundo. se utiliza un TCP estacionario o ejes externos coordinados. Si. Tool Tipo de dato: tooldata La herramienta en uso durante el movimiento del robot. El punto central de la herramienta es el punto que se mueve hacia el punto de destino especificado. Los datos de zona describen el tamaño de la trayectoria de esquina generada. Reservados todos los derechos. La señal digital de salida se activa o desactiva en el centro de la trayectoria de esquina en el caso de los puntos de paso. . Value Tipo de dato: dionum El valor deseado para la señal (0 ó 1).1 Instrucciones 1. Ejecución de programas Consulte la instrucción MoveJ para obtener más información acerca del movimiento de ejes. Es posible omitir este argumento. se sustituye por los datos de velocidad correspondientes. es necesario especificar este argumento.Mueve el robot mediante el movimiento de los ejes y activa una salida digital en la esquina Continuación [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento del robot.

Mueve el robot mediante el movimiento de los ejes y activa una salida digital en la esquina Continuación La figura muestra la activación/desactivación de una señal digital de salida en la trayectoria de esquina con MoveJDO.’ [ Zone ’:=’ ] < expression (IN) of zonedata > ’.Datos del objeto de trabajo en la página 1323 Movimiento en general Technical reference manual .’ Información relacionada Para obtener más información sobre Consulte Otras instrucciones de posicionamien.Datos de herramientas en la página 1301 Definición de objetos de trabajo wobjdata . z30. pero no en la ejecución paso a paso hacia atrás.’ [ Signal ’:=’ ] < variable (VAR) of signaldo>] ´.Datos de zonas en la página 1331 Definición de herramientas tooldata . cuando se utiliza un punto de paro en la instrucción MoveJDO. sección Principios de movimiento y E/S . Sintaxis MoveJDO [ ToPoint ’:=’ ] < expression (IN) of robtarget > [ ’\’ ID ’:=’ < expression (IN) of identno >]’. do1.96 MoveJDO . La señal de E/S especificada se activa o desactiva en el modo de ejecución continua y paso a paso hacia adelante.Mueve el robot mediante un movimiento de ejes en la página 265 Definición de velocidad speeddata .Technical reference manual . con el uso de MoveJ + SetDO.RAPID overview. v1000. recomendamos el uso de una secuencia de programa “normal”.’ [ Tool ’:=’ ] < persistent (PERS) of tooldata> [ ’\’ WObj’ :=’ < persistent (PERS) of wobjdata > ] ’.Sistemas de coordenadas Continúa en la página siguiente 272 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. la señal digital de salida se activa o desactiva cuando el robot alcanza el punto de paro.1 Instrucciones 1. p3 Cambia la señal do1 a 1 MoveJDO p2.RAPID overview. .’ [ Value ´:=’ ] < expression (IN) of dionum > ] ’. tool2. Reservados todos los derechos.RAPID overview. Sin embargo.Datos de velocidad en la página 1276 Definición de datos de zona zonedata .Movimiento Movimiento del robot mediante un movimiento de ejes MoveJ . 1.’ [ Speed ’:=’ ] < expression (IN) of speeddata > [ ’\’ T ’:=’ < expression (IN) of num > ] ’. p1 p2 Zone xx0500002196_es En el caso de los puntos de paro. secto ción Resumen sobre RAPID . sección Principios de movimiento y E/S Sistemas de coordenadas Technical reference manual .

96 MoveJDO .1 Instrucciones 1. sección Sincronización mediante instrucciones lógicas 3HAC16581-5 Revisión: L 273 © Copyright 2004-2011 ABB. . Reservados todos los derechos.RAPID overview.Mueve el robot mediante el movimiento de los ejes y activa una salida digital en la esquina Continuación Para obtener más información sobre Consulte Movimientos con parámetros de E/S Technical reference manual .

Todos los ejes alcanzan la posición de destino al mismo tiempo.97 MoveJSync . El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí. pero en este caso el procedimiento declarado localmente proc1 del módulo MyModule será llamado en medio de la trayectoria de esquina. se mueve siguiendo una trayectoria no lineal hacia la posición p1. en las tareas de movimiento. z30. z30. "proc1". con los datos de velocidad vmax y los datos de zona z30. . Igual que en el ejemplo 1 anterior. Continúa en la página siguiente 274 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o.Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de RAPID Utilización MoveJSync(Move Joint Synchronously) se utiliza para mover el robot rápidamente de un punto a otro cuando no es imprescindible que el movimiento siga una línea recta. vmax. vmax. Reservados todos los derechos.Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de RAPID 1. El procedimiento proc1 se ejecuta en el centro de la trayectoria de esquina de p1. [ \ID ] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si el movimiento está sincronizado y coordinado y no está permitido en ningún otro caso. El punto central de la herramienta (TCP). El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MoveJSync. tool2. En el centro de la trayectoria de esquina del punto de destino. "MyModule:proc1". tool2. Los ejes del robot y los ejes externos se desplazan hasta la posición de destino a lo largo de una trayectoria no lineal. Ejemplo 1 MoveJSync p1. si se cuenta con un sistema MultiMove. Ejemplo 2 MoveJSync p1.1 Instrucciones 1.97 MoveJSync . Argumentos MoveJSync ToPoint [\ID] Speed [\T] Zone Tool [\WObj] ProcName ToPoint Tipo de dato:robtarget El punto de destino de los ejes del robot y de los ejes externos. se ordena la ejecución del procedimiento de RAPID especificado. Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). tool2.

Los datos de velocidad definen la velocidad del punto central de la herramienta. [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento del robot. Zone Tipo de dato:zonedata Los datos de zona del movimiento. la posición depende del sistema de coordenadas mundo. Continúa en la página siguiente 3HAC16581-5 Revisión: L 275 © Copyright 2004-2011 ABB.Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de RAPID Continuación Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos. .1 Instrucciones 1. Reservados todos los derechos. la reorientación de la misma y los ejes externos. se sustituye por los datos de velocidad correspondientes. A continuación. por otro lado. Si. se utiliza un TCP estacionario o ejes externos coordinados. Si se omite. Tool Tipo de dato: tooldata La herramienta en uso durante el movimiento del robot. El procedimiento se ejecutará en el nivel de rutina TRAP (consulte Ejecución de programas más abajo). Es posible omitir este argumento. es necesario especificar este argumento. El punto central de la herramienta es el punto que se mueve hacia el punto de destino especificado. Ejecución de programas Consulte la instrucción MoveJ para obtener más información acerca de los movimientos de ejes. [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo (sistema de coordenadas) con el que está relacionada la posición de robot indicada en la instrucción.97 MoveJSync . Los datos de zona describen el tamaño de la trayectoria de esquina generada. La llamada al procedimiento es una llamada con enlazamiento en tiempo de ejecución y por tanto hereda sus propiedades. ProcName Procedure Name Tipo de dato: string El nombre del procedimiento de RAPID que debe ejecutarse en el centro de la trayectoria de esquina del punto de destino.

La llamada al procedimiento se ejecuta en el nivel de rutina TRAP. suele ser un retardo de entre 2 y 30 ms hasta que se ejecuta la rutina de RAPID especificada. MoveJSync p2. con distintos modos de ejecución: Modo de ejecución Ejecución del procedimiento de RAPID Continuous o Cycle De acuerdo con esta descripción Paso hacia delante En el punto de paro Paso hacia atrás Ninguno en absoluto MoveJSync es una encapsulación de las instrucciones TriggInt y TriggJ. No es posible usar la instrucción MoveJSync en rutinas TRAP. No es posible comprobar el procedimiento de RAPID con la ejecución paso a paso.97 MoveJSync . en función del tipo de movimiento que se esté realizando en ese momento. Si el centro de la trayectoria de esquina del punto de destino se alcanza durante la deceleración posterior a un paro de programa.1 Instrucciones 1. z30. Este error informa al usuario de que el cambio de modo de ejecución puede dar lugar a que no llegue a ejecutarse un procedimiento de RAPID que está en cola para su ejecución en la trayectoria. con el uso de MoveJ y otras instrucciones de RAPID una tras otra. como se muestra en la figura siguiente debajo. En la tabla se describe la ejecución del procedimiento de RAPID especificado. v1000. se genera un error. Continúa en la página siguiente 276 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. p3 Cuando el TCP se encuentra aquí. Reservados todos los derechos. Limitación Cuando el robot alcanza el centro de la trayectoria de esquina. “my_proc”. tool2. Si tras un punto de paro se cambia el modo de ejecución del modo continuo o cíclico al modo de ejecución paso a paso hacia adelante o hacia atrás. no se realizará la llamada al procedimiento (la ejecución del programa se para). . se ejecuta my_proc Zone p2 p1 xx0500002195_es En el caso de los puntos de paro.Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de RAPID Continuación El procedimiento de RAPID especificado se ejecuta cuando el TCP alcanza el centro de la trayectoria de esquina del punto de destino de la instrucción MoveJSync. La llamada al procedimiento se ejecuta en el siguiente inicio de programa. recomendamos el uso de una secuencia de programa “normal”.

’ [ Zone ’:=’ ] < expression (IN) of zonedata >´. . sección Resumen sobre RAPID .Movimientos de ejes del robot a partir de eventos eventos en la página 639 3HAC16581-5 Revisión: L 277 © Copyright 2004-2011 ABB. Reservados todos los derechos.Mueve el robot mediante un movimiento de ejes en la página 265 Definición de velocidad speeddata .Consulte bre Otras instrucciones de posicionamiento Technical reference manual .Datos de velocidad en la página 1276 Definición de datos de zona zonedata .1 Instrucciones 1.97 MoveJSync . sección Principios de movimiento y E/S Sistemas de coordenadas Technical reference manual .´ [ Tool ’:=’ ] < persistent (PERS) of tooldata > [ ’\’ WObj ´:=’ < persistent (PERS) of wobjdata > ] ’.Define una interrupción dependiente de una de una posición posición en la página 628 Movimientos de robot eje por eje con TriggJ .’ [ Speed ’:=’ ] < expression (IN) of speeddata > [ ’\’ T ’:=’ < expression (IN) of num >] ’.’ [ ProcName ´:=’ ] < expression (IN) of string > ] ’.Movimiento Movimiento del robot mediante un movimiento de ejes MoveJ . sección Principios de movimiento y E/S .Datos de herramientas en la página 1301 Definición de objetos de trabajo wobjdata .RAPID overview.RAPID overview.’ Información relacionada Para obtener más información so.RAPID overview.Datos del objeto de trabajo en la página 1323 Movimiento en general Technical reference manual .Datos de zonas en la página 1331 Definición de herramientas tooldata .Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de RAPID Continuación Sintaxis MoveJSync [ ToPoint ’:=’ ] < expression (IN) of robtarget > [ ’\’ ID ’:=’ < expression (IN) of identno >] ’.Sistemas de coordenadas Define una interrupción dependiente TriggInt .

Reservados todos los derechos. . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MoveL. causados por la sobrecarga de la CPU al utilizar puntos de paso. En secciones de programa que incluyen StorePath-RestoPath. Esto resulta útil cuando los puntos programados están muy cercanos entre sí y se trabaja a velocidades elevadas. Todo el movimiento requiere 5 segundos. v1000\T:=5. no se permite el uso de instrucciones con el argumento \Conc. fine. pero puede utilizarse para evitar los paros no deseados. z30. Continúa en la página siguiente 278 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Si se omite este argumento y ToPoint no es un punto de paro. Este argumento no se utiliza normalmente. Cuando se utiliza el argumento \Conc. Ejemplo 1 MoveL p1. grip3.Mueve el robot siguiendo una trayectoria lineal Utilización MoveL se utiliza para trasladar el punto central de la herramienta (TCP) en sentido lineal hacia un punto de destino determinado.Mueve el robot siguiendo una trayectoria lineal 1. si se cuenta con un sistema MultiMove. El TCP de la herramienta. en las tareas de movimiento.98 MoveL . por ejemplo.1 Instrucciones 1. esta instrucción puede usarse también para reorientar la herramienta. Argumentos MoveL [\Conc] ToPoint [\ID] Speed [\V] | [ \T] Zone [\Z] [\Inpos] Tool [\WObj] [\Corr] [ \Conc ] Concurrent Tipo de dato:switch Distintas instrucciones consecutivas se ejecutan mientras el robot está en movimiento. Consulte también Más ejemplos en la página 281. la instrucción siguiente se ejecuta algún tiempo antes de que el robot alcance la zona programada. se mueve a lo largo de una línea hacia la posición p1 con los datos de velocidad v1000 y los datos de zona z30. Ejemplo 2 MoveL *. v1000. Este argumento también resulta útil si. tool2. Cuando se desea que el TCP permanezca estacionario. tool2. no se requiere la comunicación con equipos externos ni la sincronización entre los equipos externos y los movimientos del robot.98 MoveL . grip3. el número de instrucciones de movimiento seguidas está limitado a 5. El TCP de la herramienta. se mueve linealmente hacia un punto fino almacenado en la instrucción (marcado con un asterisco *). Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o.

Mueve el robot siguiendo una trayectoria lineal Continuación Este argumento no puede usarse en los movimientos sincronizados coordinados en un sistema MultiMove. El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí.98 MoveL . especificada en los datos de velocidad. se sustituye por los datos de velocidad correspondientes. [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento del robot. Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). [ \V ] Velocity Tipo de dato: num Este argumento se utiliza para especificar la velocidad del TCP en mm/s directamente en la instrucción. [ \Z ] Zone Tipo de dato: num Continúa en la página siguiente 3HAC16581-5 Revisión: L 279 © Copyright 2004-2011 ABB. Los datos de velocidad definen la velocidad del punto central de la herramienta. A continuación. Reservados todos los derechos. ToPoint Tipo de dato:robtarget El punto de destino de los ejes del robot y de los ejes externos.1 Instrucciones 1. Zone Tipo de dato:zonedata Los datos de zona del movimiento. A continuación. [ \ID ] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si el movimiento está sincronizado y coordinado y no está permitido en ningún otro caso. Los datos de zona describen el tamaño de la trayectoria de esquina generada. . se sustituye por la velocidad correspondiente. la reorientación de la misma y los ejes externos. El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos.

• Los ejes externos no coordinados se ejecutan a una velocidad constante para que alcancen el punto de destino al mismo tiempo que los ejes del robot. Reservados todos los derechos. Ejecución de programas Las unidades del robot y las externas se trasladan hacia la posición de destino de la forma siguiente: • El TCP de la herramienta se mueve linealmente a una velocidad constante programada. Es posible omitir este argumento. El punto central de la herramienta es el punto que se mueve hacia la posición de destino especificada. [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo (sistema de coordenadas) con el que está relacionada la posición de robot indicada en la instrucción. • La herramienta se reorienta en intervalos iguales a lo largo de la trayectoria.98 MoveL . la posición depende del sistema de coordenadas mundo. [ \Inpos ] In position Tipo de dato: stoppointdata Este argumento se utiliza para especificar los criterios de convergencia para la posición del TCP del robot en el punto de paro. Si se omite. Si por otro lado se usa una herramienta estacionaria o ejes externos coordinados. directamente en la instrucción. Tool Tipo de dato: tooldata La herramienta en uso durante el movimiento del robot. Los datos de puntos de paro sustituyen a la zona especificada en el parámetro Zone. . se reduce la velocidad del TCP.Mueve el robot siguiendo una trayectoria lineal Continuación Este argumento se utiliza para especificar la exactitud de la posición del TCP del robot. [ \Corr ] Correction Tipo de dato: switch Los datos de corrección escritos en una entrada de corrección mediante una instrucción CorrWrite se añaden a la trayectoria y a la posición de destino si se utiliza este argumento.1 Instrucciones 1. Continúa en la página siguiente 280 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Si no es posible alcanzar la velocidad programada para la reorientación o para los ejes externos. es necesario especificar el argumento para realizar un movimiento lineal respecto del objeto de trabajo. La longitud de la trayectoria de esquina se indica en mm y es sustituida por la zona correspondiente especificada en los datos de zona.

grip3. grip3.’ ] [ ToPoint’ :=’ ] < expression (IN) of robtarget > [ ’\’ ID ’:=’ < expression (IN) of identno >] ’. Ejemplo 1 MoveL *. Esta posición se especifica en el sistema de coordenadas de objeto de fixture.’ [ Tool ’:=’ ] < persistent (PERS) of tooldata > [ ’\’ WObj’ :=’ < persistent (PERS) of wobjdata > ] [ ’\’ Corr ] ’. Ejemplo 3 MoveL \Conc. v2000. la ejecución del programa sólo continúa una vez que los ejes del robot y los ejes externos han alcanzado la posición adecuada. Reservados todos los derechos.’ [Zone ’:=’ ] < expression (IN) of zonedata > [ ’\’ Z ’:=’< expression (IN) of num > ] [ ’\’ Inpos’ :=’ < expression (IN) of stoppointdata > ] ´.’ Continúa en la página siguiente 3HAC16581-5 Revisión: L 281 © Copyright 2004-2011 ABB. Sintaxis MoveL [ ’\’ Conc ’. El robot considera que se encuentra en el punto cuando se satisface el 50% de la condición de posición y el 50% de la condición de velocidad de un punto de paro fine. grip3. se mueve linealmente hacia una posición. grip3 \WObj:=fixture. v2000 \V:=2200. se mueve linealmente hacia una posición almacenada en la instrucción. z40 \Z:=45. grip3. z40. fine \Inpos := inpos50. v2000. . Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción MoveL.’ [ Speed ’:=’ ] < expression (IN) of speeddata > [ ’\’ V ’:=’ < expression (IN) of num > ] | [ ’\’ T’ :=’ < expression (IN) of num > ] ’. *. grip3. Ejemplo 2 MoveL p5.. start. El TCP de la herramienta. El TCP de la herramienta. grip3.98 MoveL . Si se especifica un punto de paro en los datos de zona.1 Instrucciones 1. grip3. z40. El TCP de la herramienta. El movimiento se realiza con los datos establecidos en v2000 y z40.Mueve el robot siguiendo una trayectoria lineal Continuación Normalmente se general trayectorias de esquina cuando se transfiere el movimiento a la siguiente sección de una trayectoria. Ejemplo 4 MoveL start. La velocidad y el tamaño de la zona del TCP son de 2200 mm/s y 45 mm respectivamente. Consulte los datos predefinidos inpos50 del tipo de dato stoppointdata. Espera al menos 2 segundos a que se satisfagan las condiciones. El TCP de la herramienta. Las instrucciones lógicas posteriores se ejecutan mientras el robot está en movimiento. se mueve linealmente hacia un punto de paro p5. v2000. se mueve linealmente hacia una posición almacenada en la instrucción.

Technical reference manual .RAPID overview. to sección Resumen sobre RAPID .Datos de herramientas en la página 1301 Definición de objetos de trabajo wobjdata . sección Principios de movimiento y E/S .RAPID overview.Movimiento Definición de velocidad speeddata .Datos del objeto de trabajo en la página 1323 Escritura en una entrada de corrección CorrWrite .98 MoveL .RAPID overview. sección Principios de movimiento y E/S Sistemas de coordenadas Technical reference manual .Sistemas de coordenadas Ejecución simultánea de programas Technical reference manual .Escribe en un generador de correcciones en la página 81 Movimiento en general Technical reference manual .Sincronización con instrucciones lógicas 282 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos.Datos de zonas en la página 1331 Definición de datos de punto de paro stoppointdata .RAPID overview. . sección Principios de movimiento y E/S .Mueve el robot siguiendo una trayectoria lineal Continuación Información relacionada Para obtener más información sobre Consulte Otras instrucciones de posicionamien.1 Instrucciones 1.Datos de punto de paro en la página 1280 Definición de herramientas tooldata .Datos de velocidad en la página 1276 Definición de datos de zona zonedata .

Ejemplo 1 MoveLDO p1. do1. El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí.99 MoveLDO . 1. v1000.Mueve el robot linealmente y establece una salida digital en la esquina. la reorientación de la misma y los ejes externos.99 MoveLDO . El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. La señal digital de salida especificada se activa o desactiva en el centro de la trayectoria de esquina. [ \ID ] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si el movimiento está sincronizado y coordinado y no está permitido en ningún otro caso. se mueve a lo largo de una línea hacia la posición p1 con los datos de velocidad v1000 y los datos de zona z30. La salida do1 se activa en el centro de la trayectoria de esquina de p1. Reservados todos los derechos. en las tareas de movimiento. tool2. z30. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MoveLDO. Continúa en la página siguiente 3HAC16581-5 Revisión: L 283 © Copyright 2004-2011 ABB. Utilización MoveLDO (Move Linearly Digital Output) se utiliza para trasladar el punto central de la herramienta (TCP) en sentido lineal hacia un punto de destino determinado. El TCP de la herramienta.Mueve el robot linealmente y establece una salida digital en la esquina. esta instrucción puede usarse también para reorientar la herramienta. . Argumentos MoveLDO ToPoint [\ID] Speed [\T] Zone Tool [\WObj] Signal Value ToPoint Tipo de dato:robtarget El punto de destino de los ejes del robot y de los ejes externos.1. Los datos de velocidad definen la velocidad del punto central de la herramienta. Cuando se desea que el TCP permanezca estacionario. tool2. Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos. si se cuenta con un sistema MultiMove. Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción).1 Instrucciones 1.

Signal Tipo de dato: signaldo El nombre de la señal digital de salida que debe cambiar de valor. la posición depende del sistema de coordenadas mundo. se utiliza un TCP estacionario o ejes externos coordinados. como se muestra en la figura siguiente. La señal digital de salida se activa o desactiva en el centro de la trayectoria de esquina en el caso de los puntos de paso. Continúa en la página siguiente 284 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. . Ejecución de programas Consulte la instrucción MoveL para obtener más información acerca de los movimientos lineales. Es posible omitir este argumento. A continuación. Los datos de zona describen el tamaño de la trayectoria de esquina generada. Si. Si se omite. Tool Tipo de dato: tooldata La herramienta en uso durante el movimiento del robot. se sustituye por los datos de velocidad correspondientes. Reservados todos los derechos. El punto central de la herramienta es el punto que se mueve hacia la posición de destino especificada. [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo (sistema de coordenadas) con el que está relacionada la posición de robot indicada en la instrucción. Continuación [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento del robot. Zone Tipo de dato:zonedata Los datos de zona del movimiento.1 Instrucciones 1.Mueve el robot linealmente y establece una salida digital en la esquina. por otro lado.99 MoveLDO . Value Tipo de dato: dionum El valor deseado para la señal (0 ó 1). es necesario especificar este argumento.

la señal digital de salida se activa o desactiva cuando el robot alcanza el punto de paro. Continuación La figura muestra la activación/desactivación de una señal digital de salida en la trayectoria de esquina con MoveLDO. sección Principios de movimiento y E/S Sistemas de coordenadas Technical reference manual . pero no en la ejecución paso a paso hacia atrás. sección Principios de movimiento y E/S . p3 Cambia la señal do1 a 1 MoveLDO p2. tool2. Reservados todos los derechos.Technical reference manual .Mueve el robot linealmente y establece una salida digital en la esquina. z30.Datos de velocidad en la página 1276 Definición de datos de zona zonedata .Movimiento Movimiento lineal del robot MoveL . La señal de E/S especificada se activa o desactiva en el modo de ejecución continua y paso a paso hacia adelante. Sintaxis MoveLDO [ ToPoint ’:=’ ] < expression (IN) of robtarget > [ ’\’ ID ’:=’ < expression (IN) of identno >]’.Mueve el robot siguiendo una trayectoria lineal en la página 278 Definición de velocidad speeddata .’ Información relacionada Para obtener más información sobre Consulte Otras instrucciones de posicionamien.Datos del objeto de trabajo en la página 1323 Movimiento en general Technical reference manual . cuando se utiliza un punto de paro en la instrucción MoveLDO.Datos de herramientas en la página 1301 Definición de objetos de trabajo wobjdata .99 MoveLDO .Sistemas de coordenadas Continúa en la página siguiente 3HAC16581-5 Revisión: L 285 © Copyright 2004-2011 ABB. . v1000. p1 p2 Zone xx0500002193_es En el caso de los puntos de paro.RAPID overview.’ [ Value ´:=’ ] < expression (IN) of dionum > ] ’.RAPID overview. secto ción Resumen sobre RAPID .’ [ Zone ’:=’ ] < expression (IN) of zonedata > ’. Sin embargo.Datos de zonas en la página 1331 Definición de herramientas tooldata .RAPID overview.1 Instrucciones 1.’ [ Signal ’:=’ ] < variable (VAR) of signaldo >] ´.’ [ Tool ’:=’ ] < persistent (PERS) of tooldata > [ ’\’ WObj’ :=’ ] < persistent (PERS) of wobjdata > ’.’ [ Speed ’:=’ ] < expression (IN) of speeddata > [ ’\’ T ’:=’ < expression (IN) of num > ] ’. do1. con el uso de MoveL + SetDO. recomendamos el uso de una secuencia de programa “normal”. 1.

sección Principios de movimiento y E/S . Reservados todos los derechos.RAPID overview.Sincronización con instrucciones lógicas 286 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.99 MoveLDO .1 Instrucciones 1. . Continuación Para obtener más información sobre Consulte Movimientos con parámetros de E/S Technical reference manual .Mueve el robot linealmente y establece una salida digital en la esquina.

100 MoveLSync . El procedimiento proc1 se ejecuta en el centro de la trayectoria de esquina de p1. v1000.100 MoveLSync . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MoveLSync. pero en este caso el procedimiento declarado localmente proc1 del módulo MyModule será llamado en medio de la trayectoria de esquina.1 Instrucciones 1. El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. . z30. Speed Tipo de dato: speeddata Continúa en la página siguiente 3HAC16581-5 Revisión: L 287 © Copyright 2004-2011 ABB. esta instrucción puede usarse también para reorientar la herramienta. "proc1". "proc1". [ \ID ] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si el movimiento está sincronizado y coordinado y no está permitido en ningún otro caso. en las tareas de movimiento. Reservados todos los derechos. Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). v1000. Igual que en el ejemplo 1 anterior. tool2.Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID 1. se mueve a lo largo de una línea hacia la posición p1 con los datos de velocidad v1000 y los datos de zona z30. El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí.Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID Utilización MoveLSync (Move Linearly Synchronously) se utiliza para trasladar el punto central de la herramienta (TCP) en sentido lineal hacia un punto de destino determinado. se ordena la ejecución del procedimiento de RAPID especificado. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. si se cuenta con un sistema MultiMove. tool2. Cuando se desea que el TCP permanezca estacionario. Ejemplo 2 MoveLSync p1. z30. Ejemplo 1 MoveLSync p1. El TCP de la herramienta. Argumentos MoveLSync ToPoint [\ID] Speed [\T] Zone Tool [\WObj] ProcName ToPoint Tipo de dato:robtarget El punto de destino de los ejes del robot y de los ejes externos. En el centro de la trayectoria de esquina del punto de destino. tool2.

La llamada al procedimiento es una llamada con enlazamiento en tiempo de ejecución y por tanto hereda sus propiedades. Zone Tipo de dato:zonedata Los datos de zona del movimiento. se sustituye por los datos de velocidad correspondientes. [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo (sistema de coordenadas) con el que está relacionada la posición de robot indicada en la instrucción. Es posible omitir este argumento. por otro lado. El procedimiento de RAPID especificado se ejecuta cuando el TCP alcanza el centro de la trayectoria de esquina del punto de destino de la instrucción MoveLSync. la posición depende del sistema de coordenadas mundo. es necesario especificar este argumento.1 Instrucciones 1. Tool Tipo de dato: tooldata La herramienta en uso durante el movimiento del robot. Ejecución de programas Consulte la instrucción MoveL para obtener más información acerca de los movimientos lineales. Si se omite.100 MoveLSync . Los datos de velocidad definen la velocidad del punto central de la herramienta. como se muestra en la figura siguiente. la reorientación de la misma y los ejes externos. A continuación. [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento del robot. ProcName Procedure Name Tipo de dato: string El nombre del procedimiento de RAPID que debe ejecutarse en el centro de la trayectoria de esquina del punto de destino. Continúa en la página siguiente 288 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. El procedimiento se ejecutará en el nivel de rutina TRAP (consulte Ejecución de programas más abajo). Reservados todos los derechos. se utiliza un TCP estacionario o ejes externos coordinados. Si. El punto central de la herramienta es el punto que se mueve hacia la posición de destino especificada. Los datos de zona describen el tamaño de la trayectoria de esquina generada.Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID Continuación Los datos de velocidad que se aplican a los movimientos. .

La llamada al procedimiento se ejecuta en el nivel de rutina TRAP. suele ser un retardo de entre 2 y 30 ms hasta que se ejecuta la rutina de RAPID especificada.1 Instrucciones 1. v1000. No es posible usar la instrucción MoveLSync en rutinas TRAP. “my_proc”. Continúa en la página siguiente 3HAC16581-5 Revisión: L 289 © Copyright 2004-2011 ABB. En la tabla se describe la ejecución del procedimiento de RAPID especificado. MoveLSync p2. No es posible comprobar el procedimiento de RAPID con la ejecución paso a paso. La llamada al procedimiento se ejecuta en el siguiente inicio de programa. Si tras un punto de paro se cambia el modo de ejecución del modo continuo o cíclico al modo de ejecución paso a paso hacia adelante o hacia atrás.Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID Continuación La figura muestra el orden de ejecución del procedimiento de RAPID definido por el usuario al llegar al centro de la trayectoria de esquina. Si el centro de la trayectoria de esquina del punto de destino se alcanza durante la deceleración posterior a un paro de programa. con distintos modos de ejecución: Modo de ejecución: Ejecución del procedimiento de RAPID: Continuous o Cycle De acuerdo con esta descripción Paso hacia delante En el punto de paro Paso hacia atrás Ninguno en absoluto MoveLSync es una encapsulación de las instrucciones TriggInt y TriggL. en función del tipo de movimiento que se esté realizando en ese momento. se genera un error. Este error informa al usuario de que el cambio de modo de ejecución puede dar lugar a que no llegue a ejecutarse un procedimiento de RAPID que está en cola para su ejecución en la trayectoria. Limitación Cuando el robot alcanza el centro de la trayectoria de esquina. p3 Cuando el TCP se encuentra aquí. . Reservados todos los derechos. no se realizará la llamada al procedimiento (la ejecución del programa se para). z30. se ejecutamy_proc Zone p2 p1 xx0500002194_es En el caso de los puntos de paro.100 MoveLSync . recomendamos el uso de una secuencia de programa “normal”. tool2. con el uso de MoveL y otras instrucciones de RAPID una tras otra.

’ [ Zone ’:=’ ] < expression (IN) of zonedata > ’. sección Principios de movimiento y E/S Sistemas de coordenadas Technical reference manual .’ [ Tool ’:=’ ] < persistent (PERS) of tooldata > [ ’\’ WObj ´:=’ < persistent (PERS) of wobjdata > ] ’. sección Movimiento Movimiento lineal del robot MoveL .Datos de zonas en la página 1331 Definición de herramientas tooldata .RAPID overview.Define una interrupción dependiente de una posición una posición en la página 628 Movimientos de robot lineales con eventos TriggL .Datos de herramientas en la página 1301 Definición de objetos de trabajo wobjdata .Mueve el robot siguiendo una trayectoria lineal en la página 278 Definición de velocidad speeddata .Datos de velocidad en la página 1276 Definición de datos de zona zonedata .Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID Continuación Sintaxis MoveLSync [ ToPoint ’:=’ ] < expression (IN) of robtarget > [ ’\’ ID ’:=’ < expression (IN) of identno >]’.’ [ ProcName ´:=’ ] < expression (IN) of string > ] ´.’ [ Speed ’:=’ ] < expression (IN) of speeddata > [ ’\’ T ’:=’ < expression (IN) of num > ] ’.RAPID overview.Movimiento lineal del robot con eventos en la página 646 290 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Sistemas de coordenadas Define una interrupción dependiente de TriggInt .Datos del objeto de trabajo en la página 1323 Movimiento en general Technical reference manual .RAPID overview.100 MoveLSync .’ Información relacionada Para obtener más información sobre Consulte Otras instrucciones de posicionamiento Technical reference manual .1 Instrucciones 1. . sección Principios de movimiento y E/S . Reservados todos los derechos.

• Opcionalmente. • El valor de TCP de la herramienta debe estar ya definido. puede usarse algún tipo de herramienta alargadora.IRC5 con FlexPendant.Calibración de la rotación de una herramienta móvil 1. sección Programación y testing). la carga y el centro de gravedad de la herramienta ya deben estar definidos. • Mueva el TCP de la herramienta actual hasta el lugar más cercano posible de la punta de referencia fija (el origen del sistema de coordenadas de la herramienta) y definir un jointtarget para el punto de referencia RefTip. wobj0 y PDispOff deben estar activados antes de mover el robot. Reservados todos los derechos. • Mueva el robot sin cambiar la orientación de la herramienta.101 MToolRotCalib . necesita una punta de referencia fija en el espacio de trabajo del robot. La calibración puede hacerse con la instrucción MToolTCPCalib. es importante definir con la mayor corrección posible el sistema de coordenadas de la herramienta. Como ayuda para apuntar hacia el eje x y el eje x positivos. utilizando el FlexPendant (se describe en el Manual del operador . de forma que la punta de referencia fija apunte hacia algún punto del eje z positivo del sistema de coordenadas de herramienta y defina un jointtarget para el punto XPos. Descripción Para definir la orientación de la herramienta. Antes de usar la instrucción MToolRotCalib. La posición del robot y sus movimientos dependen siempre de su sistema de coordenadas de herramienta.1 Instrucciones 1. mueva el robot sin cambiar la orientación de la herramienta. Es posible usar LoadIdentify para la definición de la carga. es decir. .Calibración de la rotación de una herramienta móvil Utilización MToolRotCalib (Moving Tool Rotation Calibration) se utiliza para calibrar la rotación de una herramienta móvil. La calibración también puede realizarse con un método manual. de forma que la punta de referencia fija apunte hacia algún punto del eje z positivo del sistema de coordenadas de herramienta y defina un jointtarget para el punto ZPos. Para conseguir la máxima exactitud. es necesario satisfacer algunas condiciones previas: • La herramienta que se desea calibrar debe estar montada en el robot y definida con el correspondiente componente robhold(TRUE). del TCP y de la orientación de la herramienta. • Si se utiliza el robot con una exactitud total. • tool0. Continúa en la página siguiente 3HAC16581-5 Revisión: L 291 © Copyright 2004-2011 ABB.101 MToolRotCalib .

100]. y opcionalmente XPos. 0. [[20... tool0.001. MoveAbsJ pos_z. 0.. fine. fine. positive ! z-axis. pos_z. 0. [1. CONST jointtarget pos_tip := [.. v10.Calibración de la rotación de una herramienta móvil Continuación Consulte la figura siguiente para obtener una definición del objetivo de ejes para RefTip. Las direcciones x e y de la orientación de la herramienta se calculan de forma que coincidan con el sistema de coordenadas de la muñeca. ZPos. ! Instructions for creating or ModPos of pos_tip. ZPos y XPos en la instrucción MToolRotCalib. 0..1 Instrucciones 1.rot) en la dirección z de tool1. 0. tool0.].]. Ejemplo 1 ! Created with the world fixed tip pointing at origin. and positive x-axis of the wanted tool coordinate ! system.0]]. and pos_x MoveAbsJ pos_tip. tool0. ! Only tool calibration in the z direction MToolRotCalib pos_tip. fine. v10. PERS tooldata tool1:= [ TRUE.. pos_z. CONST jointtarget pos_x := [. Continúa en la página siguiente 292 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. 30. Reservados todos los derechos.101 MToolRotCalib . [0. [1. 0 . 0]]. 0. 0]. z x RefTip XPos x Herramienta alargadora Punta de referencia fija ZPos z xx0500002192_es Nota No se recomienda modificar las posiciones de RefTip. tool1. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MToolRotCalib. Se calcula la orientación de la herramienta (tframe. CONST jointtarget pos_z := [.]. v10. [0. MoveAbsJ pos_x. . 0.001].

. por ejemplo el TCP (tframe.trans).’ Información relacionada Para obtener más información sobre Consulte Calibración del TCP de una herramienta MToolTCPCalib .Calibración del TCP de una hefija rramienta estacionaria en la página 539 Calibración del TCP y la rotación de una SToolRotCalib . Si se omite este punto.101 MToolRotCalib . Sintaxis MToolRotCalib [ RefTip ’:=’ ] < expression (IN) of jointtarget > ’. El cálculo se basa en los 2 ó 3 jointtarget especificados.Calibración del TCP de una móvil herramienta móvil en la página 294 Calibración del TCP de una herramienta SToolTCPCalib .’ [ ZPos ’:=’ ] < expression (IN) of jointtarget > [ ’\’XPos ’:=’ < expression (IN) of jointtarget > ] ’. ZPos Tipo de dato: jointtarget El punto de alargador que define la dirección z positiva. El resto de los datos de la herramienta. Argumentos MToolRotCalib RefTip ZPos [\XPos]Tool RefTip Tipo de dato: jointtarget El punto al que está apuntando el TCP de la herramienta en la punta fijada a mundo.rot) de la herramienta tool1. Reservados todos los derechos.’ [ Tool ’:=’ ] < persistent (PERS) of tooldata > ’. las direcciones x e y de la herramienta coincidirán con los ejes correspondientes del sistema de coordenadas de la muñeca. [\XPos] Tipo de dato: jointtarget El punto de alargador que define la dirección x positiva. Se calcula la orientación completa (tframe. Ejecución de programas El sistema calcula y actualiza la orientación de la herramienta tfame. pos_z \XPos:=pos_x. Tool Tipo de dato: tooldata La variable persistente de la herramienta a calibrar. tool1.1 Instrucciones 1.rot en los datos tooldata especificados.Calibración del TCP y de la rotaherramienta fija ción de una herramienta estacionaria en la página 536 3HAC16581-5 Revisión: L 293 © Copyright 2004-2011 ABB. permanece sin cambios.Calibración de la rotación de una herramienta móvil Continuación Ejemplo 2 ! Calibration with complete tool orientation MToolRotCalib pos_tip.

La calibración también puede realizarse con un método manual.IRC5 con FlexPendant. del TCP y de la orientación de la herramienta. LoadIdentify puede usarse para la definición de la carga. necesita una punta de referencia fija en el espacio de trabajo del robot. es necesario satisfacer algunas condiciones previas: • La herramienta que se desea calibrar debe estar montada en el robot y definida con el correspondiente componente robhold (TRUE). • Mueva el TCP de la herramienta actual hasta el lugar más cercano posible de la punta de referencia fija y definir un jointtarget para el primer punto.102 MToolTCPCalib . Punta de referencia fija xx0500002191_es Continúa en la página siguiente 294 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. • Defina las tres posiciones adicionales (p2. La posición del robot y sus movimientos dependen siempre de su sistema de coordenadas de herramienta.Calibración del TCP de una herramienta móvil 1. p1. p3 y p4) todas con orientaciones diferentes. .Calibración del TCP de una herramienta móvil Utilización MToolTCPCalib (Moving Tool TCP Calibration) se usa para calibrar el TCP (punto central de la herramienta) de una herramienta móvil. Descripción Para definir el TCP de una herramienta.102 MToolTCPCalib . Antes de usar la instrucción MToolTCPCalib. es importante definir con la mayor corrección posible el sistema de coordenadas de la herramienta. utilizando el FlexPendant (se describe en el Manual del operador . sección Programación y testing). Para conseguir la máxima exactitud. • Si se utiliza el robot con una exactitud total. Definición de 4 jointtarget. la carga y el centro de gravedad de la herramienta ya deben estar definidos. wobj0 y PDispOff deben estar activados antes de mover el robot.1 Instrucciones 1. Reservados todos los derechos. • tool0. es decir. Consulte la figura siguiente. de p1 a p4.

max_err.. MoveAbsJ p4.trans) de tool1. 0.. MToolTCPCalib p1. fine.001.. Reservados todos los derechos. PERS tooldata tool1:= [TRUE. 0]]. fine.1 Instrucciones 1. fine. 0].. fine.p4 MoveAbsJ p1.. p3. Pos2 Tipo de dato: jointtarget El segundo punto de aproximación.Calibración del TCP de una herramienta móvil Continuación Nota No se recomienda modificar las posiciones de Pos1 a Pos4 en la instrucción MToolTCPCalib.. VAR num max_err. [1. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción MToolTCPCalib. tool0. 0 .. 0. CONST jointtarget p2 := [. v10.]... . 0.102 MToolTCPCalib . [1. CONST jointtarget p3 := [. 0. La reorientación entre las 4 posiciones debe ser la mayor posible.. 0. VAR num mean_err. . 0. tool0.. max_err y mean_err contendrán el error máximo en mm a partir del TCP calculado y el error medio en mm a partir del TCP calculado.]. p2. p4. 0]. Esto puede realizarse reorientando la herramienta y comprobando si el TCP permanece en la misma posición.]. Argumentos MToolTCPCalib Pos1 Pos2 Pos3 Pos4 Tool MaxErr MeanErr Pos1 Tipo de dato: jointtarget El primer punto de aproximación. [0. v10. 0. MoveAbsJ p2. tool0.0]]. Ejemplo 1 ! Created with actual TCP pointing at the world fixed tip CONST jointtarget p1 := [. MoveAbsJ p3. v10.001]. . CONST jointtarget p4 := [. Se calibra y actualiza el valor del TCP (tframe. respectivamente. También resulta adecuado comprobar la calidad del TCP antes de una calibración. ! Instructions for createing or ModPos of p1 . tool0. mean_err.]. 0. v10.. [[0. Pos3 Tipo de dato: jointtarget Continúa en la página siguiente 3HAC16581-5 Revisión: L 295 © Copyright 2004-2011 ABB. [0. poniendo el robot en configuraciones diferentes. tool1.

102 MToolTCPCalib . la exactitud con la que el robot se posicionó respecto de la punta.’ Información relacionada Para obtener más información sobre Consulte Calibración de la rotación de una herra.1 Instrucciones 1. MeanErr Tipo de dato: num La distancia media que separa los puntos de aproximación del TCP calculado.Calibración del TCP y de la rotaherramienta fija ción de una herramienta estacionaria en la página 536 296 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos.Calibración del TCP de una herramienta móvil Continuación El tercer punto de aproximación. . El cálculo se basa en los 4 valores especificados de jointtarget. Pos4 Tipo de dato: jointtarget El cuarto punto de aproximación.trans) en el valor especificado tooldata. Los demás datos de tooldata.’ [ Pos2 ’:=’ ] < expression (IN) of jointtarget > ’.’ [ Tool ’:=’ ] < persistent (PERS) of tooldata > ’.rot).’ [ Pos4 ’:=’ ] < expression (IN) of jointtarget > ’.’ [ MaxErr ’:=’ ] < variable (VAR) of num > ’. por ejemplo la orientación de la herramienta (tframe.MToolRotCalib .Calibración del TCP de una hefija rramienta estacionaria en la página 539 Calibración del TCP y la rotación de una SToolRotCalib .’ [ MeanErr’ :=’ ] < variable (VAR) of num > ’. MaxErr Tipo de dato: num El error máximo en mm para un punto de aproximación.’ [ Pos3 ’:=’ ] < expression (IN) of jointtarget > ’.Calibración de la rotación de una mienta móvil herramienta móvil en la página 291 Calibración del TCP de una herramienta SToolTCPCalib . permanecen sin cambios. Tool Tipo de dato: tooldata La variable persistente de la herramienta a calibrar. es decir. Ejecución de programas El sistema calcula y actualiza el valor del TCP en el sistema de coordenadas de la muñeca (tfame. Sintaxis MToolTCPCalib [ Pos1 ’:=’ ] < expression (IN) of jointtarget > ’.

DOC".Abre un archivo o un canal serie Utilización Open se utiliza para abrir un archivo o un canal serie para su lectura o escritura. Nombre del dispositivo de E/S Ruta completa del archi.103 Open . llave de memoria USB 3 Continúa en la página siguiente 3HAC16581-5 Revisión: L 297 © Copyright 2004-2011 ABB. Ejemplo 1 VAR iodev logfile.Abre un archivo o un canal serie 1. para escritura.. Se abre el archivo LOGFILE1. Consulte también Más ejemplos en la página 300.Tipo de dispositivo vo de E/S "HOME:" O bien diskhome1 "/hd0a/xxxx/HOME/"2 Disco Flash o disco duro "TEMP:" o disktemp1 "/hd0a/temp/" Disco Flash o disco duro "RemovableDisk1:" o usbdisk11 "RemovableDisk2:" o usbdisk21 "RemovableDisk3:" o usbdisk31 "RemovableDisk4:" o usbdisk41 "RemovableDisk5:" o usbdisk51 "RemovableDisk6:" o usbdisk61 "RemovableDisk7:" o usbdisk71 "RemovableDisk8:" o usbdisk81 "RemovableDisk9:" o usbdisk91 "RemovableDisk10:" o usbdisk101 "/bd0/" "/bd1/" "/bd2/" "/bd3/" "/bd4/" "/bd5/" "/bd6/" "/bd7/" "/bd8/" "/bd9/" Por ejemplo. "TEMP:". Ejemplo 2 VAR iodev logfile. El directorio predeterminado es HOME:. Open "LOGFILE1.DOC de la unidad HOME:. "com1:" o "pc:"(opcional).DOC". .. logfile \Write. por ejemplo "HOME:". . El nombre de referencia logfile se utiliza más tarde en el programa al escribir en el archivo. Reservados todos los derechos. Open "HOME:" \File:= "LOGFILE1.103 Open .. Mismo resultado que en el ejemplo 1. logfile \Write. Argumentos Open Object [\File] IODevice [\Read] | [\Write] | [\Append] [\Bin] Object Tipo de dato: string El objeto de E/S (dispositivo de E/S) que se desea abrir.1 Instrucciones 1.. En la tabla se describen los distintos dispositivos de E/S del controlador de robot. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción Open. .

DOC" o "LOGDIR/LOGFILE1. definido en los parámetros del sistema 6. ruta de servidor. "yyyy" indica un directorio cuyo nombre coincide con la ID del sistema 4.DOC" La ruta completa también puede especificarse en el argumento Object.¡Atención! RemovableDisk1 también puede ser una memoria USB en un sistema pero una unidad de disquete USB en otro. por ejemplo "LOGFILE1. Cadena de RAPID para definir el nombre del dispositivo 2. Reservados todos los derechos. 4. Nombre de canal serie definido por el usuario en los parámetros del sistema 5. ruta de servidor. Nombre del dispositivo de E/S Ruta completa del ar. "HOME:/LOGDIR/LOGFILE.103 Open . .Tipo de dispositivo vo de E/S "com1:"4 "com2:"4 "com3:"4 - Canal serie "pc:"5 "/c:/temp/"6 Disco montado 1. "xxxx" indica el nombre del sistema.Tipo de dispositivo de chivo E/S "HOME:" O bien diskhome1 "/xxxx/HOME/"2 "TEMP:" o disktemp "/c:/temp/yyyy/"3 Disco duro "RemovableDisk1:" o usbdisk1 "RemovableDisk2:" o usbdisk2 "RemovableDisk3:" o usbdisk3 "RemovableDisk4:" o usbdisk4 "/xxxx/HOME/ RemovableDisk1/" "/xxxx/HOME/ RemovableDisk2/" "/xxxx/HOME/ RemovableDisk3/" "/xxxx/HOME/ RemovableDisk4/" Por ejemplo. "xxxx" indica la ruta al directorio del sistema.Abre un archivo o un canal serie Continuación Nombre del dispositivo de E/S Ruta completa del archi.1 Instrucciones 1. llave de memoria USB 4 1. Cadena de RAPID para definir el nombre del dispositivo 2. Protocolo de aplicación. definido al arrancar el sistema 3. IODevice Tipo de dato: iodev Continúa en la página siguiente 298 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.DOC". definido en los parámetros del sistema En la tabla siguiente se describen los distintos dispositivos de E/S del controlador virtual. definido al crear el sistema 3. Protocolo de aplicación. [\File] Tipo de dato: string El nombre del archivo que se desea abrir.¡Atención! RemovableDisk1 también puede ser una memoria USB en un sistema pero una unidad de disquete USB en otro.

con el puntero del archivo situado en el final de éste. si así se desea. [\Append] Tipo de dato: switch Abre un archivo o un canal serie para escritura.103 Open . \Write. El conjunto de instrucciones que se usa para el acceso de un archivo o un canal serie binario es distinto del conjunto de instrucciones que se usa con los archivos alfanuméricos. Reservados todos los derechos. la instrucción actúa de la misma forma que el argumento \Write en el caso de los archivos o canales serie alfanuméricos (instrucción sin el argumento \Bin) y de la misma forma que el argumento \Append en el caso de los archivos o canales serie binarios (instrucción con el argumento \Bin). Al leer el archivo. Para abrir un archivo o un canal serie. \Write o \Append. La instrucción Rewind puede usarse para situar el puntero del archivo al principio del archivo. Si no se especifica ninguno de los argumentos \Read. A continuación. Cualquier información que se escriba a partir de ese momento se escribe al principio del archivo. La instrucción abre un archivo o un canal serie para lectura y escritura. su contenido se elimina. Si no se especifica ninguno de estos argumentos. Si el archivo seleccionado ya existe. utilice \Append sin los argumentos \Bin. Continúa en la página siguiente 3HAC16581-5 Revisión: L 299 © Copyright 2004-2011 ABB.Abre un archivo o un canal serie Continuación Una referencia al archivo o canal serie que se desea abrir. Si el archivo seleccionado ya existe. Para abrir un archivo o un canal serie. [\Write] Tipo de dato: switch Abre un archivo o un canal serie para escritura. \Append son excluyentes entre sí. la lectura comienza al principio de éste. [\Read] Tipo de dato: switch Abre un archivo o un canal serie para lectura. la instrucción abre un archivo o un canal serie binario. La instrucción abre un archivo o un canal serie alfanumérico para escritura. esta referencia se utiliza para las operaciones de lectura y escritura del archivo o canal serie. tanto para lectura como para escritura. cualquier información que se escriba a partir de ese momento se escribe al final del archivo. [\Bin] Tipo de dato: switch El archivo o canal serie se abre en el modo binario. Los argumentos \Read. . utilice \Append y los argumentos \Bin.1 Instrucciones 1.

A continuación. . raw_data_out se deja sin contenido y se empaqueta con el encabezado de DeviceNet.2. "/FCI1/:dsqc328_1". En este ejemplo. Se abre un dispositivo. io_device \Bin. Close io_device. El nombre de referencia printer se utiliza más tarde al escribir y cerrar el canal serie. UnpackRawBytes raw_data_in. Por ejemplo. 1. Open "/FCI1:/dsqc328_1". rawbytes raw_data_out. raw_data_out. y los datos válidos actuales de raw_data_out se escriben en el dispositivo. almacenando en raw_data_in la información leída. answer \ASCII:=10.103 Open . PackDNHeader "10". num float := 0. Es posible abrir el mismo archivo físico varias veces simultáneamente. raw_data_out. Reservados todos los derechos. el programa espera al menos 1 segundo antes de leer del dispositivo. ClearRawBytes raw_data_out.1 Instrucciones 1. WriteStrBin printer. raw_data_in \Time:=1. Después de cerrar el dispositivo “/FCI1/:dsqc328_1. (RawBytesLen(raw_data_out)+1) \Float4. rawbytes raw_data_in. Open "com2:". Se abre el canal serie com2: para lectura y escritura binarias. pero cada ejecución de la instrucción Open devuelve una referencia distinta al archivo (tipo de dato iodev). Close printer.. string answer.2. . raw_data_out. Ejecución de programas El archivo o canal serie especificado se abre de forma que sea posible leer su contenido o escribir en él. Ejemplo 1 VAR iodev printer. WriteRawBytes io_device. Ejemplo 2 VAR VAR VAR VAR VAR iodev io_device. ReadRawBytes io_device. "20 1D 24 01 30 64". es posible tener un puntero para escribir y otro puntero para leer del mismo archivo de forma simultánea.Abre un archivo o un canal serie Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción Open. printer \Bin. "This is a message to the printer\0D". los datos leídos se desempaquetan dando lugar a una cadena de 10 caracteres que se almacena en answer. junto con un valor de coma flotante con el valor 0. PackRawBytes float. Continúa en la página siguiente 300 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB..

Si se ha usado anteriormente para abrir un archivo. cualquier archivo o canal serie que esté abierto en la tarea de programa se cierra y el descriptor de E/S de la variable del tipo iodev se restablece. sección Fieldbus Command Interface 3HAC16581-5 Revisión: L 301 © Copyright 2004-2011 ABB. este error puede ser gestionado en el gestor de errores. En caso de un reinicio tras una caída de alimentación. lectura y cierre de archivos o Technical reference manual . Los archivos o canales serie de este tipo pertenecientes a todo el sistema seguirán estando abiertos. . Gestión de errores Si no es posible abrir un archivo.RAPID overview. Reservados todos los derechos.103 Open . todos los archivos o canales serie abiertos del sistema se cierran y el descriptor de E/S de la variable del tipo iodev se restablece.Robot communication and I/O control. Una excepción a esta regla la constituyen las variables instaladas como compartidas en el sistema. canales serie sección Resumen sobre RAPID .’ Información relacionada Para obtener más información sobre Consulte Escritura. es necesario cerrar el archivo antes de ejecutar una nueva instrucción Open con la misma variable iodev. con los tipos global VAR o LOCAL VAR. En caso de un paro de programa y traslado del PP a Main. Sintaxis Open [Object’ :=’] <expression (IN) of string> [’\’File’:=’ <expression (IN) of string>] ’.Comunicación Fieldbus Command Interface Application manual .’ [IODevice ’:=’] <variable (VAR) of iodev> [’\’Read] | [’\’Write] | [’\’Append] [’\’Bin] ’.Abre un archivo o un canal serie Continuación La variable iodev utilizada al abrir un archivo o canal serie debe estar libre para su uso. A continuación. la variable de sistema ERRNO cambia a ERR_FILEOPEN.1 Instrucciones 1.

Reservados todos los derechos.1 Instrucciones 1. Path Tipo de dato: string La ruta del directorio. Argumentos OpenDir Dev Path Dev Tipo de dato: dir Una variable que hace referencia a un directorio. WHILE ReadDir(directory. Esta variable se utiliza posteriormente para hacer lecturas del directorio.Abre un directorio Utilización OpenDir se utiliza para abrir un directorio para su análisis posterior. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción OpenDir. Sintaxis OpenDir [ Dev’:=’ ] < variable (VAR) of dir>’.104 OpenDir . filename) DO TPWrite filename. .104 OpenDir . Ejemplo 1 PROC lsdir(string dirname) VAR dir directory. OpenDir directory. dirname. A continuación.’ Continúa en la página siguiente 302 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Abre un directorio 1. la variable de sistema ERRNO cambia a ERR_FILEACC. capturada con OpenDir. Gestión de errores Si la ruta apunta a un directorio que no existe o si hay demasiados directorios abiertos a la vez. ENDWHILE CloseDir directory. VAR string filename. Limitaciones Los directorios abiertos deben ser cerrados siempre por el usuario después de las operaciones de lectura (instrucción CloseDir). ENDPROC Este ejemplo imprime los nombres de todos los archivos o subdirectorios que se encuentran dentro del directorio especificado. este error puede ser gestionado en el gestor de errores.’ [ Path’:=’ ] < expression (IN) of string>’.

Crea un nuevo directorio en la página 227 Eliminación de un directorio RemoveDir .Estructura de directorio de archivos en la página 1189 Creación de un directorio MakeDir .Cambia el nombre de un archivo en la página 380 3HAC16581-5 Revisión: L 303 © Copyright 2004-2011 ABB.104 OpenDir .1 Instrucciones 1. .Elimina un directorio en la página 377 Lectura de un directorio ReadDir . Reservados todos los derechos.Abre un directorio Continuación Información relacionada Para obtener más información sobre Consulte Directorio dir .Elimina un archivo en la página 379 Cambio del nombre de un archivo RenameFile .Lee la siguiente entrada de un directorio en la página 1016 Cierre de un directorio CloseDir .Cierra un directorio en la página 60 Eliminación de un archivo RemoveFile .

PackDNHeader "0E". empezando por el número de índice RawBytesLen(raw_data)+1 (se hace después de PackDNHeader). Se empaqueta el encabezado del mensaje explícito de DeviceNet con el código de servicio "10" y la cadena de ruta "201D 24 01 30 64" y lo almacena en el dato raw_data correspondiente para la definición del tiempo de filtro del borde de elevación de la señal de entrada 1 de una unidad de E/S.1 Instrucciones 1.9. Este mensaje está listo para su envío sin necesidad de llenar el mensaje con datos adicionales. Ejemplo 1 VAR rawbytes raw_data.Empaqueta un encabezado de DeviceNet en datos rawbytes Utilización PackDNHeader se utiliza para empaquetar el encabezado de un mensaje explícito de DeviceNet en un 'contenedor' del tipo rawbytes. raw_data.20 01 24 01 30 06. Longitud de cadena 2 caracteres Formato ’0’ -’ 9’.Empaqueta un encabezado de DeviceNet en datos rawbytes 1.2001 24 01 30 06. ’a’ -’f’. PackDNHeader "10". Ejemplo 2 VAR rawbytes raw_data. Reservados todos los derechos.4". por ejemplo "IF". Esto puede hacerse con la instrucción PackRawBytes. . Debe especificarse con un código hexadecimal en una cadena. raw_data.’F’ Rango "00" . la parte de datos del mensaje de DeviceNet puede definirse con la instrucción PackRawBytes. ’A’ .105 PackDNHeader . A continuación."FF" Continúa en la página siguiente 304 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. "20 1D 24 01 30 64".4" y lo almacena en el dato raw_data correspondiente para obtener el número de serie de alguna unidad de E/S. por ejemplo obtener o definir el atributo. "6.9. Argumentos PackDNHeader Service Path RawData Service Tipo de dato: string El servicio que debe realizarse. Se empaqueta el encabezado del mensaje explícito de DeviceNet con el código de servicio "0E" y la cadena de ruta "6. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción PackDNHeader.105 PackDNHeader . Este mensaje debe complementarse con datos del tiempo de filtro.

Para obtener una descripción más detallada.Nº de bytes Nota zado RawData Formato 1 Código interno del IRC5 para DeviceNet Servicio 1 Código hexadecimal del servicio Tamaño de ruta 1 Bytes de entrada Ruta x Caracteres ASCII A continuación. (Especificación de DeviceNet ODVA revisión 2. . Path Tipo de dato: string Los valores de Path se almacenan en el archivo EDS. Se admiten tanto el formato de cadena largo (por ejemplo. (Especificación de DeviceNet ODVA revisión 2.0. Reservados todos los derechos.´ Continúa en la página siguiente 3HAC16581-5 Revisión: L 305 © Copyright 2004-2011 ABB.20 1D 24 01 30 64. • A continuación.8.´ [Path ´:=´ ] < expression (IN) of string> ´.0) de la Open DeviceNet Vendor Association. se hace lo siguiente con el contenedor del mensaje de DeviceNet RawData: • Se borra completamente en primer lugar.´ [RawData ´:=´ ] < variable (VAR) of rawbytes> ´. la parte de datos del mensaje de DeviceNet puede definirse con la instrucción PackRawBytes. Formato del encabezado de DeviceNet La instrucción PackDNHeader crea un encabezado de mensaje de DeviceNet con el formato siguiente: Formato de encabe.0. Sintaxis PackDNHeader [Service ´:=´ ] < expression (IN) of string> ´. consulte el documento ODVA DeviceNet Specification revision 2.1 Instrucciones 1. se empaqueta la parte de encabezado con datos.1") como el corto (por ejemplo "20 1D 24 01 30 64"). "6. RawData Tipo de dato: rawbytes El contenedor de variable que se desea empaquetar con los datos del encabezado del mensaje.Empaqueta un encabezado de DeviceNet en datos rawbytes Continuación Los valores de Service se almacenan en el archivo EDS. consulte el documento ODVA DeviceNet Specification revision 2. a partir del número de índice capturado con (RawBytesLen(my_rawdata)+1). Ejecución de programas Durante la ejecución del programa. Para obtener una descripción más detallada. a partir del número de índice 1 de RawData.0) de la Open DeviceNet Vendor Association.105 PackDNHeader .

105 PackDNHeader .Obtiene la longitud de un dato de tipo rawbytes en la página 1011 Borrado del contenido de un dato de ClearRawBytes . sección Resumen sobre RAPID .Borra el contenido de un dato de tipo rawbytes tipo rawbytes en la página 53 Copiado del contenido de un dato de CopyRawBytes .Copia el contenido de un dato de tipo rawbytes tipo rawbytes en la página 71 Empaquetamiento de datos en datos PackRawBytes .Matemáticas Funciones de bits Funciones para cadenas de caracteres Technical reference manual .RAPID overview.Funciones para cadenas de caracteres 306 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.1 Instrucciones 1. .Lee datos de tipo rawbytes en la página 374 Desempaquetamiento de datos de un UnpackRawBytes .Desempaqueta datos de un dato dato rawbytes de tipo rawbytes en la página 704 Funciones para bits/bytes Technical reference manual .Escribe un dato de tipo rawbytes en la página 772 Lectura de un dato rawbytes ReadRawBytes . sección Resumen sobre RAPID .Empaqueta datos en un dato de rawbytes tipo rawbytes en la página 307 Escritura de un dato rawbytes WriteRawBytes . Reservados todos los derechos.RAPID overview.Empaqueta un encabezado de DeviceNet en datos rawbytes Continuación Información relacionada Para obtener más información sobre Consulte rawbytes datos rawbytes .Datos sin formato en la página 1254 Obtención de la longitud de un dato rawbytes RawBytesLen .

VAR num integer := 8. raw_data. byte o string en un contenedor del tipo rawbytes. VAR byte data1 := 122.4. raw_data. Ejemplo 5 PackRawBytes data1. dnum. VAR string string1:="abcdefg". Ejemplo 6 PackRawBytes string1. Ejemplo 3 PackRawBytes bigInt. raw_data. Ejemplo 2 PackRawBytes bigInt.106 PackRawBytes . (RawBytesLen(raw_data)+1) \ASCII.4 decimal. El contenido de los 4 bytes siguientes al encabezado de raw_data será un 4294967295 decimal. A continuación. (RawBytesLen(raw_data)+1) \IntX := LINT. Ejemplo 1 PackRawBytes integer. el código ASCII de "z". El contenido del byte siguiente de raw_data será 122. (RawBytesLen(raw_data)+1) \ASCII. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción PackRawBytes. PackDNHeader "10". raw_data.1 Instrucciones 1. Empaquetamiento del encabezado de DeviceNet en un dato raw_data. Reservados todos los derechos.106 PackRawBytes . RawBytesLen(raw_data)+1) \Float4. Ejemplo 4 PackRawBytes float.Empaqueta datos en un dato de tipo rawbytes 1. El contenido de los 4 bytes siguientes de raw_data será un 13. se empaquetan en raw_data los datos de bus de campo solicitados. VAR num float := 13. VAR rawbytes raw_data. Continúa en la página siguiente 3HAC16581-5 Revisión: L 307 © Copyright 2004-2011 ABB. raw_data. En el ejemplo siguiente se demuestra la posibilidad de añadir distintos tipos de datos. El contenido de los 4 bytes siguientes al encabezado de raw_data será un 8 decimal. con ayuda de PackRawBytes. raw_data. raw_data. VAR dnum bigInt := 4294967295. El contenido de los 8 bytes siguientes al encabezado de raw_data será un 4294967295 decimal.Empaqueta datos en un dato de tipo rawbytes Utilización PackRawBytes se utiliza para empaquetar el contenido de las variables de tipo num. (RawBytesLen(raw_data)+1) \IntX := DINT. VAR byte byte1. . "20 1D 24 01 30 64". (RawBytesLen(raw_data)+1) \IntX := UDINT.

codificado en ASCII. dnum. (RawBytesLen(raw_data)+1) \Hex1. [ \IntX ] Tipo de dato: inttypes El valor Value a empaquetar tiene el formato num o dnum. Continúa en la página siguiente 308 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. RawData Tipo de dato: rawbytes El contenedor de variable en el que se almacenarán los datos empaquetados.024.1 Instrucciones 1.106 PackRawBytes . DINT y \Float4. UDINT. DeviceNet utiliza little-endian. Se trata de un entero y debe almacenarse en RawData de acuerdo con esta constante especificada del tipo de dato inttypes. raw_data. byte o string.UINT. No es posible usar una matriz. INT. El contenido del byte siguiente de raw_data será "1F" hexadecimal. PackRawBytes byte1. Tanto ProfiBus como InterBus utilizan big-endian. StartIndex Tipo de dato: num StartIndex. Argumentos PackRawBytes Value RawData [ \Network ] StartIndex [\Hex1]|[\IntX ] | [ \Float4 ] | [ \ASCII ] Value Tipo de dato: anytype Datos a empaquetar en RawData.Empaqueta datos en un dato de tipo rawbytes Continuación El contenido de los 7 bytes siguientes de raw_data será "abcdefg". [ \Hex1 ] Tipo de dato: switch El Value a empaquetar tiene el formato byte y debe convertirse al formato hexadecimal y almacenarse en 1 byte en RawData. los valores integer y float se empaquetan con la representación little-endian (sin el orden de la red) en RawData. indica en qué lugar de Value debe situarse el primer byte contenido en RawData. Sólo relevante junto con los parámetros opcionales \IntX . Los tipos de datos permitidos son: num. Ejemplo 7 byte1 := StrToByte("1F" \Hex). Reservados todos los derechos. entre 1 y 1. Sin este modificador. [ \Network ] Tipo de dato: switch Indica que los valores de tipo integer y float deben empaquetarse con la representación big-endian (orden de red) en RawData. .

Se permiten las combinaciones siguientes: Tipo de dato de Value: Parámetros de opción permitidos: num *) \IntX dnum **) \IntX num \Float4 string \ASCII (de 1 a 80 caracteres) byte \Hex1 \ASCII ob *) Debe ser un entero dentro del rango de valor de la constante simbólica seleccionada.1 Instrucciones 1. se almacenará en RawData como 1 byte que interpreta Value como el código ASCII de un carácter. La longitud actual de los bytes válidos de la variable RawData cambia a: • (StartIndex + número_de_bytes_empaquetados . UDINT. UINT.Empaqueta datos en un dato de tipo rawbytes Continuación Consulte Datos predefinidos en la página 310. SINT.106 PackRawBytes . USINT. Es imprescindible programar uno de los argumentos \Hex1. [ \ASCII ] Tipo de dato: switch El Value a empaquetar tiene el formato byte o string. Reservados todos los derechos. Si el valor Value a empaquetar tiene el formato byte. Ejecución de programas Durante la ejecución del programa.1) • La longitud actual de los bytes válidos de la variable RawData no cambia si la totalidad de la operación de empaquetado se realiza dentro de la longitud anterior de bytes válidos de la variable RawData. UDINT. Los datos de cadena no son terminados con NULL por el sistema en el caso de los datos de tipo rawbytes. DINT o LINT. se almacenará en RawData como caracteres ASCII con tantos caracteres como contenga Value. \Float4 o \ASCII . *) Debe ser un entero dentro del rango de valor de la constante simbólica seleccionada. [ \Float4 ] Tipo de dato: switch El Value a empaquetar tiene el formato num y debe almacenarse en RawData como flotante en 4 bytes. INT. SINT. INT o DINT. El programador es el responsable de añadir un encabezado de cadena en caso necesario (obligatorio en el caso de DeviceNet). ULINT. Continúa en la página siguiente 3HAC16581-5 Revisión: L 309 © Copyright 2004-2011 ABB. se empaquetan los datos de la variable de tipo anytype en un contenedor de tipo rawbytes. \IntX. UINT. USINT. . Si el valor Value a empaquetar tiene el formato de cadena (de 1 a 80 caracteres).

8 388 608 *) 0 .4 503 599 627 370 496... .32 768 . 4 503 no 599 627 370 496 **) *) *) Limitación de RAPID para el almacenamiento de enteros en el tipo de dato num...´ [RawData ´:=´ ] < variable (VAR) of rawbytes> [ ’\’ Network ] ´. 4 294 967 295 ****) ULINT 8 Entero de 8 byte sin signo 0 ....’ Información relacionada Para obtener más información sobre Consulte rawbytes datos rawbytes .Borra el contenido de un dato de tipo rawbytes en la página 53 Copiado del contenido de un dato de tipo CopyRawBytes . Puede usarlas para especificar el entero en el parámetro \IntX.. ****) Rango al utilizar una variable dnum e inttype UDINT. ***) Rango al utilizar una variable dnum e inttype DINT.. Reservados todos los derechos.. 255 UINT 2 Entero de 2 byte sin signo 0 ... 32 767 no DINT -4 Entero de 4 bytes con sig. Sintaxis PackRawBytes [Value ´:=´ ] < expression (IN) of anytype> ´. **) *) Limitación de RAPID para el almacenamiento de enteros en el tipo de dato dnum..Empaqueta datos en un dato de tipo rawbytes Continuación Datos predefinidos Se han definido las constantes simbólicas siguientes para el tipo de dato inttypes. 65 535 UDINT 4 Entero de 4 byte sin signo 0 .Valor cons.Formato de entero bólica tante Rango de valores enteros USINT 1 Entero de 1 byte sin signo 0 .. 127 no INT -2 Entero de 2 bytes con sig.128.1 Instrucciones 1. 4 503 599 627 370 496**) SINT -1 Entero de 1 bytes con sig.. 2 147 483 647 ***) LINT -8 Entero de 8 bytes con sig.Datos sin formato en la página 1254 Obtención de la longitud de un dato rawbytes RawBytesLen ....Copia el contenido de un dato rawbytes de tipo rawbytes en la página 71 Continúa en la página siguiente 310 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB..´ [StartIndex ´:=´ ] < expression (IN) of num> [ ’\’ Hex1 ] | [ ’\’ IntX’ :=’ < expression (IN) of inttypes>] |[ ’\’ Float4 ] | [ ’\’ ASCII]’ . Constante sim.. 8 388 608 *) no -2 147 483 648 ..8 388 607 .Obtiene la longitud de un dato de tipo rawbytes en la página 1011 Borrado del contenido de un dato de tipo rawbytes ClearRawBytes .106 PackRawBytes ....

106 PackRawBytes .RAPID overview. Reservados todos los derechos. sección Resumen sobre RAPID .Funciones de bits Funciones para cadenas de caracteres Technical reference manual .Empaqueta un encabezado de DeviceNet en datos rawbytes en la página 304 Escritura de un dato rawbytes WriteRawBytes .Funciones para cadenas de caracteres 3HAC16581-5 Revisión: L 311 © Copyright 2004-2011 ABB.RAPID overview.Escribe un dato de tipo rawbytes en la página 772 Lectura de un dato rawbytes ReadRawBytes .Empaqueta datos en un dato de tipo rawbytes Continuación Para obtener más información sobre Consulte Empaquetamiento de un encabezado de DeviceNet en datos rawbytes PackDNHeader . .1 Instrucciones 1. sección Resumen sobre RAPID .Desempaqueta datos de rawbytes un dato de tipo rawbytes en la página 704 Funciones para bits/bytes Technical reference manual .Lee datos de tipo rawbytes en la página 374 Desempaquetamiento de datos de un dato UnpackRawBytes .

es decir. Trayectoria programada v TCP del robot con limitación PathAccLim TCP del robot t xx0500002184_es Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción PathAccLim. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. si se cuenta con un sistema MultiMove. de forma que no es posible usarla directamente para proteger al equipo de grandes aceleraciones. la aceleración en la base de coordenadas de la trayectoria. La limitación se realiza a lo largo de la trayectoria de movimiento. en las tareas de movimiento. la aceleración en la base de coordenadas mundo. Consulte también Más ejemplos en la página 314. TRUE \DecelMax := 4. FALSE.Reduce la aceleración del TCP a lo largo de la trayectoria 1.107 PathAccLim .1 Instrucciones 1. Reservados todos los derechos. Ejemplo 1 PathAccLim TRUE \AccMax := 4. Ejemplo 2 PathAccLim FALSE. Esta instrucción no limita la aceleración total del equipo. . Continúa en la página siguiente 312 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Se limita a 4 m/s 2 la aceleración y la deceleración del TCP.107 PathAccLim .Reduce la aceleración del TCP a lo largo de la trayectoria Utilización PathAccLim (Path Acceleration Limitation) se usa para establecer o restablecer limitaciones de aceleración y/o deceleración de TCP a lo largo de la trayectoria de movimiento. es decir. La aceleración/deceleración que se limita es la aceleración/deceleración tangencial en la dirección de la trayectoria.

FALSE) se establece automáticamente en los casos siguientes: • En los arranques en frío • Cuando se carga un nuevo programa • Cuando se inicia la ejecución del programa desde el principio Si se usa una combinación de instrucciones AccSet y PathAccLim. Sólo debe usarse si AccLim tiene el valor TRUE. Argumentos PathAccLim AccLim [\AccMax] DecelLim [\DecelMax] AccLim Tipo de dato: bool TRUE si debe haber una limitación de la aceleración.107 PathAccLim . . de lo contrario. el sistema reduce la aceleración y deceleración en el orden siguiente: • Según AccSet • Según PathAccLim Continúa en la página siguiente 3HAC16581-5 Revisión: L 313 © Copyright 2004-2011 ABB.Reduce la aceleración del TCP a lo largo de la trayectoria Continuación Se devuelven la aceleración y deceleración del TCP a sus valores máximos (predeterminados). FALSE. de lo contrario. FALSE. La aceleración/deceleración máxima (PathAccLim FALSE. DecelLim Tipo de dato: bool TRUE si debe haber una limitación de la deceleración.1 Instrucciones 1. Ejecución de programas Las limitaciones de aceleración/deceleración se aplican al siguiente segmento ejecutado por el robot y es válido hasta que se ejecuta una nueva instrucción PathAccLim. [ \DecelMax ] Tipo de dato: num El valor absoluto de la limitación de deceleración en m/s 2. [ \AccMax ] Tipo de dato: num El valor absoluto de la limitación de aceleración en m/s 2. Reservados todos los derechos. Sólo debe usarse si DecelLim tiene el valor TRUE.

La deceleración del TCP se limita a 4 m/s2 entre p2’ y p3. MoveL p2. tener el mismo valor en AccMax y DecelMax. xx0500002183 Ejemplo 1 MoveL p1. Gestión de errores Si se establece un valor demasiado bajo para los parámetros \AccMax o \DecelMax. MoveL p2. FALSE. PathAccLim TRUE\AccMax := 4. FALSE. tool0. La recomendación es mantener la simetría entre los límites de aceleración y deceleración. z30. fine. este error puede ser gestionado en el gestor de errores. Sintaxis PathAccLim [ AccLim ’:=’ ] < expression (IN) of bool > [´\’AccMax’ :=’ <expression (IN) of num >]’. Limitaciones La aceleración/deceleración mínima permitida es de 0.’ Continúa en la página siguiente 314 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. MoveL p3.107 PathAccLim . PathAccLim FALSE. PathAccLim TRUE\AccMax :=3.Reduce la aceleración del TCP a lo largo de la trayectoria Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción PathAccLim. v1000. Reservados todos los derechos. tool0. es decir. tool0.’ [DecelLim ´:=’ ] < expression (IN) of bool> [´\’DecelMax ´:=’ <expression (IN) of num >]’. tool0. PathAccLim FALSE. v1000. MoveL p3. fine. Se limita la aceleración del TCP a 4 m/s 2 entre p1 y p3. FALSE. v1000. fine. fine. v1000. tool0. A continuación. Ejemplo 2 MoveL p1.1 Instrucciones 1. z30. v1000. Se limita la aceleración del TCP a 3 m/s 2 entre p2’ y p3. tool0.1 m/s2. la variable de sistema ERRNO cambia a ERR_ACC_TOO_LOW. TRUE\DecelMax := 4. v1000. .

sección Resumen sobre RAPID .1 Instrucciones 1. Reservados todos los derechos.Reduce la aceleración en la página 17 3HAC16581-5 Revisión: L 315 © Copyright 2004-2011 ABB.RAPID overview.Datos de parámetros de movimiento en la página 1229 Reducción de la aceleración AccSet .107 PathAccLim .Reduce la aceleración del TCP a lo largo de la trayectoria Continuación Información relacionada Para obtener más información sobre Consulte Instrucciones de posicionamiento Technical reference manual . .Movimiento Datos de parámetros de movimiento motsetdata .

PathRecMoveBwd \ID:=fixture_id \ToolOffs:=[0.1 Instrucciones 1. Incluso las unidades mecánicas sin TCP deben utilizar el argumento si se usa un robot con TCP perteneciente a otra tarea. Si se está utilizando el movimiento sincronizado. Resulta útil si el robot ejecuta un proceso en el que se añade material.108 PathRecMoveBwd . o bien todas o ninguna de las unidades mecánicas deben utilizar este argumento. 0.108 PathRecMoveBwd . El tipo de dato pathrecid es de un tipo sin valor y sólo se utiliza como un identificador para asignar un nombre a la posición de grabación. Sin embargo. Si no se especifica ninguna posición de ID.Hace retroceder la grabadora de trayectorias Utilización PathRecMoveBwd se utiliza para hacer retroceder el robot a lo largo de una trayectoria grabada. Reservados todos los derechos. El valor de offset Z positivo indica la separación. . Si no se desea utilizar ningún offset en algunas unidades mecánicas. 10] \Speed:=v500. los movimientos de retroceso se realizan hasta la más cercana de las posiciones siguientes: • Regreso a la posición en la que se inició el movimiento sincronizado • Regreso hasta la posición de ID más cercana grabada [\ToolOffs] Tool Offset Tipo de dato: pos Proporciona un offset de separación del TCP durante el movimiento. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción PathRecMoveBwd. Se aplica una coordenada de offset cartesiana a las coordenadas del TCP. el movimiento de retroceso se realiza en un sistema sencillo hasta la posición de ID más cercana que se haya grabado. El offset del TCP está situado 10 mm en la dirección Z y la velocidad es de 500 mm/s. Ejemplo 1 VAR pathrecid fixture_id. en un sistema MultiMove en modo sincronizado. Consulte también Más ejemplos en la página 318. El robot se mueve hacia atrás hasta la posición del programa en la que la instrucción PathRecStart insertó el identificador fixture_id.Hace retroceder la grabadora de trayectorias 1. es posible aplicar un offset cero. Argumentos PathRecMoveBwd [\ID] [\ToolOffs] [\Speed] [\ID] Identifier Tipo de dato: pathrecid Una variable que especifica la posición de ID hasta la que se desea retroceder. Continúa en la página siguiente 316 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.

Una vez que la grabadora se ha iniciado. la grabadora de trayectorias cambiará automáticamente el estado al modo independiente al ejecutarse la instrucción SyncMoveOn. todas las instrucciones de movimiento quedan grabadas y el robot puede retroceder en cualquier momento a lo largo de la trayectoria grabada. . Si se omite. Speeddata define la velocidad del punto central de la herramienta. la reorientación de la misma y los ejes externos. con ayuda de PathRecMoveBwd. Ejecución de programas La grabadora de trayectorias se activa con la instrucción PathRecStart. • SyncMoveOn se considera como punto de ruptura sin identificador de trayectoria. Continúa en la página siguiente 3HAC16581-5 Revisión: L 317 © Copyright 2004-2011 ABB.108 PathRecMoveBwd . Dado que el movimiento hacia atrás se detiene antes de SyncMoveOn. Si está presente. Reservados todos los derechos. si se ejecuta PathRecMoveBwd dentro de un bloque de sincronización hacia una posición independiente. el robot retrocederá no más allá de la posición en la que se encontraba en el momento de ejecutarse WaitSyncTask. Es decir. esta velocidad se utiliza durante todo el movimiento de retroceso. • Todas las tareas implicadas en el movimiento grabado sincronizado deben ejecutar PathRecMoveBwd antes de que ninguno de los robots empiece a moverse. el robot retrocede hasta la posición en la que se encontraba cuando se ejecutó SyncMoveOn.1 Instrucciones 1. Por ejemplo. el estado cambia al modo independiente. • WaitSyncTask se considera como punto de ruptura sin identificador de trayectoria. Movimiento sincronizado La ejecución de la grabadora de trayectorias durante el movimiento sincronizado supone algunas consideraciones adicionales. si la grabadora de trayectorias ha sido puesta en marcha por medio de PathRecStart y se ejecuta PathRecMoveBwd. • Todo el manejo de la sincronización se graba y ejecuta de forma invertida. Es decir. el movimiento de retroceso se ejecuta a la velocidad de las instrucciones de movimiento originales.Hace retroceder la grabadora de trayectorias Continuación [\Speed] Tipo de dato: speeddata Esta velocidad reemplaza a la velocidad original utilizada durante el movimiento de avance. si la grabadora de trayectorias ha sido puesta en marcha por medio de PathRecStart y PathRecMoveBwd sin el argumento opcional \ID dentro de un bloque con movimiento sincronizado.

vmax. vmax. z50. MoveL p4. z50. tool1. IF choice=5 THEN IF PathRecValidBwd(\ID:=safe_id) THEN StorePath. z50.stEmpty. MoveJ p1. z50. z50.108 PathRecMoveBwd . Reservados todos los derechos. RETRY. MoveL p3.. 0 . ENDIF ENDIF Continúa en la página siguiente 318 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. CONST robtarget p4 := [. ERROR: TPReadFK choice. vmax. ..... 10].Movimiento independiente VAR pathrecid safe_id. !Fix problem PathRecMoveFwd."Go to safe?". . vmax.stEmpty. vmax. MoveL p2. Stop.Hace retroceder la grabadora de trayectorias Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción PathRecMoveBwd.stEmpty. VAR num choice. tool1. MoveJ p0. PathRecMoveBwd \ID:=safe_id \ToolOffs:=[0.1 Instrucciones 1. RestoPath. StartMove."Yes". tool1. PathRecStart safe_id..].stEmpty. CONST robtarget p0 := [. tool1.]. Ejemplo 1 . tool1.

se usa la grabadora de trayectorias para hacer retroceder el robot hasta una posición segura. Continúa en la página siguiente 3HAC16581-5 Revisión: L 319 © Copyright 2004-2011 ABB. Una vez que el robot ha retrocedido. por ejemplo respecto de una nueva soldadura realizada. el gestor de errores puede iniciar un nuevo movimiento y reiniciar más adelante el movimiento original. Se fabrica una pieza. mediante la ejecución de PathRecMoveBwd. p0. p0.1 Instrucciones 1. Suponga que durante el movimiento del robot de p3 a p4 se produce un error recuperable. En la ubicación del error. A continuación. Una vez que la trayectoria ha quedado almacenada.108 PathRecMoveBwd . la trayectoria se almacena ejecutando StorePath. la grabadora de trayectorias se inicia y se le asigna el identificador de grabadora de trayectorias safe_id. Al almacenar la trayectoria. el operador puede tomar las acciones oportunas para solucionar el error (por ejemplo limpiar la pistola de soldadura). el nivel de la trayectoria se devuelve al nivel básico con RestoPath y se realiza un intento de recuperación. . con ayuda de PathRecMoveFwd. el robot es devuelto al punto en el que se produjo el error.Hace retroceder la grabadora de trayectorias Continuación xx0500002135 En este ejemplo se muestra cómo puede usarse la grabadora de trayectorias para extraer el robot de espacios reducidos en caso de error. En el punto de aproximación. sin necesidad de programar una trayectoria designada. Recuerde que se aplica un offset de herramienta para disponer de una separación. Reservados todos los derechos. En ese punto.

0. tGun\wobj:=pos1. v1000. Continúa en la página siguiente 320 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. SyncMoveOn sync1. v1000.]. z50. ENDTEST !Perform service action PathRecMoveFwd \ToolOffs:=[0.Hace retroceder la grabadora de trayectorias Continuación Ejemplo 2 . StartMove. ERROR StorePath \KeepSync. v1000. MoveJ pR1_10. z50.. tGun\wobj:=pos1. z50. CONST robtarget pR1_60:=[. RestoPath. MoveL pR1_40 \ID:=1. z50.. tGun. tasklist.10]. z50.1 Instrucciones 1. tGun\wobj:=pos1. MoveJ pR1_20. PathRecStart HomeROB1. tGun. v1000. v1000.]. . TEST ERRNO CASE ERR_PATH_STOP: PathRecMoveBwd \ID:= HomeROB1\ToolOffs:=[0. v1000.. tGun.108 PathRecMoveBwd .. SyncMoveOff sync2. z50. CONST robtarget pR1_10:=[. . MoveL pR1_60 \ID:=3...10]. MoveL pR1_50 \ID:=2. Reservados todos los derechos.0.Movimiento sincronizado T_ROB1 VAR pathrecid HomeROB1. MoveJ pR1_30.

SyncMoveOn sync1. v1000. MoveL pR2_40 \ID:=2.]. MoveJ pR2_10. v1000.. Continúa en la página siguiente 3HAC16581-5 Revisión: L 321 © Copyright 2004-2011 ABB.0. SyncMoveOff sync2. StartMove. tGun\wobj:=pos1. PathRecStart HomeROB2..0. z50. CONST robtarget pR2_10:=[. tGun\wobj:=pos1. TEST ERRNO CASE ERR_PATH_STOP: PathRecMoveBwd \ToolOffs:=[0. ERROR StorePath \KeepSync. z50.. MoveJ pR2_20. . v1000. CONST robtarget pR2_50:=[.108 PathRecMoveBwd .1 Instrucciones 1. . RestoPath.]. MoveL pR2_50 \ID:=3. tGun.. v1000.Hace retroceder la grabadora de trayectorias Continuación T_ROB2 VAR pathrecid HomeROB2. z50. tGun\wobj:=pos1. z50. MoveL pR2_30 \ID:=1. v1000. tasklist. tGun.. z50.10].. ENDTEST !Perform service action PathRecMoveFwd \ToolOffs:=[0.10]. Reservados todos los derechos.

MoveExtJ jP1_20 \ID:=1. v1000. SyncMoveOn sync1. v1000. CONST jointtarget jP1_40:=[. StartMove.0. z50. Suponga que T_ROB1 sufre un error ERR_PATH_STOP dentro del bloque sincronizado.0].. MoveExtJ jP1_40 \ID:=3. El sistema se compone de tres manipuladores.0]. se aprovecha la capacidad de la grabadora de trayectorias para detenerse a continuación de SyncMoveOn. todos ellos ejecutándose en tareas separadas. tasklist. TEST ERRNO CASE ERR_PATH_STOP: PathRecMoveBwd \ToolOffs:=[0.. se desea retroceder hasta la posición de inicio marcada con el identificador HomeROB1 de la grabadora de trayectorias. Esto se realiza mediante PathRecMoveBwd e indicando el identificador pathrecid. MoveExtJ jP1_10. v1000. z50.. MoveExtJ jP1_30 \ID:=2. DEFAULT: PathRecMoveBwd \ID:=HomePOS1\ToolOffs:=[0. SyncMoveOff sync2. ERROR StorePath \KeepSync. Reservados todos los derechos.0.. sync1. RestoPath. Continúa en la página siguiente 322 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. para realizar un servicio en el equipo externo del robot.Hace retroceder la grabadora de trayectorias Continuación T_ROB3 VAR pathrecid HomePOS1. ENDTEST !Perform service action PathRecMoveFwd \ToolOffs:=[0. z50. Estos manipuladores no tienen por qué retroceder más allá del punto en el que se inició el movimiento sincronizado. Al no suministrar PathRecMoveBwd en ERR_PATH_STOP con un identificador de grabadora de trayectorias. CONST jointtarget jP1_10:=[. Recuerde que el eje externo que no tiene TCP sigue añadiendo un offset cero de herramienta.]. v1000. Dado que el error se produjo durante el movimiento sincronizado. El comportamiento DEFAULT del gestor de ERROR de este ejemplo es que todos los manipuladores realicen en primer lugar los movimientos sincronizados hacia atrás y a continuación los movimientos independientes hacia atrás hasta el punto de inicio de la trayectoria grabada. En el error..0. .. .108 PathRecMoveBwd . PathRecStart HomePOS1. Esto se consigue especificando \ID en PathRecMoveBwd para todos los manipuladores.0].1 Instrucciones 1. z50. para permitir la posibilidad de que los robots con TCP lo hagan también.]. es necesario que el segundo robot con TCP T_ROB2 y el eje externo T_POS1 también ejecuten PathRecMoveBwd.

Hace avanzar la grabadora rias hacia delante de trayectorias en la página 324 Almacenamiento y restauración de trayec. debe ejecutarse StorePath antes de ejecutar PathRecMoveBwd. Restart.Hace retroceder la grabadora de trayectorias Continuación Limitaciones Los movimientos realizados utilizando la grabadora de trayectorias no pueden realizarse en el nivel de base. QStop.Comprueba si existe una trayectoria de avance válida guardada en la página 992 Reproducción de la grabación de trayecto. Si no se desea volver al punto en el que se ejecutó PathRecMoveBwd (mediante la ejecución de PathRecMoveFwd) es necesario detener la grabadora de trayectorias con la instrucción PathRecStop. la instrucción SyncMoveOn debe ir precedida de al menos un movimiento independiente. En ningún caso es posible retroceder más allá de una sentencia WaitSyncTask. PathRecStop\Clear también borra la trayectoria grabada.108 PathRecMoveBwd .StorePath . PathRecMoveBwd no puede ejecutarse en rutinas de RAPID que estén conectadas a los siguientes eventos especiales del sistema: PowerOn.Restablece la trayectoria después de una interrupción en la página 386 Otras instrucciones de posicionamiento Technical reference manual .PathRecStart .1 Instrucciones 1. Reservados todos los derechos.Comprueba si existe una da es correcta trayectoria de retroceso válida guardada en la página 989 PathRecValidFwd .Almacena la trayectoria cuando se torias produce una interrupción en la página 555 RestoPath .PathRecValidBwd . . Stop. En ningún caso es posible retroceder más allá de una sentencia SynchMoveOff. Es decir.RAPID overview.Identificador de grabadora de trayectorias en la página 1247 Inicio y detención de la grabadora de tra.Inicia la grabadora de trayectoyectorias rias en la página 327 PathRecStop . Sintaxis PathRecMoveBwd [ ´\’ ID ´:=’ < variable (VAR) of pathrecid > ] [ ´\’ ToolOffs´:=’ <expression (IN) of pos> ] [ ´\’ Speed‘:=’ <expression (IN) of speeddata> ]’. sección Resumen sobre RAPID .Recuperación en caso de error 3HAC16581-5 Revisión: L 323 © Copyright 2004-2011 ABB. sección Características básicas .Movimiento Recuperación en caso de error Technical reference manual .PathRecMoveFwd .’ Información relacionada Para obtener más información sobre Consulte Identificador de grabadora de trayectorias pathrecid .Detiene la grabadora de trayectorias en la página 330 Comprobación de que la trayectoria graba.RAPID overview.Reset o Step. si se desea retroceder hasta la posición en la que se inició el movimiento sincronizado.

Se aplica una coordenada cartesiana a las coordenadas del TCP. Se devuelve al robot a la posición en la cual la grabadora de trayectorias inició el movimiento de retroceso.Hace avanzar la grabadora de trayectorias 1. Resulta útil si el robot ejecuta un proceso en el que se añade material.Hace avanzar la grabadora de trayectorias Utilización PathRecMoveFwd se utiliza para mover el robot de nuevo a la posición en la que se ejecutó PathRecMoveBwd. . [\ToolOffs] Tool Offset Tipo de dato: pos Proporciona un offset de separación del TCP durante el movimiento. mediante un identificador que se entrega durante el movimiento de retroceso. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de cómo utilizar la instrucción PathRecMoveFwd. [\Speed] Tipo de dato: speeddata Esta velocidad tiene prioridad sobre la velocidad original utilizada durante el movimiento de avance. Continúa en la página siguiente 324 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Argumentos PathRecMoveFwd [\ID] [\ToolOffs] [\Speed] [\ID] Identifier Tipo de dato: pathrecid Una variable que especifica la posición de ID hasta la que se desea avanzar. Si se omite. El tipo de dato pathrecid es de un tipo sin valor y sólo se utiliza como un identificador para asignar un nombre a la posición de grabación.1 Instrucciones 1. Consulte también Más ejemplos en la página 325. el movimiento de avance se realiza siempre hasta la posición de interrupción de la trayectoria original. la reorientación de la misma y los ejes externos. Ejemplo 1 PathRecMoveFwd. Speeddata define la velocidad del punto central de la herramienta. También es posible hacer avanzar parcialmente al robot. esta velocidad se utiliza durante todo el movimiento de avance. Si está presente. Reservados todos los derechos. el movimiento de avance se ejecuta a la velocidad de las instrucciones de movimiento originales.109 PathRecMoveFwd . Si no se especifica ninguna posición de ID.109 PathRecMoveFwd .

Reservados todos los derechos. A partir de ese momento. Por último.1 Instrucciones 1. tool1.. VAR pathrecid mid_id. Posteriormente. PathRecStart mid_id.]. CONST robtarget p2 := [. z50. vmax. MoveL p2. MoveL p1 MoveL ID de inicio p2 p3 MoveL ID intermedia PathRecMoveBwd PathRecMoveFwd \ ID:=mid_id PathRecMoveFwd xx0500002133_es En el ejemplo anterior.. mediante un identificador que se entrega durante el movimiento de retroceso. PathRecStart start_id. VAR pathrecid start_id. es posible solicitar al robot que vuelva a la posición en la que se inició la ejecución hacia atrás..109 PathRecMoveFwd . CONST robtarget p1 := [. StorePath. vmax. .. Para ello se llama a PathRecMoveFwd.]. Una vez que la grabadora se ha iniciado.Hace avanzar la grabadora de trayectorias Continuación Ejecución de programas La grabadora de trayectorias se activa con la instrucción PathRecStart. PathRecMoveBwd \ID:=start_id. z50. tool1. También es posible hacer avanzar parcialmente al robot. el robot avanzará con las instrucciones de movimiento tradicionales y volverá al identificador de grabadora de trayectorias start_id mediante la trayectoria grabada. tool1. Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción PathRecMoveFwd.. PathRecMoveFwd. MoveL p1.. vmax. RestoPath. Continúa en la página siguiente 3HAC16581-5 Revisión: L 325 © Copyright 2004-2011 ABB. z50. con ayuda de PathRecMoveBwd.]. MoveL p3. volverá a avanzar en dos pasos mediante PathRecMoveFwd. se inicia la grabadora de trayectorias y se marca el punto inicial con el identificador de trayectoria start_id. CONST robtarget p3 := [. el robot puede retroceder a lo largo de la trayectoria ejecutada. PathRecMoveFwd \ID:=mid_id.

109 PathRecMoveFwd .Identificador de grabadora de trayectotorias rias en la página 1247 Inicio y detención de la grabadora de PathRecStart .Comprueba si existe una trayectoria de retroceso válida guardada en la página 989 PathRecValidFwd . QStop. Para poder ejecutar PathRecMoveFwd. Stop. Sintaxis PathRecMoveFwd’ (’ [ ‘\’ ID‘ :=’ < variable (VAR) of pathid > ] [ ‘\’ ToolOffs‘ :=’ <expression (IN) of pos> ] [ ‘\’ Speed‘ :=’ <expression (IN) of speeddata> ]’.pathrecid . Restart. Reservados todos los derechos.Movimiento Recuperación en caso de error Technical reference manual .Hace avanzar la grabadora de trayectorias Continuación Limitaciones Los movimientos realizados utilizando la grabadora de trayectorias deben tener lugar en el nivel de la rutina TRAP.RAPID overview.’ Información relacionada Para obtener más información sobre Consulte Identificadores de grabadora de trayec.Recuperación en caso de error 326 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.RAPID overview. PathRecMoveFwd no puede ejecutarse en rutinas de RAPID que estén conectadas a los siguientes eventos especiales del sistema: PowerOn.PathRecMoveBwd .Inicia la grabadora de trayectorias trayectorias en la página 327 PathRecStop . Si no se desea volver al punto en el que se ejecutó PathRecMoveBwd (mediante la ejecución de PathRecMoveFwd) es necesario detener la grabadora de trayectorias con la instrucción PathRecStop. es necesario ejecutar StorePath antes que PathRecMoveFwd.Restablece la trayectoria después de una interrupción en la página 386 Otras instrucciones de posicionamiento Technical reference manual . sección Resumen sobre RAPID .1 Instrucciones 1. sección Características básicas .Recuperación en caso de error Technical reference manual .Comprueba si existe una trayectoria de avance válida guardada en la página 992 Reproducción de la grabación de trayec. sección Resumen sobre RAPID .RAPID overview. PathRecStop\Clear también borra la trayectoria grabada.StorePath . Es decir. es necesario haber ejecutado anteriormente una instrucción PathRecMoveBwd.Hace retroceder la grabadora torias hacia atrás de trayectorias en la página 316 Almacenamiento y restauración de tra.Almacena la trayectoria cuando se yectorias produce una interrupción en la página 555 RestoPath .Detiene la grabadora de trayectorias en la página 330 Comprobación de que la trayectoria grabada es correcta PathRecValidBwd . Reset o Step. .

110 PathRecStart . haciendo que el robot retroceda a lo largo de la trayectoria ejecutada.110 PathRecStart .1 Instrucciones 1. La secuencia de posiciones de programa grabada puede recorrerse en sentido inverso mediante PathRecMoveBwd.Inicia la grabadora de trayectorias 1. la grabadora de trayectorias inicia la grabación interna de la trayectoria del robot en el controlador del robot. . Continúa en la página siguiente 3HAC16581-5 Revisión: L 327 © Copyright 2004-2011 ABB. PathRecStart fixture_id. El tipo de dato pathrecid es de un tipo sin valor y sólo se utiliza como un identificador para asignar un nombre a la posición de grabación. La grabadora de trayectorias almacena la información de las trayectorias durante la ejecución del programa de RAPID. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción PathRecStart. Se inicia la grabadora de trayectorias y el punto inicial (la posición de la instrucción en el programa de RAPID) se marca con el identificador fixture_id. Ejemplo 1 VAR pathrecid fixture_id. Ejecución de programas Cuando se solicita su inicio.Inicia la grabadora de trayectorias Utilización PathRecStart se utiliza para iniciar la grabación de la trayectoria del robot. Argumentos PathRecStart ID ID Identifier Tipo de dato:pathrecid Una variable que especifica el nombre de la posición de inicio de la grabación. Reservados todos los derechos.

ENDIF Stop. Ejemplo 1 VAR pathrecid origin_id. la grabadora de trayectorias se utiliza para mover el robot hasta una posición de servicio en caso de que se produzca un error durante la ejecución normal. tool1. tool1. Reservados todos los derechos. A continuación. vmax. Una vez que el robot ha retrocedido desde la posición del error. ELSE PathRecMoveBwd \ID:=corner_id. ERROR TPReadFK choice. z50."Extract to:". Después de la posición p1. Después del punto p2. MoveJ p1. RETRY. . El robot ejecuta el movimiento a lo largo de una trayectoria. PathRecStart corner_id. z50.stEmpty. IF choice=4 OR choice=5 THEN StorePath. y el usuario tiene la opción de extraer el robot hasta las posiciones Origin (punto p1) o Corner (punto p2). el usuario tiene la opción de resolver el error (normalmente solucionando el problema en el equipo que rodea al robot). se inserta otro identificador de trayectoria. tool1.stEmpty. z50.Inicia la grabadora de trayectorias Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción PathRecStart. vmax. A continuación."Origin". RestoPath. se cambia el nivel de la trayectoria con StorePath. se ordena el retroceso del robot hasta la posición del error. fine. En este momento puede ejecutarse el gestor de errores. !Fix problem PathRecMoveFwd. para poder reiniciar el movimiento más adelante en el lugar del error. PathRecStart origin_id. Continúa en la página siguiente 328 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. vmax.1 Instrucciones 1. vmax.110 PathRecStart . se inicia la grabadora de trayectorias. El nivel de la trayectoria se devuelve al nivel normal y se realiza un intento de recuperación. MoveAbsJ jt4. MoveL p3. StartMove. MoveJ p2."Corner". Suponga que se produce un error recuperable durante el movimiento desde la posición p3 hasta la posición jt4. tool1. ENDIF En el ejemplo anterior. IF choice=4 THEN PathRecMoveBwd \ID:=origin_id. VAR pathrecid corner_id. VAR num choice.stEmpty.

´ Información relacionada Para obtener más información sobre Consulte Identificadores de grabadora de trayec.110 PathRecStart .Identificador de grabadora de trayectorias torias en la página 1247 Detención de la grabadora de trayecto. los movimientos del nivel StorePath no se graban.Inicia la grabadora de trayectorias Continuación Limitaciones La grabadora de trayectorias sólo puede iniciarse y sólo grabará la trayectoria en el nivel de trayectoria de base. Reservados todos los derechos.Comprueba si existe una trayectoria de retroceso válida guardada en la página 989 PathRecValidFwd .Detiene la grabadora de trayectorias rias en la página 330 Comprobación de que la trayectoria grabada es correcta PathRecValidBwd . sección Principios de movimiento y E/S 3HAC16581-5 Revisión: L 329 © Copyright 2004-2011 ABB.Hace retroceder la grabadora torias hacia atrás de trayectorias en la página 316 Reproducción de la grabación de trayec.Comprueba si existe una trayectoria de avance válida guardada en la página 992 Reproducción de la grabación de trayec.RAPID overview.Hace avanzar la grabadora torias hacia delante de trayectorias en la página 324 Movimiento en general Technical reference manual . Es decir.1 Instrucciones 1.PathRecMoveBwd .PathRecStop . . Sintaxis PathRecStart [ ID ’:=’] < variable (VAR) of pathrecid> ´.PathRecMoveFwd .pathrecid .

impidiendo la ejecución accidental de la trayectoria grabada.1 Instrucciones 1. Consulte el ejemplo siguiente. sí es posible utilizar trayectorias grabadas anteriormente si se ejecuta de nuevo PathRecStart desde la misma posición en la que fue detenida la grabadora de trayectorias. Consulte también Más ejemplos. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción PathRecStop. Sin embargo.Detiene la grabadora de trayectorias Utilización PathRecStop se utiliza para detener la grabación de la trayectoria del robot. Una vez que la grabadora ha sido detenida con PathRecStop. Ejecución de programas Cuando se solicita la detención de la grabadora de trayectorias. Reservados todos los derechos. Argumentos PathRecStop [\Clear] [\Clear] Tipo de dato: switch Borra la trayectoria grabada. El argumento opcional \Clear elimina del búfer la información de la trayectoria grabada.Detiene la grabadora de trayectorias 1. la grabación de la trayectoria se detiene.111 PathRecStop . . Continúa en la página siguiente 330 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Ejemplo 1 PathRecStop \Clear.111 PathRecStop . no es posible utilizar las trayectorias grabadas anteriormente para los movimientos de retroceso (PathRecMoveBwd). a continuación. Se detiene la grabadora de trayectorias y se vacía el búfer de información de trayectorias grabada.

z50. tool1. tool1. MoveL p2. MoveL p4.1 Instrucciones 1. PathRecMoveFwd. LOCAL VAR pathrecid id1. vmax. tool1. LOCAL VAR pathrecid id2. tool1.. PathRecStart id2.. PathRecStart id2. MoveL p6. PathRecMoveBwd \ID:=id1. . ENDPROC PROC example2() MoveL p0. vmax. vmax..]. Reservados todos los derechos. PathRecStop. MoveL p7. vmax. MoveL p7. PathRecMoveFwd. z50. z50. MoveL p6. MoveL p3. z50. tool1.111 PathRecStop . tool1. vmax. vmax.. z50. MoveL p2. vmax. tool1. MoveL p3. PathRecStop. tool1. vmax. LOCAL CONST robtarget p0:= [. MoveL p1.. z50. PROC example1() MoveL p0. tool1. MoveL p2. z50. vmax. RestoPath. vmax. z50. MoveL p1. z50. tool1. z50.Detiene la grabadora de trayectorias Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción PathRecStop. vmax. PathRecStart id1. vmax. MoveL p4.. MoveL p2. ENDPROC Continúa en la página siguiente 3HAC16581-5 Revisión: L 331 © Copyright 2004-2011 ABB. PathRecMoveBwd \ID:=id1. RestoPath. z50.]. z50. vmax. . vmax.. tool1.. StartMove. StorePath. vmax. tool1. vmax. tool1. tool1. z50.. z50. tool1. vmax. MoveL p5. tool1. z50. LOCAL CONST robtarget p6 := [. tool1. vmax. z50. tool1. z50. MoveL p5. StartMove. z50. StorePath. PathRecStart id1.

Inicia la grabadora de trayectorias en la página 327 Comprobación de que la trayectoria grabada es correcta PathRecValidBwd .Identificador de grabadora de trayectotorias rias en la página 1247 Inicio de la grabadora de trayectorias PathRecStart . Sin embargo.’ Información relacionada Para obtener más información sobre Consulte Identificadores de grabadora de trayec. En este caso. sección Principios de movimiento y E/S 332 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Detiene la grabadora de trayectorias Continuación PathRecStop_MoreExamples_1_xx0500002101 En los ejemplos anteriores se describe la grabación de la trayectoria del robot en el momento de la detención de la trayectoria en medio de una secuencia.RAPID overview. es válida y el robot ejecuta la trayectoria siguiente: p6 -> p5 -> p2 -> p1 -> p0 El motivo de que la orden sea válida es que la grabadora fue detenida e iniciada en la misma posición exacta del robot.Comprueba si existe una trayectoria de retroceso válida guardada en la página 989 PathRecValidFwd .PathRecMoveBwd . PathRecMoveBwd \ID:=id1 genera un error.111 PathRecStop . p3 y p2. la orden de detención debe incluir el argumento opcional \Clear.Hace avanzar la grabadora de torias hacia delante trayectorias en la página 324 Movimiento en general Technical reference manual .1 Instrucciones 1. Sintaxis PathRecStop [ ´\’switch Clear ] ´. Esto se debe a que no existe ninguna trayectoria grabada entre p4.pathrecid . . Reservados todos los derechos. la trayectoria grabada se borrará y no volverá a ser posible retroceder hasta los identificadores anteriores de la grabadora de trayectorias. La única diferencia en el caso de example2 es el punto en el que se inició la grabadora por segunda vez. es posible ejecutar PathRecMoveBwd \ID:=id2.Comprueba si existe una trayectoria de avance válida guardada en la página 992 Reproducción de la grabación de trayec. Si no es un comportamiento deseado.Hace retroceder la grabadora torias hacia atrás de trayectorias en la página 316 Reproducción de la grabación de trayec.PathRecMoveFwd . la orden PathRecMoveBwd \ID:=id1. En example1. De esta forma.

La aplicación de adhesivo con grandes reorientaciones y zonas de esquina pequeñas puede provocar variaciones de velocidad. si se cuenta con un sistema MultiMove. movimientos combinados de los ejes cerca del borde del área de trabajo) puede causar problemas de carga en la CPU.v1000.fine. .Ajusta la resolución de la trayectoria 1. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. Ejemplo de uso de PathResol: Los movimientos críticos desde el punto de vista dinámico (carga útil máxima. Continúa en la página siguiente 3HAC16581-5 Revisión: L 333 © Copyright 2004-2011 ABB. Aumente el parámetro PathSampleTime. Descripción La resolución de la trayectoria afecta a la exactitud de la trayectoria interpolada y el tiempo de ciclo de programa. Reduzca el valor del parámetro PathSampleTime. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción PathResol.tool1. Si se usa un valor demasiado bajo para el parámetro PathSampleTime. el uso del valor estándar configurado para la resolución de la trayectoria PathSampleTime 100%) evita problemas de sobrecarga de la CPU y proporciona una exactitud de trayectoria adecuada para la mayoría de las situaciones. alta velocidad. el tiempo de ciclo se reduce cuando se reduce el valor del parámetro PathSampleTime.112 PathResol . Reduzca el valor del parámetro PathSampleTime. Reservados todos los derechos. Aumente el parámetro PathSampleTime. PathResol 150.1 Instrucciones 1. Con el robot en un punto de paro. La realización de pequeños círculos o movimientos pequeños combinados con cambios de dirección pueden reducir la calidad del rendimiento de la trayectoria y pueden suponer tiempos de ciclo mayores. Reduzca el valor del parámetro PathSampleTime. con frecuencia. La soldadura al arco con una oscilación de alta frecuencia puede requerir una alta resolución de la trayectoria interpolada. el tiempo de muestreo de la trayectoria aumenta al 150 % del valor configurado. El uso de ejes externos con un rendimiento bajo puede generar problemas de sobrecarga de la CPU durante la coordinación. MoveJ p1. Aumenta la exactitud de la trayectoria y. en las tareas de movimiento.Ajusta la resolución de la trayectoria Utilización PathResol (Path Resolution) se utiliza para ajustar el tiempo configurado de muestreo de trayectoria geométrica de los parámetros de sistema para las unidades mecánicas controladas desde la tarea de programa actual. Sin embargo. pueden aparecer problemas de exceso de carga en las aplicaciones que consumen más recursos del sistema.112 PathResol .

El 100% corresponde al tiempo de muestreo configurado para la trayectoria. no será posible reanudar la ejecución tras una caída de suministro eléctrico. El valor predeterminado para la redefinición del tiempo de muestreo de la trayectoria es el 100%. • Un nuevo orden de resolución de trayectoria frente a otro planificador de movimientos sólo afecta al movimiento independiente posterior de ese planificador de movimientos. consulte el Manual de aplicaciones .112 PathResol .Restart o Step. Dentro del rango del 25% al 400%. • Un nuevo orden de resolución de trayectoria frente al planificador de movimientos actual afecta al movimiento coordinado sincronizado y al movimiento independiente posterior de ese planificador de movimientos. • Cuando se inicia la ejecución del programa desde el principio El ajuste actual del tiempo de muestreo puede leerse a través de la variable C_MOTSET (tipo de dato motsetdata) del componente pathresol. Stop. De lo contrario. no un punto de paso. Ejecución de programas Las resoluciones de la trayectoria en todas las instrucciones posteriores de posicionamiento se ven afectadas hasta que se ejecuta una nueva instrucción PathResol. PathResol no puede ejecutarse en rutinas de RAPID que estén conectadas a los siguientes eventos especiales del sistema: PowerOn. • Cuando se carga un nuevo programa. ésta última debe programarse con un punto de paro (zonedata fine).Ajusta la resolución de la trayectoria Continuación Argumentos PathResol PathSampleTime PathSampleTime Tipo de dato: num El ajuste. Reservados todos los derechos.1 Instrucciones 1. QStop. Un valor inferior en el parámetro PathSampleTime aumenta la resolución de la trayectoria (exactitud de la trayectoria). . En un sistema MultiMove en el modo coordinado sincronizado son válidos los siguientes puntos: • Todas las unidades mecánicas incluidas en el modo coordinado sincronizado se ejecutan con la resolución de trayectoria actual para el planificador de movimientos actual (utilizado). Continúa en la página siguiente 334 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Este valor se configura automáticamente en los casos siguientes: • En los arranques en frío. Esto afectará a la resolución de la ruta durante todas las operaciones de movimiento del programa (el nivel de trayectoria predeterminado y el nivel de trayectoria después de StorePath) y también durante el movimiento. Limitación Si esta instrucción va precedida de una instrucción de movimiento. como porcentaje del tiempo de muestreo de trayectoria configurado. Para más información acerca de la conexión entre la tarea de programa y el planificador de movimientos.MultiMove.

’ Información relacionada Para obtener más información sobre Consulte Instrucciones de posicionamiento Technical reference manual .1 Instrucciones 1. la trayectoria sección Motion Planner . Reservados todos los derechos.Parámetros del sistema.Ajusta la resolución de la trayectoria Continuación Sintaxis PathResol [PathSampleTime ’:=’ ] < expression (IN) of num>’ .RAPID overview.Parámetros de movimiento Configuración de la resolución de Manual de referencia técnica .112 PathResol . sección Principios de movimiento y E/S Parámetros de movimiento Technical reference manual . sección Resumen sobre RAPID . .RAPID overview.CPU Load Equalization 3HAC16581-5 Revisión: L 335 © Copyright 2004-2011 ABB.

Desactiva el desplazamiento de programa 1. pero no hacia p40. PDispOff. Desactivación del desplazamiento de programa.PDispOn . z10. tool1. z10. MoveL p40.Activa el desplazamiento de programa con dos posiciones ma en la página 337 Definición del desplazamiento de progra. Ejecución de programas Se elimina el desplazamiento de programa que está activado. v500. Ejemplo 1 PDispOff. Esto significa que el sistema de coordenadas del desplazamiento de programa es el mismo que el sistema de coordenadas de objeto y por tanto todas las posiciones programadas están relacionadas entre sí.Desactiva el desplazamiento de programa Utilización PDispOff (Program Displacement Off) se utiliza para desactivar un desplazamiento de programa. v500. Sintaxis PDispOff ´. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. El desplazamiento de programa se define como la diferencia entre las posiciones p10 y p11. z10.113 PDispOff . tool1.Activa un desplazamiento de programa con una base de coordenadas conoci. MoveL p30. tool1. Ejemplo 2 MoveL p10. v500.1 Instrucciones 1. si se cuenta con un sistema MultiMove. . tool1. MoveL p20. Reservados todos los derechos. PDispOn \ExeP:=p10.ma a partir de una base de coordenadas conoda cida en la página 342 336 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. z10.’ Información relacionada Para obtener más información sobre Consulte Definición del desplazamiento de progra. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción PDispOff.113 PDispOff . p11.PDispSet . v500. El desplazamiento afecta al movimiento hacia p20 y p30. tool1. en las tareas de movimiento. El desplazamiento de programa se activa mediante la instrucción PDispSet o PDispOn y se aplica a todos los movimientos hasta que se activa otro desplazamiento de programa o hasta que se desactiva el desplazamiento de programa.

Activación de un desplazamiento de programa (desplazamiento en paralelo). El desplazamiento de programa se utiliza. tool1. PDispOn *. por ejemplo. z10. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. p20. en las tareas de movimiento. fine \Inpos := inpos50. [ \ExeP ] Executed Point Tipo de dato: robtarget Continúa en la página siguiente 3HAC16581-5 Revisión: L 337 © Copyright 2004-2011 ABB. no es necesario utilizar el argumento \ExeP. p20. Dado que en la instrucción anterior se ha utilizado un punto de paro bien definido. lo cual implica una rotación del programa. Activación de un desplazamiento de programa (desplazamiento en paralelo). El offset se calcula a partir de la diferencia entre las posiciones p10 y p20. v500. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción PDispOn. si se cuenta con un sistema MultiMove.114 PDispOn . Consulte también Más ejemplos en la página 340. tool1.Activa el desplazamiento de programa Utilización PDispOn (Program Displacement On) se utiliza para definir y activar un nuevo desplazamiento de programa usando dos posiciones del robot. . tool1. Ejemplo 2 MoveL p10. El desplazamiento se calcula a partir de la diferencia existente entre la posición real del robot y el punto programado (*) almacenado en la instrucción. El offset se calcula a partir de la diferencia entre las posiciones p10 y p20. PDispOn \ExeP:=p10. tool1. tool1.Activa el desplazamiento de programa 1. v500. Argumentos PDispOn [\Rot] [\ExeP] ProgPoint Tool [\WObj] [ \Rot ] Rotation Tipo de dato: switch La diferencia de orientación de la herramienta se tiene en cuenta. Reservados todos los derechos. Ejemplo 1 MoveL p10. después de realizar una búsqueda o cuando se repiten patrones de movimiento similares en partes distintas del programa.114 PDispOn .1 Instrucciones 1. Ejemplo 3 PDispOn \Rot \ExeP:=p10. Activación de un desplazamiento de programa con una rotación.

Reservados todos los derechos. la posición depende del sistema de coordenadas mundo. Consulte la figura siguiente. se utiliza la posición actual del robot en el momento de la ejecución del programa. utilizada para el cálculo del desplazamiento. con ayuda del desplazamiento de programa. que muestra el desplazamiento lateral de una posición programada. [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo (sistema de coordenadas) con el que está relacionada la posición ProgPoint.Activa el desplazamiento de programa Continuación La nueva posición del robot. Sin embargo. .1 Instrucciones 1. el TCP con el que está relacionada la posición ProgPoint. si se utiliza un TCP estacionario o ejes externos coordinados. Si se omite el argumento. es decir. ExeP y Posición original. se desplazan también todas las posiciones programadas. Es posible omitir este argumento. ProgPoint x Base de coordenadas de desplazamiento de programa x Sistema de coordenadas de desplazamiento del programa (ProgDisp ) Sistema de coordenadas de objeto xx0500002186_es El desplazamiento de programa se activa cuando la instrucción PDispOn se ejecuta y permanece activa hasta que se activa otro desplazamiento de programa (la Continúa en la página siguiente 338 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Si se omite. ProgPoint Programmed Point Tipo de dato: robtarget La posición original del robot en el momento de la programación. Dado que todas las posiciones dependen del sistema de coordenadas ProgDisp. es necesario especificar este argumento. Ejecución de programas El desplazamiento de programa implica que el sistema de coordenadas ProgDisp se traslada respecto del sistema de coordenadas de objeto. Tool Tipo de dato: tooldata La herramienta utilizada durante la programación. Los argumentos Tool y \WObj se utilizan en conjunto para calcular la posición ProgPoint durante la programación y para calcular la posición actual durante la ejecución del programa si no se programa ningún argumento \ExeP. y Nueva posición.114 PDispOn .

• Cuando se inicia la ejecución del programa desde el principio Continúa en la página siguiente 3HAC16581-5 Revisión: L 339 © Copyright 2004-2011 ABB. ProgDisp. es posible programar varias instrucciones PDispOn.Activa el desplazamiento de programa Continuación instrucción PDispSet o PDispOn) o hasta que se desactiva el desplazamiento de programa (la instrucción PDispOff). ExeP y Posición original. Dado que es la posición real del robot que se utiliza. Reservados todos los derechos.1 Instrucciones 1. ProgPoint Nueva orientación x Orientación Base de coordenadas de Sistema de coordenadas de desplazamiento del programa original desplazamiento de programa (ProgDisp ) x Sistema de coordenadas de objeto xx0500002187_es El desplazamiento de programa se elimina automáticamente en los casos siguientes: • En los arranques en frío. Por otro lado. una tras otra y. en este caso. Consulte la figura siguiente. que las que tenía la posición anterior (ProgPoint) respecto del sistema de coordenadas original. Si se utiliza el argumento \Rot la rotación se calcula también a partir de la orientación de la herramienta en las dos posiciones. . se utiliza en su lugar la posición actual del robot en el momento de la ejecución del programa. El desplazamiento se calcula de forma que la nueva posición (ExeP) tendrá la misma posición y orientación respecto del sistema de coordenadas desplazado. • Cuando se carga un nuevo programa. Sólo puede estar activado un único desplazamiento de programa cada vez. El desplazamiento de programa se calcula como la diferencia entre ExeP y ProgPoint. que muestra la traslación y rotación de una posición programada. Si no se ha especificado el valor de ExeP. se suman los distintos desplazamientos de programa. el robot no debe estar en movimiento cuando se ejecuta PDispOn. y Nueva posición.114 PDispOn .

z10. MoveL *. . El desplazamiento se calcula a partir de la diferencia existente entre la posición buscada y el punto programado (*) almacenado en la instrucción. Se realiza una búsqueda en la cual la posición buscada por el robot se almacena en la posición psearch.114 PDispOn . MoveL p10. psearch. Todas las posiciones se basan en el sistema de coordenadas de objeto de fixture1. Ejemplo 1 PROC draw_square() PDispOn *. tool1. v500. \Inpos := inpos50. tool1. z10. PDispOff. v500. MoveL p20. ENDPROC .’ [ Tool ’:=’ ] < persistent (PERS) of tooldata> [ ´\’WObj’ :=’ < persistent (PERS) of wobjdata> ] ´. fine draw_square. tool1. z10. z10.’] [ ProgPoint’ :=’ ] < expression (IN) of robtarget> ’. La rutina draw_square se utiliza para ejecutar el mismo patrón de movimiento en tres posiciones diferentes.1 Instrucciones 1. xx0500002185 Ejemplo 2 SearchL sen1. v100.. v500. Reservados todos los derechos.Activa el desplazamiento de programa Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción PDispOn. Consulte la figura siguiente. tool1.’ Continúa en la página siguiente 340 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. tool1 \WObj:=fixture1. Cualquier movimiento realizado a continuación parte de esta posición utilizando un desplazamiento de programa (desplazamiento paralelo). tool1.. p10. tool1\WObj:=fixture1. es posible reutilizar patrones de movimiento. fine draw_square. p20 y p30. Sintaxis PDispOn [ [ ’\’ Rot ] [’\’ ExeP ’:=’ < expression (IN) of robtarget>]’. MoveL *. basándose en las posiciones p10. tool1. MoveL p30. PDispOn \ExeP:=psearch. fine draw_square. v500. v500. v500. tool1. v500. \Inpos := inpos50. *. \Inpos := inpos50. MoveL *. que muestra que cuando se usa el desplazamiento de programa. tool1. MoveL *.

Parámetros del sistema.Datos de herramientas en la página1301 Definición de objetos de trabajo wobjdata . sección Principios de movimiento y E/S .Desactiva el desplazamiento de programa en la página 336 Definición del desplazamiento de progra.Sistemas de coordenadas Definición de herramientas tooldata .PDispSet .1 Instrucciones 1.ma a partir de una base de coordenadas conoda cida en la página 342 Sistemas de coordenadas Manual de referencia técnica . Reservados todos los derechos.Activa el desplazamiento de programa Continuación Información relacionada Para obtener más información sobre Consulte Desactivación del desplazamiento de programa PDispOff . .Activa un desplazamiento de programa con una base de coordenadas conoci.Datos del objeto de trabajo en la página 1323 3HAC16581-5 Revisión: L 341 © Copyright 2004-2011 ABB.114 PDispOn .

Activa un desplazamiento de programa a partir de una base de coordenadas conocida Utilización PDispSet (Program Displacement Set) se usa para definir y activar un desplazamiento de programa usando la base de coordenadas conocida. Continúa en la página siguiente 342 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. todas las posiciones se desplazan 100 mm en la dirección del eje x. que implica que: • El sistema de coordenadas ProgDisp se desplaza 100 mm respecto del sistema de coordenadas del objeto en la dirección del eje x positivo (consulte la figura siguiente). [1. cuando se repiten patrones de movimiento similares en partes distintas del programa. en las tareas de movimiento.. 0] ].115 PDispSet . Activación del desplazamiento de programa xp100.1 Instrucciones 1. 0. . El desplazamiento de programa se utiliza. PDispSet xp100. . • Siempre y cuando esté activado este desplazamiento de programa.115 PDispSet . Reservados todos los derechos. Objeto ProgDisp 100 X xx0500002199_es Argumentos PDispSet DispFrame DispFrame Displacement Frame Tipo de dato: pose El desplazamiento de programa se define mediante un dato del tipo pose. 0]. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción PDispSet.. si se cuenta con un sistema MultiMove.Activa un desplazamiento de programa a partir de una base de coordenadas conocida 1. 0. Ejemplo 1 VAR pose xp100 := [ [100. La figura muestra un desplazamiento de programa de 100 mm a lo largo del eje x. por ejemplo. 0. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o.

y Nueva posición y Nueva orientación Posición original x Orientación Base de coordenadas de original desplazamiento de programa Sistema de coordenadas de desplazamiento del programa (ProgDisp) x Sistema de coordenadas de objeto xx0500002204_es El desplazamiento de programa se activa cuando la instrucción PDispOn se ejecuta y permanece activa hasta que se activa otro desplazamiento de programa (la instrucción PDispSet o PDispOn) o hasta que se desactiva el desplazamiento de programa (la instrucción PDispOff).RAPID overview. . • Cuando se inicia la ejecución del programa desde el principio Sintaxis PDispSet [ DispFrame ’:=’ ] < expression (IN) of pose> ’. Reservados todos los derechos.Desactiva el desplazamiento de programa en la página 336 Definición del desplazamiento de progra. No es posible sumar desplazamientos de programa mediante PDispSet. • Cuando se carga un nuevo programa.Activa un desplazamiento de programa a partir de una base de coordenadas conocida Continuación Ejecución de programas El desplazamiento de programa implica la traslación y/o la rotación del sistema de coordenadas ProgDisp respecto del sistema de coordenadas de objeto. se desplazan también todas las posiciones programadas.PDispOn . que muestra la traslación y rotación de una posición programada.PDispOn . El desplazamiento de programa se elimina automáticamente en los casos siguientes: • En los arranques en frío. Consulte la figura siguiente.Sistemas de coordenadas Ejemplos de cómo puede usarse el des.Transformaciones de coordenadas en la página 1251 Sistemas de coordenadas Technical reference manual .1 Instrucciones 1. Dado que todas las posiciones dependen del sistema de coordenadas ProgDisp.Activa el desplazamiento de prograplazamiento de programa ma en la página 337 3HAC16581-5 Revisión: L 343 © Copyright 2004-2011 ABB. sección Principios de movimiento y E/S .Activa el desplazamiento de programa con dos posiciones ma en la página 337 Definición de datos del tipo pose pose . Sólo puede estar activado un único desplazamiento de programa cada vez.115 PDispSet .’ Información relacionada Para obtener más información sobre Consulte Desactivación del desplazamiento de programa PDispOff .

. Continúa en la página siguiente 344 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos. Estos argumentos controlan el comportamiento del procedimiento y permiten utilizar un mismo procedimiento para distintas operaciones. . con dos argumentos. la ejecución del programa continúa con la instrucción que aparece a continuación de la llamada al procedimiento. Los argumentos del procedimiento (según los parámetros del procedimiento). Ejemplo 1 weldpipe1. Ejemplo 1 weldpipe2 10. Set do1.. Cuando el procedimiento se completa.116 ProcCall . Llama al procedimiento weldpipe1 .Llama a un nuevo procedimiento 1.1 Instrucciones 1.116 ProcCall . . Ejemplo 2 weldpipe3 10 \speed:=20. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ProcCall. es posible enviar un conjunto de argumentos al nuevo procedimiento. lowspeed.Llama a un nuevo procedimiento Utilización Las llamadas a procedimientos se utilizan para transferir la ejecución del programa a otro procedimiento. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ProcCall. Llama al procedimiento weldpipe2. Set do1. Ejemplo 2 errormessage. ENDPROC Se llama al procedimiento errormessage . la ejecución del programa vuelve a la instrucción que aparece a continuación de la llamada al procedimiento. Argumentos Procedure { Argument } Procedure Identifier El nombre del procedimiento al que se llama. Argument Tipo de dato: Según la declaración del procedimiento. Una vez ejecutado en su totalidad el procedimiento. PROC errormessage() TPWrite "ERROR". Normalmente.

’ <procedure> ::= <identifier> Información relacionada Para obtener más información sobre Consulte Argumentos. que a su vez puede llamar a otra. parámetros Technical reference manual .1 Instrucciones 1. Limitaciones Los argumentos deben coincidir con sus parámetros: • Todos los argumentos obligatorios deben incluirse. • Deben ser del tipo correcto en cuanto al modo de acceso (entrada. con un argumento obligatorio y un argumento opcional. El número de niveles de rutinas permitido depende del número de parámetros. . lo que se conoce como llamada recursiva. • Es necesario situarlos en el mismo orden.RAPID overview. Sintaxis (EBNF) <procedure> [ <argument list> ] ’. etc.Llama a un nuevo procedimiento Continuación Llama al procedimiento weldpipe3.116 ProcCall . Una rutina puede llamar a otra rutina. sección Características básicas . Una rutina también puede llamarse a sí misma.Rutinas 3HAC16581-5 Revisión: L 345 © Copyright 2004-2011 ABB. Reservados todos los derechos. • Deben ser del mismo tipo de datos. variable o persistente). Normalmente se permiten más de 10 niveles.

Reservados todos los derechos. en este caso MoveL p2. tool2.117 ProcerrRecovery . fine.117 ProcerrRecovery . ProcerrRecovery \SyncLastMoveInst. ERROR IF ERRNO = ERR_PATH_STOP THEN StartMove. mientras que la ejecución continúa con RETRY. Ejemplo 2 MoveL p1. MoveL p2. en este caso la trayectoria hacia MoveL p1. Argumentos ProcerrRecovery[\SyncOrgMoveInst] | [\SyncLastMoveInst] [\ProcSignal] Continúa en la página siguiente 346 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. v50. tool2. ERROR IF ERRNO = ERR_PATH_STOP THEN StartMove. mientras que la ejecución continúa con RETRY. z30. El movimiento se reinicia con StartMove. pero se añaden por motivos pedagógicos. tool2.Genera errores de movimiento de proceso y permite la recuperación tras ellos 1. v50. MoveL p2. ENDIF El movimiento del robot se detiene en su camino hacia p1 y la ejecución del programa se transfiere al gestor de ERROR de la rutina que creó la trayectoria actual en la que se ha producido el error. tool2. La ejecución del programa se transfiere al gestor de ERROR de la rutina en la que se está ejecutando actualmente el programa o en la que se iba a ejecutar una instrucción de movimiento cuando se produjo el error. Ejemplo 1 MoveL p1.1 Instrucciones 1. RETRY. z30. . RETRY. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ProcerrRecovery. Consulte también Más ejemplos en la página 348. v50.Genera errores de movimiento de proceso y permite la recuperación tras ellos Utilización ProcerrRecovery puede usarse para generar un error de proceso durante un movimiento del robot y ofrece la posibilidad de gestionar el error y reiniciar el proceso y el movimiento desde un gestor de ERROR. z30. El movimiento se reinicia con StartMove. v50. ENDIF El movimiento del robot se detiene inmediatamente en su camino hacia p2. Los ejemplos siguientes no son realistas. ProcerrRecovery \SyncOrgMoveInst.

el robot se detiene en su trayectoria. Esto significa que la transferencia al gestor de ERROR se retrasará si el robot se encuentra en un punto de paro o entre el punto de precaptura del centro de la trayectoria de esquina. [\SyncLastMoveInst] Tipo de dato: switch El error puede ser gestionado en la rutina en la que el programa esté ejecutando una instrucción de movimiento en el momento en que se produjo el error. se genera un error recuperable y no se generará ningún error de proceso. de acuerdo con las reglas para errores elevados asíncronamente.117 ProcerrRecovery .Genera errores de movimiento de proceso y permite la recuperación tras ellos Continuación [\SyncOrgMoveInst] Tipo de dato: switch El error puede ser gestionado en la rutina que creó la trayectoria actual en la que se produjo el error. Continúa en la página siguiente 3HAC16581-5 Revisión: L 347 © Copyright 2004-2011 ABB. • Se cambia la variable ERRNO a ERR_PATH_STOP. Ejecución de programas La ejecución de ProcerrRecovery en el modo continuo da lugar a lo siguiente: • Instantáneamente. Si el programa no está ejecutando ninguna instrucción de movimiento en el momento en el que se produce el error. Si se utiliza este parámetro y el valor de la señal es 0. ProcerrRecovery también puede usarse en los sistemas MultiMove para transferir la ejecución al gestor de ERROR de varias tareas de programa si se utiliza el modo sincronizado. la transferencia de la ejecución al gestor de ERROR se retrasa hasta que el programa ejecuta la siguiente instrucción de movimiento. . Para obtener una descripción de los errores elevados asíncronamente que se generan con ProcerrRecovery. Esta instrucción no hace nada en el modo de ejecución paso a paso.1 Instrucciones 1. consulte el documento RAPID kernel reference/Error recovery/Asynchronously raised errors. [\ProcSignal] Tipo de dato: signaldo Un parámetro opcional que permite al usuario activar o desactivar el uso de la instrucción. El error puede ser gestionado en esa rutina. • La ejecución se transfiere a algún gestor de ERROR. Reservados todos los derechos.

los errores elevados asíncronamente generados por ProcerrRecovery con el modificador \SyncOrgMoveInst pueden ser tratados en la rutina do_process. ENDTRAP PROC my_proc_on() SetDO do_myproc. RETRY. PROC main() . El flujo de proceso se inicia cambiando la señal do_myproc a 1. porque la trayectoria en la que se produjo el error siempre se crea en la rutina o_process. ENDIF ENDPROC TRAP iprocfail my_proc_off. MoveL p3. proc_sup_int.. do_process. Reservados todos los derechos.1 Instrucciones 1.117 ProcerrRecovery . fine.Genera errores de movimiento de proceso y permite la recuperación tras ellos Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción ProcerrRecovery. CONNECT proc_sup_int WITH iprocfail. my_proc_off. . Ejemplo con ProcerrRecovery\SyncOrgMoveInst MODULE user_module VAR intnum proc_sup_int.. fine. ENDPROC ENDMODULE En este ejemplo. v1000. ERROR IF ERRNO = ERR_PATH_STOP THEN my_proc_on. StartMove.. v200. v200. IDelete proc_sup_int. ENDPROC PROC do_process() my_proc_on. La señal di_proc_sup supervisa el proceso y se genera un error asíncrono si di_proc_sup Continúa en la página siguiente 348 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. ISignalDI di_proc_sup. 1. ProcerrRecovery \SyncOrgMoveInst. tool1. . MoveL p1. tool1.. ENDPROC PROC my_proc_off() SetDO do_myproc. tool1. 1. MoveL p2. z10. 0.

Ejemplo con ProcerrRecovery\SyncLastMoveInst MODULE user_module PROC main() . z10.. tool1. do_process. 1. fine. CONNECT proc_sup_int WITH iprocfail. NOSTEPIN) VAR intnum proc_sup_int. ISignalDI di_proc_sup.1 Instrucciones 1. IDelete proc_sup_int.. VAR num try_no := 0. ERROR IF ERRNO = ERR_PATH_STOP THEN StorePath. ENDPROC PROC proc_off() SetDO do_proc. proc_sup_int. 0. 1.. ! Move to service station and fix the problem MoveL p4. proc_move p2. Reservados todos los derechos. tool1. tool1. RestoPath. ENDPROC Continúa en la página siguiente 3HAC16581-5 Revisión: L 349 © Copyright 2004-2011 ABB. proc_move p3. fine. ProcerrRecovery \SyncLastMoveInst. proc_on. proc_off. fine. v200. tool1. v1000. el error se resuelve cambiando de nuevo el valor de do_myproc a 1 antes de reanudar el movimiento. MoveL p1. En este ejemplo sencillo.. p4 := CRobT(\Tool:=tool1). ENDIF ENDPROC ENDMODULE MODULE proc_module (SYSMODULE. TRAP iprocfail proc_off. .Genera errores de movimiento de proceso y permite la recuperación tras ellos Continuación pasa a tener el valor 1. v200. . ENDTRAP PROC proc_on() SetDO do_proc. v200.117 ProcerrRecovery . ENDPROC PROC do_process() proc_on. StartMoveRetry.

Si se utiliza el parámetro opcional \ProcSignal y la señal está desactivada al ejecutar la instrucción. mientras que en otros casos deberá ser realizado por el usuario final. En este ejemplo sencillo.Genera errores de movimiento de proceso y permite la recuperación tras ellos Continuación PROC proc_move (robtarget ToPoint.117 ProcerrRecovery . zonedata Zone. la variable de sistema ERRNO cambia a ERR_NORUNUNIT y la ejecución continúa en el gestor de errores. Por tanto.1 Instrucciones 1. Limitaciones La recuperación de errores desde los errores de proceso elevados asincrónicamente sólo puede hacerse si la tarea de movimiento que contiene la instrucción de movimiento se ejecuta en el nivel de base en el momento en el que se produce el error de proceso. El flujo de proceso se inicia cambiando la señal do_myproc a 1. Tool. La señal di_proc_sup supervisa el proceso y se genera un error asíncrono si di_proc_sup pasa a tener el valor 1. la variable de sistema ERRNO cambia a ERR_PROCSIGNAL_OFF y la ejecución continúa en el gestor de errores. ELSE RaiseToUser \Continue. . Zone. la recuperación de errores no puede hacerse si la tarea de programa que contiene la instrucción de proceso se ejecuta dentro de: • Cualquier rutina de evento Continúa en la página siguiente 350 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. recomendamos utilizar el parámetro de modificación de opción \SyncLastMoveInst. Reservados todos los derechos. IF try_no < 4 THEN proc_on. Recuerde que los movimientos también se detienen inmediatamente. Gestión de errores Pueden generarse los errores recuperables siguientes. StartMoveRetry. ENDIF ENDPROC ENDMODULE En este ejemplo. dado que la rutina predefinida también puede tomar la decisión de gestionar una situación de error dentro de la rutina. Si no hay contacto con la unidad de E/S. Si se utiliza la rutina NOSTEPIN predefinida. Speed. speeddata Speed. ERROR IF ERRNO = ERR_PATH_STOP THEN try_no := try_no + 1. el error se resuelve cambiando de nuevo el valor de do_myproc a 1 antes de reanudar el movimiento. la transferencia al gestor de ERROR se retrasará hasta la ejecución de la siguiente instrucción MoveL en la rutina proc_move. PERS tooldata Tool) MoveL ToPoint. los errores elevados asíncronamente generados por ProcerrRecovery con el modificador \SyncLastMoveInst pueden ser tratados en la rutina proc_move debido a que todas las instrucciones de movimiento se crean siempre en la rutina proc_move. Si el puntero de programa se encuentra en la rutina do_process. Los errores pueden ser gestionados en un gestor de errores.

Genera errores de movimiento de proceso y permite la recuperación tras ellos Continuación • Cualquier gestor de rutina (ERROR.117 ProcerrRecovery .RAPID overview.Recuperación en caso de errores Propagación de un error al nivel del usuario RaiseToUser .1 Instrucciones 1.’ Información relacionada Para obtener más información sobre Consulte Gestores de errores Technical reference manual . .StartMoveRetry . Recuperación de errores.Reanuda el movimiento y la ción de programas ejecución del robot en la página 521 3HAC16581-5 Revisión: L 351 © Copyright 2004-2011 ABB. BACKWARD o UNDO) • Nivel de ejecución de usuario (rutina de servicio) Consulte el Manual de referencia de RAPID . Sintaxis ProcerrRecovery [ ’\’ SyncOrgMoveInst ] | [’ \’ SyncLastMoveInst ] [ ’\’ ProcSignal’ :=’ ] < variable (VAR) of signaldo > ’.Kernel de RAPID . Errores elevados asíncronamente. sección Características básicas . Si no se utiliza ningún gestor de errores con StartMove + RETRY o se utiliza StartMoveRetry. Reservados todos los derechos.Kernel de RAPID. la ejecución del programa se colgará. La única forma de restablecer esta situación es trasladar el PP a Main.Recuperación en caso de error Errores elevados asíncronamente Manual de referencia de RAPID .Propaga un error al nivel del usuario en la página 358 Reanudación del movimiento y la ejecu.

2 segundos. Argumentos PulseDO [ \High ] [ \PLength ] Signal [ \High ] High level Tipo de dato: switch Especifica que el valor de la señal debe ser siempre el valor alto (valor 1) cuando se ejecuta la instrucción.000 s). A continuación. Ejemplo 2 PulseDO \PLength:=1. el pulso puede activarse o desactivarse sin afectar al resto de la ejecución del programa.2 s. Ejemplo 3 ! Program task MAIN PulseDO \High. Ejemplo 1 PulseDO do15. con una duración de pulso de 0. do3. Signal Tipo de dato: signaldo El nombre de la señal en la que se desea generar el pulso. ! At almost the same time in program task BCK1 PulseDO \High.Genera un pulso en una señal digital de salida Utilización PulseDO se utiliza para generar un pulso en una señal digital de salida. do3.118 PulseDO .118 PulseDO . Se genera un pulso con una duración de 0. [ \PLength ] Pulse Length Tipo de dato: num La duración del pulso en segundos (de 0.0. Si se omite el argumento. independientemente de su estado actual.2 s o dos pulsos positivos uno después del otro.001 a 2. se genera un pulso de 0. . Se genera un pulso con una duración de 1.Genera un pulso en una señal digital de salida 1. Se genera el valor positivo (valor 1) en la señal do3 desde dos tareas de programa casi al mismo tiempo.0 s en la señal ignition. ignition. Ejecución de programas La instrucción siguiente tras PulseDO se ejecuta directamente después del inicio del pulso. El resultado es un pulso positivo con una duración más larga que la duración predeterminada de 0.2 s en la señal de salida do15.1 Instrucciones 1. Continúa en la página siguiente 352 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción PulseDO. Reservados todos los derechos.

Los valores programados que difieran de esta resolución se redondean. el pulso puede activarse o desactivarse sin afectar al resto de la ejecución del programa. do5 PulseDO \High \PLength:=y. . Continúa en la página siguiente 3HAC16581-5 Revisión: L 353 © Copyright 2004-2011 ABB. Limitaciones La duración del pulso tiene una resolución de 0.001 segundos.1 Instrucciones 1. do5 xx0500002217_es La instrucción siguiente se ejecuta directamente después del inicio del pulso. A continuación.Genera un pulso en una señal digital de salida Continuación En la figura siguiente se muestran ejemplos de generación de pulsos en una señal digital de salida. Reservados todos los derechos.118 PulseDO . Duración del pulso 1 Nivel de la señal 0 Ejecución de la instrucción PulseDO Ejecución de la instrucción PulseDO 1 Nivel de la señal 0 Duración del pulso 1 Nivel de la señal 0 Ejecución de la instrucción PulseDO \High Ejecución de la instrucción PulseDO \High 1 Nivel de la señal 0 y x 1 Nivel de la señal 0 Ejecución de la instrucción Ejecución de la instrucción desde task1 desde task2 PulseDO \High \PLength:=x.

sección Principios de movimiento y E/S .’ [ Signal ’:=’ ] < variable (VAR) of signaldo > ’.1 Instrucciones 1.’ Información relacionada Para obtener más información sobre Consulte Instrucciones de entrada/salida Technical reference manual . sección Resumen sobre RAPID . Sintaxis PulseDO [ ’\’High] [ ’\’PLength’ :=’ < expression (IN) of num >] ´.Genera un pulso en una señal digital de salida Continuación Gestión de errores Pueden generarse los errores recuperables siguientes.118 PulseDO . . Reservados todos los derechos.Principios de E/S Configuración de E/S Manual de referencia técnica .Señales de entrada y salida Funcionalidad de entrada/salida en general Technical reference manual .RAPID overview.RAPID overview. La variable de sistema ERRNO cambia a: ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S. El error puede ser gestionado en un gestor de errores.Parámetros del sistema 354 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.

RAISE fuerza la ejecución en el gestor de errores. Consulte también Más ejemplos en la página 356. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RAISE. ] Error no. . por ejemplo al gestor de errores de la rutina principal. VAR errnum ERR_MY_ERR := -1. si se produce un error en el nivel inferior.Llama a un gestor de errores Utilización RAISE se utiliza para crear un error en el programa y llamar a continuación al gestor de errores de la rutina. En este ejemplo. ENDIF ERROR IF ERRNO = ERR_MY_ERR THEN TPWrite "di1 equals 0".1 Instrucciones 1. Tipo de dato: errnum Número de error: Cualquier número de 1 a 90 que pueda usar el gestor de errores para localizar el error que se ha producido (la variable de sistema ERRNO). el usuario ha creado su propio número de error para gestionar este error en concreto. RAISE también puede usarse en el gestor de errores para propagar el error actual hacia el gestor de errores de la rutina desde la que se llamó a la rutina actual. Continúa en la página siguiente 3HAC16581-5 Revisión: L 355 © Copyright 2004-2011 ABB. ENDIF ENDPROC ENDMODULE En esta implementación. Argumentos RAISE [ Error no. BookErrNo pertenece a la funcionalidad básica Advanced RAPID. di1 igual a 0 es considerado como un error.119 RAISE . PROC main() BookErrNo ERR_MY_ERR. esta instrucción puede usarse para volver a un nivel más alto de la estructura del programa.119 RAISE . Ejemplo 1 MODULE MainModule .Llama a un gestor de errores 1. IF di1 = 0 THEN RAISE ERR_MY_ERR. Por ejemplo. Reservados todos los derechos.

Ejecución de programas La ejecución del programa continúa en el gestor de errores de la rutina. VAR num value2 := 0. PROC main() routine1. Reservados todos los derechos. la ejecución del programa puede continuar con: • La rutina que llamó a la rutina actual (RETURN). En este caso. la división entre cero dará lugar a un error. ENDPROC ENDMODULE En este ejemplo. Una instrucción RAISE en el gestor de errores de una rutina también presenta otra característica. RETRY. ENDIF ENDPROC PROC routine1() value1 := 5/value2.Llama a un gestor de errores Continuación También es posible registrar un número de error fuera del rango de 1 a 90 con la instrucción BookErrNo. • El gestor de errores de la rutina que llamó a la rutina actual (RAISE). ERROR RAISE. El número de error debe especificarse fuera del gestor de errores en una instrucción RAISE. el error se propaga hasta el gestor de errores de la rutina que realiza la llamada. Después de ejecutar el gestor de errores. En el gestor de ERROR. para poder transferir la ejecución al gestor de errores que se encuentra fuera de la rutina. Ejemplo 1 MODULE MainModule VAR num value1 := 10. . Puede usarse para saltos largos (consulte “Recuperación en caso Continúa en la página siguiente 356 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. no es necesario especificar el número del error. Si la instrucción se incluye en el gestor de errores de una rutina. RAISE propagará el error hasta el gestor de ERROR de la rutina "main" que hace la llamada. RETRY ejecutará de nuevo la totalidad de la rutina "routine1".!This will lead to an error when value2 is equal to 0. ERROR IF ERRNO = ERR_DIVZERO THEN value2 := 1. Más ejemplos A continuación aparecen más ejemplos de la instrucción RAISE.1 Instrucciones 1.119 RAISE . El mismo número de error permanece activo.

el error se gestiona en el gestor de errores del sistema.Recuperación en caso de error Registro de números de error BookErrNo .errnum”).Recuperación en caso de error Recuperación en caso de error con un salto largo Manual de referencia técnica .Parámetros del sistema.Registra un número de error de sistema de RAPID en la página 32 3HAC16581-5 Revisión: L 357 © Copyright 2004-2011 ABB. Si la instrucción RAISE está presente en una rutina TRAP.1 Instrucciones 1.Parámetros del sistema. .Llama a un gestor de errores Continuación de error con un salto largo”). sección Características básicas . Con un salto largo. es posible propagar un error desde un gestor de errores que se encuentra a gran profundidad dentro de una cadena de llamadas anidadas. sección Características básicas . Sintaxis (EBNF) RAISE [<error number>] ’. hasta un nivel superior. El error puede ser gestionado en el gestor de errores.’ <error number> ::= <expression> Información relacionada Para obtener más información sobre Consulte Gestión de errores Manual de referencia técnica . Reservados todos los derechos.119 RAISE . Gestión de errores Si el número de error está fuera de rango. la variable de sistema ERRNO cambia a ERR_ILLRAISE (consulte “Tipos de datos . en un solo paso.

.120 RaiseToUser .Propaga un error al nivel del usuario 1. El nivel del usuario es en este caso la primera rutina de una cadena de llamadas.. . UNDO ! Free allocated resources ENDPROC PROC routine2() VAR num n:=0. VIEWONLY) PROC routine1() ... ... . Ejemplo 1 MODULE MyModule VAR errnum ERR_MYDIVZERO:= -1. routine1. . PROC main() BookErrNo ERR_MYDIVZERO. ENDIF ENDPROC ENDMODULE Continúa en la página siguiente 358 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. ERROR IF ERRNO = ERR_MYDIVZERO THEN TRYNEXT. .. por encima de la rutina NOSTEPIN. ELSE RETRY.. ELSE RaiseToUser \BreakOff. .1 Instrucciones 1.. Reservados todos los derechos. routine2.120 RaiseToUser . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RaiseToUser. NOSTEPIN. reg1:=reg2/n.. ERROR IF ERRNO = ERR_DIVZERO THEN RaiseToUser \Continue \ErrorNumber:=ERR_MYDIVZERO.Propaga un error al nivel del usuario Utilización RaiseToUser se utiliza en los gestores de errores de las rutinas NOSTEPIN para propagar el error actual o cualquier otro error definido hacia el gestor de errores del nivel del usuario... ENDIF ENDPROC ENDMODULE MODULE MySysModule (SYSMODULE.

Si se produce cualquier otro error en routine2. [\ErrorNumber] Tipo de dato: errnum Cualquier número de 1 a 90 que pueda usar el gestor de errores para localizar el error que se ha producido (la variable de sistema ERRNO). Reservados todos los derechos. . A continuación. El mismo número de error permanece activo si no está presente el parámetro opcional \ErrorNumber. de nuevo desde el principio. Ejecución de programas RaiseToUser can sólo puede usarse en un gestor de errores de una rutina NOSTEPIN. La ejecución del programa continúa en el gestor de errores de la rutina en el nivel del usuario. el modificador \BreakOff fuerza la continuación de la ejecución desde el gestor de errores de la rutina main. \Continue ni \BreakOff. el gestor de deshacer de routine1 se ejecuta mientras se eleva hacia el nivel del usuario. Es necesario programar uno de los argumentos \Continue o \BreakOff. La instrucción RETRY del gestor de errores de la rutina main ejecuta routine1. la instrucción TRYNEXT del gestor de errores hace que la ejecución del programa continúe en la instrucción que sigue a la división entre cero en routine2.1 Instrucciones 1. Argumentos RaiseToUser[ \Continue] | [ \BreakOff][ \ErrorNumber] [\Continue] Tipo de dato: switch Continúa la ejecución en la rutina que provocó el error. para evitar un error de ejecución. el número de error original se propaga hacia el gestor de errores en la rutina. Continúa en la página siguiente 3HAC16581-5 Revisión: L 359 © Copyright 2004-2011 ABB. El gestor de deshacer de routine1 también se ejecuta en el caso de que se use \Continue. El modificador \Continue controla este comportamiento. Si no se especifica el argumento \ErrorNumber. con el valor ERR_MYDIVZERO en errno. La llamada al gestor de errores del sistema se realiza si no se especifica ninguno de los argumentos.120 RaiseToUser . a nivel de usuario. Cualquier gestor de deshacer de la cadena de llamadas se ejecuta de forma separada del gestor de deshacer de la rutina que elevó el error. si la siguiente instrucción RAISE o RETURN se realiza en el nivel del usuario. El gestor de errores del sistema se encarga del error si no hay ningún gestor de errores en el nivel del usuario. En este caso.Propaga un error al nivel del usuario Continuación La división entre cero que tiene lugar en routine2 se propaga hacia arriba en el gestor de errores de la rutina main. También es posible registrar un número de error fuera del rango de 1 a 90 con la instrucción BookErrNo. [\BreakOff] Tipo de dato:switch Interrumpe la cadena de llamadas y prosigue la ejecución en el nivel del usuario.

Reservados todos los derechos. El gestor de errores del sistema se encarga de este error. La ejecución del programa puede continuar con: • La instrucción que provocó el error (RETRY) • La instrucción siguiente (TRYNEXT) • El gestor de errores de la rutina que llamó a la rutina en el nivel del usuario (RAISE) • La rutina que llamó a la rutina del nivel del usuario (RETURN) Gestión de errores Si el número de error está fuera de rango.errnum”). la variable de sistema ERRNO cambia a ERR_ILLRAISE (consulte “Tipos de datos . Sintaxis RaiseToUser [ ‘\’Continue ] ´|’ [ ‘\’BreakOff ] [ ‘\’ErrorNumber’ :=’ ] < expression (IN) of errnum>‘. La ejecución del programa prosigue en el nivel del usuario si el modificador \BreakOff está activado.Recuperación en caso de error Gestión de deshacer Technical reference manual .120 RaiseToUser .Propaga un error al nivel del usuario Continuación Existen dos comportamientos diferentes una vez que se ha ejecutado el gestor de errores. sección Características básicas .’ Información relacionada Para obtener más información sobre Consulte Gestión de errores Technical reference manual . sección Características básicas . .Deshacer Registro de números de error BookErrNo . si el modificador \Continue está activado. La ejecución del programa continúa en la rutina que contiene RaiseToUser.Registra un número de error de sistema de RAPID en la página 32 360 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.RAPID overview.RAPID overview.1 Instrucciones 1.

Open "com2:".Lee datos de un canal serie o un archivo binario Utilización ReadAnyBin (Read Any Binary) se utiliza para leer cualquier tipo de dato de un canal serie o un archivo binario. . el tiempo máximo es de 60 segundos. se detiene la ejecución. Ejemplo 1 VAR iodev channel2. next_target..121 ReadAnyBin . todos los archivos o canales serie abiertos del sistema se cierran y el descriptor de E/S de la variable del tipo iodev se restablece. Continúa en la página siguiente 3HAC16581-5 Revisión: L 361 © Copyright 2004-2011 ABB. Si no hay ningún gestor de errores. [\Time] Tipo de dato: num El tiempo máximo para la operación de lectura (tiempo límite) en segundos. Reservados todos los derechos. Si no se especifica este argumento. .121 ReadAnyBin .Lee datos de un canal serie o un archivo binario 1. Ejecución de programas Se lee del canal serie o del archivo binario especificado el número de bytes necesario para los datos especificados. next_target. utilice la constante predefinida WAIT_MAX.. En caso de un reinicio tras una caída de alimentación. VAR robtarget next_target. Argumentos ReadAnyBin IODevice Data [\Time] IODevice Tipo de dato: iodev El nombre (la referencia) del canal serie o el archivo binario del que se desea leer. La función de tiempo límite se utiliza también durante un paro de programa y se notificará en el programa de RAPID al poner en marcha el programa. Data Tipo de dato: ANYTYPE La variable de tipo VAR o PERS en la que se desea almacenar la información. Consulte también Más ejemplos en la página 362.1 Instrucciones 1. Para esperar ininterrumpidamente. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ReadAnyBin. ReadAnyBin channel2. Si se agota este tiempo antes de que se complete la operación de lectura. se llama al gestor de errores con el código de error ERR_DEV_MAXTIME. Se lee del canal al que se hace referencia con channel2 el siguiente objetivo que debe ejecutar el robot. channel2 \Bin.

la variable de sistema ERRNO cambia a ERR_RANYBIN_CHK. Si se produce un error de suma de comprobación en los datos leídos. . Si se detecta el final del archivo antes de completar la lectura de todos los bytes. VAR iodev channel. una matriz o un elemento de matriz de este tipo de dato de valor. VAR robtarget cur_robt. Ejemplo 1 CONST num NEW_ROBT:=12.1). la variable de sistema ERRNO cambia a ERR_RANYBIN_EOF. Limitaciones Esta instrucción sólo puede usarse con canales serie o archivos que hayan sido abiertos para lectura binaria. cur_wobj. Continúa en la página siguiente 362 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Gestión de errores Si se produce un error durante la lectura. CASE NEW_WOBJ: ReadAnyBin channel. se lee del canal serie el código de operación opcode del mensaje. También puede usarse un registro. VAR wobjdata cur_wobj. A continuación. se lee el dato robtarget o wobjdata del canal serie.121 ReadAnyBin . la variable de sistema ERRNO cambia a ERR_FILEACC. CONST num NEW_WOBJ:=20. channel\Bin. cur_robt.Lee datos de un canal serie o un archivo binario Continuación Más ejemplos A continuación aparecen más ejemplos de la instrucción ReadAnyBin. ENDTEST Close channel. Los datos a leer con esta instrucción ReadAnyBin deben ser de los tipos de datos num. No es posible usar datos enteros o datos parciales con semivalor ni tipos de datos sin valor. Como primer paso. ! Wait for the opcode character input := ReadBin (channel \Time:= 0. la variable de sistema ERRNO cambia a ERR_DEV_MAXTIME. Open "com2:". VAR num input. estos errores pueden ser gestionados en el gestor de errores. TEST input CASE NEW_ROBT: ReadAnyBin channel. un componente de registro. Acorde con el opcode. Reservados todos los derechos. Si se agota el tiempo límite antes de que se complete la operación de lectura. bool o string.1 Instrucciones 1.

Y. no se hace público ningún protocolo de datos y no es posible interpretar estos datos en ningún PC. Si un WriteAnyBin a un archivo se realiza con RobotWare versión 5. Versión 0 del software de controlador IRC5 igual o anterior a la RW5. en el caso opuesto. puede actualizarse en varios pasos. Por tanto. .121 ReadAnyBin . El desarrollo de software de control puede afectar a la compatibilidad. que se usa para almacenar los datos leídos.1 Instrucciones 1.RAPID overview. espere siempre hasta que se actualice toda la estructura de datos antes de leer la información desde una rutina TRAP o desde otra tarea de programa. Sintaxis ReadAnyBin [IODevice’:=’] <variable (VAR) of iodev>’.Comunicación Escritura de datos en canales serie o archivo WriteAnyBin . Dado que WriteAnyBin-ReadAnyBin sólo se han diseñado para gestionar datos binarios internos de controlador con canales serie o archivos entre o dentro de sistemas de control IRC5.07.Lee datos de un canal serie o un archivo binario Continuación Nota La variable VAR o PERS. de forma que no es posible usar WriteAnyBin-ReadAnyBin entre versiones de software de RobotWare diferentes. si un WriteAnyBin a un archivo se realiza con RobotWare versión 5. no es posible leer el archivo con la instrucción ReadAnyBin de RobotWare versión 5. no es posible leer el archivo con la instrucción ReadAnyBin de RobotWare versión 5.08.08 Siempre existe la compatibilidad entre todas las revisiones de cualquier versión de software.07 Versión 1 del software de controlador IRC5 igual o posterior a la RW5.Escribe datos en un canal serie o archivo binario en la página 761 3HAC16581-5 Revisión: L 363 © Copyright 2004-2011 ABB.’ [Data’:=’] <var or pers (INOUT) of ANYTYPE> [’\’Time’:=’ <expression (IN) of num>]’.Technical reference manual .’ Información relacionada Para obtener más información sobre Consulte Apertura y otras operaciones con cana. les serie o archivos sección Resumen sobre RAPID . Reservados todos los derechos.07.08.

Ejemplo 1 CONST string SensorPar := "flp1:senpar. The data is stored in a file.cfg"..122 ReadBlock .1 Instrucciones 1.cfg).cfg ReadBlock "sen1:". SensorPar. CONST num ParBlock:= 1.Lee un bloque de datos de un dispositivo Utilización ReadBlock se utiliza para leer un bloque de datos de un dispositivo que está conectado a la interfaz de sensores serie. FileName Tipo de dato: string Continúa en la página siguiente 364 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Éste es un ejemplo de configuración de un canal de sensor. Reservados todos los derechos. ParBlock.122 ReadBlock . La interfaz de sensores se comunica con dos sensores a través de canales serie. Argumentos ReadBlock device BlockNo FileName [ \TaskName ] device Tipo de dato: string El nombre del dispositivo de E/S configurado en sio. ! Connect to the sensor device "sen1:" (defined in sio. . utilizando el protocolo de transporte RTP1.cfg para el sensor utilizado.Lee un bloque de datos de un dispositivo 1. BlockNo Tipo de dato: num El argumento BlockNo se utiliza para seleccionar el bloque de datos de sensor que se desea leer. ! Read sensor parameters from sensor datablock 1 ! and store on flp1:senpar. SenDevice "sen1:". COM_PHY_CHANNEL: • Name “COM1:” • Connector “COM1” • Baudrate 19200 COM_TRP: • Name “sen1:” • Type “RTP1” • PhyChannel “COM1” Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ReadBlock.

Establece una conexión a un dispositivo de xión a un dispositivo de sen. .Escribe una variable en la página 777 Lectura de una variable de sensor ReadVar . ción del sensor sección Communication 3HAC16581-5 Revisión: L 365 © Copyright 2004-2011 ABB. [ \TaskName ] Tipo de dato: string El argumento TaskName hace posible el acceso a dispositivos de otras tareas de RAPID.122 ReadBlock .sensor en la página 454 sor Escritura de una variable de sensor WriteVar . Gestión de fallos Constante de error (valor de ERRNO) Descripción SEN_NO_MEAS Fallo de medición SEN_NOREADY Sensor incapaz de gestionar el comando SEN_GENERRO Error general del sensor SEN_BUSY Sensor ocupado SEN_UNKNOWN Sensor desconocido SEN_EXALARM Error de sensor externo SEN_CAALARM Error de sensor interno SEN_TEMP Error de temperatura del sensor SEN_VALUE Valor de comunicación no válido SEN_CAMCHECK Fallo de comprobación de sensor SEN_TIMEOUT Error de comunicación Sintaxis ReadBlock [ device ‘:=’ ] < expression(IN) of string>’.Lee un bloque de datos de un dispositivo Continuación El argumento FileName se utiliza para definir un archivo en el que se escriben los datos desde el bloque de datos de sensor seleccionado en el argumento BlockNo.1 Instrucciones 1.Manual de referencia técnica .’ Información relacionada Para obtener más información sobre Consulte Establecimiento de una cone.Lee una variable de un dispositivo en la página1030 Escritura de un bloque de da. Reservados todos los derechos.SenDevice .Escribe un bloque de datos en un dispositivo tos de sensor en la página 766 Configuración de la comunica.’ [ ’\’ TaskName’ :=’ < expression (IN) of string > ] ‘.’ [ BlockNo’ :=’ ] < expression (IN) of num > ‘.Parámetros del sistema.’ [ FileName’ :=’ ] < expression (IN) of string > ‘.WriteBlock .

.1 Instrucciones 1. Argumentos ReadCfgData InstancePath Attribute CfgData [\ListNo] InstancePath Tipo de dato: string Especifica la ruta hasta el parámetro que debe leerse. el formato de esta cadena es /DOMAIN/TYPE/ParameterName. En función del tipo de atributo. En el caso de los parámetros sin nombre."Unit". Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ReadCfgData. los tipos válidos son bool. num o string. CfgData Tipo de dato: any type La variable en la que se almacenará el valor del atributo. ReadCfgData "/EIO/EIO_SIGNAL/process_error". . el formato de esta cadena es /DOMAIN/TYPE/Attribute/AttributeValue..Lee un atributo de un parámetro del sistema 1.io_unit. Ejemplo 1 VAR num offset1.123 ReadCfgData . . Además de leer parámetros con nombre. Attribute Tipo de dato: string El nombre del atributo del parámetro que se desea leer. Ejemplo 2 VAR string io_unit. .offset1..123 ReadCfgData . Lee el nombre de la unidad de E/S en la que está definida la señal process_error y lo almacena en la variable de tipo string llamada io_unit. En el caso de los parámetros con nombre. también es posible buscar parámetros sin nombre."cal_offset".Lee un atributo de un parámetro del sistema Utilización ReadCfgData se utiliza para leer un atributo de un parámetro del sistema (de los datos de configuración).. ReadCfgData "/MOC/MOTOR_CALIB/rob1_1". [\ListNo] Tipo de dato: num Continúa en la página siguiente 366 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Estos dos ejemplos muestran cómo leer parámetros con nombre. Lee el valor del offset de calibración de axis 1 para rob_1 en la variable de tipo num offset1. Reservados todos los derechos.

En este ejemplo.. si no hay más instancias el valor de retorno será -1.123 ReadCfgData . Más ejemplos A continuación aparecen más ejemplos de la instrucción ReadCfgdata. Reservados todos los derechos. list_index:=0. "Res". Ejecución de programas El valor del atributo especificado por el argumento Attribute se almacena en la variable especificada por el argumento CfgData. Se actualiza tras cada lectura exitosa de la siguiente instancia disponible.Lee un atributo de un parámetro del sistema Continuación Una variable que contiene el número de instancia de atributo+ AttributeValue a encontrar. Name o NAME. En el caso de los parámetros sin nombre. el valor devuelto en \ListNo se incrementará en 1. \ListNo:=list_index. VAR string read_str.. sólo están disponibles los parámetros con nombre. . La constante predefinida END_OF_LIST puede usarse para comprobar si hay más de una instancia a buscar. De lo contrario. Si se usa el formato /DOMAIN/TYPE/ParameterName en InstancePath. Estos dos ejemplos muestran cómo leer parámetros sin nombre. . IF read_str <> "" THEN TPWrite "Resultant signal for signal do_13 is: " + read_str. los parámetros cuyo primer atributo sea name. Si hay más instancias a buscar. es decir. read_str. ENDIF Lee la señal resultante de la señal digital de actuación sin nombre di_13 y guarda el nombre en la variable de tipo string llamada read_str. La primera vez que aparece Attribute + AttributeValue tiene el número de instancia 0. Ejemplo 1 VAR num list_index. ReadCfgData "/EIO/EIO_CROSS/Act1/do_13". el dominio EIO tiene el código cfg siguiente: EIO_CROSS: -Res "di_1" -Act1 "do_2" -Res "di_2" -Act1 "do_2" -Res "di_13" -Act1 "do_13" Continúa en la página siguiente 3HAC16581-5 Revisión: L 367 © Copyright 2004-2011 ABB. utilice el parámetro opcional \ListNo para seleccionar de cuál de las instancias debe leerse el valor del atributo.1 Instrucciones 1.

1 Instrucciones 1. ENDIF ENDWHILE Se leen los nombres de todas las señales definidas para la unidad de E/S USERIO. grados.Lee un atributo de un parámetro del sistema Continuación Ejemplo 2 VAR num list_index. segundos. Attribute o CfgData. n) al ejecutar la instrucción.. Estos errores pueden ser gestionados en el gestor de errores. radianes. ERRNO cambia a ERR_CFG_OUTOFBOUNDS... sólo están disponibles los parámetros con nombre. la variable de sistema ERRNO cambia a ERR_CFG_INTERNAL. \ListNo:=list_index. IF read_str <> "" THEN TPWrite "Signal: " + read_str. Las cadenas de RAPID están limitadas a 80 caracteres. Continúa en la página siguiente 368 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. En algunos casos. etc.123 ReadCfgData . la variable de sistema ERRNO cambia a ERR_CFG_ILLTYPE. "Name". puede ser en teoría una longitud demasiado reducida para la definición de InstancePath. En este ejemplo. Si se usa el formato /DOMAIN/TYPE/ParameterName en InstancePath. list_index:=0. los parámetros cuyo primer atributo sea name. Reservados todos los derechos. segundos.. Si el tipo de dato del parámetro CfgData es distinto del tipo de dato real de los datos encontrados y especificados con “InstancePath + Attribute” en la base de datos de configuración. la variable de sistema ERRNO cambia a ERR_CFG_NOTFND. Si se está intentando leer un dato interno. es decir. Name o NAME. VAR string read_str. Si la variable del argumento \ListNo tiene un valor que está fuera del rango de instancias disponibles (0 . . .). WHILE list_index <> END_OF_LIST DO ReadCfgData "/EIO/EIO_SIGNAL/Unit/USERIO". Limitaciones La conversión de las unidades del parámetro del sistema (metros.) a las unidades de los programas de RAPID (mm. etc. el dominio EIO tiene el código cfg siguiente: EIO_SIGNAL: -Name "USERDO1" -SignalType "DO" -Unit "USERIO" -UnitMap "0" -Name "USERDO2" -SignalType "DO" -Unit "USERIO" -UnitMap "1" -Name "USERDO3" -SignalType "DO" -Unit "USERIO" -UnitMap "2" Gestión de errores Si no es posible encontrar los datos especificados con “InstancePath + Attribute” en la base de datos de configuración. read_str. que afecta a CfgData del tipo de datos num debe ser realizada por el usuario en el programa de RAPID.

WriteCfgData . Sintaxis ReadCfgData [ InstancePath ':=' ] < expression (IN) of string > '.123 ReadCfgData .Lee un atributo de un parámetro del sistema Continuación Datos predefinidos La constante predefinida END_OF_LIST.Cadenas de caracteres en la página 1287 Escritura de un atributo de un paráme. puede usarse para detener la lectura si no es posible encontrar más instancias. con valor -1.' [ Attribute ':=' ] < expression (IN) of string > '.' Información relacionada Para obtener más información sobre Consulte Definición de cadena de caracteres string . .Obtiene el nombre del robot del TCP tarea actual en la página 1037 Configuración Manual de referencia técnica . Reservados todos los derechos.Escribe un atributo de un parámetro tro del sistema del sistema en la página 768 Obtención del nombre del robot de la RobName .' [ CfgData ':=' ] < variable (VAR) of anytype > [ '\' ListNo ':=' < variable (VAR) of num >] '.1 Instrucciones 1.Parámetros del sistema 3HAC16581-5 Revisión: L 369 © Copyright 2004-2011 ABB.

el número. ENDTRAP Cuando se detecta un error con la rutina TRAP trap_err. Continúa en la página siguiente 370 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. el tipo y las dos primeras cadenas entremezcladas del mensaje de error se almacenan en las variables adecuadas. Reservados todos los derechos. Argumentos ReadErrData TrapEvent ErrorDomain ErrorId ErrorType [\Str1][\Str2] [\Str3] [\Str4] [\Str5] TrapEvent Tipo de dato: trapdata La variable que contiene la información sobre qué hecho provocó la ejecución de la rutina TRAP. TRAP trap_err GetTrapData err_data. número y cadenas entremezcladas %s. ErrorDomain Tipo de dato: errdomain La variable que debe almacenar el dominio de error al que pertenece el error. err_number. Consulte los datos predefinidos del tipo errdomain.124 ReadErrData . Consulte también Más ejemplos en la página 372 Ejemplo 1 VAR errdomain err_domain. . VAR string string2.1 Instrucciones 1. VAR trapdata err_data. el cambio de estado o la advertencia que provocó la ejecución de la rutina TRAP. etc. . VAR errtype err_type. ErrorId Tipo de dato: num La variable que debe almacenar el número del error que se ha producido. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ReadErrData.Obtiene información sobre un error 1.Obtiene información sobre un error Utilización ReadErrData debe utilizarse en rutinas TRAP para obtener información (dominio. ReadErrData err_data. el dominio. tipo.) sobre el error. err_type \Str1:=string1 \Str2:=string2.. VAR num err_number. err_domain..124 ReadErrData . VAR string string1. el cambio de estado o la advertencia. El número del error se devuelve sin el primer dígito (el dominio del error) y sin los ceros iniciales que sí aparecen en el número de error completo.

Si hay varios eventos conectados a una misma rutina TRAP. Podrían existir hasta cinco argumentos en un mismo mensaje. Esto puede hacerse comprobando que INTNO coincide con el número de interrupción utilizado en la instrucción IError. ErrorType y Str1 . ErrorType Tipo de dato: errtype La variable que debe almacenar el tipo de evento que se ha producido. .. el programa debe asegurarse de que el evento está relacionado con la monitorización de errores.1 Instrucciones 1. [ \Str1 ] . por ejemplo un error. [ \Str5 ] Tipo de dato: string Actualiza la variable de cadena especificada... Reservados todos los derechos. con el argumento intercalado en el mensaje de error. %d o %ld. se devuelve como 8. Consulte los datos predefinidos del tipo errtype. con los tipos %s. etcétera. La información acerca de cuántos argumentos puede contener un mensaje aparece en el Manual del operador . el error 10008 Program restarted. Str2 el segundo argumento.124 ReadErrData . que siempre se convertirán en una cadena al ejecutar esta instrucción. Ejecución de programas Las variables ErrorDomain.Solución de problemas. Str1 contendrá el primer argumento. Los argumentos intercalados se marcan como arg en ese documento. un cambio de estado o una advertencia. ErrorId.Obtiene información sobre un error Continuación Por ejemplo. Str5 se actualizan de acuerdo con el contenido de TrapEvent.. Continúa en la página siguiente 3HAC16581-5 Revisión: L 371 © Copyright 2004-2011 ABB. %f.

.’ [ErrorId’:=’] <variable (VAR) of num>’. . 11 SetGO go_err1.’ [ErrorDomain’ :=’] <variable (VAR) of errdomain>’. VAR trapdata err_data. Limitación No es posible obtener información sobre los errores internos. PROC main() CONNECT err_interrupt WITH trap_err. ! Set domain no 1 .. err_number. TRAP trap_err GetTrapData err_data.Obtiene información sobre un error Continuación Más ejemplos A continuación aparecen más ejemplos de la instrucción ReadErrData.. TYPE_ERR.124 ReadErrData .. Ejemplo 1 VAR intnum err_interrupt. Sintaxis ReadErrData [TrapEvent ’:=’] <variable (VAR) of trapdata>’.. err_type. sección Resumen sobre RAPID . ReadErrData err_data.’ [ErrorType’ :=’] <variable (VAR) of errtype> [‘\’Str1 ´:=’<variable (VAR) of string>] [‘\’Str2 ´:=’<variable (VAR) of string>] [‘\’Str3 ´:=’<variable (VAR) of string>] [‘\’Str4 ´:=’<variable (VAR) of string>] [‘\’Str5 ´:=’<variable (VAR) of string>]’.9999 SetGO go_err2. Reservados todos los derechos. .1 Instrucciones 1. interrupciones sección Características básicas . IDelete err_interrupt. IError COMMON_ERR. err_domain. VAR errdomain err_domain.RAPID overview.Interrupciones Continúa en la página siguiente 372 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB...’ Información relacionada Para obtener más información sobre Consulte Resumen de interrupciones Technical reference manual . . ! Set error no 1 .Interrupciones Más información sobre la gestión de Technical reference manual .. err_domain.. ENDTRAP Cuando se produce un error (sólo en el caso de los errores. no las advertencias ni los cambios de estado). VAR errtype err_type. VAR num err_number. el número de error se obtiene en la rutina TRAP y su valor se utiliza para activar dos grupos de señales digitales de salida.RAPID overview. err_interupt. err_number...

errtype .Tipo de error en la página 1202 das Solicitud de una interrupción para errores IError .Solicita una interrupción para errores en la página 132 Obtención de datos de interrupción para la rutina TRAP actual GetTrapData . constantes predefi.1 Instrucciones 1. .Dominio de error en la página 1192 nidas Tipos de errores.124 ReadErrData .Obtiene datos de interrupción para la rutina TRAP actual en la página 121 3HAC16581-5 Revisión: L 373 © Copyright 2004-2011 ABB. Reservados todos los derechos.errdomain .Obtiene información sobre un error Continuación Para obtener más información sobre Consulte Dominios de error. constantes predefini.

UnpackRawBytes raw_data_in. rawbytes raw_data_in. ReadRawBytes io_device. WriteRawBytes io_device. raw_data_out. 1.125 ReadRawBytes . io_device \Bin.Lee datos de tipo rawbytes Utilización ReadRawBytes se utiliza para leer datos de tipo rawbytes de un dispositivo abierto con Open\Bin.2. raw_data_out. y los datos válidos actuales de raw_data_out se escriben en el dispositivo. almacenando en raw_data_in la información leída. ClearRawBytes raw_data_out. "/FC1:/dsqc328_1". (RawBytesLen(raw_data_out)+1) \Float4. . En este ejemplo. PackDNHeader "10". rawbytes raw_data_out. "20 1D 24 01 30 64". raw_data_out se deja sin contenido y se empaqueta con el encabezado de DeviceNet. junto con un valor de coma flotante con el valor 0. num float := 0. los datos leídos se desempaquetan dando lugar a una cadena de caracteres que se almacena en answer.1 Instrucciones 1. PackRawBytes float. answer \ASCII:=10. Reservados todos los derechos. string answer. raw_data_in \Time:=1. Close io_device. Continúa en la página siguiente 374 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. A continuación.Lee datos de tipo rawbytes 1. el programa espera al menos 1 segundo antes de leer del dispositivo. raw_data_out. Open "/FC1:/dsqc328_1". RawData Tipo de dato: rawbytes RawData es el contenedor de datos que almacena los datos leídos de IODevice. empezando por el número de índice 1.2. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ReadRawBytes. Argumentos ReadRawBytes IODevice RawData [\Time] IODevice Tipo de dato: iodev IODevice es el identificador del dispositivo desde el cual se deben leer los datos. Ejemplo 1 VAR VAR VAR VAR VAR iodev io_device. Después de cerrar el dispositivo "/FC1:/dsqc328_1". Se abre un dispositivo.125 ReadRawBytes .

Reservados todos los derechos. En caso de un reinicio tras una caída de alimentación. la variable de sistema ERRNO cambia a ERR_FILEACC.Lee datos de tipo rawbytes Continuación [\Time] Tipo de dato: num El tiempo máximo para la operación de lectura (tiempo límite) en segundos (resolución 0. Si se agota este tiempo antes de que se complete la operación de lectura. estos errores pueden ser gestionados en el gestor de errores.Obtiene la longitud de un dato de tipo rawbytes en la página 1011 Borrado del contenido de un dato de tipo rawbytes ClearRawBytes . por ejemplo DeviceNet.Borra el contenido de un dato de tipo rawbytes en la página 53 Continúa en la página siguiente 3HAC16581-5 Revisión: L 375 © Copyright 2004-2011 ABB.Datos sin formato en la página 1254 Obtención de la longitud de un dato rawbytes RawBytesLen .001 s). La función de tiempo límite se utiliza también durante un paro de programa y se notificará en el programa de RAPID al poner en marcha el programa. se detiene la ejecución. A continuación. Gestión de errores Si se produce un error durante la lectura. la variable RawData no se ve afectada y la variable de sistema ERRNO cambia a ERR_DEV_MAXTIME. se llama al gestor de errores con el código de error ERR_DEV_MAXTIME. Si se utiliza WriteRawBytes junto con los comandos de bus de campo. Si no se especifica este argumento.’ [RawData ’:=’ ] < variable (VAR) of rawbytes> ’. La longitud actual de los bytes válidos de la variable RawData cambia al número de bytes leídos. todos los archivos o canales serie abiertos del sistema se cierran y el descriptor de E/S de la variable del tipo iodev se restablece. el tiempo máximo es de 60 segundos. La respuesta debe ser manejada en RAPID con la instrucción ReadRawBytes. Sintaxis ReadRawBytes [IODevice ’:=’ ] < variable (VAR) of iodev>’ .1 Instrucciones 1. Para esperar ininterrumpidamente. los datos se leen del dispositivo indicado por IODevice. .125 ReadRawBytes .’ [ ’\’ Time ´:=’ < expression (IN) of num>] ’. Ejecución de programas Durante la ejecución del programa. el bus de campo siempre envía una respuesta. Los datos comienzan en el número de índice 1 de RawData.’ Información relacionada Para obtener más información sobre Consulte rawbytes datos rawbytes . Si se agota el tiempo límite antes de que se complete la operación de lectura. Si no hay ningún gestor de errores. utilice la constante predefinida WAIT_MAX.

.Copia el contenido de un dato rawbytes de tipo rawbytes en la página 71 Empaquetamiento de un encabezado de DeviceNet en datos rawbytes PackDNHeader . Reservados todos los derechos.125 ReadRawBytes .Empaqueta datos en un dato de tipo rawbytes en la página 307 Escritura de un dato rawbytes WriteRawBytes .Desempaqueta datos de rawbytes un dato de tipo rawbytes en la página 704 376 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Escribe un dato de tipo rawbytes en la página 772 Desempaquetamiento de datos de un dato UnpackRawBytes .1 Instrucciones 1.Empaqueta un encabezado de DeviceNet en datos rawbytes en la página 304 Empaquetamiento de datos en datos rawbytes PackRawBytes .Lee datos de tipo rawbytes Continuación Para obtener más información sobre Consulte Copiado del contenido de un dato de tipo CopyRawBytes .

Argumentos RemoveDir Path Path Tipo de dato: string El nombre del directorio que se desea eliminar.’ Información relacionada Para obtener más información sobre Consulte Directorio dir .Copia un archivo en la página 69 Continúa en la página siguiente 3HAC16581-5 Revisión: L 377 © Copyright 2004-2011 ABB. En este ejemplo. El usuario debe tener permisos de escritura y ejecución en el directorio y éste debe estar vacío. Ejemplo 1 RemoveDir "HOME:/mydir".Cierra un directorio en la página 60 Creación de un directorio MakeDir . Reservados todos los derechos.126 RemoveDir .Estructura de directorio de archivos en la página 1189 Apertura de un directorio OpenDir . . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RemoveDir. se elimina el directorio mydir que está situado debajo de HOME:.Lee la siguiente entrada de un directorio en la página 1016 Cierre de un directorio CloseDir . A continuación.Abre un directorio en la página 302 Lectura de un directorio ReadDir . Gestión de errores Si el directorio no existe o no está vacío o si el usuario no tiene permisos de escritura y ejecución en el directorio.Crea un nuevo directorio en la página 227 Cambio del nombre de un archivo RenameFile .126 RemoveDir .Elimina un archivo en la página 379 Copia de un archivo CopyFile . Sintaxis RemoveDir [ Path’:=’ ] < expression (IN) of string>’.1 Instrucciones 1. especificado con una ruta completa o relativa. el valor de la variable ERRNO cambia a ERR_FILEACC. este error puede ser gestionado en el gestor de errores.Elimina un directorio Utilización RemoveDir se utiliza para eliminar un directorio.Elimina un directorio 1.Cambia el nombre de un archivo en la página 380 Eliminación de un archivo RemoveFile .

Reservados todos los derechos.Elimina un directorio Continuación Para obtener más información sobre Consulte Comprobación del tipo del archivo IsFile .Comprobar el tipo de un archivo en la página 944 Comprobación del tamaño del archivo FileSize .126 RemoveDir .Obtiene el tamaño de un archivo en la página 903 Comprobación del tamaño del sistema de archivos FSSize . .Obtiene el tamaño de un sistema de archivos en la página 910 378 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.1 Instrucciones 1.

Copia un archivo en la página 69 Comprobación del tipo del archivo IsFile . especificado con una ruta completa o relativa. la variable de sistema ERRNO cambia a ERR_FILEACC. En este ejemplo.Obtiene el tamaño de un archivo en la página 903 Comprobación del tamaño del sistema de archivos FSSize .127 RemoveFile .Elimina un archivo Utilización RemoveFile se utiliza para eliminar un archivo. Ejemplo 1 RemoveFile "HOME:/mydir/myfile. Reservados todos los derechos.log en el directorio mydir del disco HOME:. se elimina el archivo myfile.Elimina un archivo 1.Elimina un directorio en la página 377 Cambio del nombre de un archivo RenameFile .Crea un nuevo directorio en la página 227 Eliminación de un directorio RemoveDir . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RemoveFile.127 RemoveFile . El usuario debe tener permisos de escritura y ejecución en el directorio en el que se encuentra el archivo.1 Instrucciones 1.Comprobar el tipo de un archivo en la página 944 Comprobación del tamaño del archivo FileSize . A continuación.Cambia el nombre de un archivo en la página 380 Copia de un archivo CopyFile . Gestión de errores Si el archivo no existe.Obtiene el tamaño de un sistema de archivos en la página 910 3HAC16581-5 Revisión: L 379 © Copyright 2004-2011 ABB. este error puede ser gestionado en el gestor de errores.’ Información relacionada Para obtener más información sobre Consulte Creación de un directorio MakeDir .log". . Argumentos RemoveFile Path Path Tipo de dato: string El nombre del archivo que se desea eliminar. Sintaxis RemoveFile [ Path’:=’ ] < expression (IN) of string>’. además de permiso de escritura para el archivo en sí.

Ejemplo 1 RenameFile "HOME:/myfile". "HOME:/yourfile. el archivo también se traslada a una nueva ubicación.Cambia el nombre de un archivo Utilización RenameFile se utiliza para dar un nuevo nombre a un archivo existente. Gestión de errores Si el archivo especificado en NewPath ya existe.’ Información relacionada Para obtener más información sobre Consulte Creación de un directorio MakeDir . Sintaxis RenameFile [ OldPath’ :=’ ] < expression (IN) of string > ’. además de trasladarlo al directorio mydir.128 RenameFile . Se da al archivo myfile el nombre yourfile. "HOME:/mydir/yourfile". Reservados todos los derechos. También puede usarse para trasladar un archivo de un lugar a otro dentro de la estructura de directorios. Si la ruta indicada en NewPath es distinta de la ruta del archivo OldPath. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RenameFile. NewPath Tipo de dato:string La ruta completa del archivo cuyo nombre se desea cambiar. Se da al archivo myfile el nombre yourfile. Argumentos RenameFile OldPath NewPath OldPath Tipo de dato:string La ruta completa del archivo cuyo nombre se desea cambiar. A continuación.Crea un nuevo directorio en la página 227 Continúa en la página siguiente 380 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.1 Instrucciones 1. Ejecución de programas El archivo especificado en OldPath recibe el nombre especificado en NewPath.128 RenameFile . RenameFile "HOME:/myfile". . la variable de sistema ERRNO cambia a ERR_FILEEXIST. este error puede ser gestionado en el gestor de errores.’ [ NewPath’ :=’ ] < expression (IN) of string >’.Cambia el nombre de un archivo 1.

128 RenameFile .Obtiene el tamaño de un sistema de archivos en la página 910 3HAC16581-5 Revisión: L 381 © Copyright 2004-2011 ABB.Copia un archivo en la página 69 Comprobación del tipo del archivo IsFile .1 Instrucciones 1.Elimina un archivo en la página 379 Copia de un archivo CopyFile . Reservados todos los derechos.Cambia el nombre de un archivo Continuación Para obtener más información sobre Consulte Eliminación de un directorio RemoveDir .Comprobar el tipo de un archivo en la página 944 Comprobación del tamaño del archivo FileSize . .Obtiene el tamaño de un archivo en la página 903 Comprobación del tamaño del sistema de archivos FSSize .Elimina un directorio en la página 377 Eliminación de un archivo RemoveFile .

Se cambia la señal weld a 0. Si la señal está invertida en los parámetros del sistema. Sintaxis Reset [ Signal ’:=’ ] < variable (VAR) of signaldo > ’.Parámetros del sistema 382 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Pone a cero una señal digital de salida Utilización Reset se utiliza para poner a cero el valor de una señal digital de salida. Ejemplo 2 Reset weld.129 Reset . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción Reset.Activa una señal digital de salida en la página 456 Instrucciones de entrada/salida Technical reference manual . La variable de sistema ERRNO cambia a: ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S. El error puede ser gestionado en un gestor de errores. Ejemplo 1 Reset do15.’ Información relacionada Para obtener más información sobre Consulte Cambio de una señal digital de salida a cero Set . Reservados todos los derechos. Argumentos Reset Signal Signal Tipo de dato: signaldo El nombre de la señal que se desea poner a cero. esta instrucción hace que el canal físico cambie a 1. .RAPID overview.Señales de entrada y salida Funcionalidad de entrada/salida en gene.RAPID overview. Ejecución de programas El valor real depende de la configuración de la señal. Gestión de errores Pueden generarse los errores recuperables siguientes.1 Instrucciones 1. ral sección Principios de movimiento y E/S .Technical reference manual . sección Resumen sobre RAPID . Se cambia la señal do15 a 0.Pone a cero una señal digital de salida 1.129 Reset .Principios de E/S Configuración de E/S Manual de referencia técnica .

Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción ResetPPMoved. 1. es decir. Sintaxis ResetPPMoved’. El estado del puntero de programa movido se pone a cero cuando se sitúa la llave de Auto a Man o cuando se usa la instrucción ResetPPMoved. .130 ResetPPMoved . ! DO THIS ONLY ONCE ResetPPMoved. PPMovedInManMode devuelve TRUE si el usuario ha movido el puntero de programa mientras el controlador se encuentra en el modo manual. Reservados todos los derechos.130 ResetPPMoved . ENDIF Ejecución de programas Restablece el estado del puntero de programa movido en el modo manual para la tarea de programa actual. DoJob.Comprobar si el punmovido en el modo manual tero de programa se ha movido en el modo manual.1 Instrucciones 1. ELSE DoJob. Ejemplo 1 IF PPMovedInManMode() THEN WarnUserOfPPMovement. si la llave de operador está en las posiciones de manual a velocidad reducida o manual a máxima velocidad.Restablecer el estado del puntero de programa movido en el modo manual. en la página 1007 3HAC16581-5 Revisión: L 383 © Copyright 2004-2011 ABB.Restablecer el estado del puntero de programa movido en el modo manual.’ Información relacionada Para obtener más información sobre Consulte Comprobar si el puntero de programa se ha PPMovedInManMode . Utilización ResetPPMoved restablece el estado del puntero de programa movido en el modo manual.

Ejemplo 1 VAR num myretries := 0. ERROR IF myretries > 2 THEN ResetRetryCount.RAPID overview.RETRY ..’ Información relacionada Para obtener más información sobre Consulte Gestores de errores Technical reference manual . El programa reintentará 3 veces la instrucción fallida y a continuación intentará la instrucción siguiente.131 ResetRetryCount .Recuperación en caso de error Reanudación de la ejecución des. Sintaxis ResetRetryCount ’.Reanuda la ejecución después de un error pués de un error en la página 388 Configuración del número máximo Manual de referencia técnica . sección Características básicas . Ejecución de programas Para cada RETRY realizado desde un gestor de errores. especificado en la configuración..Parámetros del sistema.Restablece el número de reintentos 1. . de reintentos sección System Misc Continúa en la página siguiente 384 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos. . La ejecución de la instrucción ResetRetryCount pone a cero el contador y hace posible volver a hacer un número máximo de reintentos. myretries := 0. un contador interno del sistema comprobará que no se sobrepase el número máximo de reintentos.. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción ResetRetryCount.1 Instrucciones 1. TRYNEXT. El contador de reintentos interno del sistema se restablece antes de reintentar la instrucción siguiente (incluso si tal reintento es realizado por el sistema en TRYNEXT). RETRY. ENDIF myretries:= myretries + 1.Restablece el número de reintentos Utilización ResetRetryCount se usa para restablecer el número de reintentos que se han realizado desde un gestor de errores. .. El número máximo de reintentos que pueden hacerse se define en la configuración.131 ResetRetryCount .

.Restablece el número de reintentos Continuación Para obtener más información sobre Consulte Número de reintentos restantes RemainingRetries .Reintentos restantes aún pendientes en la página 1034 3HAC16581-5 Revisión: L 385 © Copyright 2004-2011 ABB.131 ResetRetryCount .1 Instrucciones 1. Reservados todos los derechos.

Restablece la trayectoria después de una interrupción Utilización RestoPath se utiliza para restablecer una trayectoria almacenada en un momento anterior con la instrucción StorePath.132 RestoPath ... a continuación. MoveL p1. ERROR IF ERRNO=AW_WELD_ERR THEN gun_cleaning. en las tareas de movimiento. p1 := CRobT(). Sin embargo. . StorePath. Ejemplo 1 ArcL p100. fine. PROC gun_cleaning() VAR robtarget p1. recuerde que no se produce ningún movimiento hasta que se ejecuta la instrucción StartMove o se reanuda la ejecución mediante RETRY en un gestor de errores.Restablece la trayectoria después de una interrupción 1. se almacena la trayectoria de movimiento que se estaba ejecutando y el robot se traslada a la posición pclean. ENDIF . gun1.132 RestoPath .1 Instrucciones 1. seam1. v100. Restablece la trayectoria almacenada anteriormente mediante StorePath. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RestoPath. . Una vez hecho Continúa en la página siguiente 386 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. v100. en la que se soluciona el error. StartMoveRetry. v100.. si se cuenta con un sistema MultiMove.. weld5 \Weave:=weave1. gun1. Ejemplo 1 RestoPath. Ejecución de programas La trayectoria de movimiento actual de los ejes del robot y de los ejes externos se elimina y la trayectoria almacenada anteriormente con la instrucción StorePath se restablece. gun1. fine. ENDPROC En caso de un error de soldadura. z10. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. A continuación. lo cual llama a su vez a gun_cleaning. RestoPath. Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción RestoPath.. MoveL pclean. la ejecución del programa continúa en el gestor de errores de la rutina. . Consulte también Más ejemplos. Reservados todos los derechos..

p1. A continuación. no un punto de paso.Almacena la trayectoria cuando se produce una interrupción en la página 555 PathRecStart . Limitaciones Con la instrucción StorePath sólo se almacenan los datos de la trayectoria de movimiento.´ Información relacionada Para obtener más información Consulte sobre Almacenamiento de trayectorias StorePath . Reservados todos los derechos. tras lo cual puede continuar la ejecución normal del programa. . Stop.Restablece la trayectoria después de una interrupción Continuación esto.Activa el movimiento independientesemicoordinado en la página 580 3HAC16581-5 Revisión: L 387 © Copyright 2004-2011 ABB. Si esta instrucción va precedida de una instrucción de movimiento. Sintaxis RestoPath´. Restart o Step. no será posible reanudar la ejecución tras una caída de suministro eléctrico. y almacena de nuevo el movimiento original.132 RestoPath .Inicia la grabadora de trayectorias en la página 327 SyncMoveSuspend . la soldadura se reanuda automáticamente. lo que significa que el robot invierte su movimiento a lo largo de la trayectoria antes de que comience la soldadura. el robot vuelve a la posición en la que se produjo el error. De lo contrario. RestoPath no puede ejecutarse en rutinas de RAPID que estén conectadas a los siguientes eventos especiales del sistema: PowerOn. es necesario almacenar la posición de paro directamente a continuación de que StorePath y de RestoPath hacen el movimiento hacia la posición de paro almacenada en la trayectoria. Si el usuario desea solicitar movimientos en un nuevo nivel de trayectoria. ésta última debe programarse con un punto de paro (zonedata fine).1 Instrucciones 1. QStop.Almacena la trayectoria cuando se produce una interrupción en la página 555 Más ejemplos StorePath .

se usa la instrucción RETRY para saltar desde el gestor de errores y se hace otro intento de completar la división. sección Características básicas . El número máximo de reintentos puede configurarse en los Parámetros del sistema (tipo System Misc).Reanuda la ejecución después de un error 1. que inicializa reg4.. Ejemplo 1 reg2 := reg3/reg4. empezando por (y ejecutando de nuevo) la instrucción que provocó el error.1 Instrucciones 1. no es posible reanudar la ejecución del programa con una instrucción RETRY.RAPID overview. Gestión de errores Si se supera el número máximo de reintentos (4 reintentos).. Limitaciones La instrucción sólo puede existir en el gestor de errores de la rutina. ENDIF Se intenta dividir reg3 por reg4. se salta al gestor de errores.133 RETRY . . ERROR IF ERRNO = ERR_DIVZERO THEN reg4 :=1.’ Información relacionada Para obtener más información sobre Consulte Gestores de errores Technical reference manual . Si reg4 es igual a 0 (lo cual da lugar a una división por cero). Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RETRY. Ejecución de programas La ejecución del programa continúa en (y ejecuta de nuevo) la instrucción que provocó el error. Sintaxis RETRY ’. la ejecución del programa se detiene y se genera un mensaje de error. A continuación debe utilizarse la instrucción TRYNEXT. Si el error se creó usando una instrucción RAISE.133 RETRY . . A continuación.Recuperación en caso de error Continúa en la página siguiente 388 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. RETRY. Reservados todos los derechos.Reanuda la ejecución después de un error Utilización La instrucción RETRY se utiliza para reanudar la ejecución del programa después de un error.

sección System Misc Continuación en la instrucción siguiente TRYNEXT .Reanuda la ejecución después de un error Continuación Para obtener más información sobre Consulte Configuración del número máximo de reintentos Manual de referencia técnica . Reservados todos los derechos.133 RETRY .1 Instrucciones 1.Salta sobre una instrucción que ha provocado un error en la página 681 3HAC16581-5 Revisión: L 389 © Copyright 2004-2011 ABB. .Parámetros del sistema.

es posible que el número del error no esté especificado.134 RETURN .1 Instrucciones 1. Set do1. Ejemplo 1 errormessage. ENDIF ENDFUNC La función devuelve el valor absoluto de un número. . Reservados todos los derechos.. El valor de retorno debe especificarse en una instrucción RETURN incluida en una función. ELSE RETURN value. Argumentos RETURN [ Return value ] Return value Tipo de dato: Según la declaración de la función. ENDPROC Se llama al procedimiento errormessage . . PROC errormessage() IF di1=1 THEN RETURN. El valor de retorno de una función. Cuando el procedimiento llega a la instrucción RETURN. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RETURN.Finaliza la ejecución de una rutina Utilización RETURN se utiliza para finalizar la ejecución de una rutina. ENDIF TPWrite "Error". Si la instrucción se incluye en un procedimiento o una rutina TRAP.Finaliza la ejecución de una rutina 1. Set do 1.134 RETURN .. Continúa en la página siguiente 390 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. la ejecución del programa vuelve a la instrucción que sigue a la llamada al procedimiento. Ejemplo 2 FUNC num abs_value(num value) IF value<0 THEN RETURN -value. el valor también se devuelve. Si la rutina es una función.

el programa se detiene. sección Características básicas .Recuperación en caso de error 3HAC16581-5 Revisión: L 391 © Copyright 2004-2011 ABB.RAPID overview.Interrupciones Gestores de errores Technical reference manual . la ejecución del programa continúa con la primera instrucción de la rutina principal. Sintaxis (EBNF) RETURN [ <expression> ]’. • Procedimiento: La ejecución del programa continúa con la instrucción que sigue a la llamada al procedimiento.RAPID overview. De lo contrario. .134 RETURN .’ Información relacionada Para obtener más información sobre Consulte Funciones y procedimientos Technical reference manual .Finaliza la ejecución de una rutina Continuación Ejecución de programas El resultado de la instrucción RETURN puede variar. sección Características básicas . en función del tipo de rutina en el que se utiliza: • Rutina principal: Si el programa tiene el modo de ejecución de un solo ciclo. • Gestor de errores en una función: Se devuelve el valor de la función.1 Instrucciones 1. • Rutina TRAP: La ejecución del programa continúa en el punto en el que se produjo la interrupción.Rutinas Rutinas TRAP Technical reference manual . Reservados todos los derechos. • Gestor de errores en un procedimiento: La ejecución del programa continúa con la rutina que llamó a la rutina que contiene el gestor de errores (en la instrucción que sigue a la llamada al procedimiento). • Función: Devuelve el valor de la función. sección Características básicas .RAPID overview.

En el archivo al que se hace referencia con iodev1. Ejemplo 1 Rewind iodev1. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción Rewind. Ejecución de programas El archivo especificado se rebobina hasta el principio. Argumentos Rewind IODevice IODevice Tipo de dato: iodev El nombre (la referencia) del archivo que se desea rebobinar. la posición del archivo se sitúa en el principio del archivo.Rebobina la posición del archivo 1. Reservados todos los derechos.135 Rewind . todos los archivos o canales serie abiertos del sistema se cierran y el descriptor de E/S de la variable del tipo iodev se restablece. Continúa en la página siguiente 392 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. En caso de un reinicio tras una caída de alimentación. Consulte también Más ejemplos en la página 393. .1 Instrucciones 1.135 Rewind .Rebobina la posición del archivo Utilización Rewind sitúa la posición del archivo al principio del archivo.

Ejemplo 1 ! IO device and numeric variable for use together with a binary ! file VAR iodev dev.1 Instrucciones 1. Close dev. Sintaxis Rewind [IODevice ’:=’] <variable (VAR) of iodev>’. Gestión de errores Si se produce un error durante el rebobinado. ENDWHILE ! Close the binary file Close dev. VAR num bindata. ! Open the binary file with \Bin switch for binary read and write ! acess Open "HOME:"\File := "bin_file". ! Open the binary file with \Write switch to erase old contents Open "HOME:"\File := "bin_file".dev \Write. WriteStrBin dev.Rebobina la posición del archivo Continuación Más ejemplos A continuación aparecen más ejemplos de la instrucción Rewind. de forma que sea posible leer el contenido del archivo con ReadBin Limitaciones En el caso de Virtual Controller existe una limitación si el archivo utilizado ha sido abierto con un modificador \Bin o \Bin \Append.dev \Bin. ! Rewind the file pointer to the beginning of the binary file ! Read contents of the file and write the binary result on TP ! (gives 72 101 108 108 111 32 119 111 114 108 100 ) Rewind dev."Hello world". la variable de sistema ERRNO cambia a ERR_FILEACC. Reservados todos los derechos. A continuación.’ Continúa en la página siguiente 3HAC16581-5 Revisión: L 393 © Copyright 2004-2011 ABB. bindata := ReadBin(dev). WHILE bindata <> EOF_BIN DO TPWrite " " \Num:=bindata. La escritura se realizará al final del archivo. La instrucción Rewind se utiliza para rebobinar un archivo binario hasta el principio.135 Rewind . bindata := ReadBin(dev). el uso de Rewind antes de cualquier tipo de instrucción Write no tendrá ningún efecto. este error puede ser gestionado en el gestor de errores. .

. vos sección Resumen sobre RAPID .135 Rewind . Reservados todos los derechos.RAPID overview.Comunicación 394 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Rebobina la posición del archivo Continuación Información relacionada Para obtener más información sobre Consulte Apertura y otras operaciones con archi.Technical reference manual .1 Instrucciones 1.

Vacía la cola de mensajes de RAPID 1. La instrucción RMQEmptyQueue elimina todos los mensajes de la cola RMQ de la tarea en ejecución. Ejecución de programas Se vacía la cola de mensajes de RAPID de la tarea en la que se ejecuta. Extraer los datos de un rmqmessage RMQGetMsgData . sección RAPID Message Queue.Buscar una identidad de ranurea de RAPID Message Queue o de un ra para el nombre de ranura en la página 397. Enviar datos a la cola de una tarea de RAPID RMQSendWait .Ordenar interrupciones de po de dato en concreto RMQ para un tipo de dato en la página 175. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción RMQEmptyQueue. Limitaciones RMQEmptyQueue sólo vacía la cola de mensajes de RAPID de la tarea en la que se ejecuta la instrucción. Todas las demás colas de mensajes de RAPID permanecen sin cambios.' Información relacionada Para obtener más información sobre Consulte Descripción de la funcionalidad de RAPID Message Queue Application manual . Reservados todos los derechos.Vacía la cola de mensajes de RAPID Utilización RMQEmptyQueue vacía la cola de mensajes de RAPID (RMQ) de la tarea en la que se ejecuta la instrucción. .Enviar un mensaje de o de un cliente de Robot Application Builder datos de RMQ en la página 412.Obtener información de encabezado de un mensaje de RMQ en message la página 405.Mensaje de RAPID Message Queue en la página 1262. Continúa en la página siguiente 3HAC16581-5 Revisión: L 395 © Copyright 2004-2011 ABB.RMQFindSlot . Encontrar el número de identidad de una ta.136 RMQEmptyQueue . rmqmessage tipo de dato rmqmessage .136 RMQEmptyQueue . Esta instrucción puede usarse en todos los niveles de ejecución. Sintaxis RMQEmptyQueue '.Obtener la parte de datos de un mensaje de RMQ en la página 402.IRMQMessage . Ordenar y habilitar interrupciones para un ti. Ejemplo RMQEmptyQueue.Robot communication and I/O control. cliente de Robot Application Builder Extraer los datos de encabezado de un rmq. Enviar datos a la cola de una tarea de RAPID RMQSendMessage .1 Instrucciones 1.Enviar un mensaje de datos o un cliente de Robot Application Builder y de RMQ y esperar una respuesta en la págiesperar una respuesta del cliente na 416.RMQGetMsgHeader .

Obtener el primer mensaje de una cola de RAPID Message Queue RMQGetMessage .Vacía la cola de mensajes de RAPID Continuación Para obtener más información sobre Consulte Obtener el nombre de ranura de una identi.Obtener un mensaje de RMQ en la página 399.Devuelve un mensaje de una cola RMQ en la página 409.RMQGetSlotName .Obtener el nombre de dad de ranura especificada un cliente de RMQ en la página 1035. . Recibir un mensaje de una cola RMQ RMQReadWait .1 Instrucciones 1. 396 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos.136 RMQEmptyQueue .

El nombre debe ser correcto en cuanto al uso de minúsculas y mayúsculas.‘ Continúa en la página siguiente 3HAC16581-5 Revisión: L 397 © Copyright 2004-2011 ABB. Si la tarea de RAPID tiene el nombre T_ROB1 y se utiliza el nombre RMQ_t_rob1 para la cola RMQ.137 RMQFindSlot . La variable de sistema ERRNO cambia a: ERR_RMQ_NAME El nombre de ranura indicado no es válido o no se encuentra. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RMQFindSlot nombre. Sintaxis RMQFindSlot [ Slot ‘:=’ ] < variable (VAR) of rmqslot > ’. . "RMQ_T_ROB2". Ejemplo 1 VAR rmqslot myrmqslot. o la identidad de ranura de un cliente de Robot Application Builder. Los errores pueden ser gestionados en un gestor de ERROR. dará lugar a un error (consulte el capítulo sobre gestión de errores que aparece a continuación).137 RMQFindSlot . RMQFindSlot myrmqslot. Gestión de errores Pueden generarse los errores recuperables siguientes. Name Tipo de dato: string El nombre del cliente cuyo número de identidad se desea encontrar. Reservados todos los derechos.Buscar una identidad de ranura para el nombre de ranura 1. Argumentos RMQFindSlot Slot Name Slot Tipo de dato: rmqslot La variable en la que se devuelve el identificador numérico. Ejecución de programas La instrucción RMQFindSlot se utiliza para encontrar la identidad de ranura de un RMQ con nombre o un cliente de Robot Application Builder.1 Instrucciones 1.’ [ Name ‘:=’ ] < expression (IN) of string >‘. Obtener el número de identidad del RMQ"RMQ_T_ROB2" configurado para la tarea de RAPID "T_ROB2".Buscar una identidad de ranura para el nombre de ranura Utilización RMQFindSlot (RAPID Message Queue Find Slot) se utiliza para encontrar la identidad de ranura de un RMQ configurado para una tarea de RAPID.

Obtener un mensaje de RMQ en la página 399 Enviar datos a la cola de una tarea de RAPID RMQSendWait . . sección RAPID Message Queue.137 RMQFindSlot . Enviar datos a la cola de una tarea de RAPID RMQSendMessage .RMQGetSlotName .Ordenar interrupciones de po de dato en concreto RMQ para un tipo de dato en la página 175 Extraer los datos de un rmqmessage RMQGetMsgData .Buscar una identidad de ranura para el nombre de ranura Continuación Información relacionada Para obtener más información sobre Consulte Descripción de la funcionalidad de RAPID Message Queue Application manual .Robot communication and I/O control.Obtener el nombre de dad de ranura especificada un cliente de RMQ en la página 1035 RMQ Slot rmqslot .Obtener la parte de datos de un mensaje de RMQ en la página 402 Obtener el nombre de ranura de una identi.IRMQMessage .Enviar un mensaje de o de un cliente de Robot Application Builder datos de RMQ en la página 412 Obtener el primer mensaje de una cola de RAPID Message Queue.Número de identidad de un cliente de RMQ en la página 1264 398 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.RMQGetMsgHeader .1 Instrucciones 1. Reservados todos los derechos. RMQGetMessage .Enviar un mensaje de datos o un cliente de Robot Application Builder y de RMQ y esperar una respuesta en la págiesperar una respuesta del cliente na 416 Extraer los datos de encabezado de un rmq.Obtener información de encabezado de un mensaje de RMQ en message la página 405 Ordenar y habilitar interrupciones para un ti.

Reservados todos los derechos. .1 Instrucciones 1.138 RMQGetMessage . Argumentos RMQGetMessage Message Message Tipo de dato: rmqmessage Variable para el almacenamiento del mensaje de RMQ... Ejemplo 1 TRAP msghandler VAR rmqmessage myrmqmsg. msghandler el rmqmessage es capturado del RMQ y copiado a la variable myrmqmsg. Consulte también Más ejemplos en la página 400. Ejecución de programas La instrucción RMQGetMessage se usa para obtener el primer mensaje de la cola de la tarea que ejecuta la instrucción.Obtener un mensaje de RMQ Utilización RMQGetMessage (RAPID Message Queue Get Message) se usa para capturar el primer mensaje de RMQ de la cola que corresponde a la tarea del programa actual.000 bytes. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RMQGetMessage. RMQGetMessage myrmqmsg.138 RMQGetMessage . . éste se copia a la variable Message y a continuación se elimina de la cola para dejar espacio para nuevos mensajes. El tamaño máximo de los datos que pueden recibirse en un rmqmessage es de aproximadamente 3.Obtener un mensaje de RMQ 1. Continúa en la página siguiente 3HAC16581-5 Revisión: L 399 © Copyright 2004-2011 ABB.Si hay un mensaje. ENDTRAP En la rutina TRAP . Esta instrucción sólo se admite en el nivel TRAP.

ENDIF ENDTRAP Cuando se recibe un nuevo mensaje. ! Order cyclic interrupt to occur for data type mydatatype IRMQMessage mydata. Continúa en la página siguiente 400 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Si el mensaje es del tipo de dato esperado y tiene las dimensiones correctas.ndim = 0 THEN ! Copy the data from the message RMQGetMsgData message. ! Get the RMQ message RMQGetMessage message. WHILE TRUE DO ! Performing cycle . ! Copy RMQ header information RMQGetMsgHeader message \Header:=header. los datos se copian a la variable mydata (instrucción RMQGetMsgData). VAR mydatatype mydata.datatype = "mydatatype" AND header. int y..Obtener un mensaje de RMQ Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción RMQGetMessage. msgreceive. Reservados todos los derechos. A continuación se copian los datos de encabezado de RMQ (instrucción RMQGetMsgHeader). ENDWHILE ENDPROC TRAP msghandler VAR rmqmessage message.. VAR rmqheader header. la rutina TRAP msghandler se ejecuta y el nuevo mensaje se copia a la variable message (instrucción RMQGetMessage).1 Instrucciones 1.138 RMQGetMessage . Ejemplo 1 RECORD mydatatype int x. PROC main() ! Setup interrupt CONNECT msgreceive WITH msghandler. mydata. . IF header. ELSE TPWrite "Received a type not handled or with wrong dimension". ENDRECORD VAR intnum msgreceive.

Si se ejecuta RMQGetMessage dos veces en una rutina TRAP.000 bytes.Ordenar interrupciones de po de dato en concreto RMQ para un tipo de dato en la página 175 Obtener el nombre de ranura de una identi. Se recomienda reutilizar una variable del tipo de dato rmqmessage todo lo posible.Mensaje de RAPID Message Queue en la página 1262 3HAC16581-5 Revisión: L 401 © Copyright 2004-2011 ABB. Limitaciones RMQGetMessage no se admite en el nivel de ejecución de usuarios (es decir. El tamaño máximo de los datos que pueden recibirse en un rmqmessage es de aproximadamente 3.Obtener información de encabezado de un mensaje de RMQ en message la página 405 Extraer los datos de un rmqmessage RMQGetMsgData .Buscar una identidad de ranurea de RAPID Message Queue o de un ra para el nombre de ranura en la página 397 cliente de Robot Application Builder Enviar datos a la cola de una tarea de RAPID RMQSendMessage . Los errores pueden ser gestionados en un gestor de ERROR.‘ Información relacionada Para obtener más información sobre Consulte Descripción de la funcionalidad de RAPID Message Queue Application manual .RMQGetSlotName . El error también puede generarse si se produce una caída de alimentación entre la orden de ejecutar la rutina TRAP y la ejecución de la instrucción RMQGetMessage.RMQFindSlot .1 Instrucciones 1.RMQGetMsgHeader . con el fin de ahorrar memoria de RAPID. sección RAPID Message Queue. Los mensajes del RMQ se pierden en caso de caída de alimentación. puede ocurrir esto. . Encontrar el número de identidad de una ta. ERR_RMQ_INVMSG Este error se genera si el mensaje no es válido.Enviar un mensaje de o de un cliente de Robot Application Builder datos de RMQ en la página 412 Enviar datos a la cola de una tarea de RAPID RMQSendWait . Sintaxis RMQGetMessage [ Message ‘:=’ ] < variable (VAR) of rmqmessage >‘.Obtener el nombre de dad de ranura especificada un cliente de RMQ en la página 1035 RMQ Message rmqmessage . Esto puede ocurrir por ejemplo si una aplicación de PC envía un mensaje dañado.Obtener la parte de datos de un mensaje de RMQ en la página 402 Ordenar y habilitar interrupciones para un ti.138 RMQGetMessage . Reservados todos los derechos. La variable de sistema ERRNO cambia a: ERR_RMQ_NOMSG Ningún mensaje de momento en la cola.Obtener un mensaje de RMQ Continuación Gestión de errores Pueden generarse los errores recuperables siguientes. en las rutinas de servicio) ni en el nivel de ejecución normal.IRMQMessage .Robot communication and I/O control.Enviar un mensaje de datos o un cliente de Robot Application Builder y de RMQ y esperar una respuesta en la págiesperar una respuesta del cliente na 416 Extraer los datos de encabezado de un rmq.

1 Instrucciones 1. Data Tipo de dato: anytype Variable del tipo de dato esperado. compilar los datos para ver si es posible almacenarlos en la variable especificada en la instrucción y a continuación copiarlos a la variable.. VAR num data. convertirlos del formato de carácter ASCII a datos binarios.Obtener la parte de datos de un mensaje de RMQ en la página 402. Ejemplo 1 VAR rmqmessage myrmqmsg. Argumentos RMQGetMsgData Message Data Message Tipo de dato: rmqmessage Variable que contiene el mensaje de RMQ recibido. Consulte también RMQGetMsgData .. ! Handle data Los datos. utilizado para el almacenamiento de los datos recibidos.Obtener la parte de datos de un mensaje de RMQ Utilización RMQGetMsgData (RAPID Message Queue Get Message Data) se utiliza para obtener los datos efectivos contenidos en el mensaje de RMQ.139 RMQGetMsgData .Obtener la parte de datos de un mensaje de RMQ 1. Reservados todos los derechos. del tipo de dato num. . Ejecución de programas La instrucción RMQGetMsgData se usa para obtener los datos efectivos contenidos en el mensaje RMQ. Continúa en la página siguiente 402 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.139 RMQGetMsgData . se capturan de la variable myrmqmsg y se almacenen en la variable data. data. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RMQGetMsgData. . RMQGetMsgData myrmqmsg.

ENDIF ENDTRAP Cuando se recibe un nuevo mensaje. ENDWHILE ENDPROC TRAP msghandler VAR rmqmessage message.1 Instrucciones 1. IF header.Obtener la parte de datos de un mensaje de RMQ Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción RMQGetMsgData. .. ! Get the RMQ message RMQGetMessage message. los datos se copian a la variable mydata (instrucción RMQGetMsgData). Ejemplo 1 RECORD mydatatype int x. ! Copy RMQ header information RMQGetMsgHeader message \Header:=header.datatype = "mydatatype" AND header. Continúa en la página siguiente 3HAC16581-5 Revisión: L 403 © Copyright 2004-2011 ABB.ndim = 0 THEN ! Copy the data from the message RMQGetMsgData message. ! Order cyclic interrupt to occur for data type mydatatype IRMQMessage mydata. int y. VAR mydatatype mydata. A continuación se copian los datos de encabezado de RMQ (instrucción RMQGetMsgHeader). ENDRECORD VAR intnum msgreceive. Reservados todos los derechos. ELSE TPWrite "Received a type not handled or with wrong dimension". Si el mensaje es del tipo de dato esperado y tiene las dimensiones correctas. msgreceive. WHILE TRUE DO ! Performing cycle . PROC main() ! Setup interrupt CONNECT msgreceive WITH msghandler.139 RMQGetMsgData .. mydata. VAR rmqheader header. la rutina TRAP msghandler se ejecuta y el nuevo mensaje se copia a la variable message (instrucción RMQGetMessage).

139 RMQGetMsgData .RMQGetMsgHeader .Buscar una identidad de ranurea de RAPID Message Queue o de un ra para el nombre de ranura en la página 397 cliente de Robot Application Builder Enviar datos a la cola de una tarea de RAPID RMQSendMessage .Mensaje de RAPID Message Queue en la página 1262 404 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. .Ordenar interrupciones de po de dato en concreto RMQ para un tipo de dato en la página 175 Obtener el nombre de ranura de una identi. RMQGetMessage .Enviar un mensaje de datos o un cliente de Robot Application Builder y de RMQ y esperar una respuesta en la págiesperar una respuesta del cliente na 416 Extraer los datos de encabezado de un rmq.RMQGetSlotName . Encontrar el número de identidad de una ta.Obtener el nombre de dad de ranura especificada un cliente de RMQ en la página 1035 RMQ Message rmqmessage .Obtener información de encabezado de un mensaje de RMQ en message la página 405 Ordenar y habilitar interrupciones para un ti.Enviar un mensaje de o de un cliente de Robot Application Builder datos de RMQ en la página 412 Obtener el primer mensaje de una cola de RAPID Message Queue.1 Instrucciones 1. Sintaxis RMQGetMsgData [ Message ‘:=’ ] < variable (VAR) of rmqmessage > ’.Obtener la parte de datos de un mensaje de RMQ Continuación Gestión de errores Pueden generarse los errores recuperables siguientes. Esto puede ocurrir por ejemplo si una aplicación de PC envía un mensaje dañado.RMQFindSlot .’ [ Data ‘:=’ ] < reference (VAR) of anytype >‘.IRMQMessage . sección RAPID Message Queue. La variable de sistema ERRNO cambia a: ERR_RMQ_VALUE El mensaje recibido y el tipo de dato utilizado en el argumento Data no son del mismo tipo de dato. pero las dimensiones son diferentes en el dato del mensaje y en la variable utilizada en el argumento Data.Robot communication and I/O control. Reservados todos los derechos. Los errores pueden ser gestionados en un gestor de ERROR.Obtener un mensaje de RMQ en la página 399 Enviar datos a la cola de una tarea de RAPID RMQSendWait . ERR_RMQ_DIM Los tipos de datos son iguales.‘ Información relacionada Para obtener más información sobre Consulte Descripción de la funcionalidad de RAPID Message Queue Application manual . ERR_RMQ_MSGSIZE El tamaño de los datos recibidos es mayor que el tamaño máximo configurado para el RMQ en la tarea receptora. ERR_RMQ_INVMSG Este error se genera si el mensaje no es válido.

140 RMQGetMsgHeader . \Header:=myrmqheader. RRMQGetMsgHeader rmqmessage1 \Header:=rmqheader1 \SenderId:=rmqslot1 \UserDef:=userdef. RMQGetMsgHeader myrmqmsg.. rmqslot o num. . Ejemplo 1 VAR rmqmessage myrmqmsg. Ejemplo 2 VAR rmqmessage rmqmessage1. En este ejemplo.. VAR num userdef := 0. [\Header] Tipo de dato: rmqheader Variable para el almacenamiento de la información de encabezado de RMQ copiada desde la variable especificada con el parámetro Message. la variable myrmqheader recibe los datos copiados de la parte rmqheader de la variable myrmqmsg. . .. VAR rmqheader rmqheader1.140 RMQGetMsgHeader . las variables rmqheader1. Continúa en la página siguiente 3HAC16581-5 Revisión: L 405 © Copyright 2004-2011 ABB.. Consulte también Más ejemplos en la página 407. En este ejemplo. Reservados todos los derechos. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RMQGetMsgHeader.Obtener información de encabezado de un mensaje de RMQ 1.Obtener información de encabezado de un mensaje de RMQ Utilización RMQGetMsgHeader (RAPID Message Queue Get Message Header) obtiene la información de encabezado contenida en el mensaje de RMQ recibida y lo almacena en variables de los tipos rmqheader. [\SenderId] Tipo de dato: rmqslot Variable para el almacenamiento de la información de identidad de remitente copiada desde la variable especificada con el parámetro Message. VAR rmqheader myrmqheader. Argumentos RMQGetMsgHeader Message [\Header] [\SenderId] [\UserDef] Message Tipo de dato: rmqmessage Variable que contiene el mensaje de RMQ recibido y desde la que se copia la información acerca del mensaje.1 Instrucciones 1. rmqslot1 y userdef reciben los datos copiados de la variable rmqmessage1. VAR rmqslot rmqslot1.

Para obtener cualquier dato válido en esta variable. Continúa en la página siguiente 406 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. rmqslot o num. el remitente necesita especificar que ésta debe incluirse al enviar un mensaje de RMQ . Ejecución de programas La instrucción RMQGetMsgHeader obtiene la información de encabezado contenida en el mensaje de RMQ y la copia a variables de tipo rmqheader. Si no se utiliza.Obtener información de encabezado de un mensaje de RMQ Continuación [\UserDef] User Defined data Tipo de dato: num Variable para el almacenamiento de datos definidos por el usuario copiada desde la variable especificada con el parámetro Message.140 RMQGetMsgHeader . . en función de qué argumentos se utilicen. Reservados todos los derechos.1 Instrucciones 1. el valor será cambiado a -1.

ENDRECORD VAR intnum msgreceive. la rutina TRAP msghandler se ejecuta y el nuevo mensaje se copia a la variable message (instrucción RMQGetMessage).140 RMQGetMsgHeader . ! Order cyclic interrupt to occur for data type mydatatype IRMQMessage mydata.datatype = "mydatatype" AND header. ! Get the RMQ message RMQGetMessage message.. mydata.. Si el mensaje es del tipo de dato esperado y tiene las dimensiones correctas. Ejemplo 1 RECORD mydatatype int x. PROC main() ! Setup interrupt CONNECT msgreceive WITH msghandler. A continuación se copian los datos de encabezado de RMQ (instrucción RMQGetMsgHeader). ENDIF ENDTRAP Cuando se recibe un nuevo mensaje. Continúa en la página siguiente 3HAC16581-5 Revisión: L 407 © Copyright 2004-2011 ABB.Obtener información de encabezado de un mensaje de RMQ Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción RMQGetMsgHeader. WHILE TRUE DO ! Performing cycle . Reservados todos los derechos. . msgreceive. los datos se copian a la variable mydata (instrucción RMQGetMsgData). ELSE TPWrite "Received a type not handled or with wrong dimension". IF header.ndim = 0 THEN ! Copy the data from the message RMQGetMsgData message. ! Copy RMQ header information RMQGetMsgHeader message \Header:=header. VAR mydatatype mydata. VAR rmqheader header.1 Instrucciones 1. ENDWHILE ENDPROC TRAP msghandler VAR rmqmessage message. int y.

’ [ ‘\’ Header‘ :=’ < variable (VAR) of rmqheader > [ ‘\’ SenderId‘ :=’ < variable (VAR) of rmqslot > [ ‘\’ UserDef‘ :=’ < variable (VAR) of num >‘.RMQFindSlot .RMQGetSlotName . Reservados todos los derechos.Ordenar interrupciones de po de dato en concreto RMQ para un tipo de dato en la página 175 Obtener el nombre de ranura de una identi.‘ Información relacionada Para obtener más información sobre Consulte Descripción de la funcionalidad de RAPID Message Queue Application manual .Robot communication and I/O control.Obtener un mensaje de RMQ en la página 399 Enviar datos a la cola de una tarea de RAPID RMQSendWait .Enviar un mensaje de datos o un cliente de Robot Application Builder y de RMQ y esperar una respuesta en la págiesperar una respuesta del cliente na 416 Extraer los datos de un rmqmessage RMQGetMsgData .Número de identidad de un cliente de RMQ en la página 1264 RMQ Header rmqmessage . . Encontrar el número de identidad de una ta. sección RAPID Message Queue.140 RMQGetMsgHeader .Buscar una identidad de ranurea de RAPID Message Queue o de un ra para el nombre de ranura en la página 397 cliente de Robot Application Builder Enviar datos a la cola de una tarea de RAPID RMQSendMessage .Obtener información de encabezado de un mensaje de RMQ Continuación Sintaxis RMQGetMsgHeader [ Message ‘:=’ ] < variable (VAR) of rmqmessage > ’.Encabezado de mensaje de RAPID Message Queue en la página 1260 408 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.1 Instrucciones 1. RMQGetMessage .Mensaje de RAPID Message Queue en la página 1262 RMQ Message rmqheader .Obtener el nombre de dad de ranura especificada un cliente de RMQ en la página 1035 RMQ Slot rmqslot .IRMQMessage .Obtener la parte de datos de un mensaje de RMQ en la página 402 Ordenar y habilitar interrupciones para un ti.Enviar un mensaje de o de un cliente de Robot Application Builder datos de RMQ en la página 412 Obtener el primer mensaje de una cola de RAPID Message Queue.

utilice la constante predefinida WAIT_MAX. se detiene la ejecución del programa. Es posible cambiar el tiempo límite a 0 (cero) segundos. RMQReadWait myrmqmsg \TimeOut:=30. y de uno en uno. Ejemplo 1 VAR rmqmessage myrmqmsg. Continúa en la página siguiente 3HAC16581-5 Revisión: L 409 © Copyright 2004-2011 ABB. Para esperar indefinidamente. Consulte también Más ejemplos en la página 409.Devuelve un mensaje de una cola RMQ Utilización RMQReadWait se utiliza en el modo sincronizado para recibir cualquier tipo de mensaje. [\Timeout] Tipo de dato: num El tiempo máximo [s] que la ejecución del programa debe esperar un mensaje. se llama al gestor de errores si lo hay. El primer mensaje de la cola se recibe en la variable myrmqmsg. El usuario es responsable de evitar que la cola se llene y de estar preparado para gestionar cualquier tipo de mensaje admitido por la cola de mensajes de RAPID. Reservados todos los derechos. RMQReadWait myrmqmsg.141 RMQReadWait . Ejemplo VAR rmqmessage myrmqmsg. Si no se recibe ningún mensaje en un intervalo de 30 segundos. Si no se usa el parámetro \Timeout el tiempo de espera es de 60 s.1 Instrucciones 1. de forma que no se produzca ninguna espera.141 RMQReadWait . Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción RMQReadWait. Si no hay ningún gestor de errores. El primer mensaje de la cola se recibe en la variable myrmqmsg. Si el tiempo se agota antes de que se cumpla la condición. con el código de error ERR_RMQ_TIMEOUT. Ejemplos básicos A continuación aparece un ejemplo básico de la instrucción RMQReadWait. se detiene la ejecución. Ejecución de programas Todos los mensajes entrantes se ponen en la cola y RMQReadWait los gestiona en orden FIFO.Devuelve un mensaje de una cola RMQ 1. Argumentos RMQReadWait Message [\TimeOut] Message Tipo de dato: rmqmessage La variable en la que se coloca el mensaje recibido. .

. ENDIF ENDPROC Se reciben los mensajes de la cola. Reservados todos los derechos.. Los errores pueden ser gestionados en un gestor de ERROR.Tipo Task.Devuelve un mensaje de una cola RMQ Continuación Ejemplo 2 PROC main() VAR rmqmessage myrmqmsg. La ejecución de esta instrucción en el modo basado en interrupciones generará un error de tiempo de ejecución no recuperable.. sección RAPID Message Queue. Descripción de los modos de ejecución de tareas Manual de referencia técnica . La variable de sistema ERRNO cambia a: Código de error Descripción ERR_RMQ_TIMEOUT No se ha recibido ninguna respuesta dentro del tiempo límite.. RMQReadWait no se admite en el nivel de ejecución de rutina TRAP ni en el nivel de ejecución del usuario. sección Tema Controller .' Información relacionada Para obtener más información sobre Consulte Descripción de la funcionalidad de RAPID Message Queue Application manual . Gestión de errores Pueden generarse los errores recuperables siguientes. Sintaxis RMQReadWait [ Message ':=' ] < variable (VAR) of rmqmessage> [ '\' TimeOut':=' < expression (IN) of num > ] '.1 Instrucciones 1. FOR i FROM 1 TO 25 DO RMQReadWait myrmqmsg \TimeOut:=30.Parámetros del sistema. La ejecución de esta instrucción en cualquiera de estos niveles generará un error de tiempo de ejecución no recuperable.. que se almacenan en la variable myrmqmsg. . Limitaciones RMQReadWait sólo se admite en el modo sincronizado. . Si la recepción de un mensaje requiere más de 30 segundos.141 RMQReadWait . ENDFOR ERROR IF ERRNO = ERR_RMQ_TIMEOUT THEN TPWrite "ERR_RMQ_TIMEOUT error reported". Continúa en la página siguiente 410 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Esto puede ocurrir por ejemplo si una aplicación de PC envía un mensaje dañado.Robot communication and I/O control. se llama al gestor de errores. ERR_RMQ_INVMSG Este error se genera si el mensaje no es válido.

RMQGetMsgHeader . Ordenar y habilitar interrupciones para un ti.Obtener información de encabezado de un mensaje de RMQ en message la página 405. Enviar datos a la cola de una tarea de RAPID RMQSendWait .RMQFindSlot .1 Instrucciones 1.Obtener un mensaje de RMQ en la página 399.RMQGetSlotName .Enviar un mensaje de o de un cliente de Robot Application Builder datos de RMQ en la página 412.Buscar una identidad de ranurea de RAPID Message Queue o de un ra para el nombre de ranura en la página 397.Obtener la parte de datos de un mensaje de RMQ en la página 402.Mensaje de RAPID Message Queue en la página 1262. Enviar datos a la cola de una tarea de RAPID RMQSendMessage . Extraer los datos de un rmqmessage RMQGetMsgData . Vaciar la cola de mensajes de RAPID RMQEmptyQueue .141 RMQReadWait . Extraer los datos de encabezado de un rmq.IRMQMessage . . Obtener el primer mensaje de una cola de RAPID Message Queue RMQGetMessage . 3HAC16581-5 Revisión: L 411 © Copyright 2004-2011 ABB. cliente de Robot Application Builder.Devuelve un mensaje de una cola RMQ Continuación Para obtener más información sobre Consulte rmqmessage tipo de dato rmqmessage . Encontrar el número de identidad de una ta.Ordenar interrupciones de po de dato en concreto RMQ para un tipo de dato en la página 175.Enviar un mensaje de datos o un cliente de Robot Application Builder y de RMQ y esperar una respuesta en la págiesperar una respuesta del cliente na 416. Reservados todos los derechos.Obtener el nombre de dad de ranura especificada un cliente de RMQ en la página 1035. Obtener el nombre de ranura de una identi.Vacía la cola de mensajes de RAPID en la página 395rmqmessage Mensaje de RAPID Message Queue en la página 1262.

0. Este ejemplo muestra cómo enviar el valor de la variable data a la tarea de RAPID "Task2" con el RMQ configurado "RMQ_Task2".Enviar un mensaje de datos de RMQ Utilización RMQSendMessage (RAPID Message Queue Send Message) se utiliza para enviar datos a un RMQ configurado para una tarea de RAPID o un cliente de Robot Application Builder. my_id:=my_id + 1. . variable persistente o constante que contiene los datos a enviar al cliente que tiene la identidad indicada en el argumento Slot. 0]. Ejemplo 1 VAR rmqslot destination_slot.. 9E9] ]. CONST robtarget p5:=[ [600. RMQFindSlot destination_slot. 0. RMQSendMessage destination_slot.1 Instrucciones 1. p5 \UserDef:=my_id.142 RMQSendMessage . Argumentos RMQSendMessage Slot SendData [\UserDef] Slot Tipo de dato: rmqslot El número de ranura de identidad del cliente que debe recibir el mensaje. [1."RMQ_Task2". RMQFindSlot destination_slot.Enviar un mensaje de datos de RMQ 1. . También se envía un número definido por el usuario. SendData Tipo de dato: anytype Referencia a una variable. Reservados todos los derechos. [ 11. Este ejemplo muestra cómo enviar el valor de la constante p5 a la tarea de RAPID "Task2" con el RMQ configurado "RMQ_Task2". Consulte también Más ejemplos en la página 413. 12. VAR string data:="Hello world".142 RMQSendMessage . . 9E9. [1."RMQ_Task2". 0. RMQSendMessage destination_slot. 500. [\UserDef] User Defined data Continúa en la página siguiente 412 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. 0]. Ejemplo 2 VAR rmqslot destination_slot. VAR num my_id:=1.data.3].3.. Este número puede ser utilizado por el destinatario como identificador. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RMQSendMessage. 9E9. 1. 9E9. 225.

767.142 RMQSendMessage . Si el cliente destinatario no está interesado en recibir mensajes. Ejemplo 1 MODULE SenderMod Continúa en la página siguiente 3HAC16581-5 Revisión: L 413 © Copyright 2004-2011 ABB. es decir. el cliente cuyo número de identidad es el indicado en la variable Slot. Ejecución de programas La instrucción RMQSendMessage se usa para enviar datos a un cliente especificado. El valor debe ser un entero de 0 a 32. no ha configurado ninguna interrupción que deba ejecutarse para el tipo de dato especificado en la instrucción RMQSendMessage. No todos los tipos de datos pueden enviarse con esta instrucción (consulte las limitaciones). el mensaje se desecha y se genera un aviso.Enviar un mensaje de datos de RMQ Continuación Tipo de dato: num Datos que especifican la información definida por el usuario al receptor de SendData. .1 Instrucciones 1. es decir. Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción RMQSendMessage. o bien no está esperando en una instrucción RMQSendWait. La instrucción empaqueta los datos entrantes de un contenedor de almacenamiento y los envía. Reservados todos los derechos.

. Continúa en la página siguiente 414 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. VAR msgrec msg :=[0. 0. ! Send message RMQSendMessage destinationSlot. La variable de sistema ERRNO cambia a: ERR_RMQ_MSGSIZE El tamaño del mensaje es excesivo. num y. 0]. . ENDIF ENDPROC ENDMODULE Este ejemplo muestra cómo usar la instrucción RMQSendMessage con la gestión de errores aplicada a los errores de tiempo de ejecución que se produzcan. ! Avoid execution stop due to retry count exceed ResetRetryCount. ENDWHILE ERROR IF ERRNO = ERR_RMQ_INVALID THEN ! Handle destination client lost WaitTime 1.142 RMQSendMessage . ! Connect to a Robot Application Builder client RMQFindSlot destinationSlot ”My_RAB_client”. Reservados todos los derechos. Los errores pueden ser gestionados en un gestor de ERROR.1 Instrucciones 1. ! Avoid execution stop due to retry count exceed ResetRetryCount. RETRY.. RETRY. O bien los datos sobrepasan el tamaño de mensaje máximo permitido o el cliente destinatario no está configurado para recibir el tamaño de datos enviado. msg. ! Perform cycle WHILE TRUE DO ! Update msg with valid data . Gestión de errores Pueden generarse los errores recuperables siguientes. ELSIF ERRNO = ERR_RMQ_FULL THEN ! Handle destination queue full WaitTime 1. El programa envía los datos definidos por el usuario del tipo msgrec a un cliente de Robot Application Builder llamado "My_RAB_client". ...Enviar un mensaje de datos de RMQ Continuación RECORD msgrec num x. ! Reconnect to Robot Application Builder client RMQFindSlot destinationSlot ”My_RAB_client”. ENDRECORD PROC main() VAR rmqslot destinationSlot. ERR_RMQ_FULL La cola de mensajes de destino está llena.

Obtener la parte de datos de un mensaje de RMQ en la página 402 Ordenar y habilitar interrupciones para un ti. debe realizarse una llamada a RMQFindSlot.Obtener el nombre de dad de ranura especificada un cliente de RMQ en la página 1035 RMQ Slot rmqslot . Si no hay conexión. son de semivalor o corresponden al tipo de dato motsetdata.Enviar un mensaje de datos de RMQ Continuación ERR_RMQ_INVALID La ranura de destino no ha sido conectada o la ranura de destino ya no está disponible. sección RAPID Message Queue. Reservados todos los derechos.1 Instrucciones 1.Obtener un mensaje de RMQ en la página 399 Enviar datos a la cola de una tarea de RAPID RMQSendWait .000).Obtener información de encabezado de un mensaje de RMQ en message la página 405 Extraer los datos de un rmqmessage RMQGetMsgData .RMQFindSlot .Buscar una identidad de ranurea de RAPID Message Queue o de un ra para el nombre de ranura en la página 397 cliente de Robot Application Builder Obtener el primer mensaje de una cola de RAPID Message Queue.142 RMQSendMessage .Número de identidad de un cliente de RMQ en la página 1264 3HAC16581-5 Revisión: L 415 © Copyright 2004-2011 ABB. El tamaño de los datos que pueden ser recibidos por un RMQ es configurable (tamaño predeterminado 400.000 bytes.‘ Información relacionada Para obtener más información sobre Consulte Descripción de la funcionalidad de RAPID Message Queue Application manual . el motivo es que un cliente remoto se ha desconectado del controlador.000 bytes.’ [ SendData‘ :=’ ] < reference (REF) of anytype > [ ‘\’ UserDef‘ :=’ < expression (IN) of num > ] ‘. tamaño máximo 3. Limitaciones No es posible usar en interrupciones. Encontrar el número de identidad de una ta. Sintaxis RMQSendMessage [ Slot ‘:=’ ] < variable (VAR) of rmqslot > ’.Enviar un mensaje de datos o un cliente de Robot Application Builder y de RMQ y esperar una respuesta en la págiesperar una respuesta del cliente na 416 Extraer los datos de encabezado de un rmq. RMQGetMessage .RMQGetSlotName . El tamaño máximo de los datos que pueden enviarse al cliente de Robot Application Builder es de aproximadamente 5. .IRMQMessage .Robot communication and I/O control. El tamaño máximo de los datos que pueden ser recibidos por un RMQ y almacenados en un tipo de dato rmqmessage es de aproximadamente 3.RMQGetMsgHeader .Ordenar interrupciones de po de dato en concreto RMQ para un tipo de dato en la página 175 Obtener el nombre de ranura de una identi. Si no está disponible. enviar ni recibir instancias de tipos de datos que no tienen valor.

RMQGetMsgData rmqmessage1. RMQFindSlot destination_slot. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción RMQSendWait. . receivestr. Si se utiliza esta instrucción. El tipo de dato se especifica en la Continúa en la página siguiente 416 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Otra exigencia para dar fin a la instrucción de espera es que el cliente envíe el tipo de dato correcto. VAR string mysendstr. RMQFindSlot rmqslot1. Este ejemplo muestra cómo enviar los datos de la variable sendstr a la tarea de RAPID "T_ROB2" con el RMQ configurado "RMQ_T_ROB2". Consulte también Más ejemplos en la página 419. mynum.Enviar un mensaje de datos de RMQ y esperar una respuesta 1. VAR rmqmessage rmqmessage1. "RMQ_Task2". el usuario necesita saber qué tipo de dato se enviará en la respuesta proveniente del cliente. También se envía un número definido por el usuario. RMQGetMsgData receivemsg. Ahora la instrucción RMQSendWait espera una respuesta de la tarea "T_ROB2". mysendstr \UserDef:=mysendid. mynum. Este número puede ser utilizado por el destinatario como un identificador y debe ser devuelto al remitente para dar fin a la instrucción de espera RMQSendWait. RMQSendWait destination_slot. mysendstr:="Message from Task1". sendstr. La instrucción "T_ROB2" necesita enviar datos almacenados en un tipo de dato num para dar fin a la instrucción de espera RMQSendWait.Enviar un mensaje de datos de RMQ y esperar una respuesta Utilización La instrucción RMQSendWait (RAPID Message Queue Send Wait) permite enviar datos a un RMQ o a un cliente de Robot Application Builder y esperar una respuesta del cliente especificado.1 Instrucciones 1.. RMQSendWait rmqslot1. Ejemplo 1 VAR rmqslot destination_slot.143 RMQSendWait . mysendid:=mysendid + 1. . VAR string receivestr. "RMQ_T_ROB2". receivestr \TimeOut:=20.143 RMQSendWait . Reservados todos los derechos. rmqmessage1. VAR string sendstr:="This string is from T_ROB1". los datos se copian a la variable mynum desde la variable receivemsg con la instrucción RMQGetMsgData Ejemplo 2 VAR rmqslot rmqslot1. Este ejemplo muestra cómo enviar los datos de la variable mysendstr a la tarea de RAPID "Task2" con el RMQ configurado "RMQ_Task2". VAR num mysendid:=1. . Una vez recibido el mensaje. VAR num mynum.. receivemsg. VAR rmqmessage receivemsg.

Si no se usa el parámetro \Timeout el tiempo de espera es de 60 s. Una vez recibido el mensaje. . utilice la constante predefinida WAIT_MAX. Reservados todos los derechos. se detiene la ejecución. el cliente cuyo número de identidad es el indicado en la variable Slot. ReceiveDataType Tipo de dato: anytype Una referencia a una variable persistente. [\Timeout] Tipo de dato: num El tiempo máximo [s] que debe esperar la ejecución del programa a una respuesta. Si no hay ningún gestor de errores. se llama al gestor de errores si lo hay. la instrucción RMQSendWait sólo finaliza si los tipos de ReceiveDataType y de UserDef especificados son iguales a los especificados en la respuesta al mensaje. es decir. Si el tiempo se agota antes de que se cumpla la condición. los datos efectivos se copian a la variable receivestr con la instrucción RMQGetMsgData Argumentos RMQSendWait Slot SendData [\UserDef] Message ReceiveDataType [\TimeOut] Slot Tipo de dato: rmqslot El número de identidad del cliente que debe recibir el mensaje.143 RMQSendWait . Message Tipo de dato: rmqmessage La variable en la que se coloca el mensaje recibido. El valor debe ser un entero de 0 a 32. [\UserDef] User Defined data Tipo de dato: num Datos que especifican la información definida por el usuario al receptor de SendData. Este argumento sólo se usa para especificar el tipo de dato efectivo esperado por la instrucción RMQSendWait. Continúa en la página siguiente 3HAC16581-5 Revisión: L 417 © Copyright 2004-2011 ABB. SendData Tipo de dato: anytype Referencia a una variable. una variable o una constante del tipo de dato esperado por la instrucción. Si se utiliza este argumento opcional.1 Instrucciones 1. Para esperar ininterrumpidamente. Los datos efectivos no se copian a esta variable cuando se ejecuta RMQSendWait. variable persistente o constante que contiene los datos a enviar al cliente cuyo número de identidad es el indicado en la variable Slot.767. con el código de error ERR_RMQ_TIMEOUT.Enviar un mensaje de datos de RMQ y esperar una respuesta Continuación variable receivestr de la instrucción RMQSendWait.

La identidad de ranura puede ser reinicializada desde ahí. La respuesta debe ser un rmqmessage del cliente que recibió el mensaje. la variable utilizada en el argumento Slot cambia a 0 y la instrucción se ejecuta de nuevo.143 RMQSendWait . la instrucción falla debido a una identidad de ranura no válida y se llama al gestor de errores si lo hay. El mensaje se envía de la misma forma que cuando se usa RMQSendMessage. el destinatario recibirá un mensaje normal de RAPID Message Queue. La instrucción RMQSendWait tiene la máxima prioridad si se recibe un mensaje y éste se corresponde con la descripción tanto de la respuesta esperada como de un mensaje conectado a una rutina TRAP (consulte la instrucción IRMQMessage). y la respuesta debe ser del mismo tipo de dato especificado en el argumento ReceiveDataType.1 Instrucciones 1. el mensaje se desecha y se genera un aviso. En este caso. con el código de error ERR_RMQ_INVALID. Este error puede ser gestionado en un gestor de errores. no ha configurado ninguna interrupción que deba ejecutarse para el tipo de dato especificado en la instrucción RMQSendWait. No todos los tipos de datos pueden enviarse con esta instrucción (consulte las limitaciones). se exige que el cliente destinatario utilice el mismo UserDef en la respuesta Si el cliente destinatario no está interesado en recibir mensajes. Reservados todos los derechos. .Enviar un mensaje de datos de RMQ y esperar una respuesta Continuación Ejecución de programas La instrucción RMQSendWait envía datos y espera una respuesta del cliente que tiene la identidad de ranura especificada. Continúa en la página siguiente 418 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. es decir. Si se usa el argumento opcional UserDef en la instrucción RMQSendWait. El remitente es responsable de que el destinatario sepa que se necesita una respuesta. es decir. o tras el tiempo límite predeterminado de 60 s. La instrucción devuelve un error tras el tiempo utilizado en el argumento TimeOut. Si se produce una caída de alimentación mientras se espera una respuesta del cliente.

!Get information about the received message RMQGetMsgHeader recmsg \Header:=header. La variable de sistema ERRNO cambia a: ERR_RMQ_MSGSIZE El tamaño del mensaje es excesivo..1 Instrucciones 1. VAR rmqheader header.ndim = 0 THEN ! Copy the data in recmsg RMQGetMsgData recmsg. !Send data in mysendstr. recmsg. WHILE TRUE DO ! Do something . VAR rmqmessage recmsg.143 RMQSendWait . .. Ejemplo 1 MODULE RMQ_Task1_mod PROC main() VAR rmqslot destination_slot. Reservados todos los derechos.datatype = "string" AND header. myrecstr.Enviar un mensaje de datos de RMQ y esperar una respuesta Continuación Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción RMQSendWait. mysendstr. IF header. ENDIF ENDWHILE ENDPROC ENDMODULE Los datos de la variable mysendstr se envían a la tarea de RAPID "Task2" con la cola de RAPID Message Queue configurada "RMQ_Task2" y la instrucción RMQSendWait. O bien los datos sobrepasan el tamaño de mensaje máximo permitido o el cliente destinatario no está configurado para recibir el tamaño de datos enviado. ELSE TPWrite "Not a string that was received". ERR_RMQ_FULL La cola de mensajes de destino está llena. El uso de la variable myrecstr en la llamada a RMQSendWait es sólo una especificación del tipo de dato esperado por el remitente como respuesta. El mensaje de RMQ recibido como respuesta se recibe en la variable recmsg. TPWrite "Received string: " + myrecstr. La respuesta de la tarea de RAPID "Task2" debe ser una cadena (especificada con el tipo de dato de la variable myrecstr). wait for an answer of type string RMQSendWait destination_slot. Los errores pueden ser gestionados en un gestor de ERROR. !Get slot identity to client called RMQ_Task2 RMQFindSlot destination_slot. VAR string mysendstr:="String sent from RMQ_Task1_mod". Continúa en la página siguiente 3HAC16581-5 Revisión: L 419 © Copyright 2004-2011 ABB. myrecstr. No se coloca ningún dato válido en la variable de la llamada a RMQSendWait Gestión de errores Pueden generarse los errores recuperables siguientes. VAR string myrecstr. "RMQ_Task2".

Enviar un mensaje de datos de RMQ y esperar una respuesta Continuación ERR_RMQ_INVALID La ranura rmqslot no ha sido inicializada o la ranura de destino ya no está disponible.’ [ SendData‘ :=’ ] < reference (REF) of anytype > [ ‘\’ UserDef‘ :=’ < expression (IN) of num > ] ’.Obtener información de encabezado de un mensaje de RMQ en message la página 405 Extraer los datos de un rmqmessage RMQGetMsgData . enviar ni recibir instancias de tipos de datos que no tienen valor. Reservados todos los derechos.Obtener un mensaje de RMQ en la página 399 Extraer los datos de encabezado de un rmq. ERR_RMQ_TIMEOUT No se ha recibido ninguna respuesta dentro del tiempo límite.‘ Información relacionada Para obtener más información sobre Consulte Descripción de la funcionalidad de RAPID Message Queue Application manual . El tamaño máximo de los datos que pueden enviarse al cliente de Robot Application Builder es de aproximadamente 5. Provocaría un error de tiempo de ejecución no recuperable. RMQGetMessage .143 RMQSendWait .000 bytes.’ [ ReceiveDataType‘ :=’ ] < reference (REF) of anytype > ’. son de semivalor o corresponden al tipo de dato motsetdata. tamaño máximo 3.Obtener la parte de datos de un mensaje de RMQ en la página 402 Continúa en la página siguiente 420 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.000 bytes.RMQFindSlot . RMQSendWait fue interrumpida por una caída de alimentación y en el momento del reinicio la ranura rmqslot es puesta a 0. Limitaciones No se permite ejecutar RMQSendWait en el modo sincronizado. El tamaño de los datos que pueden ser recibidos por un RMQ es configurable (tamaño predeterminado 400.Buscar una identidad de ranurea de RAPID Message Queue o de un ra para el nombre de ranura en la página 397 cliente de Robot Application Builder Enviar datos a la cola de una tarea de RAPID RMQSendMessage . . Esto puede ocurrir por ejemplo si una aplicación de PC envía un mensaje dañado.000).Enviar un mensaje de o de un cliente de Robot Application Builder datos de RMQ en la página 412 Obtener el primer mensaje de una cola de RAPID Message Queue.’ [ ‘\’ Timeout‘ :=’ < expression (IN) of num > ] ‘. Sintaxis RMQSendWait [ Slot ‘:=’ ] < variable (VAR) of rmqslot > ’. Esto puede ocurrir si la ranura de destino es un cliente remoto y éste ha sido desconectado del controlador.1 Instrucciones 1. sección RAPID Message Queue. No es posible usar en interrupciones. El tamaño máximo de los datos que pueden ser recibidos por un RMQ y almacenados en un tipo de dato rmqmessage es de aproximadamente 3. Encontrar el número de identidad de una ta.’ [ Message‘ :=’ ] < variable (VAR) of rmqmessage > ’.Robot communication and I/O control. ERR_RMQ_INVMSG Este error se genera si el mensaje no es válido.RMQGetMsgHeader .

1 Instrucciones 1.143 RMQSendWait .Ordenar interrupciones de po de dato en concreto RMQ para un tipo de dato en la página 175 Obtener el nombre de ranura de una identi.Número de identidad de un cliente de RMQ en la página 1264 RMQ Message rmqmessage .Mensaje de RAPID Message Queue en la página 1262 3HAC16581-5 Revisión: L 421 © Copyright 2004-2011 ABB. .Obtener el nombre de dad de ranura especificada un cliente de RMQ en la página 1035 RMQ Slot rmqslot .RMQGetSlotName .IRMQMessage .Enviar un mensaje de datos de RMQ y esperar una respuesta Continuación Para obtener más información sobre Consulte Ordenar y habilitar interrupciones para un ti. Reservados todos los derechos.

Reservados todos los derechos..Guarda un módulo de programa 1.Guarda un módulo de programa Utilización Save se utiliza para guardar un módulo de programa.MOD". Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción Save. Consulte también Más ejemplos en la página 423. Ejemplo 1 Load "HOME:/PART_B. [\TaskName] Tipo de dato: string El nombre de la tarea de programa en la que debe guardarse el módulo de programa.MOD desde HOME:. Guarda el módulo de programa PART_B con la ruta de archivo original HOME: y el nombre de archivo original PART_B. . ModuleName Tipo de dato: string El módulo de programa que se desea guardar. Save "PART_B". La identificación de la variable será “nombre_tarea”+“ID”. El módulo de programa especificado y presente en la memoria de programa se guarda en la ruta de archivos original (especificada en Load o StartLoad) o en la ruta especificada.144 Save . Por ejemplo. se guarda el módulo de programa de la tarea de programa actual (la que se esté ejecutando)..MOD. Carga en la memoria de programa el módulo de programa denominado PART_B.1 Instrucciones 1. . También es posible guardar un módulo de sistema en la ruta de archivos especificada. Continúa en la página siguiente 422 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.144 Save .. para la tarea T_ROB1 la identificación de la tarea es T_ROB1Id. Si no se especifica ninguno de los argumentos \TaskRef o \TaskName. Argumentos Save [\TaskRef]|[\TaskName] ModuleName [\FilePath] [\File] [\TaskRef] Task Reference Tipo de dato: taskid La identidad de la tarea de programa en la que debe guardarse el módulo de programa. Existen variables predefinidas con el tipo de dato taskid para todas las tareas de programa del sistema.

Lo mismo que en el ejemplo 1 anterior pero con otra sintaxis. . un ordenador externo o en la configuración del sistema. Continúa en la página siguiente 3HAC16581-5 Revisión: L 423 © Copyright 2004-2011 ABB.MOD". Ejemplo 4 Save \TaskName:="TSK1".1 Instrucciones 1. es necesario especificarlo con este argumento. Para poder guardar un módulo de programa cargado anteriormente en el FlexPendant. Éste es un ejemplo en el que la instrucción Save se ejecuta en una tarea de programa y el guardado se hace en otra tarea de programa. también es posible usar el argumento \FilePath \File. Ejemplo 2 Save "PART_A" \FilePath:="HOME:" \File:="DOORDIR/PART_A. Guarda el módulo de programa PART_A en HOME: en el archivo PART_A. Reservados todos los derechos.MOD". el módulo de programa se almacena en el mismo destino que el especificado en estas instrucciones.144 Save .MOD". Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción Save. Guarda el módulo de programa PART_A de la tarea de programa TSK1 en el destino especificado. Éste es otro ejemplo en el que la instrucción Save se ejecuta en una tarea de programa y el guardado se hace en otra tarea de programa. Ejecución de programas La ejecución del programa espera a que el módulo de programa termine de guardarse antes de continuar en la instrucción siguiente.MOD". es necesario utilizar el argumento \FilePath \File .MOD y en el directorio DOORDIR. Para almacenar el módulo de programa en otro destino. Ejemplo 3 Save \TaskRef:=TSK1Id. [\File] Tipo de dato: string Cuando se excluye el nombre del archivo en el argumento \FilePath. "PART_A" \FilePath:="HOME:/DOORDIR/PART_A. Ejemplo 1 Save "PART_A" \FilePath:="HOME:/DOORDIR/PART_A. Además.Guarda un módulo de programa Continuación [\FilePath] Tipo de dato: string La ruta y el nombre de archivo del lugar en el que se desea guardar el módulo de programa. "PART_A" \FilePath:="HOME:/DOORDIR/PART_A. El argumento \FilePath\File sólo puede omitirse en el caso de los módulos de programa cargados con Load o StartLoad-WaitLoad. El nombre de archivo se excluye cuando se utiliza el argumento \File. Guarda el módulo de programa PART_A de la tarea de programa TSK1 en el destino especificado.

Si no se especifica el argumento \FilePath en los módulos de programa cargados desde el FlexPendant. Si no es posible guardar el archivo por no disponer de los permisos suficientes.’] [ ModuleName’ :=’ ] <expression (IN) of string> [ ’\’ FilePath’ :=’<expression (IN) of string> ] [ ’\’ File’ :=’ <expression (IN) of string>] ’. los eventos de E/S del sistema y otras tareas de programa no pueden ejecutarse durante la operación de guardado. Por tanto.’ Información relacionada Para obtener más información sobre Consulte Tareas de programa taskid .1 Instrucciones 1.Guarda un módulo de programa Continuación Limitaciones Las rutinas TRAP.Identificación de tareas en la página 1297 424 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Esto da como resultado datos de tipo PERS completos incoherentes.144 Save . la variable ERRNO cambia a ERR_PATH. la variable de sistema ERRNO cambia a ERR_TASKNAME. Un paro de programa durante la ejecución de la instrucción Save puede dar lugar a un paro protegido con Motors OFF. los parámetros del sistema o un ordenador externo. Reservados todos los derechos. . Gestión de errores Si el nombre de tarea de programa contenido en \TaskName no se encuentra en el sistema. este tipo de operaciones se retardan. éste es desconocido o se trata de un nombre de módulo ambiguo. Estos errores pueden ser gestionados en el gestor de errores. Sintaxis Save [[ ’\’ TaskRef ’:=’ <variable (VAR) of taskid>] |[ ’\’ TaskName’ :=’ <expression (IN) of string>] ’. la variable de sistema ERRNO cambia a ERR_MODULE. Evite tener movimientos en curso durante el guardado. La operación de guardado puede interrumpir la actualización paso a paso de los datos de tipo PERS desde otras tareas de programa. la variable de sistema ERRNO cambia a ERR_IOERROR. si no existe el directorio o no queda espacio libre en el dispositivo. Si no es posible guardar el módulo de programa porque no hay ningún nombre de módulo. El mensaje de error "20025 Tiempo excesivo Orden paro" se muestra en el FlexPendant.

El nombre. El nombre. cycle_done. Ejemplo 1 PERS num cycle_done.Envía los datos de la variable a una aplicación cliente 1. Ejemplo 4 SCWrite \ToNode := "138.221. Argumentos SCWrite [ \ToNode ] Variable [\ToNode] Tipo de dato: datatype El argumento no se tiene en cuenta. el tipo y el valor de la variable persistente cycle_done se envía a todas las aplicaciones cliente.4".145 SCWrite . Es posible enviar tanto variables individuales como matrices de variables. Reservados todos los derechos. Ejemplo 3 SCWrite numarr. el tipo y el valor de la variable persistente cycle_done se envía a todas las aplicaciones cliente. SCWrite cycle_done.4". PERS num numarr{2}:=[1. El nombre. El nombre.1 Instrucciones 1. el tipo. la dimensión y el valor de la variable persistente numarr se envía a todas las aplicaciones cliente.Envía los datos de la variable a una aplicación cliente Utilización SCWrite (Superior Computer Write) se utiliza para enviar el nombre. el tipo.2]. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción instruction nombre.221. Continúa en la página siguiente 3HAC16581-5 Revisión: L 425 © Copyright 2004-2011 ABB.145 SCWrite . la dimensión y el valor de la variable persistente numarr se envía a todas las aplicaciones cliente. el tipo. numarr. . el tamaño y el valor de una variable persistente a una aplicación cliente.228. Ejemplo 2 SCWrite \ToNode := "138. El argumento \ToNode no se tiene en cuenta. Variable Tipo de dato: anytype El nombre de una variable persistente.228. El argumento \ToNode no se tiene en cuenta.

145 SCWrite . éste debe ser gestionado por un gestor de errores. Continúa en la página siguiente 426 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Solución: Añada una instrucción WaitTime entre las instrucciones SCWrite sucesivas. .1 Instrucciones 1. el error sólo queda registrado en el registro y el programa se sigue ejecutando. Cuando se produce un error. • El mensaje de error será el siguiente: 41473 Error de acceso del sistema Imposible enviar YYYYYY DondeYYYYeselnombredelavariable. Puede deberse a las causas siguientes: • Los mensajes de SCWrite llegan tan cercanos entre sí que no es posible enviarlos al cliente. Reservados todos los derechos. La instrucción SCWrite no devolverá ningún error en algunos casos. la dimensión y el valor de la variable persistente se envía a todas las aplicaciones cliente. Gestión de errores La instrucción SCWrite devuelve un error en los casos siguientes: La variable no pudo ser enviada al cliente.Envía los datos de la variable a una aplicación cliente Continuación Ejecución de programas El nombre. La variable del sistema ERRNO contendrá al valor ERR_SC_WRITE. • El valor de la variable es demasiado grande. En este caso. El programa se sigue ejecutando. el tipo. Reduzca el tamaño de la MATRIZ o del REGISTRO. por ejemplo si la aplicación cliente está cerrada o la comunicación está desactivada. el programa se detiene y es necesario reiniciarlo. ‘dim’ es la dimensión de la variable y sólo se envía si la variable es una matriz. SCWrite recuperación en caso de error Para detener el programa cuando se produce un error en una instrucción SCWrite.

Reservados todos los derechos.0 o posteriores El programa de RAPID tiene el aspecto siguiente: MODULE SCW PROC main () . . Con RobotWare 5. ELSE ! Sitúe aquí el código de error para la gestión de los demás errores ENDIF ENDPROC ENDMODULE xx0500002339_es 3HAC16581-5 Revisión: L 427 © Copyright 2004-2011 ABB.145 SCWrite . SCWrite load0. 2 Si se produce un error 3 ERROR IF ERRNO=ERR_SC_WRITE THEN ! Sitúe aquí el código de error para la gestión del error de SCWrite (si desea añadirlo) TRYNEXT. dado que el error no se comunica nunca a través de la pantalla del FlexPendant (a pesar de que sí aparece en el registro).1 Instrucciones 1.Envía los datos de la variable a una aplicación cliente Continuación Recuerde que la gestión de errores dificultará la localización de los errores en la comunicación con la aplicación cliente. La ejecución comienza aquí . 1 . . . .

v100. Cuando el valor de la señal di1 cambia a activo. la posición se almacena en sp. la posición se almacena en sp y el robot se detiene inmediatamente. Cuando el valor de la señal di2 cambia a activo. sp. La forma de hacerlo puede ser distinta de un bus de campo a otro. . El TCP de la sonda probe se mueve circularmente hacia la posición p10 a una velocidad de v100.1 Instrucciones 1.146 SearchC . Cuando el valor de la señal cambia al valor solicitado. resulta importante configurar el sistema de E/S para reducir al mínimo el tiempo que transcurre desde el establecimiento de la señal física hasta que el sistema obtiene información acerca del valor (utilice la unidad de E/S con control de interrupciones.Realiza una búsqueda en círculo usando el robot Utilización SearchC (Search Circular se utiliza para buscar una posición al mover el punto central de la herramienta (TCP) en sentido circular. v100. Si se utilizan otros buses de campo. Consulte también Más ejemplos en la página 433. el robot supervisa una señal digital de entrada. probe. sp. Si se utiliza DeviceNet. Durante el movimiento. Al utilizar instrucciones de búsqueda. Las coordenadas de contorno de un objeto de trabajo pueden obtenerse con la instrucción SearchC. Normalmente. no con control de sondeo). esta instrucción puede usarse cuando la herramienta sostenida por el robot es una sonda para detección de superficies.146 SearchC . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SearchC. si se cuenta con un sistema MultiMove. Ejemplo 1 SearchC di1. Argumentos SearchC [\Stop] | [\PStop] | [\SStop] | [\Sup] Signal [\Flanks] | [\PosFlank] | [\NegFlank] | [\HighLevel] | [\LowLevel] SearchPoint CirPoint ToPoint [\ID] Speed [\V] | [\T] Tool [\WObj] [\Corr] [ \Stop ] Stiff Stop Continúa en la página siguiente 428 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Realiza una búsqueda en círculo usando el robot 1. asegúrese de configurar la red correctamente para conseguir las condiciones correctas. cirpoint. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. dado que utilizan el cambio de estado como tipo de conexión. Ejemplo 1 SearchC \Stop. probe. cirpoint. el robot lee inmediatamente la posición actual. p10. El TCP de la sonda probe se mueve circularmente hacia la posición p10. las unidades de ABB DSQC 651 (AD Combi I/O) y DSQC 652 (Digital I/O) proporcionan tiempos breves. p10. di2. Reservados todos los derechos. en las tareas de movimiento.

\SStop o \Sup (no se utiliza ningún modificador): • el movimiento continúa (búsqueda en vuelo) hasta la posición especificada en el argumento ToPoint (igual que en el argumento \Sup) Continúa en la página siguiente 3HAC16581-5 Revisión: L 429 © Copyright 2004-2011 ABB. . lo que hace que se deslice marginalmente de la trayectoria. a la posición en la que cambió la señal. Sin embargo. se detiene en la dirección de la tangente del movimiento. Sin embargo. En los paros rígidos a una mayor velocidad. Reservados todos los derechos.Realiza una búsqueda en círculo usando el robot Continuación Tipo de dato:switch El movimiento del robot se detiene lo antes posible. manteniendo el TCP en la trayectoria (paro blando) cuando el valor de la señal de búsqueda cambia a activo. Si se omite el argumento \Stop.146 SearchC . es decir. [ \Sup ] Supervision Tipo de dato:switch La instrucción de búsqueda es sensible a la activación de señales durante el movimiento completo (búsqueda en vuelo).1 Instrucciones 1. Sin embargo. SStop resulta más rápido que PStop. es decir. es decir. es decir. [ \SStop ] Soft Stop Tipo de dato:switch El movimiento del robot se detiene lo antes posible. Sin embargo. ¡AVISO! La detención de la búsqueda con un paro rígido (modificador \Stop) sólo está permitida si la velocidad del TCP es inferior a los 100 mm/s. incluso después de que se informa del primer cambio de señal. el robot sólo se mueve una distancia corta antes del paro y no regresa a la posición buscada. sin mantener el TCP en la trayectoria (paro rígido) cuando el valor de la señal de búsqueda cambia a activo. manteniendo el TCP cerca de la trayectoria o en ésta (paro blando) cuando el valor de la señal de búsqueda cambia a activo. cuando el robot funciona a una velocidad superior a los 100 mm/s. a la posición en la que cambió la señal. [ \PStop ] Path Stop Tipo de dato:switch El movimiento del robot se detiene lo antes posible. se genera un error recuperable con el robot en ToPoint. a la posición en la que cambió la señal. el robot se mueve una distancia corta antes del paro y no regresa a la posición buscada. \PStop. el robot se mueve cierta distancia antes del paro y no regresa a la posición buscada. Si se produce más de una coincidencia durante una búsqueda. algunos ejes pueden moverse en una dirección impredecible.

Realiza una búsqueda en círculo usando el robot Continuación • Se indica un error cuando no existe ninguna coincidencia de búsqueda. pero no se indica tal error si hay más de una coincidencia de búsqueda (la primera coincidencia de búsqueda se devuelve como SearchPoint) Signal Tipo de dato:signaldi El nombre de la señal a supervisar. el movimiento del robot se detiene lo antes posible.146 SearchC . Se generará un error recuperable por el usuario (ERR_SIGSUPSEARCH) que puede gestionarse en el gestor de errores. Si se omite el argumento \Flanks. manteniendo el TCP en la trayectoria (paro blando). Se generará Continúa en la página siguiente 430 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. el movimiento del robot se detiene lo antes posible. Esto significa que si la señal ya tiene un valor positivo al comenzar el proceso de búsqueda o se pierde la comunicación con la señal. . sólo el borde positivo de la señal es válido para determinar el éxito de una búsqueda y se activa una supervisión de la señal al comenzar un proceso de búsqueda. [ \PosFlank ] Tipo de dato:switch El borde positivo de la señal es válido para determinar el éxito de una búsqueda. [ \Flanks ] Tipo de dato:switch Los bordes positivo y negativo de la señal son válidos para determinar el éxito de una búsqueda. [ \NegFlank ] Tipo de dato:switch El borde positivo de la señal es válido para determinar el éxito de una búsqueda. el robot se mueve una distancia corta antes del paro y no vuelve a la posición inicial. Se genera un error recuperable por el usuario (ERR_SIGSUPSEARCH). que puede gestionarse en el gestor de errores.1 Instrucciones 1. Esto significa que si la señal ya tiene el valor positivo al comenzar un proceso de búsqueda o se pierde la comunicación con la señal. Esto significa que si la señal ya tiene el valor 0 al comenzar un proceso de búsqueda o se pierde la comunicación con la señal. [ \HighLevel ] Tipo de dato:switch La misma funcionalidad que si no usara el modificador \Flanks. Sin embargo. Reservados todos los derechos. manteniendo el TCP en la trayectoria (paro blando). El borde positivo de la señal es válido para determinar el éxito de una búsqueda y se activará la supervisión de señales al inicio del proceso de búsqueda. el movimiento del robot se detiene lo antes posible. manteniendo el TCP en la trayectoria (paro blando). [ \LowLevel ] Tipo de dato:switch El borde negativo de la señal es válido para determinar el éxito de una búsqueda y se activará la supervisión de señales al inicio del proceso de búsqueda.

Consulte la instrucción MoveC para obtener una descripción más detallada del movimiento circular. Los datos de velocidad definen la velocidad del punto central de la herramienta. los ejes externos y la reorientación de la herramienta. El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí. . SearchC utiliza siempre un punto de paro como dato de zona del destino. Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). ProgDisp/ExtOffs la herramienta especificada. [ \V ] Velocity Tipo de dato: num Este argumento se utiliza para especificar la velocidad del TCP en mm/s directamente en la instrucción. Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos. especificada en los datos de velocidad. ToPoint Tipo de dato: robtarget El punto de destino de los ejes del robot y de los ejes externos.Realiza una búsqueda en círculo usando el robot Continuación un error recuperable por el usuario (ERR_SIGSUPSEARCH) que puede gestionarse en el gestor de errores.1 Instrucciones 1. [ \ID ] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si se trata de un movimiento sincronizado y coordinado y no está permitido en ningún otro caso. A continuación. El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. SearchPoint Tipo de dato: robtarget La posición del TCP y de los ejes externos en el momento del disparo de la señal de búsqueda.146 SearchC . La posición se especifica en el sistema de coordenadas más externo. Reservados todos los derechos. El punto de círculo se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). [ \T ] Time Continúa en la página siguiente 3HAC16581-5 Revisión: L 431 © Copyright 2004-2011 ABB. CirPoint Tipo de dato: robtarget El punto de círculo del robot. el objeto de trabajo y el sistema de coordenadas into consideration. se sustituye por la velocidad correspondiente.

el movimiento del robot continúa siempre hacia el punto de destino programado. [ \Corr ] Correction Tipo de dato: switch Si este argumento está presente. Reservados todos los derechos. Tool Tipo de dato: tooldata La herramienta en uso durante el movimiento del robot.1 Instrucciones 1. es necesario especificar este argumento para ejecutar un movimiento lineal respecto del objeto de trabajo. el movimiento del robot se detiene cuando se detecta la primera señal. Es posible omitir este argumento. Continúa en la página siguiente 432 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. se sustituye por los datos de velocidad correspondientes. \PStop o \SStop.Realiza una búsqueda en círculo usando el robot Continuación Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento del robot. como se representa en la figura siguiente. . es decir. Si por otro lado se usa un TCP estacionario o ejes externos coordinados. Cuando se realiza una búsqueda con el modificador \Stop. Cuando se realiza una búsqueda en vuelo. los datos de corrección escritos en una entrada de corrección mediante una instrucción CorrWrite se añaden a la trayectoria y a la posición de destino. El movimiento termina siempre con un punto de paro. cuando se utiliza el argumento \Sup o no se especifica ningún modificador. Ejecución de programas Consulte la instrucción MoveC para obtener más información acerca del movimiento circular. [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo (sistema de coordenadas) con el que están relacionadas las posiciones de robot indicadas en la instrucción. El punto central de la herramienta es el punto que se mueve hacia la posición de destino especificada. la posición depende del sistema de coordenadas mundo.146 SearchC . Si se omite. La instrucción SearchC devuelve la posición del TCP cuando el valor de la señal digital cambia al valor solicitado. lo que implica que el robot se detiene en el punto de destino. A continuación.

En la figura siguiente se muestra un ejemplo de algo que puede salir mal cuando se usan datos de zona distintos de fine. di1\Flanks. De lo contrario. Los datos de zona de la instrucción de posicionamiento que precede a SearchC deben usarse con cuidado. en comparación con la programada). Sin el modificador \Flanks 1 0 tiempo Con el modificador \Flanks 1 0 tiempo = Reacción de la instrucción cuando la señal cambia xx0500002237_es Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción SearchC.Realiza una búsqueda en círculo usando el robot Continuación La figura muestra cómo se usa la detección de señal disparada por flancos (la posición se almacena sólo cuando la señal cambia por primera vez). p10. es decir. v100. el robot no toma la trayectoria programada (posicionamiento alrededor de la trayectoria circular en otra dirección. El comienzo de la búsqueda. Si el valor de la señal cambia dos veces. probe. . Limitaciones Limitaciones generales acorde con la instrucción MoveC. Punto de inicio con datos de zona z10 Objeto buscado Punto final Punto de inicio con datos de zona fine xx0500002238_es Continúa en la página siguiente 3HAC16581-5 Revisión: L 433 © Copyright 2004-2011 ABB. Cuando el valor de la señal di1 cambia a activo o pasivo. el programa genera un error. la posición se almacena en sp.1 Instrucciones 1. La instrucción SearchC no debe reanudarse en ningún caso una vez traspasado el punto de círculo. sp. En la figura siguiente se muestra cómo se encuentra una posición en el lado incorrecto del objeto a causa del uso de datos de zona incorrectos.146 SearchC . Ejemplo 1 SearchC \Sup. cirpoint. El TCP de la sonda probe se mueve circularmente hacia la posición p10. cuando la señal de E/S está preparada para reaccionar. no es en este caso el punto de destino de la instrucción de posicionamiento anterior. Reservados todos los derechos. sino un punto que se encuentra en la trayectoria real del robot.

no es posible almacenar la trayectoria actual con la instrucción StorePath.3 mm. Se genera el error ERR_WHLSEARCH sólo si se usó el argumento \Sup.146 SearchC . SearchC o SearchExtJ en una tarea de programa y en otra instrucción de movimiento de otra tarea de programa.1 Instrucciones 1. Exactitud de repetición para la posición de coincidencia de búsqueda con una velocidad de 20 a 1. Además de ello.Realiza una búsqueda en círculo usando el robot Continuación ¡AVISO! Limitaciones de búsqueda con movimiento sincronizado y coordinado: • Si se utiliza SearchL. Gestión de errores Durante las búsquedas. Mientras la búsqueda está activa. sólo es posible realizar la recuperación en caso de error con TRYNEXT. de 4 a 8 mm Limitaciones de la búsqueda en un transportador: • la búsqueda detiene el robot en caso de coincidencia o si la búsqueda no tiene éxito. Esto genera el error ERR_SIGSUPSEARCH sólo si se omite el argumento \Flanks. se generan errores en los casos siguientes: • Cuando no se detecta ninguna señal. Con ello se genera una coincidencia de búsqueda de forma sincronizada en todas las instrucciones de búsqueda. Distancia de paro típica con una velocidad de búsqueda de 50 mm/s: • Sin el TCP en la trayectoria (modificador \Stop). de 15 a 25 mm • Con el TCP cerca de la trayectoria (modificador \SStop). sólo es posible usar la búsqueda en vuelo con el modificador \Sup. Cualquier recuperación de error debe ser también la misma en todas las tareas de programa implicadas.000 mm/s de 0. de forma que la búsqueda debe hacerse en el mismo sentido que el del movimiento del transportador y después del paro de búsqueda debe ir seguida de un movimiento hasta una posición segura. de 1 a 3 mm • Con el TCP en la trayectoria (modificador \PStop). Se genera el error ERR_WHLSEARCH. . • Es posible utilizar toda la funcionalidad de búsqueda si se utilizan instrucciones SearchL. SearchC o SearchExtJ en todas las tareas de programa implicadas con movimiento sincronizado y coordinado y se genera una coincidencia de búsqueda desde la misma señal digital de entrada. Continúa en la página siguiente 434 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. • La señal ya tiene un valor positivo al comienzo del proceso de búsqueda o la comunicación con la señal se pierde. • la exactitud de repetición de la posición de coincidencia de búsqueda será menor al buscar en un transportador y depende de la velocidad del transportador y de hasta qué punto esta velocidad es estable. • Cuando se produce la detección de más de una señal. Reservados todos los derechos.1 a 0. Utilice la gestión de errores para el movimiento hasta una posición segura si la búsqueda no tiene éxito.

’] | [ ’\’ Sup ’.’] | [ ’\’ PStop ’.’ [ Speed’:=’ ] < expression (IN) of speeddata > [ ’\’ V ’:=’ < expression (IN) of num > ]| [ ’\’ T ’:=’ < expression (IN) of num > ] ’. • Instrucción hacia atrás: Durante la ejecución hacia atrás.Escribe en un generador de correcciones ción en la página 81 Mueve el robot en círculo MoveC .Realiza una búsqueda en círculo usando el robot Continuación Los errores pueden gestionarse de formas distintas en función del modo de ejecución seleccionado: • Ejecución continua hacia delante / Instrucciones hacia adelante /ERR_WHLSEARCH: No se devuelve ninguna posición y el movimiento continúa siempre hacia el punto de destino programado. La variable de sistema ERRNO cambia a ERR_WHLSEARCH y es posible gestionar el error en el gestor de errores de la rutina.CorrWrite .RAPID overview.Mueve el robot en círculo en la página 246 Movimiento circular Technical reference manual .Datos de velocidad en la página 1276 Definición de herramientas tooldata . la instrucción realiza el movimiento pero no realiza la supervisión de señales.Posicionamiento durante la ejecución del programa Definición de velocidad speeddata .1 Instrucciones 1. Reservados todos los derechos.’ [ SearchPoint’:=’ ] < var or pers (INOUT) of robtarget > ’.’] [ Signal’:=’ ] < variable (VAR) of signaldi > [‘\’ Flanks] | [‘\’ PosFlank] | [‘\’ NegFlank] | [‘\’ HighLevel] | [‘\’ LowLevel] ’. La variable de sistema ERRNO cambia a ERR_SIGSUPSEARCH y es posible gestionar el error en el gestor de errores de la rutina. .Realiza una búsqueda lineal usando el robot en la página 444 Escritura en una entrada de correc.’ [ ToPoint’:=’ ] < expression (IN) of robtarget > ’.146 SearchC .’ Información relacionada Para obtener más información sobre Consulte Búsquedas lineales SearchL .’] | [ ’\’ SStop ’.’ [ Tool ’:=’ ] < persistent (PERS) of tooldata > [ ’\’ WObj’:=’ < persistent (PERS) of wobjdata > ] [ ’\’ Corr ]’.’ [ ’\’ ID ’:=’ < expression (IN) of identno >]’.’ [ CirPoint’:=’ ] < expression (IN) of robtarget > ’.Datos de herramientas en la página 1301 Continúa en la página siguiente 3HAC16581-5 Revisión: L 435 © Copyright 2004-2011 ABB. Sintaxis SearchC [ ’\’ Stop ’. • Ejecución continua hacia adelante / Instrucciones hacia adelante / ERR_SIGSUPSEARCH: No se devuelve ninguna posición y el movimiento se detiene siempre lo antes posible al principio de la trayectoria de búsqueda. sección Principios de movimiento y E/S .

Reservados todos los derechos. sección Principios de movimiento y E/S 436 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Datos del objeto de trabajo en la página 1323 Utilización de gestores de errores Technical reference manual .RAPID overview.146 SearchC .Realiza una búsqueda en círculo usando el robot Continuación Para obtener más información sobre Consulte Definición de objetos de trabajo wobjdata .RAPID overview. .1 Instrucciones 1. sección Resumen sobre RAPID .Recuperación en caso de error Movimiento en general Technical reference manual .

jpos10.147 SearchExtJ .1 Instrucciones 1. las unidades de ABB DSQC 651 (AD Combi I/O) y DSQC 652 (Digital I/O) proporcionan retardos breves. Cuando el valor de la señal cambia al valor solicitado. vrot20. jpos20.Busca con una o varias unidades mecánicas sin TCP 1.Busca con una o varias unidades mecánicas sin TCP Utilización SearchExtJ (Search External Joints) se usa para buscar la posición de ejes externos cuando sólo hay movimiento en ejes externos lineales o de rotación. Ejemplo 2 SearchExJ \Stop. el sistema supervisa una señal digital de entrada. Argumentos SearchExtJ [\Stop] | [\PStop] | [\SStop] | [\Sup] Signal [\Flanks] | [\PosFlank] | [\NegFlank] | [\HighLevel] | [\LowLevel] SearchJointPos ToJointPos [\ID] [\UseEOffs] Speed [\T] [ \Stop ] Stiff Stop Tipo de dato:switch Continúa en la página siguiente 3HAC16581-5 Revisión: L 437 © Copyright 2004-2011 ABB. Cuando el valor de la señal di1 cambia a activo. La unidad mecánica con ejes de rotación se mueve hacia la posición jpos10 a la velocidad de vrot20. asegúrese de que la red esté configurada correctamente para obtener las condiciones correctas. La unidad mecánica con eje lineal se mueve hacia la posición jpos20. posx. Estos ejes externos pueden pertenecer a una o varias unidades mecánicas sin TCP. Si se utilizan otros buses de campo. Si se utiliza DeviceNet. la posición se almacena en searchp. vlin50. no con control de sondeo). el sistema lee inmediatamente la posición actual. Esta instrucción sólo puede usarse si: • La tarea de programa actual está definida como tarea de movimiento • La tarea controla una o varias unidades mecánicas sin TCP Al utilizar instrucciones de búsqueda. La forma de hacerlo puede ser distinta de un bus de campo a otro. dado que utilizan el cambio de estado como tipo de conexión. searchp. di2. Durante el movimiento. Ejemplo 1 SearchExtJ di1. resulta importante configurar el sistema de E/S para reducir al mínimo el tiempo de retardo que transcurre desde el establecimiento de la señal física hasta que el sistema obtiene información acerca del valor (utilice la unidad de E/S con control de interrupciones. la posición se almacena en posx y el movimiento en curso se detiene inmediatamente.147 SearchExtJ . Cuando el valor de la señal di2 cambia a activo. Consulte también Más ejemplos en la página 441. . Reservados todos los derechos. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SearchExtJ.

es decir. [ \SStop ] Soft Stop Tipo de dato: switch El movimiento del robot se detiene lo antes posible con un paro suave rápido cuando el valor de la señal de búsqueda cambia a activo. [ \Flanks ] Tipo de dato: switch Los bordes positivo y negativo de la señal son válidos para determinar el éxito de una búsqueda. los ejes externos se mueven una distancia pequeña antes de detenerse y no retroceden hasta la posición buscada. hasta la posición en la que cambió la señal. es decir. Sin embargo. hasta la posición en la que cambió la señal. pero no se indica tal error si hay más de una coincidencia de búsqueda (la primera coincidencia de búsqueda se devuelve como SearchJointPos) Signal Tipo de dato: signaldi El nombre de la señal a supervisar. . Si se produce más de una coincidencia durante una búsqueda. es decir. hasta la posición en la que cambió la señal. Si se omite el argumento \Stop. Continúa en la página siguiente 438 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. se genera un error recuperable con las unidades mecánicas en la ToJointPos. [ \PStop ] Path Stop Tipo de dato: switch El movimiento se detiene con un paro en la trayectoria (paro de programa) cuando el valor de la señal de búsqueda cambia a activo. Stop es más rápido en comparación con SStop.Busca con una o varias unidades mecánicas sin TCP Continuación El movimiento del robot se detiene lo antes posible con un paro rígido cuando el valor de la señal de búsqueda cambia a activo. Sin embargo. \SStop o \Sup (no se utiliza ningún modificador): • El movimiento continúa (búsqueda en vuelo) hasta la posición especificada en el argumento ToJointPos (igual que en el argumento \Sup) • Se indica un error cuando hay una coincidencia de búsqueda. [ \Sup ] Supervision Tipo de dato: switch La instrucción de búsqueda es sensible a la activación de señales durante el movimiento completo (búsqueda en vuelo). y más rápido en comparación con PStop. incluso después de que se informa del primer cambio de señal. SStop.1 Instrucciones 1. los ejes externos sólo se mueven una distancia pequeña antes de detenerse y no retroceden hasta la posición buscada. Reservados todos los derechos. es decir.147 SearchExtJ . \PStop. Sin embargo. los ejes externos se mueven una distancia bastante grande antes de deternese y no retroceden hasta la posición buscada.

sólo el borde positivo de la señal es válido para determinar el éxito de una búsqueda y se activa una supervisión de la señal al comenzar un proceso de búsqueda. Se generará un error recuperable por el usuario (ERR_SIGSUPSEARCH) que puede gestionarse en el gestor de errores. Esto significa que si la señal ya tiene el valor positivo al comenzar un proceso de búsqueda o se pierde la comunicación con la señal. Reservados todos los derechos. ToJointPos Tipo de dato: jointtarget El punto de destino de los ejes externos. SearchJointPos Tipo de dato: jointtarget La posición de los ejes externos en el momento del disparo de la señal de búsqueda.147 SearchExtJ . el movimiento del robot se detiene lo antes posible mediante un paro blando.1 Instrucciones 1. . Se generará un error recuperable por el usuario (ERR_SIGSUPSEARCH) que puede gestionarse en el gestor de errores. Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). La posición tiene en cuenta cualquier ExtOffs activo. Continúa en la página siguiente 3HAC16581-5 Revisión: L 439 © Copyright 2004-2011 ABB. el movimiento del robot se detiene lo antes posible mediante un paro blando. Se genera un error recuperable por el usuario (ERR_SIGSUPSEARCH). [ \PosFlank ] Tipo de dato:switch El borde positivo de la señal es válido para determinar el éxito de una búsqueda. el movimiento se detiene lo antes posible con un paro suave. [ \NegFlank ] Tipo de dato:switch El borde positivo de la señal es válido para determinar el éxito de una búsqueda. [ \LowLevel ] Tipo de dato:switch El borde negativo de la señal es válido para determinar el éxito de una búsqueda y se activará la supervisión de señales al inicio del proceso de búsqueda. que puede gestionarse en el gestor de errores. Esto significa que si la señal ya tiene el valor 0 al comenzar un proceso de búsqueda o se pierde la comunicación con la señal. Esto significa que si la señal ya tiene el valor positivo al comenzar un proceso de búsqueda o se pierde la comunicación con la señal. [ \HighLevel ] Tipo de dato:switch La misma funcionalidad que si no usara el modificador \Flanks. SearchExtJ utiliza siempre un punto de paro como dato de zona del destino.Busca con una o varias unidades mecánicas sin TCP Continuación Si se omite el argumento \Flanks. El borde positivo de la señal es válido para determinar el éxito de una búsqueda y se activará la supervisión de señales al inicio del proceso de búsqueda.

El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución. El movimiento termina siempre con un punto de paro. cuando se utiliza el argumento \Sup o no se especifica ningún modificador. Si se realiza una búsqueda con el modificador \Stop. \PStop o \SStop. La instrucción SearchExtJ almacena la posición de los ejes externos cuando el valor de la señal digital cambia al valor solicitado. se activa para la instrucción SearchExtJ cuando se utiliza el argumento UseEOffs. A continuación. el movimiento se detiene cuando se detecta la primera señal.Busca con una o varias unidades mecánicas sin TCP Continuación [ \ID ] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si el movimiento está sincronizado y coordinado y no está permitido en ningún otro caso. Reservados todos los derechos. Ejecución de programas Consulte la instrucción MoveExtJ para obtener más información acerca del movimiento de las unidades mecánicas sin TCP. El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí. lo que implica que los ejes externos se detienen en el punto de destino.147 SearchExtJ . Los datos de velocidad definen la velocidad del eje externo lineal o de rotación. es decir. como se representa en la figura siguiente. se sustituye por los datos de velocidad correspondientes. [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento de las unidades mecánicas. [ \UseEOffs ] Use External Offset Tipo de dato: switch El offset de los ejes externos. Consulte la instrucción EOffsSet para obtener más información acerca del offset externo. configurado por la instrucción EOffsSet.1 Instrucciones 1. Si se realiza una búsqueda en vuelo. . Continúa en la página siguiente 440 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos. el movimiento siempre continúa hacia el punto de destino programado.

Se genera el error ERR_WHLSEARCH sólo si se usó el argumento \Sup. Reservados todos los derechos. Cuando el valor de la señal di1 cambia a activo. Ejemplo 2 SearchExtJ \Stop. La variable de Continúa en la página siguiente 3HAC16581-5 Revisión: L 441 © Copyright 2004-2011 ABB. Si el valor de la señal cambia dos veces.jpos10. la unidad mecánica se mueve hacia la posición jpos20. Cuando el valor de la señal di1 cambia a activo o pasivo. jpos20. • La señal ya tiene un valor positivo al principio del proceso de búsqueda o se pierde la comunicación con la señal. La unidad mecánica se mueve hacia la posición jpos10. se generan errores en los casos siguientes: • Cuando no se detecta ninguna señal. vrot20. La unidad mecánica vuelve a este punto usando un punto de paro definido exactamente. Sin el modificador \Flanks 1 0 tiempo Con el modificador \Flanks 1 0 tiempo = Reacción de la instrucción cuando la señal cambia xx0500002243_es Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción SearchExtJ. fine \Inpos := inpos50. Gestión de errores Durante las búsquedas. se realiza una comprobación de la señal dil y si la señal ya tiene un valor positivo o se pierde la comunicación con el robot. Esto genera el error ERR_SIGSUPSEARCH sólo si se omite el argumento \Flanks. la posición se almacena en sp. di1\Flanks. el movimiento se detiene. MoveExtJ sp. la posición se almacena en searchp.1 Instrucciones 1. vlin50. Los errores pueden gestionarse de formas distintas en función del modo de ejecución seleccionado: • Ejecución continua hacia delante / Instrucciones hacia adelante /ERR_WHLSEARCH: No se devuelve ninguna posición y el movimiento continúa siempre hacia el punto de destino programado. Ejemplo 1 SearchExtJ \Sup. Al comienzo del proceso de búsqueda. searchp. • Cuando se produce la detección de más de una señal. di1. . vlin50. sp.147 SearchExtJ .Busca con una o varias unidades mecánicas sin TCP Continuación La figura muestra cómo se usa la detección de señal disparada por flancos (la posición se almacena sólo cuando la señal cambia por primera vez). el programa genera un error una vez que se completa el proceso de búsqueda. De lo contrario. Se genera el error ERR_WHLSEARCH.

ENDIF ENDIF Si la señal ya está activa al principio del proceso de búsqueda o se pierde la comunicación con la señal. Ejemplo VAR num fk. La variable de sistema ERRNO cambia a ERR_SIGSUPSEARCH y es posible gestionar el error en el gestor de errores de la rutina. StartMove."stEmpty".. ELSEIF ERRNO=ERR_SIGSUPSEARCH THEN TPWrite "The signal of the SearchExtJ instruction is already high!".Busca con una o varias unidades mecánicas sin TCP Continuación sistema ERRNO cambia a ERR_WHLSEARCH y es posible gestionar el error en el gestor de errores de la rutina.. MoveExtJ jpos10. sp."stEmpty". Si no se detecta ninguna señal."NO". di1. MoveExtJ jpos10. SearchExtJ \Stop. ."YES". la ejecución del programa se detiene.)."stEmpty".."Try again after manual reset of signal ?". jpos20.. Continúa en la página siguiente 442 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. TPReadFK fk. ERROR IF ERRNO=ERR_WHLSEARCH THEN StorePath. ClearPath. MoveExtJ jpos10... RestoPath.147 SearchExtJ . Reservados todos los derechos. StartMove. RETRY. RETRY. Si se pone a cero manualmente la señal y se presiona SÍ en la ventana de diálogo del usuario.1 Instrucciones 1. . fine. vrot100. el robot vuelve a la posición jpos10 y lo intenta de nuevo. De lo contrario. ELSE Stop. la instrucción sólo realiza el movimiento pero no realiza la supervisión de señales. vrot5. la unidad mecánica busca desde la posición jpos10 hasta la posición jpos20. Si la señal está desactivada al comienzo del proceso de búsqueda.. RestoPath. IF fk = 1 THEN StorePath. se activa un cuadro de diálogo (TPReadFK . fine. vrot50. fine. ClearPath. la unidad mecánica vuelve a la posición jpos10 y vuelve a intentar la operación. . • Ejecución continua hacia adelante / Instrucciones hacia adelante / ERR_SIGSUPSEARCH: No se devuelve ninguna posición y el movimiento se detiene siempre lo antes posible al principio del movimiento de búsqueda. vrot50. • Instrucción hacia atrás: Durante la ejecución hacia atrás.

SearchC o SearchExtJ en una tarea de programa y en otra instrucción de movimiento de otra tarea de programa.’] [ Signal ’:=’ ] < variable (VAR) of signaldi > [‘\’ Flanks] | [‘\’ PosFlank] | [‘\’ NegFlank] | [‘\’ HighLevel] | [‘\’ LowLevel] ’.Datos de posición de eje en la página 1216 Definición de velocidad speeddata . no es posible almacenar la trayectoria actual con la instrucción StorePath.’ [ ToJointPos’ :=’ ] < expression (IN) of jointtarget > [ ’\’ ID ’:=’ < expression (IN) of identno >]’.’] | [ ’\’ SStop ’. Además de ello.’ Información relacionada Para obtener más información sobre Consulte Movimiento de unidades mecáni. sección Resumen sobre RAPID .1 Instrucciones 1.Busca con una o varias unidades mecánicas sin TCP Continuación Limitaciones Limitaciones de búsqueda con movimiento sincronizado y coordinado: • Si se utiliza SearchL. SearchC o SearchExtJ en todas las tareas de programa implicadas con movimiento sincronizado y coordinado y se generan coincidencias de búsqueda desde la misma señal digital de entrada. sección Principios de movimiento y E/S 3HAC16581-5 Revisión: L 443 © Copyright 2004-2011 ABB. Reservados todos los derechos. Con ello se generan coincidencias de búsqueda de forma sincronizada en todas las instrucciones de búsqueda. • Mientras la búsqueda está activa.RAPID overview. sólo es posible realizar la recuperación en caso de error con TRYNEXT.Recuperación en caso de error Movimiento en general Technical reference manual .’ [ ’\’ UseEOffs’ . sólo es posible usar la búsqueda en vuelo con el modificador \Sup.’] | [ ’\’ Sup ’.’ [ SearchJointPos’ :=’ ] < var or pers (INOUT) of jointtarget > ’.Datos de velocidad en la página 1276 Utilización de gestores de errores Technical reference manual .’] | [ ’\’ PStop ’. • Es posible utilizar todas las funciones de búsqueda si se utilizan instrucciones SearchL.147 SearchExtJ . . Sintaxis SearchExtJ [ ’\’ Stop ’.Mueve una o varias unidades mecánicas cas sin TCP sin TCP en la página 261 Definición de jointtarget jointtarget .’ ] [ Speed ’:=’ ] < expression (IN) of speeddata > [ ’\’ T ’:=’ < expression (IN) of num > ] ’.MoveExtJ .RAPID overview. Cualquier recuperación de error debe ser también la misma en todas las tareas de programa implicadas.

Cuando el valor de la señal cambia al valor solicitado. el robot supervisa una señal digital de entrada. la posición se almacena en sp y el robot se detiene inmediatamente. las unidades de ABB DSQC 651 (AD Combi I/O) y DSQC 652 (Digital I/O) proporcionan tiempos breves. sp. asegúrese de configurar la red correctamente para conseguir las condiciones correctas. Reservados todos los derechos.1 Instrucciones 1. el robot lee inmediatamente la posición actual. p10. probe. Cuando el valor de la señal di1 cambia a activo. v100. El TCP de la sonda probe se mueve linealmente hacia la posición p10. si se cuenta con un sistema MultiMove. p10. Argumentos SearchL [\Stop] | [\PStop] | [\SStop] | [\Sup] Signal [\Flanks] | [\PosFlank] | [\NegFlank] | [\HighLevel] | [\LowLevel] SearchPoint ToPoint [\ID] Speed [\V] | [\T] Tool [\WObj] [\Corr] [ \Stop ] Stiff Stop Continúa en la página siguiente 444 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. no con control de sondeo). en las tareas de movimiento. La forma de hacerlo puede ser distinta de un bus de campo a otro. Si se utiliza DeviceNet. Normalmente. Si se utilizan otros buses de campo. El TCP de la sonda probe se mueve linealmente hacia la posición p10 a una velocidad de v100. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SearchL. Ejemplo 1 SearchL di1. di2. La instrucción SearchL. sp.Realiza una búsqueda lineal usando el robot Utilización SearchL (Search Linear se utiliza para buscar una posición al mover el punto central de la herramienta (TCP) en sentido lineal. Durante el movimiento.148 SearchL . esta instrucción puede usarse cuando la herramienta sostenida por el robot es una sonda para detección de superficies. dado que utilizan el cambio de estado como tipo de conexión.Realiza una búsqueda lineal usando el robot 1. resulta importante configurar el sistema de E/S para reducir al mínimo el tiempo que transcurre desde el establecimiento de la señal física hasta que el sistema obtiene información acerca del valor (utilice la unidad de E/S con control de interrupciones. probe. permite obtener las coordenadas de contorno de un objeto de trabajo. la posición se almacena en sp. . v100.148 SearchL . Ejemplo 2 SearchL \Stop. Al utilizar instrucciones de búsqueda. Cuando el valor de la señal di2 cambia a activo. Consulte también Más ejemplos en la página 448. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o.

Si se produce más de una coincidencia durante una búsqueda. [ \PStop ] Path Stop Tipo de dato: switch El movimiento del robot se detiene lo antes posible. Sin embargo. incluso después de que se informa del primer cambio de señal. se detiene en la dirección de la tangente del movimiento. cuando el robot funciona a una velocidad superior a los 100 mm/s. Sin embargo. a la posición en la que cambió la señal. el robot sólo se mueve una distancia corta antes del paro y no regresa a la posición buscada. se genera un error recuperable con el robot en ToPoint. a la posición en la que cambió la señal. Sin embargo. manteniendo el TCP cerca de la trayectoria o en ésta (paro blando) cuando el valor de la señal de búsqueda cambia a activo. algunos ejes pueden moverse en una dirección impredecible. el robot se mueve cierta distancia antes del paro y no regresa a la posición buscada. es decir. Reservados todos los derechos. .148 SearchL . es decir. ¡AVISO! La detención de la búsqueda con un paro rígido (modificador \Stop) sólo está permitida si la velocidad del TCP es inferior a los 100 mm/s. [ \SStop ] Soft Stop Tipo de dato: switch El movimiento del robot se detiene lo antes posible. manteniendo el TCP en la trayectoria (paro blando) cuando el valor de la señal de búsqueda cambia a activo. el robot se mueve una distancia corta antes del paro y no regresa a la posición buscada. \SStop o \Sup (no se utiliza ningún modificador): • el movimiento continúa (búsqueda en vuelo) hasta la posición especificada en el argumento ToPoint (igual que en el argumento \Sup) Continúa en la página siguiente 3HAC16581-5 Revisión: L 445 © Copyright 2004-2011 ABB. Si se omite el argumento \Stop.Realiza una búsqueda lineal usando el robot Continuación Tipo de dato:switch El movimiento del robot se detiene lo antes posible. [ \Sup ] Supervision Tipo de dato: switch La instrucción de búsqueda es sensible a la activación de señales durante el movimiento completo (búsqueda en vuelo). lo que hace que se deslice marginalmente de la trayectoria.1 Instrucciones 1. SStop resulta más rápido que PStop. es decir. Sin embargo. \PStop. En los paros rígidos a una mayor velocidad. es decir. sin mantener el TCP en la trayectoria (paro rígido) cuando el valor de la señal de búsqueda cambia a activo. a la posición en la que cambió la señal.

el movimiento del robot se detiene lo antes posible. El borde positivo de la señal es válido para determinar el éxito de una búsqueda y se activará la supervisión de señales al inicio del proceso de búsqueda. [ \PosFlank ] Tipo de dato:switch El borde positivo de la señal es válido para determinar el éxito de una búsqueda. [ \NegFlank ] Tipo de dato:switch El borde positivo de la señal es válido para determinar el éxito de una búsqueda. Se genera un error recuperable por el usuario (ERR_SIGSUPSEARCH). Esto significa que si la señal ya tiene el valor positivo al comenzar un proceso de búsqueda o se pierde la comunicación con la señal. Reservados todos los derechos.1 Instrucciones 1. el movimiento del robot se detiene lo antes posible. [ \HighLevel ] Tipo de dato:switch La misma funcionalidad que si no usara el modificador \Flanks. que puede gestionarse en el gestor de errores. Se generará un error recuperable por el usuario (ERR_SIGSUPSEARCH) que puede gestionarse en el gestor de errores.Realiza una búsqueda lineal usando el robot Continuación • Se indica un error cuando no existe ninguna coincidencia de búsqueda. Continúa en la página siguiente 446 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. manteniendo el TCP en la trayectoria (paro blando). Se generará un error recuperable por el usuario (ERR_SIGSUPSEARCH) que puede gestionarse en el gestor de errores. sólo el borde positivo de la señal es válido para determinar el éxito de una búsqueda y se activa una supervisión de la señal al comenzar un proceso de búsqueda. . Si se omite el argumento \Flanks. Esto significa que si la señal ya tiene el valor 0 al comenzar un proceso de búsqueda o se pierde la comunicación con la señal. manteniendo el TCP en la trayectoria (paro blando). el movimiento del robot se detiene lo antes posible.148 SearchL . manteniendo el TCP en la trayectoria (paro blando). [ \Flanks ] Tipo de dato:switch Los bordes positivo y negativo de la señal son válidos para determinar el éxito de una búsqueda. [ \LowLevel ] Tipo de dato:switch El borde negativo de la señal es válido para determinar el éxito de una búsqueda y se activará la supervisión de señales al inicio del proceso de búsqueda. pero no se indica tal error si hay más de una coincidencia de búsqueda (la primera coincidencia de búsqueda se devuelve como SearchPoint) Signal Tipo de dato: signaldi El nombre de la señal a supervisar. Esto significa que si la señal ya tiene el valor positivo al comenzar un proceso de búsqueda o se pierde la comunicación con la señal.

La posición se especifica en el sistema de coordenadas más externo.148 SearchL . especificada en los datos de velocidad. Continúa en la página siguiente 3HAC16581-5 Revisión: L 447 © Copyright 2004-2011 ABB. ToPoint Tipo de dato: robtarget El punto de destino de los ejes del robot y de los ejes externos. [ \T ] Time Tipo de dato: num Este argumento se utiliza para especificar el tiempo total en segundos que dura el movimiento del robot. SearchL utiliza siempre un punto de paro como dato de zona del destino. [ \V ] Velocity Tipo de dato: num Este argumento se utiliza para especificar la velocidad del TCP en mm/s directamente en la instrucción.Realiza una búsqueda lineal usando el robot Continuación SearchPoint Tipo de dato: robtarget La posición del TCP y de los ejes externos en el momento del disparo de la señal de búsqueda. ProgDisp/ExtOffs activo. Speed Tipo de dato: speeddata Los datos de velocidad que se aplican a los movimientos. A continuación. A continuación. Herramienta Tipo de dato: tooldata La herramienta en uso durante el movimiento del robot. . los ejes externos y la reorientación de la herramienta. Reservados todos los derechos.1 Instrucciones 1. Los datos de velocidad definen la velocidad del punto central de la herramienta. se sustituye por los datos de velocidad correspondientes. [ \ID ] Synchronization id Tipo de dato: identno Este argumento debe utilizarse en los sistemas MultiMove si se trata de un movimiento sincronizado y coordinado y no está permitido en ningún otro caso. Se define como una posición con nombre o se almacena directamente en la instrucción (marcada con un asterisco * en la instrucción). El número de ID especificado debe ser el mismo en todas las tareas de programa que cooperan entre sí. El punto central de la herramienta es el punto que se mueve hacia la posición de destino especificada. se sustituye por la velocidad correspondiente. El número de ID constituye una garantía de que los movimientos no se mezclen en tiempo de ejecución.

Sin el modificador \Flanks 1 0 tiempo Con el modificador \Flanks 1 0 tiempo = Reacción de la instrucción cuando la señal cambia xx0500002243_es Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción SearchL. Si se omite. . sp. La instrucción SearchL almacena la posición del TCP cuando el valor de la señal digital cambia al valor solicitado. lo que implica que el robot se detiene en el punto de destino. v100. di1\Flanks. Si se realiza una búsqueda con el modificador \Stop.148 SearchL . es necesario especificar este argumento para ejecutar un movimiento lineal respecto del objeto de trabajo. Es posible omitir este argumento. p10. Si se realiza una búsqueda en vuelo. el movimiento del robot se detiene cuando se detecta la primera señal. el movimiento del robot continúa siempre hacia el punto de destino programado.1 Instrucciones 1. Reservados todos los derechos. \PStop o \SStop. como se representa en la figura siguiente. [ \Corr ] Correction Tipo de dato: switch Los datos de corrección escritos en una entrada de corrección mediante una instrucción CorrWrite se añaden a la trayectoria y a la posición de destino si se utiliza este argumento. la posición depende del sistema de coordenadas mundo. El movimiento termina siempre con un punto de paro. Continúa en la página siguiente 448 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Ejemplo 1 SearchL \Sup. La figura muestra cómo se usa la detección de señal disparada por flancos (la posición se almacena sólo cuando la señal cambia por primera vez). es decir. Ejecución de programas Consulte la instrucción MoveL para obtener más información acerca del movimiento lineal. cuando se utiliza el argumento \Sup o no se especifica ningún modificador.Realiza una búsqueda lineal usando el robot Continuación [ \WObj ] Work Object Tipo de dato: wobjdata El objeto de trabajo (sistema de coordenadas) con el que está relacionada la posición de robot indicada en la instrucción. probe. Si por otro lado se usa un TCP estacionario o ejes externos coordinados.

Usando un desplazamiento de programa.Realiza una búsqueda lineal usando el robot Continuación El TCP de la sonda probe se mueve linealmente hacia la posición p10. z10. z10. sp. Punto de inicio con datos de zona fine Punto de inicio con datos de zona z10 Objeto buscado Punto final xx0500002244_es La figura siguiente muestra que no se ha detectado ningún éxito de búsqueda porque se usaron datos de zona erróneos. z10. v100. v100. la posición se almacena en sp. cuando la señal de E/S está preparada para reaccionar. En la figura siguiente se muestra cómo se encuentra una posición en el lado incorrecto del objeto a causa del uso de datos de zona incorrectos. Reservados todos los derechos. Punto de inicio con datos de zona fine Punto de inicio con datos de zona z10 Objeto buscado Punto final xx0500002245_es Continúa en la página siguiente 3HAC16581-5 Revisión: L 449 © Copyright 2004-2011 ABB. Cuando el valor de la señal di1 cambia a activo o pasivo. Al comienzo del proceso de búsqueda. De lo contrario. MoveL p120. fine \Inpos := inpos50. el robot se detiene. la posición se almacena en sp.148 SearchL . sino un punto que se encuentra en la trayectoria real del robot. tool1.1 Instrucciones 1. tool1. tool1. v100. El robot vuelve a este punto usando un punto de paro definido exactamente. el TCP de tool1 se mueve linealmente hacia la posición p10. di1. no es en este caso el punto de destino de la instrucción de posicionamiento anterior. . PDispOff. El comienzo de la búsqueda. MoveL p100. Si el valor de la señal cambia dos veces. es decir. Cuando el valor de la señal di1 cambia a activo. tool1. el programa genera un error una vez que se completa el proceso de búsqueda. Limitaciones Los datos de zona de la instrucción de posicionamiento que precede a SearchL deben usarse con cuidado. se realiza una comprobación de la señal di1 y si la señal ya tiene un valor positivo o se pierde la comunicación con el robot. MoveL sp. v100. PDispOn *. tool1. En las figuras siguientes se muestran ejemplos de cosas que pueden salir mal cuando se usan datos de zona distintos de fine. el robot se mueve a continuación respecto de la posición buscada. sp. tool1. p10. v100. Ejemplo 2 SearchL \Stop. MoveL p110.

SearchC o SearchExtJ en todas las tareas de programa implicadas con movimiento sincronizado y coordinado y se genera una coincidencia de búsqueda desde la misma señal digital de entrada. Cualquier recuperación de error debe ser también la misma en todas las tareas de programa implicadas.1 Instrucciones 1. Además de ello. Reservados todos los derechos. de 4 a 8 mm Limitaciones de la búsqueda en un transportador: • la búsqueda detiene el robot en caso de coincidencia o si la búsqueda no tiene éxito. Con ello se genera una coincidencia de búsqueda de forma sincronizada en todas las instrucciones de búsqueda. Continúa en la página siguiente 450 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Gestión de errores Durante las búsquedas. SearchC o SearchExtJ en una tarea de programa y en otra instrucción de movimiento de otra tarea de programa. se generan errores en los casos siguientes: • Cuando no se detecta ninguna señal.Realiza una búsqueda lineal usando el robot Continuación La figura siguiente muestra que no se ha detectado ningún éxito de búsqueda porque se usaron datos de zona erróneos. de 15 a 25 mm • Con el TCP cerca de la trayectoria (modificador \SStop).3 mm. Punto de inicio con datos de zona fine Punto de inicio con datos de zona z10 Objeto buscado Punto final xx0500002246_es Limitaciones de búsqueda con movimiento sincronizado y coordinado: • Si se utiliza SearchL.000 mm/s de 0. Utilice la gestión de errores para el movimiento hasta una posición segura si la búsqueda no tiene éxito. no se permite almacenar la trayectoria actual con la instrucción StorePath. • Es posible utilizar toda la funcionalidad de búsqueda si se utilizan instrucciones SearchL. • la exactitud de repetición de la posición de coincidencia de búsqueda será menor al buscar en un transportador y depende de la velocidad del transportador y de hasta qué punto esta velocidad es estable. Se genera el error ERR_WHLSEARCH. de forma que la búsqueda debe hacerse en el mismo sentido que el del movimiento del transportador y después del paro de búsqueda debe ir seguida de un movimiento hasta una posición segura. Exactitud de repetición para la posición de coincidencia de búsqueda con una velocidad de 20 a 1. Mientras la búsqueda está activa. . Distancia de paro típica con una velocidad de búsqueda de 50 mm/s: • Sin el TCP en la trayectoria (modificador \Stop). sólo es posible usar la búsqueda en vuelo con el modificador \Sup. sólo es posible realizar la recuperación en caso de error con TRYNEXT. de 1 a 3 mm • Con el TCP en la trayectoria (modificador \PStop).148 SearchL .1 a 0.

La variable de sistema ERRNO cambia a ERR_SIGSUPSEARCH y es posible gestionar el error en el gestor de errores de la rutina.1 Instrucciones 1. la instrucción realiza el movimiento pero no realiza la supervisión de señales. Los errores pueden gestionarse de formas distintas en función del modo de ejecución seleccionado: • Ejecución continua hacia delante / Instrucciones hacia adelante /ERR_WHLSEARCH: No se devuelve ninguna posición y el movimiento continúa siempre hacia el punto de destino programado. Reservados todos los derechos.Realiza una búsqueda lineal usando el robot Continuación • Cuando se produce la detección de más de una señal. • Instrucción hacia atrás: Durante la ejecución hacia atrás. Continúa en la página siguiente 3HAC16581-5 Revisión: L 451 © Copyright 2004-2011 ABB.148 SearchL . Esto genera el error ERR_SIGSUPSEARCH sólo si se omite el argumento \Flanks. • Ejecución continua hacia adelante / Instrucción hacia adelante / ERR_SIGSUPSEARCH No se devuelve ninguna posición y el movimiento se detiene siempre lo antes posible al principio de la trayectoria de búsqueda. Se genera el error ERR_WHLSEARCH sólo si se usó el argumento \Sup. . • La señal ya tiene un valor positivo al principio del proceso de búsqueda o se pierde la comunicación con la señal. La variable de sistema ERRNO cambia a ERR_WHLSEARCH y es posible gestionar el error en el gestor de errores de la rutina.

tool1. Continúa en la página siguiente 452 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. el robot busca desde la posición p10 hasta la posición p20. tool1. fine.Realiza una búsqueda lineal usando el robot Continuación Ejemplo VAR num fk..).."YES".1 Instrucciones 1. . RestoPath."stEmpty". IF fk = 1 THEN StorePath. Reservados todos los derechos.. MoveL p10. tool1.. ENDIF ENDIF Si la señal ya está activa al principio del proceso de búsqueda o se pierde la comunicación con la señal. TPReadFK fk. ELSEIF ERRNO=ERR_SIGSUPSEARCH THEN TPWrite "The signal of the SearchL instruction is already high!". ELSE Stop. Si la señal está desactivada al comienzo del proceso de búsqueda. MoveL p10. Si se pone a cero manualmente la señal y se presiona SÍ en la ventana de diálogo del usuario. RestoPath. sp. fine. se activa un cuadro de diálogo (TPReadFK .. RETRY.. MoveL p10. .148 SearchL ."Try again after manual reset of signal ?". ClearPath. di1."stEmpty". ClearPath. v100. fine. Si no se detecta ninguna señal. SearchL \Stop.. v100. StartMove. v100. De lo contrario. . RETRY. el robot vuelve a la posición p10 y vuelve a intentar la operación."NO". v100. la ejecución del programa se detiene."stEmpty". tool1. el robot vuelve a la posición p10 y lo intenta de nuevo. p20. StartMove. ERROR IF ERRNO=ERR_WHLSEARCH THEN StorePath.

’] [ Signal ’:=’ ] < variable (VAR) of signaldi > [‘\’ Flanks] | [‘\’ PosFlank] | [‘\’ NegFlank] | [‘\’ HighLevel] | [‘\’ LowLevel] ’.’ [ SearchPoint’ :=’ ] < var or pers (INOUT) of robtarget > ’. sección Principios de movimiento y E/S .Datos del objeto de trabajo en la página 1323 Utilización de gestores de errores Technical reference manual .Mueve el robot siguiendo una trayectoria lineal en la página 278 Movimiento lineal Technical reference manual .Realiza una búsqueda en círculo usando el robot en la página 428 Escritura en una entrada de correc. Reservados todos los derechos.Datos de velocidad en la página 1276 Definición de herramientas tooldata . sección Principios de movimiento y E/S 3HAC16581-5 Revisión: L 453 © Copyright 2004-2011 ABB.Escribe en un generador de correcciones ción en la página 81 Movimiento lineal del robot MoveL .148 SearchL .Realiza una búsqueda lineal usando el robot Continuación Sintaxis SearchL [ ’\’ Stop ’.Posicionamiento durante la ejecución del programa Definición de velocidad speeddata .’] | [ ’\’ Sup ’.’ Información relacionada Para obtener más información sobre Consulte Búsquedas circulares SearchC .’ [ Tool ´:=´ ] < persistent (PERS) of tooldata > [ ’\’ WObj’ :=’ < persistent (PERS) of wobjdata > ] [ ’\’ Corr ]’.Datos de herramientas en la página 1301 Definición de objetos de trabajo wobjdata .’ [ Speed ’:=’ ] < expression (IN) of speeddata > [ ’\’ V ’:=’ < expression (IN) of num > ] | [ ’\’ T ’:=’ < expression (IN) of num > ] ’.RAPID overview. sección Resumen sobre RAPID . .’ [ ToPoint’ :=’ ] < expression (IN) of robtarget > [ ’\’ ID ’:=’ < expression (IN) of identno >]’.’] | [ ’\’ PStop ’.CorrWrite .’] | [ ’\’ SStop ’.Recuperación en caso de error Movimiento en general Technical reference manual .1 Instrucciones 1.RAPID overview.RAPID overview.

z := ReadVar "sen1:".1 Instrucciones 1. ! Read a cartesian position from the sensor. Continúa en la página siguiente 454 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. SensorOn. La interfaz de sensores se comunica con los sensores a través de canales serie.y := ReadVar "sen1:".Establece una conexión a un dispositivo de sensor 1. VAR pos SensorPos. Reservados todos los derechos. Argumentos SenDevice device device Tipo de dato: string El nombre del dispositivo de E/S configurado en sio. ! Connect to the sensor device“ sen1:” (defined in sio. SenDevice "sen1:". YCoord. ! Stop sensor WriteVar "sen1:". COM_PHY_CHANNEL: • Name “COM1:” • Connector “COM1” • Baudrate 19200 COM_TRP: • Name “sen1:” • Type “RTP1” • PhyChannel “COM1” Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SenDevice. SensorPos. Ejemplo 1 ! Define variable numbers CONST num SensorOn := 6. XCoord. CONST num YCoord := 9. SensorPos. utilizando el protocolo de transporte RTP1. 0.149 SenDevice .Establece una conexión a un dispositivo de sensor Utilización SenDevice se utiliza para conectarse a un dispositivo de sensor conectado a la interfaz de sensores serie.149 SenDevice . SensorPos.cfg para el sensor utilizado. 1. ZCoord.cfg). SensorOn. CONST num ZCoord := 10. ! Request start of sensor meassurements WriteVar "sen1:". CONST num XCoord := 8. . Éste es un ejemplo de configuración de un canal de sensor.x := ReadVar "sen1:".

Escribe un bloque de datos en un dispositivo de sensor en la página 766 Configuración de la comunica.Manual de referencia técnica .Escribe una variable en la página 777 Lectura de una variable de sen.’ [ FileName’ :=’ ] < expression (IN) of string > ‘. ción del sensor sección Communication 3HAC16581-5 Revisión: L 455 © Copyright 2004-2011 ABB.Parámetros del sistema. Reservados todos los derechos.149 SenDevice .Establece una conexión a un dispositivo de sensor Continuación Sintaxis ReadBlock [ device‘ :=’ ] < expression(IN) of string>’. .1 Instrucciones 1.ReadVar .’ [ BlockNo’ :=’ ] < expression (IN) of num > ‘.Lee una variable de un dispositivo en la págisor na 1030 Escritura de un bloque de datos WriteBlock .’ Información relacionada Para obtener más información Consulte sobre Escritura de una variable de sensor WriteVar .

1 Instrucciones 1. La variable de sistema ERRNO cambia a: ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S.’ Información relacionada Para obtener más información sobre Consulte Cambio de una señal digital de salida a cero Reset . Ejemplo 2 Set weldon. . Sintaxis Set [ Signal ’:=’ ] < variable (VAR) of signaldo > ’. Si no desea que continúe la ejecución del programa hasta que la señal tenga su nuevo valor.Activa una señal digital de salida Utilización Set se utiliza para cambiar a 1 una señal digital de salida. esta instrucción hace que el canal físico cambie a cero. El valor real depende de la configuración de la señal. Reservados todos los derechos. Argumentos Set Signal Signal Tipo de dato: signaldo El nombre de la señal que se desea cambiar a uno. Ejemplo 1 Set do15. Gestión de errores Pueden generarse los errores recuperables siguientes.Activa una señal digital de salida 1.Pone a cero una señal digital de salida en la página 382 Cambio del valor de una señal digital de SetDO . Ejecución de programas Existe un pequeño retardo antes de que la señal cambie físicamente al nuevo valor.150 Set . Si la señal está invertida en los parámetros del sistema. El error puede ser gestionado en un gestor de errores. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción Set. Se cambia la señal weldon a 1. puede usar la instrucción SetDO con el parámetro opcional \Sync. Se cambia la señal do15 a 1.150 Set .Cambia el valor de una señal digital de salida salida en la página 469 Continúa en la página siguiente 456 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.

Parámetros del sistema 3HAC16581-5 Revisión: L 457 © Copyright 2004-2011 ABB.Activa una señal digital de salida Continuación Para obtener más información sobre Consulte Instrucciones de entrada/salida Technical reference manual .RAPID overview.Technical reference manual .Principios de E/S Configuración de E/S Manual de referencia técnica . Reservados todos los derechos.1 Instrucciones 1.Señales de entrada y salida Funcionalidad de entrada/salida en gene.150 Set . sección Resumen sobre RAPID .RAPID overview. ral sección Principios de movimiento y E/S . .

Reservados todos los derechos. VAR mydata mydata0:=0.. El tipo de dato definido por el usuario mydata se define en el módulo mytypes. Argumentos SetAllDataVal Type [\TypeMod] [\Object] [\Hidden] Value Type Tipo de dato: string El nombre del tipo de objetos de datos cuyo valor se desea establecer. Esta instrucción cambia el valor de todos los objetos de datos del tipo de dato mydata que haya en el sistema al mismo valor que tenga la variable mydata0 (en el ejemplo.151 SetAllDataVal . Value Tipo de dato: anytype Continúa en la página siguiente 458 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.1 Instrucciones 1. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SetAllDataVal. SetAllDataVal "mydata"\TypeMod:="mytypes"\Hidden. si se utilizan tipos de datos definidos por el usuario.Establece un valor en todos los objetos de datos de un conjunto definido Utilización SetAllDataVal(Set All Data Value permite establecer un nuevo valor en todos los objetos de datos de un tipo determinado y que coincidan con la gramática determinada. . [ \TypeMod ] Módulo de tipo Tipo de dato: string El nombre del módulo en el que está definido el tipo de dato.. se trata del valor 0). [ \Object ] Tipo de dato: string El comportamiento predeterminado es cambiar el valor de todos los objetos de datos del tipo de datos indicado anteriormente.151 SetAllDataVal . (Consulte también la instrucción SetDataSearch) [ \Hidden ] Tipo de dato: switch También afecta a los objetos de datos que se encuentren en las rutinas (datos o parámetros de rutina) que queden ocultas por otras rutinas en la cadena de llamadas. .Establece un valor en todos los objetos de datos de un conjunto definido 1.mydata0. pero esta opción permite indicar el nombre de uno o varios objetos con una expresión regular.

151 SetAllDataVal .Inclusión de un bloque para un objeto de dapos tos en la página 1187 3HAC16581-5 Revisión: L 459 © Copyright 2004-2011 ABB.Establece el valor de un objeto de datos de datos en la página 466 El tipo de datos relacionado data.SetDataSearch .1 Instrucciones 1. Por ejemplo. no es posible buscar el tipo de dato asociado.Definir el conjunto de símbolos de una bolos en una sesión de búsqueda secuencia de búsqueda en la página 462 Obtención del siguiente símbolo coincidente GetNextSym . no existen coincidencias de búsqueda para la señal signaldi y si se busca num.Obtiene el siguiente símbolo coincidente en la página 917 Obtención del valor de un objeto GetDataVal . Ejecución de programas La instrucción fallará si la especificación de Type o TypeMod es incorrecta. Reservados todos los derechos.Establece un valor en todos los objetos de datos de un conjunto definido Continuación Una variable que contiene el nuevo valor que se desea establecer. si se busca dionum. no existen coincidencias de búsqueda para las señales signalgi ni signalai. Sintaxis SetAllDataVal [ Type ’:=’ ] < expression (IN) of string > [’\’TypeMod’ :=’<expression (IN) of string>] [’\’Object’ :=’<expression (IN) of string>] [’\’Hidden ] ’.’ Información relacionada Para obtener más información sobre Consulte Definición de un conjunto de sím. todos los elementos de la matriz se cambian al valor especificado. la instrucción lo aceptará y retornará sin generar errores. El tipo de dato debe ser el mismo que el tipo de dato del objeto cuyo valor se desea establecer. Limitaciones En el caso de los tipos de datos de semivalor. No es posible asignar un valor a una variable declarada como LOCAL en un módulo de RAPID incorporado. .datapos . Si el objeto de datos coincidente es un dato de sólo lectura.Obtiene el valor de un objeto de datos en de datos la página 115 Asignación del valor de un objeto SetDataVal . Si el sistema no tiene ningún objeto de dato coincidente.’ [ Value ’:=’] <variable (VAR) of anytype>’. Si el objeto de datos coincidente es una matriz. el valor no se cambia.

xx0500002408_en Gestión de errores Pueden generarse los errores recuperables siguientes.1 Instrucciones 1. Ejecución de programas Al valor programado se le aplica una escala (acorde con los parámetros del sistema) antes de enviarlo al canal físico. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SetAO. Ejemplo 1 SetAO ao2. .152 SetAO .5.Cambia el valor de una señal analógica de salida 1. Value Tipo de dato: num El valor deseado para la señal. En la figura siguiente se muestra un diagrama de cómo se ajustan los valores de las señales analógicas a una escala. La variable de sistema ERRNO cambia a: Continúa en la página siguiente 460 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos. Consulte también Más ejemplos en la página 461. El error puede ser gestionado en un gestor de errores. Argumentos SetAO Signal Value Signal Tipo de dato: signalao El nombre de la señal analógica de salida que debe cambiar de valor.5.Cambia el valor de una señal analógica de salida Utilización SetAO se utiliza para cambiar el valor de una señal analógica de salida. 5.152 SetAO . Se cambia la señal ao2 a 5.

curr_outp.Principios de E/S Configuración de E/S Manual de referencia técnica .Parámetros del sistema 3HAC16581-5 Revisión: L 461 © Copyright 2004-2011 ABB. secgeneral ción Principios de movimiento y E/S . Se asigna a la señal weldcurr el mismo valor que el valor actual de la variable curr_outp.152 SetAO . Más ejemplos A continuación aparecen más ejemplos de la instrucción SetAO.Señales de entrada y salida Funcionalidad de entrada/salida en Technical reference manual . ERR_AO_LIM si el argumento programado Value para la señal analógica de salida especificada Signal está fuera de límites.RAPID overview. Reservados todos los derechos.’ Información relacionada Para obtener más información so. Sintaxis SetAO [ Signal ’:=’ ] < variable (VAR) of signalao > ’. sección Resumen sobre RAPID .Cambia el valor de una señal analógica de salida Continuación ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S.’ [ Value ’:=’ ] < expression (IN) of num > ’.Consulte bre Instrucciones de entrada/salida Technical reference manual . Ejemplo 1 SetAO weldcurr.1 Instrucciones 1.RAPID overview. .

Reservados todos los derechos. Continúa en la página siguiente 462 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Argumentos SetDataSearch Type [\TypeMod] [\Object] [\PersSym] [\VarSym][\ConstSym] [\InTask] | [\InMod] [\InRout][\GlobalSym] | [\LocalSym] Type Tipo de dato: string El nombre del tipo de dato de los objetos de datos que se desea obtener. Ejemplo 1 VAR datapos block.153 SetDataSearch .Definir el conjunto de símbolos de una secuencia de búsqueda 1. .153 SetDataSearch . SetDataSearch "robtarget"\InTask. Esta cadena puede componerse de caracteres normales y metacaracteres. Es posible comprobar si una cadena coincide totalmente con un patrón especificado o buscar dentro de una cadena para encontrar una subcadena que coincide con un patrón especificado.Definir el conjunto de símbolos de una secuencia de búsqueda Utilización SetDataSearch se utiliza junto con la función GetNextSym para obtener objetos de datos del sistema. pero esta opción permite indicar el nombre de uno o varios objetos con una expresión regular. Las expresiones regulares constituyen un potente mecanismo que permite especificar una expresión gramática de coincidencia con los nombres de los objetos de datos... [ \Object ] Tipo de dato: string El comportamiento predeterminado es cambiar el valor de todos los objetos de datos del tipo de datos indicado anteriormente. WHILE GetNextSym(name. . Los metacaracteres son operadores especiales utilizados para representar a uno o varios caracteres normales en la cadena.. Esta sesión encontrará todos los objetos de tipo robtarget de la tarea. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SetDataSearch. si se utilizan tipos de datos definidos por el usuario.. VAR string name. con el fin de ampliar la búsqueda.block \Recursive) DO .1 Instrucciones 1. [ \TypeMod ] Type Module Tipo de dato: string El nombre del módulo en el que está definido el tipo de dato.

Si no se especifica ninguno de los modificadores \InTask o \InMod . El nivel de sistema es la raíz de todas las demás definiciones de símbolos del árbol de símbolos. Esto significa que el patrón "abc" sólo coincidirá con un objeto de datos llamado "abc". . Cualquier carácter individual. pero si se especifica uno o varios de los modificadores PersSym.Definir el conjunto de símbolos de una secuencia de búsqueda Continuación Dentro de una expresión regular. junto con el manejador del nivel de módulos. es necesario añadir algunos metacaracteres.153 SetDataSearch . Para encontrar todos los nombres de objetos de dato que contienen la secuencia de caracteres "abc". [^s] Cualquier carácter individual no perteneciente al conjunto s. . En el nivel de tarea se encuentran todos los símbolos globales cargados. r* Cero o más casos de la expresión regular r. r? Cero o un caso de la expresión regular r. donde s es una secuencia de caracteres. El conjunto de metacaracteres disponibles se muestra a continuación. Continúa en la página siguiente 3HAC16581-5 Revisión: L 463 © Copyright 2004-2011 ABB. Se utiliza para separar una expresión regular de otra. Los rangos pueden especificarse como c-c. En el nivel de sistema se encuentran todos los símbolos incorporados. todos los caracteres alfanuméricos coinciden consigo mismos. La expresión regular para hacerlo es ".*". [s] Cualquier carácter individual del conjunto no vacío s. r | r’ Las expresiones regulares r o r'. Reservados todos los derechos. uno o varios caracteres). la búsqueda comienza en el nivel de sistema. El comportamiento predeterminado es aceptar todos los símbolos.1 Instrucciones 1.* Cualquier secuencia de caracteres (cero. VarSym o ConstSym sólo se aceptan los símbolos que coincidan con la especificación: [ \PersSym ] Persistent Symbols Tipo de dato: switch Acepta símbolos de variables persistentes (PERS). r+ Uno varios casos de la expresión regular r. [ \ConstSym ] Constant Symbols Tipo de dato: switch Acepta símbolos de constantes (CONST). (r) La expresión regular r. [ \VarSym ] Variable Symbols Tipo de dato: switch Acepta símbolos de variables (VAR).*abc. junto con el manejador del nivel de tareas. Expresión Significado .

InMod o InRout es incorrecta. la sesión de búsqueda incluirá todos los módulos y rutinas situadas debajo del nivel del sistema. Reservados todos los derechos. TypeMod. El comportamiento predeterminado es encontrar tanto los símbolos de módulo locales como los globales.1 Instrucciones 1. Continúa en la página siguiente 464 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. [ \InMod ] In Module Tipo de dato: string Inicia la búsqueda en el nivel de módulo especificado. Si se indica el modificador \Recursive en GetNextSym. [ \InRout ] In Routine Tipo de dato: string Sólo busca en el nivel de rutina especificado. la sesión de búsqueda incluirá todas las rutinas cargadas situadas debajo del nivel de módulo especificado (es decir. [ \LocalSym ] Local Symbols Tipo de dato: switch Omite los símbolos globales del módulo. pero si se especifica uno de los modificadores \GlobalSym o \LocalSym sólo se aceptan los símbolos que coincidan con la especificación: [ \GlobalSym ] Global Symbols Tipo de dato: switch Omite los símbolos locales del módulo. El nombre del módulo en el que se encuentra la rutina debe especificarse en el argumento \InMod.Definir el conjunto de símbolos de una secuencia de búsqueda Continuación Si se indica el modificador \Recursive en GetNextSym. junto con el manejador del nivel de rutinas. Ejecución de programas La instrucción fallará si la especificación de uno de Type. declaradas en el módulo especificado). En el nivel de módulo se encuentran todos los símbolos globales y locales cargados y declarados en el módulo especificado. .153 SetDataSearch . la sesión de búsqueda incluirá todos los módulos y rutinas situadas debajo del nivel de tarea. [ \InTask ] In Task Tipo de dato: switch Inicia la búsqueda en el nivel de tarea. Si se indica el modificador \Recursive en GetNextSym. junto con el manejador del nivel de módulos. En el nivel de tarea se encuentran todos los símbolos globales cargados.

Sintaxis SetDataSearch [ Type ’:=’ ] < expression (IN) of string > [’\’TypeMod ’:=’<expression (IN) of string>] [’\’Object ’:=’<expression (IN) of string>] [’\’PersSym ] [’\’VarSym ] [’\’ConstSym ] [’\’InTask ] | [’\’InMod’ :=’<expression (IN) of string>] [’\’InRout ’:=’<expression (IN) of string>] [’\’GlobalSym ] | [’\’LocalSym]’ . si se busca dionum. En el caso de los tipos de datos de semivalor.’ Información relacionada Para obtener más información so. Los símbolos incorporados instalados que hayan sido declarados como globales o como TASK siempre se encontrarán.SetAllDataVal .153 SetDataSearch . . la instrucción lo aceptará y retornará sin generar errores.Consulte bre Obtención del siguiente símbolo coincidente GetNextSym .Definir el conjunto de símbolos de una secuencia de búsqueda Continuación Si el sistema no tiene ningún objeto de dato coincidente. Limitaciones Los objetos de datos de matriz no pueden definirse en el conjunto de búsqueda de símbolos y no pueden encontrarse en una secuencia de búsqueda.Establece un valor en todos los objetos tos de datos de datos de un conjunto definido en la página 458 El tipo de datos relacionado datapos datapos .1 Instrucciones 1. \LocalSym o de ninguno de ellos. No hay ninguna limitación para el tipo de dato de ALIAS predefinido.Inclusión de un bloque para un objeto de datos en la página 1187 3HAC16581-5 Revisión: L 465 © Copyright 2004-2011 ABB. No es posible usar SetDataSearch para buscar datos de algún tipo de dato de ALIAS definido con código de RAPID. Los símbolos incorporados instalados que hayan sido declarados como LOCAL no se encontrarán en ningún caso. no es posible buscar el tipo de dato asociado. no existen coincidencias de búsqueda para la señal signaldi y si se busca num. Por ejemplo.Obtiene el valor de un objeto de datos datos en la página 115 Asignación del valor de varios obje. pero la primera instrucción GetNextSym retornará FALSE. \LocalSym o de ninguno de ellos.Obtiene el siguiente símbolo coincidente en la página 917 Obtención del valor de un objeto de GetDataVal . independientemente del uso del argumento \GlobalSym. Reservados todos los derechos. independientemente del uso del argumento \GlobalSym. no existen coincidencias de búsqueda para las señales signalgi ni signalai.

... Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SetDataVal.truevar. Ejemplo 2 VAR datapos block.value. test1 y test2. VAR bool truevar:=TRUE. SetDataVal "StringArrVar"..Establece el valor de un objeto de datos Utilización SetDataVal (Set Data Value) permite establecer el valor de un objeto de datos que se especifica mediante una variable de cadena de caracteres.154 SetDataVal . StringArrVar_copy.. SetDataVal "reg"+ValToStr(ReadNum(mycom)). se establece el valor del objeto de datos visible en el ámbito de ejecución actual del programa. Si se omite el argumento. . Con esta instrucción se establece el valor 3 en un registro cuyo número se recibe a través del canal serie mycom. Sólo es posible realizar la obtención con la función GetNextSym. Reservados todos los derechos. . Ejemplo 3 VAR string StringArrVar_copy{2}.*" \InMod:="mymod"\LocalSym.154 SetDataVal . [ \Block ] Tipo de dato: datapos El bloque que contiene el objeto de datos. Ejemplo 1 VAR num value:=3.Establece el valor de un objeto de datos 1. StringArrVar_copy{2} := "test2".block) DO SetDataVal name\Block:=block. Continúa en la página siguiente 466 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Argumentos SetDataVal Object [\Block]|[\TaskRef]|[\TaskName] Value Object Tipo de dato: string El nombre del objeto de datos.1 Instrucciones 1.. StringArrVar_copy{1} := "test1". WHILE GetNextSym(name. Esta sesión definirá la matriz StringArrVar para que contenga dos cadenas. ENDWHILE Esta sesión cambia a TRUE todos los objetos locales de tipo bool cuyo nombre comience con my en el módulo mymod. SetDataSearch "bool" \Object:="my.. .

El error puede ser gestionado en el gestor de errores de la rutina. Si se busca num. Existen variables predefinidas con el tipo de dato taskid para todas las tareas de programa del sistema.Establece el valor de un objeto de datos Continuación [\TaskRef] Task Reference Tipo de dato: taskid La identidad de tarea de programa en la que se buscará el objeto de datos especificado. puede buscar declaraciones PERS o TASKPERS en otras tareas. • Buscar en otras tareas declaraciones distintas de PERS o TASKPERS Con ayuda de los argumentos TaskRef o TaskName. El valor establecido debe ser capturado de una variable. no es posible buscar por el tipo de dato asociado al valor.154 SetDataVal . Por ejemplo. si se busca dionum. Limitaciones En el caso de los tipos de datos de semivalor. Continúa en la página siguiente 3HAC16581-5 Revisión: L 467 © Copyright 2004-2011 ABB. Por ejemplo. Value Tipo de dato: anytype Una variable que contiene el nuevo valor que se desea establecer. Cualquier otra declaración dará lugar a un error. no se obtendrá ninguna coincidencia de búsqueda con las señales signalgi o signalai. • Si el objeto de datos es un dato o un parámetro de rutina y no está situado en la rutina activa actualmente. para la tarea T_ROB1 la identificación de la tarea es T_ROB1Id. Gestión de errores La variable de sistema ERRNO cambia a ERR_SYM_ACCESS si: • El objeto de datos no existe. Con ayuda de este argumento.1 Instrucciones 1. puede buscar declaraciones PERS o TASKPERS en otras tareas. pero puede almacenarse en una variable o una variable persistente. Con ayuda de este argumento. Cualquier otra declaración da lugar a un error y la variable de sistema ERRNO cambia a ERR_SYM_ACCESS. La búsqueda de una PERS declarada como LOCAL en otras tareas también da lugar a un error y al cambio de la variable ERRNO al valor ERR_SYM_ACCESS. no se obtendrá ninguna coincidencia de búsqueda con las señales signaldi. La variable de sistema ERRNO cambia a ERR_INVDIM si el objeto de datos y la variable utilizados en el argumento Value tienen dimensiones diferentes. [\TaskName] Tipo de dato: string El nombre de la tarea de programa en la que se buscará el objeto de datos especificado. Su tipo de dato debe ser el mismo que el del objeto de datos a establecer. La identificación de la variable será “nombre_tarea”+“ID”. Cualquier otra declaración dará lugar a un error. puede buscar declaraciones PERS o TASKPERS en otras tareas. • El objeto de datos es de sólo lectura. Reservados todos los derechos. .

154 SetDataVal .’ Información relacionada Para obtener más información sobre Consulte Definición de un conjunto de símbolos SetDataSearch .’] [ Value ’:=’ ] <variable (VAR) of anytype>]’.Inclusión de un bloque para un objeto de datos en la página 1187 468 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Sintaxis SetDataVal [ Object ’:=’ ] < expression (IN) of string > [’\’Block’ :=’<variable (VAR) of datapos>] |[ ’\’TaskRef’ :=’ <variable (VAR) of taskid>] |[ ’\’TaskName’ :=’ <expression (IN) of string>] ’.Establece un valor en todos los objetos de datos de un conjunto definido en la página 458 El tipo de datos relacionado datapos datapos .Obtiene el siguiente símbolo coindente cidente en la página 917 Obtención del valor de un objeto de da.Obtiene el valor de un objeto de tos datos en la página 115 Asignación del valor de varios objetos de datos SetAllDataVal .1 Instrucciones 1. .GetNextSym .GetDataVal . Reservados todos los derechos.Definir el conjunto de símbolos en una sesión de búsqueda de una secuencia de búsqueda en la página 462 Obtención del siguiente símbolo coinci.Establece el valor de un objeto de datos Continuación No es posible asignar un valor a una variable declarada como LOCAL en un módulo de RAPID incorporado.

en segundos (máximo 2. la señal cambia sin que el resto de la ejecución del programa se vea afectada. La ejecución del programa continúa directamente con la instrucción siguiente. high. Continúa en la página siguiente 3HAC16581-5 Revisión: L 469 © Copyright 2004-2011 ABB. Reservados todos los derechos. Sin embargo. 1.000 s). Se cambia la señal weld a off. [ \Sync ] Synchronization Tipo de dato: switch Si se utiliza este argumento.Cambia el valor de una señal digital de salida 1.do1. 0.1 Instrucciones 1. weld. Se cambia la señal do15 a 1. Ejemplo 4 SetDO \Sync . Ejemplo 2 SetDO weld.155 SetDO . la ejecución del programa espera hasta que la señal cambie físicamente al valor especificado.Cambia el valor de una señal digital de salida Utilización SetDO se usa para cambiar el valor de una señal digital de salida. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SetDO. con o sin retardo ni sincronización. Ejemplo 1 SetDO do15. Ejemplo 3 SetDO \SDelay := 0. Se cambia la señal do1 a 0 La ejecución del programa espera hasta que la señal cambia físicamente al valor especificado.2. Signal Tipo de dato: signaldo El nombre de la señal que debe cambiar.155 SetDO . Argumentos SetDO [ \SDelay ]|[ \Sync ] Signal Value [ \SDelay ] Signal Delay Tipo de dato: num Retarda el cambio durante la duración especificada. . la ejecución del programa continúa con la instrucción siguiente.2 s. off. Se cambia la señal weld a high con un retardo de 0. Después del tiempo de retardo especificado.

Valor especificado Cambiar la salida digital a 0 0 Cualquier valor excepto 0 1 Ejecución de programas El valor real depende de la configuración de la señal. Reservados todos los derechos.Señales de entrada y salida Funcionalidad de entrada/salida en general Technical reference manual .’] [ Signal ’:=’ ] < variable (VAR) of signaldo > ’.Parámetros del sistema 470 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.000 s). con o sin argumento \SDelay. sección Resumen sobre RAPID .RAPID overview. la señal cambia lo antes posible y la siguiente instrucción se ejecuta inmediatamente. Limitaciones Si una instrucción SetDO con un argumento \SDelay va seguida de una nueva instrucción SetDO para la misma señal. Si no se utilizan los argumentos \SDelay ni \Sync. Sintaxis SetDO [ ’\’ SDelay ’:=’ < expression (IN) of num > ’.Cambia el valor de una señal digital de salida Continuación Value Tipo de dato: dionum El valor deseado para la señal. Si la señal está invertida en los parámetros del sistema. la primera instrucción SetDO se cancela si la segunda instrucción SetDO se ejecuta antes de que haya transcurrido el tiempo de retardo de la primera instrucción SetDO. sección Principios de movimiento y E/S .155 SetDO .1 Instrucciones 1. ERR_ARGVALERR si el valor del argumento SDelay sobrepasa el valor máximo permitido (2. .RAPID overview. sin esperar a que la señal cambie físicamente.’ ] |[’\’Sync’. 0 ó 1. El error puede ser gestionado en un gestor de errores. Gestión de errores Pueden generarse los errores recuperables siguientes. La variable de sistema ERRNO cambia a: ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S.’ Información relacionada Para obtener más información sobre Consulte Instrucciones de entrada/salida Technical reference manual .Principios de E/S Configuración de E/S Manual de referencia técnica . el valor del canal físico es el opuesto.’ [ Value ’:=’ ] < expression (IN) of dionum > ’.

Si go2 se compone de 4 señales. Se cambia la señal go2 a 10. por ejemplo. las salidas de la 6 a la 9. la ejecución del programa continúa con la instrucción siguiente.4. Si se omite el argumento. por ejemplo. con o sin retardo de tiempo.1 Instrucciones 1. Ejemplo 1 SetGO go2. las salidas 6-9. todas ellas con el valor 1. Después del tiempo de retardo especificado.4 s. mientras que las salidas 7 y 9 cambian a uno con un retardo de 0. .Cambia el valor de un grupo de señales digitales de salida 1. 12. La señal go2 se cambia a 12. La ejecución del programa continúa directamente con la instrucción siguiente. go2.000 s). las salidas 6 y 7 cambian a cero.Cambia el valor de un grupo de señales digitales de salida Utilización SetGO se usa para cambiar el valor de un grupo de señales digitales de salida. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SetGO. el valor de las señales cambia sin que el resto de la ejecución del programa se vea afectada. 10. go32 contiene 32 señales. 4294967295. Se cambia la señal go32 a 4294967295. las salidas 6 y 8 cambian a cero. Sin embargo. en segundos (máximo 2. Ejemplo 3 SetGO go32. Si go2 se compone de 4 señales. Ejemplo 2 SetGO \SDelay := 0. Continúa en la página siguiente 3HAC16581-5 Revisión: L 471 © Copyright 2004-2011 ABB.156 SetGO . Signal Tipo de dato: signalgo El nombre del grupo de señales que debe cambiar. Reservados todos los derechos. Value Tipo de dato: num El valor deseado para el grupo de señales (un entero positivo) se muestra en la tabla siguiente. mientras que las salidas 8 y 9 cambian a uno. Argumentos SetGO [ \SDelay ] Signal Value | Dvalue [ \SDelay ] Signal Delay Tipo de dato: num Retarda el cambio durante el periodo especificado. los valores de las señales cambian directamente.156 SetGO .

Dvalue Tipo de dato: dnum El valor deseado para el grupo de señales (un entero positivo) se muestra en la tabla siguiente. Un tipo de dato num puede contener el valor de un grupo de 32 señales o menos. Número de señales Valor permitido Valor doble permitido 1 0-1 0-1 2 0-3 0-3 3 0-7 0-7 4 0-15 0-15 5 0-31 0-31 6 0-63 0-63 7 0-127 0-127 8 0-255 0-255 9 0-511 0-511 10 0-1023 0-1023 11 0-2047 0-2047 12 0-4095 0-4095 13 0-8191 0-8191 14 0-16383 0-16383 15 0-32767 0-32767 16 0-65535 0-65535 17 0-131071 0-131071 18 0-262143 0-262143 19 0-524287 0-524287 20 0-1048575 0-1048575 21 0-2097151 0-2097151 22 0-4194303 0-4194303 23 0-8388607 0-8388607 24 * 0-16777215 25 * 0-33554431 26 * 0-67108863 27 * 0-134217727 28 * 0-268435455 29 * 0-536870911 30 * 0-1073741823 Continúa en la página siguiente 472 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Cambia el valor de un grupo de señales digitales de salida Continuación El valor permitido depende del número de señales del grupo.1 Instrucciones 1. . Un tipo de dato dnum puede contener el valor de un grupo de 32 señales o menos. Reservados todos los derechos. El valor permitido depende del número de señales del grupo.156 SetGO .

Ejecución de programas El valor programado se convierte en un número binario sin signo.156 SetGO . ERR_ARGVALERR si el valor del argumento SDelay sobrepasa el valor máximo permitido (2. el valor de la señal puede permanecer sin definir durante un breve periodo de tiempo. Gestión de errores Pueden generarse los errores recuperables siguientes.Parámetros del sistema 3HAC16581-5 Revisión: L 473 © Copyright 2004-2011 ABB. con el resultado de que se cambian a 0 ó 1 las distintas señales del grupo. Limitaciones El número máximo de señales que pueden usarse para un grupo es de 23 si se usa el argumento Value y de 32 si se usa el argumento Dvalue.1 Instrucciones 1. Esta limitación se aplica a todas las instrucciones y funciones que utilicen señales de grupo. Reservados todos los derechos. La variable de sistema ERRNO cambia a: ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S.Señales de entrada y salida Funcionalidad de entrada/salida en gene. que puede contener hasta 32 señales.Technical reference manual . El error puede ser gestionado en un gestor de errores.Cambia el valor de un grupo de señales digitales de salida Continuación Número de señales Valor permitido Valor doble permitido 31 * 0-2147483647 32 * 0-4294967295 *) El argumento Value del tipo num sólo puede contener un máximo de 23 señales en comparación con el argumento Dvalue del tipo dnum. sección Resumen sobre RAPID .RAPID overview.’ ] signalgo > ’.000 s).Principios de E/S Configuración de E/S (parámetros del sistema) Manual de referencia técnica .’ num > of dnum > ’. ERR_GO_LIM si el argumento programado Value o Dvalue para la señal digital de salida de grupo especificada Signal está fuera de límites. ral sección Principios de movimiento y E/S .RAPID overview. Este número binario se envía al grupo de señales. Sintaxis SetGO [ ’\’ SDelay ’:=’ < expression (IN) [ Signal ’:=’ ] < variable (VAR) of [ Value ’:=’ ] < expression (IN) of | [ Dvalue’ :=’ ] < expression (IN) of num > ’. Debido a los retardos internos.’ Información relacionada Para obtener más información sobre Consulte Otras instrucciones de entrada y salida Technical reference manual . .

Continúa en la página siguiente 474 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos. especifica el nombre del objeto de dato que se desea activar (tiene prioridad sobre el nombre especificado en el argumento SourceObject).Establece datos del sistema 1.157 SetSysData . [ \ObjectName ] Tipo de dato:string Si se especifica este argumento opcional.157 SetSysData . SetSysData tool0 \ObjectName := "tool6". Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SetSysData. de acuerdo con los argumentos. Se activa la herramienta tool5. Se activa la herramienta tool6. Se activa la herramienta tool2.1 Instrucciones 1. SetSysData anytool \ObjectName := "tool2". el objeto de trabajo o la carga útil activos actualmente en el robot de la tarea de movimiento actual o conectada.Establece datos del sistema Utilización SetSysData activa el nombre del sistema especificado para el tipo de dato especificado. Ejecución de programas Se establece el objeto de datos del sistema actual de la herramienta. el objeto de trabajo o la carga útil. Ejemplo 1 SetSysData tool5. Argumentos SetSysData SourceObject [\ObjectName] SourceObject Tipo de dato: anytype La variable persistente. El tipo de dato del objeto de datos que se desea activar se captura siempre desde el argumento SourceObject. . El tipo de dato de este argumento también especifica el tipo de dato de sistema que se desea activar para el robot de la tarea actual o de la tarea de movimiento conectada: Tipo de dato Tipo de dato de sistema tooldata Herramienta wobjdata Objeto de trabajo loaddata Carga útil No es posible usar una matriz completa ni un componente de registro. Esta instrucción permite cambiar la herramienta. que debe activarse como un dato actual del sistema.

Datos de carga en la página 1219 Obtención de datos del sistema GetSysData .Datos del objeto de trabajo en la página 1323 Definición de una carga útil loaddata .’ Información relacionada Para obtener más información sobre Consulte Definición de herramientas tooldata .Obtiene datos del sistema en la página 118 3HAC16581-5 Revisión: L 475 © Copyright 2004-2011 ABB. .Establece datos del sistema Continuación Recuerde que esta instrucción sólo activa un nuevo objeto de datos (o el mismo que el anterior) y no cambia nunca el valor de ningún objeto de datos.Datos de herramientas en la página 1301 Definición de objetos de trabajo wobjdata .157 SetSysData . Sintaxis SetSysData [ SourceObject’:=’] < persistent(PERS) of anytype> [’\’ObjectName’:=’ < expression (IN) of string> ] ’.1 Instrucciones 1. Reservados todos los derechos.

para evitar la singularidad de la muñeca. Ejemplo 2 SingArea \Off. Reservados todos los derechos. pero la orientación de la herramienta cambiará ligeramente. en los que se permite que la orientación de la herramienta sea diferente. el robot puede conseguir el movimiento. Ejemplo 1 SingArea \Wrist. el sistema pasará a \Off. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. Se utiliza cuando los ejes 4 y 6 están en paralelo (con el eje 5 a 0 grados). Continúa en la página siguiente 476 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Define el método de interpolación alrededor de puntos singulares 1. Si se atraviesa un punto singular.1 Instrucciones 1. Es posible cambiar ligeramente la orientación de la herramienta para atravesar un punto singular (ejes 4 y 6 en línea). [ \Off ] Tipo de dato: switch La orientación de la que no puede desviarse la herramienta. No se permite que la orientación de la herramienta sea distinta de la orientación programada. el robot se detiene. . SingArea también se usa para definir la interpolación lineal y circular en los robots con menos de seis ejes. Es posible que los robots con menos de seis ejes no puedan alcanzar una orientación de herramienta programada.158 SingArea . Si no se especifica ninguno de los argumentos. si se cuenta con un sistema MultiMove. Es posible que los robots con menos de seis ejes no puedan alcanzar una orientación de herramienta interpolada. Como resultado. uno o varios ejes pueden realizar un movimiento de barrido.158 SingArea . También se usa para la interpolación lineal y circular en los robots con menos de seis ejes. Al utilizar SingArea \Wrist. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SingArea. en las tareas de movimiento. Argumentos SingArea [\Wrist]|[\Off] [ \Wrist ] Tipo de dato: switch Se permite que la orientación de la herramienta sea algo diferente. Se utiliza cuando no se atraviesa ningún punto singular o cuando no se permite que cambie la orientación. lo que da lugar a una reducción de velocidad.Define el método de interpolación alrededor de puntos singulares Utilización SingArea se utiliza para definir cómo debe moverse el robot en las cercanías de los puntos singulares.

158 SingArea . La interpolación especificada se aplica a todos los movimientos posteriores. De esta forma.1 Instrucciones 1.Singularidades Interpolación Technical reference manual .Define el método de interpolación alrededor de puntos singulares Continuación Ejecución de programas Si se especifican los argumentos \Wrist .RAPID overview. Esto también se produce cuando no se atraviesa un punto singular. hasta que se ejecuta una nueva instrucción SingArea. • En los arranques en frío. sección Principios de movimiento y E/S . Esto se establece automáticamente en la rutina de evento SYS_RESET. . De forma predeterminada. • Cuando se inicia la ejecución del programa desde el principio Sintaxis SingArea [ ’\’ Wrist ] | [’\’ Off ] ’. el TCP sigue la trayectoria correcta. Reservados todos los derechos. El movimiento sólo se ve afectado por la ejecución de la interpolación lineal o circular. • Cuando se carga un nuevo programa. la ejecución del programa utiliza automáticamente el argumento Off en los robots con seis ejes. pero la orientación de la herramienta se desvía hasta cierto punto. la orientación se consigue mediante la interpolación de ejes para evitar los puntos singulares.Posicionamiento durante la ejecución del programa 3HAC16581-5 Revisión: L 477 © Copyright 2004-2011 ABB.’ Información relacionada Para obtener más información sobre Consulte Singularidad Technical reference manual .RAPID overview. sección Principios de movimiento y E/S . Los robots que tienen menos de seis ejes pueden usar el argumento Off o el argumento /Wrist de forma predeterminada.

.1 Instrucciones 1.RAPID overview.159 SkipWarn .Recuperación en caso de error Número de error errnum .Omitir el último aviso 1. ERROR IF ERRNO = ERR_REFUNKPRC THEN SkipWarn.Recuperación en caso de error Technical reference manual . con lo que no se almacena en el registro de eventos durante la ejecución en el modo continuo o cíclico (en los modos paso a paso hacia delante o hacia atrás no se omite ninguna advertencia). ENDIF ENDPROC El programa ejecuta la instrucción siguiente nextinstruction y no se almacena ningún mensaje de aviso en el registro de eventos. Sintaxis SkipWarn ’.RAPID overview. nextinstruction.’ Información relacionada Para obtener más información sobre Consulte Recuperación en caso de error Technical reference manual . sección Resumen sobre RAPID .Número de error en la página 1194 478 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Ejemplo 1 %"notexistingproc"%. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SkipWarn. SkipWarn hace posible realizar una recuperación de errores repetitiva en RAPID sin llenar el registro de eventos con mensajes que sólo son de aviso. TRYNEXT. Reservados todos los derechos.159 SkipWarn . sección Características básicas .Omitir el último aviso Utilización SkipWarn(Skip Warning) se utiliza para omitir el último mensaje de advertencia generado.

168.160 SocketAccept . acepta la petición de conexión y devuelve un zócalo de cliente para la conexión establecida. el zócalo del servidor inicia la escucha de conexiones entrantes en este puerto y esta dirección."192. Ejemplo 1 VAR socketdev server_socket. ClientSocket Tipo de dato: socketdev El nuevo zócalo de cliente devuelto. Reservados todos los derechos.160 SocketAccept . . Argumentos SocketAccept Socket ClientSocket [\ClientAddress] [ \Time ] Socket Tipo de dato: socketdev Los zócalos de servidor que permanecen a la espera de conexiones entrantes. SocketListen server_socket.168. [\Time] Tipo de dato: num El tiempo máximo [s] que debe esperar la ejecución del programa a que se produzca una conexión entrante. VAR socketdev client_socket. SocketAccept permanece a la espera de conexiones entrantes. Consulte también Más ejemplos en la página 480. client_socket.1 Instrucciones 1.1". El zócalo debe estar ya creado.0. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SocketAccept.. enlazado y preparado para la escucha. SocketBind server_socket.Acepta una conexión entrante Utilización SocketAccept se utiliza para aceptar peticiones de conexión entrantes. SocketAccept server_socket.Acepta una conexión entrante 1.. .1. Tras la ejecución de SocketListen. que se actualizará con la petición de conexión entrante aceptada. [\ClientAddress] Tipo de dato: string La variable que se actualizará con la dirección IP de la petición de conexión entrante aceptada. SocketCreate server_socket. SocketAccept sólo puede usarse con aplicaciones de servidor.0. 1025. Si el tiempo se agota antes de que se produzca una Continúa en la página siguiente 3HAC16581-5 Revisión: L 479 © Copyright 2004-2011 ABB. que se enlaza al puerto 1025 en la dirección de la red del controlador 192. Se crea un zócalo de servidor.

con el código de error ERR_SOCK_TIMEOUT.0.xxx.1 Instrucciones 1. SocketCreate server_socket. el servidor está preparado para una conexión desde el mismo cliente o desde otro cliente. . Si se mueve el puntero Continúa en la página siguiente 480 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Más ejemplos A continuación aparecen más ejemplos de la instrucción SocketAccept. UNDO SocketClose server_socket. el cliente responde con el mensaje " Hello client with ip-address xxx. Reservados todos los derechos. WHILE TRUE DO SocketAccept server_socket. A continuación.168. 1025. Para esperar indefinidamente.. el zócalo de servidor inicia la escucha de conexiones entrantes en este puerto y dirección. la instrucción ha finalizado y el zócalo de cliente devuelto está conectado de forma predeterminada y puede usarse en instrucciones SocketSend y SocketReceive.1.Acepta una conexión entrante Continuación conexión entrante.160 SocketAccept . ENDWHILE ERROR RETRY.168. "192.. utilice la constante predefinida WAIT_MAX. se llama al gestor de errores. si lo hay.. VAR socketdev client_socket. Si no se usa el parámetro \Time el tiempo de espera es de 60 s. SocketReceive client_socket \Str := receive_string. . se detiene la ejecución.x" y cierra la conexión de cliente. A continuación. Tras la ejecución de SocketListen. Ejemplo 1 VAR socketdev server_socket. SocketClose client_socket. SocketBind server_socket.0. A partir de ese momento. SocketClose client_socket. Una vez aceptada la petición de conexión entrante. SocketSend client_socket \Str := "Hello client with ip-address " +client_ip. Se crea un zócalo de servidor. que se enlaza al puerto 1025 en la dirección de la red del controlador 192. ! Wait for client acknowledge .x. el servidor recibe un mensaje de cadena del cliente y guarda el mensaje en receive_string. Ejecución de programas El zócalo de servidor permanece a la espera de peticiones de conexión entrantes.1". VAR string receive_string. Si no hay ningún gestor de errores. SocketListen server_socket. client_socket \ClientAddress:=client_ip. SocketAccept aceptará la conexión entrante de algún cliente y guardará la dirección del cliente en la cadena client_ip.. dentro del bucle WHILE. VAR string client_ip.

Cierra un zócalo en la página 484 Enlazamiento de un zócalo (sólo servidor) SocketBind .Envía datos a un ordenador remoto en la página 499 Ejemplo de aplicación de zócalos de ser.1 Instrucciones 1. La variable de sistema ERRNO cambia a: ERR_SOCK_CLOSED El zócalo está cerrado (ha sido cerrado o no ha sido creado).Acepta una conexión entrante Continuación de programa a Main en el programa. Gestión de errores Pueden generarse los errores recuperables siguientes.Establece una conexión a un ordenador remoto en la página 486 Envío de datos a un ordenador remoto SocketSend .Permanece a la escucha de conexiones (sólo servidor) xiones entrantes en la página 491 Obtención del estado actual del zócalo SocketGetStatus .160 SocketAccept .Enlaza un zócalo a mi dirección IP y puerto en la página 482 Cómo permanecer a la escucha de cone.Robot communication and I/O control.SocketReceive . Reservados todos los derechos. sección Socket Messaging Creación de un nuevo zócalo SocketCreate .’ Información relacionada Para obtener más información sobre Consulte Comunicación con zócalos en general Application manual . incluso si el zócalo no está creado).Obtiene el estado actual de un zócalo en la página 1047 Aplicación de ejemplo de zócalos de cliente SocketSend .’ [ ClientSocket ´:=´ ] < variable (VAR) of socketdev > [ ’\’ ClientAddress ´:=´ < variable (VAR) of string> ] [ ’\’ Time ´:=´ < expression (IN) of num > ] ’.Recibe datos de un ordenador vidor remoto en la página 493 3HAC16581-5 Revisión: L 481 © Copyright 2004-2011 ABB. ERR_SOCK_TIMEOUT La conexión no fue establecida antes de alcanzar el tiempo límite Sintaxis SocketAccept [ Socket ´:=´ ] < variable (VAR) of socketdev > ’.Envía datos a un ordenador remoto en la página 499 Recepción de datos desde un ordenador SocketReceive . Use SocketCreate para crear un nuevo zócalo.Crea un nuevo zócalo en la página 489 Conexión a un ordenador remoto (sólo cliente) SocketConnect . se cierran todos los zócalos (SocketClose puede ejecutarse siempre. Los errores pueden ser gestionados en un gestor de ERROR.Recibe datos de un ordenador remoto remoto en la página 493 Cierre del zócalo SocketClose . .SocketListen .

161 SocketBind .1 Instrucciones 1.168. Por lo general.161 SocketBind . 192.168.0.125. SocketBind server_socket. Se recomienda hacerlo sólo una vez con cada zócalo y puerto utilizado. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SocketBind. Argumentos SocketBind Socket LocalAddress LocalPort Socket Tipo de dato: socketdev El zócalo de servidor a enlazar. . "192. LocalPort Tipo de dato: num El número de puerto de servidor al que se desea enlazar el zócalo. es posible usar el zócalo de servidor en una instrucción SocketListen para permanecer a la escucha de conexiones entrantes en este puerto y dirección. Ejemplo 1 VAR socketdev server_socket. Se crea un zócalo de servidor. Si el puerto especificado ya se está utilizando. Continúa en la página siguiente 482 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Enlaza un zócalo a mi dirección IP y puerto Utilización SocketBind se usa para enlazar un zócalo al número de puerto de servidor y la dirección IP y el número de puerto especificados. SocketBind sólo puede usarse con aplicaciones de servidor. El zócalo ya debe estar creado pero no enlazado aún.168. Las únicas direcciones válidas son las direcciones de red local públicas o la dirección del puerto de servicio del controlador. LocalAddress Tipo de dato: string La dirección de red de servidor a la que se desea enlazar el zócalo. Es posible que los puertos con un número inferior al 1025 ya estén ocupados. se genera un error. Utilice las instrucciones SocketBind y SocketListen en la puesta en marcha del programa para asociar una dirección local a un zócalo y a continuación permanecer a la espera de conexiones entrantes en el puerto especificado.1. los puertos del 1025 al 4999 están libres para su uso. Reservados todos los derechos.0. A partir de este momento. SocketCreate server_socket.1.Enlaza un zócalo a mi dirección IP y puerto 1. 1025. Ejecución de programas Se enlaza el zócalo de servidor al puerto de servidor y la dirección IP especificados. que se enlaza al puerto 1025 en la dirección de la red del controlador 192.1".

’ [ LocalPort ´:=´ ] < expression (IN) of num > ’.Crea un nuevo zócalo en la página 489 Conexión a un ordenador remoto (sólo cliente) SocketConnect .’ [ LocalAddress ´:=´ ] < expression (IN) of string > ’.’ Información relacionada Para obtener más información sobre Consulte Comunicación con zócalos en general Application manual .Obtiene el estado actual de un zócalo en la página 1047 Aplicación de ejemplo de zócalos de cliente SocketSend .Recibe datos de un ordenador remoto remoto en la página 493 Cierre del zócalo SocketClose . sección Socket Messaging Creación de un nuevo zócalo SocketCreate . ERR_SOCK_ADDR_INUSE La dirección y el puerto ya se están utilizando y no pueden utilizarse nuevamente. Sintaxis SocketBind [ Socket ´:=´ ] < variable (VAR) of socketdev > ’.Enlaza un zócalo a mi dirección IP y puerto Continuación Gestión de errores Pueden generarse los errores recuperables siguientes.Cierra un zócalo en la página 484 Cómo permanecer a la escucha de cone.161 SocketBind . La variable de sistema ERRNO cambia a: ERR_SOCK_CLOSED El zócalo está cerrado (ha sido cerrado o no ha sido creado). Utilice SocketCreate para crear un nuevo zócalo.SocketListen .1 Instrucciones 1.Envía datos a un ordenador remoto en la página 499 Recepción de datos desde un ordenador SocketReceive . Utilice otro número de puerto.Permanece a la escucha de conexiones (sólo servidor) xiones entrantes en la página 491 Aceptación de conexiones (sólo servidor) SocketAccept . Los errores pueden ser gestionados en un gestor de ERROR.Robot communication and I/O control.Establece una conexión a un ordenador remoto en la página 486 Envío de datos a un ordenador remoto SocketSend .Envía datos a un ordenador remoto en la página 499 Aplicación de ejemplo de zócalos de servidor SocketReceive . . Reservados todos los derechos.Recibe datos de un ordenador remoto en la página 493 3HAC16581-5 Revisión: L 483 © Copyright 2004-2011 ABB.Acepta una conexión entrante en la página 479 Obtención del estado actual del zócalo SocketGetStatus .

Cierra un zócalo 1. Esto se debe a que el zócalo TCP/IP tiene una funcionalidad incorporada para reenviar los datos si hay cualquier problema de comunicación. no es posible utilizarlo en ninguna llamada a zócalo.' Continúa en la página siguiente 484 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. excepto SocketCreate..1 Instrucciones 1.. no es posible usar el zócalo. Sin embargo. Ejecución de programas El zócalo se cerrará y se liberarán los recursos que tenga asignados. Para evitar estos problemas con pérdida de datos. Es posible cerrar cualquier zócalo en cualquier momento. puede ser utilizado para una nueva conexión tras una llamada a SocketCreate. Una vez cerrado un zócalo.162 SocketClose . Tras su cierre. Sintaxis SocketClose [ Socket ':=' ] < variable (VAR) of socketdev > '. Limitaciones El cierre de la conexión del zócalo inmediatamente después de enviar los datos con SocketSend puede dar lugar a la pérdida de datos de envío. El zócalo se cierra y no es posible seguir utilizándolo. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SocketClose. dado que el zócalo no queda realmente cerrado hasta un cierto tiempo después (funcionalidad de TCP/IP). Ejemplo 1 SocketClose socket1. Argumentos SocketClose Socket Socket Tipo de dato: socketdev El zócalo que se desea cerrar.Cierra un zócalo Utilización SocketClose se utiliza cuando ya no se va a utilizar una conexión de zócalo. haga lo siguiente antes de SocketClose: • Intercambie de indicativos de control para el cierre o • WaitTime 2 Evite utilizar bucles rápidos con SocketCreate .162 SocketClose . SocketClose. Reservados todos los derechos. .

Acepta una conexión entrante en la página 479t Obtención del estado actual del zócalo SocketGetStatus .Recibe datos de un ordenador remoto en la página 493 3HAC16581-5 Revisión: L 485 © Copyright 2004-2011 ABB.Recibe datos de un ordenador remoto remoto en la página 493 Enlazamiento de un zócalo (sólo servi. Reservados todos los derechos.Establece una conexión a un cliente) ordenador remoto en la página 486 Envío de datos a un ordenador remoto SocketSend .1 Instrucciones 1.Cierra un zócalo Continuación Información relacionada Para obtener más información sobre Consulte Comunicación con zócalos en general Application manual .Crea un nuevo zócalo en la página 489 Conexión a un ordenador remoto (sólo SocketConnect .SocketListen .Enlaza un zócalo a mi dirección IP dor) y puerto en la página 482 Cómo permanecer a la escucha de cone. .Envía datos a un ordenador remoto en la página 499 Aplicación de ejemplo de zócalos de servidor SocketReceive .Obtiene el estado actual de un zócalo en la página 1047 Aplicación de ejemplo de zócalos de cliente SocketSend .Robot communication and I/O control. sección Socket Messaging Creación de un nuevo zócalo SocketCreate .Permanece a la escucha de conexiones (sólo servidor) xiones entrantes en la página 491 Aceptación de conexiones (sólo servidor) SocketAccept .SocketBind .Envía datos a un ordenador remoto en la página 499 Recepción de datos desde un ordenador SocketReceive .162 SocketClose .

1 y con el puerto 1025. Para esperar ininterrumpidamente. Si no hay ningún gestor de errores. Address Tipo de dato: string La dirección del ordenador remoto.1 Instrucciones 1.Establece una conexión a un ordenador remoto 1. utilice la constante predefinida WAIT_MAX. El zócalo ya debe estar creado pero no conectado aún.1".168. se detiene la ejecución. Si no se usa el parámetro \Time el tiempo de espera es de 60 s. Ejemplo 1 SocketConnect socket1. Si el tiempo se agota antes de que se cumpla la condición.0.163 SocketConnect . Es posible que los puertos con un número inferior al 1025 ya estén ocupados. "192.Establece una conexión a un ordenador remoto Utilización SocketConnect se utiliza para conectar el zócalo a un ordenador remoto en una aplicación cliente. Consulte también Más ejemplos en la página 487.168.0. [ \Time ] Tipo de dato: num El intervalo máximo [s] que debe esperar la ejecución del programa a que se acepte o deniegue la conexión.163 SocketConnect . Continúa en la página siguiente 486 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Argumentos SocketConnect Socket Address Port [\Time] Socket Tipo de dato: socketdev El zócalo de cliente al que se desea conectar. El ordenador remoto debe estar especificado como una dirección IP. se llama al gestor de errores si lo hay. los puertos del 1025 al 4999 están libres para su uso. Reservados todos los derechos. . No es posible usar el nombre del ordenador remoto. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SocketConnect. con el código de error ERR_SOCK_TIMEOUT. Por lo general. 1025. Port Tipo de dato: num El puerto del ordenador remoto. Se intenta la conexión a un ordenador remoto en la dirección IP 192.

SocketCreate my_socket. Utilice SocketCreate para crear un nuevo zócalo. ERROR IF ERRNO = ERR_SOCK_TIMEOUT THEN IF retry_no < 5 THEN WaitTime 1. La ejecución del programa esperará hasta que la conexión sea establecida o falle o hasta que se produzca un error de tiempo límite.1". Reservados todos los derechos. . ERR_SOCK_TIMEOUT La conexión no fue establecida antes de alcanzar el tiempo límite. 1025. Ejemplo 1 VAR num retry_no := 0.. . Los errores pueden ser gestionados en un gestor de ERROR.168.’ Continúa en la página siguiente 3HAC16581-5 Revisión: L 487 © Copyright 2004-2011 ABB. ELSE RAISE.Establece una conexión a un ordenador remoto Continuación Ejecución de programas El zócalo intenta establecer una conexión con el ordenador remoto a través de la dirección y el puerto especificados. tras lo cual se informa del error al usuario.’ [ Port ´:=´ ] < expression (IN) of num > [ ’\’ Time ´:=´ < expression (IN) of num > ] ’. ENDIF ENDIF Se crea un zócalo y se intenta establecer una conexión a un ordenador remoto. el gestor de errores reintenta la conexión. es decir 60 segundos. . Gestión de errores Pueden generarse los errores recuperables siguientes.. "192..0. Sintaxis SocketConnect [ Socket ´:=´ ] < variable (VAR) of socketdev > ’.163 SocketConnect . SocketConnect my_socket. Más ejemplos A continuación aparecen más ejemplos de la instrucción SocketConnect. Si la conexión no se establece dentro del tiempo límite predeterminado.1 Instrucciones 1. Se realizan cuatro reintentos. RETRY.’ [ Address ´:=´ ] < expression (IN) of string > ’. La variable de sistema ERRNO cambia a: ERR_SOCK_CLOSED El zócalo está cerrado (ha sido cerrado o no ha sido creado). VAR socketdev my_socket. retry_no := retry_no + 1..

Crea un nuevo zócalo en la página 489 Envío de datos a un ordenador remoto SocketSend .Robot communication and I/O control Creación de un nuevo zócalo SocketCreate .Envía datos a un ordenador remoto en la página 499 Aplicación de ejemplo de zócalos de ser.Enlaza un zócalo a mi dirección IP y puerto en la página 482 Cómo permanecer a la escucha de cone.Permanece a la escucha de conexiones (sólo servidor) xiones entrantes en la página 491 Aceptación de conexiones (sólo servidor) SocketAccept .Establece una conexión a un ordenador remoto Continuación Información relacionada Para obtener más información sobre Se describe en: Comunicación con zócalos en general Application manual .Obtiene el estado actual de un zócalo en la página 1047 Aplicación de ejemplo de zócalos de cliente SocketSend .Acepta una conexión entrante en la página 479 Obtención del estado actual del zócalo SocketGetStatus .1 Instrucciones 1. .SocketReceive .Recibe datos de un ordenador remoto remoto en la página 493 Enlazamiento de un zócalo (sólo servidor) SocketBind .Recibe datos de un ordenador vidor remoto en la página 493 488 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.SocketListen .163 SocketConnect . Reservados todos los derechos.Envía datos a un ordenador remoto en la página 499 Recepción de datos desde un ordenador SocketReceive .

El zócalo no debe estar usándose.Robot communication and I/O control. Argumentos SocketCreate Socket Socket Tipo de dato: socketdev La variable de almacenamiento de los datos de zócalo internos del sistema.. Evite utilizar bucles rápidos con SocketCreate .164 SocketCreate . Sintaxis SocketCreate [ Socket ’:=’ ] < variable (VAR) of socketdev > ’... Ejecución de programas La instrucción crea un nuevo dispositivo de zócalo. dado que el zócalo no queda realmente cerrado hasta un cierto tiempo después (funcionalidad de TCP/IP).Crea un nuevo zócalo Utilización SocketCreate se usa para crear un nuevo zócalo para una comunicación basada en conexiones. Es posible desarrollar aplicaciones tanto de servidor como de cliente. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SocketCreate.1 Instrucciones 1. SocketCreate socket1.’ Información relacionada Para obtener más información sobre Consulte Comunicación con zócalos en general Application manual .. Ejemplo 1 VAR socketdev socket1. El protocolo de datagrama UDP/IP con difusión no se admite.Crea un nuevo zócalo 1. Se crea un nuevo dispositivo de zócalo. sección Socket Messaging Continúa en la página siguiente 3HAC16581-5 Revisión: L 489 © Copyright 2004-2011 ABB. SocketClose. que se asigna a la variable socket1. . Limitaciones Es posible declarar tantos zócalos como se desee. El zócalo está en uso entre las instrucciones SocketCreate y SocketClose. El intercambio de mensajes de zócalo es de tipo canal y tiene el protocolo TCP/IP con garantía de entrega. Reservados todos los derechos. pero sólo es posible utilizar 32 de ellos al mismo tiempo. .164 SocketCreate .

Enlaza un zócalo a mi dirección IP y puerto en la página 482 Cómo permanecer a la escucha de cone.SocketListen .164 SocketCreate .Recibe datos de un ordenador remoto remoto en la página 493 Cierre del zócalo SocketClose . Reservados todos los derechos.Envía datos a un ordenador remoto en la página 499 Aplicación de ejemplo de zócalos de ser.1 Instrucciones 1.Establece una conexión a un ordenador remoto en la página 486 Envío de datos a un ordenador remoto SocketSend .Recibe datos de un ordenador vidor remoto en la página 493 490 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.Envía datos a un ordenador remoto en la página 499 Recepción de datos desde un ordenador SocketReceive .Permanece a la escucha de coxiones (sólo servidor) nexiones entrantes en la página 491 Aceptación de conexiones (sólo servidor) SocketAccept .Crea un nuevo zócalo Continuación Para obtener más información sobre Consulte Conexión a un ordenador remoto (sólo cliente) SocketConnect .Cierra un zócalo en la página 484 Enlazamiento de un zócalo (sólo servidor) SocketBind . .Obtiene el estado actual de un zócalo en la página 1047 Aplicación de ejemplo de zócalos de cliente SocketSend .SocketReceive .Acepta una conexión entrante en la página 479 Obtención del estado actual del zócalo SocketGetStatus .

El zócalo ya debe estar creado y enlazado. Continúa en la página siguiente 3HAC16581-5 Revisión: L 491 © Copyright 2004-2011 ABB. . Argumentos SocketListen Socket Socket Tipo de dato: socketdev El zócalo de servidor que debe iniciar la escucha de conexiones entrantes. por ejemplo para empezar a actuar como servidor. SocketCreate server_socket. WHILE listening DO. Utilice las instrucciones SocketBind y SocketListen en la puesta en marcha del programa para asociar una dirección local a un zócalo y a continuación permanecer a la espera de conexiones entrantes en el puerto especificado. Ejecución de programas El zócalo de servidor inicia la escucha de conexiones entrantes.0. SocketListen server_socket. Cuando la instrucción ha finalizado..165 SocketListen . . Ejemplo 1 VAR socketdev server_socket. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SocketListen.1 Instrucciones 1.168. Se recomienda hacerlo sólo una vez con cada zócalo y puerto utilizado. el zócalo del servidor inicia la escucha de conexiones entrantes en este puerto y esta dirección. SocketBind server_socket. VAR socketdev client_socket. "192. Se crea un zócalo de servidor.1". ! Waiting for a connection request SocketAccept server_socket.Permanece a la escucha de conexiones entrantes 1. Tras la ejecución de SocketListen. SocketListen sólo puede usarse para las aplicaciones de servidor. Reservados todos los derechos.165 SocketListen .1. que se enlaza al puerto 1025 en la dirección de la red del controlador 192. client_socket. el zócalo está preparado para aceptar una conexión entrante.Permanece a la escucha de conexiones entrantes Utilización SocketListen se usa para iniciar la escucha de conexiones entrantes.168. 1025..0.

Sintaxis SocketListen [ Socket ’:=’ ] < variable (VAR) of socketdev > ’. Utilice SocketCreate para crear un nuevo zócalo. Reservados todos los derechos.Acepta una conexión entrante en la página 479 Obtención del estado actual del zócalo SocketGetStatus .Robot communication and I/O control.Recibe datos de un ordenador remoto remoto en la página 493 Cierre del zócalo SocketClose . La variable de sistema ERRNO cambia a: ERR_SOCK_CLOSED El zócalo está cerrado (ha sido cerrado o no ha sido creado).Establece una conexión a un ordenador remoto en la página 486 Envío de datos a un ordenador remoto SocketSend . Los errores pueden ser gestionados en un gestor de ERROR.165 SocketListen .Envía datos a un ordenador remoto en la página 499 Recepción de datos desde un ordenador SocketReceive .’ Información relacionada Para obtener más información sobre Consulte Comunicación con zócalos en general Application manual .Envía datos a un ordenador remoto en la página 499 Aplicación de ejemplo de zócalos de ser.Cierra un zócalo en la página 484 Enlazamiento de un zócalo (sólo servidor) SocketBind .Permanece a la escucha de conexiones entrantes Continuación Gestión de errores Pueden generarse los errores recuperables siguientes. sección Socket Messaging Creación de un nuevo zócalo SocketCreate .Enlaza un zócalo a mi dirección IP y puerto en la página 482 Aceptación de conexiones (sólo servidor) SocketAccept . .Recibe datos de un ordenador vidor remoto en la página 493 492 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.SocketReceive .1 Instrucciones 1.Crea un nuevo zócalo en la página 489 Conexión a un ordenador remoto (sólo cliente) SocketConnect .Obtiene el estado actual de un zócalo en la página 1047 Aplicación de ejemplo de zócalos de cliente SocketSend .

. Sólo es posible usar uno de los parámetros opcionales \Str. [ \RawData ] Tipo de dato: rawbytes La variable en la que se debe almacenar el dato de tipo rawbytes. el zócalo debe estar ya creado y conectado. Es posible gestionar un número máximo de 80 caracteres. .. [ \Str ] Tipo de dato: string La variable en la que se debe almacenar el dato de tipo string. Ejemplo 1 VAR string str_data. Es posible gestionar un número máximo de 1. Se reciben datos de un ordenador remoto y se guardan en la variable de cadena str_data.1 Instrucciones 1.. \RawData y \Data al mismo tiempo. Consulte también Más ejemplos en la página 496.166 SocketReceive . Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SocketReceive. SocketReceive puede usarse tanto en aplicaciones de cliente como en aplicaciones de servidor.024 rawbytes. En la aplicación de servidor en la que el zócalo recibe los datos.Recibe datos de un ordenador remoto 1. Continúa en la página siguiente 3HAC16581-5 Revisión: L 493 © Copyright 2004-2011 ABB.166 SocketReceive . Es posible gestionar un número máximo de 1.Recibe datos de un ordenador remoto Utilización SocketReceive se usa para recibir datos de un ordenador remoto. Reservados todos los derechos. [ \Data ] Tipo de dato: array of byte La variable en la que se debe almacenar el dato de tipo byte. el zócalo debe estar ya aceptado.024 byte. SocketReceive socket1 \Str := str_data. Argumentos SocketReceive Socket [ \Str ] | [ \RawData ] | [ \Data ] [\ReadNoOfBytes] [\NoRecBytes] [\Time] Socket Tipo de dato: socketdev En la aplicación cliente en la que el zócalo recibe los datos.

con un máximo de 1. [ \NoRecBytes ] Number Received Bytes Tipo de dato: num Una variable para el almacenamiento del número de bytes necesarios del socketdev especificado. Si no hay ningún gestor de errores. se reciben los 80 bytes si en efecto hay 80 bytes a leer. . Si se está manteniendo una comunicación con un cliente que siempre envía un número fijo de bytes. Si no se usa el parámetro \Time el tiempo de espera es de 60 s. 80 bytes si se utiliza una variable del tipo de dato string. El número mínimo de bytes a leer es 1 y el número máximo es el valor del tamaño del tipo de dato utilizado.Recibe datos de un ordenador remoto Continuación [ \ReadNoOfBytes ] Read number of Bytes Tipo de dato: num El número de bytes a leer. El número de bytes leídos es especificado por el tipo de dato utilizado en la instrucción. Si el remitente envía datos RawData. es decir. Para esperar indefinidamente. con el código de error ERR_SOCK_TIMEOUT. se detiene la ejecución. el destinatario necesita especificar la recepción de 4 bytes por cada rawbytes enviado. Si se utiliza el argumento opcional ReadNoOfBytes el usuario puede especificar cuántos bytes deben recibirse para cada SocketReceive.166 SocketReceive . Reservados todos los derechos. El mismo resultado también puede conseguirse con: • Función StrLen con la variable del argumento \Str • Función RawBytesLen con la variable del argumento \RawData [ \Time ] Tipo de dato: num El intervalo máximo [s] que debe esperar la ejecución del programa a que se reciban los datos. se llama al gestor de errores si lo hay.1 Instrucciones 1. Los datos transferidos por el cable son siempre bytes.024 bytes por cada mensaje. Si se utiliza un tipo de dato string para recibir datos. utilice la constante predefinida WAIT_MAX. No se añade ningún encabezado al mensaje de forma predeterminada. El uso de cualquier encabezado está reservado para la aplicación en sí. este parámetro opcional puede usarse para especificar que se lea siempre el mismo número de bytes para cada instrucción SocketReceive. Ejecución de programas La ejecución de SocketReceive esperará hasta que los datos estén disponibles o fallen a causa de un error de tiempo límite. Si el tiempo se agota antes de que se transfieran los datos. Parámetro Datos de entrada Datos de cable Datos de salida \Str 1 carácter 1 byte (8 bits) 1 carácter Continúa en la página siguiente 494 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.

166 SocketReceive .Recibe datos de un ordenador remoto Continuación Parámetro Datos de entrada Datos de cable Datos de salida \RawData 1 rawbytes 1 byte (8 bits) 1 rawbytes \Data 1 byte 1 byte (8 bits) 1 byte Es posible combinar los tipos de datos (string.1 Instrucciones 1. Reservados todos los derechos. rawbytes. . Continúa en la página siguiente 3HAC16581-5 Revisión: L 495 © Copyright 2004-2011 ABB. or array of byte) entre SocketSend y SocketReceive.

. Reservados todos los derechos. ERROR IF ERRNO=ERR_SOCK_TIMEOUT THEN RETRY. ERROR IF ERRNO=ERR_SOCK_TIMEOUT THEN RETRY. SocketListen server_socket. . enlazamiento. bind. ELSE ! No error recovery handling ENDIF ENDPROC Éste es un ejemplo de un programa de servidor con creación. SocketClose client_socket.168. "192.1". ! Create. ! Wait for acknowlegde from client .1 Instrucciones 1. SocketClose server_socket. SocketClose client_socket. Continúa en la página siguiente 496 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. SocketSend client_socket \Str := "Hello client with ip-address"+client_ip. ELSEIF ERRNO=ERR_SOCK_CLOSED THEN RETURN. client_socket\ClientAddress:=client_ip. RETRY.0. De esta forma.. VAR socketdev client_socket. ELSE ! No error recovery handling ENDIF ENDPROC PROC server_recover() SocketClose server_socket. 1025. SocketCreate server_socket. SocketAccept server_socket.166 SocketReceive .Recibe datos de un ordenador remoto Continuación Más ejemplos A continuación aparecen más ejemplos de la instrucción SocketReceive. SocketBind server_socket. listen and accept of sockets in error handlers SocketReceive client_socket \Str := receive_string. .. PROC server_messaging() VAR string receive_string. VAR string client_ip. el programa puede manejar el reinicio tras la caída de alimentación. escucha y aceptación de zócalos en los gestores de errores. Ejemplo 1 VAR socketdev server_socket. ELSEIF ERRNO=SOCK_CLOSED THEN server_recover..

024 bytes. El tamaño máximo de los datos que pueden recibirse en una llamada está limitada a 1. SocketClose. La variable de sistema ERRNO cambia a: ERR_SOCK_CLOSED El zócalo se cierra. A continuación. que se enlaza al puerto 1025 en la dirección de la red del controlador 192. Los errores pueden ser gestionados en un gestor de ERROR. Limitaciones La mensajería de zócalos no cuenta con ningún mecanismo de sincronización incorporado para evitar la recepción de mensajes compuestos por varios mensajes de envío. ERR_SOCK_TIMEOUT No se recibieron datos dentro del tiempo límite. Todos los zócalos están cerrados tras el reinicio de la caída de alimentación. Evite utilizar bucles rápidos con SocketCreate . SocketAccept aceptará la conexión entrante de algún cliente y guardará la dirección del cliente en la cadena client_ip. se crea un zócalo de servidor. En el procedimiento de comunicación server_messaging. el servidor recibe un mensaje de cadena del cliente y guarda el mensaje en receive_string.166 SocketReceive .. Tras la ejecución de SocketListen.. Consulte el ejemplo anterior.x. Conexión interrumpida. Reservados todos los derechos. el zócalo de servidor inicia la escucha de conexiones entrantes en este puerto y dirección.Recibe datos de un ordenador remoto Continuación En el procedimiento server_recover. Este problema puede ser gestionado por la recuperación en caso de error.1 Instrucciones 1.SocketReceive). Gestión de errores Pueden generarse los errores recuperables siguientes. el cliente responde con el mensaje "Hello client with ip-address xxx.168.’ Continúa en la página siguiente 3HAC16581-5 Revisión: L 497 © Copyright 2004-2011 ABB. dado que el zócalo no queda realmente cerrado hasta un cierto tiempo después (funcionalidad de TCP/IP).0.1. Sintaxis SocketReceive [ Socket ’:=’ ] < variable (VAR) of socketdev > [ ’\’ Str’ :=’ < variable (VAR) of string > ] | [ ’\’ RawData ´:=´ < variable (VAR) of rawbytes > ] | [ ’\’ Data ´:=´ < array {*} (VAR) of byte > ] [ ’\’ ReadNoOfBytes’ :=’ < expression (IN) of num > ] [ ’\’ NoRecBytes’ :=’ < variable (VAR) of num > ] [ ’\’ Time ´:=´ < expression (IN) of num > ] ’.x".xxx. El programador es quien decide si desea gestionar la sincronización con mensajes “Ack” (debe completarse una secuencia de SocketSend SocketReceive en el programa cliente o servidor antes de la siguiente secuencia de SocketSend . .

Cierra un zócalo en la página 484 Enlazamiento de un zócalo (sólo servidor) SocketBind .1 Instrucciones 1.Crea un nuevo zócalo en la página 489 Conexión a un ordenador remoto (sólo cliente) SocketConnect .Obtiene el estado actual de un zócalo en la página 1047 Aplicación de ejemplo de zócalos de cliente SocketSend .166 SocketReceive . Reservados todos los derechos.Robot communication and I/O control.Recibe datos de un ordenador remoto Continuación Información relacionada Para obtener más información sobre Consulte Comunicación con zócalos en general Application manual .SocketListen .Envía datos a un ordenador remoto en la página 499 Cierre del zócalo SocketClose .Establece una conexión a un ordenador remoto en la página 486 Envío de datos a un ordenador remoto SocketSend .Permanece a la escucha de conexiones (sólo servidor) xiones entrantes en la página 491 Aceptación de conexiones (sólo servidor) SocketAccept .Enlaza un zócalo a mi dirección IP y puerto en la página 482 Cómo permanecer a la escucha de cone.Acepta una conexión entrante en la página 479 Obtención del estado actual del zócalo SocketGetStatus .Envía datos a un ordenador remoto en la página 499 498 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. sección Socket Messaging Creación de un nuevo zócalo SocketCreate . .

Sólo es posible usar uno de los parámetros de opción \Str. . Si no se especifica este argumento.Envía datos a un ordenador remoto 1. Continúa en la página siguiente 3HAC16581-5 Revisión: L 499 © Copyright 2004-2011 ABB. Consulte también Más ejemplos en la página 501. SocketSend puede usarse tanto en aplicaciones de cliente como en aplicaciones de servidor. Envía el mensaje "Hello world" al ordenador remoto. sólo se envía al ordenador remoto este número de bytes.Envía datos a un ordenador remoto Utilización SocketSend se usa para enviar datos a un ordenador remoto. [ \NoOfBytes ] Tipo de dato: num Si se especifica este argumento.167 SocketSend . En la aplicación de servidor. el zócalo desde el que se envía debe estar ya creado y conectado. el zócalo al que se envía debe estar ya aceptado. [ \RawData ] Tipo de dato: rawbytes El dato de tipo rawbytes que se desea enviar al ordenador remoto. La llamada a SocketSend fallará si el valor de \NoOfBytes es mayor que la cantidad real de bytes de la estructura de datos a enviar. \RawData o \Data al mismo tiempo.167 SocketSend . [ \Str ] Tipo de dato: string La cadena de tipo string que se desea enviar al ordenador remoto. Argumentos SocketSend Socket [ \Str ] | [ \RawData ] | [ \Data] [ \NoOfBytes ] Socket Tipo de dato: socketdev En la aplicación cliente. Reservados todos los derechos. [ \Data ] Tipo de dato: array of byte Los datos de la matriz de tipo byte que se desea enviar al ordenador remoto. Ejemplo 1 SocketSend socket1 \Str := "Hello world". se envía al ordenador remoto la totalidad de la estructura de datos (la parte válida de rawbytes).1 Instrucciones 1. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SocketSend.

El uso de cualquier encabezado está reservado para la aplicación en sí.Envía datos a un ordenador remoto Continuación Ejecución de programas Los datos especificados se envían al ordenador remoto. rawbytes o array of byte) entre SocketSend y SocketReceive. Si la conexión se interrumpe. Los datos transferidos por el cable son siempre bytes. Reservados todos los derechos. con un máximo de 1. Continúa en la página siguiente 500 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.167 SocketSend .1 Instrucciones 1. se genera un error. Parámetro Datos de entrada Datos de cable Datos de salida \Str 1 carácter 1 byte (8 bits) 1 carácter \RawData 1 rawbytes 1 byte (8 bits) 1 rawbytes \Data 1 byte 1 byte (8 bits) 1 byte Es posible combinar los tipos de datos (string. . No se añade ningún encabezado al mensaje de forma predeterminada.024 bytes por cada mensaje.

. Este mensaje se almacena en la variable receive_string.2"..167 SocketSend .0. ELSE ! No error recovery handling ENDIF ENDPROC PROC client_recover() SocketClose client_socket. .. "192. Reservados todos los derechos.168. ELSEIF ERRNO=ERR_SOCK_CLOSED THEN client_recover. se crea y conecta el zócalo de cliente a un servidor de ordenador remoto con la dirección 192.. ELSE ! No error recovery handling ENDIF ENDPROC Éste es un ejemplo de un programa cliente con creación y conexión de zócalos en los gestores de errores. el programa puede manejar el reinicio tras la caída de alimentación. PROC client_messaging() . ERROR IF ERRNO=ERR_SOCK_TIMEOUT THEN RETRY.0. RETRY. Continúa en la página siguiente 3HAC16581-5 Revisión: L 501 © Copyright 2004-2011 ABB. . De esta forma.Envía datos a un ordenador remoto Continuación Más ejemplos A continuación aparecen más ejemplos de la instrucción SocketSend.1 Instrucciones 1. Ejemplo 1 VAR socketdev client_socket. ! Create and connect the socket in error handlers SocketSend client_socket \Str := "Hello server". SocketClose client_socket. 1025. VAR string receive_string. SocketReceive client_socket \Str := receive_string. ERROR IF ERRNO=ERR_SOCK_TIMEOUT THEN RETRY. SocketConnect client_socket.168. ELSEIF ERRNO=ERR_SOCK_CLOSED THEN RETURN.2 en el puerto 1025. SocketCreate client_socket. En el procedimiento client_recover. En el procedimiento de comunicación client_messaging. el cliente envía "Hello server" al servidor y el servidor responde con "Hello client" al cliente.

.. Broken connection. Este problema puede ser gestionado por la recuperación en caso de error. La variable de sistema ERRNO cambia a: ERR_SOCK_CLOSED The socket is closed. SocketClose. ENDPROC Éste es un ejemplo de un programa cliente que envía caracteres no imprimibles (datos binarios) en una cadena. VAR string receive_string.. Los errores pueden ser gestionados en un gestor de ERROR..167 SocketSend . Consulte el ejemplo anterior. Todos los zócalos están cerrados tras el reinicio de la caída de alimentación..024 bytes. ! Send cr and lf to the server SocketSend client_socket \Str := "\0D\0A".Envía datos a un ordenador remoto Continuación Ejemplo 2 VAR socketdev client_socket. Socket Messaging Continúa en la página siguiente 502 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.’ Información relacionada Para obtener más información sobre Consulte Comunicación con zócalos en general Application manual . Limitaciones La mensajería de zócalos no cuenta con ningún mecanismo de sincronización incorporado para evitar la recepción de mensajes compuestos por varios mensajes de envío. . Esto puede resultar útil a la hora de comunicarse con sensores u otros clientes que requieran este tipo de caracteres. Evite utilizar bucles rápidos con SocketCreate . El programador es quien decide si desea gestionar la sincronización con mensajes “Ack” (debe completarse una secuencia de SocketSend SocketReceive en el programa cliente o servidor antes de la siguiente secuencia de SocketSend .1 Instrucciones 1.SocketReceive).. dado que el zócalo no queda realmente cerrado hasta un cierto tiempo después (funcionalidad de TCP/IP).Robot communication and I/O control. El tamaño de los datos a enviar está limitado a 1. Reservados todos los derechos. PROC client_messaging() . Sintaxis SocketSend [ Socket ´:=´ ] < variable (VAR) of socketdev > [ \Str ´:=´ < expression (IN) of string > ] | [ \RawData ´:=´ < variable (VAR) of rawdata > ] | [ \Data ´:=´ < array {*} (IN) of byte > ] [ ’\’ NoOfBytes ´:=´ < expression (IN) of num > ] ’. . Gestión de errores Pueden generarse los errores recuperables siguientes.

Recibe datos de un ordenador vidor remoto en la página 493 Uso de caracteres no imprimibles (datos Technical reference manual .1 Instrucciones 1.Obtiene el estado actual de un zócalo en la página 1047 Aplicación de ejemplo de zócalos de ser.Permanece a la escucha de coxiones (sólo servidor) nexiones entrantes en la página 491 Aceptación de conexiones (sólo servidor) SocketAccept .Acepta una conexión entrante en la página 479 Obtención del estado actual del zócalo SocketGetStatus .sección String literals teres.Envía datos a un ordenador remoto Continuación Para obtener más información sobre Consulte Creación de un nuevo zócalo SocketCreate . .167 SocketSend .SocketListen .Crea un nuevo zócalo en la página 489 Conexión a un ordenador remoto (sólo cliente) SocketConnect .Cierra un zócalo en la página 484 Enlazamiento de un zócalo (sólo servidor) SocketBind .Recibe datos de un ordenador remoto remoto en la página 493 Cierre del zócalo SocketClose . binarios) en literales de cadenas de carac. Reservados todos los derechos. 3HAC16581-5 Revisión: L 503 © Copyright 2004-2011 ABB.SocketReceive .RAPID kernel.Establece una conexión a un ordenador remoto en la página 486 Recepción de datos desde un ordenador SocketReceive .Enlaza un zócalo a mi dirección IP y puerto en la página 482 Cómo permanecer a la escucha de cone.

Un factor del 100% denota un valor Continúa en la página siguiente 504 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. Softness Tipo de dato: num El valor de suavidad. El factor de pendiente se utiliza para controlar la aplicación del servo suave. Ejemplo 3 SoftAct \MechUnit:=orbit1. 40 \Ramp:=120. 90 \Ramp:=150.1 Instrucciones 1. en porcentaje (del 0% al 100%). en las tareas de movimiento. [ \Ramp ] Tipo de dato: num El factor de pendiente.168 SoftAct .Activa el servo suave 1. Activación del servo suave en el eje 1 del robot.168 SoftAct . 20. Ejemplo 2 SoftAct 1. 1. Argumentos SoftAct[\MechUnit] Axis Softness [\Ramp] [ \MechUnit ] Mechanical Unit Tipo de dato: mecunit El nombre de la unidad mecánica.Activa el servo suave Utilización SoftAct (Soft Servo Activate) se utiliza para activar el así llamado “servo suave” en cualquier eje del robot o en una unidad mecánica externa. si se cuenta con un sistema MultiMove. mientras que el 100% denota la máxima suavidad. con un valor de suavidad del 90% y con un factor de rampa del 150%. Activación del servo suave en el eje 3 del robot. Ejemplo 1 SoftAct 3. Reservados todos los derechos. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SoftAct. en porcentaje (>= 100%). Activación del servo suave en el eje 1 de la unidad mecánica orbit1 con un valor de suavidad del 40% y un factor de rampa del 120%. Axis Tipo de dato: num El número del eje del robot o del eje externo que debe funcionar con el servo suave. El 0% denota la suavidad mínima (la máxima rigidez). significa la activación del servo suave para el eje especificado del robot en la tarea de programa actual. . con un valor de suavidad del 20%. Si se omite este argumento.

sección Axes Configuration . Cuando se usan valores mayores. SoftAct n . el servo suave se aplica más lentamente (con una pendiente mayor). x e y = valores de suavidad) Sintaxis SoftAct [’\’MechUnit ’:=’ < variable (VAR) of mecunit>´.’ Información relacionada Para obtener más información sobre Consulte Desactivación del servo suave SoftDeact .Additional axes and stand alone controller. se producirán sacudidas en los movimientos del robot: SoftAct n . Limitaciones El servo suave de cualquier eje del robot o eje externo se desactiva siempre que se produce una caída de alimentación eléctrica. Reservados todos los derechos.168 SoftAct . Por tanto.Activa el servo suave Continuación normal. No se debe activar el mismo eje dos veces. sección Principios de movimiento y E/S . y . Ejecución de programas La suavidad se activa con el valor especificado para el eje actual.´ [ ’\’Ramp’:=’ < expression (IN) of num> ]’.Soft servo 3HAC16581-5 Revisión: L 505 © Copyright 2004-2011 ABB. (n = eje n del robot. a no ser que exista una instrucción de movimiento entre las dos activaciones. la secuencia de programa siguiente debe evitarse. .1 Instrucciones 1. De lo contrario. El valor de suavidad es válido para todos los movimientos hasta que se programa un nuevo valor de suavidad para el eje actual o hasta que se desactiva mediante la instrucción SoftDeact.RAPID overview.Desactiva el servo suave en la página 506 Comportamiento con el servo suave activado Technical reference manual .´] [Axis ’:=’ ] < expression (IN) of num> ’. El valor predeterminado para el factor de pendiente es el 100%. Esta limitación puede gestionarse en el programa del usuario cuando se reanuda la ejecución después de una caída de alimentación.’ [Softness’:=’ ] < expression (IN) of num> ´. x .Posicionamiento durante la ejecución del programa Configuración de ejes externos Application manual .

el servo suave se desactiva más lentamente (con una pendiente mayor). El factor de pendiente se utiliza para controlar la desactivación del servo suave. Cuando se usan valores mayores. Al desactivar el servo suave con SoftDeact el robot se mueve hasta la posición programada. El valor predeterminado para el factor de pendiente es el 100%. Reservados todos los derechos.1 Instrucciones 1. Ejemplo 1 SoftDeact. Si SoftDeact se realiza desde una tarea sin movimiento.’ Información relacionada Para obtener más información sobre Consulte Activación del servo suave SoftAct .Desactiva el servo suave Utilización SoftDeact (Soft Servo Deactivate) se utiliza para desactivar el así llamado “servo suave”. Desactiva el servo suave en todos los ejes. Desactiva el servo suave en todos los ejes. .Activa el servo suave en la página 504 506 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.169 SoftDeact . incluso si el robot ha abandonado su posición durante la activación del servo suave. La ejecución de un SoftDeact durante el modo de movimiento sincronizado. Sintaxis SoftDeact [ ’\’Ramp ’:=’ < expression (IN) of num> ]’. el servo suave se desactiva para la unidad mecánica controlada por la tarea de movimiento conectada. con un factor de pendiente del 150 %. el servo suave se desactiva para todas las unidades mecánicas que estén sincronizadas. Ejemplo 2 SoftDeact \Ramp:=150. Un factor del 100% es el valor normal. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SoftDeact.Desactiva el servo suave 1.169 SoftDeact . Ejecución de programas Se desactiva el servo suave para las unidades mecánicas controladas desde la tarea de programa actual. en porcentaje (>= 100 %). Argumentos SoftDeact[\Ramp] [ \Ramp ] Tipo de dato: num El factor de pendiente.

Argumentos SpeedRefresh Override Override Tipo de dato: num El valor del ajuste de velocidad. en las tareas de movimiento.1 Instrucciones 1. Esta instrucción permite crear algún tipo de adaptación de velocidad aproximada a partir de una entrada de sensor. Continúa en la página siguiente 3HAC16581-5 Revisión: L 507 © Copyright 2004-2011 ABB.El ajuste de velocidad para el movimiento en curso Utilización SpeedRefresh se utiliza para cambiar la velocidad del movimiento del robot en curso en la actual tarea de movimiento de programa. Ejecución de programas Se actualiza el valor de redefinición actual de la velocidad para los movimientos en curso del robot y las unidades externas de la tarea de movimiento del programa actual. Esta instrucción sólo puede usarse en la tarea principal T_ROB1 o. Se ven afectados todos los componentes de datos de velocidad de todas las unidades mecánicas de la tarea de movimiento actual.170 SpeedRefresh . Si se realiza una operación de PP a Main o se carga un nuevo programa. Esta operación cambia el ajuste de velocidad actual al 70%. dentro del rango del 0% al 100%. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SpeedRefresh. Ejemplo 1 VAR num change_speed:=70. si se cuenta con un sistema MultiMove. se utilizará el valor más bajo. . Si el ajuste de velocidad utilizado para la instrucción SpeedRefresh sobrepasa el valor establecido desde el FlexPendant. SpeedRefresh change_speed.170 SpeedRefresh . la velocidad establecida con SpeedRefresh se restablece y se aplica la velocidad establecida desde el FlexPendant. Esto significa que la velocidad no puede aumentarse por encima de la velocidad establecida desde el FlexPendant. Este valor de ajuste de velocidad generado con esta instrucción sustituye a cualquier valor de ajuste de velocidad generado desde el FlexPendant para esta tarea de movimiento (sin afectar a ninguna otra tarea de movimiento).El ajuste de velocidad para el movimiento en curso 1. Reservados todos los derechos.

! Analog input signal value from sensor. time_int.. . IF speed_corr < 0 speed_corr := 0. A continuación.. SpeedRefresh speed_corr.5. tool2. v100.El ajuste de velocidad para el movimiento en curso Continuación Más ejemplos A continuación aparecen más ejemplos de la instrucción SpeedRefresh.. 10 speed_corr := (ai_sensor * 10). . v100. ! Reset to FlexPendant old speed override WaitTime 0.. MoveL p2. PROC main() CONNECT time_int WITH speed_refresh.. fine.. fine.1 Instrucciones 1. La señal analógica de entrada ai_sensor se usa para el cálculo del valor de Overide para la instrucción SpeedRefresh. MoveL p1. TRAP speed_refresh VAR speed_corr. el valor de ajuste de velocidad se actualiza cada 0. Continúa en la página siguiente 508 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos. IDelete time_int. el robot debe alcanzar p2. el valor de la variable ERRNO cambia a ERR_SPEED_REFRESH_LIM.. Ejemplo 1 VAR intnum time_int.. ITimer 0.170 SpeedRefresh . ERROR IF ERRNO = ERR_SPEED_REFRESH_LIM THEN IF speed_corr > 100 speed_corr := 100.1 s en la rutina TRAPspeed_refresh. Gestión de errores Si Override tiene un valor que está fuera del rango del 0% al 100%. No se realiza ninguna ejecución de TRAP ni antes ni después del movimiento de robot entre p1 y p2. Se restablece el ajuste de velocidad manual del FlexPendant. ! Read current speed override set from FlexPendant override := CSpeedOverride (\CTask). SpeedRefresh override. ENDIF ENDTRAP Durante el movimiento del robot desde la posición p1 hasta p2. VAR num override. IWatch time_int. value 0 . . . ISleep time_int. Este error es recuperable y puede ser gestionado en el gestor ERROR.1. tool2. RETRY.

3 a 0. Reservados todos los derechos.Datos de velocidad en la página 1276 Lectura del ajuste de velocidad actual CSpeedOverride .1 Instrucciones 1.170 SpeedRefresh . sección Resumen sobre RAPID . la velocidad establecida siempre es el ajuste de velocidad vigente en el FlexPendant. Sintaxis SpeedRefresh [ Override ’:=’ ] < expression (IN) of num > ’. . El usuario es responsable de restablecer el valor de ajuste de velocidad desde el programa de RAPID a continuación de la secuencia SpeedRefresh. En su lugar se producirá un retardo de 0. El ajuste de velocidad no puede aumentarse por encima del ajuste de velocidad establecido desde el FlexPendant.RAPID overview.5 segundos entre la orden y su influencia en el robot físico.Movimiento Definición de velocidad speeddata . Si se utiliza SpeedRefresh en la rutina de evento START o RESET.’ Información relacionada Para obtener más información sobre Consulte Instrucciones de posicionamiento Technical reference manual .El ajuste de velocidad para el movimiento en curso Continuación Limitaciones Recuerde que con SpeedRefresh el ajuste de velocidad no se hará momentáneamente.Lee el ajuste de velocidad actual en la página 867 3HAC16581-5 Revisión: L 509 © Copyright 2004-2011 ABB.

Los datos de ejecución se almacenan en un archivo para su análisis posterior. La grabación de los datos de tiempo de ejecución permanece activa hasta los momentos siguientes: • Ejecución de la instrucción SpyStop • Inicio de la ejecución del programa desde el principio • Carga de un nuevo programa • Siguiente arranque en caliente SpyStart se ve afectado por Auto Condition Reset Limitaciones Evite usar el disquete (opcionalmente) para la grabación.log en el disco HOME. El uso previsto de esta información es la depuración de los programas de RAPID. Argumentos SpyStart File Archivo Tipo de dato: string La ruta y el nombre del archivo que contiene los datos de ejecución. específicamente en sistemas multitarea (sólo es necesario incluir SpyStart SpyStop en una de las tareas de programa). ya que la escritura en el disquete es muy lenta. . Continúa en la página siguiente 510 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Reservados todos los derechos.171 SpyStart . Ejecución de programas El archivo especificado se abre para escritura y los datos de tiempo de ejecución empiezan a grabarse en el archivo.Comienza la grabación de los datos de tiempo de ejecución Utilización SpyStart se utiliza para iniciar la grabación de los datos de instrucciones y tiempos durante la ejecución. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SpyStart.1 Instrucciones 1. porque esta función aumenta el tiempo de ciclo y consume más memoria en el dispositivo de memoria de almacenamiento que utilice.Comienza la grabación de los datos de tiempo de ejecución 1. Ejemplo 1 SpyStart "HOME:/spy. Empieza la grabación de los datos de tiempo de ejecución en el archivo spy. No utilice nunca la función de espía en los programas de producción.log".171 SpyStart .

1. En el caso de las llamadas a procedimientos (módulos) NOSTEPIN.Comienza la grabación de los datos de tiempo de ejecución Continuación Gestión de errores Si no es posible abrir el archivo de la instrucción SpyStart. 4 WAIT 14 MAIN MoveL p1. . tool0. 111 WAIT 118 MAIN MoveL p2. A continuación. 2 READY 2 MAIN ENDFOR 2 READY 2 MAIN mynum:=mynum+i. 111 READY 111 MAIN ENDIF 108 READY 108 MAIN MoveL p2. fine. tool0. fine.errnum"). v1000.171 SpyStart . fine. Continúa en la página siguiente 3HAC16581-5 Revisión: L 511 © Copyright 2004-2011 ABB. 326 READY 326 MAIN SpyStop. La columna OUT muestra el tiempo en ms en la salida de la instrucción ejecutada. la lista de salida sólo muestra el nombre del procedimiento al que se llama. v1000. La columna CODE muestra si la instrucción está preparada (READY) o si está en espera (WAIT) de completarse en el momento OUT. 326 READY SYSTEM TRAP SYSTEM TRAP La columna TASK muestra la tarea de programa que se ejecuta. la variable de sistema ERRNO cambia a ERR_FILEOPEN (consulte "Tipos de datos . tool0. tool0. v1000. 2 READY 2 MAIN ENDFOR 2 READY 3 MAIN SetDo1. Todos los tiempos se indican en ms (valores relativos). v1000.1 Instrucciones 1. este error puede ser gestionado en el gestor de errores. fine. Formato de archivo TASK INSTR IN CODE OUT MAIN FOR i FROM 1 TO 3 DO 0 READY 0 MAIN mynum:=mynum+i. 1 READY 1 MAIN ENDFOR 2 READY 2 MAIN mynum:=mynum+i. 3 READY 3 MAIN IF di1=0 THEN 3 READY 4 MAIN MoveL p1. SYSTEM TRAP significa que el sistema está haciendo algo distinto de la ejecución de instrucciones de RAPID. Esto se repite con cada instrucción ejecutada en la rutina NOSTEPIN. La columna IN muestra el tiempo en ms en la entrada de la instrucción ejecutada. Reservados todos los derechos. La columna INSTR muestra la instrucción ejecutada en la tarea de programa especificada.

171 SpyStart . Type Auto Condition Reset 512 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.1 Instrucciones 1.Comienza la grabación de los datos de tiempo de ejecución Continuación Sintaxis SpyStart [File’:=’]<expression (IN) of string>’. Reservados todos los derechos. . Topic Controller.’ Información relacionada Para obtener más información sobre Consulte Detención de la grabación de los datos de ejecución SpyStop .Detiene la grabación de los datos de tiempo de ejecución en la página 513 Condición automática Manual de referencia técnica .Parámetros del sistema.

. IF debug = TRUE SpyStop.Comienza la grabación de los datos de tiempo de ejecución en la página 510 3HAC16581-5 Revisión: L 513 © Copyright 2004-2011 ABB. Más ejemplos A continuación aparecen más ejemplos de la instrucción SpyStop.log del disco HOME.172 SpyStop .log".Detiene la grabación de los datos de tiempo de ejecución Utilización SpyStop se utiliza para detener la grabación de los datos de tiempo durante la ejecución. No utilice nunca la función de espía en los programas de producción. Detiene la grabación de los datos de tiempo de ejecución en el archivo especificado por la instrucción SpyStart anterior. detener la grabación y cerrar el archivo spy. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción SpyStop .Detiene la grabación de los datos de tiempo de ejecución 1. Limitaciones Evite usar el disquete (opcionalmente) para la grabación. se inicia la grabación de datos de ejecución en el archivo spy. Si no se ha ejecutado anteriormente la instrucción SpyStart. la instrucción SpyStop no se tiene en cuenta.log. se almacena en un archivo para su análisis posterior. Ejecución de programas La grabación de los datos de ejecución se detiene y el archivo especificado por la instrucción SpyStart anterior se cierra. Esta información.’ Información relacionada Para obtener más información sobre Consulte Inicio de la grabación de los datos de ejecución SpyStart .172 SpyStop . porque esta función aumenta el tiempo de ciclo y consume más memoria en el dispositivo de memoria de almacenamiento que utilice. Consulte también Más ejemplos en la página 513. produce_sheets. Si el indicador de depuración tiene el valor TRUE. Reservados todos los derechos. ya que la escritura en el disquete es muy lenta. Ejemplo 1 SpyStop.1 Instrucciones 1. que puede resultar útil a la hora de optimizar el tiempo de ciclo de ejecución. Ejemplo 1 IF debug = TRUE SpyStart "HOME:/spy. Realizar la producción en sí. Sintaxis SpyStop’.

Carga un módulo de programa durante la ejecución Utilización StartLoad se utiliza para iniciar la carga de un módulo de programa en la memoria de programa durante la ejecución.173 StartLoad . Modo estático En la tabla siguiente se muestra cómo afectan dos operaciones distintas a los programas o módulos de sistema cargados en el modo estático. Continúa en la página siguiente 514 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción StartLoad. El módulo cargado debe estar conectado a la tarea de programa con la instrucción WaitLoad antes de poder usar cualquier de sus símbolos o rutinas. En función del modo utilizado. Trasladar el puntero de programa Abrir un nuevo programa de a main desde TP RAPID Módulo de programa No se ve afectado Descargado Módulo de sistema No se ve afectado No se ve afectado Modo dinámico En la tabla siguiente se muestra cómo afectan dos operaciones distintas a los programas o módulos de sistema cargados en el modo dinámico. algunas operaciones descargarán el módulo o no afectarán al módulo en ningún sentido.173 StartLoad .1 Instrucciones 1. Mientras se está realizando la carga. las otras instrucciones pueden ejecutarse en paralelo. Trasladar el puntero de programa Abrir un nuevo programa de a main desde TP RAPID Módulo de programa Descargado Descargado Módulo de sistema Descargado Descargado Tanto los módulos cargados en modo estático como los cargados en modo dinámico se descargan al utilizar la instrucción UnLoad.Carga un módulo de programa durante la ejecución 1. . Los programas o módulos de sistema pueden cargarse en el modo estático (predeterminado) o en el modo dinámico. El módulo de programa cargado se añade a los módulos que ya existen en la memoria de programa. Reservados todos los derechos.

Para ahorrar tiempo de vinculación. La instrucción WaitLoad espera hasta que la carga y la vinculación han terminado.Carga un módulo de programa durante la ejecución Continuación Consulte también Más ejemplos en la página 516. ! Execution in new program module PART_B %"routine_b"%. diskhome \File:="PART_B.MOD". el programa ejecuta la rutina routine_a del módulo PART_A. ! Wait until loading and linking of new program module PART_B is ready WaitLoad load1. De lo contrario. . load1. La variable load1 almacena la identidad de la sesión de carga. Argumentos StartLoad [\Dynamic] FilePath [\File] LoadNo [\Dynamic] Tipo de dato: switch El modificador permite cargar un módulo de programa en modo dinámico. la carga se realiza en modo estático. ! Unload of old program module PART_A UnLoad diskhome \File:="PART_A. ! Executing in parallel in old module PART_A containing routine_a %"routine_a"%. ! Start loading of new program module PART_B containing routine routine_b in dynamic mode StartLoad \Dynamic. FilePath Tipo de dato: string La ruta y el nombre del archivo que se cargará en la memoria de programa. es necesario definirlo con este argumento. En paralelo con la carga.MOD". Inicia la carga del módulo de programa PART_B. Continúa en la página siguiente 3HAC16581-5 Revisión: L 515 © Copyright 2004-2011 ABB. Ejemplo 1 VAR loadsession load1. actualizada por StartLoad y a la que se hace referencia desde WaitLoad. [\File] Tipo de dato: string Cuando se excluye el nombre del archivo en el argumento FilePath.MOD desde diskhome en la memoria de programas con la instrucción StartLoad. Reservados todos los derechos.1 Instrucciones 1. El módulo se carga en el modo dinámico. El nombre de archivo se excluye cuando se utiliza el argumento \File . las instrucciones UnLoad y WaitLoad pueden combinarse en la instrucción WaitLoad mediante el uso del argumento \UnLoadPath.MOD.173 StartLoad .

MOD". Ejecución de programas La ejecución de StartLoad sólo solicita la carga y continúa directamente en la instrucción siguiente. Para la carga de un programa que contiene un procedimiento main en un programa principal (que contiene otro procedimiento main). "HOME:" \File:="/DOORDIR/DOOR1. la instrucción WaitLoad espera primero a que se complete la carga .WaitLoad.MOD desde HOME: en el directorio DOORDIR en la memoria de programa. WaitLoad load1. consulte la instrucción Load. Ejemplo 1 StartLoad \Dynamic.Carga un módulo de programa durante la ejecución Continuación LoadNo Tipo de dato: loadsession Existe una referencia en la sesión de carga que debe usarse en la instrucción WaitLoad para conectar el módulo de programa cargado a la tarea de programa. Lo mismo que en el ejemplo 1. Reservados todos los derechos. Más ejemplos A continuación aparecen más ejemplos de cómo usar la instrucción StartLoad. pero el módulo se carga en el modo estático. Ejemplo 2 StartLoad \Dynamic. . Ejemplo 3 StartLoad "HOME:" \File:="/DOORDIR/DOOR1. fácil de comprender y mantener. load1. "HOME:" \File:="/DOORDIR/DOOR1. pero con otra sintaxis. y después el módulo será vinculado e inicializado. sin esperar a que se complete la carga.MOD". Carga el módulo de programa DOOR1. pero será un error de tiempo de ejecución al ejecutar una referencia no resuelta. load1. si no se completado aún. load1. A continuación. Lo mismo que en los ejemplos 1 y 2 anteriores. El módulo de programa se carga en el modo dinámico. Las referencias no resueltas se aceptarán de forma predeterminada para esta operación de carga StartLoad . "HOME:/DOORDIR/DOOR1.MOD".MOD".1 Instrucciones 1. La inicialización del módulo cargado devuelve todas las variables del nivel de módulo a sus valores iniciales. todas las operaciones de carga y descarga de módulos de programa deben hacerse en el módulo principal (“main”) que siempre está presente en la memoria de programa durante la ejecución.173 StartLoad .MOD". "HOME:" \File:="/DOORDIR/DOOR1. Para conseguir una estructura de programa idónea. load1. Es lo mismo que: Load \Dynamic. Continúa en la página siguiente 516 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Ejemplo 4 StartLoad \Dynamic.

Programar una sesión de carga en la página 1226 Carga de un módulo de programa Load .Conecta el módulo cargado a la tarea tarea en la página 729 Sesión de carga loadsession . Si la variable especificada en el argumento LoadNo ya se está utilizando.Carga un módulo de programa durante la ejecución en la página 217 Descarga de un módulo de programa UnLoad . la variable de sistema ERRNO cambia a ERR_LOADNO_INUSE. A continuación.’ [LoadNo ’:=’] <variable (VAR) of loadsession>’.´] [FilePath’ :=’] <expression (IN) of string> [’\’File ’:=’ <expression (IN) of string> ] ’. A continuación. este error puede ser gestionado en el gestor de errores.Cancela la carga de un módulo en de programa la página 37 Llamada a procedimiento con enlazamiento en tiempo de ejecución Technical reference manual .Llamada a procedimiento 3HAC16581-5 Revisión: L 517 © Copyright 2004-2011 ABB.RAPID overview.Descarga un módulo de programa durante la ejecución en la página 701 Cancelación de la carga de un módulo CancelLoad . .Rutinas . este error puede ser gestionado en el gestor de errores.’ Información relacionada Para obtener más información sobre Consulte Conexión de un módulo cargado a una WaitLoad . la variable de sistema ERRNO cambia a ERR_FILNOTFND.173 StartLoad . Reservados todos los derechos. Sintaxis StartLoad [´\´Dynamic ´.Carga un módulo de programa durante la ejecución Continuación Gestión de errores Si no se encuentra el archivo especificado en la instrucción.1 Instrucciones 1. sección Características básicas .

MoveL p100. StorePath.. StartMove. RestoPath. si el movimiento se reinicia en una tarea de movimiento conectada que pertenece a un grupo de tarea coordinada sincronizada. para el reinicio del movimiento en esa tarea. v100..174 StartMove . . Continúa en la página siguiente 518 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. fine. es posible utilizar esta instrucción en el tipo siguiente de tareas de programa: • Tarea de movimiento. z10. El robot empieza de nuevo a moverse cuando se activa la entrada ready_input.174 StartMove . StartMove. tool1. • Tarea sin movimiento. . p:= CRobT(\Tool:=tool1). • Tras la ejecución de la secuencia StorePath ..1 Instrucciones 1. para el reinicio del movimiento en la tarea de movimiento conectada Además. el movimiento se reinicia en todas las tareas cooperativas. para el reinicio del movimiento en la tarea main. .. como por ejemplo ERR_PATH_STOP o un error de proceso específico tras la gestión en el gestor de ERROR. • Los errores de movimiento elevador asincrónicamente.. WaitDI ready_input. tool1. • La instrucción StopMove..Reanuda el movimiento del robot 1. para el reinicio del movimiento en esa tarea.1. Reservados todos los derechos. Ejemplo 1 StopMove. En el sistema básico. Ejemplo 2 . fine. RestoPath.. En el sistema MultiMove. v100. ! New temporary movement MoveL p1. • Cualquier otra tarea. es posible utilizar esta instrucción en el tipo siguiente de tareas de programa: • Tarea main T_ROB1. Tras volver a la posición del paro p (en este ejemplo igual a p100). v100. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción StartMove. MoveL p..Reanuda el movimiento del robot Utilización StartMove se utiliza para reanudar el movimiento del robot y los ejes externos y el proceso perteneciente una vez detenido el movimiento. el robot está empezando a moverse de nuevo en el nivel de trayectoria básico. tool1.

• Las unidades mecánicas de la tarea de movimiento conectada a la tarea sin movimiento en la que se ejecute StartMove.Reanuda el movimiento del robot Continuación Argumentos StartMove [\AllMotionTasks] [\AllMotionTasks] Tipo de dato: switch Reinicia el movimiento de todas las unidades mecánicas del sistema.174 StartMove . Estos errores pueden ser gestionados en el gestor de errores: • En caso de ERR_PATHDIST. las unidades mecánicas se reinician en todas las tareas cooperativas. Con el modificador \AllMotionTasks. Ejecución de programas Cualquier proceso asociado al movimiento detenido se reanuda al mismo tiempo que se reanuda el movimiento. Si la ejecución del programa se detiene varias veces durante la recuperación del movimiento sobre la trayectoria con StartMove. El modificador [\AllMotionTasks] sólo puede usarse desde tareas de programa sin movimiento. . independientemente de qué tarea ejecute la instrucción StartMove. Para reiniciar una aplicación MultiMove en el modo sincronizado coordinado. si las unidades mecánicas se reinician en una tarea de movimiento conectada que pertenece a un grupo de tarea coordinada sincronizada. StartMove debe ser ejecutado en todas las tareas de movimiento implicadas en la coordinación. En un sistema básico sin el modificador \AllMotionTasks. Continúa en la página siguiente 3HAC16581-5 Revisión: L 519 © Copyright 2004-2011 ABB. Además. la variable de sistema ERRNO cambia a ERR_STARTMOVE. la variable de sistema ERRNO cambia a ERR_ALRDY_MOVING. En un sistema MultiMove sin el modificador \AllMotionTasks. la variable de sistema ERRNO cambia a ERR_PATHDIST.1 Instrucciones 1. la variable del sistema ERRNO cambia a ERR_PROGSTOP Si el robot se está moviendo en el momento en que se ejecuta StartMove. si los tiempos son correctos. se reinician los movimientos de las unidades mecánicas siguientes: • Las unidades mecánicas de la tarea de movimiento que ejecute StartMove. Reservados todos los derechos. (sólo permitido con las tareas de programa sin movimiento). mueva el robot para acercarlo a la trayectoria antes de intentar RETRY. ERR_STARTMOVE también puede deberse a un paro de emergencia. se reinician los movimientos de las unidades mecánicas siguientes: • Siempre las unidades mecánicas de la tarea principal. Gestión de errores Si el robot está demasiado alejado de la trayectoria (más de 10 mm ó 20 grados) para realizar el reinicio del movimiento interrumpido. se reinician los movimientos de todas las unidades mecánicas del sistema. Si el robot se encuentra en espera en el momento en que se ejecuta StartMove.

Detiene el movimiento del robot en la página 548 Continuación de un movimiento StartMoveRetry . Reservados todos los derechos.1 Instrucciones 1. Sintaxis StartMove [’\’AllMotionTasks]’.174 StartMove .Reanuda el movimiento del robot Continuación • En caso de ERR_STARTMOVE.StartMove respecto de alguna tarea de movimiento.’ Información relacionada Para obtener más información Consulte sobre Detención del movimiento StopMove .Reanuda el movimiento y la ejecución del robot en la página 521 Más ejemplos StorePath .Restablece la trayectoria después de una interrupción en la página 386 520 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. No es posible realizar ninguna recuperación en caso de error si se ejecuta StartMove dentro de cualquier gestor de errores. ERR_PROGSTOP o ERR_ALRDY_MOVING espere unos instantes antes de intentar ejecutar RETRY. .Almacena la trayectoria cuando se produce una interrupción en la página 555 RestoPath . Limitaciones Sólo se permite a una de las distintas tareas sin movimiento la realización de la secuencia StopMove .

• Si se producen problemas con el robot. Reservados todos los derechos. z30.Reanuda el movimiento y la ejecución del robot 1. Durante el movimiento hasta la posición p1.. En el gestor de ERROR. • RestoPath vuelve al nivel de trayectoria original y devuelve el sistema MultiMove al modo sincronizado. .Reanuda el movimiento y la ejecución del robot Utilización StartMoveRetry se utiliza para reanudar el movimiento del robot y de los ejes externos.. A continuación. tool1. p_err := CRobT(\Tool:= tool1 \WObj:=wobj0). MoveL p1\ID:=50.175 StartMoveRetry . de forma que los movimientos sincronizados coordinados se detienen. ENDIF ENDPROC Éste es un ejemplo de un sistema MultiMove con movimientos sincronizados coordinados (dos robots que funcionan alrededor de un objeto de trabajo en rotación). tool1 \WObj:=stn1. RestoPath.. ! Fix the problem MoveL p_err. v1000. v100. .1 Instrucciones 1. • Antes de RestoPath es necesario volver a la posición del error. y reintenta la ejecución desde un gestor de ERROR. . pasa a un nuevo nivel de trayectoria y pone el sistema MultiMove en el modo independiente. este robot sufre el error ERR_PATH_STOP y la ejecución se transfiere al gestor de ERROR. Continúa en la página siguiente 3HAC16581-5 Revisión: L 521 © Copyright 2004-2011 ABB. junto con el proceso correspondiente.. se inician los movimientos en el nuevo nivel de trayectoria. fine.175 StartMoveRetry . Ejemplo 1 VAR robtarget p_err. StartMoveRetry. se hace lo siguiente: • StorePath almacena la trayectoria original. Esta instrucción puede usarse en un gestor de ERROR de los tipos siguientes de tareas de programa: • Tarea principal T_ROB1 de un sistema básico • Cualquier tarea de movimiento de un sistema MultiMove Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción StartMoveRetry. ERROR IF ERRNO = ERR_PATH_STOP THEN StorePath. el otro robot cooperativo sufre un error de proceso.

En los sistemas MultiMove que ejecutan movimientos sincronizados coordinados. Si el robot se está moviendo en el momento en que se ejecuta StartMoveRetry. las instrucciones StorePath . Si la ejecución del programa se detiene varias veces durante la recuperación del movimiento sobre la trayectoria con StartMoveRetry. Gestión de errores Si el robot está demasiado alejado de la trayectoria (más de 10 mm ó 20 grados) para realizar el reinicio del movimiento interrumpido. Si el robot se encuentra en espera en el momento en que se ejecuta StartMoveRetry. dado que StartMoveRetry sólo puede ejecutarse en un gestor de errores. • Si se necesita para un movimiento en cualquier gestor de ERROR. No es posible hacer ninguna recuperación en el caso de estos errores.’ Continúa en la página siguiente 522 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB.. si el robot fue movido en el nivel de StorePath.1 Instrucciones 1. También devuelve la ejecución para reanudar la ejecución normal. es necesario seguir las reglas de programación siguientes en el gestor de ERROR: • StartMoveRetry debe usarse en todas las tareas de programa cooperativas. la variable del sistema ERRNO cambia a ERR_PROGSTOP. la variable de sistema ERRNO cambia a ERR_ALRDY_MOVING. . Reservados todos los derechos. • El programa debe devolver el robot hasta la posición del error antes de ejecutar RestoPath. Sólo se reanuda el movimiento en las unidades mecánicas de la tarea de programa en la que se ejecute StartMoveRetry.. pero en una operación indivisible. RestoPath deben usarse en todas las tareas de programa cooperativas. Sintaxis StartMoveRetry ’.Reanuda el movimiento y la ejecución del robot Continuación • StartMoveRetry reinicia el movimiento interrumpido y el proceso que esté en curso. Limitaciones Sólo puede usarse en los gestores de ERROR de las tareas de movimiento. la variable de sistema ERRNO cambia a ERR_STARTMOVE.175 StartMoveRetry . la variable de sistema ERRNO cambia a ERR_PATHDIST. Ejecución de programas StartMoveRetry realiza la secuencia siguiente: • Movimiento de recuperación de la trayectoria • Reinicio de los procesos asociados al movimiento detenido • Reanudación del movimiento interrumpido • RETRY de la ejecución del programa StartMoveRetry hace lo mismo que StartMove y RETRY juntos.

Detiene el movimiento del robot en la página 548 Continuación de un movimiento StartMove .Restablece la trayectoria después de una interrupción en la página 386 3HAC16581-5 Revisión: L 523 © Copyright 2004-2011 ABB.Reanuda la ejecución después de un error en la página 388 Almacenamiento y restauración StorePath . .Reanuda el movimiento del robot en la página 518 Reanudación de la ejecución después de un error RETRY .1 Instrucciones 1.Reanuda el movimiento y la ejecución del robot Continuación Información relacionada Para obtener más información Consulte sobre Detención del movimiento StopMove .175 StartMoveRetry .Almacena la trayectoria cuando se produce de trayectorias una interrupción en la página 555 RestoPath . Reservados todos los derechos.

Ejemplo 4 STCalib gun1 \TipWear \RetTipWear := curr_tip_wear. Calibra una pistola servo después de un cambio de herramienta. antes de continuar con la siguiente instrucción de RAPID. Ejemplo 1 VAR num curr_tip_wear. STCalib gun1 \ToolChg. IF retval > max_adjustment THEN TPWrite "The tips are lost!". Calibra una pistola servo después de un cambio de herramienta. El primer movimiento de cierre se usa para detectar la posición de contacto de las puntas. Calibra una pistola servo después de un cambio de puntas. Calibra una pistola servo cuando se han desgastado las puntas.176 STCalib . VAR num retval. Calibra una pistola servo después de un cambio de puntas.1 Instrucciones 1. Se espera hasta que la calibración de la pistola haya finalizado. Resulta necesario después de cambiar las puntas o cambiar de herramienta y se recomienda después de la realización de una rectificación de las puntas o después de utilizar una herramienta durante cierto tiempo.Calibra una herramienta servo Utilización STCalib se utiliza para calibrar la distancia entre dos puntas de una herramienta. Comprueba si faltan las puntas. . ¡Atención! La herramienta realiza dos movimientos de cierre y apertura durante la calibración. . Ejemplo 5 STCalib gun1 \TipChg \RetPosAdj:=retval. Continúa en la página siguiente 524 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Ejemplo 2 STCalib gun1 \ToolChg \Conc. Ejemplos básicos A continuación aparecen algunos ejemplos básicos de la instrucción STCalib. Continuar con la siguiente instrucción de RAPID sin esperar a que finalice la calibración Ejemplo 3 STCalib gun1 \TipChg. CONST num max_adjustment := 20. Reservados todos los derechos.Calibra una herramienta servo 1...176 STCalib . Guarda el desgaste de las puntas en la variable curr_tip_wear. Ejemplo 6 STCalib gun1 \TipChg \PrePos:=10.

[\PrePos] Tipo de dato: num La posición a la que moverse a alta velocidad antes de empezar la búsqueda de la posición de contacto a menor velocidad [en mm]. [\RetTipWear] Tipo de dato: num El desgaste de puntas detectado [en mm]. Argumentos STCalib ToolName [\ToolChg] | [\TipChg] | [\TipWear] [\RetTipWear] [\RetPosAdj] [\PrePos] [\Conc] ToolName Tipo de dato: string El nombre de la unidad mecánica. [\TipChg] Tipo de dato: switch Calibración tras un cambio de puntas. dado que se usa el modificador \Conc (la siguiente instrucción de RAPID se ejecutará antes de que finalice el proceso de calibración). el parámetro curr_tip_wearno contendrá ningún valor válido.Calibra una herramienta servo Continuación Calibra una pistola servo después de un cambio de puntas. Ejemplo 7 Ejemplo de combinación no válida: STCalib gun1 \TipWear \RetTipWear := curr_tip_wear \Conc. Se mueve rápidamente hasta la posición de 10 mm y empieza a buscar la posición de contacto a una velocidad menor. [\RetPosAdj] Tipo de dato: num El ajuste de posición desde la última calibración [mm].176 STCalib . [\ToolChg] Tipo de dato: switch Calibración tras un cambio de herramienta. Continuar con la siguiente instrucción de RAPID sin esperar a que finalice la calibración En este caso. [\Conc] Tipo de dato: switch Continúa en la página siguiente 3HAC16581-5 Revisión: L 525 © Copyright 2004-2011 ABB. . [\TipWear] Tipo de dato: switch Calibración tras el desgaste de las puntas. Reservados todos los derechos. Realizar una calibración de desgaste de puntas.1 Instrucciones 1.

¡ATENCIÓN! Si se usa el modificador Conc. Consulte la información que aparece más abajo. Cuando comienza la calibración. elíjala cuidadosamente! ¡Es importante que las puntas no entren en contacto hasta después de alcanzar la posición previa! De lo contrario. es posible definir una posición previa. La posición previa no se tiene en cuenta si es mayor que la posición actual de la pistola (para no ralentizar la calibración). se abre rápidamente y se cierra rápidamente con una fuerza reducida y se vuelve a abrir en una secuencia. se cierre rápidamente con una fuerza reducida y se vuelva a abrir en una secuencia. ¡Si utiliza una posición previa. El argumento puede utilizarse para acortar el tiempo de ciclo. . se cierre rápidamente con una fuerza reducida y se vuelva a abrir en una secuencia. por ejemplo.176 STCalib . consulte Funciones de sistema operativo de RobotWare STIsOpen. Para obtener más detalles. Continúa en la página siguiente 526 3HAC16581-5 Revisión: L © Copyright 2004-2011 ABB. Ajuste de posición El argumento opcional RetPosAdj puede usarse para detectar si. El desgaste de la punta permanece sin cambios. el brazo de la pistola se mueve rápidamente hasta la posición previa. El valor puede ser negativo o positivo. la instrucción se considerará terminada tan pronto como se inicia y por tanto el valor de retorno RetTipWear no estará disponible. Utilización de una posición previa Para acelerar la calibración.1 Instrucciones 1. El parámetro conserva el valor del ajuste posicional desde la última calibración. Calibración tras un cambio de puntas: La herramienta se cerrará a baja velocidad en espera de que el contacto de las puntas se abra rápidamente. El desgaste de la punta se restablecerá. *) El segundo movimiento también será rápido si se usa la opción \TipWear. En este caso. la exactitud de la calibración será insuficiente y es posible que se produzcan errores de supervisión de movimientos.Calibra una herramienta servo Continuación Distintas instrucciones consecutivas se ejecutan mientras la pistola está en movimiento. Reservados todos los derechos. las puntas se han perdido tras un cambio de puntas. Si se utiliza el parámetro RetTipWear. Calibración tras un cambio de herramienta: La herramienta se cerrará a baja velocidad en espera de que el contacto de las puntas se abra rápidamente. se actualiza el valor de desgaste de las puntas. Esto resulta útil. el valor de RetTipWear será devuelto por la función STIsOpen. Calibración tras el desgaste de las puntas: La herramienta se cerrará a alta velocidad hasta la posición de contacto. El desgaste de la punta se actualiza. Ejecución de programas Modos de calibración Si la unidad mecánica existe. se detiene y continúa lentamente *) para poder detectar la posición de contacto de la punta. se ordena la calibración de la herramienta servo. si se desea controlar dos pistolas al mismo tiempo. La calibración se realiza de acuerdo con los modificadores. por ejemplo.

Si la instrucción es ejecutada desde una tarea en segundo plano y se produce un paro de emergencia. la variable de sistema ERRNO cambia a ERR_NO_SGUN. la variable de sistema ERRNO cambia a ERR_SGUN_NOTACT.Abre una herramienta servo en la página 546 Cierre de una herramienta servo STClose . Si la instrucción es ejecutada desde una tarea en segundo plano y el sistema se encuentra en el estado Motors OFF. Si la posición de la herramienta servo no está inicializada. Reservados todos los derechos. la variable de sistema ERRNO cambia a ERR_SGUN_NOTOPEN.’ Información relacionada Para obtener más información sobre Consulte Apertura de una herramienta servo STOpen . Utilice la instrucción ActUnit para activar la herramienta servo.1 Instrucciones 1. El desgaste de la punta se restablecerá.’ [ ’\’ToolChg] | [’\’TipChg] | [ ’\’TipWear] [’ \’RetTipWear’ :=’ < variable or persistent(INOUT) of num > ]’. Sintaxis STCalib [ ’ToolName’ :=’ ] < expression (IN) of string > ‘. Es necesario inicializar la posición de la herramienta servo la primera vez que se instala la pistola o después de hacer una calibración fina. No se pierde ningún dato de proceso. Todos estos errores pueden ser gestionados en un gestor de errores de RAPID. Si la unidad mecánica de la herramienta servo no está activada. la instrucción será finalizada y la variable de sistema ERRNO cambia a ERR_SGUN_ESTOP. .’ [ ’\’RetPosAdj’ :=’ < variable or persistent(INOUT) of num > ]’. Utilice la rutina de servicio ManServiceCalib o realice una calibración de cambio de punta.Calibra una herramienta servo Continuación Gestión de errores Si el nombre especificado para la herramienta servo no corresponde a una herramienta servo configurada.’ [ ’\’PrePos’ :=’ < expression (IN) of num > ]’ [ ’\’Conc’ ]. Si las puntas de la herramienta servo no están sincronizadas. la variable de sistema ERRNO cambia a ERR_SGUN_MOTOFF. por ejemplo el desgaste de las puntas.Cierra una herramienta servo en la página 528 3HAC16581-5 Revisión: L 527 © Copyright 2004-2011 ABB. Si la pistola no está abierta al ejecutar STCalib. Recuerde que si la instrucción es ejecutada desde la tarea principal. Si se especifica el argumento PrePos con un valor menor que cero. la variable de sistema ERRNO cambia a ERR_SGUN_NOTINIT. la variable de sistema ERRNO cambia a ERR_SGUN_NEGVAL. la variable de sistema ERRNO cambia a ERR_SGUN_NOTSYNC. el puntero de programa se detiene en la instrucción y ésta se reinicia desde el principio al reiniciar el programa.176 STCalib . Las puntas de la herramienta servo deben estar sincronizadas si se ha perdido y/o actualizado el cuentarrevoluciones.

.2 Set weld_start2. Ejemplo 5 Ejemplo de combinación no válida: STClose gun1. 2000. En este caso. 1000.177 STClose . Ejemplo 3 Modo concurrente STClose gun1. 5. La ejecución del programa de RAPID continúa sin esperar a que se cierre la pistola gun2. 5 \Conc.Cierra una herramienta servo 1. ENDIF Se obtiene el grosor medido en la función STIsClosed. Cierra la pistola servo con una fuerza de punta de 1000 N y un grosor de plancha de 5 mm.2 Set weld_start1. Cierra la pistola servo con una fuerza de punta de 2000 N y un grosor de plancha de 3 mm. variables curr_thickness1 y curr_thickness2. dado que se usa el modificador \Conc (l