02 Instrucciones Funciones Tipos de Datos RAPID

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 1362

ABB Robotics

Manual de referencia tcnica


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 tcnica


Instrucciones, funciones y tipos de datos de RAPID
RobotWare 5.14
ID de documento: 3HAC16581-5
Revisin: L

Copyright 2004-2011 ABB. Reservados todos los derechos.

La informacin 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 ningn
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 garanta por parte de ABB por las prdidas,
lesiones, daos materiales, idoneidad para un fin determinado ni garantas similares.
ABB no ser en ningn caso responsable de los daos accidentales o consecuentes
que se produzcan como consecuencia del uso de este manual o de los productos
descritos en el mismo.
Se prohbe la reproduccin o la copia de este manual o cualquiera de sus partes si
no se cuenta con una autorizacin escrita de ABB.
Usted puede obtener copias adicionales de este manual a travs de ABB.
El idioma original de esta publicacin es el ingls. Cualquier otro idioma suministrado
ha sido traducido del ingls.

Copyright 2004-2011 ABB. Reservados todos los derechos.


ABB AB
Robotics Products
SE-721 68 Vsters
Suecia

Contenido

Contenido
Descripcin 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 aceleracin ............................................................................


ActUnit - Activa una unidad mecnica ...................................................................
Add - Suma un valor numrico .............................................................................
AliasIO - Define una seal de E/S con un nombre de alias ........................................
":=" - Asigna un valor .........................................................................................
BitClear - Desactiva un bit especfico de un dato de byte ..........................................
BitSet - Activa un bit especfico de un dato de byte ..................................................
BookErrNo - Registra un nmero de error de sistema de RAPID ................................
Break - Interrumpe la ejecucin del programa .........................................................
CallByVar - Llama a un procedimiento mediante una variable ...................................
CancelLoad - Cancela la carga de un mdulo .........................................................
CheckProgRef - Comprobar referencias de programa ..............................................
CirPathMode - Reorientacin de la herramienta durante trayectorias circulares ............
Clear - Borra el valor ..........................................................................................
ClearIOBuff - Vaca el bfer 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 temporizacin .............................
ClkStop - Detiene un reloj utilizado para la temporizacin .........................................
Close - Cierra un archivo o un canal serie ..............................................................
CloseDir - Cierra un directorio .............................................................................
Comentario - Comentario ....................................................................................
Compact IF (IF compacto) - Si se cumple una condicin, entonces... (una instruccin) ....
ConfJ - Controla la configuracin durante el movimiento de los ejes ...........................
ConfL - Monitoriza la configuracin durante el movimiento lineal ................................
CONNECT - Conecta una interrupcin 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 conexin con un generador de correcciones ........................
CorrDiscon - Cierra la conexin con un generador de correcciones ............................
CorrWrite - Escribe en un generador de correcciones ..............................................
DeactUnit - Desactiva una unidad mecnica ...........................................................
Decr - Reduce un nmero en 1 ............................................................................
DitherAct - Activa la funcin de oscilacin del servo suave .......................................
DitherDeact - Desactiva la funcin de oscilacin 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 mdulo ........................................................................
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 ejecucin del programa ..............................................................
ExitCycle - Interrumpe el ciclo actual y pasa al siguiente ..........................................
FOR - Repite un nmero determinado de veces ......................................................
GetDataVal - Obtiene el valor de un objeto de datos ................................................
GetSysData - Obtiene datos del sistema ................................................................
GetTrapData - Obtiene datos de interrupcin para la rutina TRAP actual .....................
GOTO - Salta a otra instruccin ...........................................................................
GripLoad - Define la carga til de un robot .............................................................

3HAC16581-5 Revisin: 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 mueca hueca en los modelos IRB5402 e IRB5403 ....


IDelete - Cancela una interrupcin ........................................................................
IDisable - Desactiva todas las interrupciones ..........................................................
IEnable - Habilita el uso de interrupciones .............................................................
IError - Solicita una interrupcin para errores .........................................................
IF - Si se cumple una condicin, ...; de lo contrario, ... ..............................................
Incr - Aumenta en 1 un valor ...............................................................................
IndAMove - Movimiento independiente de posicin absoluta .....................................
IndCMove - Movimiento independiente continuo .....................................................
IndDMove - Movimiento independiente de posicin delta ..........................................
IndReset - Restablecimiento independiente ...........................................................
IndRMove - Movimiento independiente de posicin relativa ......................................
InvertDO - Invierte el valor de una seal 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 - Interrupcin 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 seal analgica de entrada ..........................
ISignalAO - Interrupciones a partir de una seal analgica de salida ...........................
ISignalDI - Solicita interrupciones a partir de una seal digital de entrada ....................
ISignalDO - Interrupciones a partir de una seal digital de salida ...............................
ISignalGI - Solicita interrupciones de un grupo de seales digitales de entrada ............
ISignalGO - Solicita interrupciones de un grupo de seales digitales de salida .............
ISleep - Desactiva una interrupcin ......................................................................
ITimer - Solicita una interrupcin temporizada ........................................................
IVarValue - Solicita una interrupcin a partir del valor de una variable .........................
IWatch - Activar una interrupcin .........................................................................
Etiqueta - Nombre de lnea ..................................................................................
Load - Carga un mdulo de programa durante la ejecucin .......................................
LoadId - Identificacin de carga de la herramienta o la carga til ................................
MakeDir - Crea un nuevo directorio ......................................................................
ManLoadIdProc - Identificacin de carga de los manipuladores IRBP .........................
MechUnitLoad - Define una carga til para una unidad mecnica ...............................
MotionSup - Desactiva/activa la supervisin del movimiento .....................................
MoveAbsJ - Mueve el robot a una posicin de ejes absoluta .....................................
MoveC - Mueve el robot en crculo .......................................................................
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 mecnicas 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 - Calibracin de la rotacin de una herramienta mvil .........................
MToolTCPCalib - Calibracin del TCP de una herramienta mvil ................................
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 aceleracin del TCP a lo largo de la trayectoria .....................
PathRecMoveBwd - Hace retroceder la grabadora de trayectorias ..............................

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 Revisin: 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 resolucin 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 recuperacin
tras ellos .........................................................................................................
PulseDO - Genera un pulso en una seal 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 parmetro del sistema .....................................
ReadErrData - Obtiene informacin 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 seal digital de salida .......................................................
ResetPPMoved - Restablecer el estado del puntero de programa movido en el modo
manual. ...........................................................................................................
ResetRetryCount - Restablece el nmero de reintentos ............................................
RestoPath - Restablece la trayectoria despus de una interrupcin ............................
RETRY - Reanuda la ejecucin despus de un error ................................................
RETURN - Finaliza la ejecucin de una rutina .........................................................
Rewind - Rebobina la posicin del archivo .............................................................
RMQEmptyQueue - Vaca 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 informacin 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 mdulo de programa .................................................................
SCWrite - Enva los datos de la variable a una aplicacin cliente ................................
SearchC - Realiza una bsqueda en crculo usando el robot .....................................
SearchExtJ - Busca con una o varias unidades mecnicas sin TCP ............................
SearchL - Realiza una bsqueda lineal usando el robot ............................................
SenDevice - Establece una conexin a un dispositivo de sensor ................................
Set - Activa una seal digital de salida ..................................................................
SetAllDataVal - Establece un valor en todos los objetos de datos de un conjunto definido .
SetAO - Cambia el valor de una seal analgica de salida ........................................
SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda ..........
SetDataVal - Establece el valor de un objeto de datos ..............................................
SetDO - Cambia el valor de una seal digital de salida .............................................
SetGO - Cambia el valor de un grupo de seales digitales de salida ...........................
SetSysData - Establece datos del sistema .............................................................
SingArea - Define el mtodo de interpolacin alrededor de puntos singulares ..............
SkipWarn - Omitir el ltimo aviso .........................................................................
SocketAccept - Acepta una conexin entrante ........................................................
SocketBind - Enlaza un zcalo a mi direccin IP y puerto .........................................
SocketClose - Cierra un zcalo ............................................................................
SocketConnect - Establece una conexin a un ordenador remoto ..............................
SocketCreate - Crea un nuevo zcalo ...................................................................

3HAC16581-5 Revisin: 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 - Enva 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 grabacin de los datos de tiempo de ejecucin .......................
SpyStop - Detiene la grabacin de los datos de tiempo de ejecucin ..........................
StartLoad - Carga un mdulo de programa durante la ejecucin ................................
StartMove - Reanuda el movimiento del robot .........................................................
StartMoveRetry - Reanuda el movimiento y la ejecucin 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 - Calibracin del TCP y de la rotacin de una herramienta estacionaria ....
SToolTCPCalib - Calibracin del TCP de una herramienta estacionaria .......................
Stop - Detiene la ejecucin 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 interrupcin ....................
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 funcin del valor de una expresin... ......................................................
TestSignDefine - Define una seal de prueba .........................................................
TestSignReset - Restablece todas las definiciones de seales de prueba ....................
TextTabInstall - Instalacin de una tabla de textos ...................................................
TPErase - Borra el texto mostrado en el FlexPendant ...............................................
TPReadDnum - Lee un nmero del FlexPendant .....................................................
TPReadFK - Lee las teclas de funcin ...................................................................
TPReadNum - Lee un nmero del FlexPendant .......................................................
TPShow - Cambia de ventana en el FlexPendant ....................................................
TPWrite - Escribe en el FlexPendant .....................................................................
TriggC - Movimiento circular del robot con eventos .................................................
TriggCheckIO - Define una comprobacin de E/S en una posicin fija .........................
TriggEquip - Define un evento de E/S basado en la posicin y el tiempo en la trayectoria .
TriggInt - Define una interrupcin dependiente de una posicin .................................
TriggIO - Define un evento de E/S de posicin 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 posicin fija en la trayectoria ..........
TriggSpeed - Define la velocidad del TCP en proporcin a una salida analgica con un
evento de escala fija de posicin-tiempo ...............................................................
TriggStopProc - Genera datos de reinicio para las seales de disparo ante paros .........
TryInt - Comprobar si un objeto de dato es un entero vlido ......................................
TRYNEXT - Salta sobre una instruccin que ha provocado un error ............................
TuneReset - Restablecimiento del ajuste del servo ..................................................
TuneServo - Ajuste de servos ..............................................................................
UIMsgBox - Cuadro de mensaje de usuario de tipo bsico ........................................
UIShow - Visualizacin de interfaz de usuario .........................................................

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 Revisin: 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 mdulo de programa durante la ejecucin ..............................


UnpackRawBytes - Desempaqueta datos de un dato de tipo rawbytes ........................
VelSet - Cambia la velocidad programada ..............................................................
WaitAI - Espera hasta que se establece un valor de seal analgica de entrada ............
WaitAO - Espera hasta que se establece un valor de seal analgica de salida ............
WaitDI - Espera hasta que se activa una seal digital de entrada ...............................
WaitDO - Espera hasta que se activa una seal 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 mdulo cargado a la tarea ....................................................
WaitRob - Esperar hasta un punto de paro o una velocidad cero ................................
WaitSyncTask - Espera en un punto de sincronizacin con otras tareas de programa ....
WaitTestAndSet - Espera a que se desactive una variable y la activa a continuacin .....
WaitTime - Espera una cantidad de tiempo determinada ...........................................
WaitUntil - Espera hasta que se cumple una condicin .............................................
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 aceleracin en el sistema de coordenadas mundo ...............
Write - Escribe en un archivo o un canal serie alfanumrico ......................................
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 parmetro 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 cilndrica ..........................................
WZDisable - Desactiva la supervisin de las zonas mundo temporales ........................
WZDOSet - Activacin de salidas digitales basadas en zonas mundo .........................
WZEnable - Activa la supervisin de las zonas mundo temporales .............................
WZFree - Elimina la supervisin de las zonas mundo temporales ...............................
WZHomeJointDef - Define una zona mundo para las posiciones iniciales de los ejes .....
WZLimJointDef - Define una zona mundo para la limitacin de los ejes .......................
WZLimSup - Activa la supervisin de lmites de las zonas mundo ..............................
WZSphDef - Define una zona mundo con forma esfrica ..........................................

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 seal analgica 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 lgico bit a bit - Operacin con datos de byte ......................................
BitCheck - Comprueba si un bit especificado de un dato de byte est activado .............
BitLSh - DESPLAZAMIENTO A LA IZQUIERDA lgico bit a bit - Operacin de byte ........
BitNeg - NEGACIN lgica bit a bit - Operacin con datos de byte .............................
BitOr - OR lgico bit a bit - Operacin con datos de byte ..........................................
BitRSh - DESPLAZAMIENTO A LA DERECHA lgico bit a bit - Operacin de byte .........
BitXOr - XOR lgico bit a bit - Operacin 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 rotacin .................
CalcRotAxisFrame - Calcular la base de coordenadas de un eje de rotacin ................

3HAC16581-5 Revisin: 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 temporizacin ..............................................
CorrRead - Lee los offsets totales actuales ............................................................
Cos - Calcula el valor del coseno .........................................................................
CPos - Lee los datos de posicin (pos) actuales .....................................................
CRobT - Lee los datos de posicin (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 numrico en una cadena de caracteres .....................
DotProd - Producto escalar de dos vectores pos .....................................................
DOutput - Lee el valor de una seal digital de salida ................................................
EulerZYX - Obtiene ngulos Euler a partir de una orientacin ....................................
EventType - Obtiene el tipo de evento actual dentro de cualquier rutina de evento ........
ExecHandler - Obtener el tipo de gestor de ejecucin ..............................................
ExecLevel - Obtener el nivel de ejecucin ..............................................................
Exp - Calcula el valor exponencial ........................................................................
FileSize - Obtiene el tamao de un archivo ............................................................
FileTime - Obtiene la informacin de hora de un archivo ...........................................
FSSize - Obtiene el tamao de un sistema de archivos .............................................
GetMecUnitName - Obtiene el nombre de la unidad mecnica. ..................................
GetNextMechUnit - Obtener el nombre y los datos de las unidades mecnicas .............
GetNextSym - Obtiene el siguiente smbolo coincidente ...........................................
GetServiceInfo - Obtener informacin de servicio del sistema ...................................
GetSysInfo - Obtener informacin acerca del sistema ..............................................
GetTaskName - Obtiene el nombre y el nmero de la tarea actual ..............................
GetTime - Lee la hora actual como un valor numrico ..............................................
GInputDnum - Lee el valor de una seal de entrada de grupo ....................................
GOutput - Lee el valor de un grupo de seales digitales de salida ..............................
GOutputDnum - Lee el valor de una seal de salida de grupo ....................................
HexToDec - Convierte de hexadecimal a decimal ....................................................
IndInpos - Estado de posicin 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 mecnica 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 mxima del robot ..........................................................
MirPos - Obtencin de la posicin espejo de una posicin ........................................
ModExist - Comprobar si un mdulo de programa existe ..........................................
ModTime - Obtiene la hora de modificacin del mdulo cargado ................................
MotionPlannerNo - Obtiene el nmero de planificador de movimientos conectado ........
NonMotionMode - Lee el modo de ejecucin sin movimiento .....................................
NOrient - Normaliza la orientacin ........................................................................
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 Revisin: 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 numrico en una cadena de caracteres ....................... 972


Offs - Desplaza una posicin del robot .................................................................. 974
OpMode - Lee el modo de funcionamiento ............................................................. 976
OrientZYX - Genera una orientacin a partir de ngulos Euler ................................... 977
ORobT - Elimina el desplazamiento de programa de una posicin .............................. 979
ParIdPosValid - Posicin de robot vlida para la identificacin de parmetros .............. 981
ParIdRobValid - Tipo de robot vlido para la identificacin de parmetros ................... 984
PathLevel - Obtiene el nivel de trayectoria actual .................................................... 987
PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida guardada ... 989
PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada ..... 992
PFRestart - Comprueba si se ha interrumpido una trayectoria despus de un fallo de
alimentacin ..................................................................................................... 997
PoseInv - Invierte los datos de pose ..................................................................... 998
PoseMult - Multiplica datos de pose ...................................................................... 1000
PoseVect - Aplica una transformacin 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 parmetro opcional ................................. 1008
ProgMemFree - Obtiene el tamao 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 nmero 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 an 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 numrico .................................................................. 1040
RoundDnum - Redondear un valor numrico .......................................................... 1042
RunMode - Obtiene el modo de ejecucin .............................................................. 1044
Sin - Calcula el valor del seno .............................................................................. 1046
SocketGetStatus - Obtiene el estado actual de un zcalo .......................................... 1047
Sqrt - Calcula el valor de la raz cuadrada .............................................................. 1050
SqrtDnum - Calcula el valor de la raz 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 aritmticas con el tipo de dato stringdig ............................. 1063
StrDigCmp - Comparar dos cadenas que slo contienen dgitos ................................ 1066
StrFind - Busca un carcter en una cadena de caracteres ......................................... 1069
StrLen - Obtiene la longitud de una cadena ............................................................ 1071
StrMap - Mapea una cadena de caracteres ............................................................. 1072
StrMatch - Busca un patrn dentro de una cadena de caracteres ............................... 1074
StrMemb - Comprueba si un carcter pertenece a un conjunto .................................. 1076
StrOrder - Comprueba si dos cadenas de caracteres estn 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 Revisin: 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 mecnica ................... 1088
TaskRunRob - Comprueba si una tarea controla algn robot ..................................... 1089
TasksInSync - Devuelve el nmero 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 seal 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 nmero de una tabla de textos ............................................ 1102
Trunc - Trunca un valor numrico ......................................................................... 1104
TruncDnum - Trunca un valor numrico ................................................................. 1106
Type - Obtener el nombre del tipo de dato de una variable ........................................ 1108
UIAlphaEntry - Introduccin alfanumrica del usuario .............................................. 1110
UIClientExist - Existe cliente de usuario ................................................................. 1116
UIDnumEntry - Introduccin de nmero de usuario .................................................. 1118
UIDnumTune - Ajuste de nmero de usuario .......................................................... 1125
UIListView - Vista de lista de usuario .................................................................... 1132
UIMessageBox - Cuadro de mensaje de usuario de tipo avanzado ............................. 1141
UINumEntry - Introduccin de nmero de usuario ................................................... 1149
UINumTune - Ajuste de nmero de usuario ............................................................ 1156
ValidIO - Seal de E/S vlida 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 - Condicin de disparo con E/S analgica ................................................... 1169


bool - Valores lgicos ......................................................................................... 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 - Medicin de tiempo .................................................................................. 1178
confdata - Datos de configuracin del robot ........................................................... 1179
corrdescr - Descriptor de generador de correcciones ............................................... 1185
datapos - Inclusin de un bloque para un objeto de datos ......................................... 1187
dionum - Valores digitales (0 - 1) .......................................................................... 1188
dir - Estructura de directorio de archivos ............................................................... 1189
dnum - Valores numricos dobles ........................................................................ 1190
errdomain - Dominio de error ............................................................................... 1192
errnum - Nmero 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 - Posicin de los ejes externos .................................................................. 1205
handler_type - Type of execution handler .............................................................. 1207
icondata - Datos de visualizacin de iconos ........................................................... 1208
identno - Identidad para las instrucciones de movimiento ......................................... 1210
intnum - Identidad de interrupcin ........................................................................ 1212
iodev - Canales serie y archivos ........................................................................... 1214
iounit_state - Estado de la unidad de E/S ............................................................... 1215
jointtarget - Datos de posicin de eje .................................................................... 1216
listitem - Estructura de datos de elementos de lista ................................................. 1218
loaddata - Datos de carga ................................................................................... 1219
loadidnum - Tipo de identificacin de la carga ........................................................ 1225
loadsession - Programar una sesin de carga ........................................................ 1226
mecunit - Unidad mecnica ................................................................................. 1227
motsetdata - Datos de parmetros de movimiento ................................................... 1229

12

3HAC16581-5 Revisin: 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 numricos .................................................................................... 1234


opcalc - Arithmetic Operator ................................................................................ 1236
opnum - Operador de comparacin ...................................................................... 1237
orient - Orientacin ............................................................................................ 1238
paridnum - Tipo de identificacin de parmetro ....................................................... 1243
paridvalidnum - Resultado de ParIdRobValid .......................................................... 1245
pathrecid - Identificador de grabadora de trayectorias .............................................. 1247
pos - Posiciones (slo 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 seales de disparo ............................................... 1256
rmqheader - Encabezado de mensaje de RAPID Message Queue .............................. 1260
rmqmessage - Mensaje de RAPID Message Queue ................................................. 1262
rmqslot - Nmero de identidad de un cliente de RMQ ............................................... 1264
robjoint - Posicin de eje de los ejes del robot ........................................................ 1265
robtarget - Datos de posicin ............................................................................... 1266
shapedata - Datos de forma de zonas mundo ......................................................... 1270
signalxx - Seales digitales y analgicas ............................................................... 1272
socketdev - Dispositivo de zcalo ......................................................................... 1274
socketstatus - Estado de comunicacin de zcalo ................................................... 1275
speeddata - Datos de velocidad ........................................................................... 1276
stoppointdata - Datos de punto de paro ................................................................. 1280
string - Cadenas de caracteres ............................................................................ 1287
stringdig - Cadena de caracteres con slo dos dgitos .............................................. 1289
switch - Optional parameters .............................................................................. 1290
symnum - Nmero simblico ............................................................................... 1291
syncident - Identidad de punto de sincronizacin .................................................... 1293
Datos del sistema - Valores actuales de los datos del sistema de RAPID ..................... 1294
taskid - Identificacin de tareas ............................................................................ 1297
tasks - Tareas de programa de RAPID ................................................................... 1298
testsignal - Seal de prueba ................................................................................ 1300
tooldata - Datos de herramientas .......................................................................... 1301
tpnum - Nmero de ventana del FlexPendant ......................................................... 1308
trapdata - Datos de interrupcin 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 programacin

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 Revisin: L

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

Esta pgina se ha dejado vaca intencionadamente

Descripcin general de este manual

Descripcin general de este manual


Acerca de este manual
ste es un manual de referencia tcnica destinado a los programadores de RAPID.
En este manual se detallan las instrucciones, las funciones y tipos de datos bsicos
de RAPID.
Utilizacin
Este manual debe leerse durante la programacin y siempre que se necesite
informacin especfica acerca de una instruccin, funcin o tipo de dato de RAPID.
A quin va destinado este manual?
Este manual est destinado a personas que tengan cierta experiencia anterior con
la programacin, por ejemplo un programador de robots.
Requisitos previos
El lector debe tener cierta experiencia en programacin y haber estudiado:

Operating manual - Introduction to RAPID

Technical reference manual - RAPID overview

Organizacin de los captulos


Este manual est organizado en los captulos siguientes:
Captulo

Contenido

1Instrucciones

Descripciones detalladas de todas las instrucciones bsicas de RAPID, con ejemplos de


cmo usarlas.

2Funciones

Descripciones detalladas de todas las funciones bsicas de RAPID, con ejemplos de cmo
usarlas.

3 Tipos de datos

Descripciones detalladas de todos los tipos


de datos bsicos de RAPID, con ejemplos de
cmo usarlas.

4 Ejemplos de tipos de programacin

Una visin general de cmo escribir cdigo


de programa con instrucciones/funciones/tipos
de datos diferentes. Este captulo tambin
contiene sugerencias y explicaciones de programacin.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

Descripcin general de este manual


Continuacin

Revisiones
Revisin

Descripcin

7 edicin. RobotWare 5.10.


Aadido un nuevo captulo, 4 Ejemplos de tipos de programacin.

8 edicin. RobotWare 5.11.


Aadidos nuevos tipos de datos, instrucciones y funciones. Tambin se
ha aadido un nuevo ejemplo de tipo de programacin.

9 edicin. RobotWare 5.12.


Aadidos nuevos tipos de datos, instrucciones y funciones.

10 edicin. RobotWare 5.13.


Aadidos los siguientes nuevos tipos de datos, instrucciones y funciones:
TPReadNum - Lee un nmero del FlexPendant en la pgina 602
Type - Obtener el nombre del tipo de dato de una variable en la pgina 1108
UIDnumEntry - Introduccin de nmero de usuario en la pgina 1118
UIDnumTune - Ajuste de nmero de usuario en la pgina 1125
triggiosdnum - Positioning events, trigg en la pgina 1316
Actualizados los grficos de las seales de seguridad para los niveles Peligro y Aviso.

11 edicin. RobotWare 5.14.


Aadidas las siguientes funciones nuevas:
AbsDnum - Obtiene el valor absoluto de un dnum en la pgina 811
DnumToStr - Convierte un valor numrico en una cadena de caracteres en la pgina 890
GetServiceInfo - Obtener informacin de servicio del sistema en la
pgina 919
PowDnum - Calcula el resultado de elevar un valor a una potencia
en la pgina 1005
RoundDnum - Redondear un valor numrico en la pgina 1042
SqrtDnum - Calcula el valor de la raz cuadrada en la pgina 1051
TruncDnum - Trunca un valor numrico en la pgina 1106

12 edicin. RobotWare 5.14.02.


Actualizaciones relacionadas con el caso estacionario y la relacin de los
diferentes sistemas de coordenadas en los siguientes tipos de datos:
loaddata - Datos de carga en la pgina 1219
tooldata - Datos de herramientas en la pgina 1301
Actualizaciones diversas en las siguientes instrucciones:
GripLoad - Define la carga til de un robot en la pgina 125
MechUnitLoad - Define una carga til para una unidad mecnica en
la pgina 232

16

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.1 AccSet - Reduce la aceleracin

1 Instrucciones
1.1 AccSet - Reduce la aceleracin
Utilizacin
AccSet se utiliza para manejar cargas frgiles. Permite obtener aceleraciones y
deceleraciones ms lentas, lo que da lugar a movimientos ms suaves en el robot.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin AccSet.
Ejemplo 1
AccSet 50, 100;

La aceleracin se limita al 50% del valor normal.


Ejemplo 2
AccSet 100, 50;

La pendiente de aceleracin se limita al 50% del valor normal.


Argumentos
AccSet Acc Ramp

Acc
Tipo de dato: num
Aceleracin y deceleracin como porcentaje de los valores normales. El 100% es
la aceleracin mxima. Valor mximo: 100%. Un valor de entrada < 20% proporciona
un 20% de la aceleracin mxima.
Ramp
Tipo de dato: num
La proporcin en que la aceleracin y deceleracin aumentan como porcentaje
de los valores normales. La reduccin de este valor permite limitar la vibracin.
El 100% es el valor mximo. Valor mximo: 100%. Un valor de entrada < 10%
proporciona un 10% del valor mximo.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.1 AccSet - Reduce la aceleracin
Continuacin
Las figuras muestran cmo la reduccin de la aceleracin da lugar a unos
movimientos ms suaves.

Aceleracin

Tiempo
AccSet 100, 100, es decir, aceleracin normal
Aceleracin

Aceleracin

Tiempo

Tiempo
AccSet 30, 100

AccSet 100, 30

xx0500002146_es

Ejecucin de programas
La aceleracin se aplica tanto a los ejes del robot como a los ejes externos hasta
que se ejecuta una nueva instruccin AccSet.
Los valores predeterminados (100%) se establecen automticamente en los casos
siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

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

Informacin relacionada
Para obtener ms informacin sobre Consulte
Control de aceleracin en el sistema de WorldAccLim - Control de aceleracin en el sistecoordenadas mundo
ma de coordenadas mundo en la pgina 755
Reduccin de la aceleracin del TCP a PathAccLim - Reduce la aceleracin del TCP a lo
lo largo de la trayectoria
largo de la trayectoria en la pgina 312
Instrucciones de posicionamiento

Technical reference manual - RAPID overview

18

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.2 ActUnit - Activa una unidad mecnica

1.2 ActUnit - Activa una unidad mecnica


Utilizacin
ActUnit se utiliza para activar una unidad mecnica.
Puede usarse para determinar qu unidad debe estar activa, por ejemplo cuando
se utilizan unidades de accionamiento comunes.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin ActUnit.
Ejemplo 1
ActUnit orbit_a;

Activacin de la unidad mecnica orbit_a.


Argumentos
ActUnit MechUnit

MechUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica que debe activarse.
Ejecucin 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 mecnica
especificada. Esto significa que es controlada y monitorizada por el robot.
Si varias unidades mecnicas comparten una misma unidad de accionamiento, la
activacin de una de estas unidades mecnicas tambin conecta la unidad a la
unidad de accionamiento comn.
Limitaciones
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
ActUnit no puede ejecutarse en rutinas de RAPID que estn 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 mecnicas al ejecutar
StorePath. Esta operacin en la grabadora de trayectorias y la trayectoria del
nivel bsico estarn intactas, pero la trayectoria del nivel StorePath se borrar.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.2 ActUnit - Activa una unidad mecnica
Continuacin
Sintaxis
ActUnit
[MechUnit ':=' ] < variable (VAR) of mecunit> ';'

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Desactivacin de unidades mec- DeactUnit - Desactiva una unidad mecnica en la pginicas


na 83
Unidades mecnicas

mecunit - Unidad mecnica en la pgina 1227

Ms ejemplos

DeactUnit - Desactiva una unidad mecnica en la pgina 83

Grabadora de trayectorias

PathRecMoveBwd - Hace retroceder la grabadora de


trayectorias en la pgina 316

20

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.3 Add - Suma un valor numrico

1.3 Add - Suma un valor numrico


Utilizacin
Add se utiliza para sumar o restar un valor a o de una variable o una variable
persistente de tipo numrico.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin 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 numrico 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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.3 Add - Suma un valor numrico
Continuacin
Limitaciones
Si el valor aadir es del tipo dnum y la variable/persistente que debe cambiarse es
de tipo num, se generar un error de tiempo de ejecucin. La combinacin de
argumentos no es posible (consulte el Ejemplo 4 anterior acerca de cmo 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 > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Incremento de una variable en 1

Incr - Aumenta en 1 un valor en la pgina 137

Decremento de una variable en 1

Decr - Reduce un nmero en 1 en la pgina 85

Cambio de un dato mediante una expre- ":=" - Asigna un valor en la pgina 26


sin arbitraria, por ejemplo una multiplicacin

22

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.4 AliasIO - Define una seal de E/S con un nombre de alias

1.4 AliasIO - Define una seal de E/S con un nombre de alias


Utilizacin
AliasIO se utiliza para definir una seal de cualquier tipo con un nombre de alias
o para usar seales en los mdulos de tarea incorporados.
Las seales con nombres de alias pueden usarse en los programas genricos
predefinidos, sin ninguna modificacin del programa antes de ejecutarlo en distintas
instalaciones de robot.
Es necesario ejecutar la instruccin AliasIO antes de cualquier uso de la seal
en s. Consulte Ejemplos bsicos en la pgina 23 para los mdulos cargados y
Ms ejemplos en la pgina 24 para los mdulos instalados.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin AliasIO.
Consulte tambin Ms ejemplos en la pgina 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 parmetros del


sistema. La seal digital de salida definida por el programa alias_do est
conectada a la seal digital de salida configurada config_do en el momento del
inicio del programa.
Argumentos
AliasIO FromSignal ToSignal

FromSignal
Tipo de dato: signalxx o string
Mdulos cargados:
El identificador de la seal, con un nombre que se corresponde con la configuracin
(tipo de dato signalxx) de la que se copia el descriptor de la seal. La seal debe
estar definida en la configuracin de E/S.
Mdulos instalados o mdulos cargados:
Una referencia (CONST, VAR o un parmetro de este tipo) que contenga el nombre
de la seal (tipo de dato string) de la que se copia el descriptor de la seal tras
buscarlo en el sistema. La seal debe estar definida en la configuracin de E/S.
ToSignal
Tipo de dato: signalxx
El identificador de la seal de acuerdo con el programa (tipo de dato signalxx)
del que se copia el descriptor de la seal. La seal debe estar declarada en el
programa de RAPID.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.4 AliasIO - Define una seal de E/S con un nombre de alias
Continuacin
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).
Ejecucin de programas
El valor del descriptor de la seal se copia de la seal indicada en el argumento
FromSignal a la seal indicada en el argumento ToSignal.
Gestin 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 seal FromSignal no est definida en la configuracin


de E/S
O la seal ToSignal no est declarada en el programa de
RAPID
O la seal ToSignal est definida en la configuracin de
E/S.

ERR_ALIASIO_TYPE

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

Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin 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 parmetros del sistema.


La seal digital de entrada definida por el programa alias_di es conectada a la
seal digital de entrada configurada config_di (a travs de la constante
config_string) en el momento del inicio del programa.
Limitacin
Al iniciar el programa, no es posible utilizar la seal de alias hasta ejecutar la
instruccin AliasIO.
La instruccin 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 despus de cada inicio del
programa (antes de usar la seal).

Para evitar errores, no se recomienda utilizar la reconexin dinmica de una seal


AliasIO a varias seales fsicas diferentes.
Sintaxis
AliasIO
[ FromSignal ':=' ] < reference (REF) of anytype> ','
[ ToSignal ':=' ] < variable (VAR) of anytype> ';'

Contina en la pgina siguiente


24

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.4 AliasIO - Define una seal de E/S con un nombre de alias
Continuacin
Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Instrucciones de entrada/salida

Technical reference manual - RAPID overview

Funcionalidad de entrada/salida en Technical reference manual - RAPID overview


general
Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

Definicin de rutinas de evento

Manual de referencia tcnica - Parmetros del sistema

Mdulos de tarea cargados o insta- Manual de referencia tcnica - Parmetros del sistema
lados

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.5 ":=" - Asigna un valor

1.5 ":=" - Asigna un valor


Utilizacin
La instruccin ":="se utiliza para asignar un nuevo valor a un dato. Este valor
puede ser desde un valor constante hasta una expresin aritmtica, por ejemplo
reg1+5*reg3.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ":=".
Consulte tambin Ms ejemplos en la pgina 26.
Ejemplo 1
reg1 := 5;

reg1 recibe el valor 5.


Ejemplo 2
reg1 := reg2 - reg3;

Se asigna a reg1 el valor que devuelve el clculo 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.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin ":=".
Ejemplo 1
tool1.tframe.trans.x := tool1.tframe.trans.x + 20;

El TCP de tool1 se desplaza 20 mm en la direccin 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

Contina en la pgina siguiente


26

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.5 ":=" - Asigna un valor
Continuacin

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>

Informacin relacionada
Para obtener ms informacin sobre Consulte
Expresiones

Technical reference manual - RAPID overview

Tipos de datos sin valor

Technical reference manual - RAPID overview

Asignacin de un valor inicial a un


dato

Manual del operador - IRC5 con FlexPendant

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.6 BitClear - Desactiva un bit especfico de un dato de byte

1.6 BitClear - Desactiva un bit especfico de un dato de byte


Utilizacin
BitClear se utiliza para desactivar (poner a 0) un bit especificado de un dato de
byte definido.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin BitClear.
Ejemplo 1
CONST num parity_bit := 8;
VAR byte data1 := 130;
BitClear data1, parity_bit;

BitPos 1

BitPos 8

BitPos 1

BitPos 8

El bit nmero 8 (parity_bit) de la variable data1 cambia a 0, con lo que el contenido


de la variable data1 cambia de 130 a 2 (en su valor decimal). La manipulacin de
bits de un dato de tipo byte al utilizar BitClear se muestra en la figura siguiente.

La posicin de bit 8 tiene el valor 1.

El valor de la posicin de bit 8 cambia a 0.

VAR byte data1 := 130;

BitClear data1, parity_bit;


Contenido de data1 despus de BitClear... : 2

Contenido de data1 antes de BitClear... : 130

xx0500002147_es

Argumentos
BitClear BitData BitPos

BitData
Tipo de dato: byte
Los datos de bits a cambiar, en representacin entera.
BitPos
Bit Position
Tipo de dato: num
El valor de la posicin de bit (de 1 a 8) de BitData que se desea cambiar a 0.
Limitaciones
El rango de los tipos de datos byte es de 0 a 255 en decimal.
Las posiciones de bit vlidas son de la 1 a la 8.

Contina en la pgina siguiente


28

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.6 BitClear - Desactiva un bit especfico de un dato de byte
Continuacin
Sintaxis
BitClear
[ BitData ':=' ] < var or pers (INOUT) of byte > ','
[ BitPos ':=' ] < expression (IN) of num > ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Activacin de un bit especfico de un dato BitSet - Activa un bit especfico de un dato de


de byte
byte en la pgina 30
Comprobacin de si un bit especfico de BitCheck - Comprueba si un bit especificado de
un dato de byte est activado
un dato de byte est activado en la pgina 825
Otras funciones de bits

Manual de referencia tcnica - Descripcin general de RAPID

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.7 BitSet - Activa un bit especfico de un dato de byte

1.7 BitSet - Activa un bit especfico de un dato de byte


Utilizacin
BitSet se utiliza para cambiar a 1 un bit especificado dentro de un dato de byte
definido.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin BitSet.
Ejemplo 1
CONST num parity_bit := 8;
VAR byte data1 := 2;
BitSet data1, parity_bit;

BitPos 1

BitPos 8

BitPos 1

BitPos 8

El bit nmero 8 (parity_bit) de la variable data1 cambia a 1, es decir, el


contenido de la variable data1 cambia de 2 a 130 (en su representacin entera).
La manipulacin de bits de un dato de tipo byte al utilizar BitSet se muestra en
la figura siguiente.

La posicin de bit 8 tiene el valor 0.

El valor de la posicin de bit 8 cambia a 1.

VAR byte data1 := 2;

BitSet data1, parity_bit;


Contenido de data1 despus de BitSet... : 130

Contenido de data1 antes de BitSet... : 2

xx0500002148_es

Argumentos
BitSet BitData BitPos

BitData
Tipo de dato: byte
Los datos de bits a cambiar, en representacin entera.
BitPos
Bit Position
Tipo de dato: num
El valor de la posicin de bit (de 1 a 8) de BitData que se desea cambiar a 1.
Limitaciones
El rango de los tipos de datos byte es de 0 a 255 en su representacin de nmero
entero.
Las posiciones de bit vlidas son de la 1 a la 8.
Contina en la pgina siguiente
30

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.7 BitSet - Activa un bit especfico de un dato de byte
Continuacin
Sintaxis
BitSet
[ BitData':=' ] < var or pers (INOUT) of byte > ','
[ BitPos':=' ] < expression (IN) of num > ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Desactivacin de un bit especfico de un dato BitClear - Desactiva un bit especfico de un


de byte
dato de byte en la pgina 28
Comprobacin de si un bit especfico de un BitCheck - Comprueba si un bit especificado
dato de byte est activado
de un dato de byte est activado en la pgina 825
Otras funciones de bits

Technical reference manual - RAPID overview

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.8 BookErrNo - Registra un nmero de error de sistema de RAPID

1.8 BookErrNo - Registra un nmero de error de sistema de RAPID


Utilizacin
BookErrNose utiliza para registrar un nuevo nmero de error de sistema de RAPID.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin BookErrNo.
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;
! Book the new RAPID system error number
BookErrNo ERR_GLUEFLOW;

La variable ERR_GLUEFLOW se asignar a un nmero de error de sistema que est


libre en el cdigo de RAPID.
! Use the new error number
IF di1 = 0 THEN
RAISE ERR_GLUEFLOW;
ELSE
...
ENDIF
! Error handling
ERROR
IF ERRNO = ERR_GLUEFLOW THEN
...
ELSE
...
ENDIF

Si la entrada digital di1 contiene 0, el nuevo nmero de error registrado ser


elevado y la variable de error de sistema ERRNO cambiar al nuevo nmero de
error registrado. De esta forma, el manejo de errores de los errores generados por
el usuario puede realizarse con el gestor de errores, de la forma habitual.
Argumentos
BookErrNo ErrorName

ErrorName
Tipo de dato: errnum
El nombre de la variable del nuevo nmero de error de sistema de RAPID.
Limitaciones
La variable del nuevo error no debe estar declarada como una variable de rutina.
La variable del nuevo error debe estar declarada con un valor inicial de -1, lo que
indica que este error debe ser un error de sistema de RAPID.
Contina en la pgina siguiente
32

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.8 BookErrNo - Registra un nmero de error de sistema de RAPID
Continuacin
Sintaxis
BookErrNo
[ ErrorName ':='] < variable (VAR) of errnum > ';'

Informacin relacionada
Para obtener ms informacin sobre Consulte
Gestin de errores

Technical reference manual - RAPID overview

Nmero de error

errnum - Nmero de error en la pgina 1194

Llamada a un gestor de errores

RAISE - Llama a un gestor de errores en la pgina 355

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.9 Break - Interrumpe la ejecucin del programa

1.9 Break - Interrumpe la ejecucin del programa


Utilizacin
Break se utiliza para provocar la interrupcin inmediata de la ejecucin de un
programa con fines de depuracin del cdigo de un programa de RAPID. El
movimiento del robot se detiene.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin Break.
Ejemplo 1
...
Break;
...

La ejecucin del programa se detiene y es posible analizar variables, valores, etc.


con fines de depuracin.
Ejecucin de programas
La instruccin detiene inmediatamente la ejecucin del programa, 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. Posteriormente es posible
reanudar la ejecucin del programa a partir de la instruccin siguiente.
Si hay una instruccin Break en alguna rutina de evento, la ejecucin de la rutina
se interrumpir y no se ejecutar ninguna rutina de evento STOP. La rutina de
evento se ejecutar desde el principio la prxima vez que tenga lugar el mismo
evento.
Sintaxis
Break';'

Informacin relacionada
Para obtener ms informacin sobre Consulte
Paro para acciones de programa

Stop - Detiene la ejecucin del programa en la pgina 543

Paro despus de un error no recupera- EXIT - Finaliza la ejecucin del programa en la


ble
pgina 109
Finalizacin de la ejecucin del progra- EXIT - Finaliza la ejecucin del programa en la
ma
pgina 109
Paro de los movimientos del robot ni- StopMove - Detiene el movimiento del robot en la
camente
pgina 548

34

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.10 CallByVar - Llama a un procedimiento mediante una variable

1.10 CallByVar - Llama a un procedimiento mediante una variable


Utilizacin
CallByVar (Call By Variable) puede usarse para llamar a procedimientos que
tienen nombres especficos, como proc_name1, proc_name2, proc_name3
... proc_namex a travs de una variable.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin CallByVar.
Consulte tambin Ms ejemplos en la pgina 35.
Ejemplo 1
reg1 := 2;
CallByVar "proc", reg1;

Se llama al procedimiento proc2.


Argumentos
CallByVar Name Number

Name
Tipo de dato: string
La primera parte del nombre del procedimiento, por ejemplo proc_name.
Number
Tipo de dato: num
El valor numrico del nmero del procedimiento. Este valor se convierte en una
cadena y constituye la segunda parte del nombre del procedimiento, por ejemplo
1. El valor debe ser nmero entero positivo.
Ms ejemplos
Ms ejemplos sobre cmo hacer selecciones estticas y dinmicas de llamadas
a procedimiento.
Ejemplo 1: Seleccin esttica de llamadas a procedimientos
TEST reg1
CASE 1:
lf_door
CASE 2:
rf_door
CASE 3:
lr_door
CASE 4:
rr_door
DEFAULT:
EXIT;
ENDTEST

door_loc;
door_loc;
door_loc;
door_loc;

En funcin de si el valor del registro reg1 es 1, 2, 3 4, se llama a procedimientos


distintos que realizan el tipo adecuado de trabajo para la puerta seleccionada. La
ubicacin de la puerta se indica en el argumento door_loc.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.10 CallByVar - Llama a un procedimiento mediante una variable
Continuacin
Ejemplo 2: Seleccin dinmica de llamadas a procedimientos con sintaxis de RAPID
reg1 := 2;
%"proc"+NumToStr(reg1,0)% door_loc;

Se llama al procedimiento proc2 con el argumento door_loc.


Limitacin: Todos los procedimientos deben tener un nombre especfico, como
proc1, proc2, proc3.
Ejemplo 3: Seleccin dinmica de llamadas a procedimientos con CallByVar
reg1 := 2;
CallByVar "proc",reg1;

Se llama al procedimiento proc2.


Limitacin: Todos los procedimientos deben tener un nombre especfico, como
proc1, proc2, proc3 y no puede usarse ningn argumento.
Limitaciones
Slo puede usarse para llamar a procedimientos que no utilizan parmetros.
No puede usarse para llamar a procedimientos de tipo LOCAL.
La ejecucin de CallByVar requiere un poco ms de tiempo que la ejecucin de
una llamada normal a un procedimiento.
Gestin de errores
Si el argumento Number es < 0 o no es un entero, la variable de sistema ERRNO
cambia a ERR_ARGVALERR.
Si se hace referencia a un procedimiento desconocido, la variable de sistema
ERRNO cambia al valor ERR_REFUNKPRC.
En caso de un error en la llamada a un procedimiento (que no se trate de un
procedimiento), la variable de sistema ERRNO cambia a ERR_CALLPROC.
Estos errores pueden ser gestionados en el gestor de errores.
Sintaxis
CallByVar
[Name ':='] <expression (IN) of string>','
[Number ':='] <expression (IN) of num>';'

Informacin relacionada
Para obtener ms informa- Consulte
cin sobre
Llamadas a procedimientos Technical reference manual - RAPID overview
Manual del operador - IRC5 con FlexPendant

36

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.11 CancelLoad - Cancela la carga de un mdulo

1.11 CancelLoad - Cancela la carga de un mdulo


Utilizacin
CancelLoad puede usarse para cancelar la operacin de carga generada por la
instruccin StartLoad.
CancelLoad slo puede usarse entre instrucciones StartLoad y WaitLoad.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin CancelLoad.
Consulte tambin Ms ejemplos en la pgina 37.
Ejemplo 1
CancelLoad load1;

Se cancela la sesin de carga load1.


Argumentos
CancelLoad LoadNo

LoadNo
Tipo de dato: loadsession
Una referencia a la sesin de carga, creada por la instruccin StartLoad.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin CancelLoad.
Ejemplo 1
VAR loadsession load1;
StartLoad "HOME:"\File:="PART_B.MOD",load1;
...
IF ...
CancelLoad load1;
StartLoad "HOME:"\File:="PART_C.MOD",load1;
ENDIF
...
WaitLoad load1;

La instruccin CancelLoad cancela la carga en curso del mdulo PART_B.MOD y


permite cargar en su lugar el mdulo PART_C.MOD.
Gestin de errores
Si la variable especificada en el argumento LoadNo no se est utilizando, lo que
significa que no hay ninguna sesin de carga vigente, la variable de sistema ERRNO
cambia a ERR_LOADNO_NOUSE. A continuacin, este error puede ser gestionado
en el gestor de errores.
Limitacin
CancelLoad slo puede usarse en la secuencia una vez que la instruccin
StartLoad est lista y antes del inicio de la instruccin WaitLoad.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.11 CancelLoad - Cancela la carga de un mdulo
Continuacin
Sintaxis
CancelLoad
[ LoadNo ':=' ] < variable (VAR) of loadsession >';'

Informacin relacionada
Para obtener ms informacin sobre Consulte
Carga de mdulos de programa durante StartLoad - Carga un mdulo de programa durante
la ejecucin
la ejecucin en la pgina 514
Conexin de un mdulo cargado a una WaitLoad - Conecta el mdulo cargado a la tarea
tarea
en la pgina 729
Sesin de carga

loadsession - Programar una sesin de carga en


la pgina 1226

Carga de un mdulo de programa

Load - Carga un mdulo de programa durante la


ejecucin en la pgina 217

Descarga de un mdulo de programa

UnLoad - Descarga un mdulo de programa durante la ejecucin en la pgina 701

Comprobar referencias de programa

CheckProgRef - Comprobar referencias de programa en la pgina 39

38

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.12 CheckProgRef - Comprobar referencias de programa

1.12 CheckProgRef - Comprobar referencias de programa


Utilizacin
CheckProgRef se usa para comprobar la existencia de referencias no resueltas
en cualquier momento durante la ejecucin.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin CheckProgRef.
Ejemplo 1
Load \Dynamic, diskhome \File:="PART_B.MOD" \CheckRef;
Unload "PART_A.MOD";
CheckProgRef;

En este caso, el programa contiene un mdulo con el nombre PART_A.MOD. Se


carga un nuevo mdulo PART_B.MOD, que comprueba si todas las referencias son
correctas. A continuacin se descarga PART_A.MOD. Para buscar referencias no
resueltas tras la descarga, se realiza una llamada a CheckProgRef.
Ejecucin de programas
La ejecucin del programa fuerza un nuevo enlace de la tarea de programa y
comprueba la existencia de referencias no resueltas.
Si se produce un error durante CheckProgRef, el programa no se ve afectado.
Slo indica que existe una referencia sin resolver en la tarea de programa. Por
tanto, utilice CheckProgRef inmediatamente despus de cambiar el nmero de
mdulos de la tarea de programa (cargando o descargando), con el fin de saber
qu mdulo provoc el error de enlace.
Esta instruccin tambin puede usarse como sustituta del uso del argumento
opcional \CheckRef en la instruccin Load o WaitLoad.
Gestin de errores
Si la tarea de programa contiene referencias no resueltas, la variable de sistema
ERRNO cambiar a ERR_LINKREF, lo cual puede ser gestionado en el gestor de
errores.
Sintaxis
CheckProgRef';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Carga de un mdulo de programa

Load - Carga un mdulo de programa durante


la ejecucin en la pgina 217

Descarga de un mdulo de programa

UnLoad - Descarga un mdulo de programa


durante la ejecucin en la pgina 701

Inicio de la carga de un mdulo de programa StartLoad - Carga un mdulo de programa


durante la ejecucin en la pgina 514
Finalizacin de la carga de un mdulo de
programa

WaitLoad - Conecta el mdulo cargado a la


tarea en la pgina 729

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.13 CirPathMode - Reorientacin de la herramienta durante trayectorias circulares

1.13 CirPathMode - Reorientacin de la herramienta durante trayectorias circulares


Utilizacin
CirPathMode (Circle Path Mode) permite seleccionar formas distintas de reorientar
la herramienta durante los movimientos circulares.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin CirPathMode.
Ejemplo 1
CirPathMode \PathFrame;

El modo estndar de reorientacin de la herramienta en la base de coordenadas


de la trayectoria actual, desde el punto de inicio hasta el ToPoint durante todos
los movimientos circulares posteriores. ste es el modo predeterminado del
sistema.
Ejemplo 2
CirPathMode \ObjectFrame;

El modo modificado de reorientacin de la herramienta en la base de coordenadas


del objeto actual, desde el punto de inicio hasta el ToPoint durante todos los
movimientos circulares posteriores.
Ejemplo 3
CirPathMode \CirPointOri;

El modo modificado de reorientacin de la herramienta desde el punto de inicio a


travs de la orientacin CirPoint programada hasta el ToPoint durante todos
los movimientos circulares posteriores.
Ejemplo 4
CirPathMode \Wrist45;

Un modo modificado, de forma que la proyeccin del eje Z de la herramienta sobre


el plano de corte seguir el segmento de crculo programado. Slo se utilizan los
ejes de mueca 4 y 5. Este modo slo debe usarse con objetos delgados.
Ejemplo 5
CirPathMode \Wrist46;

Un modo modificado, de forma que la proyeccin del eje Z de la herramienta sobre


el plano de corte seguir el segmento de crculo programado. Slo se utilizan los
ejes de mueca 4 y 6. Este modo slo debe usarse con objetos delgados.
Ejemplo 6
CirPathMode \Wrist56;

Un modo modificado, de forma que la proyeccin del eje Z de la herramienta sobre


el plano de corte seguir el segmento de crculo programado. Slo se utilizan los
ejes de mueca 5 y 6. Este modo slo debe usarse con objetos delgados.

Contina en la pgina siguiente


40

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.13 CirPathMode - Reorientacin de la herramienta durante trayectorias circulares
Continuacin
Descripcin
PathFrame
La figura de la tabla muestra la reorientacin de la herramienta del modo estndar
\PathFrame.
Figura

Descripcin
Las flechas representan la posicin de la
herramienta respecto del punto central de
la mueca hasta el punto central de la herramienta, para los puntos programados. La
trayectoria del punto central de la mueca
se representa con una lnea de puntos en la
figura.
El modo \PathFrame permite conseguir fcilmente el mismo ngulo de la herramienta
alrededor del cilindro. La mueca del robot
no pasa a travs de la orientacin programada en CirPoint

xx0500002152

La figura de la tabla muestra el uso del modo estndar \PathFrame con una
orientacin de herramienta fija.
Figura

Descripcin
En la figura siguiente se representa la orientacin
obtenida para la herramienta en la mitad de la
trayectoria circular, utilizando una herramienta de
programacin y el modo \PathFrame.
Comprela con la figura que aparece ms abajo
para el modo \ObjectFrame.

xx0500002153

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.13 CirPathMode - Reorientacin de la herramienta durante trayectorias circulares
Continuacin
Base de coordenadas del objeto
La figura de la tabla muestra el uso del modo modificado \ObjectFrame con una
orientacin de herramienta fija.
Figura

Descripcin
En la figura siguiente se representa la orientacin
obtenida para la herramienta en la mitad de la
trayectoria circular, utilizando una herramienta de
programacin y el modo \ObjectFrame.
Este modo realizar una reorientacin lineal de
la herramienta de la misma forma que con MoveL.
La mueca del robot no pasa a travs de la
orientacin programada en CirPoint.
Comprela con la figura que aparece ms arriba
para el modo \PathFrame.

xx0500002151

CirPointOri
La figura de la tabla representa las diferencias de reorientacin de la herramienta
existentes entre el modo estndar \PathFrame y el modo modificado
\CirPointOri.
Figura

Descripcin
Las flechas representan la posicin de la herramienta respecto del punto central de la mueca
hasta el punto central de la herramienta, para
los puntos programados. Las distintas trayectorias del punto central de la mueca se representan con lneas discontinuas en la figura.
El modo \CirPointOri hace que la mueca
del robot atraviese la orientacin programada
en CirPoint.

xx0500002150

Contina en la pgina siguiente


42

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.13 CirPathMode - Reorientacin de la herramienta durante trayectorias circulares
Continuacin
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..
Figura

Descripcin

Herramienta Se supone que el haz de corte est alineado

x
x

con el eje Z de la herramienta. La base de


coordenadas del plano de corte se define por
la posicin inicial del robot al ejecutar la instruccin MoveC.

Forma
(x, y)

Plano de corte
z
xx0800000294_es

Argumentos
CirPathMode [\PathFrame] | [\ObjectFrame] | [\CirPointOri] |
[\Wrist45] | [\Wrist46] | [\Wrist56]

[ \PathFrame ]
Tipo de dato: switch
Durante el movimiento circular, la reorientacin de la herramienta se realiza de
forma continua desde la orientacin en el punto de inicio hasta la orientacin en
ToPoint, respecto de la base de coordenadas de la trayectoria actual. ste es el
modo estndar del sistema.
[ \ObjectFrame ]
Tipo de dato: switch
Durante el movimiento circular, la reorientacin de la herramienta se realiza de
forma continua desde la orientacin en el punto de inicio hasta la orientacin en
ToPoint, respecto de la base de coordenadas del objeto actual.
[ \CirPointOri ]
Tipo de dato: switch
Durante el movimiento circular, la reorientacin de la herramienta se realiza de
forma continua desde la orientacin en el punto de inicio hasta la orientacin
programada en CirPoint y ms adelante hasta la orientacin de ToPoint.
[ \Wrist45 ]
Tipo de dato: switch
El robot mover los ejes 4 y 5 de forma que la proyeccin del eje Z de la herramienta
sobre el plano de corte seguir el segmento de crculo programado. Este modo
slo debe usarse con objetos delgados y slo se utilizan 2 ejes de mueca, lo que
proporciona una mayor exactitud pero a la vez un menor control.
NOTA: Este modificador requiere la opcin Wrist Move.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.13 CirPathMode - Reorientacin de la herramienta durante trayectorias circulares
Continuacin
[ \Wrist46 ]
Tipo de dato: switch
El robot mover los ejes 4 y 6 de forma que la proyeccin del eje Z de la herramienta
sobre el plano de corte seguir el segmento de crculo programado. Este modo
slo debe usarse con objetos delgados y slo se utilizan 2 ejes de mueca, lo que
proporciona una mayor exactitud pero a la vez un menor control.
NOTA: Este modificador requiere la opcin Wrist Move.
[ \Wrist56 ]
Tipo de dato: switch
El robot mover los ejes 5 y 6 de forma que la proyeccin del eje Z de la herramienta
sobre el plano de corte seguir el segmento de crculo programado. Este modo
slo debe usarse con objetos delgados y slo se utilizan 2 ejes de mueca, lo que
proporciona una mayor exactitud pero a la vez un menor control.
NOTA: Este modificador requiere la opcin Wrist Move.
Si utiliza CirPathMode sin ningn modificador, se consigue el mismo efecto que
con CirPointMode \PathFrame
Ejecucin de programas
El modo especificado para la reorientacin de la herramienta en una trayectoria
circular se aplica a los siguientes movimientos circulares del robot, sean del tipo
que sean (MoveC, SearchC, TriggC, MoveCDO, MoveCSync, ArcC, PaintC
... ), y permanece vigente hasta que se ejecuta una nueva instruccin CirPathMode
(o una instruccin CirPathReori, ahora obsoleta).
El modo estndar de reorientacin en trayectorias circulares (CirPathMode
\PathFrame) se establece automticamente en los casos siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio.

Limitaciones
Esta instruccin slo afecta a los movimientos circulares.
Cuando se utiliza el modo \CirPointOri, el valor de CirPoint debe encontrarse
entre los puntos A y B que se representan en la figura siguiente, para que el
movimiento circular atraviese la orientacin programada en CirPoint.

xx0500002149

\Wrist45, Los modos \Wrist46 y \Wrist56 slo deben usarse para cortar
objetos delgados, dado que la posibilidad de controlar el ngulo de la herramienta
Contina en la pgina siguiente
44

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.13 CirPathMode - Reorientacin de la herramienta durante trayectorias circulares
Continuacin
se pierde al utilizar slo dos ejes de mueca. No es posible utilizar movimientos
coordinados dado que el eje principal est bloqueado.
Si se trabaja en un rea de singularidad de mueca y se ha ejecutado la instruccin
SingArea\Wrist, la instruccin CirPathMode no tiene ningn efecto porque el
sistema selecciona en este caso otro modo de reorientacin de la herramienta
para los movimientos circulares (la interpolacin de ejes).
Esta instruccin sustituye a la instruccin CirPathReori (sta seguir funcionando
en adelante pero ya no se recomienda ni se documenta).
Sintaxis
CirPathMode
['\'PathFrame]
| ['\'ObjectFrame]
| ['\'CirPointOri]
| ['\'Wrist45]
| ['\'Wrist46]
| ['\'Wrist56] ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Interpolacin

Technical reference manual - RAPID overview

Datos de parmetros de movimiento

motsetdata - Datos de parmetros de movimiento


en la pgina 1229

Instruccin para movimiento circular

MoveC - Mueve el robot en crculo en la pgina 246

Movimientos de la mueca

Application manual - Motion performance, seccin Movimiento de mueca

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.14 Clear - Borra el valor

1.14 Clear - Borra el valor


Utilizacin
Clear se utiliza para borrar el contenido de una variable numrica o una variable
persistente, es decir, asignarle el valor 0.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin Clear.
Ejemplo 1
Clear reg1;

Se borra el valor de Reg1, con lo que reg1:=0.


Ejemplo 2
CVAR dnum mydnum:=5;
Clear mydnum;

Se borra el valor de mydnum, con lo que mydnum:=0.


Argumentos
Clear Name | Dname

Name
Tipo de dato: num
El nombre de la variable o de la variable persistente cuyo contenido se desea
borrar.
Dname
Tipo de dato: dnum
El nombre de la variable o de la variable persistente cuyo contenido se desea
borrar.
Sintaxis
Clear
[ Name ':=' ] < var or pers (INOUT) of num >
| [ Dname ':=' ] < var or pers (INOUT) of dnum > ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Incremento de una variable en 1

Incr - Aumenta en 1 un valor en la pgina 137

Decremento de una variable en 1

Decr - Reduce un nmero en 1 en la pgina 85

Suma de cualquier valor a una variable

Add - Suma un valor numrico en la pgina 21

Cambio de un dato mediante una expre- ":=" - Asigna un valor en la pgina 26


sin arbitraria

46

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.15 ClearIOBuff - Vaca el bfer de entrada de un canal serie

1.15 ClearIOBuff - Vaca el bfer de entrada de un canal serie


Utilizacin
ClearIOBuff (Clear I/O Buffer) se utiliza para vaciar el bfer de entrada de un
canal serie. Se desechan todos los caracteres almacenados en el bfer del canal
serie de entrada.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin ClearIOBuff.
Ejemplo 1
VAR iodev channel2;
...
Open "com2:", channel2 \Bin;
ClearIOBuff channel2;
WaitTime 0.1;

Se vaca el bfer de entrada del canal serie al que se hace referencia con
channel2. El tiempo de espera garantiza a la operacin de borrado un tiempo
suficiente para su finalizacin.
Argumentos
ClearIOBuff IODevice

IODevice
Tipo de dato: iodev
El nombre (la referencia) del canal serie cuyo bfer de entrada se desea vaciar.
Ejecucin de programas
Se desechan todos los caracteres almacenados en el bfer del canal serie de
entrada. Las instrucciones de lectura siguientes esperarn nuevos datos recibidos
a travs del canal.
En caso de un reinicio tras una cada de alimentacin, 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.
Limitaciones
Esta instruccin slo puede usarse con los canales serie. No se espera la
confirmacin de la operacin para finalizar. Deje un tiempo de espera de 0,1
segundos tras la instruccin para proporcionar a la operacin un tiempo suficiente
en cada aplicacin.
Gestin de errores
Si se intenta usar la instruccin con un archivo, la variable de sistema ERRNO
cambia a ERR_FILEACC. A continuacin, este error puede ser gestionado en el
gestor de errores.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.15 ClearIOBuff - Vaca el bfer de entrada de un canal serie
Continuacin
Sintaxis
ClearIOBuff
[IODevice ':='] <variable (VAR) of iodev>';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Apertura de un canal serie

Technical reference manual - RAPID overview

48

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.16 ClearPath - Elimina la trayectoria actual

1.16 ClearPath - Elimina la trayectoria actual


Utilizacin
ClearPath (Clear Path) elimina toda la trayectoria de movimientos del nivel de
trayectoria de movimiento actual (nivel base o nivel StorePath).
La expresin trayectoria de movimientos se refiere a todos los segmentos de
movimiento de cualquier instruccin de movimiento que se ejecute en RAPID pero
que no ha sido realizado an en el momento de la ejecucin de ClearPath.
El robot debe encontrarse en un punto de paro o debe ser parado por una
instruccin StopMove para poder ejecutar la instruccin ClearPath.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ClearPath.
Punto de inicio home MoveL p1, v500, fine, gripper;

Punto final p1

px
El robot suelta aqu la carga til y la
ejecucin contina en la rutina TRAP.
xx0500002154_es

En el ejemplo de programa siguiente, el robot se mueve desde la posicin home


hasta la posicin p1. En el punto px, la seal di1 indicar que se ha soltado la
carga til. La ejecucin contina en la rutina TRAP gohome. El robot detiene el
movimiento (comienza el frenado) en el punto px, se borra la trayectoria y el robot
se traslada a la posicin home. El error se eleva hacia la rutina desde la que se

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.16 ClearPath - Elimina la trayectoria actual
Continuacin
hace la llamada, minicycle, y todo el ciclo de programa definido por el usuario
proc1 .. proc2 se ejecuta desde el principio una vez ms.
Ejemplo 1
VAR intnum drop_payload;
VAR errnum ERR_DROP_LOAD := -1;
PROC minicycle()
BookErrNo ERR_DROP_LOAD;
proc1;
...
ERROR (ERR_DROP_LOAD)
RETRY;
ENDPROC
PROC proc1()
...
proc2;
...
ENDPROC
PROC proc2()
CONNECT drop_payload WITH gohome;
ISignalDI \Single, di1, 1, drop_payload;
MoveL p1, v500, fine, gripper;
...........
IDelete drop_payload
ENDPROC
TRAP gohome
StopMove \Quick;
ClearPath;
IDelete drop_payload;
StorePath;
MoveL home, v500, fine, gripper;
RestoPath;
RAISE ERR_DROP_LOAD;
ERROR
RAISE;
ENDTRAP

Si se ejecuta el mismo programa pero sinStopMoveniClearPath en la rutina


TRAP gohome, el robot contina hasta la posicin p1 antes de volver a la posicin
home.
Si se programa MoveLhome con un punto (zona) de paso en lugar de un punto de
paro (fine), el movimiento contina durante la instruccin RAISE para volver al
gestor de errores del procedimiento minicycle y ms all hasta que el movimiento
est preparado.

Contina en la pgina siguiente


50

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.16 ClearPath - Elimina la trayectoria actual
Continuacin
Limitaciones
A continuacin aparecen algunos ejemplos de limitacin de la instruccin
ClearPath .
Ejemplo 1 - Limitacin
VAR intnum int_move_stop;
...
PROC test_move_stop()
CONNECT int_move_stop WITH trap_move_stop;
ISignalDI di1, 1, int_move_stop;
MoveJ p10, v200, z20, gripper;
MoveL p20, v200, z20, gripper;
ENDPROC
TRAP trap_move_stop
StopMove;
ClearPath;
StartMove;
StorePath;
MoveJ p10, v200, z20, gripper;
RestoPath;
ENDTRAP

ste es un ejemplo de la limitacin de ClearPath. Durante el movimiento del


robot hacia p10 y p20, el movimiento en curso se detiene y la trayectoria de
movimiento se borra, pero no se realiza ninguna accin para interrumpir la
instruccin activa MoveJ p10 o MoveL p20 en PROC test_move_stop. Por tanto,
el movimiento en curso se interrumpir y el robot pasar a p10 en TRAP
trap_move_stop, pero no se realizar ningn movimiento adicional hacia p10 o
p20 en PROC test_move_stop. La ejecucin del programa se quedar en
suspenso.
Este problema puede resolverse con la recuperacin de errores con un salto largo,
de la forma descrita en el ejemplo 2 que aparece a continuacin, o con un error
elevado asncronamente con la instruccin ProcerrRecovery.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.16 ClearPath - Elimina la trayectoria actual
Continuacin
Ejemplo 2 - Sin limitaciones
VAR intnum int_move_stop;
VAR errnum err_move_stop := -1;
...
PROC test_move_stop()
BookErrNo err_move_stop;
CONNECT int_move_stop WITH trap_move_stop;
ISignalDI di1, 1, int_move_stop;
MoveJ p10, v200, z20, gripper;
MoveL p20, v200, z20, gripper;
ERROR (err_move_stop)
StopMove;
ClearPath;
StartMove;
StorePath;
MoveJ p10, v200, z20, gripper;
RestoPath;
RETRY;
ENDPROC
TRAP trap_move_stop
RAISE err_move_stop;
ERROR
RAISE;
ENDTRAP

ste es un ejemplo de cmo usar la recuperacin de errores con un salto largo


junto con ClearPath y sin limitaciones. Durante el movimiento del robot a p10
y p20, se detiene el movimiento en curso. La trayectoria de movimiento se borra
y, debido a la recuperacin de errores ms all de los lmites de nivel de ejecucin,
se realiza una interrupcin en la instruccin activa MoveJ p10 o MoveL p20. Por
tanto, el movimiento en curso se interrumpe y el robot pasa a p10 en ERROR
handler, y se ejecuta una vez ms la instruccin interrumpida MoveJ p10 o
MoveL p20 en PROC test_move_stop.
Sintaxis
ClearPath ';'

Informacin relacionada
Para obtener ms informa- Consulte
cin sobre
Paro de los movimientos del StopMove - Detiene el movimiento del robot en la pgina 548
robot
Recuperacin en caso de
error

Technical reference manual - RAPID overview


Technical reference manual - RAPID kernel

Error elevado asncronamen- ProcerrRecovery - Genera errores de movimiento de proceso


te
y permite la recuperacin tras ellos en la pgina 346

52

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.17 ClearRawBytes - Borra el contenido de un dato de tipo rawbytes

1.17 ClearRawBytes - Borra el contenido de un dato de tipo rawbytes


Utilizacin
ClearRawBytes se utiliza para cambiar a 0 todo el contenido de una variable de
tipo rawbytes.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin.
Ejemplo 1
VAR rawbytes raw_data;
VAR num integer := 8
VAR num float := 13.4;
PackRawBytes integer, raw_data, 1 \IntX := DINT;
PackRawBytes float, raw_data, (RawBytesLen(raw_data)+1) \Float4;
ClearRawBytes raw_data \FromIndex := 5;

Se guarda en los primeros 4 bytes el valor de integer (a partir del nmero de


ndice 1) y, en los 4 bytes siguientes, a partir del nmero de ndice 5, el valor de
float.
La ltima ilustracin del ejemplo borra el contenido de raw_data, a partir del
nmero de ndice 5. Es decir, se borra el contenido de float, pero el valor de
integer se conserva en raw_data. La longitud actual de los bytes vlidos de
raw_data cambia a 4.
Argumentos
ClearRawBytes RawData [ \FromIndex ]

RawData
Tipo de dato: rawbytes
RawData es el contenedor de datos cuyo contenido se borrar.
[ \FromIndex ]
Tipo de dato: num
Con \FromIndex se especifica a partir de qu punto se empieza a borrar el
contenido de RawData. Se borra todo el contenido hasta el final.
Si no se especifica \FromIndex, se borran todos los datos que existan a partir
del nmero de ndice 1.
Ejecucin de programas
Se restablecen a 0 los datos a partir del nmero de ndice 1 (predeterminado) o a
partir de \FromIndex en la variable especificada.
La longitud actual de los bytes vlidos de la variable especificada cambia a 0
(predeterminado) o a (FromIndex- 1) si se programa \FromIndex.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.17 ClearRawBytes - Borra el contenido de un dato de tipo rawbytes
Continuacin
Sintaxis
ClearRawBytes
[RawData ':=' ] < variable (VAR) of rawbytes>
['\'FromIndex ':=' <expression (IN) of num>]';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

rawbytes datos

rawbytes - Datos sin formato en la pgina 1254

Obtencin de la longitud de un dato


rawbytes

RawBytesLen - Obtiene la longitud de un dato


de tipo rawbytes en la pgina 1011

Copiado del contenido de un dato de tipo CopyRawBytes - Copia el contenido de un dato


rawbytes
de tipo rawbytes en la pgina 71
Empaquetamiento de un encabezado de PackDNHeader - Empaqueta un encabezado de
DeviceNet en datos rawbytes
DeviceNet en datos rawbytes en la pgina 304
Empaquetamiento de datos en datos
rawbytes

PackRawBytes - Empaqueta datos en un dato


de tipo rawbytes en la pgina 307

Escritura de un dato rawbytes

WriteRawBytes - Escribe un dato de tipo rawbytes en la pgina 772

Lectura de un dato rawbytes

ReadRawBytes - Lee datos de tipo rawbytes en


la pgina 374

Desempaquetamiento de datos de un
dato rawbytes

UnpackRawBytes - Desempaqueta datos de un


dato de tipo rawbytes en la pgina 704

54

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.18 ClkReset - Pone a cero un reloj utilizado como temporizador

1.18 ClkReset - Pone a cero un reloj utilizado como temporizador


Utilizacin
ClkReset se utiliza para poner a cero un reloj que funciona como un cronmetro
para funciones de temporizacin.
Esta instruccin puede usarse antes de usar un reloj, para garantizar que est
puesto a cero.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin ClkReset.
Ejemplo 1
ClkReset clock1;

Se pone a cero el reloj clock1.


Argumentos
ClkReset Clock

Reloj
Tipo de dato: clock
El nombre del reloj que se desea poner a cero.
Ejecucin de programas
Tras poner a cero un reloj, su valor es 0.
Si el reloj est en marcha, se detendr y se pondr a cero.
Sintaxis
ClkReset
[ Clock ':=' ] < variable (VAR) of clock > ';'

Informacin relacionada
Para obtener ms informacin sobre Consulte
Otras instrucciones de reloj

Technical reference manual - RAPID overview

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.19 ClkStart - Pone en marcha un reloj utilizado para la temporizacin

1.19 ClkStart - Pone en marcha un reloj utilizado para la temporizacin


Utilizacin
ClkStart se utiliza para poner en marcha un reloj que funciona como un
cronmetro para funciones de temporizacin.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin ClkStart.
Ejemplo 1
ClkStart clock1;

Se pone en marcha el reloj clock1.


Argumentos
ClkStart Clock

Reloj
Tipo de dato: clock
El nombre del reloj que se desea poner en marcha.
Ejecucin de programas
Cuando se pone en marcha el reloj, ste sigue contando segundos hasta que se
decide detenerlo.
El reloj sigue en marcha incluso cuando se detiene el programa que lo puso en
marcha. Sin embargo, es posible que el evento que se intenta temporizar ya no
sea vlido. Por ejemplo, si el programa estaba midiendo el tiempo de espera de
una entrada, es posible que la entrada se haya recibido mientras el programa
estaba parado. En este caso, el programa no podr ser consciente de que el evento
se ha producido mientras la ejecucin estuvo parada.
Los relojes siguen funcionando cuando se apaga el robot, siempre y cuando la
energa de respaldo de la batera proteja al programa que contiene la variable de
reloj.
Mientras est en marcha, cualquier reloj puede ser ledo, parado o puesto a cero.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin ClkStart.
Ejemplo 1
VAR clock clock2;
VAR num time;
ClkReset clock2;
ClkStart clock2;
WaitUntil di1 = 1;
ClkStop clock2;
time:=ClkRead(clock2);

Se mide el tiempo que se espera a que di1 tenga el valor 1.

Contina en la pgina siguiente


56

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.19 ClkStart - Pone en marcha un reloj utilizado para la temporizacin
Continuacin
Gestin de errores
Si el reloj funciona de forma continuada durante 4.294.967 segundos (49 das, 17
horas, 2 minutos y 47 segundos), se desborda y la variable de sistema ERRNO
cambia a ERR_OVERFLOW..
El error puede ser gestionado en el gestor de errores.
Sintaxis
ClkStart
[ Clock ':=' ] < variable (VAR) of clock >';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Otras instrucciones de reloj

Technical reference manual - RAPID overview

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.20 ClkStop - Detiene un reloj utilizado para la temporizacin

1.20 ClkStop - Detiene un reloj utilizado para la temporizacin


Utilizacin
ClkStop se utiliza para parar un reloj que funciona como un cronmetro para
funciones de temporizacin.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin ClkStop.
ClkStop clock1;

Se detiene el reloj clock1.


Argumentos
ClkStop Clock

Reloj
Tipo de dato: clock
El nombre del reloj a detener.
Ejecucin de programas
Cuando se detiene un reloj, ste deja de funcionar.
Cuando un reloj est parado, puede ser ledo, puesto en marcha de nuevo o puesto
a cero.
Gestin de errores
Si el reloj funciona de forma continuada durante 4.294.967 segundos (49 das, 17
horas, 2 minutos y 47 segundos), se desborda y la variable de sistema ERRNO
cambia a ERR_OVERFLOW.
El error puede ser gestionado en el gestor de errores.
Sintaxis
ClkStop
[ Clock ':=' ] < variable (VAR) of clock >';'

Informacin relacionada
Para obtener ms informacin sobre Consulte
Otras instrucciones de reloj

Technical reference manual - RAPID overview

Ms ejemplos

ClkStart - Pone en marcha un reloj utilizado para


la temporizacin en la pgina 56

58

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.21 Close - Cierra un archivo o un canal serie

1.21 Close - Cierra un archivo o un canal serie


Utilizacin
Close se utiliza para cerrar un archivo o un canal serie.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin Close.
Ejemplo 1
Close channel2;

Se cierra el canal serie al que se hace referencia con channel2.


Argumentos
Close IODevice

IODevice
Tipo de dato: iodev
El nombre (la referencia) del archivo o del canal serie que debe cerrarse.
Ejecucin de programas
El archivo o el canal serie especificado se cierra y es necesario abrirlo de nuevo
antes de leer o escribir en l. Si ya est cerrado, la instruccin no se tiene en
cuenta.
Sintaxis
Close
[IODevice ':='] <variable (VAR) of iodev>';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Apertura de un archivo o canal serie

Technical reference manual - RAPID overview

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.22 CloseDir - Cierra un directorio

1.22 CloseDir - Cierra un directorio


Utilizacin
CloseDir se utiliza para cerrar un directorio, como contraposicin de OpenDir.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin CloseDir.
Ejemplo 1
PROC lsdir(string dirname)
VAR dir directory;
VAR string filename;
OpenDir directory, dirname;
WHILE ReadDir(directory, filename) DO
TPWrite filename;
ENDWHILE
CloseDir directory;
ENDPROC

Este ejemplo imprime los nombres de todos los archivos o subdirectorios que se
encuentran dentro del directorio especificado.
Argumentos
CloseDir Dev

Dev
Tipo de dato: dir
Una variable que hace referencia a un directorio y capturada con la instruccin
OpenDir.
Sintaxis
CloseDir
[ Dev ':=' ] < variable (VAR) of dir>';'

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Directorio

dir - Estructura de directorio de archivos en la pgina 1189

Creacin de un directorio

MakeDir - Crea un nuevo directorio en la pgina 227

Apertura de un directorio

OpenDir - Abre un directorio en la pgina 302

Lectura de un directorio

ReadDir - Lee la siguiente entrada de un directorio en la


pgina 1016

Eliminacin de un directorio

RemoveDir - Elimina un directorio en la pgina 377

Eliminacin de un archivo

RemoveFile - Elimina un archivo en la pgina 379

Cambio del nombre de un archi- RenameFile - Cambia el nombre de un archivo en la pgivo


na 380

60

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.23 Comentario - Comentario

1.23 Comentario - Comentario


Utilizacin
Comment slo se utiliza para facilitar la comprensin del programa. No tiene ningn
efecto sobre la ejecucin del programa.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin Comment.
Ejemplo 1
! Goto the position above pallet
MoveL p100, v500, z20, tool1;

Se inserta un comentario en el programa para facilitar su comprensin.


Argumentos
! Comment

Comment
Cadena de texto
Cualquier texto.
Ejecucin de programas
Cuando se ejecuta esta instruccin, no ocurre nada.
Sintaxis
(EBNF)
'!' {<character>} <newline>

Informacin relacionada
Para obtener ms informacin sobre Consulte
Caracteres permitidos en los comenta- Technical reference manual - RAPID overview
rios
Comentarios dentro de declaraciones Technical reference manual - RAPID overview
de datos y rutinas

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.24 Compact IF (IF compacto) - Si se cumple una condicin, entonces... (una instruccin)

1.24 Compact IF (IF compacto) - Si se cumple una condicin, entonces... (una


instruccin)
Utilizacin
Compact IF se utiliza cuando slo es necesario ejecutar una instruccin si se
cumple una condicin determinada.
Si es necesario ejecutar distintas instrucciones en funcin de si se cumple o no
una condicin especificada, se utiliza la instruccin IF.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin CompactIF.
Ejemplo 1
IF reg1 > 5 GOTO next;

Si reg1 es mayor que 5, la ejecucin del programa contina a partir de la etiqueta


next.
Ejemplo 2
IF counter > 10 Set do1;

La seal do1 se activa si counter > 10.


Argumentos
IF Condition ...

Condition
Tipo de dato: bool
La condicin que debe cumplirse para que se ejecute la instruccin.
Sintaxis
(EBNF)
IF <conditional expression> ( <instruction> | <SMT>) ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Condiciones (expresiones lgicas)

Technical reference manual - RAPID overview

IF con varias instrucciones

IF - Si se cumple una condicin, ...; de lo contrario, ... en la pgina 135

62

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.25 ConfJ - Controla la configuracin durante el movimiento de los ejes

1.25 ConfJ - Controla la configuracin durante el movimiento de los ejes


Utilizacin
ConfJ (Configuration Joint) se utiliza para especificar si es necesario controlar la
configuracin del robot durante el movimiento de los ejes. Si no se controla, es
posible que el robot utilice en ocasiones una configuracin distinta de la
programada.
Con ConfJ \Off, el robot no puede cambiar de configuracin de ejes principales,
sino que busca una solucin con la misma configuracin de ejes principales que
la actual, movindose sin embargo hasta la configuracin de mueca ms cercana
para los ejes 4 y 6.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ConfJ.
Ejemplo 1
ConfJ \Off;
MoveJ *, v1000, fine, tool1;

El robot se mueve hacia la posicin y la orientacin programadas. Si es posible


alcanzar esta posicin de varias formas con distintas configuraciones de ejes, se
elige la posicin ms cercana posible.
Ejemplo 2
ConfJ \On;
MoveJ *, v1000, fine, tool1;

El robot se mueve hacia la posicin, la orientacin y la configuracin de ejes


programadas. Si no es posible, se detiene la ejecucin del programa.
Argumentos
ConfJ [\On] | [\Off]

[ \On ]
Tipo de dato: switch
El robot se mueve siempre hacia la configuracin de ejes programada. Si no es
posible hacerlo con la posicin y la orientacin programadas, se detiene la
ejecucin del programa.
El robot IRB5400 se mueve hacia la configuracin de ejes programada o hacia una
configuracin de ejes cercana a la programada. La ejecucin del programa no se
detiene si es imposible alcanzar la configuracin de ejes programada.
[ \Off ]
Tipo de dato: switch
El robot se mueve siempre hacia la configuracin de ejes ms cercana.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.25 ConfJ - Controla la configuracin durante el movimiento de los ejes
Continuacin
Ejecucin de programas
Si se elige el argumento \On (o no se especifica ningn argumento), el robot se
mueve siempre hacia la configuracin de ejes programada. Si no es posible hacerlo
con la posicin y la orientacin programadas, se detiene la ejecucin del programa
antes de que comience el movimiento.
Si se elige el argumento \Off, el robot se mueve siempre hacia la configuracin
de ejes ms cercana. Esta configuracin puede ser distinta de la programada si
la configuracin se ha especificado incorrectamente de forma manual o si se ha
realizado un desplazamiento de programa.
El control de la configuracin (ConfJ \On) est activado de forma predeterminada.
Se activa automticamente en los casos siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio.

Sintaxis
ConfJ
[ '\' On] | [ '\' Off]';'

Informacin relacionada
Para obtener ms informacin sobre Consulte
Manejo de configuraciones diferentes Technical reference manual - RAPID overview
Configuracin del robot durante el
movimiento lineal

ConfL - Monitoriza la configuracin durante el movimiento lineal en la pgina 65

64

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.26 ConfL - Monitoriza la configuracin durante el movimiento lineal

1.26 ConfL - Monitoriza la configuracin durante el movimiento lineal


Utilizacin
ConfL (Configuration Linear) se utiliza para especificar si es necesario controlar
la configuracin del robot durante los movimientos lineales o circulares. Si no se
controla, la configuracin utilizada en el momento de la ejecucin puede ser distinta
de la configuracin programada. Esto tambin puede dar lugar a movimientos de
barrido inesperados en el robot cuando se cambia el modo al movimiento de ejes.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Nota
En el caso del robot IRB 5400, la monitorizacin est siempre desactivada,
independientemente de lo que se especifique en la instruccin ConfL.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ConfL.
Ejemplo 1
ConfL \On;
MoveL *, v1000, fine, tool1;

La ejecucin del programa se detiene si no es posible alcanzar la configuracin


programada desde la posicin actual.
Ejemplo 2
SingArea \Wrist;
ConfL \On;
MoveL *, v1000, fine, tool1;

El robot se mueve hacia la posicin, la orientacin y la configuracin de ejes de


mueca programadas. Si no es posible, se detiene la ejecucin del programa.
Ejemplo 3
ConfL \Off;
MoveL *, v1000, fine, tool1;

El robot se mueve hacia la posicin y la orientacin programadas, pero usando la


configuracin de ejes ms cercana posible, que puede ser distinta de la
programada.
Argumentos
ConfL [\On]|[\Off]

[ \On ]
Tipo de dato: switch
Se monitoriza la configuracin del robot.
[ \Off ]
Tipo de dato: switch
No se monitoriza la configuracin del robot.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.26 ConfL - Monitoriza la configuracin durante el movimiento lineal
Continuacin
Ejecucin de programas
Durante un movimiento lineal o circular, el robot se mueve siempre hacia la posicin
y la orientacin programadas que presenten la configuracin de ejes ms cercana
posible. Si se elige el argumento \On (o no se utiliza ningn argumento), la
ejecucin del programa se detiene tan pronto como aparezca el riesgo de que la
configuracin de la posicin programada no pueda alcanzarse desde la posicin
actual.
Sin embargo, es posible reanudar el programa, si bien los ejes de la mueca
pueden continuar movindose hacia la configuracin incorrecta. En los puntos de
paro, el robot comprobar que se han alcanzado las configuraciones de todos los
ejes, no slo de los ejes de la mueca.
Si se usa adems SingArea\Wrist, el robot se mueve siempre hacia la
configuracin programada para los ejes de la mueca y, en los puntos de paro,
se comprueban las dems configuraciones de ejes.
Si se utiliza el argumento \Off, no se realiza ninguna monitorizacin.
Una regla sencilla para evitar problemas, tanto con ConfL\On como con \Off,
es insertar puntos intermedios para hacer que el movimiento de cada eje sea
inferior a los 90 grados entre dos puntos. Ms exactamente, la suma de
movimientos de cualquier par de ejes (1+4), (1+6), (3+4) o (3+6) no debe sobrepasar
los 180 grados.
Si se utiliza ConfL\Off con un movimiento grande, ste puede causar paros en
ese mismo momento o despus en el programa, generando el error 50050
Position outside reach o 50080 Position not compatible. En programas
que utilizan ConfL\Off, se recomienda usar movimientos hacia puntos de
configuracin conocidos mediante ConfJ\On o MoveJ + ConfL\On +
SingArea\Wrist + MoveL, como puntos de partida de las distintas partes del
programa.
De forma predeterminada, la monitorizacin est activada. Se activa
automticamente en los casos siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio.

Sintaxis
ConfL
[ '\' On] | [ '\' Off]';'

Informacin relacionada
Para obtener ms informacin sobre Consulte
Manejo de configuraciones diferentes Technical reference manual - RAPID overview
Configuracin del robot durante el
movimiento de ejes

ConfJ - Controla la configuracin durante el movimiento de los ejes en la pgina 63

Definicin del mtodo de interpolacin SingArea - Define el mtodo de interpolacin alrealrededor de puntos singulares
dedor de puntos singulares en la pgina 476

66

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.27 CONNECT - Conecta una interrupcin a una rutina TRAP

1.27 CONNECT - Conecta una interrupcin a una rutina TRAP


Utilizacin
CONNECT se utiliza para determinar la identidad de una interrupcin y conectarla
a una rutina TRAP.
La interrupcin se define mediante la peticin de un evento de interrupcin y la
especificacin de su identidad. Por tanto, cuando se produce un evento, la rutina
TRAP se ejecuta automticamente.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin CONNECT.
Ejemplo 1
VAR intnum feeder_low;
PROC main()
CONNECT feeder_low WITH feeder_empty;
ISignalDI di1, 1 , feeder_low;
...

Se crea una identidad de interrupcin feeder_low que se conecta a la rutina


TRAP feeder_empty. Se producir una interrupcin en el momento en el que la
entrada di1 pasa al nivel alto. En otras palabras, cuando la seal pasa al modo
activo, se ejecuta la rutina TRAP feeder_empty.
Argumentos
CONNECT Interrupt WITH Trap routine

Interrupt
Tipo de dato: intnum
La variable a la que se desea asignar la identidad de la interrupcin. La declaracin
NO DEBE hacerse dentro de una rutina (como dato de la rutina).
Trap routine
Identifier
El nombre de la rutina TRAP.
Ejecucin de programas
Se asigna a la variable una identidad de interrupcin que se usar a partir de ese
momento para pedir o desactivar interrupciones. Esta identidad tambin se conecta
a la rutina TRAP especificada.
Nota
Todas las interrupciones de una tarea se cancelan cuando el puntero de programa
se sita en Main para esa tarea y deben ser reconectadas. Las interrupciones
no se ven afectadas por cadas de alimentacin ni arranques en caliente.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.27 CONNECT - Conecta una interrupcin a una rutina TRAP
Continuacin
Limitaciones
No es posible conectar una interrupcin (una identidad de interrupcin) a ms de
una rutina TRAP a la vez. Sin embargo, es posible conectar varias interrupciones
a una misma rutina TRAP.
Cuando se conecta una interrupcin a una rutina TRAP, no es posible conectarla
de nuevo ni transferirla a otra rutina. Es necesario eliminarla en primer lugar
mediante la instruccin IDelete.
Las interrupciones que lleguen o que no hayan sido gestionadas antes de la
detencin de la ejecucin del programa no se procesan. Las interrupciones no se
tienen en cuenta al detener el programa. Las interrupciones definidas como seguras
no sern descuidadas al realizar el paro de programa. Se gestionarn al iniciar de
nuevo el programa.
Gestin de errores
Si la variable utilizada para especificar la interrupcin ya est conectada a una
rutina TRAP, la variable de sistema ERRNO cambia a ERR_ALRDYCNT.
Si la variable utilizada para especificar la interrupcin no es una referencia a una
variable, la variable de sistema ERRNO cambia a ERR_CNTNOTVAR.
Si no hay ms nmeros de interrupcin disponibles, la variable de sistema ERRNO
cambia a ERR_INOMAX.
Estos errores pueden ser gestionados en el gestor ERROR.
Sintaxis
(EBNF)
CONNECT <connect target> WITH <trap>';'
<connect target> ::= <variable>
| <parameter>
| <VAR>
<trap> ::= <identifier>

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview

Ms informacin sobre la gestin de interrup- Technical reference manual - RAPID overview


ciones
Tipos de datos de las interrupciones

intnum - Identidad de interrupcin en la pgina 1212

Cancelacin de una interrupcin

IDelete - Cancela una interrupcin en la pgina 129

68

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.28 CopyFile - Copia un archivo

1.28 CopyFile - Copia un archivo


Utilizacin
CopyFile se utiliza para hacer una copia de un archivo existente.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin CopyFile.
Ejemplo 1
CopyFile "HOME:/miarchivo", "HOME:/suarchivo";
El archivo myfile se copia a yourfile. En este momento, los dos archivos son
idnticos.
CopyFile "HOME:/myfile", "HOME:/mydir/yourfile";

El archivo myfile se copia a yourfile en el directorio mydir.


Argumentos
CopyFile OldPath NewPath

OldPath
Tipo de dato: string
La ruta completa del archivo del que se desea copiar.
NewPath
Tipo de dato: string
La ruta completa a la que se desea copiar el archivo.
Ejecucin de programas
El archivo especificado en OldPath se copia al archivo especificado en NewPath.
Gestin de errores
Si el archivo especificado en NewPath ya existe, la variable de sistema ERRNO
cambia a ERR_FILEEXIST. A continuacin, este error puede ser gestionado en el
gestor de errores.
Sintaxis
CopyFile
[ OldPath ':=' ] < expression (IN) of string > ','
[ NewPath ':=' ] < expression (IN) of string >';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Creacin de un directorio

MakeDir - Crea un nuevo directorio en la pgina 227

Eliminacin de un directorio

RemoveDir - Elimina un directorio en la pgina 377

Cambio del nombre de un archivo

RenameFile - Cambia el nombre de un archivo en la pgina 380

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.28 CopyFile - Copia un archivo
Continuacin
Para obtener ms informacin sobre

Consulte

Eliminacin de un archivo

RemoveFile - Elimina un archivo en la pgina 379

Comprobacin del tipo del archivo

IsFile - Comprobar el tipo de un archivo en


la pgina 944

Comprobacin del tamao del archivo

FileSize - Obtiene el tamao de un archivo


en la pgina 903

Comprobacin del tamao del sistema de


archivos

FSSize - Obtiene el tamao de un sistema


de archivos en la pgina 910

70

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.29 CopyRawBytes - Copia el contenido de un dato de tipo rawbytes

1.29 CopyRawBytes - Copia el contenido de un dato de tipo rawbytes


Utilizacin
CopyRawBytes se utiliza para copiar todo el contenido o una parte del mismo de
una variable de tipo rawbytes a otra.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin CopyRawBytes.
Ejemplo 1
VAR
VAR
VAR
VAR

rawbytes from_raw_data;
rawbytes to_raw_data;
num integer := 8
num float := 13.4;

ClearRawBytes from_raw_data;
PackRawBytes integer, from_raw_data, 1 \IntX := DINT;
PackRawBytes float, from_raw_data, (RawBytesLen(from_raw_data)+1)
\Float4;
CopyRawBytes from_raw_data, 1, to_raw_data, 3,
RawBytesLen(from_raw_data);

En este ejemplo, la variable from_raw_data de tipo rawbytes se borra en primer


lugar, es decir, se cambian a 0 todos sus bytes. A continuacin, se almacena en
los 4 primeros bytes el valor de integer y en los siguientes 4 bytes el valor de
float.
Despus de guardar un dato en from_raw_data, el contenido (8 bytes) se copia
a to_raw_data, empezando por la posicin 3.
Argumentos
CopyRawBytes FromRawData FromIndex ToRawData ToIndex[\NoOfBytes]

FromRawData
Tipo de dato: rawbytes
FromRawData es el contenedor de datos del cual se copiarn los datos de tipo
rawbytes.
FromIndex
Tipo de dato: num
FromIndex es la posicin de FromRawData a partir de la cual comienza el copiado
de los datos. El primer nmero de ndice es 1.
ToRawData
Tipo de dato: rawbytes
ToRawData es el contenedor de datos al cual se copiarn los datos de tipo
rawbytes.
ToIndex
Tipo de dato: num
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.29 CopyRawBytes - Copia el contenido de un dato de tipo rawbytes
Continuacin
ToIndex es la posicin de ToRawData a partir de la cual se guardarn los datos
copiados. Se copia todo el contenido hasta el final. El primer nmero de ndice es
1.
[\NoOfBytes]
Tipo de dato: num
El valor especificado con \NoOfBytes es el nmero de bytes que se desea copiar
de FromRawData a ToRawData.
Si no se especifica \NoOfBytes, se copian todos los bytes que van desde
FromIndex hasta el final de la longitud actual de bytes vlidos de FromRawData.
Ejecucin de programas
Durante la ejecucin del programa, se copian los datos de una variable rawbytes
a otra.
La longitud actual de los bytes vlidos de la variable ToRawData cambia a:

(ToIndex + nmero de bytes copiados - 1)

La longitud actual de los bytes vlidos de la variable ToRawData no cambia


si la totalidad de la operacin de copia se realiza dentro de la longitud anterior
de bytes vlidos de la variable ToRawData.

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.
Sintaxis
CopyRawBytes
[FromRawData ':=' ] < variable (VAR) of rawbytes> ','
[FromIndex ':=' ] < expression (IN) of num> ','
[ToRawData ':=' ] < variable (VAR) of rawbytes> ','
[ToIndex ':=' ] < expression (IN) of num>
['\'NoOfBytes ':=' < expression (IN) of num> ]';'

Informacin relacionada
Para obtener ms informacin sobre Consulte
rawbytes datos

rawbytes - Datos sin formato en la pgina 1254

Obtencin de la longitud de un dato RawBytesLen - Obtiene la longitud de un dato de tipo


rawbytes
rawbytes en la pgina 1011
Borrado del contenido de un dato de ClearRawBytes - Borra el contenido de un dato de
tipo rawbytes
tipo rawbytes en la pgina 53
Empaquetamiento de un encabezado PackDNHeader - Empaqueta un encabezado de Dede DeviceNet en datos rawbytes
viceNet en datos rawbytes en la pgina 304
Empaquetamiento de datos en datos PackRawBytes - Empaqueta datos en un dato de tipo
rawbytes
rawbytes en la pgina 307
Escritura de un dato rawbytes

WriteRawBytes - Escribe un dato de tipo rawbytes


en la pgina 772

Lectura de un dato rawbytes

ReadRawBytes - Lee datos de tipo rawbytes en la


pgina 374

Contina en la pgina siguiente


72

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.29 CopyRawBytes - Copia el contenido de un dato de tipo rawbytes
Continuacin
Para obtener ms informacin sobre Consulte
Desempaquetamiento de datos de un UnpackRawBytes - Desempaqueta datos de un dato
dato rawbytes
de tipo rawbytes en la pgina 704

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.30 CorrClear - Elimina todos los generadores de correcciones

1.30 CorrClear - Elimina todos los generadores de correcciones


Descripciones
CorrClear se utiliza para eliminar todos los generadores de correcciones
conectados. La instruccin puede usarse para eliminar todos los offsets
proporcionados anteriormente por todos los generadores de correcciones.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin CorrClear.
Ejemplo 1
CorrClear;
Esta instruccin elimina todos los generadores de correccin conectados.
Nota
Una forma sencilla de garantizar que todos los generadores de correcciones
(con sus correcciones) se eliminen al iniciarse el programa, es ejecutar
CorrClear en una rutina de evento START.
Consulte Manual de referencia tcnica - Parmetros del sistema, tema Controller.
Sintaxis
CorrClear ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Conexin con un generador de correccio- CorrCon - Establece una conexin con un genenes
rador de correcciones en la pgina 75
Desconexin de un generador de correc- CorrDiscon - Cierra la conexin con un generaciones
dor de correcciones en la pgina 80
Escritura en un generador de correcciones CorrWrite - Escribe en un generador de correcciones en la pgina 81
Lectura de los offsets totales actuales

CorrRead - Lee los offsets totales actuales en


la pgina 860

Descriptor de correccin

corrdescr - Descriptor de generador de correcciones en la pgina 1185

74

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.31 CorrCon - Establece una conexin con un generador de correcciones

1.31 CorrCon - Establece una conexin con un generador de correcciones


Utilizacin
CorrCon se utiliza para conectarse a un generador de correcciones.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin CorrCon.
Consulte tambin Ms ejemplos en la pgina 75.
Ejemplo 1
VAR corrdescr id;
...
CorrCon id;

La variable id se conecta a una referencia del generador de correcciones.


Argumentos
CorrCon Descr

Descr
Tipo de dato: corrdescr
Descriptor del generador de correcciones.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin CorrCon.
Sistema de coordenadas de la trayectoria
Todas las correcciones de la trayectoria (offsets aplicados a la trayectoria) se
aaden en el sistema de coordenadas de la trayectoria. El sistema de coordenadas
de la trayectoria se define de la forma mostrada a continuacin:

xx0500002156_en

Direccin de la trayectoria

Herramienta

Sistema de coordenadas de la trayectoria

Sistema de coordenadas de la herramienta

El eje de coordenadas X de la trayectoria se indica como la tangente de la


trayectoria.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.31 CorrCon - Establece una conexin con un generador de correcciones
Continuacin

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.

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.

Ejemplo de aplicacin
Un ejemplo de una aplicacin 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. En
la figura siguiente se muestra un dispositivo de correccin de trayectoria.

xx0500002155_en

Sensor para correccin horizontal

Sensor para correccin vertical

Sistema de coordenadas de la trayectoria

Herramienta

Ejemplo de programa
Nota
hori_sig y vert_sig son seales analgicas definidas en los parmetros del
sistema.

Contina en la pgina siguiente


76

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.31 CorrCon - Establece una conexin con un generador de correcciones
Continuacin
CONST num TARGET_DIST := 5;
CONST num SCALE_FACTOR := 0.5;
VAR intnum intno1;
VAR corrdescr hori_id;
VAR corrdescr vert_id;
VAR pos total_offset;
VAR pos write_offset;
VAR bool conFlag;
PROC PathRoutine()
! Conectar con los generadores de correcciones para la correccin
horizontal y vertical.
CorrCon hori_id;
CorrCon vert_id;
conFlag := TRUE;
! Setup a 5 Hz timer interrupt. The trap routine will read the
sensor values and
! compute the path corrections.
CONNECT intno1 WITH ReadSensors;
ITimer\Single, 0.2, intno1;
! Position for start of contour tracking
MoveJ p10,v100,z10,tool1;
! Run MoveL with both vertical and horizontal correction.
MoveL p20,v100,z10,tool1\Corr;
! Read the total corrections added by all connected correction
generators.
total_offset := CorrRead();
! Write the total vertical correction on the FlexPendant.
TPWrite "The total vertical correction is:" \Num:=total_offset.z;
! Disconnect the correction generator for vertical correction.
! Horizontal corrections will be unaffected.
CorrDiscon vert_id;
conFlag := FALSE;
! Run MoveL with only horizontal interrupt correction.
MoveL p30,v100,z10,tool1\Corr;
! Remove all outstanding connected correction generators.
! In this case, the only connected correction generator is the
one for horizontal
! correction.
CorrClear;
! Remove the timer interrupt.
IDelete intno1;
ENDPROC

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.31 CorrCon - Establece una conexin con un generador de correcciones
Continuacin
TRAP ReadSensors
VAR num horiSig;
VAR num vertSig;
! Compute the horizontal correction values and execute the
correction.
horiSig := hori_sig;
write_offset.x := 0;
write_offset.y := (hori_sig - TARGET_DIST)*SCALE_FACTOR;
write_offset.z := 0;
CorrWrite hori_id, write_offset;
IF conFlag THEN
! Compute the vertical correction values and execute the
correction.
write_offset.x := 0;
write_offset.y := 0;
write_offset.z := (vert_sig - TARGET_DIST)*SCALE_FACTOR;
CorrWrite vert_id, write_offset;
ENDIF
!Setup interrupt again
IDelete intnol;
CONNECT intno1 WITH ReadSensors;
ITimer\single, 0.2, intno1;
ENDTRAP

Explicacin del programa


Se establece la conexin a dos generadores de correcciones con la instruccin
CorrCon. Se hace referencia a cada generador de correcciones con un descriptor
exclusivo (hori_id y vert_id) del tipo corrdescr. Cada uno de los dos sensores
utilizar un generador de correcciones.
Se configura una interrupcin de temporizacin para llamar a la rutina TRAP
ReadSensors con una frecuencia de 5 Hz. Los offsets necesarios para la correccin
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 instruccin CorrWrite. Todas las correcciones tienen
un efecto inmediato sobre la trayectoria.
La instruccin MoveL debe ser programada con el argumento modificador Corr
si se utilizan correcciones de trayectoria. De lo contrario, no se ejecuta ninguna
correccin.
Cuando la primera instruccin MoveL est preparada, se utiliza la funcin CorrRead
para leer la suma de todas las correcciones (la correccin total de la trayectoria)
indicada por todos los generadores de correcciones conectados. El resultado de
la correccin vertical total de la trayectoria se escribe en el FlexPendant con la
instruccin TPWrite.
A continuacin, CorrDiscon desconecta el generador de correcciones de la
correccin vertical (al que se hace referencia con el descriptor vert_id). Todas
las correcciones aadidas por este generador de correcciones se eliminarn de
Contina en la pgina siguiente
78

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.31 CorrCon - Establece una conexin con un generador de correcciones
Continuacin
la correccin total de la trayectoria. Las correcciones aadidas por el generador
de correcciones para la correccin horizontal se siguen conservando.
Por ltimo, la funcin CorrClear elimina todos los generadores de correcciones
restantes, junto con sus correcciones aadidas previamente. En este caso, el nico
que se elimina es el generador de correcciones para la correccin horizontal. La
interrupcin de temporizacin tambin se elimina con la instruccin IDelete.
Los generadores de correcciones
En la tabla siguiente se muestran los generadores de correcciones.
X

Eje de coordenadas de la trayectoria

Generador de correcciones vertical, con la suma de todas sus correcciones


de trayectoria

Generador de correcciones horizontal, con la suma de todas sus correcciones


de trayectoria

Generador de correcciones no conectado

Generador de correcciones no conectado

Generador de correcciones no conectado

La suma de todas las correcciones realizadas por todos los generadores de


correccin conectados

Limitaciones
Es posible conectarse a un mximo de 5 generadores de correcciones a la vez.
Los generadores de correcciones no se mantienen al reiniciar el controlador.
Sintaxis
CorrCon
[ Descr ':=' ] < variable (VAR) of corrdescr > ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Desconexin de un generador de correcciones CorrDiscon - Cierra la conexin con un


generador de correcciones en la pgina 80
Escritura en un generador de correcciones

CorrWrite - Escribe en un generador de


correcciones en la pgina 81

Lectura de los offsets totales actuales

CorrRead - Lee los offsets totales actuales


en la pgina 860

Eliminacin de todos los generadores de correcciones

CorrClear - Elimina todos los generadores


de correcciones en la pgina 74

Descriptor de generador de correcciones

corrdescr - Descriptor de generador de


correcciones en la pgina 1185

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.32 CorrDiscon - Cierra la conexin con un generador de correcciones

1.32 CorrDiscon - Cierra la conexin con un generador de correcciones


Descripcin
CorrDiscon se utiliza para desconectarse de un generador de correcciones con
el que se ha conectado anteriormente. Esta instruccin puede utilizarse para
eliminar las correcciones obtenidas anteriormente.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin CorrDiscon.
Consulte tambin Ms ejemplos en la pgina 80.
Ejemplo 1
VAR corrdescr id;
...
CorrCon id;
...
CorrDiscon id;

CorrDiscon cierra la conexin con el generador de correcciones con el que se


haba conectado anteriormente y al que se hace referencia con el descriptor id.
Argumentos
CorrDiscon Descr

Descr
Tipo de dato: corrdescr
Descriptor del generador de correcciones.
Ms ejemplos
Para obtener ms ejemplos de la instruccin CorrDiscon, consulte CorrCon Establece una conexin con un generador de correcciones en la pgina 75.
Sintaxis
CorrDiscon
[ Descr ':=' ] < variable (VAR) of corrdescr > ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Conexin con un generador de correccio- CorrCon - Establece una conexin con un genenes
rador de correcciones en la pgina 75
Escritura en un generador de correccio- CorrWrite - Escribe en un generador de correcciones
nes en la pgina 81
Lectura de los offsets totales actuales

CorrRead - Lee los offsets totales actuales en la


pgina 860

Eliminacin de todos los generadores


de correcciones

CorrClear - Elimina todos los generadores de


correcciones en la pgina 74

Descriptor de correccin

corrdescr - Descriptor de generador de correcciones en la pgina 1185

80

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.33 CorrWrite - Escribe en un generador de correcciones

1.33 CorrWrite - Escribe en un generador de correcciones


Descripcin
CorrWrite se utiliza para escribir offsets en el sistema de coordenadas de
trayectoria de un generador de correcciones.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin CorrWrite.
Ejemplo 1
VAR corrdescr id;
VAR pos offset;
...
CorrWrite id, offset;

Los offsets actuales, almacenados en la variable offset, se escriben en un generador


de correcciones al que se hace referencia con el descriptor id.
Argumentos
CorrWrite Descr Data

Descr
Tipo de dato: corrdescr
Descriptor del generador de correcciones.
Datos
Tipo de dato: pos
El offset a escribir.
Ms ejemplos
Para obtener ms ejemplos de la instruccin CorrWrite, consulte CorrCon Establece una conexin con un generador de correcciones en la pgina 75.
Limitaciones
El mayor rendimiento se consigue en las trayectorias rectas. A medida que
aumentan la velocidad y los ngulos entre dos trayectorias lineales consecutivas,
la desviacin respecto de la trayectoria esperada aumenta consiguientemente.
Esto mismo se aplica a los crculos a medida que se reduce el radio del crculo.
Sintaxis
CorrWrite
[ Descr ':=' ] < variable (VAR) of corrdescr > ','
[ Data ':=' ] < expression (IN) of pos > ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Conexin con un generador de correccio- CorrCon - Establece una conexin con un genenes
rador de correcciones en la pgina 75

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.33 CorrWrite - Escribe en un generador de correcciones
Continuacin
Para obtener ms informacin sobre

Consulte

Desconexin de un generador de correc- CorrDiscon - Cierra la conexin con un generaciones


dor de correcciones en la pgina 80
Lectura de los offsets totales actuales

CorrRead - Lee los offsets totales actuales en la


pgina 860

Eliminacin de todos los generadores de CorrClear - Elimina todos los generadores de


correcciones
correcciones en la pgina 74
Descriptor de generador de correcciones corrdescr - Descriptor de generador de correcciones en la pgina 1185

82

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.34 DeactUnit - Desactiva una unidad mecnica

1.34 DeactUnit - Desactiva una unidad mecnica


Utilizacin
DeactUnit se utiliza para desactivar una unidad mecnica.
Puede usarse para determinar qu unidad debe estar activa, por ejemplo cuando
se utilizan unidades de accionamiento comunes.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos
A continuacin aparecen algunos ejemplos bsicos de la instruccin DeactUnit.
Ejemplo 1
DeactUnit orbit_a;

Desactivacin de la unidad mecnica orbit_a.


Ejemplo 2
MoveL p10, v100, fine, tool1;
DeactUnit track_motion;
MoveL p20, v100, z10, tool1;
MoveL p30, v100, fine, tool1;
ActUnit track_motion;
MoveL p40, v100, z10, tool1;

La unidad track_motion quedar estacionaria cuando el robot se mueve hacia


p20 y p30. A continuacin, tanto el robot como track_motion se mueven hacia
p40.
Ejemplo 3
MoveL p10, v100, fine, tool1;
DeactUnit orbit1;
ActUnit orbit2;
MoveL p20, v100, z10, tool1;

Se desactiva la unidad orbit1 y se activa orbit2.


Argumentos
DeactUnit MechUnit

MechUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica que debe desactivarse.
Ejecucin 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 desactiva la unidad mecnica
especificada. Esto significa que no se controlar ni monitorizar hasta que se
reactive.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.34 DeactUnit - Desactiva una unidad mecnica
Continuacin
Si varias unidades mecnicas comparten una misma unidad de accionamiento, la
desactivacin de una de estas unidades mecnicas tambin desconecta la unidad
de la unidad de accionamiento comn.
Limitaciones
La instruccin DeactUnit no puede utilizarse si una de las unidades mecnicas
se encuentra en el modo independiente.
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
DeactUnit no puede ejecutarse en rutinas de RAPID que estn conectadas a los
siguientes eventos especiales del sistema: PowerOn, Stop, QStop, Restart o Step.
Es posible usar ActUnit - DeactUnit en el nivel StorePath, pero al ejecutar
RestoPath deben estar activadas las mismas unidades mecnicas al ejecutar
StorePath. En una operacin de este tipo, la grabadora de trayectorias y la
trayectoria del nivel bsico estarn intactas, pero la trayectoria del nivel StorePath
se borrar.
Sintaxis
DeactUnit
[MechUnit ':='] < variable (VAR) of mecunit> ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Activacin de unidades mecnicas

ActUnit - Activa una unidad mecnica en la pgina 19

Unidades mecnicas

mecunit - Unidad mecnica en la pgina 1227

Grabadora de trayectorias

PathRecMoveBwd - Hace retroceder la grabadora de trayectorias en la pgina 316mecunit - Unidad mecnica en la pgina 1227

84

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.35 Decr - Reduce un nmero en 1

1.35 Decr - Reduce un nmero en 1


Utilizacin
Decr se utiliza para restar 1 a una variable o una variable persistente de tipo
numrico.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin Decr.
Consulte tambin Ms ejemplos en la pgina 85.
Ejemplo 1
Decr reg1;

Se resta 1 a reg1, es decir reg1:=reg1-1.


Argumentos
Decr Name | Dname

Name
Tipo de dato: num
El nombre de la variable o de la variable persistente cuyo valor se desea reducir.
Dname
Tipo de dato: dnum
El nombre de la variable o de la variable persistente cuyo valor se desea reducir.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin Decr.
Ejemplo 1
VAR num no_of_parts:=0;
...
TPReadNum no_of_parts, "How many parts should be produced? ";
WHILE no_of_parts>0 DO
produce_part;
Decr no_of_parts;
ENDWHILE

Se pregunta al operador cuntas piezas deben producirse. La variable


no_of_parts se utiliza para contar el nmero de piezas que quedan por producir.
Ejemplo 2
VAR dnum no_of_parts:=0;
...
TPReadDnum no_of_parts, "How many parts should be produced? ";
WHILE no_of_parts>0 DO
produce_part;
Decr no_of_parts;
ENDWHILE

Se pregunta al operador cuntas piezas deben producirse. La variable


no_of_parts se utiliza para contar el nmero de piezas que quedan por producir.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.35 Decr - Reduce un nmero en 1
Continuacin
Sintaxis
Decr
[ Name ':=' ] < var or pers (INOUT) of num >
| [ Dname ':=' ] < var or pers (INOUT) of dnum >' ;'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Incremento de una variable en 1

Incr - Aumenta en 1 un valor en la pgina 137

Sustraccin de cualquier valor a una varia- Add - Suma un valor numrico en la pgina 21
ble
Cambio de un dato mediante una expre- ":=" - Asigna un valor en la pgina 26
sin arbitraria, por ejemplo una multiplicacin

86

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.36 DitherAct - Activa la funcin de oscilacin del servo suave

1.36 DitherAct - Activa la funcin de oscilacin del servo suave


Utilizacin
DitherAct se utiliza para activar la funcin de oscilacin, que reduce la friccin
del servo suave en el modelo IRB 7600.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin DitherAct.
Ejemplo 1
SoftAct \MechUnit:=ROB_1, 2, 100;
WaitTime 2;
DitherAct \MechUnit:=ROB_1, 2;
WaitTime 1;
DitherDeact;
SoftDeact;

La oscilacin slo permanece activada durante un segundo durante el servo suave.


Ejemplo 2
DitherAct \MechUnit:=ROB_1, 2;
SoftAct \MechUnit:=ROB_1, 2, 100;
WaitTime 1;
MoveL p1, v50, z20, tool1;
SoftDeact;
DitherDeact;

Se activa la oscilacin para el eje 2. El movimiento se retarda un segundo para


permitir un tiempo de transicin suficiente para la pendiente de SoftAct. Si se
llama a DitherAct antes de SoftAct, la oscilacin comenzar tan pronto como
se ejecuta SoftAct para el eje. Si no se realiza ninguna llamada a DitherDeact,
la oscilacin permanece activada para todas las llamadas posteriores a SoftAct.
Argumentos
DitherAct [\MechUnit] Axis [\Level]

[ \MechUnit ]
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica. Si se omite este argumento, significa la activacin
del servo suave para el eje especificado del robot.
Axis
Tipo de dato: num
Nmero de eje (1-6).
[ \Level ]
Tipo de dato: num
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.36 DitherAct - Activa la funcin de oscilacin del servo suave
Continuacin
La amplitud de la oscilacin (del 50% al 150%). Con el 50%, las oscilaciones se
reducen (la friccin aumenta). Con el 150%, se utiliza la mxima oscilacin (puede
dar lugar a vibraciones en el elemento terminal). El valor predeterminado es 100%.
Ejecucin de programas
La llamada a DitherAct puede hacerse antes o despus de SoftAct. La llamada
a DitherAct despus de SoftAct resulta ms rpida, pero presenta otras
limitaciones.
Normalmente, el eje 1 del sistema IRB 7600 no requiere oscilacin. El mximo
efecto de la reduccin de la friccin se produce en los ejes 2 y 3.
Los parmetros de oscilacin se ajustan automticamente. El mximo rendimiento
de la oscilacin se consigue despus de tres o cuatro ejecuciones de SoftAct
en una posicin de proceso.
Limitaciones
La llamada a DitherAct despus de SoftAct puede dar lugar a un movimiento
no deseado del robot. La nica forma de eliminar este comportamiento es llamar
a DitherAct antes de SoftAct. Si sigue habiendo movimiento, es necesario
aumentar el tiempo de pendiente de SoftAct.
El tiempo de transicin es el tiempo de pendiente, que vara de un robot a otro,
multiplicado por el factor de pendiente de la instruccin SoftAct.
La oscilacin no est disponible para el eje 6.
La oscilacin se desactiva siempre que se produce una cada de alimentacin
elctrica.
La instruccin slo debe utilizarse con el sistema IRB 7600.
AVISO!
Al llamar a DitherAct antes de SoftAct, el robot debe estar en un punto fino.
Adems, no se permite abandonar el punto fino hasta que ha transcurrido el
tiempo de transicin de la pendiente. Si se hiciera, podran causarse daos en
las cajas de engranajes.
Sintaxis
DitherAct
[ '\' MechUnit ':=' < variable (VAR) of mecunit > ]
[Axis ':=' ] < expression (IN) of num >
[ '\' Level ':=' < expression (IN) of num > ] ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Activacin del servo suave

SoftAct - Activa el servo suave en la pgina 504

Comportamiento con el servo suave acti- Technical reference manual - RAPID overview
vado
Desactivacin de la oscilacin

DitherDeact - Desactiva la funcin de oscilacin


del servo suave en la pgina 89

88

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.37 DitherDeact - Desactiva la funcin de oscilacin del servo suave

1.37 DitherDeact - Desactiva la funcin de oscilacin del servo suave


Utilizacin
DitherDeact se utiliza para desactivar la funcin de oscilacin del servo suave
en el modelo IRB 7600.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin DitherDeact.
Ejemplo 1
DitherDeact;

Desactiva la oscilacin de todos los ejes.


Ejecucin de programas
DitherDeact puede usarse en cualquier momento. Si el servo suave est activado,
la oscilacin se detiene inmediatamente en todos los ejes. Si el servo suave no
est activado, la oscilacin no estar activada cuando se ejecute SoftAct
posteriormente.
La oscilacin se desactiva automticamente en los casos siguientes:

En los arranques en fro

Cuando se carga un nuevo programa

Cuando se inicia la ejecucin del programa desde el principio

Sintaxis
DitherDeact';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Activacin de la oscilacin

DitherAct - Activa la funcin de oscilacin del


servo suave en la pgina 87

3HAC16581-5 Revisin: 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


Utilizacin
DropWObj (Drop Work Object) se utiliza para desconectarse del objeto actual para
dejar el programa preparado para el siguiente objeto.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin 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 mvil (sistema de coordenadas) con el que est relacionada
la posicin de robot indicada en la instruccin. El transportador de la unidad
mecnica debe especificarse con ufmec en el objeto de trabajo.
Ejecucin 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 instruccin mientras el trabajo est utilizando activamente el objeto
de trabajo coordinado con el transportador, el movimiento se detiene.
La instruccin slo puede ejecutarse despus 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>';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Espera a objetos de trabajo

WaitWObj - Espera a un objeto de trabajo en un


transportador en la pgina 749

Seguimiento de transportadores

Application manual - Conveyor tracking

90

3HAC16581-5 Revisin: 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


Utilizacin
EOffsOff (External Offset Off) se utiliza para desactivar un offset de los ejes
externos.
El offset de los ejes externos se activa con la instruccin 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 instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin EOffsOff.
Ejemplo 1
EOffsOff;

Desactivacin 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 posicin de cada eje en p10 y p11.
El desplazamiento afecta al movimiento hacia p20 y p30, pero no hacia p40.
Ejecucin de programas
Se desactivan los offsets activos para los ejes externos.
Sintaxis
EOffsOff ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin del desplazamiento con dos EOffsOn - Activa un offset de ejes externos en la
posiciones
pgina 92
Definicin de offsets a partir de valores EOffsSet - Activa un offset de ejes externos a
conocidos
partir de valores conocidos en la pgina 94
Desactivacin del desplazamiento de
programa del robot

PDispOff - Desactiva el desplazamiento de programa en la pgina 336

3HAC16581-5 Revisin: 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


Utilizacin
EOffsOn(External Offset On) se utiliza para definir y activar un offset de ejes
externos a partir de dos posiciones.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin EOffsOn.
Consulte tambin Ms ejemplos en la pgina 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 instruccin 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
posicin real de cada eje y el punto programado (*) almacenado en la instruccin.
Argumentos
EOffsOn [\ExeP] ProgPoint

[ \ExeP ]
Executed Point
Tipo de dato: robtarget
La nueva posicin, utilizada para el clculo del offset. Si se omite el argumento,
se utiliza la posicin actual de los ejes en el momento de la ejecucin del programa.
ProgPoint
Programmed Point
Tipo de dato: robtarget
La posicin original de los ejes en el momento de la programacin.
Ejecucin 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 posicin actual de los ejes en el momento de la ejecucin del programa.
Dado que es la posicin real de los ejes que se utiliza, los ejes no deben estar en
movimiento cuando se ejecuta EOffsOn.

Contina en la pgina siguiente


92

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.40 EOffsOn - Activa un offset de ejes externos
Continuacin
A continuacin, se utiliza este offset para desplazar la posicin de los ejes externos
en las instrucciones de posicionamiento posteriores. El offset permanece activo
hasta que se activa un offset diferente (con la instruccin EOffsSet o EOffsOn)
o hasta que se desactiva el offset de los ejes externos (la instruccin EOffsOff).
Slo 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 automticamente en los casos siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio.

Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin EOffsOn.
Ejemplo 1
SearchL sen1, psearch, p10, v100, tool1;
PDispOn \ExeP:=psearch, *, tool1;
EOffsOn \ExeP:=psearch, *;

Se realiza una bsqueda en la cual la posicin buscada tanto de los ejes del robot
como de los ejes externos se almacena en la posicin psearch. Cualquier
movimiento realizado a continuacin parte de esta posicin 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 posicin
buscada y el punto programado (*) almacenado en la instruccin.
Sintaxis
EOffsOn
[ '\' ExeP ':=' < expression (IN) of robtarget> ',']
[ ProgPoint ':=' ] < expression (IN) of robtarget> ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Desactivacin de un offset de ejes exter- EOffsOff - Desactiva un offset de ejes externos


nos
en la pgina 91
Definicin de offsets a partir de valores
conocidos

EOffsSet - Activa un offset de ejes externos a


partir de valores conocidos en la pgina 94

Desplazamiento de los movimientos del PDispOn - Activa el desplazamiento de prograrobot


ma en la pgina 337
Sistemas de coordenadas

Technical reference manual - RAPID overview

3HAC16581-5 Revisin: 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


Utilizacin
EOffsSet (External Offset Set) se utiliza para definir y activar un offset para ejes
externos a partir de valores conocidos.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin EOffsSet.
Ejemplo 1
VAR extjoint eax_a_p100 := [100, 0, 0, 0, 0, 0];
...
EOffsSet eax_a_p100;

Activacin de un offset eax_a_p100 para los ejes externos, lo que implica que
(siempre y cuando el eje externo lgico "a" sea lineal):

El sistema de coordenadas ExtOffs se desplaza 100 mm para el eje lgico


"a" (consulte la figura siguiente).

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

La figura muestra el desplazamiento de un eje externo.

100
Sistema de coordenadas
normal
0
Sistema de coordenadas
ExtOffs

+X

+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 rotacin

Contina en la pgina siguiente


94

3HAC16581-5 Revisin: 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
Continuacin
Ejecucin de programas
El offset de los ejes externos se activa cuando se ejecuta la instruccin EOffsSet
y permanece activo hasta que se activa otro offset (con una instruccin EOffsSet
o EOffsOn) o hasta que se desactiva el offset de los ejes externos (con una
instruccin EOffsOff).
Slo 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 automticamente en los casos siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio.

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

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Activacin de un offset de ejes externos EOffsOn - Activa un offset de ejes externos en


la pgina 92
Desactivacin de un offset de ejes exter- EOffsOff - Desactiva un offset de ejes externos
nos
en la pgina 91
Desplazamiento de los movimientos del PDispOn - Activa el desplazamiento de prograrobot
ma en la pgina 337
Definicin de datos del tipo extjoint

extjoint - Posicin de los ejes externos en la


pgina 1205

Sistemas de coordenadas

Technical reference manual - RAPID overview

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.42 EraseModule - Elimina un mdulo

1.42 EraseModule - Elimina un mdulo


Utilizacin
EraseModule se utiliza para eliminar un mdulo de la memoria de programas
durante la ejecucin.
No existe ninguna restriccin en cuanto a cmo se haya cargado el mdulo. Puede
haber sido cargado manualmente, desde la configuracin o con una combinacin
de las instrucciones Load, StartLoad y WaitLoad.
El mdulo no puede definirse como Shared en la configuracin.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin EraseModule.
Ejemplo 1
EraseModule "PART_A";

Borra el mdulo de programa PART_A de la memoria de programas.


Argumentos
EraseModule ModuleName

ModuleName
Tipo de dato: string
El nombre del mdulo que debe eliminarse. Recuerde que se trata del nombre del
mdulo, no el nombre del archivo.
Ejecucin de programas
La ejecucin del programa espera a que el mdulo de programa termine el proceso
de eliminacin antes de que la ejecucin contine con la instruccin siguiente.
Una vez eliminado el mdulo de programa, se vinculan los dems mdulos de
programa.
Limitaciones
No se permite eliminar mdulos de programa que se estn ejecutando.
Las rutinas TRAP, los eventos de E/S del sistema y otras tareas de programa no
pueden ejecutarse durante el proceso de eliminacin.
Evite tener movimientos en curso durante la eliminacin.
La detencin del programa durante la ejecucin de la instruccin EraseModule
da lugar a un paro protegido con los motores apagados y un mensaje de error
"20025 Tiempo excesivo Orden paro" en el FlexPendant.
Gestin de errores
Si el archivo de la instruccin EraseModule no puede ser eliminado porque no
ha sido encontrado, la variable ERRNO cambia a ERR_MODULE. A continuacin,
este error puede ser gestionado en el gestor de errores.

Contina en la pgina siguiente


96

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.42 EraseModule - Elimina un mdulo
Continuacin
Sintaxis
EraseModule
[ModuleName':=']<expression (IN) of string>';'

Informacin relacionada
Para obtener ms informacin sobre Consulte
Descarga de un mdulo de programa

UnLoad - Descarga un mdulo de programa durante la ejecucin en la pgina 701

Carga de mdulos de programa en pa- StartLoad - Carga un mdulo de programa durante


ralelo con la ejecucin de otro programa la ejecucin en la pgina 514
WaitLoad - Conecta el mdulo cargado a la tarea
en la pgina 729
Aceptacin de una referencia no resuel- Manual de referencia tcnica - Parmetros del
ta
sistema, seccin Controller

3HAC16581-5 Revisin: 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


Utilizacin
ErrLog se utiliza para mostrar un mensaje de error en el FlexPendant y escribirlo
en el registro de eventos. Es necesario indicar el nmero de error y cinco
argumentos acerca del mismo. El mensaje se almacena en el dominio de proceso
del registro del robot. ErrLog tambin puede usarse para mostrar avisos y
mensajes de informacin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin 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 tendra el aspecto siguiente:


Mensaje de evento: 4800
myerror
errortext1
errortext2
errortext3
errortext4
Ejemplo 2
Las ID ErrorId deben declararse en un archivo .xml. El nmero 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 instruccin ErrLog. El valor de ErrorId del archivo
.xml es el mismo que se indica en la instruccin 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>

Contina en la pgina siguiente


98

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.43 ErrLog - Escribe un mensaje de error
Continuacin
Ejemplo de instruccin:
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 tendra el aspecto siguiente:


Mensaje de evento: 5210
Error de parmetro
Tarea: T_ROB1
El smbolo P1 es de slo lectura.
Contexto: MyModule/main/ErrLog
La primera instruccin ErrLog genera un mensaje de error. El mensaje se almacena
en el registro del robot, en el dominio de proceso. Tambin se muestra en la
pantalla del FlexPendant.
La segunda instruccin es una advertencia. Slo se almacena un mensaje en el
registro del robot.
En ambos casos, el programa sigue ejecutndose una vez terminada la instruccin.
Argumentos
ErrLog ErrorID [\W] | [\I] Argument1 Argument2 Argument3 Argument4
Argument5

ErrorId
Tipo de dato: num
El nmero de un error concreto que se desea monitorizar. El nmero 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 slo 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 informacin que slo se almacena en el registro de eventos
(no se muestra directamente en la pantalla del FlexPendant).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.43 ErrLog - Escribe un mensaje de error
Continuacin
Si no se especifica ninguno de los argumentos \W o \I, la instruccin genera un
mensaje de error directamente en el FlexPendant y lo almacena tambin 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.
Ejecucin de programas
Un mensaje de error (mximo 5 lneas) 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 informacin 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 Informacin relacionada ms abajo.
Limitaciones
La longitud total de la cadena (Argument1-Argument5) est limitada a 195
caracteres.

Contina en la pgina siguiente


100

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.43 ErrLog - Escribe un mensaje de error
Continuacin
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>

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

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos predefinidos de tipo errstr

errstr - Cadena de error en la pgina 1201

Visualizacin de mensajes en el FlexPen- TPWrite - Escribe en el FlexPendant en la pgidant


na 607
UIMsgBox - Cuadro de mensaje de usuario de
tipo bsico en la pgina 689
Registro de eventos

Manual del operador - IRC5 con FlexPendant

Mensajes del registro de eventos, explica- Application manual - Additional options, seccin
cin del archivo XML
Event log messages
Cmo instalar archivos XML al utilizar
opciones adicionales

Application manual - Additional options

3HAC16581-5 Revisin: 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


Utilizacin
ErrRaise se utiliza para crear un error en el programa y llamar a continuacin
al gestor de errores de la rutina. Se almacena un aviso en el registro de eventos.
ErrRaise tambin 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 nmero de error y cinco argumentos
acerca del mismo. El mensaje se almacena en el dominio de proceso del registro
del robot.
Ejemplos bsicos
A continuacin aparecen ejemplos bsicos de la instruccin 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 tendra el aspecto siguiente (aviso y/o un error):


Mensaje de evento: 4800
Estado de batera de respaldo
Tarea: main
La batera de respaldo est totalmente cargada.
Contexto: MyModule/main/ErrRaise
Es necesario registrar un nmero de error con la instruccin BookErrNo. La
cadena correspondiente se indica como primer argumento,ErrorName en la
instruccin 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.

Contina en la pgina siguiente


102

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.44 ErrRaise - Escribe un aviso y llama a un gestor de errores
Continuacin
ErrRaise tambin puede usarse en un gestor de errores en una subrutina. En
este caso, la ejecucin contina 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 nmero 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 instruccin ErrRaise. El valor de ErrorId del archivo
.xml es el mismo que se indica en la instruccin 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 instruccin:
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 tendra el aspecto siguiente (aviso y/o un error):


Mensaje de evento: 7055
Estado de batera de respaldo
Tarea: main
La batera de respaldo est totalmente cargada.
Contexto: MyModule/main/ErrRaise
Es necesario registrar un nmero de error con la instruccin BookErrNo. La
cadena correspondiente se indica como primer argumento,ErrorName en la
instruccin 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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: 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
Continuacin
ErrRaise tambin puede usarse en un gestor de errores en una subrutina. En
este caso, la ejecucin contina 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 nmero de error con la instruccin BookErrNo. La
variable correspondiente se indica como ErrorName.
ErrorId
Tipo de dato: num
El nmero de un error concreto que se desea monitorizar. El nmero 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.

Contina en la pgina siguiente


104

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.44 ErrRaise - Escribe un aviso y llama a un gestor de errores
Continuacin
Ejecucin 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 cundo se ejecute:

Si se ejecuta la instruccin en el cuerpo de la rutina, se genera un aviso y


la ejecucin contina en el gestor de errores.

Si se ejecuta la instruccin en un gestor de errores, el aviso anterior se omite,


se genera uno nuevo y el control es elevado a la instruccin desde la que
se hizo la llamada.

Limitaciones
La longitud total de la cadena (Argument1-Argument5) est limitada a 195
caracteres.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin 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 ejecucin.

Contina en la pgina siguiente


3HAC16581-5 Revisin: 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
Continuacin
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>

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

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos predefinidos de tipo errstr

errstr - Cadena de error en la pgina 1201

Registro de nmeros de error

BookErrNo - Registra un nmero de error de


sistema de RAPID en la pgina 32

Gestin de errores

Technical reference manual - RAPID overview

106

3HAC16581-5 Revisin: 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


Utilizacin
ErrWrite (Error Write) se utiliza para mostrar un mensaje de error en el
FlexPendant y escribirlo en el registro de eventos. Tambin puede usarse para
mostrar avisos y mensajes de informacin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ErrWrite.
Ejemplo 1
ErrWrite "PLC error", "Fatal error in PLC" \RL2:="Call service";
Stop;

Se almacena un mensaje en el registro del robot. Tambin se muestra en la pantalla


del FlexPendant.
Ejemplo 2
ErrWrite \W, "Search error", "No hit for the first search";
RAISE try_search_again;

Slo se almacena un mensaje en el registro del robot. Despus la ejecucin del


programa contina.
Argumentos
ErrWrite [ \W ] | [\I] Header Reason [ \RL2] [ \RL3] [ \RL4]

[ \W ]
Warning
Tipo de dato: switch
Genera una advertencia que slo 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 informacin que slo 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 instruccin genera un
mensaje de error directamente en el FlexPendant y lo almacena tambin en el
registro de eventos.
Header
Tipo de dato: string
El ttulo del mensaje de error (mximo 46 caracteres).
Reason
Tipo de dato: string
Motivo del error.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.45 ErrWrite - Escribe un mensaje de error
Continuacin
[ \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.
Ejecucin de programas
Un mensaje de error (mximo 5 lneas) 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 informacin 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 informacin (\I).
Limitaciones
La longitud total de la cadena (ttulo+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> ] ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos predefinidos de tipo errstr

errstr - Cadena de error en la pgina 1201

Visualizacin de mensajes en el FlexPen- TPWrite - Escribe en el FlexPendant en la pgidant


na 607
UIMsgBox - Cuadro de mensaje de usuario de
tipo bsico en la pgina 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 pgina 98

108

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.46 EXIT - Finaliza la ejecucin del programa

1.46 EXIT - Finaliza la ejecucin del programa


Utilizacin
EXIT se utiliza para finalizar la ejecucin de un programa. Se impide la
reanudacin del programa, es decir, ste slo puede ejecutarse empezando de
nuevo desde la primera instruccin de la rutina main.
La instruccin EXIT debe usarse cuando se producen errores no recuperables o
cuando se debe detener definitivamente la ejecucin del programa. Para detener
temporalmente la ejecucin del programa, se utiliza la instruccin Stop. Tras la
ejecucin de la instruccin EXIT, el puntero de programa se pierde. Para continuar
con la ejecucin del programa, es necesario establecer el puntero de programa.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin EXIT.
Ejemplo 1
ErrWrite "Fatal error","Illegal state";
EXIT;

La ejecucin del programa se detiene y no puede reanudarse en la posicin en la


que se detiene el programa.
Sintaxis
EXIT ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Detencin temporal de la ejecucin del


programa

Stop - Detiene la ejecucin del programa en la


pgina 543

3HAC16581-5 Revisin: 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


Utilizacin
ExitCycle se utiliza para interrumpir el ciclo actual y trasladar el puntero de
programa (PP) a la primera instruccin de la rutina principal.
Si el programa se ejecuta en modo continuo, se empezar a ejecutar el ciclo
siguiente.
Si la ejecucin se encuentra en el modo cclico, la ejecucin se detiene en la
primera instruccin de la rutina principal.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin 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 seal di_error.


Ejecucin de programas
La ejecucin de ExitCycle en la tarea de programa que controla las unidades
mecnicas 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 an


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 ejecucin (tanto en la ejecucin normal como en las
rutinas TRAP).

El puntero de programa se traslada a la primera instruccin de la rutina


principal.

La ejecucin del programa contina y pasa a ejecutar el ciclo siguiente.

Contina en la pgina siguiente


110

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.47 ExitCycle - Interrumpe el ciclo actual y pasa al siguiente
Continuacin
La ejecucin de ExitCycle en cualquier otra tarea de programa que no controle
las unidades mecnicas da lugar a lo siguiente en la tarea actual:

Se interrumpen todas las instrucciones iniciadas pero no terminadas en


todos los niveles de ejecucin (tanto en la ejecucin normal como en las
rutinas TRAP).

El puntero de programa se traslada a la primera instruccin de la rutina


principal.

La ejecucin del programa contina y pasa a ejecutar el ciclo siguiente.

Los dems elementos modales del programa y del sistema no se ven afectados
por la instruccin ExitCycle. Entre ellos se encuentran los siguientes:

El valor actual de las variables o variables persistentes.

Cualquier parmetro 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 instruccin de la rutina de entrada (en lugar de la rutina principal como
se especificaba anteriormente).
Sintaxis
ExitCycle';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Paro despus de un error no recuperable EXIT - Finaliza la ejecucin del programa en la


pgina 109
Finalizacin de la ejecucin del programa EXIT - Finaliza la ejecucin del programa en la
pgina 109
Paro para acciones de programa

Stop - Detiene la ejecucin del programa en la


pgina 543

Finalizacin de la ejecucin de una rutina RETURN - Finaliza la ejecucin de una rutina en


la pgina 390

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.48 FOR - Repite un nmero determinado de veces

1.48 FOR - Repite un nmero determinado de veces


Utilizacin
FOR se utiliza cuando es necesario repetir una o varias instrucciones un nmero
determinado de veces.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin FOR.
Consulte tambin Ms ejemplos en la pgina 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 automticamente.
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 ningn 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 automticamente 1 (o -1 si el
valor inicial es mayor que el valor final).

Contina en la pgina siguiente


112

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.48 FOR - Repite un nmero determinado de veces
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin 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.
Ejecucin de programas
1 Se evalan 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 ejecucin del programa contina en la instruccin que aparece a
continuacin 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) slo est disponible desde dentro del
bucle FOR y por tanto supone la ocultacin de otros datos y rutinas que tengan el
mismo nombre. Slo 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
combinacin con condiciones de finalizacin exactas para el bucle FOR (sin una
definicin de si se est utilizando o no la ltima pasada del bucle).
Comentarios
Si el nmero de repeticiones de las operaciones depende de que una expresin
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>

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.48 FOR - Repite un nmero determinado de veces
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Expresiones

Technical reference manual - RAPID overview

Repeticin siempre y cuando se cumpla WHILE - Repite una o varias operaciones siemuna condicin
pre y cuando... en la pgina 753
Identificadores

Technical reference manual - RAPID overview

114

3HAC16581-5 Revisin: 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


Utilizacin
GetDataVal (Get Data Value) permite obtener un valor de un objeto de datos que
se especifica mediante una variable de cadena de caracteres.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin GetDataVal.
Ejemplo 1
VAR num value;
...
GetDataVal "reg"+ValToStr(ReadNum(mycom)),value;

Esta instruccin obtiene el valor de un registro cuyo nmero 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 sesin imprime en el FlexPendant todas las variables de tipo num cuyo nombre
comience con my en el mdulo 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 sesin 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. Slo es posible realizar la obtencin
con la funcin GetNextSym.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.49 GetDataVal - Obtiene el valor de un objeto de datos
Continuacin
Si se omite el argumento, se captura el valor del objeto de datos visible en el
mbito de ejecucin 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 declaracin dar lugar a un error.
Existen variables predefinidas con el tipo de dato taskid para todas las tareas
de programa del sistema. La identificacin de la variable ser nombre_tarea+ID.
Por ejemplo, para la tarea T_ROB1 la identificacin 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 declaracin 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.
Gestin 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 parmetro 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 declaracin da lugar a un error
y la variable de sistema ERRNO cambia a ERR_SYM_ACCESS. La bsqueda de una
PERS declarada como LOCAL en otras tareas tambin 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.

Contina en la pgina siguiente


116

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.49 GetDataVal - Obtiene el valor de un objeto de datos
Continuacin
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 bsqueda con las seales signaldi. Si se busca num, no se
obtendr ninguna coincidencia de bsqueda con las seales signalgi o
signalai.
No es posible obtener el valor de una variable declarada como LOCAL en un mdulo
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>];

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Definicin de un conjunto de smbo- SetDataSearch - Definir el conjunto de smbolos de
los en una sesin de bsqueda
una secuencia de bsqueda en la pgina 462
Obtencin del siguiente smbolo
coincidente

GetNextSym - Obtiene el siguiente smbolo coincidente en la pgina 917

Asignacin del valor de un objeto


de datos

SetDataVal - Establece el valor de un objeto de datos


en la pgina 466

Asignacin del valor de varios obje- SetAllDataVal - Establece un valor en todos los objetos
tos de datos
de datos de un conjunto definido en la pgina 458
El tipo de datos relacionado datapos datapos - Inclusin de un bloque para un objeto de
datos en la pgina 1187

3HAC16581-5 Revisin: 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


Utilizacin
GetSysData captura el valor y, opcionalmente, el nombre de smbolo de un dato
de sistema actual del tipo de dato especificado.
Esta instruccin permite capturar datos sobre la herramienta, el objeto de trabajo
o la carga til del robot, adems de su nombre, en la tarea de movimiento actual
o la conectada, o bien en cualquier tarea de movimiento que tenga un nombre.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin 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;

Tambin 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 identificacin de la variable ser "nombre_tarea"+"ID".
Por ejemplo, para la tarea T_ROB1 la identificacin 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.

Contina en la pgina siguiente


118

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.50 GetSysData - Obtiene datos del sistema
Continuacin
El tipo de dato de este argumento tambin 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 tambin el
nombre del dato de sistema activo.
Ejecucin de programas
Cuando se ejecuta la instruccin 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 ejecucin de cualquier instruccin de movimiento. La carga til se
activa mediante la ejecucin de la instruccin GripLoad.
Gestin 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 ningn error si los argumentos \TaskRef o \TaskName
especifican la tarea sin movimiento que ejecuta esta funcin 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>
] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Definicin de una carga til

loaddata - Datos de carga en la pgina 1219

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.50 GetSysData - Obtiene datos del sistema
Continuacin
Para obtener ms informacin sobre

Consulte

Establecimiento de datos del sistema

SetSysData - Establece datos del sistema en la


pgina 474

120

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.51 GetTrapData - Obtiene datos de interrupcin para la rutina TRAP actual

1.51 GetTrapData - Obtiene datos de interrupcin para la rutina TRAP actual


Utilizacin
GetTrapData se utiliza en rutinas TRAP para obtener todos los datos sobre la
interrupcin que caus la ejecucin de la rutina TRAP.
Debe utilizarse en las rutinas TRAP generadas por la instruccin IError, antes
del uso de la instruccin ReadErrData.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin GetTrapData.
Consulte tambin Ms ejemplos en la pgina 121.
Ejemplo 1
VAR trapdata err_data;
GetTrapData err_data;

La informacin 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 informacin de qu hecho provoc la
ejecucin de la rutina TRAP.
Limitacin
Esta instruccin slo puede usarse desde dentro de una rutina TRAP.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin 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 nmero


y el tipo de error se almacenan en las variables adecuadas sin valor, del tipo
trapdata.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

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

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Interrupciones

Ms informacin sobre la gestin de in- Technical reference manual - RAPID overview,


terrupciones
seccin Caractersticas bsicas - Interrupciones
Datos de interrupcin para la rutina
TRAP actual

trapdata - Datos de interrupcin para la rutina


TRAP actual en la pgina 1309

Solicitud de una interrupcin para erro- IError - Solicita una interrupcin para errores en
res
la pgina 132
Obtencin de informacin sobre un error ReadErrData - Obtiene informacin sobre un error
en la pgina 370

122

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.52 GOTO - Salta a otra instruccin

1.52 GOTO - Salta a otra instruccin


Utilizacin
GOTOse utiliza para transferir la ejecucin del programa a otra lnea (una etiqueta)
creada dentro de la misma rutina.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin GOTO.
Ejemplo 1
GOTO next;
...
next:

La ejecucin del programa contina en la instruccin que sigue a la etiqueta "next".


Ejemplo 2
reg1 := 1;
next:
...
reg1 := reg1 + 1;
IF reg1<=5 GOTO next;

La ejecucin 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 ejecucin se transfiere a la etiqueta highvalue.


De lo contrario, la ejecucin se transfiere a la etiqueta lowvalue.
Argumentos
GOTO Label

Label
Identifier
La etiqueta que indica dnde debe continuar la ejecucin del programa.
Limitaciones
Slo es posible transferir la ejecucin del programa a una etiqueta que se encuentra
dentro de la misma rutina.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.52 GOTO - Salta a otra instruccin
Continuacin
Slo es posible transferir la ejecucin del programa a una etiqueta que se encuentre
dentro de una instruccin IF o TEST si la instruccin GOTO se encuentra tambin
dentro de la misma bifurcacin de la instruccin.
Slo es posible transferir la ejecucin del programa a una etiqueta que se encuentre
dentro de una instruccin FOR o WHILE si la instruccin GOTO se encuentra tambin
dentro de la instruccin.
Sintaxis
(EBNF)
GOTO <identifier>;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Adhesivo

Etiqueta - Nombre de lnea en la pgina 216

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

124

3HAC16581-5 Revisin: 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


Utilizacin
GripLoad se utiliza para definir la carga til que se sostiene con la pinza del robot.
Descripcin
GripLoad especifica qu carga lleva el robot. La carga especificada se utiliza para
configurar un modelo dinmico del robot que permita controlar de la mejor manera
posible sus movimientos.
La carga til se conecta y desconecta mediante la instruccin 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 definicin
incorrecta de los datos de carga puede dar lugar a la sobrecarga de la estructura
mecnica del robot.
Cuando se especifican datos de carga incorrectos, este hecho suele tener las
consecuencias siguientes:

El robot no funcionar a su capacidad mxima

Peor exactitud de la trayectoria, con riesgo de sobrepasar posiciones

Riesgo de sobrecarga de la estructura mecnica

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin GripLoad.
Ejemplo 1
Set gripper;
WaitTime 0.3;
GripLoad piece1;

Conexin 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;

Desconexin 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.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.53 GripLoad - Define la carga til de un robot
Continuacin
Ejecucin de programas
La carga especificada afecta al rendimiento del robot.
La carga predeterminada (load0), de 0 kg, se establece automticamente en los
casos siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio.

Se actualiza la carga til para la unidad mecnica controlada desde la tarea de


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

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Identificacin de la carga de la herramienta, Manual del operador - IRC5 con FlexPendant,


carga til o carga de brazo
seccin Programacin y testing - Rutinas de
servicio
Definicin de una carga til para unidades MechUnitLoad - Define una carga til para
mecnicas
una unidad mecnica en la pgina 232
Definicin de datos de carga

loaddata - Datos de carga en la pgina 1219

126

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.54 HollowWristReset - Restablece la mueca hueca en los modelos IRB5402 e IRB5403

1.54 HollowWristReset - Restablece la mueca hueca en los modelos IRB5402 e


IRB5403
Utilizacin
HollowWristReset (Reset hollow wris) restablece la posicin de las articulaciones
de mueca de los manipuladores de mueca hueca, como los modelos IRB5402
e IRB5403.
Esta instruccin hace posible evitar el rebobinado de los ejes 4 y 5 de la mueca
despus de que hayan descrito una o varias revoluciones en un sentido. Despus
de ejecutar una instruccin HollowWristReset, los ejes de la mueca pueden
continuar el giro en el mismo sentido.
Descripcin
HollowWristReset facilita la creacin de programas de aplicacin. No tiene que
asegurarse de que la posicin de la mueca est dentro de 2 revoluciones en el
momento de la programacin. Adems, puede ahorrar tiempo de ciclo porque el
robot no tiene que perder tiempo rebobinando la mueca. Sin embargo, existe una
limitacin de 144 revoluciones para el avance de los ejes 4 y 5 antes de que la
posicin de la mueca se restablezca con HollowWristReset. El programador
del robot debe ser consciente de esta limitacin y tenerla en cuenta al planificar
los programas del robot. Para garantizar que no se supere el lmite de 144
revoluciones despus de ejecutar varias veces un programa de giro de mueca,
debe esperar siempre a que el robot se haya detenido completamente y restablecer
la posicin absoluta en cada programa (o cada ciclo/rutina/mdulo, etc., segn
sus necesidades). Recuerde que todos los ejes deben permanecer parados durante
la ejecucin de la instruccin 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 ejecucin del programa.
Utilice HollowWristReset en lugar de IndReset para restablecer la mueca
hueca dado que esta instruccin conserva los lmites del eje 6, impidiendo as que
se produzca una torsin excesiva de los tubos o cables de las aplicaciones de
pintura.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
HollowWristReset.
Ejemplo 1
MoveL p10,v800,fine,paintgun1\WObj:=workobject1;
HollowWristReset;

Todos los ejes activos se detienen con un punto de parada y la mueca se


restablece.
Limitaciones
Todos los ejes activos deben permanecer parados mientras se ejecuta la instruccin
HollowWristReset.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.54 HollowWristReset - Restablece la mueca hueca en los modelos IRB5402 e IRB5403
Continuacin
Los ejes de la mueca deben ser restablecidos antes de que cualquiera de ellos
alcance el lmite 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 cada de alimentacin, el controlador conserva el contexto de la trayectoria
para poder volver a sta y permitir que el robot prosiga con la ejecucin 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
automtico, el robot vuelve automticamente 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 instruccin HollowWristReset. Si se ejecuta esta
instruccin manualmente (Depurar + Llamar rut. serv. en el Editor de programas),
slo 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 instruccin haya finalizado completamente la ejecucin
paso a paso sin que el manipulador haya sido sacado de su trayectoria con
movimientos manuales, etc.
Sintaxis
HollowWristReset ;

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Parmetros del sistema relaciona- Manual de referencia tcnica - Parmetros del sistema,
dos
seccin Motion - Arm - Independent Joint
Regreso a la trayectoria

Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa

128

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.55 IDelete - Cancela una interrupcin

1.55 IDelete - Cancela una interrupcin


Utilizacin
IDelete (Interrupt Delete) se utiliza para cancelar (eliminar) una interrupcin.
Si slo se desea desactivar temporalmente la interrupcin, deben utilizarse las
instrucciones ISleep o IDisable.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IDelete.
Ejemplo 1
IDelete feeder_low;

Se cancela la interrupcin feeder_low.


Argumentos
IDelete Interrupt

Interrupt
Tipo de dato: intnum
La identidad de la interrupcin.
Ejecucin de programas
La definicin de la interrupcin 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
interrupcin se desactivar antes de alcanzar el punto final de la trayectoria del
movimiento.
No es imprescindible eliminar las interrupciones, ya que esto se produce
automticamente 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 > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Interrupciones

Ms informacin sobre la gestin de inte- Technical reference manual - RAPID overview,


rrupciones
seccin Caractersticas bsicas - Interrupciones
Desactivacin temporal de una interrup- ISleep - Desactiva una interrupcin en la pgicin
na 206
Desactivacin temporal de todas las inte- IDisable - Desactiva todas las interrupciones en
rrupciones
la pgina 130

3HAC16581-5 Revisin: 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


Utilizacin
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 ejecucin normal del programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IDisable.
Ejemplo 1
IDisable;
FOR i FROM 1 TO 100 DO
character[i]:=ReadBin(sensor);
ENDFOR
IEnable;

No se permite ninguna interrupcin mientras se est leyendo el canal serie.


Ejecucin de programas
Las interrupciones que se produzcan durante el periodo en el que est vigente la
instruccin 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 automticamente
en los casos siguientes:

En los arranques en fro

Cuando se inicia la ejecucin del programa desde el principio de main

Despus de ejecutar un ciclo (ms all de main) o tras ejecutar ExitCycle

Sintaxis
IDisable;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Interrupciones

Ms informacin sobre la gestin de inte- Technical reference manual - RAPID overview,


rrupciones
seccin Caractersticas bsicas - Interrupciones
Activacin de interrupciones

IEnable - Habilita el uso de interrupciones en la


pgina 131

130

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.57 IEnable - Habilita el uso de interrupciones

1.57 IEnable - Habilita el uso de interrupciones


Utilizacin
IEnable(Interrupt Enable) se utiliza para permitir el uso de interrupciones durante
la ejecucin del programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IEnable.
Ejemplo 1
IDisable;
FOR i FROM 1 TO 100 DO
character[i]:=ReadBin(sensor);
ENDFOR
IEnable;

No se permite ninguna interrupcin mientras se est leyendo el canal serie. Cuando


se completa la lectura, las interrupciones vuelven a permitirse.
Ejecucin de programas
Las interrupciones que se produzcan durante el periodo en el que est vigente la
instruccin IDisable se almacenan en una cola. Cuando vuelven a permitirse
las interrupciones (IEnable), se empiezan a generar inmediatamente las
interrupciones, que se ejecutan en un orden FIFO. A partir de ese momento, la
ejecucin del programa contina del modo normal y las interrupciones que se
produzcan a continuacin se procesan tan pronto como se producen.
De forma predeterminada, se permite el uso de interrupciones siempre que se
empieza a ejecutar un programa. Las interrupciones desactivadas por la instruccin
ISleep no se ven afectadas por la instruccin IEnable.
Sintaxis
IEnable;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Interrupciones

Ms informacin sobre la gestin de in- Technical reference manual - RAPID overview,


terrupciones
seccin Caractersticas bsicas - Interrupciones
Desactivacin de interrupciones

IDisable - Desactiva todas las interrupciones en


la pgina 130

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.58 IError - Solicita una interrupcin para errores

1.58 IError - Solicita una interrupcin para errores


Utilizacin
IError (Interrupt Errors) se utiliza para solicitar y activar una interrupcin cuando
se produce un error.
IError permite registrar los errores, advertencias o cambios de estado.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IError.
Consulte tambin Ms ejemplos en la pgina 133.
Ejemplo 1
VAR intnum err_int;
...
PROC main()
CONNECT err_int WITH err_trap;
IError COMMON_ERR, TYPE_ALL, err_int;

Solicita una interrupcin de RAPID y la ejecucin de la rutina TRAPerr_trap cada


vez que el sistema genera un error, una advertencia o un cambio de estado.
Argumentos
IError ErrorDomain [\ErrorId] ErrorType Interrupt

ErrorDomain
Tipo de dato: errdomain
El dominio de error que debe monitorizarse. Consulte el tipo de dato predefinido
errdomain. Para especificar cualquier dominio, utilice COMMON_ERR.
[ \ErrorId ]
Tipo de dato: num
Opcionalmente, el nmero de un error concreto que se desea monitorizar. El
nmero de error debe especificarse sin el primer dgito (el que corresponde al
dominio del error) del nmero de error completo.
Por ejemplo, el error 10008 Program restarted, debe especificarse como 0008 o
simplemente 8.
ErrorType
Tipo de dato: errtype
El tipo de evento, por ejemplo un error, una advertencia o un cambio de estado,
que se desea monitorizar. Consulte el tipo de dato predefinido errtype. Para
especificar cualquier tipo, utilice TYPE_ALL.
Interrupt
Tipo de dato: intnum
La identidad de la interrupcin. La interrupcin debe estar ya conectada a una
rutina TRAP mediante la instruccin CONNECT.

Contina en la pgina siguiente


132

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.58 IError - Solicita una interrupcin para errores
Continuacin
Ejecucin de programas
La llamada a la rutina TRAP correspondiente se realiza automticamente cuando
se produce un error, en el dominio especificado, del tipo especificado y
opcionalmente con el nmero de error especificado. Una vez ejecutada la rutina,
la ejecucin del programa contina a partir del punto en el que se produjo la
interrupcin.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin IError.
VAR intnum err_interrupt;
VAR trapdata err_data;
VAR errdomain err_domain;
VAR num err_number;
VAR errtype err_type;
PROC main()
CONNECT err_interrupt WITH trap_err;
IError COMMON_ERR, TYPE_ERR, err_interrupt;
...
IDelete err_interrupt;
...
ENDPROC
TRAP trap_err
GetTrapData err_data;
ReadErrData err_data, err_domain, err_number, err_type;
! Set domain no 1 ... 11
SetGO go_err1, err_domain;
! Set error no 1 ...9999
SetGO go_err2, err_number;
ENDTRAP

Cuando se produce un error (slo en el caso de los errores, no las advertencias


ni los cambios de estado), el nmero de error se obtiene en la rutina TRAP y su
valor se utiliza para activar dos grupos de seales digitales de salida.
Limitacin
No es posible solicitar interrupciones para los errores internos.
En una tarea de tipo NORMAL, el evento es descartado al pararse el programa, de
forma que no todos los eventos pueden ser capturados en una tarea NORMAL.
Para capturar todos los eventos, la tarea debe ser de tipo esttico o semiesttico.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.58 IError - Solicita una interrupcin para errores
Continuacin
No es posible utilizar ms de una vez la identidad de la interrupcin sin eliminarla
previamente. Por tanto, las interrupciones deben tratarse de la forma mostrada,
con una de las alternativas siguientes.
VAR intnum err_interrupt;
PROC main ( )
CONNECT err_interrupt WITH err_trap;
IError COMMON_ERR, TYPE_ERR, err_interupt;
WHILE TRUE DO
:
:
ENDWHILE
ENDPROC

Las interrupciones estn activadas cuando se empieza a ejecutar el programa. En


este caso, las instrucciones se mantienen inicialmente fuera del flujo principal del
programa.
VAR intnum err_interrupt;
PROC main ( )
CONNECT err_interrupt WITH err_trap;
IError COMMON_ERR, TYPE_ERR, err_interupt;
:
:
IDelete err_interrupt;
ENDPROC

La interrupcin se elimina al final del programa y se activa de nuevo. En este caso,


es importante recordar que la interrupcin permanece inactiva durante un periodo
breve.
Sintaxis
IError
[ErrorDomain :=] <expression (IN) of errdomain>
[\ErrorId:= <expression (IN) of num>\\ ,
[ErrorType :=] <expression (IN) of errtype> ,
[Interrupt :=] <variable (VAR) of intnum>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Interrupciones

Ms informacin sobre la gestin de inte- Technical reference manual - RAPID overview,


rrupciones
seccin Caractersticas bsicas - Interrupciones
Dominios de error, constantes predefinidas errdomain - Dominio de error en la pgina 1192
Tipos de errores, constantes predefinidas errtype - Tipo de error en la pgina 1202
Obtencin de datos de interrupcin para
la rutina TRAP actual

GetTrapData - Obtiene datos de interrupcin


para la rutina TRAP actual en la pgina 121

Obtencin de informacin sobre un error ReadErrData - Obtiene informacin sobre un


error en la pgina 370

134

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.59 IF - Si se cumple una condicin, ...; de lo contrario, ...

1.59 IF - Si se cumple una condicin, ...; de lo contrario, ...


Utilizacin
IFse utiliza cuando es necesario ejecutar instrucciones diferentes en funcin de
si se cumple una condicin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IF.
Consulte tambin Ms ejemplos en la pgina 136.
Ejemplo 1
IF reg1 > 5 THEN
Set do1;
Set do2;
ENDIF

Las seales do1 and do2 slo se activan si reg1 es mayor que 5.
Ejemplo 2
IF reg1 > 5 THEN
Set do1;
Set do2;
ELSE
Reset do1;
Reset do2;
ENDIF

Las seales do1 y do2 se activan o desactivan en funcin de si reg1 es mayor


que 5 .
Argumentos
IF Condition THEN ...
{ELSEIF Condition THEN ...}
[ELSE ...]
ENDIF

Condition
Tipo de dato: bool
La condicin que debe cumplirse para que se ejecuten las instrucciones que se
encuentran entre THEN y ELSE/ELSEIF.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.59 IF - Si se cumple una condicin, ...; de lo contrario, ...
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin IF.
Ejemplo 1
IF counter > 100 THEN
counter := 100;
ELSEIF counter < 0 THEN
counter := 0;
ELSE
counter := counter + 1;
ENDIF

Se incrementa el valor de Counter en 1. Sin embargo, si el valor de counter se


encuentra fuera de los lmites 0-100, se asigna a counter el valor de lmite
correspondiente.
Ejecucin de programas
Las condiciones se comprueban una tras otra hasta que una de ellas se cumple.
La ejecucin del programa contina con las instrucciones asociadas con la
condicin. Si no se cumple ninguna de las condiciones, la ejecucin del programa
contina con las instrucciones que aparecen a continuacin de ELSE. Si se cumple
ms de una condicin, slo se ejecutan las instrucciones asociadas con la primera
de las condiciones.
Sintaxis
(EBNF)
IF <conditional expression> THEN
<instruction list>
{ELSEIF <conditional expression> THEN <instruction list> | <EIT>}
[ELSE
<instruction list>]
ENDIF

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Condiciones (expresiones lgicas)

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Expresiones

136

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.60 Incr - Aumenta en 1 un valor

1.60 Incr - Aumenta en 1 un valor


Utilizacin
Incr se utiliza para sumar 1 a una variable o una variable persistente de tipo
numrico.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin Incr.
Consulte tambin Ms ejemplos en la pgina 137.
Ejemplo 1
Incr reg1;

Se suma 1 a reg1, es decir, reg1:=reg1+1.


Argumentos
Incr Name | Dname

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.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin Incr.
Ejemplo 1
VAR num no_of_parts:=0;
...
WHILE stop_production=0 DO
produce_part;
Incr no_of_parts;
TPWrite "No of produced parts= "\Num:=no_of_parts;
ENDWHILE

Con cada ciclo, se actualiza en el FlexPendant el nmero de piezas. La produccin


sigue en marcha siempre y cuando no se active la seal de entrada
stop_production.
Ejemplo 2
VAR dnum no_of_parts:=0;
...
WHILE stop_production=0 DO
produce_part;
Incr no_of_parts;
TPWrite "No of produced parts= "\Dnum:=no_of_parts;
ENDWHILE

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.60 Incr - Aumenta en 1 un valor
Continuacin
Con cada ciclo, se actualiza en el FlexPendant el nmero de piezas. La produccin
sigue en marcha siempre y cuando no se active la seal de entrada
stop_production.
Sintaxis
Incr
[ Name := ] < var or pers (INOUT) of num >
| [ Dname := ] < var or pers (INOUT) of dnum > ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Decremento de una variable en 1

Decr - Reduce un nmero en 1 en la pgina 85

Suma de cualquier valor a una variable Add - Suma un valor numrico en la pgina 21
Cambio de un dato mediante una ex- ":=" - Asigna un valor en la pgina 26
presin arbitraria, por ejemplo una
multiplicacin

138

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.61 IndAMove - Movimiento independiente de posicin absoluta

1.61 IndAMove - Movimiento independiente de posicin absoluta


Utilizacin
IndAMove(Independent Absolute Movement) se utiliza para cambiar un eje al modo
independiente y mover el eje a una posicin determinada.
Los ejes independientes son ejes que se mueven independientemente de los
dems ejes del sistema de robot. Dado que la ejecucin del programa prosigue
inmediatamente, es posible ejecutar otras instrucciones (incluidas las instrucciones
de posicionamiento) durante el tiempo del movimiento del eje independiente.
Si el eje debe moverse dentro de una revolucin, se debe utilizar en su lugar la
instruccin IndRMove. Si el movimiento debe producirse a una corta distancia de
la posicin actual, se debe utilizar la instruccin IndDMove.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IndAMove.
Consulte tambin Ms ejemplos en la pgina 141.
Ejemplo 1
IndAMove Station_A,2\ToAbsPos:=p4,20;

El eje 2 de Station_A se mueve hasta la posicin p4 a una velocidad de 20


grados/s.
Argumentos
IndAMove MecUnit Axis [\ToAbsPos] | [\ToAbsNum] Speed [\Ramp]

MecUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica.
Axis
Tipo de dato: num
El nmero del eje actual de la unidad mecnica (del 1 al 6)
[\ToAbsPos]
To Absolute Position
Tipo de dato: robtarget
La posicin del eje se especifica como un robtarget. Slo se utiliza el componente
de este eje Axis en concreto. El valor se utiliza como un valor de posicin absoluta
en grados (mm en el caso de los ejes lineales).
La posicin del eje se ver afectada si el eje se desplaza utilizando la instruccin
EOffsSet o EOffsOn.
En el caso de los ejes del robot, se debe utilizar en su lugar el argumento
\ToAbsNum.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.61 IndAMove - Movimiento independiente de posicin absoluta
Continuacin
[\ToAbsNum]
To Absolute Numeric value
Tipo de dato: num
La posicin del eje se define en grados (mm si es un eje lineal).
Mediante este argumento, la posicin NO se ver afectada por ningn
desplazamiento, por ejemplo EOffsSet o PDispOn.
Tiene la misma funcin que \ToAbsPos, pero la posicin se define como un valor
numrico para facilitar el cambio manual de la posicin.
Speed
Tipo de dato: num
Velocidad del eje en grados/s (mm/s si es un eje lineal).
[\Ramp]
Tipo de dato: num
Reduccin de la aceleracin y deceleracin respecto del rendimiento mximo
(1 - 100%, 100% = rendimiento mximo).
Ejecucin de programas
Cuando se ejecuta IndAMove, el eje especificado se mueve a la velocidad
programada hasta la posicin de eje especificada. Si se programa \Ramp, se
producir una reduccin de la aceleracin o deceleracin.
Para devolver el eje al modo normal, se utiliza la instruccin IndReset. En conexin
con este cambio, es posible cambiar la posicin lgica del eje de forma que se
eliminen varias revoluciones completas de la posicin para evitar que se produzca
el retroceso en el giro para el movimiento siguiente.
La velocidad puede alterarse mediante la ejecucin de otra instruccin IndAMove
(u otra instruccin IndXMove). 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 ejecucin paso a paso de la instruccin, el eje se ajusta slo en el modo
independiente. El eje empieza a moverse cuando se ejecuta la instruccin siguiente
y contina siempre y cuando tenga lugar la ejecucin del programa. Para obtener
ms informacin, consulte el Manual de referencia de RAPID - Descripcin general
de RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la
ejecucin del programa - Ejes independientes.
Cuando se sita un puntero de programa al principio del programa o en una nueva
rutina, todos los ejes cambian automticamente al modo normal, sin cambiar el
sistema de medicin (lo que equivale a la ejecucin de la instruccin
IndReset\Old).
Nota
Una instruccin IndAMove a continuacin de una operacin IndCMove puede
dar lugar a que el eje deshaga el movimiento realizado en la instruccin
IndCMove. Para evitarlo, utilice una instruccin IndReset antes de la instruccin
IndAMove o bien utilice una instruccin IndRMove.
Contina en la pgina siguiente
140

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.61 IndAMove - Movimiento independiente de posicin absoluta
Continuacin
Limitaciones
Los ejes en el modo independiente no pueden tener movimientos asignados. Si
se intenta ejecutar el eje manualmente, ste no se mueve y se muestra un mensaje
de error. Ejecute una instruccin IndReset o mueva el puntero del programa a
main para poder salir del modo independiente.
Si se produce una cada de alimentacin mientras hay un eje en modo
independiente, no es posible reanudar el programa. En este caso aparece un
mensaje de error y es necesario reiniciar un programa desde el principio.
Esta instruccin no es recomendable en el caso de los ejes de mueca de robot
acoplados (consulte Manual de referencia de RAPID - Descripcin general de
RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la
ejecucin del programa - Ejes independientes).
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin IndAMove.
Ejemplo 1
ActUnit Station_A;
weld_stationA;
IndAMove Station_A,1\ToAbsNum:=90,20\Ramp:=50;
ActUnit Station_B;
weld_stationB_1;
WaitUntil IndInpos(Station_A,1 ) = TRUE;
WaitTime 0.2;
DeactUnit Station_A;
weld_stationB_2;

Se activa Station_A y se inicia la soldadura en la estacin A.


A continuacin, se mueve Station_A (el eje 1) hasta la posicin de 90 grados
mientras el robot realiza la soldadura en la estacin B. La velocidad del eje es de
20 grados/s. La velocidad cambia con la aceleracin/deceleracin reducida al 50%
del rendimiento mximo.
Cuando la estacin A alcanza esta posicin, es desactivada y es posible realizar
la recarga en la estacin al mismo tiempo que el robot contina soldando en la
estacin B.
Gestin de errores
Si el eje no est activado, la variable de sistema ERRNO cambia a ERR_AXIS_ACT.
A continuacin, este error puede ser gestionado en el gestor de errores.
Sintaxis
IndAMove
[ MecUnit:= ] < variable (VAR) of mecunit> ,
[ Axis:= ] < expression (IN) of num>
[ \ToAbsPos:= < expression (IN) of robtarget> ]
| [ \ ToAbsNum:= < expression (IN) of num> ] ,
[ Speed := ] < expression (IN) of num>
[ \ Ramp:= < expression (IN) of num > ] ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.61 IndAMove - Movimiento independiente de posicin absoluta
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Ejes independientes en general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S


- Posicionamiento durante la ejecucin del
programa - Ejes independientes

Cambio de nuevo al modo manual

IndReset - Restablecimiento independiente


en la pgina 151

Restablecimiento del sistema de medicin

IndReset - Restablecimiento independiente


en la pgina 151

Otros movimientos de ejes independientes IndRMove - Movimiento independiente de


posicin relativa en la pgina 156
IndDMove - Movimiento independiente de
posicin delta en la pgina 147
IndCMove - Movimiento independiente continuo en la pgina 143
Comprobacin del estado de velocidad de
los ejes independientes

IndInpos - Estado de velocidad de un eje independiente en la pgina 939

Comprobacin del estado de posicin de los IndInpos - Estado de posicin de un eje indeejes independientes
pendiente en la pgina 937
Definicin de ejes independientes

Manual de referencia tcnica - Parmetros


del sistema, seccin Motion - Arm - Independent Joint

142

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.62 IndCMove - Movimiento independiente continuo

1.62 IndCMove - Movimiento independiente continuo


Utilizacin
IndCMove (Independent Continuous Movement) se utiliza para cambiar un eje al
modo independiente y empezar a moverlo continuamente a una velocidad
determinada.
Los ejes independientes son ejes que se mueven independientemente de los
dems ejes del sistema de robot. Dado que la ejecucin del programa prosigue
inmediatamente, es posible ejecutar otras instrucciones (incluidas las instrucciones
de posicionamiento) durante el tiempo del movimiento del eje independiente.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IndCMove.
Consulte tambin Ms ejemplos en la pgina 145.
Ejemplo 1
IndCMove Station_A,2,-30.5;

El eje 2 de Station_A empieza a moverse en el sentido negativo a una velocidad


de 30,5 grados/s.
Argumentos
IndCMove MecUnit Axis Speed [\Ramp]

MecUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica.
Axis
Tipo de dato: num
El nmero del eje actual de la unidad mecnica (del 1 al 6).
Speed
Tipo de dato: num
Velocidad del eje en grados/s (mm/s si es un eje lineal).
El sentido del movimiento se especifica con el signo del argumento de velocidad.
[\Ramp]
Tipo de dato: num
Reduccin de la aceleracin y deceleracin respecto del rendimiento mximo
(1 - 100%, 100% = rendimiento mximo).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.62 IndCMove - Movimiento independiente continuo
Continuacin
Ejecucin de programas
Cuando se ejecuta IndCMove, el eje especificado empieza a moverse a la velocidad
programada. El sentido del movimiento se especifica con el signo del argumento
de velocidad. Si se programa \Ramp, se producir una reduccin de la aceleracin
o deceleracin.
Para devolver el eje al modo normal, se utiliza la instruccin IndReset. La posicin
lgica del eje puede cambiarse en conexin con este cambio. Por ejemplo, es
posible eliminar un nmero de revoluciones completas para evitar que se produzca
el retroceso en el giro para el movimiento siguiente.
Es posible cambiar la velocidad ejecutando una instruccin IndCMove posterior.
Si se solicita una velocidad en el sentido opuesto, el eje se detiene y acelera hasta
la nueva velocidad y en el nuevo sentido. Para detener el eje, puede usarse el
argumento de velocidad 0. En este caso, sigue teniendo el modo independiente.
Durante la ejecucin paso a paso de la instruccin, el eje se ajusta slo en el modo
independiente. El eje empieza a moverse cuando se ejecuta la instruccin siguiente
y contina siempre y cuando contine tambin la ejecucin del programa. Para
obtener ms informacin, consulte el Manual de referencia de RAPID - Descripcin
general de RAPID, seccin Principios de movimiento y E/S - Posicionamiento
durante la ejecucin del programa - Ejes independientes.
Cuando se sita un puntero de programa al principio del programa o en una nueva
rutina, todos los ejes cambian automticamente al modo normal, sin cambiar el
sistema de medicin (lo que equivale a la ejecucin de la instruccin
IndReset\Old).
Limitaciones
La resolucin de la posicin del eje empeora a medida que se mueve hasta su
posicin cero lgica (normalmente el centro del rea de trabajo). Para volver a
disponer de una resolucin elevada, es posible cambiar a cero el rea de trabajo
lgica con la instruccin IndReset. Para obtener ms informacin, consulte el
Manual de referencia de RAPID - Descripcin general de RAPID, seccin Principios
de movimiento y E/S - Posicionamiento durante la ejecucin del programa - Ejes
independientes.
Los ejes en el modo independiente no pueden tener movimientos asignados. Si
se intenta ejecutar el eje manualmente, ste no se mueve y se muestra un mensaje
de error. Ejecute una instruccin IndReset o mueva el puntero del programa a
main para poder salir del modo independiente.
Si se produce una cada de alimentacin cuando el eje se encuentra en el modo
independiente, no es posible reanudar el programa. En este caso aparece un
mensaje de error y es necesario reiniciar un programa desde el principio.
Esta instruccin no es recomendable en el caso de los ejes de mueca de robot
acoplados (consulte Manual de referencia de RAPID - Descripcin general de
RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la
ejecucin del programa - Ejes independientes).

Contina en la pgina siguiente


144

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.62 IndCMove - Movimiento independiente continuo
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin IndCMove.
IndCMove Station_A,2,20;
WaitUntil IndSpeed(Station_A,2 \InSpeed) = TRUE;
WaitTime 0.2;
MoveL p10, v1000, fine, tool1;
IndCMove Station_A,2,-10\Ramp:=50;
MoveL p20, v1000, z50, tool1;
IndRMove Station_A,2 \ToRelPos:=p1 \Short,10;
MoveL p30, v1000, fine, tool1;
WaitUntil IndInpos(Station_A,2 ) = TRUE;
WaitTime 0.2;
IndReset Station_A,2 \RefPos:=p40\Short;
MoveL p40, v1000, fine, tool1;

El eje 2 de Station_A empieza a moverse en el sentido positivo a una velocidad


de 20 grados/s. Cuando el eje ha alcanzado la velocidad seleccionada, los ejes
del robot empiezan a moverse.
Cuando el robot alcanza la posicin p10, el eje externo cambia de sentido y gira
a una velocidad de 10 grados/s. El cambio de velocidad se realiza con una
aceleracin/deceleracin reducida al 50% del rendimiento mximo. Al mismo
tiempo, el robot ejecuta el movimiento hacia p20.
A continuacin, el eje 2 de Station_A se detiene lo ms rpidamente posible en
la posicin p1 dentro de la revolucin actual.
Una vez que el eje 2 ha alcanzado esta posicin y el robot se ha detenido en la
posicin p30, el eje 2 vuelve de nuevo al modo normal. El offset del sistema de
medicin para este eje se cambia a un nmero entero de revoluciones de eje, de
forma que la posicin actual est lo ms cerca posible de p40.
A continuacin, cuando el robot se mueve hasta la posicin p40, el eje 2 de
Station_A es movido por la instruccin MoveL p40 por la va ms corta hasta
la posicin p40 (mx. 180 grados).
Gestin de errores
Si el eje no est activado, la variable de sistema ERRNO cambia a ERR_AXIS_ACT.
A continuacin, este error puede ser gestionado en el gestor de errores.
Sintaxis
IndCMove
[ MecUnit:= ] < variable (VAR) of mecunit> ,
[ Axis:= ] < expression (IN) of num> ,
[ Speed := ] < expression (IN) of num>
[ \ Ramp:= < expression (IN) of num > ] ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.62 IndCMove - Movimiento independiente continuo
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Ejes independientes en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa Ejes independientes

Cambio de nuevo al modo manual

IndReset - Restablecimiento independiente en la


pgina 151

Restablecimiento del sistema de medi- IndReset - Restablecimiento independiente en la


cin
pgina 151
Otros movimientos de ejes independien- IndAMove - Movimiento independiente de posites
cin absoluta en la pgina 139
IndRMove - Movimiento independiente de posicin relativa en la pgina 156
IndDMove - Movimiento independiente de posicin delta en la pgina 147
Comprobacin del estado de velocidad IndInpos - Estado de velocidad de un eje independe los ejes independientes
diente en la pgina 939
Comprobacin del estado de posicin
de los ejes independientes

IndInpos - Estado de posicin de un eje independiente en la pgina 937

Definicin de ejes independientes

Manual de referencia tcnica - Parmetros del


sistema, seccin Motion - Arm - IndependentJoint

146

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.63 IndDMove - Movimiento independiente de posicin delta

1.63 IndDMove - Movimiento independiente de posicin delta


Utilizacin
IndDMove(Independent Delta Movement se utiliza para cambiar un eje al modo
independiente y mover el eje a una distancia determinada.
Los ejes independientes son ejes que se mueven independientemente de los
dems ejes del sistema de robot. Dado que la ejecucin del programa prosigue
inmediatamente, es posible ejecutar otras instrucciones (incluidas las instrucciones
de posicionamiento) durante el tiempo del movimiento del eje independiente.
Si se desea mover el eje hasta una posicin determinada, debe utilizar en su lugar
una instruccin IndAMove o IndRMove.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IndDMove.
Consulte tambin Ms ejemplos en la pgina 149.
Ejemplo 1
IndDMove Station_A,2,-30,20;

Se mueve el eje 2 de Station_A30 grados en el sentido negativo a una velocidad


de 20 grados/s.
Argumentos
IndDMove MecUnit Axis Delta Speed [\Ramp]

MecUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica.
Axis
Tipo de dato: num
El nmero del eje actual de la unidad mecnica (del 1 al 6).
Delta
Tipo de dato: num
La distancia que se desea mover el eje actual, expresada en grados (mm en el
caso de los ejes lineales). El signo especifica el sentido del movimiento.
Speed
Tipo de dato: num
Velocidad del eje en grados/s (mm/s si es un eje lineal).
[ \Ramp ]
Tipo de dato: num

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.63 IndDMove - Movimiento independiente de posicin delta
Continuacin
Reduccin de la aceleracin y deceleracin respecto del rendimiento mximo
(1 - 100%, 100% = rendimiento mximo).
Ejecucin de programas
Cuando se ejecuta IndDMove, el eje especificado se mueve a la velocidad
programada hasta la distancia especificada. El sentido del movimiento se especifica
con el signo del argumento Delta. Si se programa \Ramp, se producir una
reduccin de la aceleracin o deceleracin.
Si el eje se est moviendo, la nueva posicin se calcula a partir de la posicin
momentnea que tiene el eje en el momento de ejecutar la instruccin IndDMove.
Si se ejecuta una instruccin IndDMove con una distancia 0 y el eje ya est
cambiando de posicin, el eje se detiene y retrocede hasta la posicin ocupada
por el eje en el momento de la ejecucin de la instruccin.
Para devolver el eje al modo normal, se utiliza la instruccin IndReset. La posicin
lgica del eje puede cambiarse en conexin con este cambio. Por ejemplo, es
posible eliminar un nmero de revoluciones completas de la posicin para evitar
que se produzca el retroceso en el giro para el movimiento siguiente.
La velocidad puede cambiarse ejecutando una instruccin IndDMove adicional (u
otra instruccin IndXMove). 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 ejecucin paso a paso de la instruccin, el eje se ajusta slo en el modo
independiente. El eje empieza a moverse cuando se ejecuta la instruccin siguiente
y contina siempre y cuando contine tambin la ejecucin del programa. Para
obtener ms informacin, consulte el Manual de referencia de RAPID - Descripcin
general de RAPID, seccin Principios de movimiento y E/S - Posicionamiento
durante la ejecucin del programa - Ejes independientes.
Cuando se sita un puntero de programa al principio del programa o en una nueva
rutina, todos los ejes cambian automticamente al modo normal, sin cambiar el
sistema de medicin (lo que equivale a la ejecucin de la instruccin IndReset
\Old).
Limitaciones
Los ejes en el modo independiente no pueden tener movimientos asignados. Si
se intenta ejecutar el eje manualmente, ste no se mueve y se muestra un mensaje
de error. Ejecute una instruccin IndReset o mueva el puntero del programa a
main para poder salir del modo independiente.
Si se produce un fallo de cada de alimentacin cuando el eje se encuentra en el
modo independiente, no es posible reanudar el programa. En este caso aparece
un mensaje de error y es necesario reiniciar un programa desde el principio.
Esta instruccin no es recomendable en el caso de los ejes de mueca de robot
acoplados (consulte Manual de referencia de RAPID - Descripcin general de
RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la
ejecucin del programa - Ejes independientes).

Contina en la pgina siguiente


148

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.63 IndDMove - Movimiento independiente de posicin delta
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin IndDMove.
Ejemplo 1
IndAMove ROB_1,6\ToAbsNum:=90,20;
WaitUntil IndInpos(ROB_1,6) = TRUE;
WaitTime 0.2;
IndDMove Station_A,2,-30,20;
WaitUntil IndInpos(ROB_1,6) = TRUE;
WaitTime 0.2;
IndDMove ROB_1,6,400,20;

Se mueve el eje 6 del robot hasta las posiciones siguientes:

90 grados

60 grados

460 grados (1 revolucin + 100 grados)

Gestin de errores
Si el eje no est activado, la variable de sistema ERRNO cambia a ERR_AXIS_ACT.
A continuacin, este error puede ser gestionado en el gestor de errores.
Sintaxis
IndDMove
[ MecUnit:= ] < variable (VAR) of mecunit> ,
[ Axis:= ] < expression (IN) of num> ,
[ Delta:= ] < expression (IN) of num>,
[ Speed := ] < expression (IN) of num>
[ \ Ramp:= < expression (IN) of num > ] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Ejes independientes en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa - Ejes
independientes

Cambio de nuevo al modo manual

IndReset - Restablecimiento independiente en la


pgina 151

Restablecimiento del sistema de medi- IndReset - Restablecimiento independiente en la


cin
pgina 151
Otros movimientos de ejes independien- IndAMove - Movimiento independiente de posicin
tes
absoluta en la pgina 139
IndRMove - Movimiento independiente de posicin
relativa en la pgina 156
IndCMove - Movimiento independiente continuo
en la pgina 143
Comprobacin del estado de velocidad IndInpos - Estado de velocidad de un eje independe los ejes independientes
diente en la pgina 939
Comprobacin del estado de posicin
de los ejes independientes

IndInpos - Estado de posicin de un eje independiente en la pgina 937

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.63 IndDMove - Movimiento independiente de posicin delta
Continuacin
Para obtener ms informacin sobre

Consulte

Definicin de ejes independientes

Manual de referencia tcnica - Parmetros del


sistema, seccin Motion - Arm - IndependentJoint

150

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.64 IndReset - Restablecimiento independiente

1.64 IndReset - Restablecimiento independiente


Utilizacin
IndReset (Independent Reset) se utiliza para devolver un eje independiente al
modo normal. Al mismo tiempo, el sistema de medicin de los ejes de rotacin
puede moverse un nmero de revoluciones de eje.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IndReset.
Consulte tambin Ms ejemplos en la pgina 154.
IndCMove Station_A,2,5;
MoveL *,v1000,fine,tool1;
IndCMove Station_A,2,0;
WaitUntil IndSpeed(Station_A,2\ZeroSpeed);
WaitTime 0.2
IndReset Station_A,2;

Se mueve en primer lugar el eje 2 de Station_A en el modo independiente,


devolvindolo a continuacin al modo normal. El eje se mantendr en su posicin.
Nota
Ni el eje independiente actual ni los ejes normales deben moverse cuando se
ejecuta la instruccin IndReset. Por eso la posicin anterior es un punto de
paro y la instruccin IndCMove se ejecuta con la velocidad cero. Adems, se
utiliza una pausa de 0,2 segundos para garantizar que se ha conseguido el
estado correcto.
Argumentos
IndReset MecUnit Axis [\RefPos] | [\RefNum] [\Short] | [\Fwd]
|[\Bwd] | \Old]

MecUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica.
Axis
Tipo de dato: num
El nmero del eje actual de la unidad mecnica (del 1 al 6).
[ \RefPos ]
Reference Position
Tipo de dato: robtarget

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.64 IndReset - Restablecimiento independiente
Continuacin
La posicin del eje de referencia se especifica como un robtarget. Slo se utiliza
el componente de este eje Axis en concreto. La posicin debe estar dentro del
rea de trabajo normal.
En el caso de los ejes del robot, se debe utilizar en su lugar el argumento \RefNum.
Este argumento slo debe ser definido junto con el argumento \Short, \Fwd o
\Bwd. No se permite junto con el argumento \Old.
[ \RefNum ]
Reference Numeric value
Tipo de dato: num
La posicin del eje de referencia se define en grados (mm si es un eje lineal). La
posicin debe estar dentro del rea de trabajo normal.
Este argumento slo debe ser definido junto con el argumento \Short, \Fwd o
\Bwd. No se permite junto con el argumento \Old.
Tiene la misma funcin que \RefPos, pero la posicin se define como un valor
numrico para facilitar el cambio manual de la posicin.
[ \Short ]
Tipo de dato: switch
El sistema de medicin cambiar un nmero entero de revoluciones en el lado del
eje, de forma que el eje quede lo ms cerca posible de la posicin especificada
con \RefPos o \RefNum. Si se ejecuta una instruccin de posicionamiento con
la misma posicin despus de IndReset, el eje se desplaza por la ruta ms corta,
inferior a 180 grados, para alcanzar la posicin.
[ \Fwd ]
Forward
Tipo de dato: switch
El sistema de medicin cambiar un nmero entero de revoluciones en el lado del
eje, de forma que la posicin de referencia quede en el lado positivo de la posicin
especificada con \RefPos o \RefNum. Si se ejecuta una instruccin de
posicionamiento con la misma posicin despus de IndReset, el eje gira en
sentido positivo menos de 360 grados para alcanzar la posicin.
[ \Bwd ]
Backward
Tipo de dato: switch
El sistema de medicin cambiar un nmero entero de revoluciones en el lado del
eje, de forma que la posicin de referencia quede en el lado negativo de la posicin
especificada con \RefPos o \RefNum. Si se ejecuta una instruccin de
posicionamiento con la misma posicin despus de IndReset, el eje gira en
sentido negativo menos de 360 grados para alcanzar la posicin.
[ \Old ]
Tipo de dato: switch
Mantiene la posicin anterior.
Contina en la pgina siguiente
152

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.64 IndReset - Restablecimiento independiente
Continuacin

Nota
La resolucin se reduce en las posiciones ms alejadas de la posicin cero.
Si no se especifica ningn argumento \Short, \Fwd, \Bwd u \Old, se utiliza
\Old como valor predeterminado.
Ejecucin de programas
Si se ejecuta IndReset, el eje independiente vuelve al modo normal. Al mismo
tiempo, el sistema de medicin del eje puede moverse un nmero entero de
revoluciones de eje.
Esta instruccin tambin puede utilizarse en el modo normal con el fin de cambiar
de sistema de medicin.
Nota
La posicin slo se utiliza para ajustar el sistema de medicin. El eje en s no
se mueve hasta la posicin.
Limitaciones
Esta instruccin slo puede ejecutarse cuando todos los ejes activos que se
encuentren en el modo normal estn parados. Todos los ejes activos de todas las
unidades mecnicas conectadas al mismo planificador de movimientos deben
permanecer parados. El eje independiente que se desea cambiar al modo normal
tambin debe estar en reposo. En el caso de los ejes que se encuentran en el
modo normal, esto se consigue ejecutando una instruccin de movimiento con el
argumento fine. El eje independiente se detiene con una instruccin IndCMove
con Speed:=0 (seguida de un periodo de espera de 0,2 segundos), IndRMove,
IndAMove o IndDMove.
La resolucin de las posiciones se reduce al alejarse de la posicin lgica 0. Por
tanto, un eje que gira progresivamente ms y ms desde la posicin 0 debe ser
puesto a cero con la instruccin IndReset, utilizando un argumento distinto de
\Old.
No es posible cambiar el sistema de medicin de los ejes lineales.
Para garantizar una puesta en marcha adecuada tras ejecutar IndReset con un
eje y utilizando un sistema de medicin relativo (modificadores de sincronizacin),
es necesario aadir un retardo adicional de 0,12 segundos tras la instruccin
IndReset.
El nico eje del robot que puede usarse como eje independiente es el eje 6. La
instruccin IndReset tambin puede usarse con el eje 4 en los modelos IRB2400
e IRB 4400. Si se utiliza IndReset en el eje 4 del robot, el eje 6 no debe estar en
el modo independiente.
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.64 IndReset - Restablecimiento independiente
Continuacin
IndReset no puede ejecutarse en rutinas de RAPID que estn conectadas a los
siguientes eventos especiales del sistema: PowerOn, Stop, QStop, Restart o Step.
IndReset slo conmuta el estado independiente de un solo eje. No puede usarse
para detener un movimiento independiente. Para detener un movimiento
independiente, debe alcanzar una condicin de paro o el usuario debe, por ejemplo,
mover el PP a main.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin IndReset.
Ejemplo 1
IndAMove Station_A,1\ToAbsNum:=750,50;
WaitUntil IndInpos(Station_A,1);
WaitTime 0.2;
IndReset Station_A,1 \RefNum:=0 \Short;
IndAMove Station_A,1\ToAbsNum:=750,50;
WaitUntil IndInpos(Station_A,1);
WaitTime 0.2;
IndReset Station_A,1 \RefNum:=300 \Short;

Se mueve en primer lugar el eje 1 de Station_A de forma independiente hasta


la posicin de 750 grados (2 revoluciones ms 30 grados). En el mismo momento
en que cambia al modo normal, se cambia la posicin lgica a 30 grados.
A continuacin, se mueve el eje 1 de Station_A de forma independiente hasta
la posicin de 750 grados (2 revoluciones ms 30 grados). En el mismo momento
en que cambia al modo normal, se cambia la posicin lgica a 390 grados (1
revolucin ms 30 grados).
Gestin de errores
Si el eje est en movimiento, la variable de sistema ERRNO cambia a
ERR_AXIS_MOVING.
Si el eje no est activado, la variable de sistema ERRNO cambia a ERR_AXIS_ACT.
A continuacin, este error puede ser gestionado en el gestor de errores.
Sintaxis
IndReset
[ MecUnit:= ] < variable (VAR) of mecunit> ,
[ Axis:= ] < expression (IN) of num>
[ \ RefPos:= < expression (IN) of robtarget> ] |
[ \ RefNum:= < expression (IN) of num> ]
[ \ Short ] | [ \ Fwd ] | [ \ Bwd ] | [ \ Old ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Ejes independientes en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa - Ejes
independientes

Contina en la pgina siguiente


154

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.64 IndReset - Restablecimiento independiente
Continuacin
Para obtener ms informacin sobre

Consulte

Cambio de un eje al modo independien- IndAMove - Movimiento independiente de posicin


te
absoluta en la pgina 139
IndCMove - Movimiento independiente continuo
en la pgina 143
IndDMove - Movimiento independiente de posicin
delta en la pgina 147
IndRMove - Movimiento independiente de posicin
relativa en la pgina 156
Comprobacin del estado de velocidad IndInpos - Estado de velocidad de un eje independe los ejes independientes
diente en la pgina 939
Comprobacin del estado de posicin
de los ejes independientes

IndInpos - Estado de posicin de un eje independiente en la pgina 937

Definicin de ejes independientes

Manual de referencia tcnica - Parmetros del


sistema, seccin Motion - Arm - Independent Joint

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.65 IndRMove - Movimiento independiente de posicin relativa

1.65 IndRMove - Movimiento independiente de posicin relativa


Utilizacin
IndRMove (Independent Relative Movement) se utiliza para cambiar un eje de
rotacin al modo independiente y mover el eje a una posicin determinada dentro
de una revolucin.
Los ejes independientes son ejes que se mueven independientemente de los
dems ejes del sistema de robot. Dado que la ejecucin del programa prosigue
inmediatamente, es posible ejecutar otras instrucciones (incluidas las instrucciones
de posicionamiento) durante el tiempo del movimiento del eje independiente.
Si se desea mover el eje hasta una posicin absoluta (varias revoluciones) o se
trata de un eje lineal, se debe utilizar en su lugar la instruccin IndAMove. Si el
movimiento debe producirse a una distancia determinada de la posicin actual,
se debe utilizar la instruccin IndDMove.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IndRMove.
Consulte tambin Ms ejemplos en la pgina 158.
Ejemplo 1
IndRMove Station_A,2\ToRelPos:=p5 \Short,20;

Se mueve el eje 2 de Station_A por la ruta ms corta hasta la posicin p5 dentro


de una revolucin (rotacin mxima 180 grados) a una velocidad de 20 grados/s.
Argumentos
IndRMove MecUnit Axis [\ToRelPos] | [\ToRelNum] [\Short] | [\Fwd]
| [\Bwd] Speed [\Ramp]

MecUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica.
Axis
Tipo de dato: num
El nmero del eje actual de la unidad mecnica (del 1 al 6).
[ \ToRelPos ]
To Relative Position
Tipo de dato: robtarget
La posicin del eje se especifica como un robtarget. Slo se utiliza el componente
de este eje Axis en concreto. El valor se utiliza como un valor de posicin en
grados dentro de una revolucin de eje. Esto significa que el eje se mueve menos
de una revolucin.
Contina en la pgina siguiente
156

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.65 IndRMove - Movimiento independiente de posicin relativa
Continuacin
La posicin del eje se ver afectada si el eje se desplaza utilizando la instruccin
EOffsSet o EOffsOn.
En el caso de los ejes del robot, se debe utilizar en su lugar el argumento
\ToRelNum.
[ \ToRelNum ]
To Relative Numeric value
Tipo de dato: num
La posicin del eje, definida en grados.
Mediante este argumento, la posicin NO se ver afectada por ningn
desplazamiento, por ejemplo EOffsSet o PDispOn.
Tiene la misma funcin que \ToRelPos, pero la posicin se define como un valor
numrico para facilitar el cambio manual de la posicin.
[ \Short ]
Tipo de dato: switch
El eje se mueve por la ruta ms corta hasta la nueva posicin. Esto significa que
la rotacin mxima ser de 180 grados en cualquier sentido. Por tanto, el sentido
del movimiento depende de la ubicacin actual del eje.
[ \Fwd ]
Forward
Tipo de dato: switch
El eje se mueve en sentido positivo hasta la nueva posicin. Esto significa que la
rotacin mxima ser de 360 grados y siempre en sentido positivo (con aumento
del valor de posicin).
[ \Bwd ]
Backward
Tipo de dato: switch
El eje se mueve en sentido negativo hasta la nueva posicin. Esto significa que
la rotacin mxima ser de 360 grados y siempre en sentido negativo (con
reduccin del valor de posicin).
Si se omite el argumento \Short, \Fwd o \Bwd, se utiliza \Short como valor
predeterminado.
Speed
Tipo de dato: num
La velocidad del eje en grados/s.
[ \Ramp ]
Tipo de dato: num
Reduccin de la aceleracin y deceleracin respecto del rendimiento mximo
(1 - 100%, 100% = rendimiento mximo).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.65 IndRMove - Movimiento independiente de posicin relativa
Continuacin
Ejecucin de programas
Cuando se ejecuta IndRMove, el eje especificado se mueve a la velocidad
programada hasta la posicin de eje especificada, pero slo una revolucin como
mximo. Si se programa \Ramp, se producir una reduccin de la aceleracin o
deceleracin.
Para devolver el eje al modo normal, se utiliza la instruccin IndReset. La posicin
lgica del eje puede cambiarse en conexin con este cambio. Por ejemplo, es
posible eliminar un nmero de revoluciones completas de la posicin para evitar
que se produzca el retroceso en el giro para el movimiento siguiente.
La velocidad puede cambiarse ejecutando una instruccin IndRMove adicional (u
otra instruccin IndXMove). 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 ejecucin paso a paso de la instruccin, el eje se ajusta slo en el modo
independiente. El eje empieza a moverse cuando se ejecuta la instruccin siguiente
y contina siempre y cuando contine tambin la ejecucin del programa. Para
obtener ms informacin, consulte el Manual de referencia de RAPID - Descripcin
general de RAPID, seccin Principios de movimiento y E/S - Posicionamiento
durante la ejecucin del programa - Ejes independientes.
Cuando se sita un puntero de programa al principio del programa o en una nueva
rutina, todos los ejes cambian automticamente al modo normal, sin cambiar el
sistema de medicin (lo que equivale a la ejecucin de la instruccin IndReset
\Old).
Limitaciones
Los ejes en el modo independiente no pueden tener movimientos asignados. Si
se intenta ejecutar el eje manualmente, ste no se mueve y se muestra un mensaje
de error. Ejecute una instruccin IndReset o mueva el puntero del programa a
main para poder salir del modo independiente.
Si se produce una cada de alimentacin cuando el eje se encuentra en el modo
independiente, no es posible reanudar el programa. En este caso aparece un
mensaje de error y es necesario reiniciar un programa desde el principio.
Esta instruccin no es recomendable en el caso de los ejes de mueca de robot
acoplados (consulte el Manual de referencia de RAPID - Descripcin general de
RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la
ejecucin del programa - Ejes independientes).
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin IndRMove.
Ejemplo 1
IndRMove Station_A,1\ToRelPos:=p5 \Fwd,20\Ramp:=50;

El eje 1 de Station_A empieza a moverse en sentido positivo hacia la posicin


p5 dentro de una revolucin (rotacin mxima 360 grados) a una velocidad de 20

Contina en la pgina siguiente


158

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.65 IndRMove - Movimiento independiente de posicin relativa
Continuacin
grados/s. La velocidad cambia con la aceleracin/deceleracin reducida al 50%
del rendimiento mximo.
IndAMove Station_A,1\ToAbsNum:=90,20;
WaitUntil IndInpos(Station_A,1 ) = TRUE;
IndRMove Station_A,1\ToRelNum:=80 \Fwd,20;
WaitTime 0.2;
WaitUntil IndInpos(Station_A,1 ) = TRUE;
WaitTime 0.2;
IndRMove Station_A,1\ToRelNum:=50 \Bwd,20;
WaitUntil IndInpos(Station_A,1 ) = TRUE;
WaitTime 0.2;
IndRMove Station_A,1\ToRelNum:=150 \Short,20;
WaitUntil IndInpos(Station_A,1 ) = TRUE;
WaitTime 0.2;
IndAMove Station_A,1\ToAbsNum:=10,20;

Se mueve el eje 1 de Station_A hasta las posiciones siguientes:

90 grados

440 grados (1 revolucin + 80 grados)

410 grados (1 revolucin + 50 grados)

510 grados (1 revolucin + 150 grados)

10 grados

Gestin de errores
Si el eje no est activado, la variable de sistema ERRNO cambia a ERR_AXIS_ACT.
A continuacin, este error puede ser gestionado en el gestor de errores.
Sintaxis
IndRMove
[ MecUnit:= ] < variable (VAR) of mecunit> ,
[ Axis:= ] < expression (IN) of num>
[ \ToRelPos:= < expression (IN) of robtargets> ]
| [ \ToRelNum:= < expression (IN) of num> ]
[ \Short ] | [ \ Fwd ] | [ \ Bwd ] ,
[ Speed := ] < expression (IN) of num>
[ \Ramp:= < expression (IN) of num > ] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Ejes independientes en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa
- Ejes independientes

Cambio de nuevo al modo manual

IndReset - Restablecimiento independiente en


la pgina 151

Restablecimiento del sistema de medicin IndReset - Restablecimiento independiente en


la pgina 151

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.65 IndRMove - Movimiento independiente de posicin relativa
Continuacin
Para obtener ms informacin sobre

Consulte

Otros movimientos de ejes independientes IndAMove - Movimiento independiente de posicin absoluta en la pgina 139
IndDMove - Movimiento independiente de posicin delta en la pgina 147
IndCMove - Movimiento independiente continuo
en la pgina 143
Comprobacin del estado de velocidad
de los ejes independientes

IndInpos - Estado de velocidad de un eje independiente en la pgina 939

Comprobacin del estado de posicin de IndInpos - Estado de posicin de un eje indepenlos ejes independientes
diente en la pgina 937
Definicin de ejes independientes

Manual de referencia tcnica - Parmetros del


sistema, seccin Motion - Arm - Independent
Joint

160

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.66 InvertDO - Invierte el valor de una seal de salida digital

1.66 InvertDO - Invierte el valor de una seal de salida digital


Utilizacin
InvertDO (Invert Digital Output) invierte el valor de una seal digital de salida (0
-> 1 y 1 -> 0).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin InvertDO.
Ejemplo 1
InvertDO do15;

Se invierte el valor actual de la seal do15.


Argumentos
InvertDO Signal

Signal
Tipo de dato: signaldo
El nombre de la seal a invertir.
Ejecucin de programas
Se invierte el valor actual de la seal (consulte la figura siguiente).
En la figura siguiente se muestra la inversin de una seal digital de salida.

1
Nivel de la seal
0
Ejecucin de la instruccin InvertDO
Ejecucin de la instruccin InvertDO
1
Nivel de la seal
0
xx0500002164_es

Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. Si se ha perdido el contacto con la unidad de
E/S, la variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
Sintaxis
InvertDO
[ Signal := ] < variable (VAR) of signaldo > ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.66 InvertDO - Invierte el valor de una seal de salida digital
Continuacin
Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Instrucciones de entrada/salida

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Seales de entrada y
salida

Funcionalidad de entrada/salida en Technical reference manual - RAPID overview, secgeneral


cin Principios de movimiento y E/S - Principios de
E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

162

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.67 IOBusStart - Start of I/O bus

1.67 IOBusStart - Start of I/O bus


Utilizacin
IOBusStart se utiliza para poner en marcha un determinado bus de E/S.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin IOBusStart.
Ejemplo 1
IOBusStart "IBS";

La instruccin pone en marcha el bus con el nombre IBS.


Argumentos
IOBusStart BusName

BusName
Tipo de dato: string
El nombre del bus que se desea poner en marcha.
Ejecucin de programas
Se pone en marcha el bus cuyo nombre se especifica en el parmetro BusName.
Gestin de errores
La variable de sistema ERRNO cambia a ERR_NAME_INVALID si el nombre de bus
no existe. Ese error puede ser gestionado en un gestor de ERROR.
Sintaxis
IOBusStart
[ BusName := ] < expression (IN) of string>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Cmo obtener el estado del bus de E/S

IOBusState - Obtener el estado actual de un


bus de E/S en la pgina 164

Configuracin de E/S

Manual de referencia tcnica - Parmetros del


sistema

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.68 IOBusState - Obtener el estado actual de un bus de E/S

1.68 IOBusState - Obtener el estado actual de un bus de E/S


Utilizacin
IOBusState se usa para leer el estado de un bus de E/S determinado. Su estado
fsico y su estado lgico definen el estado de un bus de E/S.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IOBusState.
Ejemplo 1
VAR busstate bstate;
IOBusState "IBS", bstate \Phys;
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 instruccin devuelve el estado fsico del bus de IBS en la variable bstate
del tipo busstate.
Ejemplo 2
VAR busstate bstate;
IOBusState "IBS", bstate \Logic;
TEST bstate
CASE IOBUS_LOG_STATE_STARTED:
! The IBS bus is started
DEFAULT:
! Actions for stopped IBS bus
ENDTEST

Esta instruccin devuelve el estado lgico 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.
State
Tipo de dato: busstate
La variable en la que se devuelve el estado del bus. Consulte los datos predefinidos
del tipo busstate que aparecen ms abajo, en Ejecucin de programas.
[\Phys]
Physical
Contina en la pgina siguiente
164

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.68 IOBusState - Obtener el estado actual de un bus de E/S
Continuacin
Tipo de dato: switch
Si se utiliza este parmetro, se lee el estado fsico del bus .
[\Logic]
Logical
Tipo de dato: switch
Si se utiliza este parmetro, se lee el estado lgico del bus.
Ejecucin de programas
Devuelve en el parmetro State el estado del bus especificado en el parmetro
BusName.
Los estados lgicos del bus de E/S describen el estado cuya activacin puede
solicitar el usuario. El estado del bus de E/S se define en la tabla siguiente cuando
se utiliza el argumento opcional \Logic.
Valor de retor- Constante simblica
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 fsico del bus de E/S describe el estado cuya activacin puede ordenar
el controlador de bus de campo. El estado del bus de E/S se define en la tabla
siguiente cuando se utiliza el argumento opcional \Phys.
Valor de retorno Constante simblica

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. No se comunica con ninguna unidad.

24

IOBUS_PHYS_STATE_INIT

3)

El bus no est trabajando 2)

El bus slo ha sido creado

3)

Nota
Ni en RobotWare 5.08 ni en versiones anteriores es posible utilizar la instruccin
IOBusState con el argumento opcional \Phys o \Logic. En RobotWare 5.09,
se recomienda usar el argumento opcional \Phys o \Logic.
El estado del bus de E/S se define en la tabla siguiente cuando no se utiliza
ninguno de los argumentos opcionales, \Phys ni \Logic.
Valor de retorno Constante simblica

Comentario

BUSSTATE_HALTED

El bus se ha detenido 3)

BUSSTATE_RUN

Bus en funcionamiento 1)

BUSSTATE_ERROR

El bus no est trabajando 2)

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.68 IOBusState - Obtener el estado actual de un bus de E/S
Continuacin
Valor de retorno Constante simblica

Comentario

BUSSTATE_STARTUP

El bus est en el modo de puesta en


marcha. No se comunica con ninguna unidad.

BUSSTATE_INIT

El bus slo ha sido creado 3)

1)

Si el bus est funcionando, el estado devuelto en el argumento State de la


instruccin IOBusState puede ser IOBUS_LOG_STATE_STARTED,
IOBUS_PHYS_STATE_RUNNING o BUSSTATE_RUN en funcin de si se utilizan o no
parmetros opcionales en IOBusState.
2) Si el bus se ha detenido debido a algn error, el estado devuelto en el argumento

State puede ser IOBUS_LOG_STATE_STOPPED, IOBUS_PHYS_STATE_ERROR o


BUSSTATE_ERROR en funcin de si se usan parmetros opcionales o no en
IOBusState.
3) No es posible obtener este estado en el programa de RAPID con la versin actual

de Robotware - OS.
Gestin de errores
La variable de sistema ERRNO cambia a ERR_NAME_INVALID si el nombre de bus
no existe. Ese error puede ser gestionado en un gestor de ERROR.
Sintaxis
IOBusState
[ BusName := ] < expression (IN) of string> ,
[ State := ] < variable (VAR) of busstate>
[ \ Phys] | [ \ Logic];

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Definicin de estado de bus

busstate - Estado de bus de E/S en la pgina 1174

Inicio de un bus de E/S

IOBusStart - Start of I/O bus en la pgina 163

Funcionalidad de entrada/salida en Technical reference manual - RAPID overview, seccin


general
Principios de movimiento y E/S - Principios de E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

166

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.69 IODisable - Desactiva una unidad de E/S

1.69 IODisable - Desactiva una unidad de E/S


Utilizacin
IODisable se utiliza para desactivar una unidad de E/S durante la ejecucin del
programa.
Las unidades de E/S estn activadas de forma automtica despus del inicio, si
estn definidas en los parmetros del sistema. En las ocasiones en que sea
necesario, es posible desactivar o activar las unidades de E/S durante la ejecucin
del programa.
Nota
No es posible desactivar una unidad de E/S cuyo Trustlevel tenga el valor
Required.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IODisable.
Consulte tambin Ms ejemplos en la pgina 168.
Ejemplo 1
CONST string cell1:="cell1";
IODisable cell1, 5;

Desactivar una unidad de E/S denominada cell1. El tiempo de espera mximo


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 parmetros del sistema).
MaxTime
Tipo de dato: num
El periodo mximo permitido para el tiempo de espera, expresado en segundos.
Si se agota este tiempo antes de que la unidad de E/S haya finalizado los pasos
de desactivacin, es posible llamar al gestor de errores, si lo hay, con el cdigo
de error ERR_IODISABLE. Si no hay ningn gestor de errores, se detiene la
ejecucin del programa. No obstante, el proceso de desactivacin de la unidad
de E/S siempre contina independientemente del valor de MaxTime o del error.
La desactivacin de una unidad de E/S requiere de 0 a 5 segundos
aproximadamente.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.69 IODisable - Desactiva una unidad de E/S
Continuacin
Ejecucin de programas
La unidad de E/S especificada inicia los pasos de desactivacin. La instruccin
queda finalizada tan pronto como terminan los pasos de la desactivacin. Si se
agota el tiempo lmite MaxTime antes de que la unidad de E/S haya finalizado los
pasos de desactivacin, se genera un error recuperable.
Despus de la desactivacin de una unidad de E/S, el establecimiento de salidas
de esta unidad da lugar a errores.
Gestin 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_IODISABLE

Si se alcanza el tiempo lmite 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, no


es posible desactivar la unidad de E/S.

ERR_NAME_INVALID

Si el nombre de la unidad de E/S no existe.

Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin IODisable.
Ejemplo 1
PROC go_home()
VAR num recover_flag :=0;
...
! Start to disable I/O unit cell1
recover_flag := 1;
IODisable "cell1", 0;
! Move to home position
MoveJ home, v1000,fine,tool1;
! Wait until deactivation of I/O unit cell1 is ready
recover_flag := 2;
IODisable "cell1", 5;
...
ERROR
IF ERRNO = ERR_IODISABLE THEN
IF recover_flag = 1 THEN
TRYNEXT;
ELSEIF recover_flag = 2 THEN
RETRY;
ENDIF
ELSEIF ERRNO <> ERR_EXCRTYMAX THEN
RAISE;
ELSE
ErrWrite "IODisable error", "Not possible to disable I/O unit
cell1";
Stop;
ENDIF
ENDPROC

Contina en la pgina siguiente


168

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.69 IODisable - Desactiva una unidad de E/S
Continuacin
Con el fin de ahorrar tiempo de ciclo, se desactiva la unidad de E/S cell1 durante
el movimiento del robot hacia la posicin home. Cuando el robot se encuentra en
la posicin home, se realiza una comprobacin para determinar si la unidad de E/S
cell1 se ha desactivado completamente. Despus del nmero mximo de
reintentos (5 con un tiempo de espera de 5 s), la ejecucin del robot se detiene
con un mensaje de error.
El mismo principio puede usarse con IOEnable (de esta forma, se ahorra tiempo
de ciclo en comparacin con IODisable).
Sintaxis
IODisable
[ UnitName := ] < expression (IN) of string> ,
[ MaxTime := ] < expression (IN) of num> ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Activacin de una unidad de E/S

IOEnable - Activa una unidad de E/S en la pgina 170

Instrucciones de entrada/salida

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Seales de entrada y salida

Funcionalidad de entrada/salida en gene- Technical reference manual - RAPID overview,


ral
seccin Principios de movimiento y E/S - Principios de E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros del


sistema

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.70 IOEnable - Activa una unidad de E/S

1.70 IOEnable - Activa una unidad de E/S


Utilizacin
IOEnable se utiliza para activar una unidad de E/S durante la ejecucin del
programa.
Las unidades de E/S estn activadas de forma automtica despus del inicio, si
estn definidas en los parmetros del sistema. En las ocasiones en que sea
necesario, es posible desactivar o activar las unidades de E/S durante la ejecucin
del programa.
La accin del controlador al activar una unidad de E/S depende del nivel Trustlevel
definido para la unidad. Consulte Parmetros de sistema, Unit Trustlevel.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IOEnable.
Consulte tambin Ms ejemplos en la pgina 171.
Ejemplo 1
CONST string cell1:="cell1";
IOEnable cell1, 5;

Se activa la unidad de E/S con el nombre cell1. El tiempo de espera es de 5 s.


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 parmetros del sistema).
MaxTime
Tipo de dato: num
El periodo mximo permitido para el tiempo de espera, expresado en segundos.
Si se agota este tiempo antes de que la unidad de E/S haya finalizado los pasos
de activacin, es posible llamar al gestor de errores, si lo hay, con el cdigo de
error ERR_IOENABLE. Si no hay ningn gestor de errores, se detiene la ejecucin.
No obstante, el proceso de activacin de la unidad de E/S siempre contina
independientemente del valor de MaxTime o del error.
La activacin de una unidad de E/S requiere de 2 a 5 segundos aproximadamente.
Ejecucin de programas
La unidad de E/S especificada inicia los pasos de activacin. La instruccin queda
finalizada tan pronto como terminan los pasos de la activacin. Si se agota el
tiempo lmite MaxTime antes de que la unidad de E/S haya finalizado los pasos
de activacin, se genera un error recuperable.
Despus de una secuencia IODisable - IOEnable, todas las salidas de la unidad
de E/S actual vuelven a los valores anteriores (los que tenan antes de la instruccin
IODisable).
Contina en la pgina siguiente
170

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.70 IOEnable - Activa una unidad de E/S
Continuacin
Gestin 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_IOENABLE

Si se agota el tiempo lmite antes de que la unidad de E/S


se active.

ERR_NAME_INVALID

Si el nombre de la unidad de E/S no existe.

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.

Ms ejemplos
IOEnable tambin puede usarse para comprobar si una unidad de E/S est
desconectada por algn motivo.
A continuacin aparecen ms ejemplos de cmo usar la instruccin IOEnable.
Ejemplo 1
VAR num max_retry:=0;
...
IOEnable "cell1", 0;
SetDO cell1_sig3, 1;
...
ERROR
IF ERRNO = ERR_IOENABLE THEN
WaitTime 1;
RETRY;
ELSEIF ERRNO <> Err_EXCRTYMAX THEN
RAISE;
ELSE
ErrWrite "IOEnable error", "Not possible to enable I/O
unit cell";
Stop;
ENDIF
ENDIF

Antes de usar seales de la unidad de E/S cell1, se realiza una comprobacin


mediante un intento de activacin de la unidad de E/S con un tiempo lmite de 0
segundos. Si la comprobacin falla, se salta al gestor de errores. En el gestor de
errores, la ejecucin del programa espera durante 1 segundo y se hace un nuevo
intento. Despus de 5 reintentos, el error ERR_IOENABLE se propaga hacia la
rutina desde la que se llama a esta rutina de prueba.
Sintaxis
IOEnable
[ UnitName := ] < expression (IN) of string> ,
[ MaxTime := ] < expression (IN) of num > ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.70 IOEnable - Activa una unidad de E/S
Continuacin
Informacin relacionada
Para obtener ms informacin sobre Consulte
Desactivacin de una unidad de E/S IODisable - Desactiva una unidad de E/S en la pgina 167
Instrucciones de entrada/salida

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Seales de entrada y
salida

Funcionalidad de entrada/salida en
general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Principios de
E/S

Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

172

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.71 IPers - Interrupcin en caso de cambio de valor de una variable persistente

1.71 IPers - Interrupcin en caso de cambio de valor de una variable persistente


Utilizacin
IPers (Interrupt Persistent) se utiliza para solicitar y activar la generacin de
interrupciones en caso de cambio de valor de una variable persistente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IPers.
Ejemplo 1
VAR intnum pers1int;
PERS num counter := 0;
PROC main()
CONNECT pers1int WITH iroutine1;
IPers counter, pers1int;
...
Idelete pers1int;
ENDPROC
TRAP iroutine1
TPWrite "Current value of counter = " \Num:=counter;
ENDTRAP

Solicitita una interrupcin que debe tener lugar cada vez que cambie el valor de
la variable persistente counter. En este caso, se realiza una llamada a la rutina
TRAP iroutine1.
Argumentos
IPers Name Interrupt

Name
Tipo de dato: anytype
La variable persistente a partir de la cual deben generarse las interrupciones.
Puede usar todo tipo de datos, como atmico, registro, componente de registro,
matriz o elemento de matriz.
Interrupt
Tipo de dato: intnum
La identidad de la interrupcin. La interrupcin debe estar ya conectada a una
rutina TRAP mediante la instruccin CONNECT.
Ejecucin de programas
En el momento en el que la variable persistente cambia de valor, se realiza una
llamada a la rutina TRAP correspondiente. Una vez ejecutada la rutina, la ejecucin
del programa contina a partir del punto en el que se produjo la interrupcin.
Si la variable persistente cambia de valor durante un paro de programa, no tendr
lugar ninguna interrupcin cuando el programa se inicie de nuevo.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.71 IPers - Interrupcin en caso de cambio de valor de una variable persistente
Continuacin
Limitaciones
No es posible utilizar ms de una vez la identidad de la interrupcin sin eliminarla
previamente. Consulte la instruccin ISignalDI.
Si se indica una parte de un dato, por ejemplo un componente de registro o un
elemento de matriz, en el parmetro Name, la interrupcin 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
garanta de que el valor ledo sea el que dispar la interrupcin.
Sintaxis
IPers
[ Name := ] < persistent (PERS) of anytype > ,
[ Interrupt := ] < variable (VAR) of intnum > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Interrupciones

Interrupcin a partir de una seal de entrada ISignalDI - Solicita interrupciones a partir de


una seal digital de entrada en la pgina 194
Ms informacin sobre la gestin de interrup- Technical reference manual - RAPID overciones
view, seccin Caractersticas bsicas - Interrupciones
Identidad de interrupcin

intnum - Identidad de interrupcin en la pgina 1212

174

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.72 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato

1.72 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato


Utilizacin
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.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IRMQMessage.
Consulte tambin IRMQMessage - Ordenar interrupciones de RMQ para un tipo
de dato en la pgina 175.
Ejemplo 1
VAR intnum rmqint;
VAR string dummy;
...
PROC main()
CONNECT rmqint WITH iroutine1;
IRMQMessage dummy, rmqint;

Solicita una interrupcin que debe producirse cada vez que se reciba un nuevo
rmqmessage que contenga el tipo de dato string. En este caso, se realiza una
llamada a la rutina TRAPiroutine1.
Argumentos
IRMQMessage InterruptDataType Interrupt

InterruptDataType
Tipo de dato: anytype
Una referencia a una variable, una variable persistente o una constante de un tipo
de dato que generar una interrupcin cuando se reciba un rmqmessage con el
tipo de dato especificado.
Interrupt
Tipo de dato: intnum
La identidad de la interrupcin. La interrupcin debe estar ya conectada a una
rutina TRAP mediante la instruccin CONNECT.
Ejecucin de programas
En el momento en el que se recibe el mensaje RMQ con el tipo de dato
especificado, se realiza una llamada a la rutina TRAP correspondiente. Una vez
ejecutada la rutina, la ejecucin del programa contina a partir del punto en el que
se produjo la interrupcin.
Todos los mensajes que contengan datos del mismo tipo de dato,
independientemente de su nmero de dimensiones, sern gestionadas por la
misma interrupcin. Si se utilizan diferentes dimensiones, utilice RMQGetMsgHeader
para adaptarse a ello.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.72 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato
Continuacin
Cualquier mensaje que contenga datos de un tipo de dato que no tiene conectada
ninguna interrupcin generar un aviso.
La instruccin RMQSendWait tiene la mxima prioridad si se recibe un mensaje y
ste se corresponde con la descripcin tanto de la respuesta esperada como de
un mensaje conectado a una rutina TRAP con la instruccin IRMQMessage.
No todos los tipos de datos pueden usarse en el argumento InterruptDataType
(consulte las limitaciones).
Se considera que la interrupcin es una interrupcin segura. Una interrupcin
segura no puede ponerse en reposo con la instruccin ISleep. El evento de
interrupcin segura se almacena en la cola en caso de paro del programa y
ejecucin paso a paso y cuando se inicia de nuevo en el modo continuo, la
interrupcin se ejecuta. El nico momento en el que una interrupcin segura se
desecha es cuando la cola de interrupciones est llena. En este caso se genera
un error. La interrupcin no sobrevive al restablecimiento del programa, por ejemplo
el traslado del PP a main.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin IRMQMessage.
Ejemplo 1
MODULE ReceiverMod

Contina en la pgina siguiente


176

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.72 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato
Continuacin
VAR
VAR
VAR
VAR

intnum intno1;
rmqheader rmqheader1;
rmqslot rmqslot1;
rmqmessage rmqmessage1;

PROC main()
VAR string interrupt_on_str := stEmpty;
CONNECT intno1 WITH RecMsgs;
! Set up interrupts for data type string
IRMQMessage interrupt_on_str, intno1;
! Perform cycle
WHILE TRUE DO
...
ENDWHILE
ENDPROC
TRAP RecMsgs
VAR string receivestr;
VAR string client_name;
VAR num userdef;
! Get the message from the RMQ
RMQGetMessage rmqmessage1;
! Get information about the message
RMQGetMsgHeader rmqmessage1 \Header:=rmqheader1
\SenderId:=rmqslot1 \UserDef:=userdef;
IF rmqheader1.datatype = "string" AND rmqheader1.ndim = 0 THEN
! Get the data received in rmqmessage1
RMQGetMsgData rmqmessage1, receivestr;
client_name := RMQGetSlotName(rmqslot1);
TPWrite "Rec string: " + receivestr;
TPWrite "User Def: " + ValToStr(userdef);
TPWrite "From: " + client_name;
ELSE
TPWrite "Faulty data received!"
ENDIF
ENDTRAP
ENDMODULE

Este ejemplo muestra cmo configurar interrupciones para un tipo de dato en


concreto. Cuando se recibe un mensaje, se ejecuta la rutina TRAPRecMsgs y los
datos recibidos en el mensaje se muestran en el FlexPendant. Si el tipo de dato
recibido o la dimensin de los datos son distintos de lo esperado, esta situacin
se muestra en el FlexPendant.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.72 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato
Continuacin
Limitaciones
No se permite ejecutar IRMQMessage en el modo sincronizado. Provocara un
error de tiempo de ejecucin no recuperable.
No es posible usar en interrupciones, enviar ni recibir instancias de tipos de datos
que no tienen valor, son de semivalor o corresponden al tipo de dato motsetdata.
No es posible utilizar ms de una vez la identidad de la interrupcin sin eliminarla
previamente. Por tanto, las interrupciones deben tratarse de la forma mostrada,
con una de las alternativas siguientes.
VAR intnum rmqint;
PROC main ()
VAR mytype dummy;
CONNECT rmq1int WITH iroutine1;
IRMQMessage dummy, rmqint;
WHILE TRUE DO
...
ENDWHILE
ENDPROC

Al principio del programa se produce la activacin de todas las interrupciones. En


este caso, las instrucciones iniciales se mantienen fuera del flujo principal del
programa.
VAR intnum rmqint;
PROC main ( )
VAR mytype dummy;
CONNECT rmqint WITH iroutine1;
IRMQMessage dummy, rmqint;
...
IDelete rmqint;
ENDPROC

La interrupcin se elimina al final del programa y se activa de nuevo. En este caso,


es importante recordar que la interrupcin permanece inactiva durante un periodo
breve.
Sintaxis
IRMQMessage
[ InterruptDataType := ] < reference (REF) of anytype >
[ Interrupt := ] < variable (VAR) of intnum >;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID


Message Queue

Application manual - Robot communication


and I/O control, seccin RAPID Message
Queue.

Enviar datos a la cola de una tarea de RAPID RMQFindSlot - Buscar una identidad de ranuo de un cliente de Robot Application Builder. ra para el nombre de ranura en la pgina 397
Obtener el primer mensaje de una cola de
RAPID Message Queue.

RMQGetMessage - Obtener un mensaje de


RMQ en la pgina 399

Contina en la pgina siguiente


178

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.72 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato
Continuacin
Para obtener ms informacin sobre

Consulte

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 pgiesperar una respuesta del cliente.
na 416
Extraer los datos de encabezado de un rmq- RMQGetMsgHeader - Obtener informacin
de encabezado de un mensaje de RMQ en
message.
la pgina 405
Enviar datos a la cola de una tarea de RAPID RMQSendMessage - Enviar un mensaje de
o de un cliente de Robot Application Builder. datos de RMQ en la pgina 412
Extraer los datos de un rmqmessage.

RMQGetMsgData - Obtener la parte de datos


de un mensaje de RMQ en la pgina 402

Obtener el nombre de ranura de una identi- RMQGetSlotName - Obtener el nombre de


dad de ranura especificada.
un cliente de RMQ en la pgina 1035

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.73 ISignalAI - Interrupciones a partir de una seal analgica de entrada

1.73 ISignalAI - Interrupciones a partir de una seal analgica de entrada


Utilizacin
ISignalAI (Interrupt Signal Analog Input) se utiliza para solicitar y activar
interrupciones a partir de una seal analgica de entrada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ISignalAI.
Ejemplo 1
VAR intnum sig1int;
PROC main()
CONNECT sig1int WITH iroutine1;
ISignalAI \Single, ai1, AIO_BETWEEN, 1.5, 0.5, 0, sig1int;

Solicita una interrupcin que debe producirse la primera vez que el valor lgico
de la seal analgica de entrada ai1 se encuentre entre 0.5 y 1.5. En este caso,
se realiza una llamada a la rutina TRAP iroutine1.
Ejemplo 2
ISignalAI ai1, AIO_BETWEEN, 1.5, 0.5, 0.1, sig1int;

Solicita una interrupcin que debe producirse cada vez que el valor lgico de la
seal analgica de entrada ai1 se encuentre entre 0.5 y 1.5 y cuando la diferencia
absoluta de la seal respecto del valor de referencia almacenado sea superior a
0.1.
Ejemplo 3
ISignalAI ai1, AIO_OUTSIDE, 1.5, 0.5, 0.1, sig1int;

Se solicita una interrupcin que debe producirse cada vez que el valor lgico de
la seal analgica de entrada ai1 sea inferior a 0,5 o superior a 1,5 y cuando la
diferencia absoluta de la seal respecto del valor de referencia almacenado sea
superior a 0,1.
Argumentos
ISignalAI [\Single] | [\SingleSafe] Signal Condition HighValue
LowValue DeltaValue[\DPos] | [\DNeg] Interrupt

[\Single]
Tipo de dato: switch
Especifica si la interrupcin debe producirse una sola vez o de forma cclica. Si
se utiliza el argumento Single, la interrupcin se produce como mximo una sola
vez. Si se omiten los argumentos Single y SingleSafe, se genera una
interrupcin cada vez que se cumpla la condicin.
[\SingleSafe]
Tipo de dato: switch
Especifica que la interrupcin es nica y segura. Para la definicin de nica,
consulte la descripcin del argumento Single. Una interrupcin segura no puede
ponerse en reposo con la instruccin ISleep. El evento de interrupcin segura
se almacena en la cola en caso de paro del programa y ejecucin paso a paso y
Contina en la pgina siguiente
180

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.73 ISignalAI - Interrupciones a partir de una seal analgica de entrada
Continuacin
cuando se inicia de nuevo en el modo continuo, la interrupcin se ejecuta. El nico
momento en el que una interrupcin segura se desecha es cuando la cola de
interrupciones est llena. En este caso se genera un error. La interrupcin no
sobrevive al restablecimiento del programa, por ejemplo el traslado del PP a main.
Signal
Tipo de dato: signalai
El nombre de la seal a partir de la cual deben generarse las interrupciones.
Condition
Tipo de dato: aiotrigg
Especifica cmo HighValue y LowValue definen la condicin que debe cumplirse:
Valor

Constante simblica Comentario

AIO_ABOVE_HIGH

La seal genera interrupciones si se encuentra por encima


del valor mximo especificado

AIO_BELOW_HIGH

La seal genera interrupciones si se encuentra por debajo


del valor mximo especificado

AIO_ABOVE_LOW

La seal genera interrupciones si se encuentra por encima


del valor mnimo especificado

AIO_BELOW_LOW

La seal genera interrupciones si se encuentra por debajo


del valor mnimo especificado

AIO_BETWEEN

La seal genera interrupciones si se encuentra entre los


valores mnimo y mximo especificados

AIO_OUTSIDE

La seal genera interrupciones si se encuentra por debajo


del valor mnimo especificado o por encima del valor mximo especificado

AIO_ALWAYS

La seal siempre genera interrupciones

HighValue
Tipo de dato: num
El valor lgico de lmite mximo utilizado para definir la condicin.
LowValue
Tipo de dato: num
El valor lgico de lmite mnimo utilizado para definir la condicin.
DeltaValue
Tipo de dato: num
Define la diferencia mnima entre dos seales lgicas antes de que se genere una
nueva interrupcin. El valor actual de la seal, comparado con el valor de referencia
almacenado, debe ser mayor que el valor especificado en DeltaValue para que
se genere una nueva interrupcin.
[\DPos]
Tipo de dato: switch
Especifica que slo las diferencias positivas entre seales lgicas suponen la
generacin de nuevas interrupciones.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.73 ISignalAI - Interrupciones a partir de una seal analgica de entrada
Continuacin
[\DNeg]
Tipo de dato: switch
Especifica que slo las diferencias negativas entre seales lgicas suponen la
generacin de nuevas interrupciones.
Si no se utiliza el argumento \DPos ni el argumento \DNeg tanto las diferencias
positivas como las negativas suponen la generacin de nuevas interrupciones.
Interrupt
Tipo de dato: intnum
La identidad de la interrupcin. La interrupcin debe estar ya conectada a una
rutina TRAP mediante la instruccin CONNECT.
Ejecucin de programas
En el momento en el que la seal satisface las condiciones especificadas (tanto
Condition como DeltaValue), se realiza una llamada a la rutina TRAP
correspondiente. Una vez ejecutada la rutina, la ejecucin del programa contina
a partir del punto en el que se produjo la interrupcin.
Condiciones para la generacin de interrupciones
Antes de solicitar la suscripcin a una interrupcin, cada vez que se muestre la
seal, el valor de sta se lee, se guarda y se utiliza posteriormente como valor de
referencia para la condicin DeltaValue.
En el momento de la suscripcin de la interrupcin si se ha especificado
DeltaValue = 0, y tras el momento de la suscripcin de la interrupcin se muestrea
la seal. A continuacin, se compara el valor de la seal con HighValue y
LowValue segn el valor de Condition y teniendo en cuenta el valor de
DeltaValue para decidir si debe generarse o no una interrupcin. Si el nuevo
valor ledo satisface los valores especificados en HighValue, LowValue y
Condition, pero su diferencia respecto del ltimo valor de referencia almacenado
es menor o igual al valor del argumento DeltaValue, no se produce ninguna
interrupcin. Si la diferencia entre las seales no se produce en el sentido
especificado, no se genera ninguna interrupcin (argumento \DPos o \DNeg).
El valor de referencia almacenado para la condicin DeltaValue se actualiza con
un nuevo valor ledo para su uso en los muestreos posteriores, siempre y cuando
se cumplan las condiciones siguientes:

Argumento Condition con valores especificados en HighValue y LowValue


(dentro de lmites)

Argumento DeltaValue (variacin suficiente de la seal en cualquier sentido,


independientemente del modificador \DPos o \DNeg especificado)

El valor de referencia slo se actualiza en el momento del muestreo, no en el


momento de la suscripcin de la interrupcin.
Tambin se genera una interrupcin en el momento del muestreo que se hace
para actualizar el valor de referencia, siempre y cuando la diferencia entre las
seales cumpla el argumento especificado (en cualquier sentido, \DPos0 o \DNeg).

Contina en la pgina siguiente


182

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.73 ISignalAI - Interrupciones a partir de una seal analgica de entrada
Continuacin
Si se utiliza el modificador \Single, slo se genera una interrupcin como mximo.
Si el modificador \Single (interrupcin cclica) no se utiliza, se realiza una nueva
prueba con las condiciones especificadas (tanto Condition como DeltaValue)
con cada muestreo del valor de la seal. Se realiza una comparacin entre el valor
actual de la seal y el ltimo valor de referencia almacenado para decidir si debe
generarse una interrupcin o no.
Condicin para la generacin de una interrupcin en el momento de la suscripcin
Muestreo antes de la suscripcin de la interrupcin

RefValue:=CurrentValue
Suscripcin de

False

la interrupcin

CurrentValue comprobado respecto de


Condition HighValue y LowValue
True

False
DeltaValue = 0
True

Se genera una interrupcin

Continue
xx0500002165_es

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.73 ISignalAI - Interrupciones a partir de una seal analgica de entrada
Continuacin
Condicin para la generacin de una interrupcin con cada muestreo a partir del momento de la
suscripcin
New Sample

False

CurrentValue comprobado respecto de


Condition HighValue y LowValue

True
True

No se especifica DPos ni DNeg y

ABS(CurrentValue - RefValue) > DeltaValue


False
True

Se especifica DPos y

CurrentValue - RefValue) > DeltaValue


False
True

Se especifica DNeg y

RefValue - CurrentValue) > DeltaValue


False

RefValue: = CurrentValue
Se genera una
interrupcin

ABS(CurrentValue - RefValue) > DeltaValue


False

True

RefValue: = CurrentValue

Continuar
xx0500002166_es

Contina en la pgina siguiente


184

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.73 ISignalAI - Interrupciones a partir de una seal analgica de entrada
Continuacin
Ejemplo 1 de generacin de interrupciones

Valor lgico de la seal

HighValue

Signal Value
LowValue

1
2
3
4
5
6
7
8
9
10 11
Tiempo de solicitud de suscripcin de la interrupcin
Almacenamiento del valor de referencia

12

Muestreos

xx0500002167_es

Suponiendo que la interrupcin se solicita entre el muestreo 0 y el 1, la instruccin


siguiente da lugar a los resultados siguientes:
ISignalAI ai1, AIO_BETWEEN, 6.1, 2.2, 1.0, sig1int;

El muestreo 1 genera una interrupcin, ya que el valor de la seal se encuentra


entre HighValue y LowValue y la diferencia entre las seales respecto del
muestreo 0 es superior a DeltaValue.
El muestreo 2 genera una interrupcin, ya que el valor de la seal se encuentra
entre HighValue y LowValue y la diferencia entre las seales respecto del
muestreo 1 es superior a DeltaValue.
Ni el muestreo 3, el 4 ni el 5 generan interrupciones, ya que la diferencia entre las
seales es inferior a DeltaValue.
El muestreo 6 genera una interrupcin.
Los muestreos del 7 al 10 no generan ninguna interrupcin, porque la seal se
encuentra por encima de HighValue.
El muestreo 11 no genera ninguna interrupcin, porque la diferencia entre las
seales respecto del muestreo 6 es igual a DeltaValue.
El muestreo 12 no genera ninguna interrupcin, porque la diferencia entre las
seales respecto del muestreo 6 es inferior a DeltaValue.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.73 ISignalAI - Interrupciones a partir de una seal analgica de entrada
Continuacin
Ejemplo 2 de generacin de interrupciones

Valor lgico de la seal

HighValue

Signal Value
LowValue

10

11

12

Muestreos

Tiempo de solicitud de suscripcin de la interrupcin


Almacenamiento del valor de referencia
xx0500002168_es

Suponiendo que la interrupcin se solicita entre el muestreo 0 y el 1, la instruccin


siguiente da lugar a los resultados siguientes:
ISignalAI ai1, AIO_BETWEEN, 6.1, 2.2, 1.0 \DPos, sig1int;

Se almacena un nuevo valor de referencia en los muestreos 1 y 2, ya que la seal


se encuentra dentro de los lmites y el valor absoluto de la diferencia entre el valor
actual y el ltimo valor de referencia almacenado es superior a 1.0. No se genera
ninguna interrupcin porque las variaciones de la seal se producen en sentido
negativo.
El muestreo 6 genera una interrupcin, ya que el valor de la seal se encuentra
entre HighValue y LowValue y la diferencia entre las seales en sentido positivo
respecto del muestreo 2 es superior a DeltaValue.

Contina en la pgina siguiente


186

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.73 ISignalAI - Interrupciones a partir de una seal analgica de entrada
Continuacin
Ejemplo 3 de generacin de interrupciones

Valor lgico de la seal

HighValue

Signal Value
LowValue

1
2
3
4
5
6
7
8
9
10 11
Tiempo de solicitud de suscripcin de la interrupcin
Almacenamiento del valor de referencia

12

Muestreos

xx0500002169_es

Suponiendo que la interrupcin se solicita entre el muestreo 0 y el 1, la instruccin


siguiente da lugar a los resultados siguientes:
ISignalAI \Single, ai1, AIO_OUTSIDE, 6.1, 2.2, 1.0 \DPos, sig1int;

Se almacena un nuevo valor de referencia en el muestreo 7, ya que la seal se


encuentra dentro de los lmites y el valor absoluto de la diferencia entre el valor
actual y el ltimo valor de referencia almacenado es superior a 1,0
El muestreo 8 genera una interrupcin, ya que el valor de la seal se encuentra
por encima de HighValue y la diferencia en sentido positivo entre las seales
respecto del muestreo 7 es superior a DeltaValue.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.73 ISignalAI - Interrupciones a partir de una seal analgica de entrada
Continuacin
Ejemplo 4 de generacin de interrupciones

Valor lgico de la seal

HighValue

Signal Value
LowValue

1
2
3
4
5
6
7
8
9
10 11
Tiempo de solicitud de suscripcin de la interrupcin
Almacenamiento del valor de referencia

12

Muestreos

xx0500002170_es

Suponiendo que la interrupcin se solicita entre el muestreo 0 y el 1, la instruccin


siguiente da lugar a los resultados siguientes:
ISignalAI ai1, AIO_ALWAYS, 6.1, 2.2, 1.0 \DPos, sig1int;

Se almacena un nuevo valor de referencia en los muestreos 1 y 2, ya que la seal


se encuentra dentro de los lmites y el valor absoluto de la diferencia entre el valor
actual y el ltimo valor de referencia almacenado es superior a 1.0
El muestreo 6 genera una interrupcin, ya que la diferencia entre las seales en
sentido positivo respecto del muestreo 2 es superior a DeltaValue.
Los muestreos 7 y 8 generan una interrupcin, ya que la diferencia entre las seales
en sentido positivo respecto del muestreo anterior es superior a DeltaValue.
Se almacena un nuevo valor de referencia en los muestreos 11 y 12, ya que la
seal se encuentra dentro de los lmites y el valor absoluto de la diferencia entre
el valor actual y el ltimo valor de referencia almacenado es superior a 1.0
Gestin de errores
Si se produce la suscripcin de una interrupcin para una seal analgica de
entrada, se genera una interrupcin para cada variacin en el valor analgico que
cumpla la condicin especificada al solicitar la suscripcin de la interrupcin. Si
el valor analgico presenta ruido, es posible que se generen muchas interrupciones,
incluso a pesar de que slo varen uno o dos bits del valor analgico.
Para evitar la generacin de interrupciones para pequeos cambios del valor de
la entrada analgica, utilice en DeltaValue un nivel superior a 0. A partir de ese
momento, no se genera ninguna interrupcin hasta que el cambio del valor
analgico sea superior al valor especificado para DeltaValue.

Contina en la pgina siguiente


188

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.73 ISignalAI - Interrupciones a partir de una seal analgica de entrada
Continuacin
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:

ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S.

ERR_AO_LIM si el argumento programado HighValue o LowValue para la


seal analgica de entrada especificada Signal est fuera de lmites.

Limitaciones
Los argumentos HighValue y LowValue deben estar dentro del rango: valor
lgico mximo y valor lgico mnimo definidos para la seal.
HighValue debe ser superior a LowValue.
DeltaValue debe ser 0 o un valor positivo.
Las limitaciones de la identidad de la interrupcin son las mismas que en el caso
de ISignalDI.
Sintaxis
ISignalAI
[ '\' Single ] | [ '\' SingleSafe ] ','
[ Signal ':=' ] <variable (VAR) of signalai> ','
[ Condition ':=' ] <expression (IN) of aiotrigg> ','
[ HighValue ':=' ] <expression (IN) of num> ','
[ LowValue ':=' ] <expression (IN) of num> ','
[ DeltaValue ':=' ] <expression (IN) of num>
[['\'DPos] | [ '\' DNeg] ',']
[ Interrupt ':=' ] <variable (VAR) of intnum> ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Interrupciones

Definicin de constantes

aiotrigg - Condicin de disparo con E/S analgica en la pgina 1169

Interrupcin a partir de una seal analgica ISignalAO - Interrupciones a partir de una seal
de salida
analgica de salida en la pgina 190
Interrupcin a partir de una seal digital de ISignalDI - Solicita interrupciones a partir de
entrada
una seal digital de entrada en la pgina 194
Interrupcin a partir de una seal digital de ISignalDO - Interrupciones a partir de una sesalida
al digital de salida en la pgina 197
Ms informacin sobre la gestin de inte- Technical reference manual - RAPID overview,
rrupciones
seccin Caractersticas bsicas - Interrupciones
Identidad de interrupcin

intnum - Identidad de interrupcin en la pgina 1212

Parmetros del sistema relacionados (filtro) Manual de referencia tcnica - Parmetros del
sistema, seccin IOsignals

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.74 ISignalAO - Interrupciones a partir de una seal analgica de salida

1.74 ISignalAO - Interrupciones a partir de una seal analgica de salida


Utilizacin
ISignalAO (Interrupt Signal Analog Output) se utiliza para solicitar y activar
interrupciones a partir de una seal analgica de salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ISignalAO.
Ejemplo 1
VAR intnum sig1int;
PROC main()
CONNECT sig1int WITH iroutine1;
ISignalAO \Single, ao1, AIO_BETWEEN, 1.5, 0.5, 0, sig1int;

Solicita una interrupcin que debe producirse la primera vez que el valor lgico
de la seal analgica de salida ao1 se encuentre entre 0.5 y 1.5. En este caso,
se realiza una llamada a la rutina TRAP iroutine1.
Ejemplo 2
ISignalAO ao1, AIO_BETWEEN, 1.5, 0.5, 0.1, sig1int;

Solicita una interrupcin que debe producirse cada vez que el valor lgico de la
seal de salida analgica ao1 se encuentre entre 0.5 y 1.5 y cuando la diferencia
absoluta de la seal respecto del valor de referencia almacenado anteriormente
sea superior a 0,1.
Ejemplo 3
ISignalAO ao1, AIO_OUTSIDE, 1.5, 0.5, 0.1, sig1int;

Se solicita una interrupcin que debe producirse cada vez que el valor lgico de
la seal de salida analgica ao1 sea inferior a 0.5 o superior a 1.5 y cuando la
diferencia absoluta de la seal respecto del valor de referencia almacenado sea
superior a 0,1.
Argumentos
ISignalAO [\Single] | [\SingleSafe] Signal Condition HighValue
LowValue DeltaValue[\DPos] | [\DNeg] Interrupt

[\Single]
Tipo de dato: switch
Especifica si la interrupcin debe producirse una sola vez o de forma cclica. Si
se utiliza el argumento Single, la interrupcin se produce como mximo una sola
vez. Si se omiten los argumentos Single y SingleSafe, se genera una
interrupcin cada vez que se cumpla la condicin.
[\SingleSafe]
Tipo de dato: switch
Especifica que la interrupcin es nica y segura. Para la definicin de nica,
consulte la descripcin del argumento Single. Una interrupcin segura no puede
ponerse en reposo con la instruccin ISleep. El evento de interrupcin segura
se almacena en la cola en caso de paro del programa y ejecucin paso a paso y
Contina en la pgina siguiente
190

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.74 ISignalAO - Interrupciones a partir de una seal analgica de salida
Continuacin
cuando se inicia de nuevo en el modo continuo, la interrupcin se ejecuta. El nico
momento en el que una interrupcin segura se desecha es cuando la cola de
interrupciones est llena. En este caso se genera un error. La interrupcin no
sobrevive al restablecimiento del programa, por ejemplo el traslado del PP a main.
Signal
Tipo de dato: signalao
El nombre de la seal a partir de la cual deben generarse las interrupciones.
Condition
Tipo de dato: aiotrigg
Especifica cmo HighValue y LowValue definen la condicin que debe cumplirse:
Valor

Constante simblica Comentario

AIO_ABOVE_HIGH

La seal genera interrupciones si se encuentra por encima


del valor mximo especificado

AIO_BELOW_HIGH

La seal genera interrupciones si se encuentra por debajo


del valor mximo especificado

AIO_ABOVE_LOW

La seal genera interrupciones si se encuentra por encima


del valor mnimo especificado

AIO_BELOW_LOW

La seal genera interrupciones si se encuentra por debajo


del valor mnimo especificado

AIO_BETWEEN

La seal genera interrupciones si se encuentra entre los


valores mnimo y mximo especificados

AIO_OUTSIDE

La seal genera interrupciones si se encuentra por debajo


del valor mnimo especificado o por encima del valor mximo especificado

AIO_ALWAYS

La seal siempre genera interrupciones

HighValue
Tipo de dato: num
El valor lgico de lmite mximo utilizado para definir la condicin.
LowValue
Tipo de dato: num
El valor lgico de lmite mnimo utilizado para definir la condicin.
DeltaValue
Tipo de dato: num
Define la diferencia mnima entre dos seales lgicas antes de que se genere una
nueva interrupcin. El valor actual de la seal, comparado con el valor de referencia
almacenado anteriormente, debe ser mayor que el valor especificado en
DeltaValue para que se genere una nueva interrupcin.
[\DPos]
Tipo de dato: switch
Especifica que slo las diferencias positivas entre seales lgicas suponen la
generacin de nuevas interrupciones.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.74 ISignalAO - Interrupciones a partir de una seal analgica de salida
Continuacin
[\DNeg]
Tipo de dato: switch
Especifica que slo las diferencias negativas entre seales lgicas suponen la
generacin de nuevas interrupciones.
Si no se utilizan los argumentos \DPos ni \DNeg, tanto las diferencias positivas
como las negativas suponen la generacin de nuevas interrupciones.
Interrupt
Tipo de dato: intnum
La identidad de la interrupcin. La interrupcin debe estar ya conectada a una
rutina TRAP mediante la instruccin CONNECT.
Ejecucin de programas
Consulte la instruccin ISignalAI para obtener ms informacin sobre:

Ejecucin de programas

Condiciones para la generacin de interrupciones

Ms ejemplos

Los principios en los que se basa ISignalAO son los mismos que se aplican a
ISignalAI.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
si se ha perdido el contacto con la unidad de E/S.
ERR_AO_LIM
si el argumento programado HighValue o LowValue para la seal analgica de
salida especificada Signal est fuera de lmites.
Limitaciones
Los argumentos HighValue y LowValue deben estar dentro del rango: valor
lgico mximo y valor lgico mnimo definidos para la seal.
HighValue debe ser superior a LowValue.
DeltaValue debe ser 0 o un valor positivo.
Las limitaciones de la identidad de la interrupcin son las mismas que en el caso
de ISignalDO.

Contina en la pgina siguiente


192

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.74 ISignalAO - Interrupciones a partir de una seal analgica de salida
Continuacin
Sintaxis
ISignalAO
[ \ Single ] | [ \ SingleSafe ] ,
[ Signal:= ]<variable (VAR) of signalao>,
[ Condition:= ]<expression (IN) of aiotrigg>,
[ HighValue:= ]<expression (IN) of num>,
[ LowValue:= ]<expression (IN) of num>,
[ DeltaValue:= ]<expression (IN) of num>
[[\DPos] | [ \DNeg] ,]
[ Interrupt:= ]<variable (VAR) of intnum>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Interrupciones

Definicin de constantes

aiotrigg - Condicin de disparo con E/S analgica en la pgina 1169

Interrupcin a partir de una seal analgica ISignalAI - Interrupciones a partir de una sede entrada
al analgica de entrada en la pgina 180
Interrupcin a partir de una seal digital de ISignalDI - Solicita interrupciones a partir de
entrada
una seal digital de entrada en la pgina 194
Interrupcin a partir de una seal digital de ISignalDO - Interrupciones a partir de una
salida
seal digital de salida en la pgina 197
Ms informacin sobre la gestin de interrup- Manual de referencia de RAPID - Descripcin
ciones
general de RAPID, seccin Caractersticas
bsicas - Interrupciones
Identidad de interrupcin

intnum - Identidad de interrupcin en la pgina 1212

Parmetros del sistema relacionados (filtro) Manual de referencia tcnica - Parmetros


del sistema, seccin IOsignals

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.75 ISignalDI - Solicita interrupciones a partir de una seal digital de entrada

1.75 ISignalDI - Solicita interrupciones a partir de una seal digital de entrada


Utilizacin
ISignalDI (Interrupt Signal Digital In) se utiliza para solicitar y activar
interrupciones a partir de una seal digital de entrada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ISignalDI.
Ejemplo 1
VAR intnum sig1int;
PROC main()
CONNECT sig1int WITH iroutine1;
ISignalDI di1,1,sig1int;

Solicita una interrupcin que debe producirse cada vez que la seal digital de
entrada di1 cambie a 1. En este caso, se realiza una llamada a la rutina TRAP
iroutine1.
Ejemplo 2
ISignalDI di1,0,sig1int;

Solicita una interrupcin que debe producirse cada vez que la seal digital de
entrada di1 cambie a 0.
Ejemplo 3
ISignalDI \Single, di1,1,sig1int;

Solicita una interrupcin que debe producirse slo la primera vez que la seal
digital de entrada di1 cambie a 1.
Argumentos
ISignalDI [ \Single] | [ \SingleSafe] Signal TriggValue Interrupt

[ \Single ]
Tipo de dato: switch
Especifica si la interrupcin debe producirse una sola vez o de forma cclica.
Si se utiliza el argumento Single, la interrupcin se produce como mximo una
sola vez. Si se omiten los argumentos Single y SingleSafe, se genera una
interrupcin cada vez que se cumpla la condicin.
[ \SingleSafe ]
Tipo de dato: switch
Especifica que la interrupcin es nica y segura. Para la definicin de nica,
consulte la descripcin del argumento Single. Una interrupcin segura no puede
ponerse en reposo con la instruccin ISleep. El evento de interrupcin segura
se almacena en la cola en caso de paro del programa y ejecucin paso a paso y
cuando se inicia de nuevo en el modo continuo, la interrupcin se ejecuta. El nico
momento en el que una interrupcin segura se desecha es cuando la cola de
interrupciones est llena. En este caso se genera un error. La interrupcin no
sobrevive al restablecimiento del programa, por ejemplo el traslado del PP a main.
Contina en la pgina siguiente
194

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.75 ISignalDI - Solicita interrupciones a partir de una seal digital de entrada
Continuacin
Signal
Tipo de dato: signaldi
El nombre de la seal a partir de la cual deben generarse las interrupciones.
TriggValue
Tipo de dato: dionum
El valor al que debe cambiar la seal para que se produzca la interrupcin.
El valor se especifica como 0 1 o como un valor simblico (por ejemplo
high/low). La seal se dispara en el momento del cambio a 0 1.
En TriggValue es posible usar el valor 2 o el valor simblico edge para la
generacin de interrupciones tanto en el flanco positivo (0 -> 1) como en el flanco
negativo (1 -> 0).
Interrupt
Tipo de dato: intnum
La identidad de la interrupcin. La interrupcin debe estar ya conectada a una
rutina TRAP mediante la instruccin CONNECT.
Ejecucin de programas
En el momento en el que la seal recibe el valor especificado, se realiza una
llamada a la rutina TRAP correspondiente. Una vez ejecutada la rutina, la ejecucin
del programa contina a partir del punto en el que se produjo la interrupcin.
Si la seal cambia al valor especificado antes de la solicitud de la interrupcin, no
se produce ninguna interrupcin. Las interrupciones de una seal digital de entrada
a partir del nivel de seal 1 se ilustran en la figura siguiente.

1
0

Valor lgico
de la seal

Muestreos
Tiempo de solicitud de suscripcin de la interrupcin
Tiempo de solicitud de suscripcin de la interrupcin
1
0

Valor lgico
de la seal
Muestreos

xx0500002189_es

Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
si se ha perdido el contacto con la unidad de E/S.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.75 ISignalDI - Solicita interrupciones a partir de una seal digital de entrada
Continuacin
Limitaciones
No es posible utilizar ms de una vez la identidad de la interrupcin sin eliminarla
previamente. Por tanto, las interrupciones deben tratarse de la forma mostrada,
con una de las alternativas siguientes.
VAR intnum sig1int;
PROC main ()
CONNECT sig1int WITH iroutine1;
ISignalDI di1, 1, sig1int;
WHILE TRUE DO
...
ENDWHILE
ENDPROC

Al principio del programa se produce la activacin de todas las interrupciones. En


este caso, las instrucciones iniciales se mantienen fuera del flujo principal del
programa.
VAR intnum sig1int;
PROC main ()
CONNECT sig1int WITH iroutine1;
ISignalDI di1, 1, sig1int;
...
IDelete sig1int;
ENDPROC

La interrupcin se elimina al final del programa y se activa de nuevo. En este caso,


es importante recordar que la interrupcin permanece inactiva durante un periodo
breve.
Sintaxis
ISignalDI
[ \ Single ] | [ \ SingleSafe ] ,
[ Signal := ] < variable (VAR) of signaldi > ,
[ TriggValue := ] < expression (IN) of dionum > ,
[ Interrupt := ] < variable (VAR) of intnum > ;

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Resumen de interrupciones

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Interrupciones

Interrupcin a partir de una seal


de salida

ISignalDO - Interrupciones a partir de una seal digital


de salida en la pgina 197

Ms informacin sobre la gestin


de interrupciones

Technical reference manual - RAPID overview, seccin Caractersticas bsicas - Interrupciones

Identidad de interrupcin

intnum - Identidad de interrupcin en la pgina 1212

196

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.76 ISignalDO - Interrupciones a partir de una seal digital de salida

1.76 ISignalDO - Interrupciones a partir de una seal digital de salida


Utilizacin
ISignalDO (Interrupt Signal Digital Out) se utiliza para solicitar y activar
interrupciones a partir de una seal digital de salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ISignalDO.
Ejemplo 1
VAR intnum sig1int;
PROC main()
CONNECT sig1int WITH iroutine1;
ISignalDO do1,1,sig1int;

Solicita una interrupcin que debe producirse cada vez que la seal de salida
digital do1 cambie a 1. En este caso, se realiza una llamada a la rutina TRAP
iroutine1.
Ejemplo 2
ISignalDO do1,0,sig1int;

Solicita una interrupcin que debe producirse cada vez que la seal de salida
digital do1 cambie a 0.
Ejemplo 3
ISignalDO\Single, do1,1,sig1int;

Solicita una interrupcin que debe producirse slo la primera vez que la seal de
salida digital do1 cambie a 1.
Argumentos
ISignalDO [ \Single ] | [ \SingleSafe ] Signal TriggValue Interrupt

[ \Single ]
Tipo de dato: switch
Especifica si la interrupcin debe producirse una sola vez o de forma cclica.
Si se utiliza el argumento Single, la interrupcin se produce como mximo una
sola vez. Si se omiten los argumentos Single y SingleSafe, se genera una
interrupcin cada vez que se cumpla la condicin.
[ \SingleSafe ]
Tipo de dato: switch
Especifica que la interrupcin es nica y segura. Para la definicin de nica,
consulte la descripcin del argumento Single. Una interrupcin segura no puede
ponerse en reposo con la instruccin ISleep. El evento de interrupcin segura
se almacena en la cola en caso de paro del programa y ejecucin paso a paso y
cuando se inicia de nuevo en el modo continuo, la interrupcin se ejecuta. El nico
momento en el que una interrupcin segura se desecha es cuando la cola de
interrupciones est llena. En este caso se genera un error. La interrupcin no
sobrevive al restablecimiento del programa, por ejemplo el traslado del PP a main.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.76 ISignalDO - Interrupciones a partir de una seal digital de salida
Continuacin
Signal
Tipo de dato: signaldo
El nombre de la seal a partir de la cual deben generarse las interrupciones.
TriggValue
Tipo de dato: dionum
El valor al que debe cambiar la seal para que se produzca la interrupcin.
El valor se especifica como 0 1 o como un valor simblico (por ejemplo
high/low). La seal se dispara en el momento del cambio a 0 1.
En TriggValue es posible usar el valor 2 o el valor simblico edge para la
generacin de interrupciones tanto en el flanco positivo (0 -> 1) como en el flanco
negativo (1 -> 0).
Interrupt
Tipo de dato: intnum
La identidad de la interrupcin. La interrupcin debe estar ya conectada a una
rutina TRAP mediante la instruccin CONNECT.
Ejecucin de programas
En el momento en el que la seal recibe el valor especificado, 0 1, se realiza una
llamada a la rutina TRAP correspondiente. Una vez ejecutada la rutina, la ejecucin
del programa contina a partir del punto en el que se produjo la interrupcin.
Si la seal cambia al valor especificado antes de la solicitud de la interrupcin, no
se produce ninguna interrupcin. Las interrupciones de una seal digital de salida
a partir del nivel de seal 1 se ilustran en la figura siguiente.

1
0

Valor lgico
de la seal

Muestreos
Tiempo de solicitud de suscripcin de la interrupcin
Tiempo de solicitud de suscripcin de la interrupcin
1
0

Valor lgico
de la seal
Muestreos

xx0500002190_es

Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
si se ha perdido el contacto con la unidad de E/S.

Contina en la pgina siguiente


198

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.76 ISignalDO - Interrupciones a partir de una seal digital de salida
Continuacin
Limitaciones
No es posible utilizar ms de una vez la identidad de la interrupcin sin eliminarla
previamente. Por tanto, las interrupciones deben tratarse de la forma mostrada,
con una de las alternativas siguientes.
VAR intnum sig1int;
PROC main ()
CONNECT sig1int WITH iroutine1;
ISignalDO do1, 1, sig1int;
WHILE TRUE DO
...
ENDWHILE
ENDPROC

Al principio del programa se produce la activacin de todas las interrupciones. En


este caso, las instrucciones iniciales se mantienen fuera del flujo principal del
programa.
VAR intnum sig1int;
PROC main ()
CONNECT sig1int WITH iroutine1;
ISignalDO do1, 1, sig1int;
...
IDelete sig1int;
ENDPROC

La interrupcin se elimina al final del programa y se activa de nuevo. En este caso,


es importante recordar que la interrupcin permanece inactiva durante un periodo
breve.
Sintaxis
ISignalDO
[ \ Single ] | [ \ SingleSafe ] ,
[ Signal := ] < variable (VAR) of signaldo > ,
[ TriggValue := ] < expression (IN) of dionum > ,
[ Interrupt := ] < variable (VAR) of intnum > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Interrupciones

Interrupcin a partir de una seal de entrada ISignalDI - Solicita interrupciones a partir de


una seal digital de entrada en la pgina 194
Ms informacin sobre la gestin de interrup- Technical reference manual - RAPID overciones
view, seccin Caractersticas bsicas - Interrupciones
Identidad de interrupcin

intnum - Identidad de interrupcin en la pgina 1212

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.77 ISignalGI - Solicita interrupciones de un grupo de seales digitales de entrada

1.77 ISignalGI - Solicita interrupciones de un grupo de seales digitales de entrada


Utilizacin
ISignalGI (Interrupt Signal Group Digital In) se utiliza para solicitar y activar
interrupciones a partir de un grupo de seales digitales de entrada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ISignalGI.
Ejemplo 1
VAR intnum sig1int;
PROC main()
CONNECT sig1int WITH iroutine1;
ISignalGI gi1,sig1int;

Solicita una interrupcin ante un cambio de valor de una seal de un grupo de


entradas digitales.
Argumentos
ISignalGI [ \Single ] | [ \SingleSafe ] Signal Interrupt

[ \Single ]
Tipo de dato: switch
Especifica si la interrupcin debe producirse una sola vez o de forma cclica.
Si se utiliza el argumento Single, la interrupcin se produce como mximo una
sola vez. Si se omiten los argumentos Single y SingleSafe, se genera una
interrupcin cada vez que se cumpla la condicin.
[ \SingleSafe ]
Tipo de dato: switch
Especifica que la interrupcin es nica y segura. Para la definicin de nica,
consulte la descripcin del argumento Single. Una interrupcin segura no puede
ponerse en reposo con la instruccin ISleep. El evento de interrupcin segura
se almacena en la cola en caso de paro del programa y ejecucin paso a paso y
cuando se inicia de nuevo en el modo continuo, la interrupcin se ejecuta. El nico
momento en el que una interrupcin segura se desecha es cuando la cola de
interrupciones est llena. En este caso se genera un error. La interrupcin no
sobrevive al restablecimiento del programa, por ejemplo el traslado del PP a main.
Signal
Tipo de dato: signalgi
El nombre de la seal de entrada de grupo a partir de la cual deben generarse las
interrupciones.
Interrupt
Tipo de dato: intnum
La identidad de la interrupcin. La interrupcin debe estar ya conectada a una
rutina TRAP mediante la instruccin CONNECT.

Contina en la pgina siguiente


200

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.77 ISignalGI - Solicita interrupciones de un grupo de seales digitales de entrada
Continuacin
Ejecucin de programas
En el momento en el que la seal de grupo cambia de valor, se realiza una llamada
a la rutina TRAP correspondiente. Una vez ejecutada la rutina, la ejecucin del
programa contina a partir del punto en el que se produjo la interrupcin.
Si la seal cambia de valor antes de la solicitud de la interrupcin, no se produce
ninguna interrupcin.
Al cambiar una seal de grupo de entradas digitales a un valor, pueden generarse
varias interrupciones. El motivo es que los cambios de los bits individuales incluidos
en la seal de grupo no se detectan simultneamente en el sistema de robot. Para
evitar la generacin de mltiples interrupciones para un solo cambio de seal de
grupo, es posible definir un tiempo de filtro para la seal.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
Se ha perdido el contacto con la unidad.
Limitaciones
El nmero mximo de seales que pueden usarse con un grupo determinado es
de 32.
No se posible usar una condicin con valor numrico en la instruccin para
especificar que debe producirse una interrupcin si el valor cambia a ese valor
especfico. Esta funcionalidad debe ser creada en el programa de usuario, mediante
la lectura del valor de la seal de grupo en el momento de la ejecucin de la rutina
TRAP.
Las interrupciones se generan como interrupciones de bits, es decir, las
interrupciones ante seales digitales de entrada individuales cambian dentro del
grupo. Si los bits de la seal de grupo cambian de valor con un retardo que est
dentro de los valores especificados, se generarn varias interrupciones. Es
necesario contar con conocimientos sobre cmo funciona la tarjeta de E/S, con el
fin de obtener la funcionalidad correcta al utilizar ISignalGI. Si se generan varias
interrupciones en los valores de entrada del grupo, utilice en su lugar ISignalDI
con una seal de muestreo que se activa cuando todos los bits de la seal de
grupo estn activados.
No es posible utilizar ms de una vez la identidad de la interrupcin sin eliminarla
previamente. Por tanto, las interrupciones deben tratarse de la forma mostrada,
con una de las alternativas siguientes.
VAR intnum sig1int;
PROC main ()
CONNECT sig1int WITH iroutine1;
ISignalGI gi1, sig1int;
WHILE TRUE DO
...
ENDWHILE
ENDPROC

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.77 ISignalGI - Solicita interrupciones de un grupo de seales digitales de entrada
Continuacin
Al principio del programa se produce la activacin de todas las interrupciones. En
este caso, las instrucciones iniciales se mantienen fuera del flujo principal del
programa.
VAR intnum sig1int;
PROC main ()
CONNECT sig1int WITH iroutine1;
ISignalGI gi1, sig1int;
...
IDelete sig1int;
ENDPROC

La interrupcin se elimina al final del programa y se activa de nuevo. En este caso,


es importante recordar que la interrupcin permanece inactiva durante un periodo
breve.
Sintaxis
ISignalGI
[ \ Single ] | [ \ SingleSafe ] ,
[ Signal := ] < variable (VAR) of signalgi > ,
[ Interrupt:= ] < variable (VAR) of intnum > ;

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Resumen de interrupciones

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Interrupciones

Interrupcin a partir de una seal de ISignalDI - Solicita interrupciones a partir de una seentrada
al digital de entrada en la pgina 194
Interrupcin a partir de seales de
salida de grupo

ISignalGO - Solicita interrupciones de un grupo de


seales digitales de salida en la pgina 203

Ms informacin sobre la gestin de Technical reference manual - RAPID overview, secinterrupciones


cin Caractersticas bsicas - Interrupciones
Identidad de interrupcin

intnum - Identidad de interrupcin en la pgina 1212

Tiempo de filtro

Manual de referencia tcnica - Parmetros del sistema, Tema IO, tipo Signal

202

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.78 ISignalGO - Solicita interrupciones de un grupo de seales digitales de salida

1.78 ISignalGO - Solicita interrupciones de un grupo de seales digitales de salida


Utilizacin
ISignalGO (Interrupt Signal Group Digital Out) se utiliza para solicitar y activar
interrupciones a partir de un grupo de seales digitales de salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ISignalGO.
Ejemplo 1
VAR intnum sig1int;
PROC main()
CONNECT sig1int WITH iroutine1;
ISignalGO go1,sig1int;

Solicita una interrupcin ante un cambio de valor de una seal de un grupo de


salidas digitales.
Argumentos
ISignalGO [ \Single ] | [ \SingleSafe ] Signal Interrupt

[ \Single ]
Tipo de dato: switch
Especifica si la interrupcin debe producirse una sola vez o de forma cclica.
Si se utiliza el argumento \Single, la interrupcin se produce como mximo una
sola vez. Si se omiten los argumentos Single y SingleSafe, se genera una
interrupcin cada vez que se cumpla la condicin.
[ \SingleSafe ]
Tipo de dato: switch
Especifica que la interrupcin es nica y segura. Para la definicin de nica,
consulte la descripcin del argumento Single. Una interrupcin segura no puede
ponerse en reposo con la instruccin ISleep. El evento de interrupcin segura
se almacena en la cola en caso de paro del programa y ejecucin paso a paso y
cuando se inicia de nuevo en el modo continuo, la interrupcin se ejecuta. El nico
momento en el que una interrupcin segura se desecha es cuando la cola de
interrupciones est llena. En este caso se genera un error. La interrupcin no
sobrevive al restablecimiento del programa, por ejemplo el traslado del PP a main.
Signal
Tipo de dato: signalgo
El nombre de la seal de salida de grupo a partir de la cual deben generarse las
interrupciones.
Interrupt
Tipo de dato: intnum
La identidad de la interrupcin. La interrupcin debe estar ya conectada a una
rutina TRAP mediante la instruccin CONNECT.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.78 ISignalGO - Solicita interrupciones de un grupo de seales digitales de salida
Continuacin
Ejecucin de programas
En el momento en el que la seal de grupo cambia de valor, se realiza una llamada
a la rutina TRAP correspondiente. Una vez ejecutada la rutina, la ejecucin del
programa contina a partir del punto en el que se produjo la interrupcin.
Si la seal cambia de valor antes de la solicitud de la interrupcin, no se produce
ninguna interrupcin.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
si se ha perdido el contacto con la unidad de E/S.
Limitaciones
El nmero mximo de seales que pueden usarse con un grupo determinado es
de 32.
No se posible usar una condicin con valor numrico en la instruccin para
especificar que debe producirse una interrupcin si el valor cambia a ese valor
especfico. Esta funcionalidad debe ser creada en el programa de usuario, mediante
la lectura del valor de la seal de grupo en el momento de la ejecucin de la rutina
TRAP.
No es posible utilizar ms de una vez la identidad de la interrupcin sin eliminarla
previamente. Por tanto, las interrupciones deben tratarse de la forma mostrada,
con una de las alternativas siguientes.
VAR intnum sig1int;
PROC main ()
CONNECT sig1int WITH iroutine1;
ISignalGO go1, sig1int;
WHILE TRUE DO
...
ENDWHILE
ENDPROC

Al principio del programa se produce la activacin de todas las interrupciones. En


este caso, las instrucciones iniciales se mantienen fuera del flujo principal del
programa.
VAR intnum sig1int;
PROC main ()
CONNECT sig1int WITH iroutine1;
ISignalGO go1, sig1int;
...
IDelete sig1int;
ENDPROC

La interrupcin se elimina al final del programa y se activa de nuevo. En este caso,


es importante recordar que la interrupcin permanece inactiva durante un periodo
breve.

Contina en la pgina siguiente


204

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.78 ISignalGO - Solicita interrupciones de un grupo de seales digitales de salida
Continuacin
Sintaxis
ISignalGO
[ \ Single ] | [ \ SingleSafe ] ,
[ Signal := ] < variable (VAR) of signalgo > ,
[ Interrupt:= ] < variable (VAR) of intnum > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Interrupciones

Interrupcin a partir de una seal de salida ISignalDO - Interrupciones a partir de una


seal digital de salida en la pgina 197
Interrupcin a partir de seales de entrada ISignalGI - Solicita interrupciones de un grupo
de grupo
de seales digitales de entrada en la pgina 200
Ms informacin sobre la gestin de interrup- Technical reference manual - RAPID overciones
view, seccin Caractersticas bsicas - Interrupciones
Identidad de interrupcin

intnum - Identidad de interrupcin en la pgina 1212

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.79 ISleep - Desactiva una interrupcin

1.79 ISleep - Desactiva una interrupcin


Utilizacin
ISleep(Interrupt Sleep) se utiliza para desactivar temporalmente una interrupcin
determinada.
Durante el periodo en el que una interrupcin est desactivada, su aparicin no
se detecta y se desecha, sin ejecutar ninguna rutina TRAP.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin.
Consulte tambin Ms ejemplos en la pgina 206.
Ejemplo 1
ISleep sig1int;

Se desactiva la interrupcin sig1int.


Argumentos
ISleep Interrupt

Interrupt
Tipo de dato: intnum
La variable (la identidad) de la interrupcin.
Ejecucin de programas
Cualquier interrupcin del tipo especificado que se genere despus de ejecutar
la instruccin se desecha sin ejecutar ninguna rutina TRAP, hasta que se reactive
la interrupcin mediante la instruccin IWatch. No se procesa ninguna interrupcin
generada mientras ISleep.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin ISleep.
Ejemplo 1
VAR intnum timeint;
PROC main()
CONNECT timeint WITH check_serialch;
ITimer 60, timeint;
...
ISleep timeint;
WriteBin ch1, buffer, 30;
IWatch timeint;
...
TRAP check_serialch
WriteBin ch1, buffer, 1;
IF ReadBin(ch1\Time:=5) < 0 THEN
TPWrite "The serial communication is broken";
EXIT;
ENDIF
ENDTRAP

Contina en la pgina siguiente


206

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.79 ISleep - Desactiva una interrupcin
Continuacin
Se monitoriza la comunicacin a travs del canal serie ch1, mediante interrupciones
generadas cada 60 segundos. La rutina TRAP comprueba si la comunicacin est
funcionando. Sin embargo, si hay una comunicacin en curso, no se permiten
estas interrupciones.
Gestin de errores
No se permite ninguna interrupcin que no se haya solicitado ni activado. Si se
desconoce el nmero de la interrupcin, la variable de sistema ERRNO cambiar
a ERR_UNKINO (consulte errnum - Nmero de error en la pgina 1194). Si se est
intentando desactivar temporalmente una interrupcin segura con ISleep, la
variable de sistema ERRNO cambia a ERR_INOISSAFE. Estos errores pueden ser
gestionados en un gestor de errores.
Sintaxis
ISleep
[ Interrupt := ] < variable (VAR) of intnum > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Interrupciones

Activacin de interrupciones

IWatch - Activar una interrupcin en la pgina 214

Desactivacin de todas las interrupcio- IDisable - Desactiva todas las interrupciones en


nes
la pgina 130
Cancelacin de una interrupcin

IDelete - Cancela una interrupcin en la pgina 129

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.80 ITimer - Solicita una interrupcin temporizada

1.80 ITimer - Solicita una interrupcin temporizada


Utilizacin
ITimer (Interrupt Timer) se utiliza para solicitar y activar una interrupcin
temporizada.
Por ejemplo, esta instruccin puede utilizarse para comprobar el estado de los
equipos perifricos una vez por minuto.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ITimer.
Consulte tambin Ms ejemplos en la pgina 209.
Ejemplo 1
VAR intnum timeint;
PROC main()
CONNECT timeint WITH iroutine1;
ITimer 60, timeint;

Solicita una interrupcin que debe producirse cclicamente cada 60 segundos. En


este caso, se realiza una llamada a la rutina TRAP iroutine1.
Ejemplo 2
ITimer \Single, 60, timeint;

Solicita una interrupcin que debe producirse una vez cada 60 segundos.
Argumentos
ITimer [ \Single ] | [ \SingleSafe ] Time Interrupt

[ \Single ]
Tipo de dato: switch
Especifica si la interrupcin debe producirse una sola vez o de forma cclica.
Si se utiliza el argumento Single, la interrupcin se produce una sola vez. Si se
omiten los argumentos Single y SingleSafe, se genera una interrupcin cada
vez que se alcanza el momento especificado.
[ \SingleSafe ]
Tipo de dato: switch
Especifica que la interrupcin es nica y segura. Para la definicin de nica,
consulte la descripcin del argumento Single. Una interrupcin segura no puede
ponerse en reposo con la instruccin ISleep. El evento de interrupcin segura
se almacena en la cola en caso de paro del programa y ejecucin paso a paso y
cuando se inicia de nuevo en el modo continuo, la interrupcin se ejecuta.
Time
Tipo de dato: num
La cantidad de tiempo que debe transcurrir antes de que se produzca la
interrupcin.

Contina en la pgina siguiente


208

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.80 ITimer - Solicita una interrupcin temporizada
Continuacin
El valor se especifica en segundos. Si se ha definido Single o SingleSafe, este
tiempo no puede ser inferior a los 0,01 segundos. El tiempo correspondiente para
las interrupciones cclicas es de 0,1 segundos.
Interrupt
Tipo de dato: intnum
La variable (la identidad) de la interrupcin. La interrupcin debe estar ya conectada
a una rutina TRAP mediante la instruccin CONNECT.
Ejecucin de programas
Se llama automticamente a la rutina TRAP correspondiente en un momento
determinado a partir de la solicitud de la interrupcin. Una vez ejecutada la rutina,
la ejecucin del programa contina a partir del punto en el que se produjo la
interrupcin.
Si la interrupcin se produce de forma cclica, comienza un nuevo clculo del
tiempo a partir del momento en que se produce.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin ITimer.
Ejemplo 1
VAR intnum timeint;
PROC main()
CONNECT timeint WITH check_serialch;
ITimer 60, timeint;
...
TRAP check_serialch
WriteBin ch1, buffer, 1;
IF ReadBin(ch1\Time:=5) < 0 THEN
TPWrite "The serial communication is broken";
EXIT;
ENDIF
ENDTRAP

Se monitoriza la comunicacin a travs del canal serie ch1, mediante interrupciones


generadas cada 60 segundos. La rutina TRAP comprueba si la comunicacin est
funcionando. Si no es as, la ejecucin del programa finaliza y aparece un mensaje
de error.
Limitaciones
No es posible utilizar ms de una vez la identidad de la interrupcin sin eliminarla
previamente. Consulte la instruccin ISignalDI.
Sintaxis
ITimer
[ \ Single ] | [ \ SingleSafe ] ,
[ Time := ] < expression (IN) of num >,
[ Interrupt := ] < variable (VAR) of intnum > ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.80 ITimer - Solicita una interrupcin temporizada
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Interrupciones

Ms informacin sobre la gestin de interrup- Technical reference manual - RAPID overciones


view, seccin Caractersticas bsicas - Interrupciones

210

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.81 IVarValue - Solicita una interrupcin a partir del valor de una variable

1.81 IVarValue - Solicita una interrupcin a partir del valor de una variable
Utilizacin
IVarValue (Interrupt Variable Value) se utiliza para solicitar y activar una
interrupcin cuando cambia al valor de una variable consultada a travs de la
interfaz serie de sensores.
Por ejemplo, esta instruccin puede utilizarse para obtener valores de volumen
de cordn o valores de huecos de un sistema de seguimiento de cordn.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IVarValue.
Ejemplo 1
LOCAL PERS num
adptVlt{25}:=[1,1.2,1.4,1.6,1.8,2,2.16667,2.33333,2.5,...];
LOCAL PERS num
adptWfd{25}:=[2,2.2,2.4,2.6,2.8,3,3.16667,3.33333,3.5,...];
LOCAL PERS num
adptSpd{25}:=10,12,14,16,18,20,21.6667,23.3333,25[,...];
LOCAL CONST num GAP_VARIABLE_NO:=11;
PERS num gap_value;
VAR intnum IntAdap;
PROC main()
! Setup the interrupt. The trap routine AdapTrp will be called
! when the gap variable with number GAP_VARIABLE_NO in the
!sensor interface has been changed. The new value will be
! available in the PERS gp_value variable.
! Connect to the sensor device "sen1:" (defined in sio.cfg).
SenDevice "sen1:";
CONNECT IntAdap WITH AdapTrp;
IVarValue "sen1:", GAP_VARIABLE_NO, gap_value, IntAdap;
! Start welding
ArcL\On,*,v100,adaptSm,adaptWd,adaptWv,z10,tool\j\Track:=track;
ArcL\On,*,v100,adaptSm,adaptWd,adaptWv,z10,tool\j\Track:=track;
ENDPROC

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.81 IVarValue - Solicita una interrupcin a partir del valor de una variable
Continuacin
TRAP AdapTrap
VAR num ArrInd;
!Scale the raw gap value received
ArrInd:=ArrIndx(gap_value);
! Update active welddata PERS variable adaptWd with new data
! from the arrays of predefined parameter arrays. The scaled gap
! value is used as index in the voltage, wirefeed and
! speed arrays.
adaptWd.weld_voltage:=adptVlt{ArrInd};
adaptWd.weld_wirefeed:=adptWfd{ArrInd};
adaptWd.weld_speed:=adptSpd{ArrInd};
!Request a refresh of AW parameters using the new data i adaptWd
ArcRefresh;
ENDTRAP

Argumentos
IVarValue device VarNo Value Interrupt [ \Unit ] [ \DeadBand ]

device
Tipo de dato: string
El nombre del dispositivo de E/S configurado en sio.cfg para el sensor utilizado.
VarNo
Tipo de dato: num
El nmero de la variable a controlar.
Value
Tipo de dato: num
Una variable PERS que contendr el nuevo valor de VarNo.
Interrupt
Tipo de dato: intnum
La variable (la identidad) de la interrupcin. La interrupcin debe estar ya conectada
a una rutina TRAP mediante la instruccin CONNECT.
[ \Unit ]
Tipo de dato: num
El factor de escala por el que se multiplicar el valor de sensor de VarNo antes
de la comprobacin y antes del guardado en Value.
[ \DeadBand ]
Tipo de dato: num
Si el valor de Varno devuelto por el sensor est dentro de +/- DeadBand, no se
genera ninguna interrupcin.

Contina en la pgina siguiente


212

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.81 IVarValue - Solicita una interrupcin a partir del valor de una variable
Continuacin
Ejecucin de programas
Se llama automticamente a la rutina TRAP correspondiente en un momento
determinado a partir de la solicitud de la interrupcin. Una vez ejecutada la rutina,
la ejecucin del programa contina a partir del punto en el que se produjo la
interrupcin.
Limitaciones
No es posible utilizar la misma variable para una identidad de interrupcin ms
de cinco veces sin eliminarla primero.
CUIDADO!
Una frecuencia de interrupcin demasiado elevada bloquear toda la ejecucin
de RAPID.
Sintaxis
IVarValue
[ device := ] < expression (IN) of string>,
[ VarNo := ] < expression (IN) of num >,
[ Value := ] < persistent (PERS) of num >,
[ Interrupt := ] < variable (VAR) of intnum > ,
[ \ Unit := ] < expression (IN) of num >,
[ \ DeadBand := ] < expression (IN) of num > ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Establecimiento de una conexin a un SenDevice - Establece una conexin a un disposidispositivo de sensor
tivo de sensor en la pgina 454
Resumen de interrupciones

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Interrupciones

Ms informacin sobre la gestin de


interrupciones

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Interrupciones

Optical Tracking

Application manual - Continuous application platform

Optical Tracking Art

Application manual - Arc and arc sensor

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.82 IWatch - Activar una interrupcin

1.82 IWatch - Activar una interrupcin


Utilizacin
IWatch(Interrupt Watch) se utiliza para activar una interrupcin que se ha solicitado
anteriormente pero que ha sido desactivada mediante ISleep.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IWatch.
Consulte tambin Ms ejemplos en la pgina 214.
Ejemplo 1
IWatch sig1int;

Se activa la interrupcin sig1int que fue desactivada anteriormente.


Argumentos
IWatch Interrupt

Interrupt
Tipo de dato: intnum
La variable (la identidad) de la interrupcin.
Ejecucin de programas
Vuelve a reactivar las interrupciones del tipo especificado. Sin embargo, las
interrupciones generadas durante el periodo en el que est vigente la instruccin
ISleep no se procesan.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin IWatch.
Ejemplo 1
VAR intnum sig1int;
PROC main()
CONNECT sig1int WITH iroutine1;
ISignalDI di1,1,sig1int;
...
ISleep sig1int;
weldpart1;
IWatch sig1int;

Durante la ejecucin de la rutina weldpart1, no se permite ninguna interrupcin


a partir de la seal di1.
Gestin de errores
No se permite utilizar con esta instruccin ninguna interrupcin que no se haya
solicitado anteriormente. Si se desconoce el nmero de la interrupcin, la variable
de sistema ERRNO cambia a ERR_UNKINO (consulte errnum - Nmero de error en
la pgina 1194). El error puede ser gestionado en el gestor de errores.

Contina en la pgina siguiente


214

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.82 IWatch - Activar una interrupcin
Continuacin
Sintaxis
IWatch
[ Interrupt := ] < variable (VAR) of intnum > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Interrupciones

Desactivacin de una interrupcin

ISleep - Desactiva una interrupcin en la pgina 206

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.83 Etiqueta - Nombre de lnea

1.83 Etiqueta - Nombre de lnea


Utilizacin
Labelse utiliza para asignar un nombre a una lnea del programa. Cuando se usa
la instruccin GOTO , este nombre puede usarse para trasladar la ejecucin del
programa a otro punto dentro de la misma rutina.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin Label.
Ejemplo 1
GOTO next;
...
next:

La ejecucin del programa contina en la instruccin que sigue a la etiqueta next.


Argumentos
Label:

Label
Identifier
El nombre que desea asignar a la lnea.
Ejecucin de programas
Cuando se ejecuta esta instruccin, no ocurre nada.
Limitaciones
La etiqueta no debe tener el mismo nombre que ninguno de los elementos
siguientes:

Cualquier otra etiqueta dentro de la misma rutina.

Cualquier nombre de dato dentro de la misma rutina

El uso de una etiqueta supone la ocultacin de los datos globales y las rutinas
que tengan el mismo nombre dentro de la rutina en la que se define.
Sintaxis
(EBNF)
<identifier>:

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Identificadores

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Elementos bsicos

Trasladar la ejecucin del programa a


una etiqueta

GOTO - Salta a otra instruccin en la pgina 123

216

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.84 Load - Carga un mdulo de programa durante la ejecucin

1.84 Load - Carga un mdulo de programa durante la ejecucin


Utilizacin
Load se utiliza para cargar un mdulo de programa en la memoria durante la
ejecucin.
El mdulo de programa cargado se aade a los mdulos que ya existen en la
memoria de programa.
Los programas o mdulos de sistema pueden cargarse en el modo esttico
(predeterminado) o en el modo dinmico.
Tanto los mdulos cargados en modo esttico como los cargados en modo
dinmico se descargan al utilizar la instruccin UnLoad.
Modo esttico
En la tabla siguiente se describe cmo afectan las distintas operaciones a los
programas o mdulos de sistema cargados en el modo esttico.
Tipo de mdulo

Trasladar el puntero de progra- Abrir un nuevo programa de


ma a main desde el FlexPendant RAPID

Mdulo de programa

No se ve afectado

Descargado

Mdulo de sistema

No se ve afectado

No se ve afectado

Modo dinmico
En la tabla siguiente se describe cmo afectan las distintas operaciones a los
programas o mdulos de sistema cargados en el modo dinmico.
Tipo de mdulo

Trasladar el puntero de progra- Abrir un nuevo programa de


ma a main desde el FlexPendant RAPID

Mdulo de programa Descargado

Descargado

Mdulo de sistema

Descargado

Descargado

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin Load.
Consulte tambin Ms ejemplos en la pgina 218.
Ejemplo 1
Load \Dynamic, diskhome \File:="PART_A.MOD";

Carga en la memoria de programa el mdulo PART_A.MOD, desde diskhome .


diskhome es una constante predefinida de cadena de caracteres con el contenido
""HOME:". Cargar el mdulo de programa en modo dinmico.
Ejemplo 2
Load \Dynamic, diskhome \File:="PART_A.MOD";
Load \Dynamic, diskhome \File:="PART_B.MOD" \CheckRef;

Carga el mdulo de programa PART_A.MOD en la memoria de programas y a


continuacin se carga PART_B.MOD. Si PART_A.MOD contiene referencias a
PART_B.MOD, puede usarse \CheckRef para comprobar si hay referencias no
resueltas slo cuando se carga el ltimo mdulo. Si se usa \CheckRef en
PART_A.MOD, se producira un error de enlace y el mdulo no se cargara.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.84 Load - Carga un mdulo de programa durante la ejecucin
Continuacin
Argumentos
Load [\Dynamic] FilePath [\File] [\CheckRef]

[\Dynamic]
Tipo de dato: switch
El modificador permite cargar un mdulo en modo dinmico. De lo contrario, la
carga se realiza en modo esttico.
FilePath
Tipo de dato: string
La ruta y el nombre del archivo que se cargar en la memoria de programa. El
nombre de archivo se excluye cuando se utiliza el argumento \File.
[\File]
Tipo de dato: string
Cuando se excluye el nombre del archivo en el argumento FilePath , es necesario
definirlo con este argumento.
[\CheckRef]
Tipo de dato: switch
Busca referencias no resueltas en la tarea de programa despus de la carga del
mdulo. Si no se usa, no se realiza ninguna bsqueda de referencias no resueltas.
Ejecucin de programas
La ejecucin del programa espera a que el mdulo de programa termine de cargarse
antes de continuar en la instruccin siguiente.
Las referencias no resueltas se aceptan siempre en la operacin de carga, si el
parmetro \CheckRef no se usa, pero se producir un error de tiempo de ejecucin
durante la ejecucin de las referencias no resueltas.
Una vez que el mdulo de programa queda cargado, se vincula e inicializa. La
inicializacin del mdulo cargado devuelve todas las variables del nivel de mdulo
a los valores de la unidad.
Si se produce algn error en la operacin de carga, incluidas las referencias no
resueltas si se usa el modificador \CheckRef, el mdulo cargado no estar ya
disponible en la memoria de programas.
Para conseguir una estructura de programa idnea, fcil de comprender y mantener,
todas las operaciones de carga y descarga de mdulos de programa deben hacerse
en el mdulo principal (main) que siempre est presente en la memoria de
programa durante la ejecucin.
Para la carga de un programa que contiene un procedimiento principal desde un
programa principal (que tiene su propio procedimiento principal), consulte Ms
ejemplos en la pgina 218 a continuacin.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin Load.
Ms ejemplos generales
Load \Dynamic, "HOME:/DOORDIR/DOOR1.MOD";

Contina en la pgina siguiente


218

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.84 Load - Carga un mdulo de programa durante la ejecucin
Continuacin
Carga el mdulo de programa DOOR1.MOD desde HOME: en el directorio DOORDIR
en la memoria de programa. Se carga el mdulo de programa en el modo dinmico.
Load "HOME:" \File:="DOORDIR/DOOR1.MOD";

Lo mismo que en el ejemplo anterior pero con otra sintaxis. El mdulo se carga
en el modo esttico.
Load\Dynamic, "HOME:/DOORDIR/DOOR1.MOD";
%"routine_x"%;
UnLoad "HOME:/DOORDIR/DOOR1.MOD";

El procedimiento routine_x se enlazar durante la ejecucin (enlazamiento en


tiempo de ejecucin).
El programa cargado contiene un procedimiento principal

Load_MoreExamples_1_xx0500002104

En el ejemplo anterior se muestra cmo es posible cargar un programa que incluye


un procedimiento main. Este programa puede haber sido desarrollado y probado
por separado para su carga posterior con Load o StartLoad... WaitLoad en
el sistema, a travs de un marco de trabajo del programa principal. En este ejemplo
se trata de car.prg, que carga los programas secundarios door.prg o
window.prg.
En el programa car.prg, se carga door.prg o window.prg, situados en "HOME:".
Dado que los procedimientos main de door.prg y window.prg se consideran
como locales (LOCAL) tras la carga del mdulo del sistema, las llamadas a los
procedimientos se realizan de la forma siguiente: %"door:main"% o %"window:
main"%. Esta sintaxis se utiliza cuando se desea tener acceso a los procedimientos
de tipo LOCAL de otros mdulos, en este ejemplo el procedimiento main del
mdulo door o del mdulo window.
La descarga de los mdulos con el argumento \Save har que los procedimientos
main sean de nuevo globales en el programa guardado.
Si tras la carga de los mdulos car o window se traslada el puntero de programa
a main desde cualquier parte del programa, el puntero de programa siempre se
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.84 Load - Carga un mdulo de programa durante la ejecucin
Continuacin
traslada al procedimiento main global del programa principal, en este ejemplo
car.prg.
Limitaciones
Evite tener movimientos en curso durante la carga.
Gestin de errores
Si no es posible encontrar el archivo especificado en la instruccin Load, la variable
de sistema ERRNO cambia a ERR_FILNOTFND en el momento de la ejecucin.
Si se produce otro tipo de problemas para leer el archivo a cargar, la variable de
sistema ERRNO cambia a ERR_IOERROR.
Si no es posible cargar el mdulo porque la memoria de programas est llena, la
variable de sistema ERRNO cambia a ERR_PRGMEMFULL.
Si el mdulo ya est cargado en la memoria de programa, la variable de sistema
ERRNO cambia a ERR_LOADED.
Si el mdulo cargado contiene errores de sintaxis, la variable de sistema ERRNO
cambia a ERR_SYNTAX.
Si el mdulo cargado da lugar a errores de enlace no recuperables, la variable de
sistema ERRNO cambia a ERR_LINKREF.
Si se usa Load con el modificador \CheckRef para buscar errores de referencia
y la memoria de programas contiene referencias no resueltas, la variable de sistema
ERRNO cambia a ERR_LINKREF.
Estos errores pueden ser gestionados en el gestor de ERROR. Si se produce alguno
de estos errores, el propio mdulo se descarga y no estar disponible en el gestor
de ERROR.
Sintaxis
Load
[\Dynamic,]
[FilePath:=]<expression (IN) of string>
[\File:= <expression (IN) of string>]
[\CheckRef];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descarga de un mdulo de programa

UnLoad - Descarga un mdulo de programa


durante la ejecucin en la pgina 701

Carga de mdulos de programa en paralelo StartLoad - Carga un mdulo de programa


con la ejecucin de otro programa
durante la ejecucin en la pgina 514
WaitLoad - Conecta el mdulo cargado a la
tarea en la pgina 729
Comprobar referencias de programa

CheckProgRef - Comprobar referencias de


programa en la pgina 39

220

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.85 LoadId - Identificacin de carga de la herramienta o la carga til

1.85 LoadId - Identificacin de carga de la herramienta o la carga til


Utilizacin
LoadId (Load Identification) puede usarse para la identificacin de la carga de
una herramienta (tambin de una herramienta de pinza si tiene un TCP fijo en el
espacio) o de una carga til (se activa con la instruccin GripLoad), mediante la
ejecucin de un programa de RAPID definido por el usuario.
Nota
Una forma ms fcil de identificar la carga de la herramienta o la carga til es
utilizar el programa de RAPID de dilogo interactivo LoadIdentify. Este
programa puede iniciarse desde el men ProgramEditor/Debug/Call
Service Rout./LoadIdentify.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin LoadId.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.85 LoadId - Identificacin de carga de la herramienta o la carga til
Continuacin
Consulte tambin Ms ejemplos en la pgina 225.
Ejemplo 1
VAR bool invalid_pos := TRUE;
VAR jointtarget joints;
VAR bool valid_joints{12};
CONST speeddata low_ori_speed := [20, 5, 20, 5];
VAR bool slow_test_flag := TRUE;
PERS tooldata grip3 := [ TRUE, [[97.4, 0, 223.1], [0.924, 0, 0.383
,0]], [0, [0, 0, 0], [1, 0, 0, 0], 0, 0, 0]];
! Check if valid robot type
IF ParIdRobValid(TOOL_LOAD_ID) <> ROB_LOAD_VAL THEN
EXIT;
ENDIF
! Check if valid robot position
WHILE invalid_pos = TRUE DO
joints := CJointT();
IF ParIdPosValid (TOOL_LOAD_ID, joints, valid_joints) = TRUE THEN
! Valid position
invalid_pos := FALSE;
ELSE
! Invalid position
! Adjust the position by program movements (horizontal tilt
house)
MoveAbsJ joints, low_ori_speed, fine, tool0;
ENDIF
ENDWHILE
! Do slow test for check of free working area
IF slow_test_flag = TRUE THEN
LoadId TOOL_LOAD_ID, MASS_WITH_AX3, grip3 \SlowTest;
ENDIF
! Do measurement and update all load data in grip3
LoadId TOOL_LOAD_ID, MASS_WITH_AX3, grip3;

Identificacin de la carga de la herramienta grip3.


Condicin
Las condiciones siguientes deben cumplirse antes de las mediciones de carga
con LoadId:

Asegrese de que todas las cargas estn montadas correctamente en el


robot.

Compruebe si el tipo de robot es vlido, con ayuda de ParIdRobValid

Compruebe si la posicin es vlida, con ayuda de ParIdPosValid:

Los ejes 3, 5 y 6 no deben estar cerca de su rea de trabajo


correspondiente.

Carcasa de inclinacin casi horizontal, es decir, con el eje 4 en la


posicin cero.

Es necesario definir los datos siguientes en los parmetros del sistema y en


los argumentos de LoadId antes de ejecutar LoadId

Contina en la pgina siguiente


222

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.85 LoadId - Identificacin de carga de la herramienta o la carga til
Continuacin
En la tabla siguiente se ilustra la identificacin de carga de la herramienta.
Modos de identificacin 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 mvil TCP mvil
TCP fijo
del TCP fijo
Carga del brazo superior
(parmetro del sistema)

Definido

Definido

Masa de la herramienta Definido

Definido

En la tabla siguiente se ilustra la identificacin de carga de la carga til.


Modos de identificacin Se conoce Se desconoce Se conoce Se desconoce
de carga / Datos defini- la masa del la masa del
la masa del la masa del
dos antes de LoadId
TCP mvil TCP mvil
TCP fijo
TCP fijo
Carga del brazo superior
(parmetros del sistema)

Definido

Datos de carga de la he- 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 redefinicin de velocidad:


-

Prueba lenta en el modo manual con velocidad reducida

Mediciones de carga en el modo automtico (o en el modo manual a


mxima velocidad) con una redefinicin de velocidad del 100%

Argumentos
LoadId ParIdType LoadIdType Tool [\PayLoad] [\WObj] [\ConfAngle]
[\SlowTest] [\Accuracy]

ParIdType
Tipo de dato: paridnum
Un tipo de identificacin de carga de los definidos en la tabla siguiente.
Valor

Constante simblica

Comentario

TOOL_LOAD_ID

Identificacin de la carga de la herramienta

PAY_LOAD_ID

Identificacin de la carga til (consulte la


instruccin GripLoad)

LoadIdType
Tipo de dato: loadidnum

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.85 LoadId - Identificacin de carga de la herramienta o la carga til
Continuacin
Un tipo de identificacin de carga de los definidos en la tabla siguiente.
Valor

Constante simblica

Comentario

MASS_KNOWN

Masa conocida de la herramienta o de la carga til


respectivamente. (Debe especificarse la masa de la
herramienta o la carga til especificada)

MASS_WITH_AX3

Masa de la herramienta o de la carga til desconocida


respectivamente. La identificacin de la masa de la
herramienta o la carga til se realiza con los movimientos del eje 3.

Tool
Tipo de dato: tooldata
Variable persistente de la herramienta que se desea identificar. Si se especifica
el argumento \PayLoad, la variable persistente de la herramienta en uso.
Para la identificacin de la carga de la herramienta, no deben especificarse los
argumentos \PayLoad ni \WObj .
[ \ PayLoad ]
Tipo de dato: loaddata
Variable persistente de la carga til que se desea identificar.
Este argumento opcional debe especificarse siempre para la identificacin de la
carga de una carga til.
[ \ WObj ]
Tipo de dato: wobjdata
Variable persistente del objeto de trabajo en uso.
Este argumento opcional debe especificarse siempre para la identificacin de la
carga de una carga til con un TCP fijo en el espacio.
[ \ ConfAngle ]
Tipo de dato: num
El argumento de opcin para la especificacin de un ngulo de configuracin
especfico grados para su uso en la identificacin de parmetros.

*)
*)

Identificacin de carga en la posicin


del eje 6 en otra configuracin
(se selecciona con ConfAngle)
ConfAngle positivo en grados
*) Medicin de movimientos en
distintas configuraciones del eje 6

Eje 6

Identificacin de carga de la posicin del eje


6 en el inicio (se verifica con ParIdPosValid)

xx0500002198_es

Si no se especifica este argumento, el valor predeterminado es +90 grados. Mn.


+ -30 grados. Valor ptimo + o -90 grados.
Contina en la pgina siguiente
224

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.85 LoadId - Identificacin de carga de la herramienta o la carga til
Continuacin
[ \ SlowTest ]
Tipo de dato: switch
Este argumento opcional permite especificar si debe realizarse una prueba lenta
para la comprobacin del rea de trabajo libre. Consulte la tabla siguiente:
LoadId ... \SlowTest

Realizar slo la prueba lenta

LoadId ...

Realizar slo la medicin y actualizar la herramienta o la


carga til

[ \ Accuracy ]
Tipo de dato: num
Una variable para la salida de la exactitud de medicin calculada en % para todo
el clculo de identificacin de la carga (el 100% significa la mxima exactitud).
Ejecucin de programas
El robot realizar un gran nmero de movimientos relativos pequeos de transporte
y medicin en los ejes 5 y 6. Para la identificacin de la masa, tambin se realizarn
movimientos con el eje 3.
Despus del conjunto de mediciones, movimientos y clculos de carga, los datos
de carga se devuelven en el argumento Tool o PayLoad. Se calculan los datos
de carga siguientes:

Masa en kg (si la masa es desconocida, de lo contrario no se ve afectado)

Centro de gravedad x, y, z y eje de momento

Inercia ix, iy, iz en kgm

Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin LoadId.
Ejemplo 1
PERS tooldata grip3 := [ FALSE, [[97.4, 0, 223.1], [0.924, 0, 0.383
,0]], [6, [10, 10, 100], [0.5, 0.5, 0.5, 0.5], 1.2, 2.7,
0.5]];
PERS loaddata piece5 := [ 5, [0, 0, 0], [1, 0, 0, 0], 0, 0, 0];
PERS wobjdata wobj2 := [ TRUE, TRUE, "", [ [34, 0, -45], [0.5,
-0.5, 0.5 ,-0.5] ], [ [0.56, 10, 68], [0.5, 0.5, 0.5 ,0.5] ]
];
VAR num load_accuracy;
! Do measurement and update all payload data except mass in piece5
LoadId PAY_LOAD_ID, MASS_KNOWN, grip3 \PayLoad:=piece5 \WObj:=wobj2
\Accuracy:=load_accuracy;
TPWrite " Load accuracy for piece5 (%) = " \Num:=load_accuracy;

Identificacin de carga de la carga til piece5 con una masa conocida en una
instalacin cuyo TCP est fijo en el espacio.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.85 LoadId - Identificacin de carga de la herramienta o la carga til
Continuacin
Limitaciones
Normalmente, la identificacin de la carga de la herramienta o de la carga til se
realiza con la rutina de servicio LoadIdentify. Tambin es posible realizar esta
identificacin con la instruccin de RAPID LoadId. Antes de cargar o ejecutar el
programa con LoadId, debe cargar los mdulos siguientes en el sistema:
Load \Dynamic, "RELEASE:/system/mockit.sys";
Load \Dynamic, "RELEASE:/system/mockit1.sys";

No es posible reiniciar los movimientos de identificacin de la carga despus de


ningn tipo de paro, como el paro programado, el paro de emergencia o la cada
de alimentacin. En este caso, los movimientos de identificacin de carga deben
iniciarse desde el principio.
Gestin de errores
Con cualquier error durante la ejecucin de la rutina de RAPID NOSTEPINLoadId,
la variable de sistema ERRNO cambia a ERR_PID_MOVESTOP, ERR_PID_RAISE_PP
o ERR_LOADID_FATAL y el puntero de programa es elevado hacia la llamada del
usuario a LoadId.
Sintaxis
LoadId
[ ParIdType ':=' ] <expression (IN) of paridnum> ',
[ LoadIdType ':=' ] <expression (IN) of loadidnum> ','
[ 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> ] ';'

Informacin relacionada
Para obtener ms informacin sobre Consulte
Programa predefinido Load Identify

Manual del operador - IRC5 con FlexPendant, seccin Programacin y pruebas

Tipo de identificacin de parmetro

paridnum - Tipo de identificacin de parmetro en


la pgina 1243

Resultado de ParIdRobValid

paridvalidnum - Resultado de ParIdRobValid en la


pgina 1245

Tipo de identificacin de carga

loadidnum - Tipo de identificacin de la carga en


la pgina 1225

Tipo de robot vlido

ParIdRobValid - Tipo de robot vlido para la identificacin de parmetros en la pgina 984

Posicin de robot vlida

ParIdPosValid - Posicin de robot vlida para la


identificacin de parmetros en la pgina 981

226

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.86 MakeDir - Crea un nuevo directorio

1.86 MakeDir - Crea un nuevo directorio


Utilizacin
MakeDir se utiliza para crear un nuevo directorio. El usuario debe tener permisos
de escritura y ejecucin del directorio principal debajo del cual se crear el nuevo
directorio.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MakeDir.
Ejemplo 1
MakeDir "HOME:/newdir";

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, especificado con una ruta completa o relativa.
Gestin de errores
Si no es posible crear el directorio, la variable de sistema ERRNO cambia a
ERR_FILEACC. A continuacin, este error puede ser gestionado en el gestor de
errores.
Sintaxis
MakeDir
[ Path:= ] < expression (IN) of string>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Eliminacin de un directorio

RemoveDir - Elimina un directorio en la pgina 377

Cambio del nombre de un archivo

RenameFile - Cambia el nombre de un archivo en la pgina 380

Eliminacin de un archivo

RemoveFile - Elimina un archivo en la pgina 379

Copia de un archivo

CopyFile - Copia un archivo en la pgina 69

Comprobacin del tipo del archivo

IsFile - Comprobar el tipo de un archivo en


la pgina 944

Comprobacin del tamao del archivo

FileSize - Obtiene el tamao de un archivo


en la pgina 903

Comprobacin del tamao del sistema de


archivos

FSSize - Obtiene el tamao de un sistema


de archivos en la pgina 910

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.87 ManLoadIdProc - Identificacin de carga de los manipuladores IRBP

1.87 ManLoadIdProc - Identificacin de carga de los manipuladores IRBP


Utilizacin
ManLoadIdProc (Manipulator Load Identification Procedure) se utiliza para la
identificacin de carga de la carga til de los manipuladores externos, mediante
la ejecucin de un programa de RAPID definido.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Nota
Una forma ms fcil de identificar la carga til es utilizar el programa de RAPID
de dilogo interactivo ManLoadIdentify. Este programa puede iniciarse desde
el men ProgramEditor/Debug/Call Routine.../ManLoadIdentify.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
ManLoadIdProc.
PERS loaddata myload := [6,[0,0,0],[1,0,0,0],0,0,0];
VAR bool defined;
ActUnit STN1;
ManLoadIdProc \ParIdType := IRBP_L
\MechUnit := STN1
\PayLoad := myload
\ConfigAngle := 60
\AlreadyActive
\DefinedFlag := defined;
DeactUnit STN1;

Identificacin de carga de la carga til myload montada sobre la unidad mecnica


STN1. El manipulador externo es del tipo IRBP-L. Se establece el ngulo de
configuracin en 60 grados. El manipulador se activa antes de la identificacin de
carga y se desactiva a continuacin. Tras la identificacin, myload se ha actualizado
y su definicin cambia a TRUE.
Argumentos
ManLoadIdProc [\ParIdType] [\MechUnit] | [\MechUnitName]
[\AxisNumber] [\PayLoad] [\ConfigAngle] [\DeactAll] |
[\AlreadyActive] [DefinedFlag] [DoExit]

[ \ ParIdType ]
Tipo de dato: paridnum
Tipo de identificacin de parmetro Las constantes predefinidas se encuentran
dentro del tipo de dato paridnum.
[ \ MechUnit ]
Tipo de dato: mecunit
La unidad mecnica utilizada para la identificacin de carga. No puede utilizarse
conjuntamente con el argumento \MechUnitName.
Contina en la pgina siguiente
228

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.87 ManLoadIdProc - Identificacin de carga de los manipuladores IRBP
Continuacin
[ \ MechUnitName ]
Tipo de dato: string
La unidad mecnica utilizada para la identificacin de carga, indicada como una
cadena. No puede utilizarse conjuntamente con el argumento \MechUnit.
[ \ AxisNumber ]
Tipo de dato: num
Dentro de la unidad mecnica, el nmero del eje que sostiene la carga que se
desea identificar.
[ \ PayLoad ]
Tipo de dato: loaddata
Variable de la carga til que se desea identificar. Es necesario especificar el
componente mass.
Esta variable se actualiza despus de la identificacin.
[ \ ConfigAngle ]
Tipo de dato: num
Especificacin de un ngulo de configuracin especfico grados para su uso en
la identificacin de parmetros.

*)

Identificacin de carga del eje


actual en otra configuracin
(se selecciona con Congle)

*)

ConfigAngle positivo en grados


*) Medicin de movimientos en distintas
configuraciones del eje actual
Posicin de identificacin de carga
del eje actual en el inicio

xx0500002197_es

Mn. + -30 grados. Valor ptimo + o -90 grados.


[ \ DeactAll ]
Tipo de dato: switch
Si se utiliza este modificador, todas las unidades mecnicas del sistema se
desactivarn antes de la realizacin de la identificacin. A continuacin, se activa
la unidad mecnica a identificar. No puede utilizarse conjuntamente con el
argumento \AlreadyActive.
[ \ AlreadyActive ]
Tipo de dato: switch
Este modificador se utiliza si la unidad mecnica a identificar est activa. No puede
utilizarse conjuntamente con el argumento \DeactAll.
[ \ DefinedFlag ]
Tipo de dato: bool
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.87 ManLoadIdProc - Identificacin de carga de los manipuladores IRBP
Continuacin
Este argumento tendr el valor TRUE si la identificacin ha sido realizada o FALSE
en caso contrario.
[ \ DoExit]
Tipo de dato: bool
Si tiene el valor TRUE, la identificacin de la carga terminar con un comando EXIT
para forzar al usuario a cambiar el PP a Main antes de continuar con la ejecucin.
Si no est presente o tiene el valor FALSE, no se ejecuta EXIT. Recuerde que
ManLoadIdProc siempre elimina la trayectoria actual.
Ejecucin de programas
Todos los argumentos son opcionales. Si no se indica un argumento, se solicitar
al usuario el valor a travs del FlexPendant (excepto \DoExit).
Siempre se pedir al usuario que indique la masa y, si el manipulador es del tipo
IRBP R, el valor de z en mm.
La unidad mecnica realizar un gran nmero de movimientos relativos pequeos
de transporte y medicin.
Despus del conjunto de mediciones, movimientos y clculos de carga, los datos
de carga se devuelven en el argumento Payload si se usa. Se calculan los datos
de carga siguientes.
Tipo de manipulador/datos de carga IRBP-K
calculados

IRBP-L
IRBP-C
IRBP_T

IRBP-R

IRBP-A
IRBP-B
IRBP-D

Parmetro PayLoad cog.x cog.y cog.x cog.y cog.x cog.y cog.x cog.y
cog.z
cog.x, cog.y, cog.z de loaddata en mm
Parmetro PayLoad - ix, iy, iz de
loaddata en kgm2

iz

iz

ix
iy
iz

ix
iy
iz

Los datos calculados se muestran en el FlexPendant.


Limitaciones
Normalmente, la identificacin de la carga del manipulador externo se realiza con
la rutina de servicio ManLoadIdentify. Tambin es posible realizar esta
identificacin con la instruccin de RAPID ManLoadIdProc.
Cualquier trayectoria en curso se borrar antes de la identificacin de la carga. El
puntero de programa se perder tras la identificacin de la carga si se usa el
argumento \DoExit:=TRUE.
No es posible reiniciar los movimientos de identificacin de la carga despus de
ningn tipo de paro, como el paro programado, el paro de emergencia o la cada
de alimentacin. Los movimientos de identificacin de carga deben reiniciarse de
nuevo desde el principio.

Contina en la pgina siguiente


230

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.87 ManLoadIdProc - Identificacin de carga de los manipuladores IRBP
Continuacin
Gestin de errores
Con cualquier error durante la ejecucin de la rutina NOSTEPIN de RAPID
ManLoadIdProc, la variable de sistema ERRNO cambia a ERR_PID_MOVESTOP,
ERR_PID_RAISE_PP, o ERR_LOADID_FATAL y el puntero de programa son elevados
hacia la llamada de usuario de ManLoadIdProc.
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> ] ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipo de identificacin de parmetro

paridnum - Tipo de identificacin de parmetro


en la pgina 1243

Unidad mecnica

mecunit - Unidad mecnica en la pgina 1227

Carga til

loaddata - Datos de carga en la pgina 1219

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.88 MechUnitLoad - Define una carga til para una unidad mecnica

1.88 MechUnitLoad - Define una carga til para una unidad mecnica
Utilizacin
MechUnitLoad se utiliza para definir una carga til para una unidad mecnica
externa. (La carga til del robot se define con la instruccin GripLoad.)
Esta instruccin debe usarse con todas las unidades mecnicas que tengan un
modelo dinmico en servo (posicionadores ABB, IRBP), para conseguir el mximo
rendimiento de los movimientos.
La instruccin MechUnitLoad debe ejecutarse siempre despus de ejecutar la
instruccin ActUnit.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Descripcin
MechUnitLoad especifica qu cargas son transportadas por la unidad mecnica.
Las cargas especificadas se utilizan para configurar un modelo dinmico de la
unidad mecnica que permita controlar de la mejor manera posible sus
movimientos.
La carga til se conecta y desconecta mediante la instruccin MechUnitLoad, lo
que suma o resta el peso de la carga til al peso de la unidad mecnica.
AVISO!
Es importante definir siempre la carga til real de la unidad mecnica (es decir,
accesorio y pieza de trabajo). Una definicin incorrecta de los datos de carga
puede dar lugar a la sobrecarga de la estructura mecnica.
Cuando se especifican datos de carga incorrectos, este hecho suele tener las
consecuencias siguientes:

La unidad mecnica no funcionar a su capacidad mxima

Peor exactitud de la trayectoria, con riesgo de sobrepasar posiciones

Riesgo de sobrecarga de la estructura mecnica

Contina en la pgina siguiente


232

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.88 MechUnitLoad - Define una carga til para una unidad mecnica
Continuacin
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
MechUnitLoad.
Figura
En la figura que aparece a continuacin se muestra el eje 1 de una unidad mecnica
con el nombre STN1 y del tipo IRBP L.

xx0500002142_en

Ejemplo 1
ActUnit SNT1;
MechUnitLoad STN1, 1, load0;

Se activa la unidad mecnica STN1 y se define la carga til load0 que corresponde
a ninguna carga (en absoluto) montada en el eje 1.
Ejemplo 2
ActUnit STN1;
MechUnitLoad STN1, 1, fixture1;

Se activa la unidad mecnica STN1 y se define la carga til fixture1 que


corresponde al accesorio montado en el eje 1.
Ejemplo 3
ActUnit STN1;
MechUnitLoad STN1, 1, workpiece1;

Se activa la unidad mecnica y se define la carga til STN1 que corresponde al


accesorio y a la pieza de trabajo workpiece1, montada en el eje 1.
Argumentos
MechUnitLoad MechUnit AxisNo Load

MechUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica.
AxisNo
Axis Number
Tipo de dato: num
El nmero del eje, dentro de la unidad mecnica, que sostiene la carga. La
numeracin de los ejes comienza en el nmero 1.
Load
Tipo de dato: loaddata
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.88 MechUnitLoad - Define una carga til para una unidad mecnica
Continuacin
El dato de carga que describe la carga til actual que se desea definir; es decir,
el accesorio o bien el accesorio junto con la pieza de trabajo, en funcin de si la
pieza de trabajo est montada en la unidad mecnica o no.
Ejecucin de programas
Despus de la ejecucin de MechUnitLoad, cuando los ejes del robot y los ejes
adicionales se han detenido, se define la carga especificada para la unidad
mecnica y el eje especificados. Esto significa que la carga til es controlada y
monitorizada por el sistema de control.
La carga til predeterminada en un arranque en fro para un tipo de unidad
mecnica determinada, es la carga til mxima predefinida para dicho tipo de
unidad mecnica.
Cuando se utiliza otra carga til, es necesario redefinir con esta instruccin la
carga til real de la unidad mecnica y del eje. Esto debe hacerse siempre despus
de la activacin de la unidad mecnica.
La carga til definida permanece definida despus de reanudaciones tras cadas
de alimentacin. La carga til definida tambin permanece vigente despus de
reanudar el programa tras la activacin manual de otras unidades mecnicas
mediante la pantalla de movimientos.
En el siguiente grfico se muestra una carga til montada en el elemento terminal
de una unidad mecnica (sistema de coordenadas de elemento terminal de la
unidad mecnica).

xx0500002143_en

Elemento terminal

Accesorio y pieza de trabajo

Centro de gravedad de la carga til (accesorio + pieza de trabajo)

Unidad mecnica

Contina en la pgina siguiente


234

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.88 MechUnitLoad - Define una carga til para una unidad mecnica
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin MechUnitLoad.
Figura
En la figura que aparece a continuacin se muestra una unidad mecnica con el
nombre INTERCH y el tipo IRBP K con tres ejes (1, 2 y 3).

xx0500002144_en

Ejemplo 1
MoveL homeside1, v1000, fine, gun1;
...
ActUnit INTERCH;

Se activa la totalidad de la unidad mecnica INTERCH .


Ejemplo 2
MechUnitLoad INTERCH, 2, workpiece1;

Define la carga til workpiece1 en el eje 2 de la unidad mecnica INTERCH.


Ejemplo 3
MechUnitLoad INTERCH, 3, workpiece2;

Define la carga til workpiece2 en el eje 3 de la unidad mecnica INTERCH.


Ejemplo 4
MoveL homeside2, v1000, fine, gun1;

Los ejes de la unidad mecnica INTERCH se mueven a la posicin de cambio


homeside2 con la carga til montada en los dos ejes 2 y 3.
Ejemplo 5
ActUnit STN1;
MechUnitLoad STN1, 1, workpiece1;

Se activa la unidad mecnica STN1. Define la carga til workpiece1 en el eje 1


de la unidad mecnica STN1.
Limitaciones
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.88 MechUnitLoad - Define una carga til para una unidad mecnica
Continuacin
MechUnitLoad no puede ejecutarse en rutinas de RAPID que estn conectadas
a los siguientes eventos especiales del sistema: PowerOn, Stop, QStop, Restart
o Step.
Sintaxis
MechUnitLoad
[MechUnit ':=' ] <variable (VAR) of mecunit> ','
[AxisNo ':=' ] <expression (IN) of num> ','
[Load ':=' ] <persistent (PERS) of loaddata> ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Identificacin de la carga til de las unida- Product manual - IRBP /D2009


des mecnicas externas
Definicin de datos de unidades mecni- mecunit - Unidad mecnica en la pgina 1227
cas
Definicin de datos de carga

loaddata - Datos de carga en la pgina 1219

Define la carga til del robot.

GripLoad - Define la carga til de un robot en la


pgina 125

236

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.89 MotionSup - Desactiva/activa la supervisin del movimiento

1.89 MotionSup - Desactiva/activa la supervisin del movimiento


Utilizacin
MotionSup (Motion Supervision) se utiliza para desactivar o activar la funcin de
supervisin del movimiento para los movimientos del robot durante la ejecucin
del programa.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Descripcin
Se conoce como supervisin de movimiento a un conjunto de funciones que
permiten supervisar el robot con una alta sensibilidad y con bases de coordenadas.
En la actualidad, contiene funcionalidad para supervisin de cargas, supervisin
de atascos y deteccin de colisiones. Dado que la supervisin se ha diseado de
forma que sea muy sensible, puede saltar si existen grandes fuerzas de proceso
que actan sobre el robot.
Si la carga no est definida correctamente, utilice la funcin de identificacin de
carga para especificarla. Si existen grandes fuerzas de proceso externas en la
mayor parte de la aplicacin, por ejemplo durante la eliminacin de rebabas, utilice
los parmetros del sistema para aumentar el nivel la supervisin de movimientos
hasta que deje de saltar. Sin embargo, si las fuerzas externas son slo temporales,
por ejemplo cuando se cierra una pistola de soldadora por puntos de gran tamao,
se debe utilizar la instruccin MotionSup para aumentar el nivel de supervisin
(o incluso desactivar la funcin) en las partes de la aplicacin sobre las que acta
esta alteracin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MotionSup.
Ejemplo 1
! If the motion supervision is active in the system parameters,
! then it is active by default during program execution
...
! If the motion supervision is deactivated through the system
! parameters,
! then it cannot be activated through the MotionSup instruction
...
! Deactivate motion supervision during program execution
MotionSup \Off;
...
! Activate motion supervision again during program execution
MotionSup \On;
...
! Tune the supervision level to 200% (makes the function less
! sensitive) of the level in
! the system parameters
MotionSup \On \TuneValue:= 200;
...

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.89 MotionSup - Desactiva/activa la supervisin del movimiento
Continuacin
Argumentos
MotionSup[\On] | [\Off] [\TuneValue]

[ \On ]
Tipo de dato: switch
Activacin de la funcin de supervisin del movimiento durante la ejecucin del
programa (si ya ha sido activada en los parmetros del sistema).
[ \Off ]
Tipo de dato: switch
Desactivacin de la funcin de supervisin del movimiento durante la ejecucin
del programa.
Es imprescindible especificar uno de los argumentos \On o \Off.
[ \TuneValue ]
Tipo de dato: num
Ajuste del nivel de sensibilidad de la supervisin de movimientos en porcentaje
(del 1% al 300%) del nivel de los parmetros del sistema. Un nivel superior
proporciona una sensibilidad ms robusta. Este argumento slo puede ser
combinado con el argumento \On.
Ejecucin de programas
Si la funcin de supervisin del movimiento est activada tanto en los parmetros
del sistema como en el programa de RAPID y se dispara la supervisin del
movimiento debido a una colisin:

El robot se detendr en el menor tiempo posible.

El robot retroceder para eliminar todas las fuerzas residuales.

La ejecucin del programa se detiene y se genera un mensaje de error.

Si la supervisin del movimiento est activada en los parmetros del sistema, est
tambin activada de forma predeterminada durante la ejecucin del programa
(TuneValue 100%). Estos valores se establecen automticamente en los casos
siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

Limitaciones
La supervisin 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. Al utilizar el robot
en el modo de servo suave, es posible que sea necesario desactivar la supervisin
del movimiento para evitar que salte accidentalmente.
Sintaxis
MotionSup
[ \ On] | [ \ Off ]
[\ Tunevalue:=< expression (IN) of num> ] ;

Contina en la pgina siguiente


238

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.89 MotionSup - Desactiva/activa la supervisin del movimiento
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin general de la funcin

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Supervisin del movimiento/deteccin de colisiones

Ajuste con los parmetros del sistema Manual de referencia tcnica - Parmetros del
sistema, seccin Motion - Motion Planner - Use
Motion Supervision

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.90 MoveAbsJ - Mueve el robot a una posicin de ejes absoluta

1.90 MoveAbsJ - Mueve el robot a una posicin de ejes absoluta


Utilizacin
MoveAbsJ (Move Absolute Joint) se utiliza para mover el robot hacia una posicin
absoluta definida en posiciones de ejes.
Ejemplos de uso:

El punto final es un punto singular.

Para posiciones ambiguas en el caso del IRB 6400C, por ejemplo para
movimientos con la herramienta situada sobre el robot.

La posicin final del robot durante un movimiento con MoveAbsJ no se ve afectada


por la herramienta, por el objeto de trabajo ni por el desplazamiento de programa.
Sin embargo, el robot utiliza estos datos para calcular la carga, la velocidad del
TCP y la trayectoria de esquina. Es posible usar las mismas herramientas en
instrucciones de movimiento adyacentes.
Los ejes del robot y los ejes externos se desplazan hasta la posicin de destino
a lo largo de una trayectoria no lineal. Todos los ejes alcanzan la posicin de
destino al mismo tiempo.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MoveAbsJ.
Consulte tambin Ms ejemplos en la pgina 243.
Ejemplo 1
MoveAbsJ p50, v1000, z50, tool2;

El robot que tiene montada la herramienta tool2 se mueve a lo largo de una


trayectoria no lineal hacia la posicin absoluta de ejes, p50, con los datos de
velocidad v1000 y los datos de zona z50.
Ejemplo 2
MoveAbsJ *, v1000\T:=5, fine, grip3;

El robot que tiene montada la herramienta grip3 se mueve siguiendo una


trayectoria lineal hasta un punto de paro que se almacena como una posicin
absoluta de ejes en la instruccin (se marca con *). Todo el movimiento requiere
5 segundos.
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. El argumento no se utiliza normalmente para acortar el tiempo de
Contina en la pgina siguiente
240

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.90 MoveAbsJ - Mueve el robot a una posicin de ejes absoluta
Continuacin
ciclo si, por ejemplo se realiza una comunicacin con equipos externos y no se
requiere sincronizacin.
Cuando se utiliza el argumento \Conc, el nmero de instrucciones de movimiento
seguidas est limitado a 5. En secciones de programa que incluyen
StorePath-RestoPath, no se permite el uso de instrucciones con el argumento
\Conc.
Si se omite este argumento y ToJointPos no es un punto de paro, la instruccin
siguiente se ejecuta algn tiempo antes de que el robot alcance la zona
programada.
Este argumento no puede usarse en los movimientos sincronizados coordinados
en un sistema MultiMove.
ToJointPos
To Joint Position
Tipo de dato: jointtarget
La posicin absoluta de destino de los ejes del robot y de los ejes externos Se
define como una posicin con nombre o se almacena directamente en la instruccin
(marcada con un asterisco * en la instruccin).
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
[ \NoEOffs ]
No External Offsets
Tipo de dato: switch
Si se utiliza el argumento \NoEOffs, el movimiento con MoveAbsJ no se ve
afectado por los offsets activos para los ejes externos.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, la reorientacin de la
misma 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 instruccin. A continuacin, se sustituye por la velocidad
correspondiente, especificada en los datos de velocidad.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.90 MoveAbsJ - Mueve el robot a una posicin de ejes absoluta
Continuacin
[ \T ]
Time
Tipo de dato: num
Este argumento se utiliza para especificar el tiempo total en segundos que dura
el movimiento del robot. A continuacin, se sustituye por los datos de velocidad
correspondientes.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
[ \Z ]
Zone
Tipo de dato: num
Este argumento se utiliza para especificar la exactitud de la posicin del TCP del
robot, directamente en la instruccin. La longitud de la trayectoria de esquina se
indica en mm y es sustituida por la zona correspondiente especificada en los datos
de zona.
[ \Inpos ]
In position
Tipo de dato: stoppointdata
Este argumento se utiliza para especificar los criterios de convergencia para la
posicin del TCP del robot en el punto de paro. Los datos de puntos de paro
sustituyen a la zona especificada en el parmetro Zone.
Tool
Tipo de dato: tooldata
La herramienta en uso durante el movimiento.
La posicin del TCP y la carga de la herramienta se definen en los datos de la
herramienta. La posicin 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. Sin
embargo, si el robot sostiene el objeto de trabajo, es decir, si la herramienta es
estacionaria, o si se utilizan ejes externos coordinados, es necesario especificar
este argumento.
En el caso de las herramientas estacionarias o los ejes externos coordinados, los
datos utilizados por el sistema para calcular la velocidad y la trayectoria de esquinas
del movimiento se definen en el objeto de trabajo.

Contina en la pgina siguiente


242

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.90 MoveAbsJ - Mueve el robot a una posicin de ejes absoluta
Continuacin
Ejecucin de programas
Los movimientos realizados con MoveAbsJ no se ven afectados por el
desplazamiento activo del programa. Adems, si se ejecutan con el modificador
\NoEOffs, no se utilizar ningn offset para los ejes externos. Si no se utiliza el
modificador \NoEOffs, los ejes externos del destino del movimiento se ven
afectados por el offset activo en los ejes externos.
La herramienta se traslada a la posicin absoluta de destino de los ejes, con
interpolacin de los ngulos de los ejes. 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, lo que da lugar a una trayectoria no lineal.
En trminos generales, el TCP se mueve a una velocidad aproximada a la
programada. La herramienta se reorienta y los ejes externos se mueven al mismo
tiempo que se mueve el TCP. Si no es posible alcanzar la velocidad programada
para la orientacin o para los ejes externos, se reduce la velocidad del TCP.
Normalmente se generan trayectorias de esquina cuando se transfiere el
movimiento a la siguiente seccin de la trayectoria. Si se especifica un punto de
paro en los datos de zona, la ejecucin del programa slo contina una vez que
los ejes del robot y los ejes externos han alcanzado la posicin de ejes adecuada.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin MoveAbsJ.
Ejemplo 1
MoveAbsJ *, v2000\V:=2200, z40 \Z:=45, grip3;

La herramienta, grip3, se mueve siguiendo una trayectoria no lineal hasta una


posicin absoluta de ejes almacenada en la instruccin. El movimiento se realiza
con los datos establecidos en v2000 y z40. La velocidad y el tamao de la zona
del TCP son de 2200 mm/s y 45 mm respectivamente.
Ejemplo 2
MoveAbsJ p5, v2000, fine \Inpos := inpos50, grip3;

La herramienta, grip3, se mueve siguiendo una trayectoria no lineal hasta la


posicin absoluta de ejes p5. El robot considera que se encuentra en el punto
cuando se satisface el 50% de la condicin de posicin y el 50% de la condicin
de velocidad de un punto de paro fine. Espera al menos 2 segundos a que se
satisfagan las condiciones. Consulte los datos predefinidos inpos50 del tipo de
dato stoppointdata.
Ejemplo 3
MoveAbsJ \Conc, *, v2000, z40, grip3;

La herramienta, grip3, se mueve siguiendo una trayectoria no lineal hasta una


posicin absoluta de ejes almacenada en la instruccin. Las instrucciones lgicas
posteriores se ejecutan mientras el robot est en movimiento.
Ejemplo 4
MoveAbsJ \Conc, * \NoEOffs, v2000, z40, grip3;

El mismo movimiento que el anterior, pero con la diferencia de que no se ve


afectado por los offsets activos para los ejes externos.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.90 MoveAbsJ - Mueve el robot a una posicin de ejes absoluta
Continuacin
Ejemplo 5
GripLoad obj_mass;
MoveAbsJ start, v2000, z40, grip3 \WObj:= obj;

El robot mueve el objeto de trabajo obj respecto de la herramienta fija grip3,


siguiendo una trayectoria no lineal hasta una posicin absoluta de ejes, start.
Limitaciones
Para poder ejecutar hacia atrs la instruccin MoveAbsJ y evitar problemas con
puntos singulares o reas ambiguas, resulta esencial que las instrucciones
posteriores cumplan determinados requisitos, como se indica a continuacin
(consulte la figura siguiente).
La figura muestra la limitacin para la ejecucin hacia atrs con MoveAbsJ.
Punto singular

MoveJ

MoveAbsJ

rea ambigua

MoveAbsJ

Cualquier instruccin Move

MoveAbsJ

xx0500002201_es

Sintaxis
MoveAbsJ
[ \ Conc , ]
[ ToJointPos := ] < expression (IN) of jointtarget >
[ \ ID := < expression (IN) of identno >]
[ \ NoEoffs ] ,
[ Speed := ] < expression (IN) of speeddata >
[ \ V := < expression (IN) of num > ]
| [ \ T := < expression (IN) of num > ] ,
[Zone := ] < expression (IN) of zonedata>
[\ Z := ] < expression (IN) of num >
[ \ Inpos := < expression (IN) of stoppointdata > ] ,
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj := < persistent (PERS) of wobjdata > ] ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Otras instrucciones de posicionamiento Technical reference manual - RAPID overview,
seccin Resumen sobre RAPID - Movimiento
Definicin de jointtarget

jointtarget - Datos de posicin de eje en la pgina 1216

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Contina en la pgina siguiente


244

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.90 MoveAbsJ - Mueve el robot a una posicin de ejes absoluta
Continuacin
Para obtener ms informacin sobre Consulte
Definicin de datos de punto de paro

stoppointdata - Datos de punto de paro en la pgina 1280

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Movimiento en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S

Ejecucin simultnea de programas

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sincronizacin con instrucciones lgicas

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.91 MoveC - Mueve el robot en crculo

1.91 MoveC - Mueve el robot en crculo


Utilizacin
MoveC se utiliza para trasladar el punto central de la herramienta (TCP) en sentido
circular hacia un punto de destino determinado. Durante el movimiento, la
orientacin suele permanecer sin cambios respecto del crculo.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MoveC.
Consulte tambin Ms ejemplos en la pgina 250.
Ejemplo 1
MoveC p1, p2, v500, z30, tool2;

El TCP de la herramienta, tool2, se mueve en crculo hacia la posicin p2 con


los datos de velocidad v500 y los datos de zona z30. El crculo se define a partir
de la posicin inicial, el punto de crculo p1 y el punto de destino p2.
Ejemplo 2
MoveC *, *, v500 \T:=5, fine, grip3;

El TCP de la herramienta, grip3, se mueve en crculo hasta un punto fino


almacenado en la instruccin (marcado por el segundo asterisco *). El punto del
crculo tambin est almacenado en la instruccin (marcado por el primer asterisco
*). Todo el movimiento requiere 5 segundos.
Ejemplo 3
MoveL p1, v500, fine, tool1;
MoveC p2, p3, v500, z20, tool1;
MoveC p4, p1, v500, fine, tool1;

La figura muestra cmo se realiza un crculo completo mediante dos instrucciones


MoveC .

xx0500002212

Contina en la pgina siguiente


246

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.91 MoveC - Mueve el robot en crculo
Continuacin
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. Este argumento no se utiliza normalmente, pero puede utilizarse para
evitar los paros no deseados, causados por la sobrecarga de la CPU al utilizar
puntos de paso. Esto resulta til cuando los puntos programados estn muy
cercanos entre s y se trabaja a velocidades elevadas. Este argumento tambin
resulta til si, por ejemplo, no se requiere la comunicacin con equipos externos
ni la sincronizacin entre los equipos externos y los movimientos del robot.
Cuando se utiliza el argumento \Conc, el nmero de instrucciones de movimiento
seguidas est limitado a 5. En secciones de programa que incluyen
StorePath-RestoPath, no se permite el uso de instrucciones con el argumento
\Conc.
Si se omite este argumento y ToPoint no es un punto de paro, la instruccin
siguiente se ejecuta algn tiempo antes de que el robot alcance la zona
programada.
Este argumento no puede usarse en los movimientos sincronizados coordinados
en un sistema MultiMove.
CirPoint
Tipo de dato:robtarget
El punto de crculo del robot. El punto de crculo es una posicin del crculo entre
el punto de inicio y el punto de destino. Para conseguir la mxima exactitud, debe
estar situado a mitad de camino entre los puntos inicial y de destino. Si lo sita
demasiado cerca del punto de inicio o del punto de destino, es posible que el robot
genere una advertencia. El punto de crculo se define como una posicin con
nombre o se almacena directamente en la instruccin (marcada con un asterisco
* en la instruccin). No se utiliza la posicin de los ejes externos.
ToPoint
Tipo de dato:robtarget
El punto de destino de los ejes del robot y de los ejes externos. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).
[ \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 ningn otro caso.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.91 MoveC - Mueve el robot en crculo
Continuacin
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del TCP, la reorientacin 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 instruccin. A continuacin, se sustituye por la velocidad
correspondiente, 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 y de los ejes externos. A continuacin, se sustituye por
los datos de velocidad correspondientes.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
[ \Z ]
Zone
Tipo de dato: num
Este argumento se utiliza para especificar la exactitud de la posicin del TCP del
robot, directamente en la instruccin. La longitud de la trayectoria de esquina se
indica en mm y es sustituida por la zona correspondiente especificada en los datos
de zona.
[ \Inpos ]
In position
Tipo de dato: stoppointdata
Este argumento se utiliza para especificar los criterios de convergencia para la
posicin del TCP del robot en el punto de paro. Los datos de puntos de paro
sustituyen a la zona especificada en el parmetro Zone .
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.
Contina en la pgina siguiente
248

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.91 MoveC - Mueve el robot en crculo
Continuacin
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas de objeto) con el que est relacionada
la posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si por otro lado se usa un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento para que se ejecute un
crculo respecto del objeto de trabajo.
[ \Corr ]
Correction
Tipo de dato: switch
Los datos de correccin escritos en una entrada de correccin mediante una
instruccin CorrWrite se aaden a la trayectoria y a la posicin de destino si se
utiliza este argumento.
Ejecucin 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 crculo a una velocidad constante


programada.

La herramienta se reorienta a una velocidad constante, desde la orientacin


de la posicin inicial hasta la orientacin del punto de destino.

La reorientacin se realiza respecto de la trayectoria circular. Por tanto, si


la orientacin respecto de la trayectoria es la misma en los puntos inicial y
final, la orientacin relativa permanece sin cambios durante el movimiento
(consulte la figura siguiente).

La figura muestra la orientacin de la herramienta durante un movimiento circular.


CirPoint
Orientacin
de la herramienta

Punto de inicio

ToPoint

xx0500002214_es

La orientacin del punto circular no se alcanza. Slo se usa para distinguir entre
dos sentidos de orientacin posibles. La exactitud de la reorientacin a lo largo
de la trayectoria slo depende de la orientacin en los puntos inicial y de destino.
Los distintos modos de orientacin de la herramienta durante una trayectoria
circular se describen en la instruccin CirPathMode.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.91 MoveC - Mueve el robot en crculo
Continuacin
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. No se utiliza
la posicin de la posicin de crculo.
Si no es posible alcanzar la velocidad programada para la reorientacin o para los
ejes externos, se reduce la velocidad del TCP.
Normalmente se general trayectorias de esquina cuando se transfiere el movimiento
a la siguiente seccin de una trayectoria. Si se especifica un punto de paro en los
datos de zona, la ejecucin del programa slo contina una vez que los ejes del
robot y los ejes externos han alcanzado la posicin adecuada.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin MoveC.
Ejemplo 1
MoveC *, *, v500 \V:=550, z40 \Z:=45, grip3;

El TCP de la herramienta, grip3, se mueve en crculo hacia una posicin


almacenada en la instruccin. El movimiento se realiza con los datos establecidos
en v500 y z40. La velocidad y el tamao de zona del TCP son 550 mm/s y 45
mm, respectivamente.
Ejemplo 2
MoveC p5, p6, v2000, fine \Inpos := inpos50, grip3;

El TCP de la herramienta, grip3, se mueve en crculo hacia un punto de paro p6.


El robot considera que se encuentra en el punto cuando se satisface el 50% de la
condicin de posicin y el 50% de la condicin de velocidad de un punto de paro
fine. Espera al menos 2 segundos a que se satisfagan las condiciones. Consulte
los datos predefinidos inpos50 del tipo de dato stoppointdata..
Ejemplo 3
MoveC \Conc, *, *, v500, z40, grip3;

El TCP de la herramienta, grip3, se mueve en crculo hacia una posicin


almacenada en la instruccin. El punto del crculo tambin est almacenado en la
instruccin. Las instrucciones lgicas posteriores se ejecutan mientras el robot
est en movimiento.
Ejemplo 4
MoveC cir1, p15, v500, z40, grip3 \WObj:=fixture;

El TCP de la herramienta, grip3, se mueve en crculo hacia una posicin, p15, a


travs del punto de crculo cir1. Estas posiciones se especifican en el sistema
de coordenadas de objeto de fixture.

Contina en la pgina siguiente


250

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.91 MoveC - Mueve el robot en crculo
Continuacin
Limitaciones
Existen algunas limitaciones en cuanto a las posibilidades de posicionamiento de
CirPoint y ToPoint, como se muestra en la figura siguiente.

CirPoint

0.1 mm

CirPoint

start

x ToPoint

inicio ToPoint

0.1 mm

start

a
a > 1 grado

x CirPoint
x

ToPoint

xx0500002213_es

La distancia mnima entre el punto de inicio y ToPoint es de 0,1 mm.

La distancia mnima entre el punto de inicio y CirPoint es de 0,1 mm.

El ngulo mnimo entre CirPoint y ToPoint a partir del punto de inicio es


de 1 grado.

La exactitud puede ser baja cerca de los lmites, es decir, si el punto de inicio y el
punto ToPoint del crculo estn muy cerca el uno del otro, el error causado por
la inclinacin del crculo puede ser mucho mayor que la exactitud con la que se
programaron los puntos.
Asegrese de que el robot pueda alcanzar el punto de crculo durante la ejecucin
del programa y dividir el segmento del crculo si es necesario.
Los cambios del modo de ejecucin de la ejecucin hacia adelante a la ejecucin
hacia atrs, o viceversa, mientras el robot se detiene en una trayectoria circular
no se permiten y generan un mensaje de error.
AVISO!
La instruccin MoveC (o cualquier otra instruccin que incluya un movimiento
circular) no debe empezarse en ningn caso desde el principio, con un TCP
entre el punto de crculo y el punto final. De lo contrario, el robot no toma la
trayectoria programada (posicionamiento alrededor de la trayectoria circular en
otra direccin, en comparacin con la programada).
Para reducir al mnimo el riesgo, cambie el valor del parmetro de sistema Restrict
placing of circlepoints a TRUE (tipo Motion Planner, tema Motion). Este parmetro
aade una supervisin en el sentido de que la trayectoria circular no gire ms
de 240 grados y que el punto de crculo est situado en la parte central de la
trayectoria circular.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.91 MoveC - Mueve el robot en crculo
Continuacin
Sintaxis
MoveC
[ \ Conc , ]
[ CirPoint := ] < expression (IN) of robtarget> ,
[ ToPoint := ] < expression (IN) of robtarget> ,
[ \ ID := < expression (IN) of identno>],
[ Speed := ] < expression (IN) of speeddata>
[ \ V := < expression (IN) of num> ]
[ \ T := < expression (IN) of num> ] ,
[Zone := ] < expression (IN) of zonedata>
[ \ Z := < expression (IN) of num> ]
[ \ Inpos := < expression (IN) of stoppointdata> ] ,
[ Tool := ] < persistent (PERS) of tooldata>
[ \ WObj := < persistent (PERS) of wobjdata> ]
[ \ Corr ];

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Otras instrucciones de posiciona- Technical reference manual - RAPID overview, seccin
miento
Resumen sobre RAPID - Movimiento
Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Definicin de datos de punto de stoppointdata - Datos de punto de paro en la pgina 1280


paro
Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo wobjdata - Datos del objeto de trabajo en la pgina 1323
Escritura en una entrada de co- CorrWrite - Escribe en un generador de correcciones en
rreccin
la pgina 81
Reorientacin de la herramienta CirPathMode - Reorientacin de la herramienta durante
durante trayectorias circulares trayectorias circulares en la pgina 40
Movimiento en general

Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S

Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S - Sistemas de coordenadas

Ejecucin simultnea de progra- Technical reference manual - RAPID overview, seccin


mas
Principios de movimiento y E/S - Sincronizacin con
instrucciones lgicas
Parmetros del sistema

Manual de referencia tcnica - Parmetros del sistema

252

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.92 MoveCDO - Mueve el robot en una trayectoria circular y establece una salida digital en la esquina

1.92 MoveCDO - Mueve el robot en una trayectoria circular y establece una salida
digital en la esquina
Utilizacin
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. Durante el movimiento, la orientacin suele
permanecer sin cambios respecto del crculo.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MoveCDO.
Ejemplo 1
MoveCDO p1, p2, v500, z30, tool2, do1,1;

El TCP de la herramienta, tool2, se mueve en crculo hacia la posicin p2 con


los datos de velocidad v500 y los datos de zona z30. El crculo se define a partir
de la posicin inicial, el punto de crculo p1 y el punto de destino p2. La salida
do1 se activa en el centro de la trayectoria de esquina de p2.
Argumentos
MoveCDO CirPoint ToPoint [\ID] Speed [\T] Zone Tool [\WObj] Signal
Value

CirPoint
Tipo de dato:robtarget
El punto de crculo del robot. El punto de crculo es una posicin del crculo entre
el punto de inicio y el punto de destino. Para conseguir la mxima exactitud, debe
estar situado a mitad de camino entre los puntos inicial y de destino. Si lo sita
demasiado cerca del punto de inicio o del punto de destino, es posible que el robot
genere una advertencia. El punto de crculo se define como una posicin con
nombre o se almacena directamente en la instruccin (marcada con un asterisco
* en la instruccin). No se utiliza la posicin de los ejes externos.
ToPoint
Tipo de dato:robtarget
El punto de destino de los ejes del robot y de los ejes externos. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).
[ \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 ningn otro caso.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.92 MoveCDO - Mueve el robot en una trayectoria circular y establece una salida digital en la esquina
Continuacin
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del TCP, la reorientacin de la herramienta y 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 y de los ejes externos. A continuacin, se sustituye por
los datos de velocidad correspondientes.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
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.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas de objeto) con el que est relacionada
la posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si por otro lado se usa un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento para que se ejecute un
crculo respecto del objeto de trabajo.
Signal
Tipo de dato: signaldo
El nombre de la seal digital de salida que debe cambiar de valor.
Value
Tipo de dato: dionum
El valor deseado para la seal (0 1).
Ejecucin de programas
Consulte la instruccin MoveC para obtener ms informacin acerca del movimiento
circular.

Contina en la pgina siguiente


254

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.92 MoveCDO - Mueve el robot en una trayectoria circular y establece una salida digital en la esquina
Continuacin
La seal 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.
La figura muestra la activacin/desactivacin de una seal digital de salida en la
trayectoria de esquina con MoveCDO.

CirPoint

Punto de inicio
Activar/desactivar la seal

Punto siguiente
ToPoint
Zone
xx0500002215_es

En el caso de los puntos de paro, recomendamos el uso de una secuencia de


programa normal, con el uso de MoveC + SetDO. Sin embargo, cuando se utiliza
un punto de paro en la instruccin MoveCDO, la seal digital de salida se activa o
desactiva cuando el robot alcanza el punto de paro.
La seal de E/S especificada se activa o desactiva en el modo de ejecucin continua
y paso a paso hacia adelante, pero no en la ejecucin paso a paso hacia atrs.
Limitaciones
Limitaciones generales acorde con la instruccin MoveC.
Sintaxis
MoveCDO
[ CirPoint := ] < expression (IN) of robtarget > ,
[ ToPoint := ] < expression (IN) of robtarget > ,
[ \ ID := < expression (IN) of identno >],
[ Speed := ] < expression (IN) of speeddata >
[ \ T := < expression (IN) of num > ] ,
[ Zone := ] < expression (IN) of zonedata > ,
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj := < persistent (PERS) of wobjdata > ] ,
[ Signal := ] < variable (VAR) of signaldo > ] ,
[ Value := ] < expression (IN) of dionum > ] ;

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Otras instrucciones de posicionamiento

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Movimiento

Movimiento del robot en crculo

MoveC - Mueve el robot en crculo en la pgina 246

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.92 MoveCDO - Mueve el robot en una trayectoria circular y establece una salida digital en la esquina
Continuacin
Para obtener ms informacin so- Consulte
bre
Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina1323

Movimiento en general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S

Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Sistemas de
coordenadas

Movimientos con parmetros de E/S Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Sincronizacin
con instrucciones lgicas

256

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.93 MoveCSync - Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID

1.93 MoveCSync - Mueve el robot en una trayectoria circular y ejecuta un


procedimiento de RAPID
Utilizacin
MoveCSync (Move Circular Synchronously) se utiliza para trasladar el punto central
de la herramienta (TCP) en sentido circular hacia un punto de destino determinado.
En el centro de la trayectoria de esquina del punto de destino, se ordena la
ejecucin del procedimiento de RAPID especificado. Durante el movimiento, la
orientacin suele permanecer sin cambios respecto del crculo.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MoveCSync.
Ejemplo 1
MoveCSync p1, p2, v500, z30, tool2, "proc1";

El TCP de la herramienta, tool2, se mueve en crculo hacia la posicin p2 con


los datos de velocidad v500 y los datos de zona z30. El crculo se define a partir
de la posicin inicial, el punto de crculo p1 y el punto de destino p2. El
procedimiento proc1 se ejecuta en el centro de la trayectoria de esquina de p2.
Ejemplo 2
MoveCSync p1, p2, v500, z30, tool2, "MyModule:proc1";

Igual que en el ejemplo 1 anterior, pero en este caso el procedimiento declarado


localmente proc1 del mdulo MyModule ser llamado en medio de la trayectoria
de esquina.
Argumentos
MoveCSync CirPoint ToPoint [\ID] Speed [\T] Zone Tool [\WObj]
ProcName

CirPoint
Tipo de dato:robtarget
El punto de crculo del robot. El punto de crculo es una posicin del crculo entre
el punto de inicio y el punto de destino. Para conseguir la mxima exactitud, debe
estar situado a mitad de camino entre los puntos inicial y de destino. Si lo sita
demasiado cerca del punto de inicio o del punto de destino, es posible que el robot
genere una advertencia. El punto de crculo se define como una posicin con
nombre o se almacena directamente en la instruccin (marcada con un asterisco
* en la instruccin). No se utiliza la posicin de los ejes externos.
ToPoint
Tipo de dato:robtarget
El punto de destino de los ejes del robot y de los ejes externos. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.93 MoveCSync - Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID
Continuacin
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del TCP, la reorientacin de la herramienta y 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 y de los ejes externos. A continuacin, se sustituye por
los datos de velocidad correspondientes.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
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.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas de objeto) con el que est relacionada
la posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si, por otro lado, se utiliza un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento.
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.
El procedimiento se ejecutar en el nivel de rutina TRAP (consulte Ejecucin de
programas ms abajo).
Contina en la pgina siguiente
258

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.93 MoveCSync - Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID
Continuacin
Ejecucin de programas
Consulte la instruccin MoveC para obtener ms informacin acerca de los
movimientos circulares.
El procedimiento de RAPID especificado se ejecuta cuando el TCP alcanza el
centro de la trayectoria de esquina del punto de destino de la instruccin
MoveCSync, como se muestra en la figura siguiente.
La figura muestra el orden de ejecucin del procedimiento de RAPID definido por
el usuario al llegar al centro de la trayectoria de esquina.
MoveCSync p2, p3, v1000, z30, tool2, my_proc;
Cuando el TCP se encuentra aqu,
se ejecuta my_proc

Zone

xx0500002216_es

En el caso de los puntos de paro, recomendamos el uso de una secuencia de


programa normal, con el uso de MoveC y otras instrucciones de RAPID una tras
otra.
En la tabla se describe la ejecucin del procedimiento de RAPID especificado, con
distintos modos de ejecucin:
Modo de ejecucin

Ejecucin del procedimiento de RAPID

Continuous o Cycle

De acuerdo con esta descripcin

Paso hacia delante

En el punto de paro

Paso hacia atrs

Ninguno en absoluto

MoveCSync es una encapsulacin de las instrucciones TriggInt y TriggC. La


llamada al procedimiento se ejecuta en el nivel de rutina TRAP.
Si el centro de la trayectoria de esquina del punto de destino se alcanza durante
la deceleracin posterior a un paro de programa, no se realizar la llamada al
procedimiento (la ejecucin del programa se para). La llamada al procedimiento
se ejecuta en el siguiente inicio de programa.
Limitacin
Limitaciones generales acorde con la instruccin MoveC.
Cuando el robot alcanza el centro de la trayectoria de esquina, existe normalmente
un retardo de 2 a 30 ms hasta que se ejecuta la rutina de RAPID especificada, en
funcin de qu tipo de movimiento se realice en el momento.
Si tras un punto de paro se cambia el modo de ejecucin del modo continuo o
cclico al modo de ejecucin paso a paso hacia adelante o hacia atrs, se genera
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.93 MoveCSync - Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID
Continuacin
un error. Este error informa al usuario de que el cambio de modo de ejecucin
puede dar lugar a que no llegue a ejecutarse un procedimiento de RAPID que est
en cola para su ejecucin en la trayectoria.
No es posible usar la instruccin MoveCSync en rutinas TRAP. No es posible
comprobar el procedimiento de RAPID con la ejecucin paso a paso.
Sintaxis
MoveCSync
[ CirPoint := ] < expression (IN) of robtarget > ,
[ ToPoint := ] < expression (IN) of robtarget > ,
[\ ID := < expression (IN) of identno >],
[ Speed := ] < expression (IN) of speeddata >
[ \ T := < expression (IN) of num > ] ,
[ Zone := ] < expression (IN) of zonedata > ,
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj := < persistent (PERS) of wobjdata > ] ,
[ ProcName := ] < expression (IN) of string > ] ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Otras instrucciones de posicionamien- Technical reference manual - RAPID overview,
to
seccin Resumen sobre RAPID - Movimiento
Mueve el robot en crculo

MoveC - Mueve el robot en crculo en la pgina 246

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Movimiento en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S

Sistemas de coordenadas

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sistemas
de coordenadas

Define una interrupcin dependiente


de una posicin

TriggInt - Define una interrupcin dependiente de


una posicin en la pgina 628

Movimiento circular del robot con


eventos

TriggC - Movimiento circular del robot con eventos


en la pgina 609

260

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.94 MoveExtJ - Mueve una o varias unidades mecnicas sin TCP

1.94 MoveExtJ - Mueve una o varias unidades mecnicas sin TCP


Utilizacin
MoveExtJ (Move External Joints) se utiliza para mover ejes externos slo lineales
o de rotacin. Estos ejes externos pueden pertenecer a una o varias unidades
mecnicas sin TCP.
Esta instruccin slo puede usarse con una tarea de programa real defnida como
tarea de movimiento y siempre y cuando la tarea controle una o varias unidades
mecnicas sin TCP.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MoveExtJ.
Consulte tambin Ms ejemplos en la pgina 263.
Ejemplo 1
MoveExtJ jpos10, vrot10, z50;

Mueve el eje externo de rotacin a la posicin de eje jpos10 a una velocidad de


10 grados/s con los datos de zona z50.
Ejemplo 2
MoveExtJ \Conc, jpos20, vrot10 \T:=5, fine \InPos:=inpos20;

Mueve los ejes externos a la posicin de eje jpos20 en 5 s. La ejecucin del


programa avanza de una vez pero el eje externo se detiene en la posicin jpos20
hasta que se cumplan los criterios de convergencia en inpos20.
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. Este argumento no se utiliza normalmente, pero puede utilizarse para
evitar los paros no deseados, causados por la sobrecarga de la CPU al utilizar
puntos de paso. Esto resulta til cuando los puntos programados estn muy
cercanos entre s y se trabaja a velocidades elevadas. Este argumento tambin
resulta til si, por ejemplo, no se requiere la comunicacin con equipos externos
ni la sincronizacin entre los equipos externos y los movimientos del robot.
Cuando se utiliza el argumento \Conc, el nmero de instrucciones de movimiento
seguidas est limitado a 5. En secciones de programa que incluyen
StorePath-RestoPath, no se permite el uso de instrucciones con el argumento
\Conc.
Si se omite este argumento y ToJointPos no es un punto de paro, la instruccin
siguiente se ejecuta algn tiempo antes de que los ejes externos alcancen la zona
programada.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.94 MoveExtJ - Mueve una o varias unidades mecnicas sin TCP
Continuacin
Este argumento no puede usarse en los movimientos sincronizados coordinados
en un sistema MultiMove.
ToJointPos
To Joint Position
Tipo de dato:jointtarget
La posicin absoluta de destino de los ejes externos. Se define como una posicin
con nombre o se almacena directamente en la instruccin (marcada con un
asterisco * en la instruccin).
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
[ \UseEOffs ]
Use External Offset
Tipo de dato: switch
El offset de los ejes externos, configurado por la instruccin EOffsSet, se activa
para la instruccin MoveExtJ cuando se utiliza el argumento UseEOffs. Consulte
la instruccin EOffsSet para obtener ms informacin acerca del offset externo.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del eje externo lineal o de rotacin.
[ \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. A continuacin, se sustituye por los datos de
velocidad correspondientes.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona definen un punto de paro
o un punto de paso. En un punto de paso, el tamao de la zona describe la
deceleracin y aceleracin de los ejes externos lineales o de rotacin.
[ \Inpos ]
In position
Tipo de dato: stoppointdata
Contina en la pgina siguiente
262

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.94 MoveExtJ - Mueve una o varias unidades mecnicas sin TCP
Continuacin
Este argumento se utiliza para especificar los criterios de convergencia para la
posicin del eje externo en el punto de paro. Los datos de puntos de paro sustituyen
a la zona especificada en el parmetro Zone.
Ejecucin de programas
Los ejes externos lineales o de rotacin se mueven hasta el punto programado a
la velocidad programada.
Ms ejemplos
CONST jointtarget j1 :=
[[9E9,9E9,9E9,9E9,9E9,9E9],[0,9E9,9E9,9E9,9E9,9E9]];
CONST jointtarget j2 :=
[[9E9,9E9,9E9,9E9,9E9,9E9],[30,9E9,9E9,9E9,9E9,9E9]];
CONST jointtarget j3 :=
[[9E9,9E9,9E9,9E9,9E9,9E9],[60,9E9,9E9,9E9,9E9,9E9]];
CONST jointtarget j4 :=
[[9E9,9E9,9E9,9E9,9E9,9E9],[90,9E9,9E9,9E9,9E9,9E9]];
CONST speeddata rot_ax_speed := [0, 0, 0, 45];
MoveExtJ
MoveExtJ
MoveExtJ
MoveExtJ

j1,
j2,
j3,
j4,

rot_ax_speed,
rot_ax_speed,
rot_ax_speed,
rot_ax_speed,

fine;
z20;
z20;
fine;

En este ejemplo, el eje de rotacin sencillo se mueve hasta las posiciones de eje
0, 30, 60 y 90 grados a la velocidad de 45 grados/s.
Sintaxis
MoveExtJ
[ \ Conc , ]
[ ToJointPos := ] < expression (IN) of jointtarget >
[\ ID := < expression (IN) of identno >],
[ \ UseEOffs , ]
[ Speed := ] < expression (IN) of speeddata >
[ \ T := < expression (IN) of num > ] ,
[Zone := ] < expression (IN) of zonedata >
[ \ Inpos := < expression (IN) of stoppointdata >];

Informacin relacionada
Para obtener ms informacin sobre Consulte
Otras instrucciones de posicionamiento Technical reference manual - RAPID overview,
seccin Movimiento
Definicin de jointtarget

jointtarget - Datos de posicin de eje en la pgina 1216

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Movimiento en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.94 MoveExtJ - Mueve una o varias unidades mecnicas sin TCP
Continuacin
Para obtener ms informacin sobre Consulte
Ejecucin simultnea de programas

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sincronizacin con instrucciones lgicas

264

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.95 MoveJ - Mueve el robot mediante un movimiento de ejes

1.95 MoveJ - Mueve el robot mediante un movimiento de ejes


Utilizacin
MoveJ se utiliza para mover el robot rpidamente de un punto a otro cuando no
es imprescindible que el movimiento siga una lnea recta.
Los ejes del robot y los ejes externos se desplazan hasta la posicin de destino
a lo largo de una trayectoria no lineal. Todos los ejes alcanzan la posicin de
destino al mismo tiempo.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MoveJ.
Consulte tambin Ms ejemplos en la pgina 267.
Ejemplo 1
MoveJ p1, vmax, z30, tool2;

El punto central de la herramienta (TCP), tool2, se mueve siguiendo una


trayectoria no lineal hacia la posicin p1, con los datos de velocidad vmax y los
datos de zona z30.
Ejemplo 2
MoveJ *, vmax \T:=5, fine, grip3;

El TCP de la herramienta, grip3, se mueve siguiendo una trayectoria no lineal


hacia un punto de paro almacenado en la instruccin (marcado con un asterisco
*). Todo el movimiento requiere 5 segundos.
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. Este argumento no se utiliza normalmente, pero puede utilizarse para
evitar los paros no deseados, causados por la sobrecarga de la CPU al utilizar
puntos de paso. Esto resulta til cuando los puntos programados estn muy
cercanos entre s y se trabaja a velocidades elevadas. Este argumento tambin
resulta til si, por ejemplo, no se requiere la comunicacin con equipos externos
ni la sincronizacin entre los equipos externos y los movimientos del robot.
Cuando se utiliza el argumento \Conc, el nmero de instrucciones de movimiento
seguidas est limitado a 5. En secciones de programa que incluyen
StorePath-RestoPath, no se permite el uso de instrucciones con el argumento
\Conc.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.95 MoveJ - Mueve el robot mediante un movimiento de ejes
Continuacin
Si se omite este argumento y ToPoint no es un punto de paro, la instruccin
siguiente se ejecuta algn tiempo antes de que el robot alcance la zona
programada.
Este argumento no puede usarse en los movimientos sincronizados coordinados
en un sistema MultiMove.
ToPoint
Tipo de dato:robtarget
El punto de destino de los ejes del robot y de los ejes externos. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, la reorientacin de la
misma 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 instruccin. A continuacin, se sustituye por la velocidad
correspondiente, 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 continuacin, se sustituye por los datos de velocidad
correspondientes.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
[ \Z ]
Zone
Contina en la pgina siguiente
266

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.95 MoveJ - Mueve el robot mediante un movimiento de ejes
Continuacin
Tipo de dato: num
Este argumento se utiliza para especificar la exactitud de la posicin del TCP del
robot, directamente en la instruccin. La longitud de la trayectoria de esquina se
indica en mm y es sustituida por la zona correspondiente especificada en los datos
de zona.
[ \Inpos ]
In position
Tipo de dato: stoppointdata
Este argumento se utiliza para especificar los criterios de convergencia para la
posicin del TCP del robot en el punto de paro. Los datos de puntos de paro
sustituyen a la zona especificada en el parmetro Zone.
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.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si, por otro lado, se utiliza un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento.
Ejecucin de programas
El punto central de la herramienta se mueve hacia el punto de destino mediante
la interpolacin de los ngulos de los ejes. Esto significa que cada eje se mueve
a una velocidad constante y que todos los ejes alcanzan al mismo tiempo el punto
de destino, lo que da lugar a una trayectoria no lineal.
En trminos generales, el TCP se traslada a la velocidad programada aproximada
(independientemente de si los ejes externos estn coordinados). La herramienta
se reorienta y los ejes externos se mueven al mismo tiempo que se mueve el TCP.
Si no es posible alcanzar la velocidad programada para la orientacin o para los
ejes externos, se reduce la velocidad del TCP.
Normalmente se generan trayectorias de esquina cuando se transfiere el
movimiento a la siguiente seccin de la trayectoria. Si se especifica un punto de
paro en los datos de zona, la ejecucin del programa slo contina una vez que
los ejes del robot y los ejes externos han alcanzado la posicin adecuada.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin MoveJ.
Ejemplo 1
MoveJ *, v2000\V:=2200, z40 \Z:=45, grip3;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.95 MoveJ - Mueve el robot mediante un movimiento de ejes
Continuacin
El TCP de la herramienta, grip3, se mueve siguiendo una trayectoria no lineal
hacia una posicin almacenada en la instruccin. El movimiento se realiza con los
datos establecidos en v2000 y z40. La velocidad y el tamao de zona del TCP
son 2200 mm/s y 45 mm, respectivamente.
Ejemplo 2
MoveJ p5, v2000, fine \Inpos := inpos50, grip3;

El TCP de la herramienta, grip3, se mueve siguiendo una trayectoria no lineal


hacia un punto de paro p5. El robot considera que se encuentra en el punto cuando
se satisface el 50% de la condicin de posicin y el 50% de la condicin de
velocidad de un punto de paro fine. Espera al menos 2 segundos a que se
satisfagan las condiciones. Consulte los datos predefinidos inpos50 del tipo de
dato stoppointdata.
Ejemplo 3
MoveJ \Conc, *, v2000, z40, grip3;

El TCP de la herramienta, grip3, se mueve siguiendo una trayectoria no lineal


hacia una posicin almacenada en la instruccin. Las instrucciones lgicas
posteriores se ejecutan mientras el robot est en movimiento.
Ejemplo 4
MoveJ start, v2000, z40, grip3 \WObj:=fixture;

El TCP de la herramienta, grip3, se mueve siguiendo una trayectoria no lineal


hacia la posicin start. Esta posicin se especifica en el sistema de coordenadas
de objeto de fixture.
Sintaxis
MoveJ
[ \ Conc , ]
[ ToPoint := ] < expression (IN) of robtarget >
[ \ ID := < expression (IN) of identno >],
[ Speed := ] < expression (IN) of speeddata >
[ \ V := < expression (IN) of num > ]
| [ \ := < expression (IN) of num > ] ,
[Zone := ] < expression (IN) of zonedata >
[ \ Z := < expression (IN) of num > ]
[ \ Inpos := < expression (IN) of stoppointdata > ] ,
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj := < persistent (PERS) of wobjdata > ] ;

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Otras instrucciones de posicionamiento

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Movimiento

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Definicin de datos de punto de paro stoppointdata - Datos de punto de paro en la pgina 1280

Contina en la pgina siguiente


268

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.95 MoveJ - Mueve el robot mediante un movimiento de ejes
Continuacin
Para obtener ms informacin so- Consulte
bre
Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Movimiento en general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S

Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Sistemas de
coordenadas

Ejecucin simultnea de programas Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Sincronizacin
con instrucciones lgicas

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.96 MoveJDO - Mueve el robot mediante el movimiento de los ejes y activa una salida digital en la
esquina

1.96 MoveJDO - Mueve el robot mediante el movimiento de los ejes y activa una
salida digital en la esquina
Utilizacin
MoveJDO(Move Joint Digital Output) se utiliza para mover el robot rpidamente de
un punto a otro cuando no es imprescindible que el movimiento siga una lnea
recta. La seal digital de salida especificada se activa o desactiva en el centro de
la trayectoria de esquina.
Los ejes del robot y los ejes externos se desplazan hasta la posicin de destino
a lo largo de una trayectoria no lineal. Todos los ejes alcanzan la posicin de
destino al mismo tiempo.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MoveJDO.
Ejemplo 1
MoveJDO p1, vmax, z30, tool2, do1, 1;

El punto central de la herramienta (TCP), tool2 , se mueve siguiendo una


trayectoria no lineal hacia la posicin p1, con los datos de velocidad vmax y los
datos de zona z30. La salida do1 se activa en el centro de la trayectoria de esquina
de p1.
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. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, la reorientacin de la
misma y los ejes externos.
Contina en la pgina siguiente
270

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.96 MoveJDO - Mueve el robot mediante el movimiento de los ejes y activa una salida digital en la
esquina
Continuacin
[ \T ]
Time
Tipo de dato: num
Este argumento se utiliza para especificar el tiempo total en segundos que dura
el movimiento del robot. A continuacin, se sustituye por los datos de velocidad
correspondientes.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
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.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si, por otro lado, se utiliza un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento.
Signal
Tipo de dato: signaldo
El nombre de la seal digital de salida que debe cambiar de valor.
Value
Tipo de dato: dionum
El valor deseado para la seal (0 1).
Ejecucin de programas
Consulte la instruccin MoveJ para obtener ms informacin acerca del movimiento
de ejes.
La seal 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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.96 MoveJDO - Mueve el robot mediante el movimiento de los ejes y activa una salida digital en la
esquina
Continuacin
La figura muestra la activacin/desactivacin de una seal digital de salida en la
trayectoria de esquina con MoveJDO.

p3
Cambia la seal do1 a 1

MoveJDO p2, v1000, z30, tool2, do1, 1;


p1

p2
Zone

xx0500002196_es

En el caso de los puntos de paro, recomendamos el uso de una secuencia de


programa normal, con el uso de MoveJ + SetDO. Sin embargo, cuando se utiliza
un punto de paro en la instruccin MoveJDO, la seal digital de salida se activa o
desactiva cuando el robot alcanza el punto de paro.
La seal de E/S especificada se activa o desactiva en el modo de ejecucin continua
y paso a paso hacia adelante, pero no en la ejecucin paso a paso hacia atrs.
Sintaxis
MoveJDO
[ ToPoint := ] < expression (IN) of robtarget >
[ \ ID := < expression (IN) of identno >],
[ Speed := ] < expression (IN) of speeddata >
[ \ T := < expression (IN) of num > ] ,
[ Zone := ] < expression (IN) of zonedata > ,
[ Tool := ] < persistent (PERS) of tooldata>
[ \ WObj := < persistent (PERS) of wobjdata > ] ,
[ Signal := ] < variable (VAR) of signaldo>] ,
[ Value := ] < expression (IN) of dionum > ] ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Otras instrucciones de posicionamien- Technical reference manual - RAPID overview, secto
cin Resumen sobre RAPID - Movimiento
Movimiento del robot mediante un
movimiento de ejes

MoveJ - Mueve el robot mediante un movimiento de


ejes en la pgina 265

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Movimiento en general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S

Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Sistemas de
coordenadas

Contina en la pgina siguiente


272

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.96 MoveJDO - Mueve el robot mediante el movimiento de los ejes y activa una salida digital en la
esquina
Continuacin
Para obtener ms informacin sobre Consulte
Movimientos con parmetros de E/S Technical reference manual - RAPID overview, seccin Sincronizacin mediante instrucciones lgicas

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.97 MoveJSync - Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de RAPID

1.97 MoveJSync - Mueve el robot con un movimiento de ejes y ejecuta un


procedimiento de RAPID
Utilizacin
MoveJSync(Move Joint Synchronously) se utiliza para mover el robot rpidamente
de un punto a otro cuando no es imprescindible que el movimiento siga una lnea
recta. En el centro de la trayectoria de esquina del punto de destino, se ordena la
ejecucin del procedimiento de RAPID especificado.
Los ejes del robot y los ejes externos se desplazan hasta la posicin de destino
a lo largo de una trayectoria no lineal. Todos los ejes alcanzan la posicin de
destino al mismo tiempo.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MoveJSync.
Ejemplo 1
MoveJSync p1, vmax, z30, tool2, "proc1";

El punto central de la herramienta (TCP), tool2, se mueve siguiendo una


trayectoria no lineal hacia la posicin p1, con los datos de velocidad vmax y los
datos de zona z30. El procedimiento proc1 se ejecuta en el centro de la trayectoria
de esquina de p1.
Ejemplo 2
MoveJSync p1, vmax, z30, tool2, "MyModule:proc1";

Igual que en el ejemplo 1 anterior, pero en este caso el procedimiento declarado


localmente proc1 del mdulo MyModule ser llamado en medio de la trayectoria
de esquina.
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 define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Contina en la pgina siguiente
274

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.97 MoveJSync - Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de RAPID
Continuacin
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, la reorientacin de la
misma y 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. A continuacin, se sustituye por los datos de velocidad
correspondientes.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
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.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si, por otro lado, se utiliza un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento.
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 es una
llamada con enlazamiento en tiempo de ejecucin y por tanto hereda sus
propiedades.
El procedimiento se ejecutar en el nivel de rutina TRAP (consulte Ejecucin de
programas ms abajo).
Ejecucin de programas
Consulte la instruccin MoveJ para obtener ms informacin acerca de los
movimientos de ejes.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.97 MoveJSync - Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de RAPID
Continuacin
El procedimiento de RAPID especificado se ejecuta cuando el TCP alcanza el
centro de la trayectoria de esquina del punto de destino de la instruccin
MoveJSync, como se muestra en la figura siguiente
debajo.
MoveJSync p2, v1000, z30, tool2, my_proc;
p3
Cuando el TCP se encuentra aqu,
se ejecuta my_proc
Zone
p2
p1
xx0500002195_es

En el caso de los puntos de paro, recomendamos el uso de una secuencia de


programa normal, con el uso de MoveJ y otras instrucciones de RAPID una
tras otra.
En la tabla se describe la ejecucin del procedimiento de RAPID especificado, con
distintos modos de ejecucin:
Modo de ejecucin

Ejecucin del procedimiento de RAPID

Continuous o Cycle

De acuerdo con esta descripcin

Paso hacia delante

En el punto de paro

Paso hacia atrs

Ninguno en absoluto

MoveJSync es una encapsulacin de las instrucciones TriggInt y TriggJ. La


llamada al procedimiento se ejecuta en el nivel de rutina TRAP.
Si el centro de la trayectoria de esquina del punto de destino se alcanza durante
la deceleracin posterior a un paro de programa, no se realizar la llamada al
procedimiento (la ejecucin del programa se para). La llamada al procedimiento
se ejecuta en el siguiente inicio de programa.
Limitacin
Cuando el robot alcanza el centro de la trayectoria de esquina, suele ser un retardo
de entre 2 y 30 ms hasta que se ejecuta la rutina de RAPID especificada, en funcin
del tipo de movimiento que se est realizando en ese momento.
Si tras un punto de paro se cambia el modo de ejecucin del modo continuo o
cclico al modo de ejecucin paso a paso hacia adelante o hacia atrs, se genera
un error. Este error informa al usuario de que el cambio de modo de ejecucin
puede dar lugar a que no llegue a ejecutarse un procedimiento de RAPID que est
en cola para su ejecucin en la trayectoria.
No es posible usar la instruccin MoveJSync en rutinas TRAP. No es posible
comprobar el procedimiento de RAPID con la ejecucin paso a paso.

Contina en la pgina siguiente


276

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.97 MoveJSync - Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de RAPID
Continuacin
Sintaxis
MoveJSync
[ ToPoint := ] < expression (IN) of robtarget >
[ \ ID := < expression (IN) of identno >] ,
[ Speed := ] < expression (IN) of speeddata >
[ \ T := < expression (IN) of num >] ,
[ Zone := ] < expression (IN) of zonedata >,
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj := < persistent (PERS) of wobjdata > ] ,
[ ProcName := ] < expression (IN) of string > ] ;

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Otras instrucciones de posicionamiento

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Movimiento

Movimiento del robot mediante un


movimiento de ejes

MoveJ - Mueve el robot mediante un movimiento de


ejes en la pgina 265

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Movimiento en general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S

Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Sistemas de
coordenadas

Define una interrupcin dependiente TriggInt - Define una interrupcin dependiente de una
de una posicin
posicin en la pgina 628
Movimientos de robot eje por eje con TriggJ - Movimientos de ejes del robot a partir de
eventos
eventos en la pgina 639

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.98 MoveL - Mueve el robot siguiendo una trayectoria lineal

1.98 MoveL - Mueve el robot siguiendo una trayectoria lineal


Utilizacin
MoveL se utiliza para trasladar el punto central de la herramienta (TCP) en sentido
lineal hacia un punto de destino determinado. Cuando se desea que el TCP
permanezca estacionario, esta instruccin puede usarse tambin para reorientar
la herramienta.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MoveL.
Consulte tambin Ms ejemplos en la pgina 281.
Ejemplo 1
MoveL p1, v1000, z30, tool2;

El TCP de la herramienta, tool2, se mueve a lo largo de una lnea hacia la posicin


p1 con los datos de velocidad v1000 y los datos de zona z30.
Ejemplo 2
MoveL *, v1000\T:=5, fine, grip3;

El TCP de la herramienta, grip3, se mueve linealmente hacia un punto fino


almacenado en la instruccin (marcado con un asterisco *). Todo el movimiento
requiere 5 segundos.
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. Este argumento no se utiliza normalmente, pero puede utilizarse para
evitar los paros no deseados, causados por la sobrecarga de la CPU al utilizar
puntos de paso. Esto resulta til cuando los puntos programados estn muy
cercanos entre s y se trabaja a velocidades elevadas. Este argumento tambin
resulta til si, por ejemplo, no se requiere la comunicacin con equipos externos
ni la sincronizacin entre los equipos externos y los movimientos del robot.
Cuando se utiliza el argumento \Conc, el nmero de instrucciones de movimiento
seguidas est limitado a 5. En secciones de programa que incluyen
StorePath-RestoPath, no se permite el uso de instrucciones con el argumento
\Conc.
Si se omite este argumento y ToPoint no es un punto de paro, la instruccin
siguiente se ejecuta algn tiempo antes de que el robot alcance la zona
programada.

Contina en la pgina siguiente


278

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.98 MoveL - Mueve el robot siguiendo una trayectoria lineal
Continuacin
Este argumento no puede usarse en los movimientos sincronizados coordinados
en un sistema MultiMove.
ToPoint
Tipo de dato:robtarget
El punto de destino de los ejes del robot y de los ejes externos. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, la reorientacin de la
misma 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 instruccin. A continuacin, se sustituye por la velocidad
correspondiente, 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 continuacin, se sustituye por los datos de velocidad
correspondientes.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
[ \Z ]
Zone
Tipo de dato: num

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.98 MoveL - Mueve el robot siguiendo una trayectoria lineal
Continuacin
Este argumento se utiliza para especificar la exactitud de la posicin del TCP del
robot, directamente en la instruccin. La longitud de la trayectoria de esquina se
indica en mm y es sustituida por la zona correspondiente especificada en los datos
de zona.
[ \Inpos ]
In position
Tipo de dato: stoppointdata
Este argumento se utiliza para especificar los criterios de convergencia para la
posicin del TCP del robot en el punto de paro. Los datos de puntos de paro
sustituyen a la zona especificada en el parmetro Zone.
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 la posicin de destino especificada.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si por otro lado se usa una herramienta estacionaria o ejes
externos coordinados, es necesario especificar el argumento para realizar un
movimiento lineal respecto del objeto de trabajo.
[ \Corr ]
Correction
Tipo de dato: switch
Los datos de correccin escritos en una entrada de correccin mediante una
instruccin CorrWrite se aaden a la trayectoria y a la posicin de destino si se
utiliza este argumento.
Ejecucin de programas
Las unidades del robot y las externas se trasladan hacia la posicin de destino de
la forma siguiente:

El TCP de la herramienta se mueve linealmente a una velocidad constante


programada.

La herramienta se reorienta en intervalos iguales a lo largo de la trayectoria.

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.

Si no es posible alcanzar la velocidad programada para la reorientacin o para los


ejes externos, se reduce la velocidad del TCP.

Contina en la pgina siguiente


280

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.98 MoveL - Mueve el robot siguiendo una trayectoria lineal
Continuacin
Normalmente se general trayectorias de esquina cuando se transfiere el movimiento
a la siguiente seccin de una trayectoria. Si se especifica un punto de paro en los
datos de zona, la ejecucin del programa slo contina una vez que los ejes del
robot y los ejes externos han alcanzado la posicin adecuada.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin MoveL.
Ejemplo 1
MoveL *, v2000 \V:=2200, z40 \Z:=45, grip3;

El TCP de la herramienta, grip3, se mueve linealmente hacia una posicin


almacenada en la instruccin. El movimiento se realiza con los datos establecidos
en v2000 y z40. La velocidad y el tamao de la zona del TCP son de 2200 mm/s
y 45 mm respectivamente.
Ejemplo 2
MoveL p5, v2000, fine \Inpos := inpos50, grip3;

El TCP de la herramienta, grip3, se mueve linealmente hacia un punto de paro


p5. El robot considera que se encuentra en el punto cuando se satisface el 50%
de la condicin de posicin y el 50% de la condicin de velocidad de un punto de
paro fine. Espera al menos 2 segundos a que se satisfagan las condiciones.
Consulte los datos predefinidos inpos50 del tipo de dato stoppointdata..
Ejemplo 3
MoveL \Conc, *, v2000, z40, grip3;

El TCP de la herramienta, grip3, se mueve linealmente hacia una posicin


almacenada en la instruccin. Las instrucciones lgicas posteriores se ejecutan
mientras el robot est en movimiento.
Ejemplo 4
MoveL start, v2000, z40, grip3 \WObj:=fixture;

El TCP de la herramienta, grip3, se mueve linealmente hacia una posicin, start.


Esta posicin se especifica en el sistema de coordenadas de objeto de fixture.
Sintaxis
MoveL
[ \ Conc , ]
[ ToPoint := ] < expression (IN) of robtarget >
[ \ ID := < expression (IN) of identno >] ,
[ Speed := ] < expression (IN) of speeddata >
[ \ V := < expression (IN) of num > ]
| [ \ T := < expression (IN) of num > ] ,
[Zone := ] < expression (IN) of zonedata >
[ \ Z :=< expression (IN) of num > ]
[ \ Inpos := < expression (IN) of stoppointdata > ] ,
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj := < persistent (PERS) of wobjdata > ]
[ \ Corr ] ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.98 MoveL - Mueve el robot siguiendo una trayectoria lineal
Continuacin
Informacin relacionada
Para obtener ms informacin sobre Consulte
Otras instrucciones de posicionamien- Technical reference manual - RAPID overview,
to
seccin Resumen sobre RAPID - Movimiento
Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Definicin de datos de punto de paro stoppointdata - Datos de punto de paro en la pgina 1280
Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Escritura en una entrada de correccin CorrWrite - Escribe en un generador de correcciones en la pgina 81


Movimiento en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S

Sistemas de coordenadas

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sistemas
de coordenadas

Ejecucin simultnea de programas

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sincronizacin con instrucciones lgicas

282

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.99 MoveLDO - Mueve el robot linealmente y establece una salida digital en la esquina.

1.99 MoveLDO - Mueve el robot linealmente y establece una salida digital en la


esquina.
Utilizacin
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.
La seal digital de salida especificada se activa o desactiva en el centro de la
trayectoria de esquina.
Cuando se desea que el TCP permanezca estacionario, esta instruccin puede
usarse tambin para reorientar la herramienta.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MoveLDO.
Ejemplo 1
MoveLDO p1, v1000, z30, tool2, do1,1;

El TCP de la herramienta, tool2, se mueve a lo largo de una lnea hacia la posicin


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.
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. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, la reorientacin de la
misma y los ejes externos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.99 MoveLDO - Mueve el robot linealmente y establece una salida digital en la esquina.
Continuacin
[ \T ]
Time
Tipo de dato: num
Este argumento se utiliza para especificar el tiempo total en segundos que dura
el movimiento del robot. A continuacin, se sustituye por los datos de velocidad
correspondientes.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
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 la posicin de destino especificada.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si, por otro lado, se utiliza un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento.
Signal
Tipo de dato: signaldo
El nombre de la seal digital de salida que debe cambiar de valor.
Value
Tipo de dato: dionum
El valor deseado para la seal (0 1).
Ejecucin de programas
Consulte la instruccin MoveL para obtener ms informacin acerca de los
movimientos lineales.
La seal 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.

Contina en la pgina siguiente


284

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.99 MoveLDO - Mueve el robot linealmente y establece una salida digital en la esquina.
Continuacin
La figura muestra la activacin/desactivacin de una seal digital de salida en la
trayectoria de esquina con MoveLDO.

p3
Cambia la seal do1 a 1

MoveLDO p2, v1000, z30, tool2, do1, 1;


p1

p2
Zone

xx0500002193_es

En el caso de los puntos de paro, recomendamos el uso de una secuencia de


programa normal, con el uso de MoveL + SetDO. Sin embargo, cuando se utiliza
un punto de paro en la instruccin MoveLDO, la seal digital de salida se activa o
desactiva cuando el robot alcanza el punto de paro.
La seal de E/S especificada se activa o desactiva en el modo de ejecucin continua
y paso a paso hacia adelante, pero no en la ejecucin paso a paso hacia atrs.
Sintaxis
MoveLDO
[ ToPoint := ] < expression (IN) of robtarget >
[ \ ID := < expression (IN) of identno >],
[ Speed := ] < expression (IN) of speeddata >
[ \ T := < expression (IN) of num > ] ,
[ Zone := ] < expression (IN) of zonedata > ,
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj := ] < persistent (PERS) of wobjdata > ,
[ Signal := ] < variable (VAR) of signaldo >] ,
[ Value := ] < expression (IN) of dionum > ] ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Otras instrucciones de posicionamien- Technical reference manual - RAPID overview, secto
cin Resumen sobre RAPID - Movimiento
Movimiento lineal del robot

MoveL - Mueve el robot siguiendo una trayectoria


lineal en la pgina 278

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Movimiento en general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S

Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Sistemas de
coordenadas

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.99 MoveLDO - Mueve el robot linealmente y establece una salida digital en la esquina.
Continuacin
Para obtener ms informacin sobre Consulte
Movimientos con parmetros de E/S Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Sincronizacin
con instrucciones lgicas

286

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.100 MoveLSync - Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID

1.100 MoveLSync - Mueve el robot de forma lineal y ejecuta un procedimiento de


RAPID
Utilizacin
MoveLSync (Move Linearly Synchronously) se utiliza para trasladar el punto central
de la herramienta (TCP) en sentido lineal hacia un punto de destino determinado.
En el centro de la trayectoria de esquina del punto de destino, se ordena la
ejecucin del procedimiento de RAPID especificado.
Cuando se desea que el TCP permanezca estacionario, esta instruccin puede
usarse tambin para reorientar la herramienta.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin MoveLSync.
Ejemplo 1
MoveLSync p1, v1000, z30, tool2, "proc1";

El TCP de la herramienta, tool2, se mueve a lo largo de una lnea hacia la posicin


p1 con los datos de velocidad v1000 y los datos de zona z30. El procedimiento
proc1 se ejecuta en el centro de la trayectoria de esquina de p1.
Ejemplo 2
MoveLSync p1, v1000, z30, tool2, "proc1";

Igual que en el ejemplo 1 anterior, pero en este caso el procedimiento declarado


localmente proc1 del mdulo MyModule ser llamado en medio de la trayectoria
de esquina.
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. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.100 MoveLSync - Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID
Continuacin
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, la reorientacin de la
misma y 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. A continuacin, se sustituye por los datos de velocidad
correspondientes.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
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 la posicin de destino especificada.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si, por otro lado, se utiliza un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento.
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 es una
llamada con enlazamiento en tiempo de ejecucin y por tanto hereda sus
propiedades.
El procedimiento se ejecutar en el nivel de rutina TRAP (consulte Ejecucin de
programas ms abajo).
Ejecucin de programas
Consulte la instruccin MoveL para obtener ms informacin acerca de los
movimientos lineales.
El procedimiento de RAPID especificado se ejecuta cuando el TCP alcanza el
centro de la trayectoria de esquina del punto de destino de la instruccin
MoveLSync, como se muestra en la figura siguiente.

Contina en la pgina siguiente


288

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.100 MoveLSync - Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID
Continuacin
La figura muestra el orden de ejecucin del procedimiento de RAPID definido por
el usuario al llegar al centro de la trayectoria de esquina.
MoveLSync p2, v1000, z30, tool2, my_proc;
p3
Cuando el TCP se encuentra aqu,
se ejecutamy_proc
Zone
p2
p1
xx0500002194_es

En el caso de los puntos de paro, recomendamos el uso de una secuencia de


programa normal, con el uso de MoveL y otras instrucciones de RAPID una tras
otra.
En la tabla se describe la ejecucin del procedimiento de RAPID especificado, con
distintos modos de ejecucin:
Modo de ejecucin:

Ejecucin del procedimiento de RAPID:

Continuous o Cycle

De acuerdo con esta descripcin

Paso hacia delante

En el punto de paro

Paso hacia atrs

Ninguno en absoluto

MoveLSync es una encapsulacin de las instrucciones TriggInt y TriggL. La


llamada al procedimiento se ejecuta en el nivel de rutina TRAP.
Si el centro de la trayectoria de esquina del punto de destino se alcanza durante
la deceleracin posterior a un paro de programa, no se realizar la llamada al
procedimiento (la ejecucin del programa se para). La llamada al procedimiento
se ejecuta en el siguiente inicio de programa.
Limitacin
Cuando el robot alcanza el centro de la trayectoria de esquina, suele ser un retardo
de entre 2 y 30 ms hasta que se ejecuta la rutina de RAPID especificada, en funcin
del tipo de movimiento que se est realizando en ese momento.
Si tras un punto de paro se cambia el modo de ejecucin del modo continuo o
cclico al modo de ejecucin paso a paso hacia adelante o hacia atrs, se genera
un error. Este error informa al usuario de que el cambio de modo de ejecucin
puede dar lugar a que no llegue a ejecutarse un procedimiento de RAPID que est
en cola para su ejecucin en la trayectoria.
No es posible usar la instruccin MoveLSync en rutinas TRAP. No es posible
comprobar el procedimiento de RAPID con la ejecucin paso a paso.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.100 MoveLSync - Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID
Continuacin
Sintaxis
MoveLSync
[ ToPoint := ] < expression (IN) of robtarget >
[ \ ID := < expression (IN) of identno >],
[ Speed := ] < expression (IN) of speeddata >
[ \ T := < expression (IN) of num > ] ,
[ Zone := ] < expression (IN) of zonedata > ,
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj := < persistent (PERS) of wobjdata > ] ,
[ ProcName := ] < expression (IN) of string > ] ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Otras instrucciones de posicionamiento Technical reference manual - RAPID overview,
seccin Movimiento
Movimiento lineal del robot

MoveL - Mueve el robot siguiendo una trayectoria


lineal en la pgina 278

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Movimiento en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S

Sistemas de coordenadas

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sistemas
de coordenadas

Define una interrupcin dependiente de TriggInt - Define una interrupcin dependiente de


una posicin
una posicin en la pgina 628
Movimientos de robot lineales con
eventos

TriggL - Movimiento lineal del robot con eventos


en la pgina 646

290

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.101 MToolRotCalib - Calibracin de la rotacin de una herramienta mvil

1.101 MToolRotCalib - Calibracin de la rotacin de una herramienta mvil


Utilizacin
MToolRotCalib (Moving Tool Rotation Calibration) se utiliza para calibrar la
rotacin de una herramienta mvil.
La posicin del robot y sus movimientos dependen siempre de su sistema de
coordenadas de herramienta, es decir, del TCP y de la orientacin de la
herramienta. Para conseguir la mxima exactitud, es importante definir con la
mayor correccin posible el sistema de coordenadas de la herramienta.
La calibracin tambin puede realizarse con un mtodo manual, utilizando el
FlexPendant (se describe en el Manual del operador - IRC5 con FlexPendant,
seccin Programacin y testing).
Descripcin
Para definir la orientacin de la herramienta, necesita una punta de referencia fija
en el espacio de trabajo del robot.
Antes de usar la instruccin MToolRotCalib, 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).

Si se utiliza el robot con una exactitud total, la carga y el centro de gravedad


de la herramienta ya deben estar definidos. Es posible usar LoadIdentify
para la definicin de la carga.

El valor de TCP de la herramienta debe estar ya definido. La calibracin


puede hacerse con la instruccin MToolTCPCalib.

tool0, wobj0 y PDispOff deben estar activados antes de mover el robot.

Mueva el TCP de la herramienta actual hasta el lugar ms 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.

Mueva el robot sin cambiar la orientacin de la herramienta, de forma que


la punta de referencia fija apunte hacia algn punto del eje z positivo del
sistema de coordenadas de herramienta y defina un jointtarget para el
punto ZPos.

Opcionalmente, mueva el robot sin cambiar la orientacin de la herramienta,


de forma que la punta de referencia fija apunte hacia algn punto del eje z
positivo del sistema de coordenadas de herramienta y defina un
jointtarget para el punto XPos.

Como ayuda para apuntar hacia el eje x y el eje x positivos, puede usarse algn
tipo de herramienta alargadora.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.101 MToolRotCalib - Calibracin de la rotacin de una herramienta mvil
Continuacin
Consulte la figura siguiente para obtener una definicin del objetivo de ejes para
RefTip, ZPos, y opcionalmente XPos.

z
x

RefTip

XPos
x

Herramienta
alargadora

Punta de
referencia fija

ZPos
z
xx0500002192_es

Nota
No se recomienda modificar las posiciones de RefTip, ZPos y XPos en la
instruccin MToolRotCalib.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
MToolRotCalib.
Ejemplo 1
! Created with the world fixed tip pointing at origin, positive
! z-axis, and positive x-axis of the wanted tool coordinate
! system.
CONST jointtarget pos_tip := [...];
CONST jointtarget pos_z := [...];
CONST jointtarget pos_x := [...];
PERS tooldata tool1:= [ TRUE, [[20, 30, 100], [1, 0, 0 ,0]], [0.001,
[0, 0, 0.001], [1, 0, 0, 0], 0, 0, 0]];
! Instructions for creating or ModPos of pos_tip, pos_z, and pos_x
MoveAbsJ pos_tip, v10, fine, tool0;
MoveAbsJ pos_z, v10, fine, tool0;
MoveAbsJ pos_x, v10, fine, tool0;
! Only tool calibration in the z direction
MToolRotCalib pos_tip, pos_z, tool1;

Se calcula la orientacin de la herramienta (tframe.rot) en la direccin z de


tool1. Las direcciones x e y de la orientacin de la herramienta se calculan de
forma que coincidan con el sistema de coordenadas de la mueca.

Contina en la pgina siguiente


292

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.101 MToolRotCalib - Calibracin de la rotacin de una herramienta mvil
Continuacin
Ejemplo 2
! Calibration with complete tool orientation
MToolRotCalib pos_tip, pos_z \XPos:=pos_x, tool1;

Se calcula la orientacin completa (tframe.rot) de la herramienta tool1.


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.
ZPos
Tipo de dato: jointtarget
El punto de alargador que define la direccin z positiva.
[\XPos]
Tipo de dato: jointtarget
El punto de alargador que define la direccin x positiva. Si se omite este punto,
las direcciones x e y de la herramienta coincidirn con los ejes correspondientes
del sistema de coordenadas de la mueca.
Tool
Tipo de dato: tooldata
La variable persistente de la herramienta a calibrar.
Ejecucin de programas
El sistema calcula y actualiza la orientacin de la herramienta tfame.rot en los
datos tooldata especificados. El clculo se basa en los 2 3 jointtarget
especificados. El resto de los datos de la herramienta, por ejemplo el TCP
(tframe.trans), permanece sin cambios.
Sintaxis
MToolRotCalib
[ RefTip := ] < expression (IN) of jointtarget > ,
[ ZPos := ] < expression (IN) of jointtarget >
[ \XPos := < expression (IN) of jointtarget > ] ,
[ Tool := ] < persistent (PERS) of tooldata > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Calibracin del TCP de una herramienta MToolTCPCalib - Calibracin del TCP de una
mvil
herramienta mvil en la pgina 294
Calibracin del TCP de una herramienta SToolTCPCalib - Calibracin del TCP de una hefija
rramienta estacionaria en la pgina 539
Calibracin del TCP y la rotacin de una SToolRotCalib - Calibracin del TCP y de la rotaherramienta fija
cin de una herramienta estacionaria en la pgina 536

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.102 MToolTCPCalib - Calibracin del TCP de una herramienta mvil

1.102 MToolTCPCalib - Calibracin del TCP de una herramienta mvil


Utilizacin
MToolTCPCalib (Moving Tool TCP Calibration) se usa para calibrar el TCP (punto
central de la herramienta) de una herramienta mvil.
La posicin del robot y sus movimientos dependen siempre de su sistema de
coordenadas de herramienta, es decir, del TCP y de la orientacin de la
herramienta. Para conseguir la mxima exactitud, es importante definir con la
mayor correccin posible el sistema de coordenadas de la herramienta.
La calibracin tambin puede realizarse con un mtodo manual, utilizando el
FlexPendant (se describe en el Manual del operador - IRC5 con FlexPendant,
seccin Programacin y testing).
Descripcin
Para definir el TCP de una herramienta, necesita una punta de referencia fija en
el espacio de trabajo del robot.
Antes de usar la instruccin MToolTCPCalib, 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).

Si se utiliza el robot con una exactitud total, la carga y el centro de gravedad


de la herramienta ya deben estar definidos. LoadIdentify puede usarse
para la definicin de la carga.

tool0, wobj0 y PDispOff deben estar activados antes de mover el robot.

Mueva el TCP de la herramienta actual hasta el lugar ms cercano posible


de la punta de referencia fija y definir un jointtarget para el primer punto,
p1.

Defina las tres posiciones adicionales (p2, p3 y p4) todas con orientaciones
diferentes.

Definicin de 4 jointtarget, de p1 a p4. Consulte la figura siguiente.

Punta de
referencia fija

xx0500002191_es

Contina en la pgina siguiente


294

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.102 MToolTCPCalib - Calibracin del TCP de una herramienta mvil
Continuacin

Nota
No se recomienda modificar las posiciones de Pos1 a Pos4 en la instruccin
MToolTCPCalib.
La reorientacin entre las 4 posiciones debe ser la mayor posible, poniendo el
robot en configuraciones diferentes. Tambin resulta adecuado comprobar la
calidad del TCP antes de una calibracin. Esto puede realizarse reorientando la
herramienta y comprobando si el TCP permanece en la misma posicin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
MToolTCPCalib.
Ejemplo 1
! Created with actual TCP pointing at the world fixed tip
CONST jointtarget p1 := [...];
CONST jointtarget p2 := [...];
CONST jointtarget p3 := [...];
CONST jointtarget p4 := [...];
PERS tooldata tool1:= [TRUE, [[0, 0, 0], [1, 0, 0 ,0]], [0.001,
[0, 0, 0.001], [1, 0, 0, 0], 0, 0, 0]];
VAR num max_err;
VAR num mean_err;
...
! Instructions for createing or ModPos of p1 - p4
MoveAbsJ p1, v10, fine, tool0;
MoveAbsJ p2, v10, fine, tool0;
MoveAbsJ p3, v10, fine, tool0;
MoveAbsJ p4, v10, fine, tool0;
...
MToolTCPCalib p1, p2, p3, p4, tool1, max_err, mean_err;

Se calibra y actualiza el valor del TCP (tframe.trans) de tool1. max_err y


mean_err contendrn el error mximo en mm a partir del TCP calculado y el error
medio en mm a partir del TCP calculado, respectivamente.
Argumentos
MToolTCPCalib Pos1 Pos2 Pos3 Pos4 Tool MaxErr MeanErr

Pos1
Tipo de dato: jointtarget
El primer punto de aproximacin.
Pos2
Tipo de dato: jointtarget
El segundo punto de aproximacin.
Pos3
Tipo de dato: jointtarget
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.102 MToolTCPCalib - Calibracin del TCP de una herramienta mvil
Continuacin
El tercer punto de aproximacin.
Pos4
Tipo de dato: jointtarget
El cuarto punto de aproximacin.
Tool
Tipo de dato: tooldata
La variable persistente de la herramienta a calibrar.
MaxErr
Tipo de dato: num
El error mximo en mm para un punto de aproximacin.
MeanErr
Tipo de dato: num
La distancia media que separa los puntos de aproximacin del TCP calculado, es
decir, la exactitud con la que el robot se posicion respecto de la punta.
Ejecucin de programas
El sistema calcula y actualiza el valor del TCP en el sistema de coordenadas de
la mueca (tfame.trans) en el valor especificado tooldata. El clculo se basa
en los 4 valores especificados de jointtarget. Los dems datos de tooldata,
por ejemplo la orientacin de la herramienta (tframe.rot), permanecen sin
cambios.
Sintaxis
MToolTCPCalib
[ Pos1 := ] < expression (IN) of jointtarget > ,
[ Pos2 := ] < expression (IN) of jointtarget > ,
[ Pos3 := ] < expression (IN) of jointtarget > ,
[ Pos4 := ] < expression (IN) of jointtarget > ,
[ Tool := ] < persistent (PERS) of tooldata > ,
[ MaxErr := ] < variable (VAR) of num > ,
[ MeanErr := ] < variable (VAR) of num > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Calibracin de la rotacin de una herra- MToolRotCalib - Calibracin de la rotacin de una


mienta mvil
herramienta mvil en la pgina 291
Calibracin del TCP de una herramienta SToolTCPCalib - Calibracin del TCP de una hefija
rramienta estacionaria en la pgina 539
Calibracin del TCP y la rotacin de una SToolRotCalib - Calibracin del TCP y de la rotaherramienta fija
cin de una herramienta estacionaria en la pgina 536

296

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.103 Open - Abre un archivo o un canal serie

1.103 Open - Abre un archivo o un canal serie


Utilizacin
Open se utiliza para abrir un archivo o un canal serie para su lectura o escritura.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin Open.
Consulte tambin Ms ejemplos en la pgina 300.
Ejemplo 1
VAR iodev logfile;
...
Open "HOME:" \File:= "LOGFILE1.DOC", logfile \Write;

Se abre el archivo LOGFILE1.DOC de la unidad HOME:, para escritura. El nombre


de referencia logfile se utiliza ms tarde en el programa al escribir en el archivo.
Ejemplo 2
VAR iodev logfile;
...
Open "LOGFILE1.DOC", logfile \Write;

Mismo resultado que en el ejemplo 1. El directorio predeterminado es HOME:.


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, por ejemplo "HOME:",
"TEMP:", "com1:" o "pc:"(opcional).
En la tabla se describen los distintos dispositivos de E/S del controlador de robot.
Nombre del dispositivo de E/S

Ruta completa del archi- 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, llave de


memoria USB 3

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.103 Open - Abre un archivo o un canal serie
Continuacin
Nombre del dispositivo de E/S

Ruta completa del archi- Tipo de dispositivo


vo
de E/S

"com1:"4
"com2:"4
"com3:"4

Canal serie

"pc:"5

"/c:/temp/"6

Disco montado

1. Cadena de RAPID para definir el nombre del dispositivo


2. "xxxx" indica el nombre del sistema, definido al arrancar el sistema
3.Atencin! RemovableDisk1 tambin puede ser una memoria USB en un sistema
pero una unidad de disquete USB en otro.
4. Nombre de canal serie definido por el usuario en los parmetros del sistema
5. Protocolo de aplicacin, ruta de servidor, definido en los parmetros del sistema
6. Protocolo de aplicacin, ruta de servidor, definido en los parmetros del sistema
En la tabla siguiente se describen los distintos dispositivos de E/S del controlador
virtual.
Nombre del dispositivo de E/S

Ruta completa del ar- 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, llave de memoria USB 4

1. Cadena de RAPID para definir el nombre del dispositivo


2. "xxxx" indica la ruta al directorio del sistema, definido al crear el sistema
3. "yyyy" indica un directorio cuyo nombre coincide con la ID del sistema
4.Atencin! RemovableDisk1 tambin puede ser una memoria USB en un sistema
pero una unidad de disquete USB en otro.
[\File]
Tipo de dato: string
El nombre del archivo que se desea abrir, por ejemplo "LOGFILE1.DOC" o
"LOGDIR/LOGFILE1.DOC"
La ruta completa tambin puede especificarse en el argumento Object,
"HOME:/LOGDIR/LOGFILE.DOC".
IODevice
Tipo de dato: iodev

Contina en la pgina siguiente


298

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.103 Open - Abre un archivo o un canal serie
Continuacin
Una referencia al archivo o canal serie que se desea abrir. A continuacin, esta
referencia se utiliza para las operaciones de lectura y escritura del archivo o canal
serie.
[\Read]
Tipo de dato: switch
Abre un archivo o un canal serie para lectura. Al leer el archivo, la lectura comienza
al principio de ste.
[\Write]
Tipo de dato: switch
Abre un archivo o un canal serie para escritura. Si el archivo seleccionado ya
existe, su contenido se elimina. Cualquier informacin que se escriba a partir de
ese momento se escribe al principio del archivo.
[\Append]
Tipo de dato: switch
Abre un archivo o un canal serie para escritura. Si el archivo seleccionado ya
existe, cualquier informacin que se escriba a partir de ese momento se escribe
al final del archivo.
Para abrir un archivo o un canal serie, utilice \Append sin los argumentos \Bin.
La instruccin abre un archivo o un canal serie alfanumrico para escritura.
Para abrir un archivo o un canal serie, utilice \Append y los argumentos \Bin. La
instruccin abre un archivo o un canal serie para lectura y escritura. Los argumentos
\Read, \Write, \Append son excluyentes entre s. Si no se especifica ninguno
de estos argumentos, la instruccin acta de la misma forma que el argumento
\Write en el caso de los archivos o canales serie alfanumricos (instruccin sin
el argumento \Bin) y de la misma forma que el argumento \Append en el caso
de los archivos o canales serie binarios (instruccin con el argumento \Bin).
[\Bin]
Tipo de dato: switch
El archivo o canal serie se abre en el modo binario. Si no se especifica ninguno
de los argumentos \Read, \Write o \Append, la instruccin abre un archivo o
un canal serie binario, tanto para lectura como para escritura, con el puntero del
archivo situado en el final de ste.
La instruccin Rewind puede usarse para situar el puntero del archivo al principio
del archivo, si as se desea.
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
alfanumricos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.103 Open - Abre un archivo o un canal serie
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin Open.
Ejemplo 1
VAR iodev printer;
...
Open "com2:", printer \Bin;
WriteStrBin printer, "This is a message to the printer\0D";
Close printer;

Se abre el canal serie com2: para lectura y escritura binarias. El nombre de


referencia printer se utiliza ms tarde al escribir y cerrar el canal serie.
Ejemplo 2
VAR
VAR
VAR
VAR
VAR

iodev io_device;
rawbytes raw_data_out;
rawbytes raw_data_in;
num float := 0.2;
string answer;

ClearRawBytes raw_data_out;
PackDNHeader "10", "20 1D 24 01 30 64", raw_data_out;
PackRawBytes float, raw_data_out, (RawBytesLen(raw_data_out)+1)
\Float4;
Open "/FCI1:/dsqc328_1", io_device \Bin;
WriteRawBytes io_device, raw_data_out;
ReadRawBytes io_device, raw_data_in \Time:=1;
Close io_device;
UnpackRawBytes raw_data_in, 1, answer \ASCII:=10;

En este ejemplo, 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.2.
Se abre un dispositivo, "/FCI1/:dsqc328_1", y los datos vlidos actuales de
raw_data_out se escriben en el dispositivo. A continuacin, el programa espera
al menos 1 segundo antes de leer del dispositivo, almacenando en raw_data_in
la informacin leda.
Despus de cerrar el dispositivo /FCI1/:dsqc328_1, los datos ledos se
desempaquetan dando lugar a una cadena de 10 caracteres que se almacena en
answer.
Ejecucin de programas
El archivo o canal serie especificado se abre de forma que sea posible leer su
contenido o escribir en l.
Es posible abrir el mismo archivo fsico varias veces simultneamente, pero cada
ejecucin de la instruccin Open devuelve una referencia distinta al archivo (tipo
de dato iodev). Por ejemplo, es posible tener un puntero para escribir y otro
puntero para leer del mismo archivo de forma simultnea.

Contina en la pgina siguiente


300

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.103 Open - Abre un archivo o un canal serie
Continuacin
La variable iodev utilizada al abrir un archivo o canal serie debe estar libre para
su uso. Si se ha usado anteriormente para abrir un archivo, es necesario cerrar el
archivo antes de ejecutar una nueva instruccin Open con la misma variable iodev.
En caso de un paro de programa y traslado del PP a Main, 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. Una excepcin a esta regla la
constituyen las variables instaladas como compartidas en el sistema, con los tipos
global VAR o LOCAL VAR. Los archivos o canales serie de este tipo pertenecientes
a todo el sistema seguirn estando abiertos.
En caso de un reinicio tras una cada de alimentacin, 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.
Gestin de errores
Si no es posible abrir un archivo, la variable de sistema ERRNO cambia a
ERR_FILEOPEN. A continuacin, este error puede ser gestionado en el gestor de
errores.
Sintaxis
Open [Object :=] <expression (IN) of string>
[\File:= <expression (IN) of string>] ,
[IODevice :=] <variable (VAR) of iodev>
[\Read] |
[\Write] |
[\Append]
[\Bin] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Escritura, lectura y cierre de archivos o Technical reference manual - RAPID overview,


canales serie
seccin Resumen sobre RAPID - Comunicacin
Fieldbus Command Interface

Application manual - Robot communication and


I/O control, seccin Fieldbus Command Interface

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.104 OpenDir - Abre un directorio

1.104 OpenDir - Abre un directorio


Utilizacin
OpenDir se utiliza para abrir un directorio para su anlisis posterior.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin OpenDir.
Ejemplo 1
PROC lsdir(string dirname)
VAR dir directory;
VAR string filename;
OpenDir directory, dirname;
WHILE ReadDir(directory, filename) DO
TPWrite filename;
ENDWHILE
CloseDir directory;
ENDPROC

Este ejemplo imprime los nombres de todos los archivos o subdirectorios que se
encuentran dentro del directorio especificado.
Argumentos
OpenDir Dev Path

Dev
Tipo de dato: dir
Una variable que hace referencia a un directorio, capturada con OpenDir. Esta
variable se utiliza posteriormente para hacer lecturas del directorio.
Path
Tipo de dato: string
La ruta del directorio.
Limitaciones
Los directorios abiertos deben ser cerrados siempre por el usuario despus de
las operaciones de lectura (instruccin CloseDir).
Gestin de errores
Si la ruta apunta a un directorio que no existe o si hay demasiados directorios
abiertos a la vez, la variable de sistema ERRNO cambia a ERR_FILEACC. A
continuacin, este error puede ser gestionado en el gestor de errores.
Sintaxis
OpenDir
[ Dev:= ] < variable (VAR) of dir>,
[ Path:= ] < expression (IN) of string>;

Contina en la pgina siguiente


302

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.104 OpenDir - Abre un directorio
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Directorio

dir - Estructura de directorio de archivos en la


pgina 1189

Creacin de un directorio

MakeDir - Crea un nuevo directorio en la pgina 227

Eliminacin de un directorio

RemoveDir - Elimina un directorio en la pgina 377

Lectura de un directorio

ReadDir - Lee la siguiente entrada de un directorio


en la pgina 1016

Cierre de un directorio

CloseDir - Cierra un directorio en la pgina 60

Eliminacin de un archivo

RemoveFile - Elimina un archivo en la pgina 379

Cambio del nombre de un archivo

RenameFile - Cambia el nombre de un archivo en


la pgina 380

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.105 PackDNHeader - Empaqueta un encabezado de DeviceNet en datos rawbytes

1.105 PackDNHeader - Empaqueta un encabezado de DeviceNet en datos rawbytes


Utilizacin
PackDNHeader se utiliza para empaquetar el encabezado de un mensaje explcito
de DeviceNet en un 'contenedor' del tipo rawbytes.
A continuacin, la parte de datos del mensaje de DeviceNet puede definirse con
la instruccin PackRawBytes.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
PackDNHeader.
Ejemplo 1
VAR rawbytes raw_data;
PackDNHeader "0E", "6,20 01 24 01 30 06,9,4", raw_data;

Se empaqueta el encabezado del mensaje explcito de DeviceNet con el cdigo


de servicio "0E" y la cadena de ruta "6,2001 24 01 30 06,9,4" y lo almacena
en el dato raw_data correspondiente para obtener el nmero de serie de alguna
unidad de E/S.
Este mensaje est listo para su envo sin necesidad de llenar el mensaje con datos
adicionales.
Ejemplo 2
VAR rawbytes raw_data;
PackDNHeader "10", "20 1D 24 01 30 64", raw_data;

Se empaqueta el encabezado del mensaje explcito de DeviceNet con el cdigo


de servicio "10" y la cadena de ruta "201D 24 01 30 64" y lo almacena en el
dato raw_data correspondiente para la definicin del tiempo de filtro del borde
de elevacin de la seal de entrada 1 de una unidad de E/S.
Este mensaje debe complementarse con datos del tiempo de filtro. Esto puede
hacerse con la instruccin PackRawBytes, empezando por el nmero de ndice
RawBytesLen(raw_data)+1 (se hace despus de PackDNHeader).
Argumentos
PackDNHeader Service Path RawData

Service
Tipo de dato: string
El servicio que debe realizarse, por ejemplo obtener o definir el atributo. Debe
especificarse con un cdigo hexadecimal en una cadena, por ejemplo "IF".
Longitud de cadena

2 caracteres

Formato

0 - 9, a -f, A - F

Rango

"00" - "FF"

Contina en la pgina siguiente


304

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.105 PackDNHeader - Empaqueta un encabezado de DeviceNet en datos rawbytes
Continuacin
Los valores de Service se almacenan en el archivo EDS. Para obtener una
descripcin ms detallada, consulte el documento ODVA DeviceNet Specification
revision 2.0. (Especificacin de DeviceNet ODVA revisin 2.0) de la Open DeviceNet
Vendor Association.
Path
Tipo de dato: string
Los valores de Path se almacenan en el archivo EDS. Para obtener una descripcin
ms detallada, consulte el documento ODVA DeviceNet Specification revision 2.0.
(Especificacin de DeviceNet ODVA revisin 2.0) de la Open DeviceNet Vendor
Association.
Se admiten tanto el formato de cadena largo (por ejemplo, "6,20 1D 24 01 30
64,8,1") como el corto (por ejemplo "20 1D 24 01 30 64").
RawData
Tipo de dato: rawbytes
El contenedor de variable que se desea empaquetar con los datos del encabezado
del mensaje, a partir del nmero de ndice 1 de RawData.
Ejecucin de programas
Durante la ejecucin del programa, se hace lo siguiente con el contenedor del
mensaje de DeviceNet RawData:

Se borra completamente en primer lugar.

A continuacin, se empaqueta la parte de encabezado con datos.

Formato del encabezado de DeviceNet


La instruccin PackDNHeader crea un encabezado de mensaje de DeviceNet con
el formato siguiente:
Formato de encabe- N de bytes Nota
zado RawData
Formato

Cdigo interno del IRC5 para DeviceNet

Servicio

Cdigo hexadecimal del servicio

Tamao de ruta

Bytes de entrada

Ruta

Caracteres ASCII

A continuacin, la parte de datos del mensaje de DeviceNet puede definirse con


la instruccin PackRawBytes, a partir del nmero de ndice capturado con
(RawBytesLen(my_rawdata)+1).
Sintaxis
PackDNHeader
[Service := ] < expression (IN) of string> ,
[Path := ] < expression (IN) of string> ,
[RawData := ] < variable (VAR) of rawbytes> ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.105 PackDNHeader - Empaqueta un encabezado de DeviceNet en datos rawbytes
Continuacin
Informacin relacionada
Para obtener ms informacin sobre Consulte
rawbytes datos

rawbytes - Datos sin formato en la pgina 1254

Obtencin de la longitud de un dato


rawbytes

RawBytesLen - Obtiene la longitud de un dato de


tipo rawbytes en la pgina 1011

Borrado del contenido de un dato de ClearRawBytes - Borra el contenido de un dato de


tipo rawbytes
tipo rawbytes en la pgina 53
Copiado del contenido de un dato de CopyRawBytes - Copia el contenido de un dato de
tipo rawbytes
tipo rawbytes en la pgina 71
Empaquetamiento de datos en datos PackRawBytes - Empaqueta datos en un dato de
rawbytes
tipo rawbytes en la pgina 307
Escritura de un dato rawbytes

WriteRawBytes - Escribe un dato de tipo rawbytes


en la pgina 772

Lectura de un dato rawbytes

ReadRawBytes - Lee datos de tipo rawbytes en la


pgina 374

Desempaquetamiento de datos de un UnpackRawBytes - Desempaqueta datos de un dato


dato rawbytes
de tipo rawbytes en la pgina 704
Funciones para bits/bytes

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas Funciones de bits

Funciones para cadenas de caracteres Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Funciones para
cadenas de caracteres

306

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.106 PackRawBytes - Empaqueta datos en un dato de tipo rawbytes

1.106 PackRawBytes - Empaqueta datos en un dato de tipo rawbytes


Utilizacin
PackRawBytes se utiliza para empaquetar el contenido de las variables de tipo
num, dnum, byte o string en un contenedor del tipo rawbytes.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
PackRawBytes.
VAR rawbytes raw_data;
VAR num integer := 8;
VAR dnum bigInt := 4294967295;
VAR num float := 13.4;
VAR byte data1 := 122;
VAR byte byte1;
VAR string string1:="abcdefg";
PackDNHeader "10", "20 1D 24 01 30 64", raw_data;

Empaquetamiento del encabezado de DeviceNet en un dato raw_data.


A continuacin, se empaquetan en raw_data los datos de bus de campo
solicitados, con ayuda de PackRawBytes. En el ejemplo siguiente se demuestra
la posibilidad de aadir distintos tipos de datos.
Ejemplo 1
PackRawBytes integer, raw_data, (RawBytesLen(raw_data)+1) \IntX :=
DINT;

El contenido de los 4 bytes siguientes al encabezado de raw_data ser un 8


decimal.
Ejemplo 2
PackRawBytes bigInt, raw_data, (RawBytesLen(raw_data)+1) \IntX :=
UDINT;

El contenido de los 4 bytes siguientes al encabezado de raw_data ser un


4294967295 decimal.
Ejemplo 3
PackRawBytes bigInt, raw_data, (RawBytesLen(raw_data)+1) \IntX :=
LINT;

El contenido de los 8 bytes siguientes al encabezado de raw_data ser un


4294967295 decimal.
Ejemplo 4
PackRawBytes float, raw_data, RawBytesLen(raw_data)+1) \Float4;

El contenido de los 4 bytes siguientes de raw_data ser un 13,4 decimal.


Ejemplo 5
PackRawBytes data1, raw_data, (RawBytesLen(raw_data)+1) \ASCII;

El contenido del byte siguiente de raw_data ser 122, el cdigo ASCII de "z".
Ejemplo 6
PackRawBytes string1, raw_data, (RawBytesLen(raw_data)+1) \ASCII;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.106 PackRawBytes - Empaqueta datos en un dato de tipo rawbytes
Continuacin
El contenido de los 7 bytes siguientes de raw_data ser "abcdefg", codificado
en ASCII.
Ejemplo 7
byte1 := StrToByte("1F" \Hex);
PackRawBytes byte1, raw_data, (RawBytesLen(raw_data)+1) \Hex1;

El contenido del byte siguiente de raw_data ser "1F" hexadecimal.


Argumentos
PackRawBytes Value RawData [ \Network ] StartIndex [\Hex1]|[\IntX
] | [ \Float4 ] | [ \ASCII ]

Value
Tipo de dato: anytype
Datos a empaquetar en RawData.
Los tipos de datos permitidos son: num, dnum, byte o string. No es posible
usar una matriz.
RawData
Tipo de dato: rawbytes
El contenedor de variable en el que se almacenarn los datos empaquetados.
[ \Network ]
Tipo de dato: switch
Indica que los valores de tipo integer y float deben empaquetarse con la
representacin big-endian (orden de red) en RawData. Tanto ProfiBus como
InterBus utilizan big-endian.
Sin este modificador, los valores integer y float se empaquetan con la
representacin little-endian (sin el orden de la red) en RawData. DeviceNet utiliza
little-endian.
Slo relevante junto con los parmetros opcionales \IntX - UINT, UDINT, INT,
DINT y \Float4.
StartIndex
Tipo de dato: num
StartIndex, entre 1 y 1.024, indica en qu lugar de Value debe situarse el primer
byte contenido en RawData.
[ \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.
[ \IntX ]
Tipo de dato: inttypes
El valor Value a empaquetar tiene el formato num o dnum. Se trata de un entero
y debe almacenarse en RawData de acuerdo con esta constante especificada del
tipo de dato inttypes.
Contina en la pgina siguiente
308

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.106 PackRawBytes - Empaqueta datos en un dato de tipo rawbytes
Continuacin
Consulte Datos predefinidos en la pgina 310.
[ \Float4 ]
Tipo de dato: switch
El Value a empaquetar tiene el formato num y debe almacenarse en RawData
como flotante en 4 bytes.
[ \ASCII ]
Tipo de dato: switch
El Value a empaquetar tiene el formato byte o string.
Si el valor Value a empaquetar tiene el formato byte, se almacenar en RawData
como 1 byte que interpreta Value como el cdigo ASCII de un carcter.
Si el valor Value a empaquetar tiene el formato de cadena (de 1 a 80 caracteres),
se almacenar en RawData como caracteres ASCII con tantos caracteres como
contenga Value. Los datos de cadena no son terminados con NULL por el sistema
en el caso de los datos de tipo rawbytes. El programador es el responsable de
aadir un encabezado de cadena en caso necesario (obligatorio en el caso de
DeviceNet).
Es imprescindible programar uno de los argumentos \Hex1, \IntX, \Float4 o
\ASCII .
Se permiten las combinaciones siguientes:
Tipo de dato de Value:

Parmetros de opcin 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 simblica


seleccionada, USINT, UINT, UDINT, SINT, INT o DINT.
*) Debe ser un entero dentro del rango de valor de la constante simblica
seleccionada, USINT, UINT, UDINT, ULINT, SINT, INT, DINT o LINT.
Ejecucin de programas
Durante la ejecucin del programa, se empaquetan los datos de la variable de tipo
anytype en un contenedor de tipo rawbytes.
La longitud actual de los bytes vlidos de la variable RawData cambia a:

(StartIndex + nmero_de_bytes_empaquetados - 1)

La longitud actual de los bytes vlidos de la variable RawData no cambia si


la totalidad de la operacin de empaquetado se realiza dentro de la longitud
anterior de bytes vlidos de la variable RawData.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.106 PackRawBytes - Empaqueta datos en un dato de tipo rawbytes
Continuacin
Datos predefinidos
Se han definido las constantes simblicas siguientes para el tipo de dato inttypes.
Puede usarlas para especificar el entero en el parmetro \IntX.
Constante sim- Valor cons- Formato de entero
blica
tante

Rango de valores enteros

USINT

Entero de 1 byte sin signo 0 ... 255

UINT

Entero de 2 byte sin signo 0 ... 65 535

UDINT

Entero de 4 byte sin signo 0 ... 8 388 608 *)


0 ... 4 294 967 295 ****)

ULINT

Entero de 8 byte sin signo 0 ... 4 503 599 627 370 496**)

SINT

-1

Entero de 1 bytes con sig- - 128... 127


no

INT

-2

Entero de 2 bytes con sig- - 32 768 ... 32 767


no

DINT

-4

Entero de 4 bytes con sig- - 8 388 607 ... 8 388 608 *)


no
-2 147 483 648 ... 2 147 483 647
***)

LINT

-8

Entero de 8 bytes con sig- - 4 503 599 627 370 496... 4 503
no
599 627 370 496 **)

*) *) Limitacin de RAPID para el almacenamiento de enteros en el tipo de dato


num.
**) *) Limitacin de RAPID para el almacenamiento de enteros en el tipo de dato
dnum.
***) Rango al utilizar una variable dnum e inttype DINT.
****) Rango al utilizar una variable dnum e inttype UDINT.
Sintaxis
PackRawBytes
[Value := ] < expression (IN) of anytype> ,
[RawData := ] < variable (VAR) of rawbytes>
[ \ Network ] ,
[StartIndex := ] < expression (IN) of num>
[ \ Hex1 ]
| [ \ IntX := < expression (IN) of inttypes>]
|[ \ Float4 ]
| [ \ ASCII] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

rawbytes datos

rawbytes - Datos sin formato en la pgina 1254

Obtencin de la longitud de un dato


rawbytes

RawBytesLen - Obtiene la longitud de un dato


de tipo rawbytes en la pgina 1011

Borrado del contenido de un dato de tipo


rawbytes

ClearRawBytes - Borra el contenido de un dato


de tipo rawbytes en la pgina 53

Copiado del contenido de un dato de tipo CopyRawBytes - Copia el contenido de un dato


rawbytes
de tipo rawbytes en la pgina 71

Contina en la pgina siguiente


310

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.106 PackRawBytes - Empaqueta datos en un dato de tipo rawbytes
Continuacin
Para obtener ms informacin sobre

Consulte

Empaquetamiento de un encabezado de
DeviceNet en datos rawbytes

PackDNHeader - Empaqueta un encabezado


de DeviceNet en datos rawbytes en la pgina 304

Escritura de un dato rawbytes

WriteRawBytes - Escribe un dato de tipo


rawbytes en la pgina 772

Lectura de un dato rawbytes

ReadRawBytes - Lee datos de tipo rawbytes


en la pgina 374

Desempaquetamiento de datos de un dato UnpackRawBytes - Desempaqueta datos de


rawbytes
un dato de tipo rawbytes en la pgina 704
Funciones para bits/bytes

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Funciones de
bits

Funciones para cadenas de caracteres

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Funciones
para cadenas de caracteres

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.107 PathAccLim - Reduce la aceleracin del TCP a lo largo de la trayectoria

1.107 PathAccLim - Reduce la aceleracin del TCP a lo largo de la trayectoria


Utilizacin
PathAccLim (Path Acceleration Limitation) se usa para establecer o restablecer
limitaciones de aceleracin y/o deceleracin de TCP a lo largo de la trayectoria
de movimiento.
La limitacin se realiza a lo largo de la trayectoria de movimiento, es decir, la
aceleracin en la base de coordenadas de la trayectoria. La
aceleracin/deceleracin que se limita es la aceleracin/deceleracin tangencial
en la direccin de la trayectoria.
Esta instruccin no limita la aceleracin total del equipo, es decir, la aceleracin
en la base de coordenadas mundo, de forma que no es posible usarla directamente
para proteger al equipo de grandes aceleraciones.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Trayectoria programada

TCP del robot con limitacin PathAccLim

TCP del robot

t
xx0500002184_es

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin PathAccLim.
Consulte tambin Ms ejemplos en la pgina 314.
Ejemplo 1
PathAccLim TRUE \AccMax := 4, TRUE \DecelMax := 4;

Se limita a 4 m/s 2 la aceleracin y la deceleracin del TCP.


Ejemplo 2
PathAccLim FALSE, FALSE;

Contina en la pgina siguiente


312

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.107 PathAccLim - Reduce la aceleracin del TCP a lo largo de la trayectoria
Continuacin
Se devuelven la aceleracin y deceleracin del TCP a sus valores mximos
(predeterminados).
Argumentos
PathAccLim AccLim [\AccMax] DecelLim [\DecelMax]

AccLim
Tipo de dato: bool
TRUE si debe haber una limitacin de la aceleracin; de lo contrario, FALSE.
[ \AccMax ]
Tipo de dato: num
El valor absoluto de la limitacin de aceleracin en m/s 2. Slo debe usarse si
AccLim tiene el valor TRUE.
DecelLim
Tipo de dato: bool
TRUE si debe haber una limitacin de la deceleracin; de lo contrario, FALSE.
[ \DecelMax ]
Tipo de dato: num
El valor absoluto de la limitacin de deceleracin en m/s 2. Slo debe usarse si
DecelLim tiene el valor TRUE.
Ejecucin de programas
Las limitaciones de aceleracin/deceleracin se aplican al siguiente segmento
ejecutado por el robot y es vlido hasta que se ejecuta una nueva instruccin
PathAccLim.
La aceleracin/deceleracin mxima (PathAccLim FALSE, FALSE) se establece
automticamente en los casos siguientes:

En los arranques en fro

Cuando se carga un nuevo programa

Cuando se inicia la ejecucin del programa desde el principio

Si se usa una combinacin de instrucciones AccSet y PathAccLim, el sistema


reduce la aceleracin y deceleracin en el orden siguiente:

Segn AccSet

Segn PathAccLim

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.107 PathAccLim - Reduce la aceleracin del TCP a lo largo de la trayectoria
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin PathAccLim.

xx0500002183

Ejemplo 1
MoveL p1, v1000, fine, tool0;
PathAccLim TRUE\AccMax := 4, FALSE;
MoveL p2, v1000, z30, tool0;
MoveL p3, v1000, fine, tool0;
PathAccLim FALSE, FALSE;

Se limita la aceleracin del TCP a 4 m/s 2 entre p1 y p3.


Ejemplo 2
MoveL p1, v1000, fine, tool0;
MoveL p2, v1000, z30, tool0;
PathAccLim TRUE\AccMax :=3, TRUE\DecelMax := 4;
MoveL p3, v1000, fine, tool0;
PathAccLim FALSE, FALSE;

Se limita la aceleracin del TCP a 3 m/s 2 entre p2 y p3.


La deceleracin del TCP se limita a 4 m/s2 entre p2 y p3.
Gestin de errores
Si se establece un valor demasiado bajo para los parmetros \AccMax o
\DecelMax, la variable de sistema ERRNO cambia a ERR_ACC_TOO_LOW. A
continuacin, este error puede ser gestionado en el gestor de errores.
Limitaciones
La aceleracin/deceleracin mnima permitida es de 0.1 m/s2. La recomendacin
es mantener la simetra entre los lmites de aceleracin y deceleracin, es decir,
tener el mismo valor en AccMax y DecelMax.
Sintaxis
PathAccLim
[ AccLim := ] < expression (IN) of bool >
[\AccMax := <expression (IN) of num >],
[DecelLim := ] < expression (IN) of bool>
[\DecelMax := <expression (IN) of num >];

Contina en la pgina siguiente


314

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.107 PathAccLim - Reduce la aceleracin del TCP a lo largo de la trayectoria
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones de posicionamiento

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Movimiento

Datos de parmetros de movimiento

motsetdata - Datos de parmetros de movimiento


en la pgina 1229

Reduccin de la aceleracin

AccSet - Reduce la aceleracin en la pgina 17

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.108 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias

1.108 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias


Utilizacin
PathRecMoveBwd se utiliza para hacer retroceder el robot a lo largo de una
trayectoria grabada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
PathRecMoveBwd.
Consulte tambin Ms ejemplos en la pgina 318.
Ejemplo 1
VAR pathrecid fixture_id;
PathRecMoveBwd \ID:=fixture_id \ToolOffs:=[0, 0, 10] \Speed:=v500;

El robot se mueve hacia atrs hasta la posicin del programa en la que la


instruccin PathRecStart insert el identificador fixture_id. El offset del TCP
est situado 10 mm en la direccin Z y la velocidad es de 500 mm/s.
Argumentos
PathRecMoveBwd [\ID] [\ToolOffs] [\Speed]

[\ID]
Identifier
Tipo de dato: pathrecid
Una variable que especifica la posicin de ID hasta la que se desea retroceder. El
tipo de dato pathrecid es de un tipo sin valor y slo se utiliza como un
identificador para asignar un nombre a la posicin de grabacin.
Si no se especifica ninguna posicin de ID, el movimiento de retroceso se realiza
en un sistema sencillo hasta la posicin de ID ms cercana que se haya grabado.
Sin embargo, en un sistema MultiMove en modo sincronizado, los movimientos
de retroceso se realizan hasta la ms cercana de las posiciones siguientes:

Regreso a la posicin en la que se inici el movimiento sincronizado

Regreso hasta la posicin de ID ms cercana grabada

[\ToolOffs]
Tool Offset
Tipo de dato: pos
Proporciona un offset de separacin del TCP durante el movimiento. Se aplica
una coordenada de offset cartesiana a las coordenadas del TCP. El valor de offset
Z positivo indica la separacin. Resulta til si el robot ejecuta un proceso en el
que se aade material. Si se est utilizando el movimiento sincronizado, o bien
todas o ninguna de las unidades mecnicas deben utilizar este argumento. Si no
se desea utilizar ningn offset en algunas unidades mecnicas, es posible aplicar
un offset cero. Incluso las unidades mecnicas sin TCP deben utilizar el argumento
si se usa un robot con TCP perteneciente a otra tarea.

Contina en la pgina siguiente


316

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.108 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias
Continuacin
[\Speed]
Tipo de dato: speeddata
Esta velocidad reemplaza a la velocidad original utilizada durante el movimiento
de avance. Speeddata define la velocidad del punto central de la herramienta, la
reorientacin de la misma y los ejes externos. Si est presente, esta velocidad se
utiliza durante todo el movimiento de retroceso. Si se omite, el movimiento de
retroceso se ejecuta a la velocidad de las instrucciones de movimiento originales.
Ejecucin de programas
La grabadora de trayectorias se activa con la instruccin PathRecStart. Una vez
que la grabadora se ha iniciado, todas las instrucciones de movimiento quedan
grabadas y el robot puede retroceder en cualquier momento a lo largo de la
trayectoria grabada, con ayuda de PathRecMoveBwd.
Movimiento sincronizado
La ejecucin de la grabadora de trayectorias durante el movimiento sincronizado
supone algunas consideraciones adicionales.

Todas las tareas implicadas en el movimiento grabado sincronizado deben


ejecutar PathRecMoveBwd antes de que ninguno de los robots empiece a
moverse.

Todo el manejo de la sincronizacin se graba y ejecuta de forma invertida.


Por ejemplo, si se ejecuta PathRecMoveBwd dentro de un bloque de
sincronizacin hacia una posicin independiente, la grabadora de trayectorias
cambiar automticamente el estado al modo independiente al ejecutarse
la instruccin SyncMoveOn.

SyncMoveOn se considera como punto de ruptura sin identificador de


trayectoria. Es decir, 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, el robot retrocede
hasta la posicin en la que se encontraba cuando se ejecut SyncMoveOn.
Dado que el movimiento hacia atrs se detiene antes de SyncMoveOn, el
estado cambia al modo independiente.

WaitSyncTask se considera como punto de ruptura sin identificador de


trayectoria. Es decir, si la grabadora de trayectorias ha sido puesta en marcha
por medio de PathRecStart y se ejecuta PathRecMoveBwd, el robot
retroceder no ms all de la posicin en la que se encontraba en el momento
de ejecutarse WaitSyncTask.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.108 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin
PathRecMoveBwd.
Ejemplo 1 - Movimiento independiente
VAR pathrecid safe_id;
CONST robtarget p0 := [...];
...
CONST robtarget p4 := [...];
VAR num choice;
MoveJ p0, vmax, z50, tool1;
PathRecStart safe_id;
MoveJ p1, vmax, z50, tool1;
MoveL p2, vmax, z50, tool1;
MoveL p3, vmax, z50, tool1;
MoveL p4, vmax, z50, tool1;
ERROR:
TPReadFK choice,"Go to safe?",stEmpty,stEmpty,stEmpty,stEmpty,"Yes";
IF choice=5 THEN
IF PathRecValidBwd(\ID:=safe_id) THEN
StorePath;
PathRecMoveBwd \ID:=safe_id \ToolOffs:=[0, 0 , 10];
Stop;
!Fix problem
PathRecMoveFwd;
RestoPath;
StartMove;
RETRY;
ENDIF
ENDIF

Contina en la pgina siguiente


318

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.108 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias
Continuacin

xx0500002135

En este ejemplo se muestra cmo puede usarse la grabadora de trayectorias para


extraer el robot de espacios reducidos en caso de error, sin necesidad de programar
una trayectoria designada.
Se fabrica una pieza. En el punto de aproximacin, p0, la grabadora de trayectorias
se inicia y se le asigna el identificador de grabadora de trayectorias safe_id.
Suponga que durante el movimiento del robot de p3 a p4 se produce un error
recuperable. En ese punto, la trayectoria se almacena ejecutando StorePath. Al
almacenar la trayectoria, el gestor de errores puede iniciar un nuevo movimiento
y reiniciar ms adelante el movimiento original. Una vez que la trayectoria ha
quedado almacenada, se usa la grabadora de trayectorias para hacer retroceder
el robot hasta una posicin segura, p0, mediante la ejecucin de PathRecMoveBwd.
Recuerde que se aplica un offset de herramienta para disponer de una separacin,
por ejemplo respecto de una nueva soldadura realizada. Una vez que el robot ha
retrocedido, el operador puede tomar las acciones oportunas para solucionar el
error (por ejemplo limpiar la pistola de soldadura). A continuacin, el robot es
devuelto al punto en el que se produjo el error, con ayuda de PathRecMoveFwd.
En la ubicacin del error, el nivel de la trayectoria se devuelve al nivel bsico con
RestoPath y se realiza un intento de recuperacin.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.108 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias
Continuacin
Ejemplo 2 - Movimiento sincronizado
T_ROB1
VAR pathrecid HomeROB1;
CONST robtarget pR1_10:=[...];
...
CONST robtarget pR1_60:=[...];
PathRecStart HomeROB1;
MoveJ pR1_10, v1000, z50, tGun;
MoveJ pR1_20, v1000, z50, tGun;
MoveJ pR1_30, v1000, z50, tGun;
SyncMoveOn sync1, tasklist;
MoveL pR1_40 \ID:=1, v1000, z50, tGun\wobj:=pos1;
MoveL pR1_50 \ID:=2, v1000, z50, tGun\wobj:=pos1;
MoveL pR1_60 \ID:=3, v1000, z50, tGun\wobj:=pos1;
SyncMoveOff sync2;
ERROR
StorePath \KeepSync;
TEST ERRNO
CASE ERR_PATH_STOP:
PathRecMoveBwd \ID:= HomeROB1\ToolOffs:=[0,0,10];
ENDTEST
!Perform service action
PathRecMoveFwd \ToolOffs:=[0,0,10];
RestoPath;
StartMove;

Contina en la pgina siguiente


320

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.108 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias
Continuacin
T_ROB2
VAR pathrecid HomeROB2;
CONST robtarget pR2_10:=[...];
...
CONST robtarget pR2_50:=[...];
PathRecStart HomeROB2;
MoveJ pR2_10, v1000, z50, tGun;
MoveJ pR2_20, v1000, z50, tGun;
SyncMoveOn sync1, tasklist;
MoveL pR2_30 \ID:=1, v1000, z50, tGun\wobj:=pos1;
MoveL pR2_40 \ID:=2, v1000, z50, tGun\wobj:=pos1;
MoveL pR2_50 \ID:=3, v1000, z50, tGun\wobj:=pos1;
SyncMoveOff sync2;
ERROR
StorePath \KeepSync;
TEST ERRNO
CASE ERR_PATH_STOP:
PathRecMoveBwd \ToolOffs:=[0,0,10];
ENDTEST
!Perform service action
PathRecMoveFwd \ToolOffs:=[0,0,10];
RestoPath;
StartMove;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.108 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias
Continuacin
T_ROB3
VAR pathrecid HomePOS1;
CONST jointtarget jP1_10:=[...];
...
CONST jointtarget jP1_40:=[...];
PathRecStart HomePOS1;
MoveExtJ jP1_10, v1000, z50;
SyncMoveOn sync1, tasklist;
MoveExtJ jP1_20 \ID:=1, v1000, z50;
MoveExtJ jP1_30 \ID:=2, v1000, z50;
MoveExtJ jP1_40 \ID:=3, v1000, z50;
SyncMoveOff sync2;
ERROR
StorePath \KeepSync;
TEST ERRNO
CASE ERR_PATH_STOP:
PathRecMoveBwd \ToolOffs:=[0,0,0];
DEFAULT:
PathRecMoveBwd \ID:=HomePOS1\ToolOffs:=[0,0,0];
ENDTEST
!Perform service action
PathRecMoveFwd \ToolOffs:=[0,0,0];
RestoPath;
StartMove;

El sistema se compone de tres manipuladores, todos ellos ejecutndose en tareas


separadas. Suponga que T_ROB1 sufre un error ERR_PATH_STOP dentro del bloque
sincronizado, sync1. En el error, se desea retroceder hasta la posicin de inicio
marcada con el identificador HomeROB1 de la grabadora de trayectorias, para
realizar un servicio en el equipo externo del robot. Esto se realiza mediante
PathRecMoveBwd e indicando el identificador pathrecid.
Dado que el error se produjo durante el movimiento sincronizado, es necesario
que el segundo robot con TCP T_ROB2 y el eje externo T_POS1 tambin ejecuten
PathRecMoveBwd. Estos manipuladores no tienen por qu retroceder ms 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, se aprovecha la capacidad de la grabadora de trayectorias para
detenerse a continuacin de SyncMoveOn. Recuerde que el eje externo que no
tiene TCP sigue aadiendo un offset cero de herramienta, para permitir la
posibilidad de que los robots con TCP lo hagan tambin.
El comportamiento DEFAULT del gestor de ERROR de este ejemplo es que todos
los manipuladores realicen en primer lugar los movimientos sincronizados hacia
atrs y a continuacin los movimientos independientes hacia atrs hasta el punto
de inicio de la trayectoria grabada. Esto se consigue especificando \ID en
PathRecMoveBwd para todos los manipuladores.

Contina en la pgina siguiente


322

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.108 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias
Continuacin
Limitaciones
Los movimientos realizados utilizando la grabadora de trayectorias no pueden
realizarse en el nivel de base. Es decir, debe ejecutarse StorePath antes de
ejecutar PathRecMoveBwd.
En ningn caso es posible retroceder ms all de una sentencia SynchMoveOff.
En ningn caso es posible retroceder ms all de una sentencia WaitSyncTask.
la instruccin SyncMoveOn debe ir precedida de al menos un movimiento
independiente, si se desea retroceder hasta la posicin en la que se inici el
movimiento sincronizado.
Si no se desea volver al punto en el que se ejecut PathRecMoveBwd (mediante
la ejecucin de PathRecMoveFwd) es necesario detener la grabadora de
trayectorias con la instruccin PathRecStop. PathRecStop\Clear tambin borra
la trayectoria grabada.
PathRecMoveBwd no puede ejecutarse en rutinas de RAPID que estn conectadas
a los siguientes eventos especiales del sistema: PowerOn, Stop, QStop,
Restart,Reset o Step.
Sintaxis
PathRecMoveBwd
[ \ ID := < variable (VAR) of pathrecid > ]
[ \ ToolOffs:= <expression (IN) of pos> ]
[ \ Speed:= <expression (IN) of speeddata> ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Identificador de grabadora de trayectorias pathrecid - Identificador de grabadora de trayectorias en la pgina 1247


Inicio y detencin de la grabadora de tra- PathRecStart - Inicia la grabadora de trayectoyectorias
rias en la pgina 327
PathRecStop - Detiene la grabadora de trayectorias en la pgina 330
Comprobacin de que la trayectoria graba- PathRecValidBwd - Comprueba si existe una
da es correcta
trayectoria de retroceso vlida guardada en la
pgina 989
PathRecValidFwd - Comprueba si existe una
trayectoria de avance vlida guardada en la
pgina 992
Reproduccin de la grabacin de trayecto- PathRecMoveFwd - Hace avanzar la grabadora
rias hacia delante
de trayectorias en la pgina 324
Almacenamiento y restauracin de trayec- StorePath - Almacena la trayectoria cuando se
torias
produce una interrupcin en la pgina 555
RestoPath - Restablece la trayectoria despus
de una interrupcin en la pgina 386
Otras instrucciones de posicionamiento

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Movimiento

Recuperacin en caso de error

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Recuperacin
en caso de error

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.109 PathRecMoveFwd - Hace avanzar la grabadora de trayectorias

1.109 PathRecMoveFwd - Hace avanzar la grabadora de trayectorias


Utilizacin
PathRecMoveFwd se utiliza para mover el robot de nuevo a la posicin en la que
se ejecut PathRecMoveBwd. Tambin es posible hacer avanzar parcialmente al
robot, mediante un identificador que se entrega durante el movimiento de retroceso.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de cmo utilizar la instruccin
PathRecMoveFwd.
Consulte tambin Ms ejemplos en la pgina 325.
Ejemplo 1
PathRecMoveFwd;

Se devuelve al robot a la posicin en la cual la grabadora de trayectorias inici el


movimiento de retroceso.
Argumentos
PathRecMoveFwd [\ID] [\ToolOffs] [\Speed]

[\ID]
Identifier
Tipo de dato: pathrecid
Una variable que especifica la posicin de ID hasta la que se desea avanzar. El
tipo de dato pathrecid es de un tipo sin valor y slo se utiliza como un
identificador para asignar un nombre a la posicin de grabacin.
Si no se especifica ninguna posicin de ID, el movimiento de avance se realiza
siempre hasta la posicin de interrupcin de la trayectoria original.
[\ToolOffs]
Tool Offset
Tipo de dato: pos
Proporciona un offset de separacin del TCP durante el movimiento. Se aplica
una coordenada cartesiana a las coordenadas del TCP. Resulta til si el robot
ejecuta un proceso en el que se aade material.
[\Speed]
Tipo de dato: speeddata
Esta velocidad tiene prioridad sobre la velocidad original utilizada durante el
movimiento de avance. Speeddata define la velocidad del punto central de la
herramienta, la reorientacin de la misma y los ejes externos. Si est presente,
esta velocidad se utiliza durante todo el movimiento de avance. Si se omite, el
movimiento de avance se ejecuta a la velocidad de las instrucciones de movimiento
originales.

Contina en la pgina siguiente


324

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.109 PathRecMoveFwd - Hace avanzar la grabadora de trayectorias
Continuacin
Ejecucin de programas
La grabadora de trayectorias se activa con la instruccin PathRecStart. Una vez
que la grabadora se ha iniciado, el robot puede retroceder a lo largo de la trayectoria
ejecutada, con ayuda de PathRecMoveBwd. Posteriormente, es posible solicitar
al robot que vuelva a la posicin en la que se inici la ejecucin hacia atrs. Para
ello se llama a PathRecMoveFwd. Tambin es posible hacer avanzar parcialmente
al robot, mediante un identificador que se entrega durante el movimiento de
retroceso.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin
PathRecMoveFwd.
VAR pathrecid start_id;
VAR pathrecid mid_id;
CONST robtarget p1 := [...];
CONST robtarget p2 := [...];
CONST robtarget p3 := [...];
PathRecStart start_id;
MoveL p1, vmax, z50, tool1;
MoveL p2, vmax, z50, tool1;
PathRecStart mid_id;
MoveL p3, vmax, z50, tool1;
StorePath;
PathRecMoveBwd \ID:=start_id;
PathRecMoveFwd \ID:=mid_id;
PathRecMoveFwd;
RestoPath;

MoveL

p1

MoveL

ID de inicio

p2

p3
MoveL

ID intermedia

PathRecMoveBwd

PathRecMoveFwd \ ID:=mid_id

PathRecMoveFwd

xx0500002133_es

En el ejemplo anterior, se inicia la grabadora de trayectorias y se marca el punto


inicial con el identificador de trayectoria start_id. A partir de ese momento, el
robot avanzar con las instrucciones de movimiento tradicionales y volver al
identificador de grabadora de trayectorias start_id mediante la trayectoria
grabada. Por ltimo, volver a avanzar en dos pasos mediante PathRecMoveFwd.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.109 PathRecMoveFwd - Hace avanzar la grabadora de trayectorias
Continuacin
Limitaciones
Los movimientos realizados utilizando la grabadora de trayectorias deben tener
lugar en el nivel de la rutina TRAP. Es decir, es necesario ejecutar StorePath
antes que PathRecMoveFwd.
Para poder ejecutar PathRecMoveFwd, es necesario haber ejecutado anteriormente
una instruccin PathRecMoveBwd.
Si no se desea volver al punto en el que se ejecut PathRecMoveBwd (mediante
la ejecucin de PathRecMoveFwd) es necesario detener la grabadora de
trayectorias con la instruccin PathRecStop. PathRecStop\Clear tambin borra
la trayectoria grabada.
PathRecMoveFwd no puede ejecutarse en rutinas de RAPID que estn conectadas
a los siguientes eventos especiales del sistema: PowerOn, Stop, QStop, Restart,
Reset o Step.
Sintaxis
PathRecMoveFwd (
[ \ ID := < variable (VAR) of pathid > ]
[ \ ToolOffs := <expression (IN) of pos> ]
[ \ Speed := <expression (IN) of speeddata> ];

Informacin relacionada
Para obtener ms informacin sobre Consulte
Identificadores de grabadora de trayec- pathrecid - Identificador de grabadora de trayectotorias
rias en la pgina 1247
Inicio y detencin de la grabadora de PathRecStart - Inicia la grabadora de trayectorias
trayectorias
en la pgina 327
PathRecStop - Detiene la grabadora de trayectorias
en la pgina 330
Comprobacin de que la trayectoria
grabada es correcta

PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida guardada en la pgina 989
PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada en la pgina 992

Reproduccin de la grabacin de trayec- PathRecMoveBwd - Hace retroceder la grabadora


torias hacia atrs
de trayectorias en la pgina 316
Almacenamiento y restauracin de tra- StorePath - Almacena la trayectoria cuando se
yectorias
produce una interrupcin en la pgina 555
RestoPath - Restablece la trayectoria despus de
una interrupcin en la pgina 386
Otras instrucciones de posicionamiento Technical reference manual - RAPID overview,
seccin Resumen sobre RAPID - Movimiento
Recuperacin en caso de error

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Recuperacin en
caso de error
Technical reference manual - RAPID overview,
seccin Caractersticas bsicas - Recuperacin en
caso de error

326

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.110 PathRecStart - Inicia la grabadora de trayectorias

1.110 PathRecStart - Inicia la grabadora de trayectorias


Utilizacin
PathRecStart se utiliza para iniciar la grabacin de la trayectoria del robot. La
grabadora de trayectorias almacena la informacin de las trayectorias durante la
ejecucin del programa de RAPID.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
PathRecStart.
Ejemplo 1
VAR pathrecid fixture_id;
PathRecStart fixture_id;

Se inicia la grabadora de trayectorias y el punto inicial (la posicin de la instruccin


en el programa de RAPID) se marca con el identificador fixture_id.
Argumentos
PathRecStart ID

ID
Identifier
Tipo de dato:pathrecid
Una variable que especifica el nombre de la posicin de inicio de la grabacin. El
tipo de dato pathrecid es de un tipo sin valor y slo se utiliza como un
identificador para asignar un nombre a la posicin de grabacin.
Ejecucin de programas
Cuando se solicita su inicio, la grabadora de trayectorias inicia la grabacin interna
de la trayectoria del robot en el controlador del robot. La secuencia de posiciones
de programa grabada puede recorrerse en sentido inverso mediante
PathRecMoveBwd, haciendo que el robot retroceda a lo largo de la trayectoria
ejecutada.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.110 PathRecStart - Inicia la grabadora de trayectorias
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin PathRecStart.
Ejemplo 1
VAR pathrecid origin_id;
VAR pathrecid corner_id;
VAR num choice;
MoveJ p1, vmax, z50, tool1;
PathRecStart origin_id;
MoveJ p2, vmax, z50, tool1;
PathRecStart corner_id;
MoveL p3, vmax, z50, tool1;
MoveAbsJ jt4, vmax, fine, tool1;
ERROR
TPReadFK choice,"Extract
to:",stEmpty,stEmpty,stEmpty,"Origin","Corner";
IF choice=4 OR choice=5 THEN
StorePath;
IF choice=4 THEN
PathRecMoveBwd \ID:=origin_id;
ELSE
PathRecMoveBwd \ID:=corner_id;
ENDIF
Stop;
!Fix problem
PathRecMoveFwd;
RestoPath;
StartMove;
RETRY;
ENDIF

En el ejemplo anterior, la grabadora de trayectorias se utiliza para mover el robot


hasta una posicin de servicio en caso de que se produzca un error durante la
ejecucin normal.
El robot ejecuta el movimiento a lo largo de una trayectoria. Despus de la posicin
p1, se inicia la grabadora de trayectorias. Despus del punto p2, se inserta otro
identificador de trayectoria. Suponga que se produce un error recuperable durante
el movimiento desde la posicin p3 hasta la posicin jt4. En este momento puede
ejecutarse el gestor de errores, y el usuario tiene la opcin de extraer el robot
hasta las posiciones Origin (punto p1) o Corner (punto p2). A continuacin, se
cambia el nivel de la trayectoria con StorePath, para poder reiniciar el
movimiento ms adelante en el lugar del error. Una vez que el robot ha retrocedido
desde la posicin del error, el usuario tiene la opcin de resolver el error
(normalmente solucionando el problema en el equipo que rodea al robot).
A continuacin, se ordena el retroceso del robot hasta la posicin del error. El
nivel de la trayectoria se devuelve al nivel normal y se realiza un intento de
recuperacin.

Contina en la pgina siguiente


328

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.110 PathRecStart - Inicia la grabadora de trayectorias
Continuacin
Limitaciones
La grabadora de trayectorias slo puede iniciarse y slo grabar la trayectoria en
el nivel de trayectoria de base. Es decir, los movimientos del nivel StorePath no
se graban.
Sintaxis
PathRecStart
[ ID :=] < variable (VAR) of pathrecid> ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Identificadores de grabadora de trayec- pathrecid - Identificador de grabadora de trayectorias


torias en la pgina 1247
Detencin de la grabadora de trayecto- PathRecStop - Detiene la grabadora de trayectorias
rias en la pgina 330
Comprobacin de que la trayectoria
grabada es correcta

PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida guardada en la pgina 989
PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada en la pgina 992

Reproduccin de la grabacin de trayec- PathRecMoveBwd - Hace retroceder la grabadora


torias hacia atrs
de trayectorias en la pgina 316
Reproduccin de la grabacin de trayec- PathRecMoveFwd - Hace avanzar la grabadora
torias hacia delante
de trayectorias en la pgina 324
Movimiento en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.111 PathRecStop - Detiene la grabadora de trayectorias

1.111 PathRecStop - Detiene la grabadora de trayectorias


Utilizacin
PathRecStop se utiliza para detener la grabacin de la trayectoria del robot.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin PathRecStop.
Consulte tambin Ms ejemplos, a continuacin.
Ejemplo 1
PathRecStop \Clear;

Se detiene la grabadora de trayectorias y se vaca el bfer de informacin de


trayectorias grabada.
Argumentos
PathRecStop [\Clear]

[\Clear]
Tipo de dato: switch
Borra la trayectoria grabada.
Ejecucin de programas
Cuando se solicita la detencin de la grabadora de trayectorias, la grabacin de
la trayectoria se detiene. El argumento opcional \Clear elimina del bfer la
informacin de la trayectoria grabada, impidiendo la ejecucin accidental de la
trayectoria grabada.
Una vez que la grabadora ha sido detenida con PathRecStop, no es posible utilizar
las trayectorias grabadas anteriormente para los movimientos de retroceso
(PathRecMoveBwd). Sin embargo, s es posible utilizar trayectorias grabadas
anteriormente si se ejecuta de nuevo PathRecStart desde la misma posicin en
la que fue detenida la grabadora de trayectorias. Consulte el ejemplo siguiente.

Contina en la pgina siguiente


330

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.111 PathRecStop - Detiene la grabadora de trayectorias
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin PathRecStop.
LOCAL VAR pathrecid id1;
LOCAL VAR pathrecid id2;
LOCAL CONST robtarget p0:= [...];
......
LOCAL CONST robtarget p6 := [...];
PROC example1()
MoveL p0, vmax, z50, tool1;
PathRecStart id1;
MoveL p1, vmax, z50, tool1;
MoveL p2, vmax, z50, tool1;
PathRecStop;
MoveL p3, vmax, z50, tool1;
MoveL p4, vmax, z50, tool1;
MoveL p2, vmax, z50, tool1;
PathRecStart id2;
MoveL p5, vmax, z50, tool1;
MoveL p6, vmax, z50, tool1;
StorePath;
PathRecMoveBwd \ID:=id1;
PathRecMoveFwd;
RestoPath;
StartMove;
MoveL p7, vmax, z50, tool1;
ENDPROC
PROC example2()
MoveL p0, vmax, z50, tool1;
PathRecStart id1;
MoveL p1, vmax, z50, tool1;
MoveL p2, vmax, z50, tool1;
PathRecStop;
MoveL p3, vmax, z50, tool1;
MoveL p4, vmax, z50, tool1;
PathRecStart id2;
MoveL p2, vmax, z50, tool1;
MoveL p5, vmax, z50, tool1;
MoveL p6, vmax, z50, tool1;
StorePath;
PathRecMoveBwd \ID:=id1;
PathRecMoveFwd;
RestoPath;
StartMove;
MoveL p7, vmax, z50, tool1;
ENDPROC

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.111 PathRecStop - Detiene la grabadora de trayectorias
Continuacin

PathRecStop_MoreExamples_1_xx0500002101

En los ejemplos anteriores se describe la grabacin de la trayectoria del robot en


el momento de la detencin de la trayectoria en medio de una secuencia. En
example1, la orden PathRecMoveBwd \ID:=id1; es vlida y el robot ejecuta la
trayectoria siguiente: p6 -> p5 -> p2 -> p1 -> p0
El motivo de que la orden sea vlida es que la grabadora fue detenida e iniciada
en la misma posicin exacta del robot. Si no es un comportamiento deseado, la
orden de detencin debe incluir el argumento opcional \Clear. De esta forma,
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. En este caso, PathRecMoveBwd \ID:=id1 genera
un error. Esto se debe a que no existe ninguna trayectoria grabada entre p4, p3
y p2. Sin embargo, es posible ejecutar PathRecMoveBwd \ID:=id2.
Sintaxis
PathRecStop
[ \switch Clear ] ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Identificadores de grabadora de trayec- pathrecid - Identificador de grabadora de trayectotorias
rias en la pgina 1247
Inicio de la grabadora de trayectorias

PathRecStart - Inicia la grabadora de trayectorias


en la pgina 327

Comprobacin de que la trayectoria


grabada es correcta

PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida guardada en la pgina 989
PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada en la pgina 992

Reproduccin de la grabacin de trayec- PathRecMoveBwd - Hace retroceder la grabadora


torias hacia atrs
de trayectorias en la pgina 316
Reproduccin de la grabacin de trayec- PathRecMoveFwd - Hace avanzar la grabadora de
torias hacia delante
trayectorias en la pgina 324
Movimiento en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S

332

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.112 PathResol - Ajusta la resolucin de la trayectoria

1.112 PathResol - Ajusta la resolucin de la trayectoria


Utilizacin
PathResol (Path Resolution) se utiliza para ajustar el tiempo configurado de
muestreo de trayectoria geomtrica de los parmetros de sistema para las unidades
mecnicas controladas desde la tarea de programa actual.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Descripcin
La resolucin de la trayectoria afecta a la exactitud de la trayectoria interpolada y
el tiempo de ciclo de programa. Aumenta la exactitud de la trayectoria y, con
frecuencia, el tiempo de ciclo se reduce cuando se reduce el valor del parmetro
PathSampleTime. Si se usa un valor demasiado bajo para el parmetro
PathSampleTime, pueden aparecer problemas de exceso de carga en las
aplicaciones que consumen ms recursos del sistema. Sin embargo, el uso del
valor estndar configurado para la resolucin de la trayectoria PathSampleTime
100%) evita problemas de sobrecarga de la CPU y proporciona una exactitud de
trayectoria adecuada para la mayora de las situaciones.
Ejemplo de uso de PathResol:
Los movimientos crticos desde el punto de vista dinmico (carga til mxima, alta
velocidad, movimientos combinados de los ejes cerca del borde del rea de trabajo)
puede causar problemas de carga en la CPU. Aumente el parmetro
PathSampleTime.
El uso de ejes externos con un rendimiento bajo puede generar problemas de
sobrecarga de la CPU durante la coordinacin. Aumente el parmetro
PathSampleTime.
La soldadura al arco con una oscilacin de alta frecuencia puede requerir una alta
resolucin de la trayectoria interpolada. Reduzca el valor del parmetro
PathSampleTime.
La realizacin de pequeos crculos o movimientos pequeos combinados con
cambios de direccin pueden reducir la calidad del rendimiento de la trayectoria
y pueden suponer tiempos de ciclo mayores. Reduzca el valor del parmetro
PathSampleTime.
La aplicacin de adhesivo con grandes reorientaciones y zonas de esquina
pequeas puede provocar variaciones de velocidad. Reduzca el valor del parmetro
PathSampleTime.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin PathResol.
MoveJ p1,v1000,fine,tool1;
PathResol 150;

Con el robot en un punto de paro, el tiempo de muestreo de la trayectoria aumenta


al 150 % del valor configurado.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.112 PathResol - Ajusta la resolucin de la trayectoria
Continuacin
Argumentos
PathResol PathSampleTime

PathSampleTime
Tipo de dato: num
El ajuste, como porcentaje del tiempo de muestreo de trayectoria configurado. El
100% corresponde al tiempo de muestreo configurado para la trayectoria. Dentro
del rango del 25% al 400%.
Un valor inferior en el parmetro PathSampleTime aumenta la resolucin de la
trayectoria (exactitud de la trayectoria).
Ejecucin de programas
Las resoluciones de la trayectoria en todas las instrucciones posteriores de
posicionamiento se ven afectadas hasta que se ejecuta una nueva instruccin
PathResol. Esto afectar a la resolucin de la ruta durante todas las operaciones
de movimiento del programa (el nivel de trayectoria predeterminado y el nivel de
trayectoria despus de StorePath) y tambin durante el movimiento.
En un sistema MultiMove en el modo coordinado sincronizado son vlidos los
siguientes puntos:

Todas las unidades mecnicas incluidas en el modo coordinado sincronizado


se ejecutan con la resolucin de trayectoria actual para el planificador de
movimientos actual (utilizado).

Un nuevo orden de resolucin de trayectoria frente al planificador de


movimientos actual afecta al movimiento coordinado sincronizado y al
movimiento independiente posterior de ese planificador de movimientos.

Un nuevo orden de resolucin de trayectoria frente a otro planificador de


movimientos slo afecta al movimiento independiente posterior de ese
planificador de movimientos.

Para ms informacin acerca de la conexin entre la tarea de programa y el


planificador de movimientos, consulte el Manual de aplicaciones - MultiMove.
El valor predeterminado para la redefinicin del tiempo de muestreo de la trayectoria
es el 100%. Este valor se configura automticamente en los casos siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

El ajuste actual del tiempo de muestreo puede leerse a travs de la variable


C_MOTSET (tipo de dato motsetdata) del componente pathresol.
Limitacin
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
PathResol no puede ejecutarse en rutinas de RAPID que estn conectadas a los
siguientes eventos especiales del sistema: PowerOn, Stop, QStop,Restart o Step.
Contina en la pgina siguiente
334

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.112 PathResol - Ajusta la resolucin de la trayectoria
Continuacin
Sintaxis
PathResol
[PathSampleTime := ] < expression (IN) of num> ;

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Instrucciones de posicionamiento Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S
Parmetros de movimiento

Technical reference manual - RAPID overview, seccin


Resumen sobre RAPID - Parmetros de movimiento

Configuracin de la resolucin de Manual de referencia tcnica - Parmetros del sistema,


la trayectoria
seccin Motion Planner - CPU Load Equalization

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.113 PDispOff - Desactiva el desplazamiento de programa

1.113 PDispOff - Desactiva el desplazamiento de programa


Utilizacin
PDispOff (Program Displacement Off) se utiliza para desactivar un desplazamiento
de programa.
El desplazamiento de programa se activa mediante la instruccin 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.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin PDispOff.
Ejemplo 1
PDispOff;

Desactivacin del desplazamiento de programa.


Ejemplo 2
MoveL p10, v500, z10, tool1;
PDispOn \ExeP:=p10, p11, tool1;
MoveL p20, v500, z10, tool1;
MoveL p30, v500, z10, tool1;
PDispOff;
MoveL p40, v500, z10, tool1;

El desplazamiento de programa se define como la diferencia entre las posiciones


p10 y p11. El desplazamiento afecta al movimiento hacia p20 y p30, pero no
hacia p40.
Ejecucin de programas
Se elimina el desplazamiento de programa que est activado. 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
estn relacionadas entre s.
Sintaxis
PDispOff ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin del desplazamiento de progra- PDispOn - Activa el desplazamiento de programa con dos posiciones
ma en la pgina 337
Definicin del desplazamiento de progra- PDispSet - Activa un desplazamiento de programa con una base de coordenadas conoci- ma a partir de una base de coordenadas conoda
cida en la pgina 342

336

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.114 PDispOn - Activa el desplazamiento de programa

1.114 PDispOn - Activa el desplazamiento de programa


Utilizacin
PDispOn (Program Displacement On) se utiliza para definir y activar un nuevo
desplazamiento de programa usando dos posiciones del robot.
El desplazamiento de programa se utiliza, por ejemplo, despus de realizar una
bsqueda o cuando se repiten patrones de movimiento similares en partes distintas
del programa.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin PDispOn.
Consulte tambin Ms ejemplos en la pgina 340.
Ejemplo 1
MoveL p10, v500, z10, tool1;
PDispOn \ExeP:=p10, p20, tool1;

Activacin de un desplazamiento de programa (desplazamiento en paralelo). El


offset se calcula a partir de la diferencia entre las posiciones p10 y p20.
Ejemplo 2
MoveL p10, v500, fine \Inpos := inpos50, tool1;
PDispOn *, tool1;

Activacin de un desplazamiento de programa (desplazamiento en paralelo). Dado


que en la instruccin 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 posicin real del robot y el punto programado (*)
almacenado en la instruccin.
Ejemplo 3
PDispOn \Rot \ExeP:=p10, p20, tool1;

Activacin de un desplazamiento de programa con una rotacin. El offset se calcula


a partir de la diferencia entre las posiciones p10 y p20.
Argumentos
PDispOn [\Rot] [\ExeP] ProgPoint Tool [\WObj]

[ \Rot ]
Rotation
Tipo de dato: switch
La diferencia de orientacin de la herramienta se tiene en cuenta, lo cual implica
una rotacin del programa.
[ \ExeP ]
Executed Point
Tipo de dato: robtarget

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.114 PDispOn - Activa el desplazamiento de programa
Continuacin
La nueva posicin del robot, utilizada para el clculo del desplazamiento. Si se
omite el argumento, se utiliza la posicin actual del robot en el momento de la
ejecucin del programa.
ProgPoint
Programmed Point
Tipo de dato: robtarget
La posicin original del robot en el momento de la programacin.
Tool
Tipo de dato: tooldata
La herramienta utilizada durante la programacin, es decir, el TCP con el que est
relacionada la posicin ProgPoint.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin ProgPoint.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Sin embargo, si se utiliza un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento.
Los argumentos Tool y \WObj se utilizan en conjunto para calcular la posicin
ProgPoint durante la programacin y para calcular la posicin actual durante la
ejecucin del programa si no se programa ningn argumento \ExeP.
Ejecucin de programas
El desplazamiento de programa implica que el sistema de coordenadas ProgDisp
se traslada respecto del sistema de coordenadas de objeto. Dado que todas las
posiciones dependen del sistema de coordenadas ProgDisp, se desplazan tambin
todas las posiciones programadas. Consulte la figura siguiente, que muestra el
desplazamiento lateral de una posicin programada, con ayuda del desplazamiento
de programa.

y
Nueva
posicin, ExeP

y
Posicin
original, ProgPoint

x
Base de coordenadas de
desplazamiento de programa

Sistema de coordenadas de desplazamiento del programa


(ProgDisp )

Sistema de coordenadas de objeto


xx0500002186_es

El desplazamiento de programa se activa cuando la instruccin PDispOn se ejecuta


y permanece activa hasta que se activa otro desplazamiento de programa (la
Contina en la pgina siguiente
338

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.114 PDispOn - Activa el desplazamiento de programa
Continuacin
instruccin PDispSet o PDispOn) o hasta que se desactiva el desplazamiento de
programa (la instruccin PDispOff).
Slo puede estar activado un nico desplazamiento de programa cada vez. Por
otro lado, es posible programar varias instrucciones PDispOn, una tras otra y, en
este caso, se suman los distintos desplazamientos de programa.
El desplazamiento de programa se calcula como la diferencia entre ExeP y
ProgPoint. Si no se ha especificado el valor de ExeP, se utiliza en su lugar la
posicin actual del robot en el momento de la ejecucin del programa. Dado que
es la posicin real del robot que se utiliza, el robot no debe estar en movimiento
cuando se ejecuta PDispOn.
Si se utiliza el argumento \Rot la rotacin se calcula tambin a partir de la
orientacin de la herramienta en las dos posiciones. El desplazamiento se calcula
de forma que la nueva posicin (ExeP) tendr la misma posicin y orientacin
respecto del sistema de coordenadas desplazado, ProgDisp, que las que tena
la posicin anterior (ProgPoint) respecto del sistema de coordenadas original.
Consulte la figura siguiente, que muestra la traslacin y rotacin de una posicin
programada.

Nueva
posicin, ExeP

y
Posicin
original, ProgPoint

Nueva
orientacin

Orientacin
Base de coordenadas de
Sistema de coordenadas de desplazamiento del programa
original
desplazamiento de programa (ProgDisp )

Sistema de coordenadas de objeto


xx0500002187_es

El desplazamiento de programa se elimina automticamente en los casos


siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.114 PDispOn - Activa el desplazamiento de programa
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin PDispOn.
Ejemplo 1
PROC draw_square()
PDispOn *, tool1;
MoveL *, v500, z10,
MoveL *, v500, z10,
MoveL *, v500, z10,
MoveL *, v500, z10,
PDispOff;
ENDPROC
...
MoveL p10, v500, fine
draw_square;
MoveL p20, v500, fine
draw_square;
MoveL p30, v500, fine
draw_square;

tool1;
tool1;
tool1;
tool1;

\Inpos := inpos50, tool1;


\Inpos := inpos50, tool1;
\Inpos := inpos50, tool1;

La rutina draw_square se utiliza para ejecutar el mismo patrn de movimiento


en tres posiciones diferentes, basndose en las posiciones p10, p20 y p30.
Consulte la figura siguiente, que muestra que cuando se usa el desplazamiento
de programa, es posible reutilizar patrones de movimiento.

xx0500002185

Ejemplo 2
SearchL sen1, psearch, p10, v100, tool1\WObj:=fixture1;
PDispOn \ExeP:=psearch, *, tool1 \WObj:=fixture1;

Se realiza una bsqueda en la cual la posicin buscada por el robot se almacena


en la posicin psearch. Cualquier movimiento realizado a continuacin parte de
esta posicin utilizando un desplazamiento de programa (desplazamiento paralelo).
El desplazamiento se calcula a partir de la diferencia existente entre la posicin
buscada y el punto programado (*) almacenado en la instruccin. Todas las
posiciones se basan en el sistema de coordenadas de objeto de fixture1.
Sintaxis
PDispOn
[ [ \ Rot ]
[\ ExeP := < expression (IN) of robtarget>],]
[ ProgPoint := ] < expression (IN) of robtarget> ,
[ Tool := ] < persistent (PERS) of tooldata>
[ \WObj := < persistent (PERS) of wobjdata> ] ;

Contina en la pgina siguiente


340

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.114 PDispOn - Activa el desplazamiento de programa
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Desactivacin del desplazamiento de


programa

PDispOff - Desactiva el desplazamiento de programa en la pgina 336

Definicin del desplazamiento de progra- PDispSet - Activa un desplazamiento de programa con una base de coordenadas conoci- ma a partir de una base de coordenadas conoda
cida en la pgina 342
Sistemas de coordenadas

Manual de referencia tcnica - Parmetros del


sistema, seccin Principios de movimiento y
E/S - Sistemas de coordenadas

Definicin de herramientas

tooldata - Datos de herramientas en la pgina1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.115 PDispSet - Activa un desplazamiento de programa a partir de una base de coordenadas conocida

1.115 PDispSet - Activa un desplazamiento de programa a partir de una base de


coordenadas conocida
Utilizacin
PDispSet (Program Displacement Set) se usa para definir y activar un
desplazamiento de programa usando la base de coordenadas conocida.
El desplazamiento de programa se utiliza, por ejemplo, cuando se repiten patrones
de movimiento similares en partes distintas del programa.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin PDispSet.
Ejemplo 1
VAR pose xp100 := [ [100, 0, 0], [1, 0, 0, 0] ];
...
PDispSet xp100;

Activacin del desplazamiento de programa xp100, que implica que:

El sistema de coordenadas ProgDisp se desplaza 100 mm respecto del


sistema de coordenadas del objeto en la direccin del eje x positivo (consulte
la figura siguiente).

Siempre y cuando est activado este desplazamiento de programa, todas


las posiciones se desplazan 100 mm en la direccin del eje x.

La figura muestra un desplazamiento de programa de 100 mm a lo largo del eje x.

Objeto

ProgDisp

100

xx0500002199_es

Argumentos
PDispSet DispFrame

DispFrame
Displacement Frame
Tipo de dato: pose
El desplazamiento de programa se define mediante un dato del tipo pose.

Contina en la pgina siguiente


342

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.115 PDispSet - Activa un desplazamiento de programa a partir de una base de coordenadas conocida
Continuacin
Ejecucin de programas
El desplazamiento de programa implica la traslacin y/o la rotacin del sistema
de coordenadas ProgDisp respecto del sistema de coordenadas de objeto. Dado
que todas las posiciones dependen del sistema de coordenadas ProgDisp, se
desplazan tambin todas las posiciones programadas. Consulte la figura siguiente,
que muestra la traslacin y rotacin de una posicin programada.

Nueva
posicin

Nueva
orientacin

Posicin
original

Orientacin 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 instruccin PDispOn se ejecuta


y permanece activa hasta que se activa otro desplazamiento de programa (la
instruccin PDispSet o PDispOn) o hasta que se desactiva el desplazamiento de
programa (la instruccin PDispOff).
Slo puede estar activado un nico desplazamiento de programa cada vez. No es
posible sumar desplazamientos de programa mediante PDispSet.
El desplazamiento de programa se elimina automticamente en los casos
siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

Sintaxis
PDispSet
[ DispFrame := ] < expression (IN) of pose> ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Desactivacin del desplazamiento de


programa

PDispOff - Desactiva el desplazamiento de programa en la pgina 336

Definicin del desplazamiento de progra- PDispOn - Activa el desplazamiento de programa con dos posiciones
ma en la pgina 337
Definicin de datos del tipo pose

pose - Transformaciones de coordenadas en la


pgina 1251

Sistemas de coordenadas

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sistemas de coordenadas

Ejemplos de cmo puede usarse el des- PDispOn - Activa el desplazamiento de prograplazamiento de programa
ma en la pgina 337

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.116 ProcCall - Llama a un nuevo procedimiento

1.116 ProcCall - Llama a un nuevo procedimiento


Utilizacin
Las llamadas a procedimientos se utilizan para transferir la ejecucin del programa
a otro procedimiento. Una vez ejecutado en su totalidad el procedimiento, la
ejecucin del programa contina con la instruccin que aparece a continuacin
de la llamada al procedimiento.
Normalmente, es posible enviar un conjunto de argumentos al nuevo procedimiento.
Estos argumentos controlan el comportamiento del procedimiento y permiten
utilizar un mismo procedimiento para distintas operaciones.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ProcCall.
Ejemplo 1
weldpipe1;

Llama al procedimiento weldpipe1 .


Ejemplo 2
errormessage;
Set do1;
...
PROC errormessage()
TPWrite "ERROR";
ENDPROC

Se llama al procedimiento errormessage . Cuando el procedimiento se completa,


la ejecucin del programa vuelve a la instruccin que aparece a continuacin de
la llamada al procedimiento, Set do1.
Argumentos
Procedure { Argument }

Procedure
Identifier
El nombre del procedimiento al que se llama.
Argument
Tipo de dato: Segn la declaracin del procedimiento.
Los argumentos del procedimiento (segn los parmetros del procedimiento).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ProcCall.
Ejemplo 1
weldpipe2 10, lowspeed;

Llama al procedimiento weldpipe2, con dos argumentos.


Ejemplo 2
weldpipe3 10 \speed:=20;

Contina en la pgina siguiente


344

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.116 ProcCall - Llama a un nuevo procedimiento
Continuacin
Llama al procedimiento weldpipe3, con un argumento obligatorio y un argumento
opcional.
Limitaciones
Los argumentos deben coincidir con sus parmetros:

Todos los argumentos obligatorios deben incluirse.

Es necesario situarlos en el mismo orden.

Deben ser del mismo tipo de datos.

Deben ser del tipo correcto en cuanto al modo de acceso (entrada, variable
o persistente).

Una rutina puede llamar a otra rutina, que a su vez puede llamar a otra, etc. Una
rutina tambin puede llamarse a s misma, lo que se conoce como llamada
recursiva. El nmero de niveles de rutinas permitido depende del nmero de
parmetros. Normalmente se permiten ms de 10 niveles.
Sintaxis
(EBNF)
<procedure> [ <argument list> ] ;
<procedure> ::= <identifier>

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Argumentos, parmetros

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Rutinas

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.117 ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos

1.117 ProcerrRecovery - Genera errores de movimiento de proceso y permite la


recuperacin tras ellos
Utilizacin
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.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
ProcerrRecovery.
Consulte tambin Ms ejemplos en la pgina 348.
Los ejemplos siguientes no son realistas, pero se aaden por motivos pedaggicos.
Ejemplo 1
MoveL p1, v50, z30, tool2;
ProcerrRecovery \SyncOrgMoveInst;
MoveL p2, v50, z30, tool2;
ERROR
IF ERRNO = ERR_PATH_STOP THEN
StartMove;
RETRY;
ENDIF

El movimiento del robot se detiene en su camino hacia p1 y la ejecucin del


programa se transfiere al gestor de ERROR de la rutina que cre la trayectoria actual
en la que se ha producido el error, en este caso la trayectoria hacia MoveL p1. El
movimiento se reinicia con StartMove, mientras que la ejecucin contina con
RETRY.
Ejemplo 2
MoveL p1, v50, fine, tool2;
ProcerrRecovery \SyncLastMoveInst;
MoveL p2, v50, z30, tool2;
ERROR
IF ERRNO = ERR_PATH_STOP THEN
StartMove;
RETRY;
ENDIF

El movimiento del robot se detiene inmediatamente en su camino hacia p2. La


ejecucin 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
instruccin de movimiento cuando se produjo el error, en este caso MoveL p2. El
movimiento se reinicia con StartMove, mientras que la ejecucin contina con
RETRY.
Argumentos
ProcerrRecovery[\SyncOrgMoveInst] | [\SyncLastMoveInst]
[\ProcSignal]

Contina en la pgina siguiente


346

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.117 ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos
Continuacin
[\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.
[\SyncLastMoveInst]
Tipo de dato: switch
El error puede ser gestionado en la rutina en la que el programa est ejecutando
una instruccin de movimiento en el momento en que se produjo el error.
Si el programa no est ejecutando ninguna instruccin de movimiento en el
momento en el que se produce el error, la transferencia de la ejecucin al gestor
de ERROR se retrasa hasta que el programa ejecuta la siguiente instruccin de
movimiento. 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. El error puede ser gestionado en esa rutina.
[\ProcSignal]
Tipo de dato: signaldo
Un parmetro opcional que permite al usuario activar o desactivar el uso de la
instruccin. Si se utiliza este parmetro y el valor de la seal es 0, se genera un
error recuperable y no se generar ningn error de proceso.
Ejecucin de programas
La ejecucin de ProcerrRecovery en el modo continuo da lugar a lo siguiente:

Instantneamente, el robot se detiene en su trayectoria.

Se cambia la variable ERRNO a ERR_PATH_STOP.

La ejecucin se transfiere a algn gestor de ERROR, de acuerdo con las reglas


para errores elevados asncronamente.

Esta instruccin no hace nada en el modo de ejecucin paso a paso.


Para obtener una descripcin de los errores elevados asncronamente que se
generan con ProcerrRecovery, consulte el documento RAPID kernel
reference/Error recovery/Asynchronously raised errors.
ProcerrRecovery tambin puede usarse en los sistemas MultiMove para transferir
la ejecucin al gestor de ERROR de varias tareas de programa si se utiliza el modo
sincronizado.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.117 ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin
ProcerrRecovery.
Ejemplo con ProcerrRecovery\SyncOrgMoveInst
MODULE user_module
VAR intnum proc_sup_int;
PROC main()
...
MoveL p1, v1000, fine, tool1;
do_process;
...
ENDPROC
PROC do_process()
my_proc_on;
MoveL p2, v200, z10, tool1;
MoveL p3, v200, fine, tool1;
my_proc_off;
ERROR
IF ERRNO = ERR_PATH_STOP THEN
my_proc_on;
StartMove;
RETRY;
ENDIF
ENDPROC
TRAP iprocfail
my_proc_off;
ProcerrRecovery \SyncOrgMoveInst;
ENDTRAP
PROC my_proc_on()
SetDO do_myproc, 1;
CONNECT proc_sup_int WITH iprocfail;
ISignalDI di_proc_sup, 1, proc_sup_int;
ENDPROC
PROC my_proc_off()
SetDO do_myproc, 0;
IDelete proc_sup_int;
ENDPROC
ENDMODULE

En este ejemplo, los errores elevados asncronamente generados por


ProcerrRecovery con el modificador \SyncOrgMoveInst pueden ser tratados
en la rutina do_process, porque la trayectoria en la que se produjo el error siempre
se crea en la rutina o_process.
El flujo de proceso se inicia cambiando la seal do_myproc a 1. La seal
di_proc_sup supervisa el proceso y se genera un error asncrono si di_proc_sup
Contina en la pgina siguiente
348

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.117 ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos
Continuacin
pasa a tener el valor 1. En este ejemplo sencillo, el error se resuelve cambiando
de nuevo el valor de do_myproc a 1 antes de reanudar el movimiento.
Ejemplo con ProcerrRecovery\SyncLastMoveInst
MODULE user_module
PROC main()
...
MoveL p1, v1000, fine, tool1;
do_process;
...
ENDPROC
PROC do_process()
proc_on;
proc_move p2, v200, z10, tool1;
proc_move p3, v200, fine, tool1;
proc_off;
ERROR
IF ERRNO = ERR_PATH_STOP THEN
StorePath;
p4 := CRobT(\Tool:=tool1);
! Move to service station and fix the problem
MoveL p4, v200, fine, tool1;
RestoPath;
proc_on;
StartMoveRetry;
ENDIF
ENDPROC
ENDMODULE
MODULE proc_module (SYSMODULE, NOSTEPIN)
VAR intnum proc_sup_int;
VAR num try_no := 0;
TRAP iprocfail
proc_off;
ProcerrRecovery \SyncLastMoveInst;
ENDTRAP
PROC proc_on()
SetDO do_proc, 1;
CONNECT proc_sup_int WITH iprocfail;
ISignalDI di_proc_sup, 1, proc_sup_int;
ENDPROC
PROC proc_off()
SetDO do_proc, 0;
IDelete proc_sup_int;
ENDPROC

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.117 ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos
Continuacin
PROC proc_move (robtarget ToPoint, speeddata Speed, zonedata Zone,
PERS tooldata Tool)
MoveL ToPoint, Speed, Zone, Tool;
ERROR
IF ERRNO = ERR_PATH_STOP THEN
try_no := try_no + 1;
IF try_no < 4 THEN
proc_on;
StartMoveRetry;
ELSE
RaiseToUser \Continue;
ENDIF
ENDPROC
ENDMODULE

En este ejemplo, los errores elevados asncronamente 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, la transferencia al gestor de ERROR se retrasar hasta la
ejecucin de la siguiente instruccin MoveL en la rutina proc_move. Recuerde
que los movimientos tambin se detienen inmediatamente.
El flujo de proceso se inicia cambiando la seal do_myproc a 1. La seal
di_proc_sup supervisa el proceso y se genera un error asncrono si di_proc_sup
pasa a tener el valor 1. En este ejemplo sencillo, el error se resuelve cambiando
de nuevo el valor de do_myproc a 1 antes de reanudar el movimiento.
Si se utiliza la rutina NOSTEPIN predefinida, recomendamos utilizar el parmetro
de modificacin de opcin \SyncLastMoveInst, dado que la rutina predefinida
tambin puede tomar la decisin de gestionar una situacin de error dentro de la
rutina, mientras que en otros casos deber ser realizado por el usuario final.
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de errores.
Si se utiliza el parmetro opcional \ProcSignal y la seal est desactivada al
ejecutar la instruccin, la variable de sistema ERRNO cambia a
ERR_PROCSIGNAL_OFF y la ejecucin contina en el gestor de errores.
Si no hay contacto con la unidad de E/S, la variable de sistema ERRNO cambia a
ERR_NORUNUNIT y la ejecucin contina en el gestor de errores.
Limitaciones
La recuperacin de errores desde los errores de proceso elevados
asincrnicamente slo puede hacerse si la tarea de movimiento que contiene la
instruccin de movimiento se ejecuta en el nivel de base en el momento en el que
se produce el error de proceso. Por tanto, la recuperacin de errores no puede
hacerse si la tarea de programa que contiene la instruccin de proceso se ejecuta
dentro de:

Cualquier rutina de evento

Contina en la pgina siguiente


350

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.117 ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos
Continuacin

Cualquier gestor de rutina (ERROR, BACKWARD o UNDO)

Nivel de ejecucin de usuario (rutina de servicio)

Consulte el Manual de referencia de RAPID - Kernel de RAPID, Recuperacin de


errores, Errores elevados asncronamente.
Si no se utiliza ningn gestor de errores con StartMove + RETRY o se utiliza
StartMoveRetry, la ejecucin del programa se colgar. La nica forma de
restablecer esta situacin es trasladar el PP a Main.
Sintaxis
ProcerrRecovery
[ \ SyncOrgMoveInst ] | [ \ SyncLastMoveInst ]
[ \ ProcSignal := ] < variable (VAR) of signaldo > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Gestores de errores

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Recuperacin
en caso de error

Errores elevados asncronamente

Manual de referencia de RAPID - Kernel de RAPID


- Recuperacin en caso de errores

Propagacin de un error al nivel del


usuario

RaiseToUser - Propaga un error al nivel del


usuario en la pgina 358

Reanudacin del movimiento y la ejecu- StartMoveRetry - Reanuda el movimiento y la


cin de programas
ejecucin del robot en la pgina 521

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.118 PulseDO - Genera un pulso en una seal digital de salida

1.118 PulseDO - Genera un pulso en una seal digital de salida


Utilizacin
PulseDO se utiliza para generar un pulso en una seal digital de salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin PulseDO.
Ejemplo 1
PulseDO do15;

Se genera un pulso con una duracin de 0,2 s en la seal de salida do15.


Ejemplo 2
PulseDO \PLength:=1.0, ignition;

Se genera un pulso con una duracin de 1,0 s en la seal ignition.


Ejemplo 3
! Program task MAIN
PulseDO \High, do3;
! At almost the same time in program task BCK1
PulseDO \High, do3;

Se genera el valor positivo (valor 1) en la seal do3 desde dos tareas de programa
casi al mismo tiempo. El resultado es un pulso positivo con una duracin ms
larga que la duracin predeterminada de 0,2 s o dos pulsos positivos uno despus
del otro, con una duracin de pulso de 0,2 s.
Argumentos
PulseDO [ \High ] [ \PLength ] Signal

[ \High ]
High level
Tipo de dato: switch
Especifica que el valor de la seal debe ser siempre el valor alto (valor 1) cuando
se ejecuta la instruccin, independientemente de su estado actual.
[ \PLength ]
Pulse Length
Tipo de dato: num
La duracin del pulso en segundos (de 0,001 a 2.000 s). Si se omite el argumento,
se genera un pulso de 0,2 segundos.
Signal
Tipo de dato: signaldo
El nombre de la seal en la que se desea generar el pulso.
Ejecucin de programas
La instruccin siguiente tras PulseDO se ejecuta directamente despus del inicio
del pulso. A continuacin, el pulso puede activarse o desactivarse sin afectar al
resto de la ejecucin del programa.
Contina en la pgina siguiente
352

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.118 PulseDO - Genera un pulso en una seal digital de salida
Continuacin
En la figura siguiente se muestran ejemplos de generacin de pulsos en una seal
digital de salida.

Duracin del pulso


1
Nivel de la seal
0
Ejecucin de la instruccin PulseDO
Ejecucin de la instruccin PulseDO
1
Nivel de la seal
0
Duracin del pulso
1
Nivel de la seal
0
Ejecucin de la instruccin PulseDO \High
Ejecucin de la instruccin PulseDO \High
1
Nivel de la seal
0
y
x
1
Nivel de la seal
0
Ejecucin de la instruccin

Ejecucin de la instruccin

desde task1

desde task2

PulseDO \High \PLength:=x, do5

PulseDO \High \PLength:=y, do5

xx0500002217_es

La instruccin siguiente se ejecuta directamente despus del inicio del pulso. A


continuacin, el pulso puede activarse o desactivarse sin afectar al resto de la
ejecucin del programa.
Limitaciones
La duracin del pulso tiene una resolucin de 0,001 segundos. Los valores
programados que difieran de esta resolucin se redondean.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.118 PulseDO - Genera un pulso en una seal digital de salida
Continuacin
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
si se ha perdido el contacto con la unidad de E/S.
Sintaxis
PulseDO
[ \High]
[ \PLength := < expression (IN) of num >] ,
[ Signal := ] < variable (VAR) of signaldo > ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Instrucciones de entrada/salida

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Seales de entrada y
salida

Funcionalidad de entrada/salida en
general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Principios de
E/S

Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

354

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.119 RAISE - Llama a un gestor de errores

1.119 RAISE - Llama a un gestor de errores


Utilizacin
RAISE se utiliza para crear un error en el programa y llamar a continuacin al
gestor de errores de la rutina.
RAISE tambin 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.
Por ejemplo, esta instruccin puede usarse para volver a un nivel ms alto de la
estructura del programa, por ejemplo al gestor de errores de la rutina principal, si
se produce un error en el nivel inferior.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin RAISE.
Consulte tambin Ms ejemplos en la pgina 356.
Ejemplo 1
MODULE MainModule .
VAR errnum ERR_MY_ERR := -1;
PROC main()
BookErrNo ERR_MY_ERR;
IF di1 = 0 THEN
RAISE ERR_MY_ERR;
ENDIF
ERROR
IF ERRNO = ERR_MY_ERR THEN
TPWrite "di1 equals 0";
ENDIF
ENDPROC
ENDMODULE

En esta implementacin, di1 igual a 0 es considerado como un error. RAISE fuerza


la ejecucin en el gestor de errores. En este ejemplo, el usuario ha creado su
propio nmero de error para gestionar este error en concreto. BookErrNo pertenece
a la funcionalidad bsica Advanced RAPID.
Argumentos
RAISE [ Error no. ]

Error no.
Tipo de dato: errnum
Nmero de error: Cualquier nmero de 1 a 90 que pueda usar el gestor de errores
para localizar el error que se ha producido (la variable de sistema ERRNO).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.119 RAISE - Llama a un gestor de errores
Continuacin
Tambin es posible registrar un nmero de error fuera del rango de 1 a 90 con la
instruccin BookErrNo.
El nmero de error debe especificarse fuera del gestor de errores en una instruccin
RAISE, para poder transferir la ejecucin al gestor de errores que se encuentra
fuera de la rutina.
Si la instruccin se incluye en el gestor de errores de una rutina, el error se propaga
hasta el gestor de errores de la rutina que realiza la llamada. En este caso, no es
necesario especificar el nmero del error.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin RAISE.
Ejemplo 1
MODULE MainModule
VAR num value1 := 10;
VAR num value2 := 0;
PROC main()
routine1;
ERROR
IF ERRNO = ERR_DIVZERO THEN
value2 := 1;
RETRY;
ENDIF
ENDPROC
PROC routine1()
value1 := 5/value2;!This will lead to an error when value2 is
equal to 0.
ERROR
RAISE;
ENDPROC
ENDMODULE

En este ejemplo, la divisin entre cero dar lugar a un error. En el gestor de ERROR,
RAISE propagar el error hasta el gestor de ERROR de la rutina "main" que hace
la llamada. El mismo nmero de error permanece activo. RETRY ejecutar de nuevo
la totalidad de la rutina "routine1".
Ejecucin de programas
La ejecucin del programa contina en el gestor de errores de la rutina. Despus
de ejecutar el gestor de errores, la ejecucin del programa puede continuar con:

La rutina que llam a la rutina actual (RETURN).

El gestor de errores de la rutina que llam a la rutina actual (RAISE).

Una instruccin RAISE en el gestor de errores de una rutina tambin presenta otra
caracterstica. Puede usarse para saltos largos (consulte Recuperacin en caso
Contina en la pgina siguiente
356

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.119 RAISE - Llama a un gestor de errores
Continuacin
de error con un salto largo). 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, hasta un nivel superior, en un solo paso.
Si la instruccin RAISE est presente en una rutina TRAP, el error se gestiona en
el gestor de errores del sistema.
Gestin de errores
Si el nmero de error est fuera de rango, la variable de sistema ERRNO cambia
a ERR_ILLRAISE (consulte Tipos de datos - errnum). El error puede ser
gestionado en el gestor de errores.
Sintaxis
(EBNF)
RAISE [<error number>] ;
<error number> ::= <expression>

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Gestin de errores

Manual de referencia tcnica - Parmetros del


sistema, seccin Caractersticas bsicas - Recuperacin en caso de error

Recuperacin en caso de error con un


salto largo

Manual de referencia tcnica - Parmetros del


sistema, seccin Caractersticas bsicas - Recuperacin en caso de error

Registro de nmeros de error

BookErrNo - Registra un nmero de error de sistema de RAPID en la pgina 32

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.120 RaiseToUser - Propaga un error al nivel del usuario

1.120 RaiseToUser - Propaga un error al nivel del usuario


Utilizacin
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. El nivel del usuario es en este caso la primera rutina de una
cadena de llamadas, por encima de la rutina NOSTEPIN.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin RaiseToUser.
Ejemplo 1
MODULE MyModule
VAR errnum ERR_MYDIVZERO:= -1;
PROC main()
BookErrNo ERR_MYDIVZERO;
...
routine1;
...
ERROR
IF ERRNO = ERR_MYDIVZERO THEN
TRYNEXT;
ELSE
RETRY;
ENDIF
ENDPROC
ENDMODULE
MODULE MySysModule (SYSMODULE, NOSTEPIN, VIEWONLY)
PROC routine1()
...
routine2;
...
UNDO
! Free allocated resources
ENDPROC
PROC routine2()
VAR num n:=0;
...
reg1:=reg2/n;
...
ERROR
IF ERRNO = ERR_DIVZERO THEN
RaiseToUser \Continue \ErrorNumber:=ERR_MYDIVZERO;
ELSE
RaiseToUser \BreakOff;
ENDIF
ENDPROC
ENDMODULE

Contina en la pgina siguiente


358

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.120 RaiseToUser - Propaga un error al nivel del usuario
Continuacin
La divisin entre cero que tiene lugar en routine2 se propaga hacia arriba en el
gestor de errores de la rutina main, con el valor ERR_MYDIVZERO en errno. A
continuacin, la instruccin TRYNEXT del gestor de errores hace que la ejecucin
del programa contine en la instruccin que sigue a la divisin entre cero en
routine2. El modificador \Continue controla este comportamiento.
Si se produce cualquier otro error en routine2, el modificador \BreakOff fuerza
la continuacin de la ejecucin desde el gestor de errores de la rutina main. En
este caso, el gestor de deshacer de routine1 se ejecuta mientras se eleva hacia
el nivel del usuario. La instruccin RETRY del gestor de errores de la rutina main
ejecuta routine1, de nuevo desde el principio.
El gestor de deshacer de routine1 tambin se ejecuta en el caso de que se use
\Continue, si la siguiente instruccin RAISE o RETURN se realiza en el nivel del
usuario.
Argumentos
RaiseToUser[ \Continue] | [ \BreakOff][ \ErrorNumber]

[\Continue]
Tipo de dato: switch
Contina la ejecucin en la rutina que provoc el error.
[\BreakOff]
Tipo de dato:switch
Interrumpe la cadena de llamadas y prosigue la ejecucin en el nivel del 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.
Es necesario programar uno de los argumentos \Continue o \BreakOff, para
evitar un error de ejecucin.
[\ErrorNumber]
Tipo de dato: errnum
Cualquier nmero de 1 a 90 que pueda usar el gestor de errores para localizar el
error que se ha producido (la variable de sistema ERRNO).
Tambin es posible registrar un nmero de error fuera del rango de 1 a 90 con la
instruccin BookErrNo.
Si no se especifica el argumento \ErrorNumber, el nmero de error original se
propaga hacia el gestor de errores en la rutina, a nivel de usuario.
Ejecucin de programas
RaiseToUser can slo puede usarse en un gestor de errores de una rutina
NOSTEPIN.
La ejecucin del programa contina en el gestor de errores de la rutina en el nivel
del usuario. El mismo nmero de error permanece activo si no est presente el
parmetro opcional \ErrorNumber. El gestor de errores del sistema se encarga
del error si no hay ningn gestor de errores en el nivel del usuario. La llamada al
gestor de errores del sistema se realiza si no se especifica ninguno de los
argumentos, \Continue ni \BreakOff.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.120 RaiseToUser - Propaga un error al nivel del usuario
Continuacin
Existen dos comportamientos diferentes una vez que se ha ejecutado el gestor
de errores. La ejecucin del programa contina en la rutina que contiene
RaiseToUser, si el modificador \Continue est activado. La ejecucin del
programa prosigue en el nivel del usuario si el modificador \BreakOff est activado.
La ejecucin del programa puede continuar con:

La instruccin que provoc el error (RETRY)

La instruccin 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)

Gestin de errores
Si el nmero de error est fuera de rango, la variable de sistema ERRNO cambia a
ERR_ILLRAISE (consulte Tipos de datos - errnum). El gestor de errores del
sistema se encarga de este error.
Sintaxis
RaiseToUser
[ \Continue ]
| [ \BreakOff ]
[ \ErrorNumber := ] < expression (IN) of errnum>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Gestin de errores

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Recuperacin
en caso de error

Gestin de deshacer

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Deshacer

Registro de nmeros de error

BookErrNo - Registra un nmero de error de sistema de RAPID en la pgina 32

360

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.121 ReadAnyBin - Lee datos de un canal serie o un archivo binario

1.121 ReadAnyBin - Lee datos de un canal serie o un archivo binario


Utilizacin
ReadAnyBin (Read Any Binary) se utiliza para leer cualquier tipo de dato de un
canal serie o un archivo binario.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ReadAnyBin.
Consulte tambin Ms ejemplos en la pgina 362.
Ejemplo 1
VAR iodev channel2;
VAR robtarget next_target;
...
Open "com2:", channel2 \Bin;
ReadAnyBin channel2, next_target;

Se lee del canal al que se hace referencia con channel2 el siguiente objetivo que
debe ejecutar el robot, 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.
Data
Tipo de dato: ANYTYPE
La variable de tipo VAR o PERS en la que se desea almacenar la informacin.
[\Time]
Tipo de dato: num
El tiempo mximo para la operacin de lectura (tiempo lmite) en segundos. Si no
se especifica este argumento, el tiempo mximo es de 60 segundos. Para esperar
ininterrumpidamente, utilice la constante predefinida WAIT_MAX.
Si se agota este tiempo antes de que se complete la operacin de lectura, se llama
al gestor de errores con el cdigo de error ERR_DEV_MAXTIME. Si no hay ningn
gestor de errores, se detiene la ejecucin.
La funcin de tiempo lmite se utiliza tambin durante un paro de programa y se
notificar en el programa de RAPID al poner en marcha el programa.
Ejecucin de programas
Se lee del canal serie o del archivo binario especificado el nmero de bytes
necesario para los datos especificados.
En caso de un reinicio tras una cada de alimentacin, 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.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.121 ReadAnyBin - Lee datos de un canal serie o un archivo binario
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin ReadAnyBin.
Ejemplo 1
CONST num NEW_ROBT:=12;
CONST num NEW_WOBJ:=20;
VAR iodev channel;
VAR num input;
VAR robtarget cur_robt;
VAR wobjdata cur_wobj;
Open "com2:", channel\Bin;
! Wait for the opcode character
input := ReadBin (channel \Time:= 0.1);
TEST input
CASE NEW_ROBT:
ReadAnyBin channel, cur_robt;
CASE NEW_WOBJ:
ReadAnyBin channel, cur_wobj;
ENDTEST
Close channel;

Como primer paso, se lee del canal serie el cdigo de operacin opcode del
mensaje. Acorde con el opcode, se lee el dato robtarget o wobjdata del canal
serie.
Gestin de errores
Si se produce un error durante la lectura, la variable de sistema ERRNO cambia a
ERR_FILEACC.
Si se agota el tiempo lmite antes de que se complete la operacin de lectura, la
variable de sistema ERRNO cambia a ERR_DEV_MAXTIME.
Si se produce un error de suma de comprobacin en los datos ledos, la variable
de sistema ERRNO cambia a ERR_RANYBIN_CHK.
Si se detecta el final del archivo antes de completar la lectura de todos los bytes,
la variable de sistema ERRNO cambia a ERR_RANYBIN_EOF.
A continuacin, estos errores pueden ser gestionados en el gestor de errores.
Limitaciones
Esta instruccin slo puede usarse con canales serie o archivos que hayan sido
abiertos para lectura binaria.
Los datos a leer con esta instruccin ReadAnyBin deben ser de los tipos de datos
num, bool o string. Tambin puede usarse un registro, un componente de
registro, una matriz o un elemento de matriz de este tipo de dato de valor. No es
posible usar datos enteros o datos parciales con semivalor ni tipos de datos sin
valor.

Contina en la pgina siguiente


362

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.121 ReadAnyBin - Lee datos de un canal serie o un archivo binario
Continuacin

Nota
La variable VAR o PERS, que se usa para almacenar los datos ledos, puede
actualizarse en varios pasos. Por tanto, espere siempre hasta que se actualice
toda la estructura de datos antes de leer la informacin desde una rutina TRAP
o desde otra tarea de programa.
Dado que WriteAnyBin-ReadAnyBin slo se han diseado para gestionar
datos binarios internos de controlador con canales serie o archivos entre o dentro
de sistemas de control IRC5, no se hace pblico ningn protocolo de datos y
no es posible interpretar estos datos en ningn PC.
El desarrollo de software de control puede afectar a la compatibilidad, 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 versin 5.07, no es posible leer el archivo con la instruccin
ReadAnyBin de RobotWare versin 5.08. Y, en el caso opuesto, si un
WriteAnyBin a un archivo se realiza con RobotWare versin 5.08, no es posible
leer el archivo con la instruccin ReadAnyBin de RobotWare versin 5.07.
Versin 0 del software de controlador IRC5 igual o anterior a la RW5.07
Versin 1 del software de controlador IRC5 igual o posterior a la RW5.08
Siempre existe la compatibilidad entre todas las revisiones de cualquier versin
de software.
Sintaxis
ReadAnyBin
[IODevice:=] <variable (VAR) of iodev>,
[Data:=] <var or pers (INOUT) of ANYTYPE>
[\Time:= <expression (IN) of num>];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Apertura y otras operaciones con cana- Technical reference manual - RAPID overview,
les serie o archivos
seccin Resumen sobre RAPID - Comunicacin
Escritura de datos en canales serie o
archivo

WriteAnyBin - Escribe datos en un canal serie o


archivo binario en la pgina 761

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.122 ReadBlock - Lee un bloque de datos de un dispositivo

1.122 ReadBlock - Lee un bloque de datos de un dispositivo


Utilizacin
ReadBlock se utiliza para leer un bloque de datos de un dispositivo que est
conectado a la interfaz de sensores serie.. The data is stored in a file.
La interfaz de sensores se comunica con dos sensores a travs de canales serie,
utilizando el protocolo de transporte RTP1.
ste es un ejemplo de configuracin de un canal de sensor.
COM_PHY_CHANNEL:

Name COM1:

Connector COM1

Baudrate 19200

COM_TRP:

Name sen1:

Type RTP1

PhyChannel COM1

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ReadBlock.
Ejemplo 1
CONST string SensorPar := "flp1:senpar.cfg";
CONST num ParBlock:= 1;
! Connect to the sensor device "sen1:" (defined in sio.cfg).
SenDevice "sen1:";
! Read sensor parameters from sensor datablock 1
! and store on flp1:senpar.cfg
ReadBlock "sen1:", ParBlock, SensorPar;

Argumentos
ReadBlock device BlockNo FileName [ \TaskName ]

device
Tipo de dato: string
El nombre del dispositivo de E/S configurado en sio.cfg para el sensor utilizado.
BlockNo
Tipo de dato: num
El argumento BlockNo se utiliza para seleccionar el bloque de datos de sensor
que se desea leer.
FileName
Tipo de dato: string

Contina en la pgina siguiente


364

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.122 ReadBlock - Lee un bloque de datos de un dispositivo
Continuacin
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.
[ \TaskName ]
Tipo de dato: string
El argumento TaskName hace posible el acceso a dispositivos de otras tareas de
RAPID.
Gestin de fallos
Constante de error (valor de ERRNO)

Descripcin

SEN_NO_MEAS

Fallo de medicin

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 comunicacin no vlido

SEN_CAMCHECK

Fallo de comprobacin de sensor

SEN_TIMEOUT

Error de comunicacin

Sintaxis
ReadBlock
[ device := ] < expression(IN) of string>,
[ BlockNo := ] < expression (IN) of num > ,
[ FileName := ] < expression (IN) of string > ,
[ \ TaskName := < expression (IN) of string > ] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Establecimiento de una cone- SenDevice - Establece una conexin a un dispositivo de


xin a un dispositivo de sen- sensor en la pgina 454
sor
Escritura de una variable de
sensor

WriteVar - Escribe una variable en la pgina 777

Lectura de una variable de


sensor

ReadVar - Lee una variable de un dispositivo en la pgina1030

Escritura de un bloque de da- WriteBlock - Escribe un bloque de datos en un dispositivo


tos de sensor
en la pgina 766
Configuracin de la comunica- Manual de referencia tcnica - Parmetros del sistema,
cin del sensor
seccin Communication

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.123 ReadCfgData - Lee un atributo de un parmetro del sistema

1.123 ReadCfgData - Lee un atributo de un parmetro del sistema


Utilizacin
ReadCfgData se utiliza para leer un atributo de un parmetro del sistema (de los
datos de configuracin).
Adems de leer parmetros con nombre, tambin es posible buscar parmetros
sin nombre.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ReadCfgData.
Estos dos ejemplos muestran cmo leer parmetros con nombre.
Ejemplo 1
VAR num offset1;
...
ReadCfgData "/MOC/MOTOR_CALIB/rob1_1","cal_offset",offset1;

Lee el valor del offset de calibracin de axis 1 para rob_1 en la variable de tipo
num offset1.
Ejemplo 2
VAR string io_unit;
...
ReadCfgData "/EIO/EIO_SIGNAL/process_error","Unit",io_unit;

Lee el nombre de la unidad de E/S en la que est definida la seal process_error


y lo almacena en la variable de tipo string llamada io_unit.
Argumentos
ReadCfgData InstancePath Attribute CfgData [\ListNo]

InstancePath
Tipo de dato: string
Especifica la ruta hasta el parmetro que debe leerse.
En el caso de los parmetros con nombre, el formato de esta cadena es
/DOMAIN/TYPE/ParameterName.
En el caso de los parmetros sin nombre, el formato de esta cadena es
/DOMAIN/TYPE/Attribute/AttributeValue.
Attribute
Tipo de dato: string
El nombre del atributo del parmetro que se desea leer.
CfgData
Tipo de dato: any type
La variable en la que se almacenar el valor del atributo. En funcin del tipo de
atributo, los tipos vlidos son bool, num o string.
[\ListNo]
Tipo de dato: num
Contina en la pgina siguiente
366

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.123 ReadCfgData - Lee un atributo de un parmetro del sistema
Continuacin
Una variable que contiene el nmero de instancia de atributo+ AttributeValue
a encontrar.
La primera vez que aparece Attribute + AttributeValue tiene el nmero de
instancia 0. Si hay ms instancias a buscar, el valor devuelto en \ListNo se
incrementar en 1. De lo contrario, si no hay ms instancias el valor de retorno
ser -1. La constante predefinida END_OF_LIST puede usarse para comprobar si
hay ms de una instancia a buscar.
Ejecucin de programas
El valor del atributo especificado por el argumento Attribute se almacena en la
variable especificada por el argumento CfgData.
Si se usa el formato /DOMAIN/TYPE/ParameterName en InstancePath, slo
estn disponibles los parmetros con nombre, es decir, los parmetros cuyo primer
atributo sea name, Name o NAME.
En el caso de los parmetros sin nombre, utilice el parmetro opcional \ListNo
para seleccionar de cul de las instancias debe leerse el valor del atributo. Se
actualiza tras cada lectura exitosa de la siguiente instancia disponible.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin ReadCfgdata. Estos
dos ejemplos muestran cmo leer parmetros sin nombre.
Ejemplo 1
VAR num list_index;
VAR string read_str;
...
list_index:=0;
ReadCfgData "/EIO/EIO_CROSS/Act1/do_13", "Res", read_str,
\ListNo:=list_index;
IF read_str <> "" THEN
TPWrite "Resultant signal for signal do_13 is: " + read_str;
ENDIF

Lee la seal resultante de la seal digital de actuacin sin nombre di_13 y guarda
el nombre en la variable de tipo string llamada read_str.
En este ejemplo, el dominio EIO tiene el cdigo cfg siguiente:
EIO_CROSS:
-Res "di_1" -Act1 "do_2"
-Res "di_2" -Act1 "do_2"
-Res "di_13" -Act1 "do_13"

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.123 ReadCfgData - Lee un atributo de un parmetro del sistema
Continuacin
Ejemplo 2
VAR num list_index;
VAR string read_str;
...
list_index:=0;
WHILE list_index <> END_OF_LIST DO
ReadCfgData "/EIO/EIO_SIGNAL/Unit/USERIO", "Name", read_str,
\ListNo:=list_index;
IF read_str <> "" THEN
TPWrite "Signal: " + read_str;
ENDIF
ENDWHILE

Se leen los nombres de todas las seales definidas para la unidad de E/S USERIO.
En este ejemplo, el dominio EIO tiene el cdigo 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"

Gestin de errores
Si no es posible encontrar los datos especificados con InstancePath +
Attribute en la base de datos de configuracin, la variable de sistema ERRNO
cambia a ERR_CFG_NOTFND.
Si el tipo de dato del parmetro CfgData es distinto del tipo de dato real de los
datos encontrados y especificados con InstancePath + Attribute en la base
de datos de configuracin, la variable de sistema ERRNO cambia a
ERR_CFG_ILLTYPE.
Si se est intentando leer un dato interno, la variable de sistema ERRNO cambia a
ERR_CFG_INTERNAL.
Si la variable del argumento \ListNo tiene un valor que est fuera del rango de
instancias disponibles (0 ... n) al ejecutar la instruccin, ERRNO cambia a
ERR_CFG_OUTOFBOUNDS.
Estos errores pueden ser gestionados en el gestor de errores.
Limitaciones
La conversin de las unidades del parmetro del sistema (metros, radianes,
segundos, etc.) a las unidades de los programas de RAPID (mm, grados, segundos,
etc.), que afecta a CfgData del tipo de datos num debe ser realizada por el usuario
en el programa de RAPID.
Si se usa el formato /DOMAIN/TYPE/ParameterName en InstancePath, slo
estn disponibles los parmetros con nombre, es decir, los parmetros cuyo primer
atributo sea name, Name o NAME.
Las cadenas de RAPID estn limitadas a 80 caracteres. En algunos casos, puede
ser en teora una longitud demasiado reducida para la definicin de InstancePath,
Attribute o CfgData.

Contina en la pgina siguiente


368

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.123 ReadCfgData - Lee un atributo de un parmetro del sistema
Continuacin
Datos predefinidos
La constante predefinida END_OF_LIST, con valor -1, puede usarse para detener
la lectura si no es posible encontrar ms instancias.
Sintaxis
ReadCfgData
[ InstancePath ':=' ] < expression (IN) of string > ','
[ Attribute ':=' ] < expression (IN) of string > ','
[ CfgData ':=' ] < variable (VAR) of anytype >
[ '\' ListNo ':=' < variable (VAR) of num >] ';'

Informacin relacionada
Para obtener ms informacin sobre Consulte
Definicin de cadena de caracteres

string - Cadenas de caracteres en la pgina 1287

Escritura de un atributo de un parme- WriteCfgData - Escribe un atributo de un parmetro


tro del sistema
del sistema en la pgina 768
Obtencin del nombre del robot de la RobName - Obtiene el nombre del robot del TCP
tarea actual
en la pgina 1037
Configuracin

Manual de referencia tcnica - Parmetros del sistema

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.124 ReadErrData - Obtiene informacin sobre un error

1.124 ReadErrData - Obtiene informacin sobre un error


Utilizacin
ReadErrData debe utilizarse en rutinas TRAP para obtener informacin (dominio,
tipo, nmero y cadenas entremezcladas %s, etc.) sobre el error, el cambio de
estado o la advertencia que provoc la ejecucin de la rutina TRAP.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ReadErrData.
Consulte tambin Ms ejemplos en la pgina 372
Ejemplo 1
VAR errdomain err_domain;
VAR num err_number;
VAR errtype err_type;
VAR trapdata err_data;
VAR string string1;
VAR string string2;
...
TRAP trap_err
GetTrapData err_data;
ReadErrData err_data, err_domain, err_number,
err_type \Str1:=string1 \Str2:=string2;
ENDTRAP

Cuando se detecta un error con la rutina TRAP trap_err, el dominio, el nmero,


el tipo y las dos primeras cadenas entremezcladas del mensaje de error se
almacenan en las variables adecuadas.
Argumentos
ReadErrData TrapEvent ErrorDomain ErrorId ErrorType [\Str1][\Str2]
[\Str3] [\Str4] [\Str5]

TrapEvent
Tipo de dato: trapdata
La variable que contiene la informacin sobre qu hecho provoc la ejecucin de
la rutina TRAP.
ErrorDomain
Tipo de dato: errdomain
La variable que debe almacenar el dominio de error al que pertenece el error, el
cambio de estado o la advertencia. Consulte los datos predefinidos del tipo
errdomain.
ErrorId
Tipo de dato: num
La variable que debe almacenar el nmero del error que se ha producido. El nmero
del error se devuelve sin el primer dgito (el dominio del error) y sin los ceros
iniciales que s aparecen en el nmero de error completo.
Contina en la pgina siguiente
370

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.124 ReadErrData - Obtiene informacin sobre un error
Continuacin
Por ejemplo, el error 10008 Program restarted, se devuelve como 8.
ErrorType
Tipo de dato: errtype
La variable que debe almacenar el tipo de evento que se ha producido, por ejemplo
un error, un cambio de estado o una advertencia. Consulte los datos predefinidos
del tipo errtype.
[ \Str1 ] ... [ \Str5 ]
Tipo de dato: string
Actualiza la variable de cadena especificada, con el argumento intercalado en el
mensaje de error. Podran existir hasta cinco argumentos en un mismo mensaje,
con los tipos %s, %f, %d o %ld, que siempre se convertirn en una cadena al
ejecutar esta instruccin. Str1 contendr el primer argumento, Str2 el segundo
argumento, etctera. La informacin acerca de cuntos argumentos puede contener
un mensaje aparece en el Manual del operador - Solucin de problemas. Los
argumentos intercalados se marcan como arg en ese documento.
Ejecucin de programas
Las variables ErrorDomain, ErrorId, ErrorType y Str1 ... Str5 se actualizan
de acuerdo con el contenido de TrapEvent.
Si hay varios eventos conectados a una misma rutina TRAP, el programa debe
asegurarse de que el evento est relacionado con la monitorizacin de errores.
Esto puede hacerse comprobando que INTNO coincide con el nmero de
interrupcin utilizado en la instruccin IError.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.124 ReadErrData - Obtiene informacin sobre un error
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin ReadErrData.
Ejemplo 1
VAR intnum err_interrupt;
VAR trapdata err_data;
VAR errdomain err_domain;
VAR num err_number;
VAR errtype err_type;
...
PROC main()
CONNECT err_interrupt WITH trap_err;
IError COMMON_ERR, TYPE_ERR, err_interupt;
...
IDelete err_interrupt;
...
TRAP trap_err
GetTrapData err_data;
ReadErrData err_data, err_domain, err_number, err_type;
! Set domain no 1 ... 11
SetGO go_err1, err_domain;
! Set error no 1 ...9999
SetGO go_err2, err_number;
ENDTRAP

Cuando se produce un error (slo en el caso de los errores, no las advertencias


ni los cambios de estado), el nmero de error se obtiene en la rutina TRAP y su
valor se utiliza para activar dos grupos de seales digitales de salida.
Limitacin
No es posible obtener informacin sobre los errores internos.
Sintaxis
ReadErrData
[TrapEvent :=] <variable (VAR) of trapdata>,
[ErrorDomain :=] <variable (VAR) of errdomain>,
[ErrorId:=] <variable (VAR) of num>,
[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>];

Informacin relacionada
Para obtener ms informacin sobre Consulte
Resumen de interrupciones

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Interrupciones

Ms informacin sobre la gestin de Technical reference manual - RAPID overview,


interrupciones
seccin Caractersticas bsicas - Interrupciones

Contina en la pgina siguiente


372

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.124 ReadErrData - Obtiene informacin sobre un error
Continuacin
Para obtener ms informacin sobre Consulte
Dominios de error, constantes predefi- errdomain - Dominio de error en la pgina 1192
nidas
Tipos de errores, constantes predefini- errtype - Tipo de error en la pgina 1202
das
Solicitud de una interrupcin para
errores

IError - Solicita una interrupcin para errores en la


pgina 132

Obtencin de datos de interrupcin


para la rutina TRAP actual

GetTrapData - Obtiene datos de interrupcin para


la rutina TRAP actual en la pgina 121

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.125 ReadRawBytes - Lee datos de tipo rawbytes

1.125 ReadRawBytes - Lee datos de tipo rawbytes


Utilizacin
ReadRawBytes se utiliza para leer datos de tipo rawbytes de un dispositivo
abierto con Open\Bin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
ReadRawBytes.
Ejemplo 1
VAR
VAR
VAR
VAR
VAR

iodev io_device;
rawbytes raw_data_out;
rawbytes raw_data_in;
num float := 0.2;
string answer;

ClearRawBytes raw_data_out;
PackDNHeader "10", "20 1D 24 01 30 64", raw_data_out;
PackRawBytes float, raw_data_out, (RawBytesLen(raw_data_out)+1)
\Float4;
Open "/FC1:/dsqc328_1", io_device \Bin;
WriteRawBytes io_device, raw_data_out;
ReadRawBytes io_device, raw_data_in \Time:=1;
Close io_device;
UnpackRawBytes raw_data_in, 1, answer \ASCII:=10;

En este ejemplo, 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.2.
Se abre un dispositivo, "/FC1:/dsqc328_1", y los datos vlidos actuales de
raw_data_out se escriben en el dispositivo. A continuacin, el programa espera
al menos 1 segundo antes de leer del dispositivo, almacenando en raw_data_in
la informacin leda.
Despus de cerrar el dispositivo "/FC1:/dsqc328_1", los datos ledos se
desempaquetan dando lugar a una cadena de caracteres que se almacena en
answer.
Argumentos
ReadRawBytes IODevice RawData [\Time]

IODevice
Tipo de dato: iodev
IODevice es el identificador del dispositivo desde el cual se deben leer los datos.
RawData
Tipo de dato: rawbytes
RawData es el contenedor de datos que almacena los datos ledos de IODevice,
empezando por el nmero de ndice 1.
Contina en la pgina siguiente
374

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.125 ReadRawBytes - Lee datos de tipo rawbytes
Continuacin
[\Time]
Tipo de dato: num
El tiempo mximo para la operacin de lectura (tiempo lmite) en segundos
(resolucin 0,001 s). Si no se especifica este argumento, el tiempo mximo es de
60 segundos. Para esperar ininterrumpidamente, utilice la constante predefinida
WAIT_MAX.
Si se agota este tiempo antes de que se complete la operacin de lectura, se llama
al gestor de errores con el cdigo de error ERR_DEV_MAXTIME. Si no hay ningn
gestor de errores, se detiene la ejecucin.
La funcin de tiempo lmite se utiliza tambin durante un paro de programa y se
notificar en el programa de RAPID al poner en marcha el programa.
Ejecucin de programas
Durante la ejecucin del programa, los datos se leen del dispositivo indicado por
IODevice.
Si se utiliza WriteRawBytes junto con los comandos de bus de campo, por ejemplo
DeviceNet, el bus de campo siempre enva una respuesta. La respuesta debe ser
manejada en RAPID con la instruccin ReadRawBytes.
La longitud actual de los bytes vlidos de la variable RawData cambia al nmero
de bytes ledos. Los datos comienzan en el nmero de ndice 1 de RawData.
En caso de un reinicio tras una cada de alimentacin, 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.
Gestin de errores
Si se produce un error durante la lectura, la variable de sistema ERRNO cambia a
ERR_FILEACC.
Si se agota el tiempo lmite antes de que se complete la operacin de lectura, la
variable RawData no se ve afectada y la variable de sistema ERRNO cambia a
ERR_DEV_MAXTIME.
A continuacin, estos errores pueden ser gestionados en el gestor de errores.
Sintaxis
ReadRawBytes
[IODevice := ] < variable (VAR) of iodev> ,
[RawData := ] < variable (VAR) of rawbytes> ,
[ \ Time := < expression (IN) of num>] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

rawbytes datos

rawbytes - Datos sin formato en la pgina 1254

Obtencin de la longitud de un dato


rawbytes

RawBytesLen - Obtiene la longitud de un dato


de tipo rawbytes en la pgina 1011

Borrado del contenido de un dato de tipo


rawbytes

ClearRawBytes - Borra el contenido de un dato


de tipo rawbytes en la pgina 53

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.125 ReadRawBytes - Lee datos de tipo rawbytes
Continuacin
Para obtener ms informacin sobre

Consulte

Copiado del contenido de un dato de tipo CopyRawBytes - Copia el contenido de un dato


rawbytes
de tipo rawbytes en la pgina 71
Empaquetamiento de un encabezado de
DeviceNet en datos rawbytes

PackDNHeader - Empaqueta un encabezado


de DeviceNet en datos rawbytes en la pgina 304

Empaquetamiento de datos en datos


rawbytes

PackRawBytes - Empaqueta datos en un dato


de tipo rawbytes en la pgina 307

Escritura de un dato rawbytes

WriteRawBytes - Escribe un dato de tipo


rawbytes en la pgina 772

Desempaquetamiento de datos de un dato UnpackRawBytes - Desempaqueta datos de


rawbytes
un dato de tipo rawbytes en la pgina 704

376

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.126 RemoveDir - Elimina un directorio

1.126 RemoveDir - Elimina un directorio


Utilizacin
RemoveDir se utiliza para eliminar un directorio.
El usuario debe tener permisos de escritura y ejecucin en el directorio y ste
debe estar vaco.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin RemoveDir.
Ejemplo 1
RemoveDir "HOME:/mydir";

En este ejemplo, se elimina el directorio mydir que est situado debajo de HOME:.
Argumentos
RemoveDir Path

Path
Tipo de dato: string
El nombre del directorio que se desea eliminar, especificado con una ruta completa
o relativa.
Gestin de errores
Si el directorio no existe o no est vaco o si el usuario no tiene permisos de
escritura y ejecucin en el directorio, el valor de la variable ERRNO cambia a
ERR_FILEACC. A continuacin, este error puede ser gestionado en el gestor de
errores.
Sintaxis
RemoveDir
[ Path:= ] < expression (IN) of string>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Directorio

dir - Estructura de directorio de archivos en


la pgina 1189

Apertura de un directorio

OpenDir - Abre un directorio en la pgina 302

Lectura de un directorio

ReadDir - Lee la siguiente entrada de un directorio en la pgina 1016

Cierre de un directorio

CloseDir - Cierra un directorio en la pgina 60

Creacin de un directorio

MakeDir - Crea un nuevo directorio en la pgina 227

Cambio del nombre de un archivo

RenameFile - Cambia el nombre de un archivo en la pgina 380

Eliminacin de un archivo

RemoveFile - Elimina un archivo en la pgina 379

Copia de un archivo

CopyFile - Copia un archivo en la pgina 69

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.126 RemoveDir - Elimina un directorio
Continuacin
Para obtener ms informacin sobre

Consulte

Comprobacin del tipo del archivo

IsFile - Comprobar el tipo de un archivo en


la pgina 944

Comprobacin del tamao del archivo

FileSize - Obtiene el tamao de un archivo


en la pgina 903

Comprobacin del tamao del sistema de


archivos

FSSize - Obtiene el tamao de un sistema


de archivos en la pgina 910

378

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.127 RemoveFile - Elimina un archivo

1.127 RemoveFile - Elimina un archivo


Utilizacin
RemoveFile se utiliza para eliminar un archivo. El usuario debe tener permisos
de escritura y ejecucin en el directorio en el que se encuentra el archivo, adems
de permiso de escritura para el archivo en s.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin RemoveFile.
Ejemplo 1
RemoveFile "HOME:/mydir/myfile.log";

En este ejemplo, se elimina el archivo myfile.log en el directorio mydir del


disco HOME:.
Argumentos
RemoveFile Path

Path
Tipo de dato: string
El nombre del archivo que se desea eliminar, especificado con una ruta completa
o relativa.
Gestin de errores
Si el archivo no existe, la variable de sistema ERRNO cambia a ERR_FILEACC. A
continuacin, este error puede ser gestionado en el gestor de errores.
Sintaxis
RemoveFile
[ Path:= ] < expression (IN) of string>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Creacin de un directorio

MakeDir - Crea un nuevo directorio en la pgina 227

Eliminacin de un directorio

RemoveDir - Elimina un directorio en la pgina 377

Cambio del nombre de un archivo

RenameFile - Cambia el nombre de un archivo en la pgina 380

Copia de un archivo

CopyFile - Copia un archivo en la pgina 69

Comprobacin del tipo del archivo

IsFile - Comprobar el tipo de un archivo en


la pgina 944

Comprobacin del tamao del archivo

FileSize - Obtiene el tamao de un archivo


en la pgina 903

Comprobacin del tamao del sistema de


archivos

FSSize - Obtiene el tamao de un sistema


de archivos en la pgina 910

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.128 RenameFile - Cambia el nombre de un archivo

1.128 RenameFile - Cambia el nombre de un archivo


Utilizacin
RenameFile se utiliza para dar un nuevo nombre a un archivo existente. Tambin
puede usarse para trasladar un archivo de un lugar a otro dentro de la estructura
de directorios.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin RenameFile.
Ejemplo 1
RenameFile "HOME:/myfile", "HOME:/yourfile;

Se da al archivo myfile el nombre yourfile.


RenameFile "HOME:/myfile", "HOME:/mydir/yourfile";

Se da al archivo myfile el nombre yourfile, adems de trasladarlo al directorio


mydir.
Argumentos
RenameFile OldPath NewPath

OldPath
Tipo de dato:string
La ruta completa del archivo cuyo nombre se desea cambiar.
NewPath
Tipo de dato:string
La ruta completa del archivo cuyo nombre se desea cambiar.
Ejecucin de programas
El archivo especificado en OldPath recibe el nombre especificado en NewPath.
Si la ruta indicada en NewPath es distinta de la ruta del archivo OldPath, el archivo
tambin se traslada a una nueva ubicacin.
Gestin de errores
Si el archivo especificado en NewPath ya existe, la variable de sistema ERRNO
cambia a ERR_FILEEXIST. A continuacin, este error puede ser gestionado en el
gestor de errores.
Sintaxis
RenameFile
[ OldPath := ] < expression (IN) of string > ,
[ NewPath := ] < expression (IN) of string >;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Creacin de un directorio

MakeDir - Crea un nuevo directorio en la pgina 227

Contina en la pgina siguiente


380

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.128 RenameFile - Cambia el nombre de un archivo
Continuacin
Para obtener ms informacin sobre

Consulte

Eliminacin de un directorio

RemoveDir - Elimina un directorio en la pgina 377

Eliminacin de un archivo

RemoveFile - Elimina un archivo en la pgina 379

Copia de un archivo

CopyFile - Copia un archivo en la pgina 69

Comprobacin del tipo del archivo

IsFile - Comprobar el tipo de un archivo en


la pgina 944

Comprobacin del tamao del archivo

FileSize - Obtiene el tamao de un archivo


en la pgina 903

Comprobacin del tamao del sistema de


archivos

FSSize - Obtiene el tamao de un sistema


de archivos en la pgina 910

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.129 Reset - Pone a cero una seal digital de salida

1.129 Reset - Pone a cero una seal digital de salida


Utilizacin
Reset se utiliza para poner a cero el valor de una seal digital de salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin Reset.
Ejemplo 1
Reset do15;

Se cambia la seal do15 a 0.


Ejemplo 2
Reset weld;

Se cambia la seal weld a 0.


Argumentos
Reset Signal

Signal
Tipo de dato: signaldo
El nombre de la seal que se desea poner a cero.
Ejecucin de programas
El valor real depende de la configuracin de la seal. Si la seal est invertida en
los parmetros del sistema, esta instruccin hace que el canal fsico cambie a 1.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S.
Sintaxis
Reset
[ Signal := ] < variable (VAR) of signaldo > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Cambio de una seal digital de salida a


cero

Set - Activa una seal digital de salida en la pgina 456

Instrucciones de entrada/salida

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Seales de
entrada y salida

Funcionalidad de entrada/salida en gene- Technical reference manual - RAPID overview,


ral
seccin Principios de movimiento y E/S - Principios de E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros del


sistema

382

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.130 ResetPPMoved - Restablecer el estado del puntero de programa movido en el modo manual.

1.130 ResetPPMoved - Restablecer el estado del puntero de programa movido en


el modo manual.
Utilizacin
ResetPPMoved restablece el estado del puntero de programa movido en el modo
manual. PPMovedInManMode devuelve TRUE si el usuario ha movido el puntero
de programa mientras el controlador se encuentra en el modo manual, es decir,
si la llave de operador est en las posiciones de manual a velocidad reducida o
manual a mxima velocidad. El estado del puntero de programa movido se pone
a cero cuando se sita la llave de Auto a Man o cuando se usa la instruccin
ResetPPMoved.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin ResetPPMoved.
Ejemplo 1
IF PPMovedInManMode() THEN
WarnUserOfPPMovement;
! DO THIS ONLY ONCE
ResetPPMoved;
DoJob;
ELSE
DoJob;
ENDIF

Ejecucin de programas
Restablece el estado del puntero de programa movido en el modo manual para la
tarea de programa actual.
Sintaxis
ResetPPMoved;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comprobar si el puntero de programa se ha PPMovedInManMode - Comprobar si el punmovido en el modo manual


tero de programa se ha movido en el modo
manual. en la pgina 1007

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.131 ResetRetryCount - Restablece el nmero de reintentos

1.131 ResetRetryCount - Restablece el nmero de reintentos


Utilizacin
ResetRetryCount se usa para restablecer el nmero de reintentos que se han
realizado desde un gestor de errores. El nmero mximo de reintentos que pueden
hacerse se define en la configuracin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
ResetRetryCount.
Ejemplo 1
VAR num myretries := 0;
...
ERROR
IF myretries > 2 THEN
ResetRetryCount;
myretries := 0;
TRYNEXT;
ENDIF
myretries:= myretries + 1;
RETRY;
...

El programa reintentar 3 veces la instruccin fallida y a continuacin intentar la


instruccin siguiente. El contador de reintentos interno del sistema se restablece
antes de reintentar la instruccin siguiente (incluso si tal reintento es realizado
por el sistema en TRYNEXT).
Ejecucin de programas
Para cada RETRY realizado desde un gestor de errores, un contador interno del
sistema comprobar que no se sobrepase el nmero mximo de reintentos,
especificado en la configuracin. La ejecucin de la instruccin ResetRetryCount
pone a cero el contador y hace posible volver a hacer un nmero mximo de
reintentos.
Sintaxis
ResetRetryCount ;

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Gestores de errores

Technical reference manual - RAPID overview, seccin


Caractersticas bsicas - Recuperacin en caso de
error

Reanudacin de la ejecucin des- RETRY - Reanuda la ejecucin despus de un error


pus de un error
en la pgina 388
Configuracin del nmero mximo Manual de referencia tcnica - Parmetros del sistema,
de reintentos
seccin System Misc

Contina en la pgina siguiente


384

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.131 ResetRetryCount - Restablece el nmero de reintentos
Continuacin
Para obtener ms informacin
sobre

Consulte

Nmero de reintentos restantes

RemainingRetries - Reintentos restantes an pendientes en la pgina 1034

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.132 RestoPath - Restablece la trayectoria despus de una interrupcin

1.132 RestoPath - Restablece la trayectoria despus de una interrupcin


Utilizacin
RestoPath se utiliza para restablecer una trayectoria almacenada en un momento
anterior con la instruccin StorePath.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin RestoPath.
Consulte tambin Ms ejemplos, a continuacin.
Ejemplo 1
RestoPath;

Restablece la trayectoria almacenada anteriormente mediante StorePath.


Ejecucin 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 instruccin StorePath
se restablece. Sin embargo, recuerde que no se produce ningn movimiento hasta
que se ejecuta la instruccin StartMove o se reanuda la ejecucin mediante
RETRY en un gestor de errores.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin RestoPath.
Ejemplo 1
ArcL p100, v100, seam1, weld5 \Weave:=weave1, z10, gun1;
...
ERROR
IF ERRNO=AW_WELD_ERR THEN
gun_cleaning;
StartMoveRetry;
ENDIF
...
PROC gun_cleaning()
VAR robtarget p1;
StorePath;
p1 := CRobT();
MoveL pclean, v100, fine, gun1;
...
MoveL p1, v100, fine, gun1;
RestoPath;
ENDPROC

En caso de un error de soldadura, la ejecucin del programa contina en el gestor


de errores de la rutina, lo cual llama a su vez a gun_cleaning. A continuacin,
se almacena la trayectoria de movimiento que se estaba ejecutando y el robot se
traslada a la posicin pclean, en la que se soluciona el error. Una vez hecho
Contina en la pgina siguiente
386

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.132 RestoPath - Restablece la trayectoria despus de una interrupcin
Continuacin
esto, el robot vuelve a la posicin en la que se produjo el error, p1, y almacena de
nuevo el movimiento original. A continuacin, la soldadura se reanuda
automticamente, lo que significa que el robot invierte su movimiento a lo largo
de la trayectoria antes de que comience la soldadura, tras lo cual puede continuar
la ejecucin normal del programa.
Limitaciones
Con la instruccin StorePath slo se almacenan los datos de la trayectoria de
movimiento. Si el usuario desea solicitar movimientos en un nuevo nivel de
trayectoria, es necesario almacenar la posicin de paro directamente a continuacin
de que StorePath y de RestoPath hacen el movimiento hacia la posicin de
paro almacenada en la trayectoria.
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
RestoPath no puede ejecutarse en rutinas de RAPID que estn conectadas a los
siguientes eventos especiales del sistema: PowerOn, Stop, QStop, Restart o Step.
Sintaxis
RestoPath;

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Almacenamiento de trayectorias StorePath - Almacena la trayectoria cuando se produce
una interrupcin en la pgina 555
Ms ejemplos

StorePath - Almacena la trayectoria cuando se produce


una interrupcin en la pgina 555
PathRecStart - Inicia la grabadora de trayectorias en la
pgina 327
SyncMoveSuspend - Activa el movimiento independientesemicoordinado en la pgina 580

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.133 RETRY - Reanuda la ejecucin despus de un error

1.133 RETRY - Reanuda la ejecucin despus de un error


Utilizacin
La instruccin RETRY se utiliza para reanudar la ejecucin del programa despus
de un error, empezando por (y ejecutando de nuevo) la instruccin que provoc
el error.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin RETRY.
Ejemplo 1
reg2 := reg3/reg4;
...
ERROR
IF ERRNO = ERR_DIVZERO THEN
reg4 :=1;
RETRY;
ENDIF

Se intenta dividir reg3 por reg4. Si reg4 es igual a 0 (lo cual da lugar a una divisin
por cero), se salta al gestor de errores, que inicializa reg4. A continuacin, se usa
la instruccin RETRY para saltar desde el gestor de errores y se hace otro intento
de completar la divisin.
Ejecucin de programas
La ejecucin del programa contina en (y ejecuta de nuevo) la instruccin que
provoc el error.
Gestin de errores
Si se supera el nmero mximo de reintentos (4 reintentos), la ejecucin del
programa se detiene y se genera un mensaje de error. El nmero mximo de
reintentos puede configurarse en los Parmetros del sistema (tipo System Misc).
Limitaciones
La instruccin slo puede existir en el gestor de errores de la rutina. Si el error se
cre usando una instruccin RAISE, no es posible reanudar la ejecucin del
programa con una instruccin RETRY. A continuacin debe utilizarse la instruccin
TRYNEXT.
Sintaxis
RETRY ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Gestores de errores

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Recuperacin
en caso de error

Contina en la pgina siguiente


388

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.133 RETRY - Reanuda la ejecucin despus de un error
Continuacin
Para obtener ms informacin sobre

Consulte

Configuracin del nmero mximo de


reintentos

Manual de referencia tcnica - Parmetros del


sistema, seccin System Misc

Continuacin en la instruccin siguiente TRYNEXT - Salta sobre una instruccin que ha


provocado un error en la pgina 681

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.134 RETURN - Finaliza la ejecucin de una rutina

1.134 RETURN - Finaliza la ejecucin de una rutina


Utilizacin
RETURN se utiliza para finalizar la ejecucin de una rutina. Si la rutina es una
funcin, el valor tambin se devuelve.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin RETURN.
Ejemplo 1
errormessage;
Set do1;
...
PROC errormessage()
IF di1=1 THEN
RETURN;
ENDIF
TPWrite "Error";
ENDPROC

Se llama al procedimiento errormessage . Cuando el procedimiento llega a la


instruccin RETURN, la ejecucin del programa vuelve a la instruccin que sigue
a la llamada al procedimiento, Set do 1.
Ejemplo 2
FUNC num abs_value(num value)
IF value<0 THEN
RETURN -value;
ELSE
RETURN value;
ENDIF
ENDFUNC

La funcin devuelve el valor absoluto de un nmero.


Argumentos
RETURN [ Return value ]

Return value
Tipo de dato: Segn la declaracin de la funcin.
El valor de retorno de una funcin.
El valor de retorno debe especificarse en una instruccin RETURN incluida en una
funcin.
Si la instruccin se incluye en un procedimiento o una rutina TRAP, es posible
que el nmero del error no est especificado.

Contina en la pgina siguiente


390

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.134 RETURN - Finaliza la ejecucin de una rutina
Continuacin
Ejecucin de programas
El resultado de la instruccin RETURN puede variar, en funcin del tipo de rutina
en el que se utiliza:

Rutina principal: Si el programa tiene el modo de ejecucin de un solo ciclo,


el programa se detiene. De lo contrario, la ejecucin del programa contina
con la primera instruccin de la rutina principal.

Procedimiento: La ejecucin del programa contina con la instruccin que


sigue a la llamada al procedimiento.

Funcin: Devuelve el valor de la funcin.

Rutina TRAP: La ejecucin del programa contina en el punto en el que se


produjo la interrupcin.

Gestor de errores en un procedimiento: La ejecucin del programa contina


con la rutina que llam a la rutina que contiene el gestor de errores (en la
instruccin que sigue a la llamada al procedimiento).

Gestor de errores en una funcin: Se devuelve el valor de la funcin.

Sintaxis
(EBNF)
RETURN [ <expression> ];

Informacin relacionada
Para obtener ms informacin sobre Consulte
Funciones y procedimientos

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Rutinas

Rutinas TRAP

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Interrupciones

Gestores de errores

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Recuperacin
en caso de error

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.135 Rewind - Rebobina la posicin del archivo

1.135 Rewind - Rebobina la posicin del archivo


Utilizacin
Rewind sita la posicin del archivo al principio del archivo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin Rewind.
Consulte tambin Ms ejemplos en la pgina 393.
Ejemplo 1
Rewind iodev1;

En el archivo al que se hace referencia con iodev1, la posicin del archivo se


sita en el principio del archivo.
Argumentos
Rewind IODevice

IODevice
Tipo de dato: iodev
El nombre (la referencia) del archivo que se desea rebobinar.
Ejecucin de programas
El archivo especificado se rebobina hasta el principio.
En caso de un reinicio tras una cada de alimentacin, 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.

Contina en la pgina siguiente


392

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.135 Rewind - Rebobina la posicin del archivo
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin Rewind.
Ejemplo 1
! IO device and numeric variable for use together with a binary
! file
VAR iodev dev;
VAR num bindata;
! Open the binary file with \Write switch to erase old contents
Open "HOME:"\File := "bin_file",dev \Write;
Close dev;
! Open the binary file with \Bin switch for binary read and write
! acess
Open "HOME:"\File := "bin_file",dev \Bin;
WriteStrBin dev,"Hello world";
! 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;
bindata := ReadBin(dev);
WHILE bindata <> EOF_BIN DO
TPWrite " " \Num:=bindata; bindata := ReadBin(dev);
ENDWHILE
! Close the binary file
Close dev;

La instruccin Rewind se utiliza para rebobinar un archivo binario hasta el principio,


de forma que sea posible leer el contenido del archivo con ReadBin
Limitaciones
En el caso de Virtual Controller existe una limitacin si el archivo utilizado
ha sido abierto con un modificador \Bin o \Bin \Append, el uso de Rewind
antes de cualquier tipo de instruccin Write no tendr ningn efecto. La escritura
se realizar al final del archivo.
Gestin de errores
Si se produce un error durante el rebobinado, la variable de sistema ERRNO cambia
a ERR_FILEACC. A continuacin, este error puede ser gestionado en el gestor de
errores.
Sintaxis
Rewind [IODevice :=] <variable (VAR) of iodev>;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.135 Rewind - Rebobina la posicin del archivo
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Apertura y otras operaciones con archi- Technical reference manual - RAPID overview,
vos
seccin Resumen sobre RAPID - Comunicacin

394

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.136 RMQEmptyQueue - Vaca la cola de mensajes de RAPID

1.136 RMQEmptyQueue - Vaca la cola de mensajes de RAPID


Utilizacin
RMQEmptyQueue vaca la cola de mensajes de RAPID (RMQ) de la tarea en la que
se ejecuta la instruccin.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin RMQEmptyQueue.
Ejemplo
RMQEmptyQueue;

La instruccin RMQEmptyQueue elimina todos los mensajes de la cola RMQ de la


tarea en ejecucin.
Ejecucin de programas
Se vaca la cola de mensajes de RAPID de la tarea en la que se ejecuta. Esta
instruccin puede usarse en todos los niveles de ejecucin.
Limitaciones
RMQEmptyQueue slo vaca la cola de mensajes de RAPID de la tarea en la que
se ejecuta la instruccin. Todas las dems colas de mensajes de RAPID
permanecen sin cambios.
Sintaxis
RMQEmptyQueue ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID


Message Queue

Application manual - Robot communication


and I/O control, seccin RAPID Message
Queue.

rmqmessage tipo de dato

rmqmessage - Mensaje de RAPID Message


Queue en la pgina 1262.

Enviar datos a la cola de una tarea de RAPID RMQSendMessage - Enviar un mensaje de


o de un cliente de Robot Application Builder datos de RMQ en la pgina 412.
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 pgiesperar una respuesta del cliente
na 416.
Encontrar el nmero de identidad de una ta- RMQFindSlot - Buscar una identidad de ranurea de RAPID Message Queue o de un
ra para el nombre de ranura en la pgina 397.
cliente de Robot Application Builder
Extraer los datos de encabezado de un rmq- RMQGetMsgHeader - Obtener informacin
de encabezado de un mensaje de RMQ en
message
la pgina 405.
Extraer los datos de un rmqmessage

RMQGetMsgData - Obtener la parte de datos


de un mensaje de RMQ en la pgina 402.

Ordenar y habilitar interrupciones para un ti- IRMQMessage - Ordenar interrupciones de


po de dato en concreto
RMQ para un tipo de dato en la pgina 175.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.136 RMQEmptyQueue - Vaca la cola de mensajes de RAPID
Continuacin
Para obtener ms informacin sobre

Consulte

Obtener el nombre de ranura de una identi- RMQGetSlotName - Obtener el nombre de


dad de ranura especificada
un cliente de RMQ en la pgina 1035.
Recibir un mensaje de una cola RMQ

RMQReadWait - Devuelve un mensaje de


una cola RMQ en la pgina 409.

Obtener el primer mensaje de una cola de


RAPID Message Queue

RMQGetMessage - Obtener un mensaje de


RMQ en la pgina 399.

396

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.137 RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura

1.137 RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura


Utilizacin
RMQFindSlot (RAPID Message Queue Find Slot) se utiliza para encontrar la
identidad de ranura de un RMQ configurado para una tarea de RAPID, o la identidad
de ranura de un cliente de Robot Application Builder.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin RMQFindSlot
nombre.
Ejemplo 1
VAR rmqslot myrmqslot;
RMQFindSlot myrmqslot, "RMQ_T_ROB2";

Obtener el nmero de identidad del RMQ"RMQ_T_ROB2" configurado para la tarea


de RAPID "T_ROB2".
Argumentos
RMQFindSlot Slot Name

Slot
Tipo de dato: rmqslot
La variable en la que se devuelve el identificador numrico.
Name
Tipo de dato: string
El nombre del cliente cuyo nmero de identidad se desea encontrar. El nombre
debe ser correcto en cuanto al uso de minsculas y maysculas. Si la tarea de
RAPID tiene el nombre T_ROB1 y se utiliza el nombre RMQ_t_rob1 para la cola
RMQ, dar lugar a un error (consulte el captulo sobre gestin de errores que
aparece a continuacin).
Ejecucin de programas
La instruccin RMQFindSlot se utiliza para encontrar la identidad de ranura de
un RMQ con nombre o un cliente de Robot Application Builder.
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. La variable de sistema ERRNO cambia a:
ERR_RMQ_NAME

El nombre de ranura indicado no es vlido o no se encuentra.

Sintaxis
RMQFindSlot
[ Slot := ] < variable (VAR) of rmqslot > ,
[ Name := ] < expression (IN) of string >;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.137 RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID


Message Queue

Application manual - Robot communication


and I/O control, seccin RAPID Message
Queue.

Enviar datos a la cola de una tarea de RAPID RMQSendMessage - Enviar un mensaje de


o de un cliente de Robot Application Builder datos de RMQ en la pgina 412
Obtener el primer mensaje de una cola de
RAPID Message Queue.

RMQGetMessage - Obtener un mensaje de


RMQ en la pgina 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 pgiesperar una respuesta del cliente
na 416
Extraer los datos de encabezado de un rmq- RMQGetMsgHeader - Obtener informacin
de encabezado de un mensaje de RMQ en
message
la pgina 405
Ordenar y habilitar interrupciones para un ti- IRMQMessage - Ordenar interrupciones de
po de dato en concreto
RMQ para un tipo de dato en la pgina 175
Extraer los datos de un rmqmessage

RMQGetMsgData - Obtener la parte de datos


de un mensaje de RMQ en la pgina 402

Obtener el nombre de ranura de una identi- RMQGetSlotName - Obtener el nombre de


dad de ranura especificada
un cliente de RMQ en la pgina 1035
RMQ Slot

rmqslot - Nmero de identidad de un cliente


de RMQ en la pgina 1264

398

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.138 RMQGetMessage - Obtener un mensaje de RMQ

1.138 RMQGetMessage - Obtener un mensaje de RMQ


Utilizacin
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.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
RMQGetMessage.
Consulte tambin Ms ejemplos en la pgina 400.
Ejemplo 1
TRAP msghandler
VAR rmqmessage myrmqmsg;
RMQGetMessage myrmqmsg;
...
ENDTRAP

En la rutina TRAP , msghandler el rmqmessage es capturado del RMQ y copiado


a la variable myrmqmsg.
Argumentos
RMQGetMessage Message

Message
Tipo de dato: rmqmessage
Variable para el almacenamiento del mensaje de RMQ.
El tamao mximo de los datos que pueden recibirse en un rmqmessage es de
aproximadamente 3.000 bytes.
Ejecucin de programas
La instruccin RMQGetMessage se usa para obtener el primer mensaje de la cola
de la tarea que ejecuta la instruccin.Si hay un mensaje, ste se copia a la variable
Message y a continuacin se elimina de la cola para dejar espacio para nuevos
mensajes. Esta instruccin slo se admite en el nivel TRAP.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.138 RMQGetMessage - Obtener un mensaje de RMQ
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin
RMQGetMessage.
Ejemplo 1
RECORD mydatatype
int x;
int y;
ENDRECORD
VAR intnum msgreceive;
VAR mydatatype mydata;
PROC main()
! Setup interrupt
CONNECT msgreceive WITH msghandler;
! Order cyclic interrupt to occur for data type mydatatype
IRMQMessage mydata, msgreceive;
WHILE TRUE DO
! Performing cycle
...
ENDWHILE
ENDPROC
TRAP msghandler
VAR rmqmessage message;
VAR rmqheader header;
! Get the RMQ message
RMQGetMessage message;
! Copy RMQ header information
RMQGetMsgHeader message \Header:=header;
IF header.datatype = "mydatatype" AND header.ndim = 0 THEN
! Copy the data from the message
RMQGetMsgData message, mydata;
ELSE
TPWrite "Received a type not handled or with wrong dimension";
ENDIF
ENDTRAP

Cuando se recibe un nuevo mensaje, la rutina TRAP msghandler se ejecuta y el


nuevo mensaje se copia a la variable message (instruccin RMQGetMessage). A
continuacin se copian los datos de encabezado de RMQ (instruccin
RMQGetMsgHeader). Si el mensaje es del tipo de dato esperado y tiene las
dimensiones correctas, los datos se copian a la variable mydata (instruccin
RMQGetMsgData).

Contina en la pgina siguiente


400

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.138 RMQGetMessage - Obtener un mensaje de RMQ
Continuacin
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. La variable de sistema ERRNO cambia a:
ERR_RMQ_NOMSG

Ningn mensaje de momento en la cola. Si se ejecuta RMQGetMessage dos veces en una rutina TRAP, puede ocurrir esto.
El error tambin puede generarse si se produce una cada de
alimentacin entre la orden de ejecutar la rutina TRAP y la
ejecucin de la instruccin RMQGetMessage. Los mensajes
del RMQ se pierden en caso de cada de alimentacin.

ERR_RMQ_INVMSG

Este error se genera si el mensaje no es vlido. Esto puede


ocurrir por ejemplo si una aplicacin de PC enva un mensaje
daado.

Limitaciones
RMQGetMessage no se admite en el nivel de ejecucin de usuarios (es decir, en
las rutinas de servicio) ni en el nivel de ejecucin normal.
El tamao mximo de los datos que pueden recibirse en un rmqmessage es de
aproximadamente 3.000 bytes.
Se recomienda reutilizar una variable del tipo de dato rmqmessage todo lo posible,
con el fin de ahorrar memoria de RAPID.
Sintaxis
RMQGetMessage
[ Message := ] < variable (VAR) of rmqmessage >;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID


Message Queue

Application manual - Robot communication


and I/O control, seccin RAPID Message
Queue.

Encontrar el nmero de identidad de una ta- RMQFindSlot - Buscar una identidad de ranurea de RAPID Message Queue o de un
ra para el nombre de ranura en la pgina 397
cliente de Robot Application Builder
Enviar datos a la cola de una tarea de RAPID RMQSendMessage - Enviar un mensaje de
o de un cliente de Robot Application Builder datos de RMQ en la pgina 412
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 pgiesperar una respuesta del cliente
na 416
Extraer los datos de encabezado de un rmq- RMQGetMsgHeader - Obtener informacin
de encabezado de un mensaje de RMQ en
message
la pgina 405
Extraer los datos de un rmqmessage

RMQGetMsgData - Obtener la parte de datos


de un mensaje de RMQ en la pgina 402

Ordenar y habilitar interrupciones para un ti- IRMQMessage - Ordenar interrupciones de


po de dato en concreto
RMQ para un tipo de dato en la pgina 175
Obtener el nombre de ranura de una identi- RMQGetSlotName - Obtener el nombre de
dad de ranura especificada
un cliente de RMQ en la pgina 1035
RMQ Message

rmqmessage - Mensaje de RAPID Message


Queue en la pgina 1262

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.139 RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ

1.139 RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ


Utilizacin
RMQGetMsgData (RAPID Message Queue Get Message Data) se utiliza para obtener
los datos efectivos contenidos en el mensaje de RMQ.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
RMQGetMsgData.
Consulte tambin RMQGetMsgData - Obtener la parte de datos de un mensaje de
RMQ en la pgina 402.
Ejemplo 1
VAR rmqmessage myrmqmsg;
VAR num data;
...
RMQGetMsgData myrmqmsg, data;
! Handle data

Los datos, del tipo de dato num, se capturan de la variable myrmqmsg y se


almacenen en la variable data.
Argumentos
RMQGetMsgData Message Data

Message
Tipo de dato: rmqmessage
Variable que contiene el mensaje de RMQ recibido.
Data
Tipo de dato: anytype
Variable del tipo de dato esperado, utilizado para el almacenamiento de los datos
recibidos.
Ejecucin de programas
La instruccin RMQGetMsgData se usa para obtener los datos efectivos contenidos
en el mensaje RMQ, convertirlos del formato de carcter ASCII a datos binarios,
compilar los datos para ver si es posible almacenarlos en la variable especificada
en la instruccin y a continuacin copiarlos a la variable.

Contina en la pgina siguiente


402

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.139 RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin
RMQGetMsgData.
Ejemplo 1
RECORD mydatatype
int x;
int y;
ENDRECORD
VAR intnum msgreceive;
VAR mydatatype mydata;
PROC main()
! Setup interrupt
CONNECT msgreceive WITH msghandler;
! Order cyclic interrupt to occur for data type mydatatype
IRMQMessage mydata, msgreceive;
WHILE TRUE DO
! Performing cycle
...
ENDWHILE
ENDPROC
TRAP msghandler
VAR rmqmessage message;
VAR rmqheader header;
! Get the RMQ message
RMQGetMessage message;
! Copy RMQ header information
RMQGetMsgHeader message \Header:=header;
IF header.datatype = "mydatatype" AND header.ndim = 0 THEN
! Copy the data from the message
RMQGetMsgData message, mydata;
ELSE
TPWrite "Received a type not handled or with wrong dimension";
ENDIF
ENDTRAP

Cuando se recibe un nuevo mensaje, la rutina TRAP msghandler se ejecuta y el


nuevo mensaje se copia a la variable message (instruccin RMQGetMessage). A
continuacin se copian los datos de encabezado de RMQ (instruccin
RMQGetMsgHeader). Si el mensaje es del tipo de dato esperado y tiene las
dimensiones correctas, los datos se copian a la variable mydata (instruccin
RMQGetMsgData).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.139 RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ
Continuacin
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. 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.

ERR_RMQ_DIM

Los tipos de datos son iguales, pero las dimensiones son diferentes en el dato del mensaje y en la variable utilizada en el
argumento Data.

ERR_RMQ_MSGSIZE

El tamao de los datos recibidos es mayor que el tamao mximo configurado para el RMQ en la tarea receptora.

ERR_RMQ_INVMSG

Este error se genera si el mensaje no es vlido. Esto puede


ocurrir por ejemplo si una aplicacin de PC enva un mensaje
daado.

Sintaxis
RMQGetMsgData
[ Message := ] < variable (VAR) of rmqmessage > ,
[ Data := ] < reference (VAR) of anytype >;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID


Message Queue

Application manual - Robot communication


and I/O control, seccin RAPID Message
Queue.

Encontrar el nmero de identidad de una ta- RMQFindSlot - Buscar una identidad de ranurea de RAPID Message Queue o de un
ra para el nombre de ranura en la pgina 397
cliente de Robot Application Builder
Enviar datos a la cola de una tarea de RAPID RMQSendMessage - Enviar un mensaje de
o de un cliente de Robot Application Builder datos de RMQ en la pgina 412
Obtener el primer mensaje de una cola de
RAPID Message Queue.

RMQGetMessage - Obtener un mensaje de


RMQ en la pgina 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 pgiesperar una respuesta del cliente
na 416
Extraer los datos de encabezado de un rmq- RMQGetMsgHeader - Obtener informacin
de encabezado de un mensaje de RMQ en
message
la pgina 405
Ordenar y habilitar interrupciones para un ti- IRMQMessage - Ordenar interrupciones de
po de dato en concreto
RMQ para un tipo de dato en la pgina 175
Obtener el nombre de ranura de una identi- RMQGetSlotName - Obtener el nombre de
dad de ranura especificada
un cliente de RMQ en la pgina 1035
RMQ Message

rmqmessage - Mensaje de RAPID Message


Queue en la pgina 1262

404

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.140 RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ

1.140 RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de


RMQ
Utilizacin
RMQGetMsgHeader (RAPID Message Queue Get Message Header) obtiene la
informacin de encabezado contenida en el mensaje de RMQ recibida y lo almacena
en variables de los tipos rmqheader, rmqslot o num.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
RMQGetMsgHeader.
Consulte tambin Ms ejemplos en la pgina 407.
Ejemplo 1
VAR rmqmessage myrmqmsg;
VAR rmqheader myrmqheader;
...
RMQGetMsgHeader myrmqmsg, \Header:=myrmqheader;

En este ejemplo, la variable myrmqheader recibe los datos copiados de la parte


rmqheader de la variable myrmqmsg.
Ejemplo 2
VAR rmqmessage rmqmessage1;
VAR rmqheader rmqheader1;
VAR rmqslot rmqslot1;
VAR num userdef := 0;
...
RRMQGetMsgHeader rmqmessage1 \Header:=rmqheader1
\SenderId:=rmqslot1 \UserDef:=userdef;

En este ejemplo, las variables rmqheader1, rmqslot1 y userdef reciben los


datos copiados de la variable rmqmessage1.
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
informacin acerca del mensaje.
[\Header]
Tipo de dato: rmqheader
Variable para el almacenamiento de la informacin de encabezado de RMQ copiada
desde la variable especificada con el parmetro Message.
[\SenderId]
Tipo de dato: rmqslot
Variable para el almacenamiento de la informacin de identidad de remitente
copiada desde la variable especificada con el parmetro Message.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.140 RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ
Continuacin
[\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 parmetro Message. Para obtener cualquier dato
vlido en esta variable, el remitente necesita especificar que sta debe incluirse
al enviar un mensaje de RMQ . Si no se utiliza, el valor ser cambiado a -1.
Ejecucin de programas
La instruccin RMQGetMsgHeader obtiene la informacin de encabezado contenida
en el mensaje de RMQ y la copia a variables de tipo rmqheader, rmqslot o num,
en funcin de qu argumentos se utilicen.

Contina en la pgina siguiente


406

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.140 RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin
RMQGetMsgHeader.
Ejemplo 1
RECORD mydatatype
int x;
int y;
ENDRECORD
VAR intnum msgreceive;
VAR mydatatype mydata;
PROC main()
! Setup interrupt
CONNECT msgreceive WITH msghandler;
! Order cyclic interrupt to occur for data type mydatatype
IRMQMessage mydata, msgreceive;
WHILE TRUE DO
! Performing cycle
...
ENDWHILE
ENDPROC
TRAP msghandler
VAR rmqmessage message;
VAR rmqheader header;
! Get the RMQ message
RMQGetMessage message;
! Copy RMQ header information
RMQGetMsgHeader message \Header:=header;
IF header.datatype = "mydatatype" AND header.ndim = 0 THEN
! Copy the data from the message
RMQGetMsgData message, mydata;
ELSE
TPWrite "Received a type not handled or with wrong dimension";
ENDIF
ENDTRAP

Cuando se recibe un nuevo mensaje, la rutina TRAP msghandler se ejecuta y el


nuevo mensaje se copia a la variable message (instruccin RMQGetMessage). A
continuacin se copian los datos de encabezado de RMQ (instruccin
RMQGetMsgHeader). Si el mensaje es del tipo de dato esperado y tiene las
dimensiones correctas, los datos se copian a la variable mydata (instruccin
RMQGetMsgData).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.140 RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ
Continuacin
Sintaxis
RMQGetMsgHeader
[ Message := ] < variable (VAR) of rmqmessage > ,
[ \ Header := < variable (VAR) of rmqheader >
[ \ SenderId := < variable (VAR) of rmqslot >
[ \ UserDef := < variable (VAR) of num >;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID


Message Queue

Application manual - Robot communication


and I/O control, seccin RAPID Message
Queue.

Encontrar el nmero de identidad de una ta- RMQFindSlot - Buscar una identidad de ranurea de RAPID Message Queue o de un
ra para el nombre de ranura en la pgina 397
cliente de Robot Application Builder
Enviar datos a la cola de una tarea de RAPID RMQSendMessage - Enviar un mensaje de
o de un cliente de Robot Application Builder datos de RMQ en la pgina 412
Obtener el primer mensaje de una cola de
RAPID Message Queue.

RMQGetMessage - Obtener un mensaje de


RMQ en la pgina 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 pgiesperar una respuesta del cliente
na 416
Extraer los datos de un rmqmessage

RMQGetMsgData - Obtener la parte de datos


de un mensaje de RMQ en la pgina 402

Ordenar y habilitar interrupciones para un ti- IRMQMessage - Ordenar interrupciones de


po de dato en concreto
RMQ para un tipo de dato en la pgina 175
Obtener el nombre de ranura de una identi- RMQGetSlotName - Obtener el nombre de
dad de ranura especificada
un cliente de RMQ en la pgina 1035
RMQ Slot

rmqslot - Nmero de identidad de un cliente


de RMQ en la pgina 1264

RMQ Header

rmqmessage - Mensaje de RAPID Message


Queue en la pgina 1262

RMQ Message

rmqheader - Encabezado de mensaje de


RAPID Message Queue en la pgina 1260

408

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.141 RMQReadWait - Devuelve un mensaje de una cola RMQ

1.141 RMQReadWait - Devuelve un mensaje de una cola RMQ


Utilizacin
RMQReadWait se utiliza en el modo sincronizado para recibir cualquier tipo de
mensaje.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la instruccin RMQReadWait.
Consulte tambin Ms ejemplos en la pgina 409.
Ejemplo
VAR rmqmessage myrmqmsg;
RMQReadWait myrmqmsg;

El primer mensaje de la cola se recibe en la variable myrmqmsg.


Argumentos
RMQReadWait Message [\TimeOut]

Message
Tipo de dato: rmqmessage
La variable en la que se coloca el mensaje recibido.
[\Timeout]
Tipo de dato: num
El tiempo mximo [s] que la ejecucin del programa debe esperar un mensaje. Si
el tiempo se agota antes de que se cumpla la condicin, se llama al gestor de
errores si lo hay, con el cdigo de error ERR_RMQ_TIMEOUT. Si no hay ningn
gestor de errores, se detiene la ejecucin. Es posible cambiar el tiempo lmite a 0
(cero) segundos, de forma que no se produzca ninguna espera.
Si no se usa el parmetro \Timeout el tiempo de espera es de 60 s. Para esperar
indefinidamente, utilice la constante predefinida WAIT_MAX.
Ejecucin de programas
Todos los mensajes entrantes se ponen en la cola y RMQReadWait los gestiona
en orden FIFO, y de uno en uno. 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.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin RMQReadWait.
Ejemplo 1
VAR rmqmessage myrmqmsg;
RMQReadWait myrmqmsg \TimeOut:=30;

El primer mensaje de la cola se recibe en la variable myrmqmsg. Si no se recibe


ningn mensaje en un intervalo de 30 segundos, se detiene la ejecucin del
programa.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.141 RMQReadWait - Devuelve un mensaje de una cola RMQ
Continuacin
Ejemplo 2
PROC main()
VAR rmqmessage myrmqmsg;
FOR i FROM 1 TO 25 DO
RMQReadWait myrmqmsg \TimeOut:=30;
...
ENDFOR
ERROR
IF ERRNO = ERR_RMQ_TIMEOUT THEN
TPWrite "ERR_RMQ_TIMEOUT error reported";
...
ENDIF
ENDPROC

Se reciben los mensajes de la cola, que se almacenan en la variable myrmqmsg.


Si la recepcin de un mensaje requiere ms de 30 segundos, se llama al gestor
de errores.
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. La variable de sistema ERRNO cambia a:
Cdigo de error

Descripcin

ERR_RMQ_TIMEOUT

No se ha recibido ninguna respuesta dentro del tiempo lmite.

ERR_RMQ_INVMSG

Este error se genera si el mensaje no es vlido. Esto puede


ocurrir por ejemplo si una aplicacin de PC enva un mensaje
daado.

Limitaciones
RMQReadWait slo se admite en el modo sincronizado. La ejecucin de esta
instruccin en el modo basado en interrupciones generar un error de tiempo de
ejecucin no recuperable.
RMQReadWait no se admite en el nivel de ejecucin de rutina TRAP ni en el nivel
de ejecucin del usuario. La ejecucin de esta instruccin en cualquiera de estos
niveles generar un error de tiempo de ejecucin no recuperable.
Sintaxis
RMQReadWait
[ Message ':=' ] < variable (VAR) of rmqmessage>
[ '\' TimeOut':=' < expression (IN) of num > ] ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID


Message Queue

Application manual - Robot communication


and I/O control, seccin RAPID Message
Queue.

Descripcin de los modos de ejecucin de


tareas

Manual de referencia tcnica - Parmetros


del sistema, seccin Tema Controller - Tipo
Task.

Contina en la pgina siguiente


410

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.141 RMQReadWait - Devuelve un mensaje de una cola RMQ
Continuacin
Para obtener ms informacin sobre

Consulte

rmqmessage tipo de dato

rmqmessage - Mensaje de RAPID Message


Queue en la pgina 1262.

Enviar datos a la cola de una tarea de RAPID RMQSendMessage - Enviar un mensaje de


o de un cliente de Robot Application Builder datos de RMQ en la pgina 412.
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 pgiesperar una respuesta del cliente
na 416.
Encontrar el nmero de identidad de una ta- RMQFindSlot - Buscar una identidad de ranurea de RAPID Message Queue o de un
ra para el nombre de ranura en la pgina 397.
cliente de Robot Application Builder.
Extraer los datos de encabezado de un rmq- RMQGetMsgHeader - Obtener informacin
de encabezado de un mensaje de RMQ en
message
la pgina 405.
Extraer los datos de un rmqmessage

RMQGetMsgData - Obtener la parte de datos


de un mensaje de RMQ en la pgina 402.

Ordenar y habilitar interrupciones para un ti- IRMQMessage - Ordenar interrupciones de


po de dato en concreto
RMQ para un tipo de dato en la pgina 175.
Obtener el nombre de ranura de una identi- RMQGetSlotName - Obtener el nombre de
dad de ranura especificada
un cliente de RMQ en la pgina 1035.
Vaciar la cola de mensajes de RAPID

RMQEmptyQueue - Vaca la cola de mensajes de RAPID en la pgina 395rmqmessage Mensaje de RAPID Message Queue en la
pgina 1262.

Obtener el primer mensaje de una cola de


RAPID Message Queue

RMQGetMessage - Obtener un mensaje de


RMQ en la pgina 399.

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.142 RMQSendMessage - Enviar un mensaje de datos de RMQ

1.142 RMQSendMessage - Enviar un mensaje de datos de RMQ


Utilizacin
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.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
RMQSendMessage.
Consulte tambin Ms ejemplos en la pgina 413.
Ejemplo 1
VAR rmqslot destination_slot;
VAR string data:="Hello world";
..
RMQFindSlot destination_slot,"RMQ_Task2";
RMQSendMessage destination_slot,data;

Este ejemplo muestra cmo enviar el valor de la variable data a la tarea de RAPID
"Task2" con el RMQ configurado "RMQ_Task2".
Ejemplo 2
VAR rmqslot destination_slot;
CONST robtarget p5:=[ [600, 500, 225.3], [1, 0, 0, 0], [1, 1, 0,
0], [ 11, 12.3, 9E9, 9E9, 9E9, 9E9] ];
VAR num my_id:=1;
..
RMQFindSlot destination_slot,"RMQ_Task2";
RMQSendMessage destination_slot, p5 \UserDef:=my_id;
my_id:=my_id + 1;

Este ejemplo muestra cmo enviar el valor de la constante p5 a la tarea de RAPID


"Task2" con el RMQ configurado "RMQ_Task2". Tambin se enva un nmero
definido por el usuario. Este nmero puede ser utilizado por el destinatario como
identificador.
Argumentos
RMQSendMessage Slot SendData [\UserDef]

Slot
Tipo de dato: rmqslot
El nmero de ranura de identidad del cliente que debe recibir el mensaje.
SendData
Tipo de dato: anytype
Referencia a una variable, variable persistente o constante que contiene los datos
a enviar al cliente que tiene la identidad indicada en el argumento Slot.
[\UserDef]
User Defined data
Contina en la pgina siguiente
412

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.142 RMQSendMessage - Enviar un mensaje de datos de RMQ
Continuacin
Tipo de dato: num
Datos que especifican la informacin definida por el usuario al receptor de
SendData, es decir, el cliente cuyo nmero de identidad es el indicado en la
variable Slot. El valor debe ser un entero de 0 a 32.767.
Ejecucin de programas
La instruccin RMQSendMessage se usa para enviar datos a un cliente especificado.
La instruccin empaqueta los datos entrantes de un contenedor de almacenamiento
y los enva.
Si el cliente destinatario no est interesado en recibir mensajes, es decir, no ha
configurado ninguna interrupcin que deba ejecutarse para el tipo de dato
especificado en la instruccin RMQSendMessage, o bien no est esperando en
una instruccin RMQSendWait, el mensaje se desecha y se genera un aviso.
No todos los tipos de datos pueden enviarse con esta instruccin (consulte las
limitaciones).
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin
RMQSendMessage.
Ejemplo 1
MODULE SenderMod

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.142 RMQSendMessage - Enviar un mensaje de datos de RMQ
Continuacin
RECORD msgrec
num x;
num y;
ENDRECORD
PROC main()
VAR rmqslot destinationSlot;
VAR msgrec msg :=[0, 0, 0];
! Connect to a Robot Application Builder client
RMQFindSlot destinationSlot My_RAB_client;
! Perform cycle
WHILE TRUE DO
! Update msg with valid data
...
! Send message
RMQSendMessage destinationSlot, msg;
...
ENDWHILE
ERROR
IF ERRNO = ERR_RMQ_INVALID THEN
! Handle destination client lost
WaitTime 1;
! Reconnect to Robot Application Builder client
RMQFindSlot destinationSlot My_RAB_client;
! Avoid execution stop due to retry count exceed
ResetRetryCount;
RETRY;
ELSIF ERRNO = ERR_RMQ_FULL THEN
! Handle destination queue full
WaitTime 1;
! Avoid execution stop due to retry count exceed
ResetRetryCount;
RETRY;
ENDIF
ENDPROC
ENDMODULE

Este ejemplo muestra cmo usar la instruccin RMQSendMessage con la gestin


de errores aplicada a los errores de tiempo de ejecucin que se produzcan. El
programa enva los datos definidos por el usuario del tipo msgrec a un cliente de
Robot Application Builder llamado "My_RAB_client".
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. La variable de sistema ERRNO cambia a:
ERR_RMQ_MSGSIZE

El tamao del mensaje es excesivo. O bien los datos sobrepasan el tamao de mensaje mximo permitido o el cliente destinatario no est configurado para recibir el tamao de datos
enviado.

ERR_RMQ_FULL

La cola de mensajes de destino est llena.

Contina en la pgina siguiente


414

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.142 RMQSendMessage - Enviar un mensaje de datos de RMQ
Continuacin
ERR_RMQ_INVALID

La ranura de destino no ha sido conectada o la ranura de


destino ya no est disponible. Si no hay conexin, debe realizarse una llamada a RMQFindSlot. Si no est disponible, el
motivo es que un cliente remoto se ha desconectado del controlador.

Limitaciones
No es posible usar en interrupciones, enviar ni recibir instancias de tipos de datos
que no tienen valor, son de semivalor o corresponden al tipo de dato motsetdata.
El tamao mximo de los datos que pueden enviarse al cliente de Robot Application
Builder es de aproximadamente 5.000 bytes. El tamao mximo de los datos que
pueden ser recibidos por un RMQ y almacenados en un tipo de dato rmqmessage
es de aproximadamente 3.000 bytes. El tamao de los datos que pueden ser
recibidos por un RMQ es configurable (tamao predeterminado 400, tamao
mximo 3.000).
Sintaxis
RMQSendMessage
[ Slot := ] < variable (VAR) of rmqslot > ,
[ SendData := ] < reference (REF) of anytype >
[ \ UserDef := < expression (IN) of num > ] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID


Message Queue

Application manual - Robot communication


and I/O control, seccin RAPID Message
Queue.

Encontrar el nmero de identidad de una ta- RMQFindSlot - Buscar una identidad de ranurea de RAPID Message Queue o de un
ra para el nombre de ranura en la pgina 397
cliente de Robot Application Builder
Obtener el primer mensaje de una cola de
RAPID Message Queue.

RMQGetMessage - Obtener un mensaje de


RMQ en la pgina 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 pgiesperar una respuesta del cliente
na 416
Extraer los datos de encabezado de un rmq- RMQGetMsgHeader - Obtener informacin
de encabezado de un mensaje de RMQ en
message
la pgina 405
Extraer los datos de un rmqmessage

RMQGetMsgData - Obtener la parte de datos


de un mensaje de RMQ en la pgina 402

Ordenar y habilitar interrupciones para un ti- IRMQMessage - Ordenar interrupciones de


po de dato en concreto
RMQ para un tipo de dato en la pgina 175
Obtener el nombre de ranura de una identi- RMQGetSlotName - Obtener el nombre de
dad de ranura especificada
un cliente de RMQ en la pgina 1035
RMQ Slot

rmqslot - Nmero de identidad de un cliente


de RMQ en la pgina 1264

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.143 RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta

1.143 RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta


Utilizacin
La instruccin 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. Si se utiliza esta instruccin, el usuario necesita saber
qu tipo de dato se enviar en la respuesta proveniente del cliente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin RMQSendWait.
Consulte tambin Ms ejemplos en la pgina 419.
Ejemplo 1
VAR rmqslot destination_slot;
VAR string sendstr:="This string is from T_ROB1";
VAR rmqmessage receivemsg;
VAR num mynum;
..
RMQFindSlot destination_slot, "RMQ_T_ROB2";
RMQSendWait destination_slot, sendstr, receivemsg, mynum;
RMQGetMsgData receivemsg, mynum;

Este ejemplo muestra cmo enviar los datos de la variable sendstr a la tarea de
RAPID "T_ROB2" con el RMQ configurado "RMQ_T_ROB2". Ahora la instruccin
RMQSendWait espera una respuesta de la tarea "T_ROB2". La instruccin
"T_ROB2" necesita enviar datos almacenados en un tipo de dato num para dar fin
a la instruccin de espera RMQSendWait. Una vez recibido el mensaje, los datos
se copian a la variable mynum desde la variable receivemsg con la instruccin
RMQGetMsgData
Ejemplo 2
VAR rmqslot rmqslot1;
VAR string mysendstr;
VAR rmqmessage rmqmessage1;
VAR string receivestr;
VAR num mysendid:=1;
..
mysendstr:="Message from Task1";
RMQFindSlot rmqslot1, "RMQ_Task2";
RMQSendWait rmqslot1, mysendstr \UserDef:=mysendid, rmqmessage1,
receivestr \TimeOut:=20;
RMQGetMsgData rmqmessage1, receivestr;
mysendid:=mysendid + 1;

Este ejemplo muestra cmo enviar los datos de la variable mysendstr a la tarea
de RAPID "Task2" con el RMQ configurado "RMQ_Task2". Tambin se enva un
nmero definido por el usuario. Este nmero puede ser utilizado por el destinatario
como un identificador y debe ser devuelto al remitente para dar fin a la instruccin
de espera RMQSendWait. Otra exigencia para dar fin a la instruccin de espera
es que el cliente enve el tipo de dato correcto. El tipo de dato se especifica en la
Contina en la pgina siguiente
416

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.143 RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta
Continuacin
variable receivestr de la instruccin RMQSendWait. Una vez recibido el mensaje,
los datos efectivos se copian a la variable receivestr con la instruccin
RMQGetMsgData
Argumentos
RMQSendWait Slot SendData [\UserDef] Message ReceiveDataType
[\TimeOut]

Slot
Tipo de dato: rmqslot
El nmero de identidad del cliente que debe recibir el mensaje.
SendData
Tipo de dato: anytype
Referencia a una variable, variable persistente o constante que contiene los datos
a enviar al cliente cuyo nmero de identidad es el indicado en la variable Slot.
[\UserDef]
User Defined data
Tipo de dato: num
Datos que especifican la informacin definida por el usuario al receptor de
SendData, es decir, el cliente cuyo nmero de identidad es el indicado en la
variable Slot. Si se utiliza este argumento opcional, la instruccin RMQSendWait
slo finaliza si los tipos de ReceiveDataType y de UserDef especificados son
iguales a los especificados en la respuesta al mensaje. El valor debe ser un entero
de 0 a 32.767.
Message
Tipo de dato: rmqmessage
La variable en la que se coloca el mensaje recibido.
ReceiveDataType
Tipo de dato: anytype
Una referencia a una variable persistente, una variable o una constante del tipo
de dato esperado por la instruccin. Los datos efectivos no se copian a esta variable
cuando se ejecuta RMQSendWait. Este argumento slo se usa para especificar el
tipo de dato efectivo esperado por la instruccin RMQSendWait.
[\Timeout]
Tipo de dato: num
El tiempo mximo [s] que debe esperar la ejecucin del programa a una respuesta.
Si el tiempo se agota antes de que se cumpla la condicin, se llama al gestor de
errores si lo hay, con el cdigo de error ERR_RMQ_TIMEOUT. Si no hay ningn
gestor de errores, se detiene la ejecucin.
Si no se usa el parmetro \Timeout el tiempo de espera es de 60 s. Para esperar
ininterrumpidamente, utilice la constante predefinida WAIT_MAX.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.143 RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta
Continuacin
Ejecucin de programas
La instruccin RMQSendWait enva datos y espera una respuesta del cliente que
tiene la identidad de ranura especificada. La respuesta debe ser un rmqmessage
del cliente que recibi el mensaje, y la respuesta debe ser del mismo tipo de dato
especificado en el argumento ReceiveDataType. El mensaje se enva de la misma
forma que cuando se usa RMQSendMessage, es decir, el destinatario recibir un
mensaje normal de RAPID Message Queue. El remitente es responsable de que
el destinatario sepa que se necesita una respuesta. Si se usa el argumento opcional
UserDef en la instruccin RMQSendWait, se exige que el cliente destinatario utilice
el mismo UserDef en la respuesta
Si el cliente destinatario no est interesado en recibir mensajes, es decir, no ha
configurado ninguna interrupcin que deba ejecutarse para el tipo de dato
especificado en la instruccin RMQSendWait, el mensaje se desecha y se genera
un aviso. La instruccin devuelve un error tras el tiempo utilizado en el argumento
TimeOut, o tras el tiempo lmite predeterminado de 60 s. Este error puede ser
gestionado en un gestor de errores.
La instruccin RMQSendWait tiene la mxima prioridad si se recibe un mensaje y
ste se corresponde con la descripcin tanto de la respuesta esperada como de
un mensaje conectado a una rutina TRAP (consulte la instruccin IRMQMessage).
Si se produce una cada de alimentacin mientras se espera una respuesta del
cliente, la variable utilizada en el argumento Slot cambia a 0 y la instruccin se
ejecuta de nuevo. En este caso, la instruccin falla debido a una identidad de
ranura no vlida y se llama al gestor de errores si lo hay, con el cdigo de error
ERR_RMQ_INVALID. La identidad de ranura puede ser reinicializada desde ah.
No todos los tipos de datos pueden enviarse con esta instruccin (consulte las
limitaciones).

Contina en la pgina siguiente


418

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.143 RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin RMQSendWait.
Ejemplo 1
MODULE RMQ_Task1_mod
PROC main()
VAR rmqslot destination_slot;
VAR string mysendstr:="String sent from RMQ_Task1_mod";
VAR string myrecstr;
VAR rmqmessage recmsg;
VAR rmqheader header;
!Get slot identity to client called RMQ_Task2
RMQFindSlot destination_slot, "RMQ_Task2";
WHILE TRUE DO
! Do something
...
!Send data in mysendstr, wait for an answer of type string
RMQSendWait destination_slot, mysendstr, recmsg, myrecstr;
!Get information about the received message
RMQGetMsgHeader recmsg \Header:=header;
IF header.datatype = "string" AND header.ndim = 0 THEN
! Copy the data in recmsg
RMQGetMsgData recmsg, myrecstr;
TPWrite "Received string: " + myrecstr;
ELSE
TPWrite "Not a string that was received";
ENDIF
ENDWHILE
ENDPROC
ENDMODULE

Los datos de la variable mysendstr se envan a la tarea de RAPID "Task2" con


la cola de RAPID Message Queue configurada "RMQ_Task2" y la instruccin
RMQSendWait. La respuesta de la tarea de RAPID "Task2" debe ser una cadena
(especificada con el tipo de dato de la variable myrecstr). El mensaje de RMQ
recibido como respuesta se recibe en la variable recmsg. El uso de la variable
myrecstr en la llamada a RMQSendWait es slo una especificacin del tipo de
dato esperado por el remitente como respuesta. No se coloca ningn dato vlido
en la variable de la llamada a RMQSendWait
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. La variable de sistema ERRNO cambia a:
ERR_RMQ_MSGSIZE

El tamao del mensaje es excesivo. O bien los datos sobrepasan el tamao de mensaje mximo permitido o el cliente destinatario no est configurado para recibir el tamao de datos
enviado.

ERR_RMQ_FULL

La cola de mensajes de destino est llena.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.143 RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta
Continuacin
ERR_RMQ_INVALID

La ranura rmqslot no ha sido inicializada o la ranura de destino ya no est disponible. Esto puede ocurrir si la ranura de
destino es un cliente remoto y ste ha sido desconectado del
controlador. RMQSendWait fue interrumpida por una cada de
alimentacin y en el momento del reinicio la ranura rmqslot
es puesta a 0.

ERR_RMQ_TIMEOUT

No se ha recibido ninguna respuesta dentro del tiempo lmite.

ERR_RMQ_INVMSG

Este error se genera si el mensaje no es vlido. Esto puede


ocurrir por ejemplo si una aplicacin de PC enva un mensaje
daado.

Limitaciones
No se permite ejecutar RMQSendWait en el modo sincronizado. Provocara un
error de tiempo de ejecucin no recuperable.
No es posible usar en interrupciones, enviar ni recibir instancias de tipos de datos
que no tienen valor, son de semivalor o corresponden al tipo de dato motsetdata.
El tamao mximo de los datos que pueden enviarse al cliente de Robot Application
Builder es de aproximadamente 5.000 bytes. El tamao mximo de los datos que
pueden ser recibidos por un RMQ y almacenados en un tipo de dato rmqmessage
es de aproximadamente 3.000 bytes. El tamao de los datos que pueden ser
recibidos por un RMQ es configurable (tamao predeterminado 400, tamao
mximo 3.000).
Sintaxis
RMQSendWait
[ Slot := ] < variable (VAR) of rmqslot > ,
[ SendData := ] < reference (REF) of anytype >
[ \ UserDef := < expression (IN) of num > ] ,
[ Message := ] < variable (VAR) of rmqmessage > ,
[ ReceiveDataType := ] < reference (REF) of anytype > ,
[ \ Timeout := < expression (IN) of num > ] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID


Message Queue

Application manual - Robot communication


and I/O control, seccin RAPID Message
Queue.

Encontrar el nmero de identidad de una ta- RMQFindSlot - Buscar una identidad de ranurea de RAPID Message Queue o de un
ra para el nombre de ranura en la pgina 397
cliente de Robot Application Builder
Enviar datos a la cola de una tarea de RAPID RMQSendMessage - Enviar un mensaje de
o de un cliente de Robot Application Builder datos de RMQ en la pgina 412
Obtener el primer mensaje de una cola de
RAPID Message Queue.

RMQGetMessage - Obtener un mensaje de


RMQ en la pgina 399

Extraer los datos de encabezado de un rmq- RMQGetMsgHeader - Obtener informacin


de encabezado de un mensaje de RMQ en
message
la pgina 405
Extraer los datos de un rmqmessage

RMQGetMsgData - Obtener la parte de datos


de un mensaje de RMQ en la pgina 402

Contina en la pgina siguiente


420

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.143 RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta
Continuacin
Para obtener ms informacin sobre

Consulte

Ordenar y habilitar interrupciones para un ti- IRMQMessage - Ordenar interrupciones de


po de dato en concreto
RMQ para un tipo de dato en la pgina 175
Obtener el nombre de ranura de una identi- RMQGetSlotName - Obtener el nombre de
dad de ranura especificada
un cliente de RMQ en la pgina 1035
RMQ Slot

rmqslot - Nmero de identidad de un cliente


de RMQ en la pgina 1264

RMQ Message

rmqmessage - Mensaje de RAPID Message


Queue en la pgina 1262

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.144 Save - Guarda un mdulo de programa

1.144 Save - Guarda un mdulo de programa


Utilizacin
Save se utiliza para guardar un mdulo de programa.
El mdulo 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.
Tambin es posible guardar un mdulo de sistema en la ruta de archivos
especificada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin Save.
Consulte tambin Ms ejemplos en la pgina 423.
Ejemplo 1
Load "HOME:/PART_B.MOD";
...
Save "PART_B";

Carga en la memoria de programa el mdulo de programa denominado PART_B.MOD


desde HOME:.
Guarda el mdulo de programa PART_B con la ruta de archivo original HOME: y
el nombre de archivo original PART_B.MOD..
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 mdulo de
programa.
Existen variables predefinidas con el tipo de dato taskid para todas las tareas
de programa del sistema. La identificacin de la variable ser nombre_tarea+ID.
Por ejemplo, para la tarea T_ROB1 la identificacin de la tarea es T_ROB1Id.
[\TaskName]
Tipo de dato: string
El nombre de la tarea de programa en la que debe guardarse el mdulo de
programa.
Si no se especifica ninguno de los argumentos \TaskRef o \TaskName, se guarda
el mdulo de programa de la tarea de programa actual (la que se est ejecutando).
ModuleName
Tipo de dato: string
El mdulo de programa que se desea guardar.

Contina en la pgina siguiente


422

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.144 Save - Guarda un mdulo de programa
Continuacin
[\FilePath]
Tipo de dato: string
La ruta y el nombre de archivo del lugar en el que se desea guardar el mdulo de
programa. El nombre de archivo se excluye cuando se utiliza el argumento \File.
[\File]
Tipo de dato: string
Cuando se excluye el nombre del archivo en el argumento \FilePath, es necesario
especificarlo con este argumento.
El argumento \FilePath\File slo puede omitirse en el caso de los mdulos
de programa cargados con Load o StartLoad-WaitLoad. Adems, el mdulo
de programa se almacena en el mismo destino que el especificado en estas
instrucciones. Para almacenar el mdulo de programa en otro destino, tambin
es posible usar el argumento \FilePath \File.
Para poder guardar un mdulo de programa cargado anteriormente en el
FlexPendant, un ordenador externo o en la configuracin del sistema, es necesario
utilizar el argumento \FilePath \File .
Ejecucin de programas
La ejecucin del programa espera a que el mdulo de programa termine de
guardarse antes de continuar en la instruccin siguiente.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin Save.
Ejemplo 1
Save "PART_A" \FilePath:="HOME:/DOORDIR/PART_A.MOD";

Guarda el mdulo de programa PART_A en HOME: en el archivo PART_A.MOD y en


el directorio DOORDIR.
Ejemplo 2
Save "PART_A" \FilePath:="HOME:" \File:="DOORDIR/PART_A.MOD";

Lo mismo que en el ejemplo 1 anterior pero con otra sintaxis.


Ejemplo 3
Save \TaskRef:=TSK1Id, "PART_A"
\FilePath:="HOME:/DOORDIR/PART_A.MOD";

Guarda el mdulo de programa PART_A de la tarea de programa TSK1 en el


destino especificado. ste es un ejemplo en el que la instruccin Save se ejecuta
en una tarea de programa y el guardado se hace en otra tarea de programa.
Ejemplo 4
Save \TaskName:="TSK1", "PART_A"
\FilePath:="HOME:/DOORDIR/PART_A.MOD";

Guarda el mdulo de programa PART_A de la tarea de programa TSK1 en el destino


especificado. ste es otro ejemplo en el que la instruccin Save se ejecuta en una
tarea de programa y el guardado se hace en otra tarea de programa.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.144 Save - Guarda un mdulo de programa
Continuacin
Limitaciones
Las rutinas TRAP, los eventos de E/S del sistema y otras tareas de programa no
pueden ejecutarse durante la operacin de guardado. Por tanto, este tipo de
operaciones se retardan.
La operacin de guardado puede interrumpir la actualizacin paso a paso de los
datos de tipo PERS desde otras tareas de programa. Esto da como resultado datos
de tipo PERS completos incoherentes.
Un paro de programa durante la ejecucin de la instruccin Save puede dar lugar
a un paro protegido con Motors OFF. El mensaje de error "20025 Tiempo excesivo
Orden paro" se muestra en el FlexPendant.
Evite tener movimientos en curso durante el guardado.
Gestin de errores
Si el nombre de tarea de programa contenido en \TaskName no se encuentra en
el sistema, la variable de sistema ERRNO cambia a ERR_TASKNAME.
Si no es posible guardar el mdulo de programa porque no hay ningn nombre
de mdulo, ste es desconocido o se trata de un nombre de mdulo ambiguo, la
variable de sistema ERRNO cambia a ERR_MODULE.
Si no es posible guardar el archivo por no disponer de los permisos suficientes,
si no existe el directorio o no queda espacio libre en el dispositivo, la variable de
sistema ERRNO cambia a ERR_IOERROR.
Si no se especifica el argumento \FilePath en los mdulos de programa cargados
desde el FlexPendant, los parmetros del sistema o un ordenador externo, la
variable ERRNO cambia a ERR_PATH.
Estos errores pueden ser gestionados en el gestor de errores.
Sintaxis
Save
[[ \ TaskRef := <variable (VAR) of taskid>]
|[ \ TaskName := <expression (IN) of string>] ,]
[ ModuleName := ] <expression (IN) of string>
[ \ FilePath :=<expression (IN) of string> ]
[ \ File := <expression (IN) of string>] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tareas de programa

taskid - Identificacin de tareas en la pgina 1297

424

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.145 SCWrite - Enva los datos de la variable a una aplicacin cliente

1.145 SCWrite - Enva los datos de la variable a una aplicacin cliente


Utilizacin
SCWrite (Superior Computer Write) se utiliza para enviar el nombre, el tipo, el
tamao y el valor de una variable persistente a una aplicacin cliente. Es posible
enviar tanto variables individuales como matrices de variables.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin instruction
nombre.
Ejemplo 1
PERS num cycle_done;
PERS num numarr{2}:=[1,2];
SCWrite cycle_done;

El nombre, el tipo y el valor de la variable persistente cycle_done se enva a


todas las aplicaciones cliente.
Ejemplo 2
SCWrite \ToNode := "138.221.228.4", cycle_done;

El nombre, el tipo y el valor de la variable persistente cycle_done se enva a


todas las aplicaciones cliente. El argumento \ToNode no se tiene en cuenta.
Ejemplo 3
SCWrite numarr;

El nombre, el tipo, la dimensin y el valor de la variable persistente numarr se


enva a todas las aplicaciones cliente.
Ejemplo 4
SCWrite \ToNode := "138.221.228.4", numarr;

El nombre, el tipo, la dimensin y el valor de la variable persistente numarr se


enva a todas las aplicaciones cliente. El argumento \ToNode no se tiene en cuenta.
Argumentos
SCWrite [ \ToNode ] Variable

[\ToNode]
Tipo de dato: datatype
El argumento no se tiene en cuenta.
Variable
Tipo de dato: anytype
El nombre de una variable persistente.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.145 SCWrite - Enva los datos de la variable a una aplicacin cliente
Continuacin
Ejecucin de programas
El nombre, el tipo, la dimensin y el valor de la variable persistente se enva a
todas las aplicaciones cliente. dim es la dimensin de la variable y slo se enva
si la variable es una matriz.
Gestin de errores
La instruccin SCWrite devuelve un error en los casos siguientes:
La variable no pudo ser enviada al cliente. Puede deberse a las causas siguientes:

Los mensajes de SCWrite llegan tan cercanos entre s que no es posible


enviarlos al cliente. Solucin: Aada una instruccin WaitTime entre las
instrucciones SCWrite sucesivas.

El valor de la variable es demasiado grande. Reduzca el tamao de la MATRIZ


o del REGISTRO.

El mensaje de error ser el siguiente: 41473 Error de acceso del


sistema
Imposible enviar
YYYYYY
DondeYYYYeselnombredelavariable.

Cuando se produce un error, el programa se detiene y es necesario reiniciarlo. La


variable del sistema ERRNO contendr al valor ERR_SC_WRITE.
La instruccin SCWrite no devolver ningn error en algunos casos, por ejemplo
si la aplicacin cliente est cerrada o la comunicacin est desactivada. El programa
se sigue ejecutando.
SCWrite recuperacin en caso de error
Para detener el programa cuando se produce un error en una instruccin SCWrite,
ste debe ser gestionado por un gestor de errores. En este caso, el error slo
queda registrado en el registro y el programa se sigue ejecutando.

Contina en la pgina siguiente


426

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.145 SCWrite - Enva los datos de la variable a una aplicacin cliente
Continuacin
Recuerde que la gestin de errores dificultar la localizacin de los errores en la
comunicacin con la aplicacin cliente, dado que el error no se comunica nunca
a travs de la pantalla del FlexPendant (a pesar de que s aparece en el registro).
Con RobotWare 5.0 o posteriores
El programa de RAPID tiene el aspecto siguiente:
MODULE SCW
PROC main ()
. La ejecucin comienza aqu
.
1
.
SCWrite load0;
.
.
.

2
Si se produce un error

ERROR
IF ERRNO=ERR_SC_WRITE THEN
! Site aqu el cdigo de error para la gestin del error de SCWrite (si desea aadirlo)
TRYNEXT;
ELSE
! Site aqu el cdigo de error para la gestin de los dems errores
ENDIF
ENDPROC
ENDMODULE

xx0500002339_es

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.146 SearchC - Realiza una bsqueda en crculo usando el robot

1.146 SearchC - Realiza una bsqueda en crculo usando el robot


Utilizacin
SearchC (Search Circular se utiliza para buscar una posicin al mover el punto
central de la herramienta (TCP) en sentido circular.
Durante el movimiento, el robot supervisa una seal digital de entrada. Cuando el
valor de la seal cambia al valor solicitado, el robot lee inmediatamente la posicin
actual.
Normalmente, esta instruccin puede usarse cuando la herramienta sostenida por
el robot es una sonda para deteccin de superficies. Las coordenadas de contorno
de un objeto de trabajo pueden obtenerse con la instruccin SearchC.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Al utilizar instrucciones de bsqueda, resulta importante configurar el sistema de
E/S para reducir al mnimo el tiempo que transcurre desde el establecimiento de
la seal fsica hasta que el sistema obtiene informacin acerca del valor (utilice la
unidad de E/S con control de interrupciones, no con control de sondeo). La forma
de hacerlo puede ser distinta de un bus de campo a otro. Si se utiliza DeviceNet,
las unidades de ABB DSQC 651 (AD Combi I/O) y DSQC 652 (Digital I/O)
proporcionan tiempos breves, dado que utilizan el cambio de estado como tipo de
conexin. Si se utilizan otros buses de campo, asegrese de configurar la red
correctamente para conseguir las condiciones correctas.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SearchC.
Consulte tambin Ms ejemplos en la pgina 433.
Ejemplo 1
SearchC di1, sp, cirpoint, p10, v100, probe;

El TCP de la sonda probe se mueve circularmente hacia la posicin p10 a una


velocidad de v100. Cuando el valor de la seal di1 cambia a activo, la posicin
se almacena en sp.
Ejemplo 1
SearchC \Stop, di2, sp, cirpoint, p10, v100, probe;

El TCP de la sonda probe se mueve circularmente hacia la posicin p10. Cuando


el valor de la seal di2 cambia a activo, la posicin se almacena en sp y el robot
se detiene inmediatamente.
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
Contina en la pgina siguiente
428

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.146 SearchC - Realiza una bsqueda en crculo usando el robot
Continuacin
Tipo de dato:switch
El movimiento del robot se detiene lo antes posible, sin mantener el TCP en la
trayectoria (paro rgido) cuando el valor de la seal de bsqueda cambia a activo.
Sin embargo, el robot se mueve una distancia corta antes del paro y no regresa a
la posicin buscada, es decir, a la posicin en la que cambi la seal.
AVISO!
La detencin de la bsqueda con un paro rgido (modificador \Stop) slo est
permitida si la velocidad del TCP es inferior a los 100 mm/s. En los paros rgidos
a una mayor velocidad, algunos ejes pueden moverse en una direccin
impredecible.
[ \PStop ]
Path 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 seal de bsqueda cambia a activo.
Sin embargo, el robot se mueve cierta distancia antes del paro y no regresa a la
posicin buscada, es decir, a la posicin en la que cambi la seal.
[ \SStop ]
Soft Stop
Tipo de dato:switch
El movimiento del robot se detiene lo antes posible, manteniendo el TCP cerca de
la trayectoria o en sta (paro blando) cuando el valor de la seal de bsqueda
cambia a activo. Sin embargo, el robot slo se mueve una distancia corta antes
del paro y no regresa a la posicin buscada, es decir, a la posicin en la que cambi
la seal. SStop resulta ms rpido que PStop. Sin embargo, cuando el robot
funciona a una velocidad superior a los 100 mm/s, se detiene en la direccin de
la tangente del movimiento, lo que hace que se deslice marginalmente de la
trayectoria.
[ \Sup ]
Supervision
Tipo de dato:switch
La instruccin de bsqueda es sensible a la activacin de seales durante el
movimiento completo (bsqueda en vuelo), es decir, incluso despus de que se
informa del primer cambio de seal. Si se produce ms de una coincidencia durante
una bsqueda, se genera un error recuperable con el robot en ToPoint.
Si se omite el argumento \Stop, \PStop, \SStop o \Sup (no se utiliza ningn
modificador):

el movimiento contina (bsqueda en vuelo) hasta la posicin especificada


en el argumento ToPoint (igual que en el argumento \Sup)

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.146 SearchC - Realiza una bsqueda en crculo usando el robot
Continuacin

Se indica un error cuando no existe ninguna coincidencia de bsqueda, pero


no se indica tal error si hay ms de una coincidencia de bsqueda (la primera
coincidencia de bsqueda se devuelve como SearchPoint)

Signal
Tipo de dato:signaldi
El nombre de la seal a supervisar.
[ \Flanks ]
Tipo de dato:switch
Los bordes positivo y negativo de la seal son vlidos para determinar el xito de
una bsqueda.
Si se omite el argumento \Flanks, slo el borde positivo de la seal es vlido
para determinar el xito de una bsqueda y se activa una supervisin de la seal
al comenzar un proceso de bsqueda. Esto significa que si la seal ya tiene un
valor positivo al comenzar el proceso de bsqueda o se pierde la comunicacin
con la seal, el movimiento del robot se detiene lo antes posible, manteniendo el
TCP en la trayectoria (paro blando). Sin embargo, el robot se mueve una distancia
corta antes del paro y no vuelve a la posicin inicial. Se genera un error recuperable
por el usuario (ERR_SIGSUPSEARCH), que puede gestionarse en el gestor de
errores.
[ \PosFlank ]
Tipo de dato:switch
El borde positivo de la seal es vlido para determinar el xito de una bsqueda.
[ \NegFlank ]
Tipo de dato:switch
El borde positivo de la seal es vlido para determinar el xito de una bsqueda.
[ \HighLevel ]
Tipo de dato:switch
La misma funcionalidad que si no usara el modificador \Flanks.
El borde positivo de la seal es vlido para determinar el xito de una bsqueda
y se activar la supervisin de seales al inicio del proceso de bsqueda. Esto
significa que si la seal ya tiene el valor positivo al comenzar un proceso de
bsqueda o se pierde la comunicacin con la seal, el movimiento del robot se
detiene lo antes posible, 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.
[ \LowLevel ]
Tipo de dato:switch
El borde negativo de la seal es vlido para determinar el xito de una bsqueda
y se activar la supervisin de seales al inicio del proceso de bsqueda. Esto
significa que si la seal ya tiene el valor 0 al comenzar un proceso de bsqueda
o se pierde la comunicacin con la seal, el movimiento del robot se detiene lo
antes posible, manteniendo el TCP en la trayectoria (paro blando). Se generar
Contina en la pgina siguiente
430

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.146 SearchC - Realiza una bsqueda en crculo usando el robot
Continuacin
un error recuperable por el usuario (ERR_SIGSUPSEARCH) que puede gestionarse
en el gestor de errores.
SearchPoint
Tipo de dato: robtarget
La posicin del TCP y de los ejes externos en el momento del disparo de la seal
de bsqueda. La posicin se especifica en el sistema de coordenadas ms externo,
ProgDisp/ExtOffs la herramienta especificada, el objeto de trabajo y el sistema
de coordenadas into consideration.
CirPoint
Tipo de dato: robtarget
El punto de crculo del robot. Consulte la instruccin MoveC para obtener una
descripcin ms detallada del movimiento circular. El punto de crculo se define
como una posicin con nombre o se almacena directamente en la instruccin
(marcada con un asterisco * en la instruccin).
ToPoint
Tipo de dato: robtarget
El punto de destino de los ejes del robot y de los ejes externos. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin). SearchC utiliza siempre un punto de paro
como dato de zona del destino.
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, los ejes externos y la
reorientacin de la herramienta.
[ \V ]
Velocity
Tipo de dato: num
Este argumento se utiliza para especificar la velocidad del TCP en mm/s
directamente en la instruccin. A continuacin, se sustituye por la velocidad
correspondiente, especificada en los datos de velocidad.
[ \T ]
Time
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.146 SearchC - Realiza una bsqueda en crculo usando el robot
Continuacin
Tipo de dato: num
Este argumento se utiliza para especificar el tiempo total en segundos que dura
el movimiento del robot. A continuacin, se sustituye por los datos de velocidad
correspondientes.
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 la posicin de destino especificada.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que estn relacionadas las
posiciones de robot indicadas en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si por otro lado se usa un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento para ejecutar un movimiento
lineal respecto del objeto de trabajo.
[ \Corr ]
Correction
Tipo de dato: switch
Si este argumento est presente, los datos de correccin escritos en una entrada
de correccin mediante una instruccin CorrWrite se aaden a la trayectoria y
a la posicin de destino.
Ejecucin de programas
Consulte la instruccin MoveC para obtener ms informacin acerca del movimiento
circular.
El movimiento termina siempre con un punto de paro, lo que implica que el robot
se detiene en el punto de destino.
Cuando se realiza una bsqueda en vuelo, es decir, cuando se utiliza el argumento
\Sup o no se especifica ningn modificador, el movimiento del robot contina
siempre hacia el punto de destino programado. Cuando se realiza una bsqueda
con el modificador \Stop, \PStop o \SStop, el movimiento del robot se detiene
cuando se detecta la primera seal.
La instruccin SearchC devuelve la posicin del TCP cuando el valor de la seal
digital cambia al valor solicitado, como se representa en la figura siguiente.

Contina en la pgina siguiente


432

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.146 SearchC - Realiza una bsqueda en crculo usando el robot
Continuacin
La figura muestra cmo se usa la deteccin de seal disparada por flancos (la
posicin se almacena slo cuando la seal cambia por primera vez).
Sin el modificador \Flanks
1
0

tiempo

Con el modificador \Flanks


1
0

tiempo

= Reaccin de la instruccin
cuando la seal cambia
xx0500002237_es

Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin SearchC.
Ejemplo 1
SearchC \Sup, di1\Flanks, sp, cirpoint, p10, v100, probe;

El TCP de la sonda probe se mueve circularmente hacia la posicin p10. Cuando


el valor de la seal di1 cambia a activo o pasivo, la posicin se almacena en sp.
Si el valor de la seal cambia dos veces, el programa genera un error.
Limitaciones
Limitaciones generales acorde con la instruccin MoveC.
Los datos de zona de la instruccin de posicionamiento que precede a SearchC
deben usarse con cuidado. El comienzo de la bsqueda, es decir, cuando la seal
de E/S est preparada para reaccionar, no es en este caso el punto de destino de
la instruccin de posicionamiento anterior, sino un punto que se encuentra en la
trayectoria real del robot. En la figura siguiente se muestra un ejemplo de algo que
puede salir mal cuando se usan datos de zona distintos de fine.
La instruccin SearchC no debe reanudarse en ningn caso una vez traspasado
el punto de crculo. De lo contrario, el robot no toma la trayectoria programada
(posicionamiento alrededor de la trayectoria circular en otra direccin, en
comparacin con la programada).
En la figura siguiente se muestra cmo se encuentra una posicin en el lado
incorrecto del objeto a causa del uso de datos de zona incorrectos.
Punto de inicio con
datos de zona z10

Objeto buscado

Punto final
Punto de inicio con
datos de zona fine

xx0500002238_es

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.146 SearchC - Realiza una bsqueda en crculo usando el robot
Continuacin

AVISO!
Limitaciones de bsqueda con movimiento sincronizado y coordinado:

Si se utiliza SearchL, SearchC o SearchExtJ en una tarea de programa


y en otra instruccin de movimiento de otra tarea de programa, slo es
posible usar la bsqueda en vuelo con el modificador \Sup. Adems de
ello, slo es posible realizar la recuperacin en caso de error con TRYNEXT.

Es posible utilizar toda la funcionalidad de bsqueda 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 bsqueda desde la misma seal digital de entrada. Con
ello se genera una coincidencia de bsqueda de forma sincronizada en
todas las instrucciones de bsqueda. Cualquier recuperacin de error debe
ser tambin la misma en todas las tareas de programa implicadas.

Mientras la bsqueda est activa, no es posible almacenar la trayectoria actual


con la instruccin StorePath.
Exactitud de repeticin para la posicin de coincidencia de bsqueda con una
velocidad de 20 a 1.000 mm/s de 0,1 a 0,3 mm.
Distancia de paro tpica con una velocidad de bsqueda de 50 mm/s:

Sin el TCP en la trayectoria (modificador \Stop), de 1 a 3 mm

Con el TCP en la trayectoria (modificador \PStop), de 15 a 25 mm

Con el TCP cerca de la trayectoria (modificador \SStop), de 4 a 8 mm

Limitaciones de la bsqueda en un transportador:

la bsqueda detiene el robot en caso de coincidencia o si la bsqueda no


tiene xito, de forma que la bsqueda debe hacerse en el mismo sentido
que el del movimiento del transportador y despus del paro de bsqueda
debe ir seguida de un movimiento hasta una posicin segura. Utilice la
gestin de errores para el movimiento hasta una posicin segura si la
bsqueda no tiene xito.

la exactitud de repeticin de la posicin de coincidencia de bsqueda ser


menor al buscar en un transportador y depende de la velocidad del
transportador y de hasta qu punto esta velocidad es estable.

Gestin de errores
Durante las bsquedas, se generan errores en los casos siguientes:

Cuando no se detecta ninguna seal. Se genera el error ERR_WHLSEARCH.

Cuando se produce la deteccin de ms de una seal. Se genera el error


ERR_WHLSEARCH slo si se us el argumento \Sup.

La seal ya tiene un valor positivo al comienzo del proceso de bsqueda o


la comunicacin con la seal se pierde. Esto genera el error
ERR_SIGSUPSEARCH slo si se omite el argumento \Flanks.

Contina en la pgina siguiente


434

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.146 SearchC - Realiza una bsqueda en crculo usando el robot
Continuacin
Los errores pueden gestionarse de formas distintas en funcin del modo de
ejecucin seleccionado:

Ejecucin continua hacia delante / Instrucciones hacia adelante


/ERR_WHLSEARCH: No se devuelve ninguna posicin y el movimiento
contina 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.

Ejecucin continua hacia adelante / Instrucciones hacia adelante /


ERR_SIGSUPSEARCH: No se devuelve ninguna posicin y el movimiento
se detiene siempre lo antes posible al principio de la trayectoria de bsqueda.
La variable de sistema ERRNO cambia a ERR_SIGSUPSEARCH y es posible
gestionar el error en el gestor de errores de la rutina.

Instruccin hacia atrs: Durante la ejecucin hacia atrs, la instruccin


realiza el movimiento pero no realiza la supervisin de seales.

Sintaxis
SearchC
[ \ Stop ,] | [ \ PStop ,] | [ \ SStop ,] | [ \
Sup ,]
[ Signal:= ] < variable (VAR) of signaldi >
[\ Flanks] |
[\ PosFlank] |
[\ NegFlank] |
[\ HighLevel] |
[\ LowLevel] ,
[ SearchPoint:= ] < var or pers (INOUT) of robtarget > ,
[ CirPoint:= ] < expression (IN) of robtarget > ,
[ ToPoint:= ] < expression (IN) of robtarget > ,
[ \ ID := < expression (IN) of identno >],
[ Speed:= ] < expression (IN) of speeddata >
[ \ V := < expression (IN) of num > ]|
[ \ T := < expression (IN) of num > ] ,
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj:= < persistent (PERS) of wobjdata > ]
[ \ Corr ];

Informacin relacionada
Para obtener ms informacin sobre Consulte
Bsquedas lineales

SearchL - Realiza una bsqueda lineal usando el


robot en la pgina 444

Escritura en una entrada de correc- CorrWrite - Escribe en un generador de correcciones


cin
en la pgina 81
Mueve el robot en crculo

MoveC - Mueve el robot en crculo en la pgina 246

Movimiento circular

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.146 SearchC - Realiza una bsqueda en crculo usando el robot
Continuacin
Para obtener ms informacin sobre Consulte
Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Utilizacin de gestores de errores

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Recuperacin en caso
de error

Movimiento en general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S

436

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.147 SearchExtJ - Busca con una o varias unidades mecnicas sin TCP

1.147 SearchExtJ - Busca con una o varias unidades mecnicas sin TCP
Utilizacin
SearchExtJ (Search External Joints) se usa para buscar la posicin de ejes
externos cuando slo hay movimiento en ejes externos lineales o de rotacin.
Estos ejes externos pueden pertenecer a una o varias unidades mecnicas sin
TCP.
Durante el movimiento, el sistema supervisa una seal digital de entrada. Cuando
el valor de la seal cambia al valor solicitado, el sistema lee inmediatamente la
posicin actual.
Esta instruccin slo puede usarse si:

La tarea de programa actual est definida como tarea de movimiento

La tarea controla una o varias unidades mecnicas sin TCP

Al utilizar instrucciones de bsqueda, resulta importante configurar el sistema de


E/S para reducir al mnimo el tiempo de retardo que transcurre desde el
establecimiento de la seal fsica hasta que el sistema obtiene informacin acerca
del valor (utilice la unidad de E/S con control de interrupciones, no con control de
sondeo). La forma de hacerlo puede ser distinta de un bus de campo a otro. Si se
utiliza DeviceNet, las unidades de ABB DSQC 651 (AD Combi I/O) y DSQC 652
(Digital I/O) proporcionan retardos breves, dado que utilizan el cambio de estado
como tipo de conexin. Si se utilizan otros buses de campo, asegrese de que la
red est configurada correctamente para obtener las condiciones correctas.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SearchExtJ.
Consulte tambin Ms ejemplos en la pgina 441.
Ejemplo 1
SearchExtJ di1, searchp, jpos10, vrot20;

La unidad mecnica con ejes de rotacin se mueve hacia la posicin jpos10 a la


velocidad de vrot20. Cuando el valor de la seal di1 cambia a activo, la posicin
se almacena en searchp.
Ejemplo 2
SearchExJ \Stop, di2, posx, jpos20, vlin50;

La unidad mecnica con eje lineal se mueve hacia la posicin jpos20. Cuando el
valor de la seal di2 cambia a activo, la posicin se almacena en posx y el
movimiento en curso se detiene inmediatamente.
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
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.147 SearchExtJ - Busca con una o varias unidades mecnicas sin TCP
Continuacin
El movimiento del robot se detiene lo antes posible con un paro rgido cuando el
valor de la seal de bsqueda cambia a activo. Sin embargo, los ejes externos se
mueven una distancia pequea antes de detenerse y no retroceden hasta la
posicin buscada, es decir, hasta la posicin en la que cambi la seal.
[ \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 seal de bsqueda cambia a activo. Sin embargo, los ejes externos
se mueven una distancia bastante grande antes de deternese y no retroceden
hasta la posicin buscada, es decir, hasta la posicin en la que cambi la seal.
[ \SStop ]
Soft Stop
Tipo de dato: switch
El movimiento del robot se detiene lo antes posible con un paro suave rpido
cuando el valor de la seal de bsqueda cambia a activo. Sin embargo, los ejes
externos slo se mueven una distancia pequea antes de detenerse y no retroceden
hasta la posicin buscada, es decir, hasta la posicin en la que cambi la seal.
Stop es ms rpido en comparacin con SStop. SStop, y ms rpido en
comparacin con PStop.
[ \Sup ]
Supervision
Tipo de dato: switch
La instruccin de bsqueda es sensible a la activacin de seales durante el
movimiento completo (bsqueda en vuelo), es decir, incluso despus de que se
informa del primer cambio de seal. Si se produce ms de una coincidencia durante
una bsqueda, se genera un error recuperable con las unidades mecnicas en la
ToJointPos.
Si se omite el argumento \Stop, \PStop, \SStop o \Sup (no se utiliza ningn
modificador):

El movimiento contina (bsqueda en vuelo) hasta la posicin especificada


en el argumento ToJointPos (igual que en el argumento \Sup)

Se indica un error cuando hay una coincidencia de bsqueda, pero no se


indica tal error si hay ms de una coincidencia de bsqueda (la primera
coincidencia de bsqueda se devuelve como SearchJointPos)

Signal
Tipo de dato: signaldi
El nombre de la seal a supervisar.
[ \Flanks ]
Tipo de dato: switch
Los bordes positivo y negativo de la seal son vlidos para determinar el xito de
una bsqueda.
Contina en la pgina siguiente
438

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.147 SearchExtJ - Busca con una o varias unidades mecnicas sin TCP
Continuacin
Si se omite el argumento \Flanks, slo el borde positivo de la seal es vlido
para determinar el xito de una bsqueda y se activa una supervisin de la seal
al comenzar un proceso de bsqueda. Esto significa que si la seal ya tiene el
valor positivo al comenzar un proceso de bsqueda o se pierde la comunicacin
con la seal, el movimiento se detiene lo antes posible con un paro suave. Se
genera un error recuperable por el usuario (ERR_SIGSUPSEARCH), que puede
gestionarse en el gestor de errores.
[ \PosFlank ]
Tipo de dato:switch
El borde positivo de la seal es vlido para determinar el xito de una bsqueda.
[ \NegFlank ]
Tipo de dato:switch
El borde positivo de la seal es vlido para determinar el xito de una bsqueda.
[ \HighLevel ]
Tipo de dato:switch
La misma funcionalidad que si no usara el modificador \Flanks.
El borde positivo de la seal es vlido para determinar el xito de una bsqueda
y se activar la supervisin de seales al inicio del proceso de bsqueda. Esto
significa que si la seal ya tiene el valor positivo al comenzar un proceso de
bsqueda o se pierde la comunicacin con la seal, el movimiento del robot se
detiene lo antes posible mediante un paro blando. Se generar un error recuperable
por el usuario (ERR_SIGSUPSEARCH) que puede gestionarse en el gestor de
errores.
[ \LowLevel ]
Tipo de dato:switch
El borde negativo de la seal es vlido para determinar el xito de una bsqueda
y se activar la supervisin de seales al inicio del proceso de bsqueda. Esto
significa que si la seal ya tiene el valor 0 al comenzar un proceso de bsqueda
o se pierde la comunicacin con la seal, el movimiento del robot se detiene lo
antes posible mediante un paro blando. Se generar un error recuperable por el
usuario (ERR_SIGSUPSEARCH) que puede gestionarse en el gestor de errores.
SearchJointPos
Tipo de dato: jointtarget
La posicin de los ejes externos en el momento del disparo de la seal de
bsqueda. La posicin tiene en cuenta cualquier ExtOffs activo.
ToJointPos
Tipo de dato: jointtarget
El punto de destino de los ejes externos. Se define como una posicin con nombre
o se almacena directamente en la instruccin (marcada con un asterisco * en la
instruccin). SearchExtJ utiliza siempre un punto de paro como dato de zona del
destino.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.147 SearchExtJ - Busca con una o varias unidades mecnicas sin TCP
Continuacin
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
[ \UseEOffs ]
Use External Offset
Tipo de dato: switch
El offset de los ejes externos, configurado por la instruccin EOffsSet, se activa
para la instruccin SearchExtJ cuando se utiliza el argumento UseEOffs. Consulte
la instruccin EOffsSet para obtener ms informacin acerca del offset externo.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del eje externo lineal o de rotacin.
[ \T ]
Time
Tipo de dato: num
Este argumento se utiliza para especificar el tiempo total en segundos que dura
el movimiento de las unidades mecnicas. A continuacin, se sustituye por los
datos de velocidad correspondientes.
Ejecucin de programas
Consulte la instruccin MoveExtJ para obtener ms informacin acerca del
movimiento de las unidades mecnicas sin TCP.
El movimiento termina siempre con un punto de paro, lo que implica que los ejes
externos se detienen en el punto de destino. Si se realiza una bsqueda en vuelo,
es decir, cuando se utiliza el argumento \Sup o no se especifica ningn
modificador, el movimiento siempre contina hacia el punto de destino programado.
Si se realiza una bsqueda con el modificador \Stop, \PStop o \SStop, el
movimiento se detiene cuando se detecta la primera seal.
La instruccin SearchExtJ almacena la posicin de los ejes externos cuando el
valor de la seal digital cambia al valor solicitado, como se representa en la figura
siguiente.

Contina en la pgina siguiente


440

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.147 SearchExtJ - Busca con una o varias unidades mecnicas sin TCP
Continuacin
La figura muestra cmo se usa la deteccin de seal disparada por flancos (la
posicin se almacena slo cuando la seal cambia por primera vez).

Sin el modificador \Flanks


1
0

tiempo

Con el modificador \Flanks


1
0

tiempo

= Reaccin de la instruccin
cuando la seal cambia
xx0500002243_es

Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin SearchExtJ.
Ejemplo 1
SearchExtJ \Sup, di1\Flanks, searchp,jpos10, vrot20;

La unidad mecnica se mueve hacia la posicin jpos10. Cuando el valor de la


seal di1 cambia a activo o pasivo, la posicin se almacena en searchp. Si el
valor de la seal cambia dos veces, el programa genera un error una vez que se
completa el proceso de bsqueda.
Ejemplo 2
SearchExtJ \Stop, di1, sp, jpos20, vlin50;
MoveExtJ sp, vlin50, fine \Inpos := inpos50;

Al comienzo del proceso de bsqueda, se realiza una comprobacin de la seal


dil y si la seal ya tiene un valor positivo o se pierde la comunicacin con el robot,
el movimiento se detiene. De lo contrario, la unidad mecnica se mueve hacia la
posicin jpos20. Cuando el valor de la seal di1 cambia a activo, la posicin se
almacena en sp. La unidad mecnica vuelve a este punto usando un punto de
paro definido exactamente.
Gestin de errores
Durante las bsquedas, se generan errores en los casos siguientes:

Cuando no se detecta ninguna seal. Se genera el error ERR_WHLSEARCH.

Cuando se produce la deteccin de ms de una seal. Se genera el error


ERR_WHLSEARCH slo si se us el argumento \Sup.

La seal ya tiene un valor positivo al principio del proceso de bsqueda o


se pierde la comunicacin con la seal. Esto genera el error
ERR_SIGSUPSEARCH slo si se omite el argumento \Flanks.

Los errores pueden gestionarse de formas distintas en funcin del modo de


ejecucin seleccionado:

Ejecucin continua hacia delante / Instrucciones hacia adelante


/ERR_WHLSEARCH: No se devuelve ninguna posicin y el movimiento
contina siempre hacia el punto de destino programado. La variable de

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.147 SearchExtJ - Busca con una o varias unidades mecnicas sin TCP
Continuacin
sistema ERRNO cambia a ERR_WHLSEARCH y es posible gestionar el error
en el gestor de errores de la rutina.

Ejecucin continua hacia adelante / Instrucciones hacia adelante /


ERR_SIGSUPSEARCH: No se devuelve ninguna posicin y el movimiento
se detiene siempre lo antes posible al principio del movimiento de bsqueda.
La variable de sistema ERRNO cambia a ERR_SIGSUPSEARCH y es posible
gestionar el error en el gestor de errores de la rutina.

Instruccin hacia atrs: Durante la ejecucin hacia atrs, la instruccin slo


realiza el movimiento pero no realiza la supervisin de seales.

Ejemplo
VAR num fk;
...
MoveExtJ jpos10, vrot100, fine;
SearchExtJ \Stop, di1, sp, jpos20, vrot5;
...
ERROR
IF ERRNO=ERR_WHLSEARCH THEN
StorePath;
MoveExtJ jpos10, vrot50, fine;
RestoPath;
ClearPath;
StartMove;
RETRY;
ELSEIF ERRNO=ERR_SIGSUPSEARCH THEN
TPWrite "The signal of the SearchExtJ instruction is already
high!";
TPReadFK fk,"Try again after manual reset of signal
?","YES","stEmpty","stEmpty","stEmpty","NO";
IF fk = 1 THEN
StorePath;
MoveExtJ jpos10, vrot50, fine;
RestoPath;
ClearPath;
StartMove;
RETRY;
ELSE
Stop;
ENDIF
ENDIF

Si la seal ya est activa al principio del proceso de bsqueda o se pierde la


comunicacin con la seal, se activa un cuadro de dilogo (TPReadFK ...;). Si
se pone a cero manualmente la seal y se presiona S en la ventana de dilogo
del usuario, la unidad mecnica vuelve a la posicin jpos10 y vuelve a intentar
la operacin. De lo contrario, la ejecucin del programa se detiene.
Si la seal est desactivada al comienzo del proceso de bsqueda, la unidad
mecnica busca desde la posicin jpos10 hasta la posicin jpos20. Si no se
detecta ninguna seal, el robot vuelve a la posicin jpos10 y lo intenta de nuevo.

Contina en la pgina siguiente


442

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.147 SearchExtJ - Busca con una o varias unidades mecnicas sin TCP
Continuacin
Limitaciones
Limitaciones de bsqueda con movimiento sincronizado y coordinado:

Si se utiliza SearchL, SearchC o SearchExtJ en una tarea de programa


y en otra instruccin de movimiento de otra tarea de programa, slo es
posible usar la bsqueda en vuelo con el modificador \Sup. Adems de ello,
slo es posible realizar la recuperacin en caso de error con TRYNEXT.

Es posible utilizar todas las funciones de bsqueda si se utilizan instrucciones


SearchL, SearchC o SearchExtJ en todas las tareas de programa
implicadas con movimiento sincronizado y coordinado y se generan
coincidencias de bsqueda desde la misma seal digital de entrada. Con
ello se generan coincidencias de bsqueda de forma sincronizada en todas
las instrucciones de bsqueda. Cualquier recuperacin de error debe ser
tambin la misma en todas las tareas de programa implicadas.

Mientras la bsqueda est activa, no es posible almacenar la trayectoria


actual con la instruccin StorePath.

Sintaxis
SearchExtJ
[ \ Stop ,] | [ \ PStop ,] | [ \ SStop ,] | [ \
Sup ,]
[ Signal := ] < variable (VAR) of signaldi >
[\ Flanks] |
[\ PosFlank] |
[\ NegFlank] |
[\ HighLevel] |
[\ LowLevel] ,
[ SearchJointPos := ] < var or pers (INOUT) of jointtarget >
,
[ ToJointPos := ] < expression (IN) of jointtarget >
[ \ ID := < expression (IN) of identno >],
[ \ UseEOffs , ]
[ Speed := ] < expression (IN) of speeddata >
[ \ T := < expression (IN) of num > ] ;

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Movimiento de unidades mecni- MoveExtJ - Mueve una o varias unidades mecnicas


cas sin TCP
sin TCP en la pgina 261
Definicin de jointtarget

jointtarget - Datos de posicin de eje en la pgina 1216

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Utilizacin de gestores de errores Technical reference manual - RAPID overview, seccin


Resumen sobre RAPID - Recuperacin en caso de error
Movimiento en general

Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.148 SearchL - Realiza una bsqueda lineal usando el robot

1.148 SearchL - Realiza una bsqueda lineal usando el robot


Utilizacin
SearchL (Search Linear se utiliza para buscar una posicin al mover el punto
central de la herramienta (TCP) en sentido lineal.
Durante el movimiento, el robot supervisa una seal digital de entrada. Cuando el
valor de la seal cambia al valor solicitado, el robot lee inmediatamente la posicin
actual.
Normalmente, esta instruccin puede usarse cuando la herramienta sostenida por
el robot es una sonda para deteccin de superficies. La instruccin SearchL,
permite obtener las coordenadas de contorno de un objeto de trabajo.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Al utilizar instrucciones de bsqueda, resulta importante configurar el sistema de
E/S para reducir al mnimo el tiempo que transcurre desde el establecimiento de
la seal fsica hasta que el sistema obtiene informacin acerca del valor (utilice la
unidad de E/S con control de interrupciones, no con control de sondeo). La forma
de hacerlo puede ser distinta de un bus de campo a otro. Si se utiliza DeviceNet,
las unidades de ABB DSQC 651 (AD Combi I/O) y DSQC 652 (Digital I/O)
proporcionan tiempos breves, dado que utilizan el cambio de estado como tipo de
conexin. Si se utilizan otros buses de campo, asegrese de configurar la red
correctamente para conseguir las condiciones correctas.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SearchL.
Consulte tambin Ms ejemplos en la pgina 448.
Ejemplo 1
SearchL di1, sp, p10, v100, probe;

El TCP de la sonda probe se mueve linealmente hacia la posicin p10 a una


velocidad de v100. Cuando el valor de la seal di1 cambia a activo, la posicin
se almacena en sp.
Ejemplo 2
SearchL \Stop, di2, sp, p10, v100, probe;

El TCP de la sonda probe se mueve linealmente hacia la posicin p10. Cuando


el valor de la seal di2 cambia a activo, la posicin se almacena en sp y el robot
se detiene inmediatamente.
Argumentos
SearchL [\Stop] | [\PStop] | [\SStop] | [\Sup] Signal [\Flanks] |
[\PosFlank] | [\NegFlank] | [\HighLevel] | [\LowLevel]
SearchPoint ToPoint [\ID] Speed [\V] | [\T] Tool [\WObj]
[\Corr]

[ \Stop ]
Stiff Stop
Contina en la pgina siguiente
444

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.148 SearchL - Realiza una bsqueda lineal usando el robot
Continuacin
Tipo de dato:switch
El movimiento del robot se detiene lo antes posible, sin mantener el TCP en la
trayectoria (paro rgido) cuando el valor de la seal de bsqueda cambia a activo.
Sin embargo, el robot se mueve una distancia corta antes del paro y no regresa a
la posicin buscada, es decir, a la posicin en la que cambi la seal.
AVISO!
La detencin de la bsqueda con un paro rgido (modificador \Stop) slo est
permitida si la velocidad del TCP es inferior a los 100 mm/s. En los paros rgidos
a una mayor velocidad, algunos ejes pueden moverse en una direccin
impredecible.
[ \PStop ]
Path 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 seal de bsqueda cambia a activo.
Sin embargo, el robot se mueve cierta distancia antes del paro y no regresa a la
posicin buscada, es decir, a la posicin en la que cambi la seal.
[ \SStop ]
Soft Stop
Tipo de dato: switch
El movimiento del robot se detiene lo antes posible, manteniendo el TCP cerca de
la trayectoria o en sta (paro blando) cuando el valor de la seal de bsqueda
cambia a activo. Sin embargo, el robot slo se mueve una distancia corta antes
del paro y no regresa a la posicin buscada, es decir, a la posicin en la que cambi
la seal. SStop resulta ms rpido que PStop. Sin embargo, cuando el robot
funciona a una velocidad superior a los 100 mm/s, se detiene en la direccin de
la tangente del movimiento, lo que hace que se deslice marginalmente de la
trayectoria.
[ \Sup ]
Supervision
Tipo de dato: switch
La instruccin de bsqueda es sensible a la activacin de seales durante el
movimiento completo (bsqueda en vuelo), es decir, incluso despus de que se
informa del primer cambio de seal. Si se produce ms de una coincidencia durante
una bsqueda, se genera un error recuperable con el robot en ToPoint.
Si se omite el argumento \Stop, \PStop, \SStop o \Sup (no se utiliza ningn
modificador):

el movimiento contina (bsqueda en vuelo) hasta la posicin especificada


en el argumento ToPoint (igual que en el argumento \Sup)

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.148 SearchL - Realiza una bsqueda lineal usando el robot
Continuacin

Se indica un error cuando no existe ninguna coincidencia de bsqueda, pero


no se indica tal error si hay ms de una coincidencia de bsqueda (la primera
coincidencia de bsqueda se devuelve como SearchPoint)

Signal
Tipo de dato: signaldi
El nombre de la seal a supervisar.
[ \Flanks ]
Tipo de dato:switch
Los bordes positivo y negativo de la seal son vlidos para determinar el xito de
una bsqueda.
Si se omite el argumento \Flanks, slo el borde positivo de la seal es vlido
para determinar el xito de una bsqueda y se activa una supervisin de la seal
al comenzar un proceso de bsqueda. Esto significa que si la seal ya tiene el
valor positivo al comenzar un proceso de bsqueda o se pierde la comunicacin
con la seal, el movimiento del robot se detiene lo antes posible, manteniendo el
TCP en la trayectoria (paro blando). Se genera un error recuperable por el usuario
(ERR_SIGSUPSEARCH), que puede gestionarse en el gestor de errores.
[ \PosFlank ]
Tipo de dato:switch
El borde positivo de la seal es vlido para determinar el xito de una bsqueda.
[ \NegFlank ]
Tipo de dato:switch
El borde positivo de la seal es vlido para determinar el xito de una bsqueda.
[ \HighLevel ]
Tipo de dato:switch
La misma funcionalidad que si no usara el modificador \Flanks.
El borde positivo de la seal es vlido para determinar el xito de una bsqueda
y se activar la supervisin de seales al inicio del proceso de bsqueda. Esto
significa que si la seal ya tiene el valor positivo al comenzar un proceso de
bsqueda o se pierde la comunicacin con la seal, el movimiento del robot se
detiene lo antes posible, 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.
[ \LowLevel ]
Tipo de dato:switch
El borde negativo de la seal es vlido para determinar el xito de una bsqueda
y se activar la supervisin de seales al inicio del proceso de bsqueda. Esto
significa que si la seal ya tiene el valor 0 al comenzar un proceso de bsqueda
o se pierde la comunicacin con la seal, el movimiento del robot se detiene lo
antes posible, 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.
Contina en la pgina siguiente
446

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.148 SearchL - Realiza una bsqueda lineal usando el robot
Continuacin
SearchPoint
Tipo de dato: robtarget
La posicin del TCP y de los ejes externos en el momento del disparo de la seal
de bsqueda. La posicin se especifica en el sistema de coordenadas ms externo,
ProgDisp/ExtOffs activo.
ToPoint
Tipo de dato: robtarget
El punto de destino de los ejes del robot y de los ejes externos. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin). SearchL utiliza siempre un punto de paro
como dato de zona del destino.
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, los ejes externos y la
reorientacin de la herramienta.
[ \V ]
Velocity
Tipo de dato: num
Este argumento se utiliza para especificar la velocidad del TCP en mm/s
directamente en la instruccin. A continuacin, se sustituye por la velocidad
correspondiente, 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 continuacin, se sustituye por los datos de velocidad
correspondientes.
Herramienta
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 la posicin de destino especificada.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.148 SearchL - Realiza una bsqueda lineal usando el robot
Continuacin
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si por otro lado se usa un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento para ejecutar un movimiento
lineal respecto del objeto de trabajo.
[ \Corr ]
Correction
Tipo de dato: switch
Los datos de correccin escritos en una entrada de correccin mediante una
instruccin CorrWrite se aaden a la trayectoria y a la posicin de destino si se
utiliza este argumento.
Ejecucin de programas
Consulte la instruccin MoveL para obtener ms informacin acerca del movimiento
lineal.
El movimiento termina siempre con un punto de paro, lo que implica que el robot
se detiene en el punto de destino. Si se realiza una bsqueda en vuelo, es decir,
cuando se utiliza el argumento \Sup o no se especifica ningn modificador, el
movimiento del robot contina siempre hacia el punto de destino programado. Si
se realiza una bsqueda con el modificador \Stop, \PStop o \SStop, el
movimiento del robot se detiene cuando se detecta la primera seal.
La instruccin SearchL almacena la posicin del TCP cuando el valor de la seal
digital cambia al valor solicitado, como se representa en la figura siguiente.
La figura muestra cmo se usa la deteccin de seal disparada por flancos (la
posicin se almacena slo cuando la seal cambia por primera vez).

Sin el modificador \Flanks


1
0

tiempo

Con el modificador \Flanks


1
0

tiempo

= Reaccin de la instruccin
cuando la seal cambia
xx0500002243_es

Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin SearchL.
Ejemplo 1
SearchL \Sup, di1\Flanks, sp, p10, v100, probe;

Contina en la pgina siguiente


448

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.148 SearchL - Realiza una bsqueda lineal usando el robot
Continuacin
El TCP de la sonda probe se mueve linealmente hacia la posicin p10. Cuando
el valor de la seal di1 cambia a activo o pasivo, la posicin se almacena en sp.
Si el valor de la seal cambia dos veces, el programa genera un error una vez que
se completa el proceso de bsqueda.
Ejemplo 2
SearchL \Stop, di1, sp, p10, v100, tool1;
MoveL sp, v100, fine \Inpos := inpos50, tool1;
PDispOn *, tool1;
MoveL p100, v100, z10, tool1;
MoveL p110, v100, z10, tool1;
MoveL p120, v100, z10, tool1;
PDispOff;

Al comienzo del proceso de bsqueda, se realiza una comprobacin de la seal


di1 y si la seal ya tiene un valor positivo o se pierde la comunicacin con el
robot, el robot se detiene. De lo contrario, el TCP de tool1 se mueve linealmente
hacia la posicin p10. Cuando el valor de la seal di1 cambia a activo, la posicin
se almacena en sp. El robot vuelve a este punto usando un punto de paro definido
exactamente. Usando un desplazamiento de programa, el robot se mueve a
continuacin respecto de la posicin buscada, sp.
Limitaciones
Los datos de zona de la instruccin de posicionamiento que precede a SearchL
deben usarse con cuidado. El comienzo de la bsqueda, es decir, cuando la seal
de E/S est preparada para reaccionar, no es en este caso el punto de destino de
la instruccin de posicionamiento anterior, sino un punto que se encuentra en la
trayectoria real del robot. En las figuras siguientes se muestran ejemplos de cosas
que pueden salir mal cuando se usan datos de zona distintos de fine.
En la figura siguiente se muestra cmo se encuentra una posicin en el lado
incorrecto del objeto a causa del uso de datos de zona incorrectos.

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 ningn xito de bsqueda


porque se usaron datos de zona errneos.

Punto de inicio con


datos de zona fine
Punto de inicio con
datos de zona z10

Objeto buscado
Punto final

xx0500002245_es

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.148 SearchL - Realiza una bsqueda lineal usando el robot
Continuacin
La figura siguiente muestra que no se ha detectado ningn xito de bsqueda
porque se usaron datos de zona errneos.

Punto de inicio con


datos de zona fine
Punto de inicio con
datos de zona z10

Objeto buscado
Punto final

xx0500002246_es

Limitaciones de bsqueda con movimiento sincronizado y coordinado:

Si se utiliza SearchL, SearchC o SearchExtJ en una tarea de programa


y en otra instruccin de movimiento de otra tarea de programa, slo es
posible usar la bsqueda en vuelo con el modificador \Sup. Adems de ello,
slo es posible realizar la recuperacin en caso de error con TRYNEXT.

Es posible utilizar toda la funcionalidad de bsqueda 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 bsqueda desde la misma seal digital de entrada. Con
ello se genera una coincidencia de bsqueda de forma sincronizada en todas
las instrucciones de bsqueda. Cualquier recuperacin de error debe ser
tambin la misma en todas las tareas de programa implicadas.

Mientras la bsqueda est activa, no se permite almacenar la trayectoria actual


con la instruccin StorePath.
Exactitud de repeticin para la posicin de coincidencia de bsqueda con una
velocidad de 20 a 1.000 mm/s de 0,1 a 0,3 mm.
Distancia de paro tpica con una velocidad de bsqueda de 50 mm/s:

Sin el TCP en la trayectoria (modificador \Stop), de 1 a 3 mm

Con el TCP en la trayectoria (modificador \PStop), de 15 a 25 mm

Con el TCP cerca de la trayectoria (modificador \SStop), de 4 a 8 mm

Limitaciones de la bsqueda en un transportador:

la bsqueda detiene el robot en caso de coincidencia o si la bsqueda no


tiene xito, de forma que la bsqueda debe hacerse en el mismo sentido
que el del movimiento del transportador y despus del paro de bsqueda
debe ir seguida de un movimiento hasta una posicin segura. Utilice la
gestin de errores para el movimiento hasta una posicin segura si la
bsqueda no tiene xito.

la exactitud de repeticin de la posicin de coincidencia de bsqueda ser


menor al buscar en un transportador y depende de la velocidad del
transportador y de hasta qu punto esta velocidad es estable.

Gestin de errores
Durante las bsquedas, se generan errores en los casos siguientes:

Cuando no se detecta ninguna seal. Se genera el error ERR_WHLSEARCH.

Contina en la pgina siguiente


450

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.148 SearchL - Realiza una bsqueda lineal usando el robot
Continuacin

Cuando se produce la deteccin de ms de una seal. Se genera el error


ERR_WHLSEARCH slo si se us el argumento \Sup.

La seal ya tiene un valor positivo al principio del proceso de bsqueda o


se pierde la comunicacin con la seal. Esto genera el error
ERR_SIGSUPSEARCH slo si se omite el argumento \Flanks.

Los errores pueden gestionarse de formas distintas en funcin del modo de


ejecucin seleccionado:

Ejecucin continua hacia delante / Instrucciones hacia adelante


/ERR_WHLSEARCH: No se devuelve ninguna posicin y el movimiento
contina 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.

Ejecucin continua hacia adelante / Instruccin hacia adelante /


ERR_SIGSUPSEARCH No se devuelve ninguna posicin y el movimiento
se detiene siempre lo antes posible al principio de la trayectoria de bsqueda.
La variable de sistema ERRNO cambia a ERR_SIGSUPSEARCH y es posible
gestionar el error en el gestor de errores de la rutina.

Instruccin hacia atrs: Durante la ejecucin hacia atrs, la instruccin


realiza el movimiento pero no realiza la supervisin de seales.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.148 SearchL - Realiza una bsqueda lineal usando el robot
Continuacin
Ejemplo
VAR num fk;
...
MoveL p10, v100, fine, tool1;
SearchL \Stop, di1, sp, p20, v100, tool1;
...
ERROR
IF ERRNO=ERR_WHLSEARCH THEN
StorePath;
MoveL p10, v100, fine, tool1;
RestoPath;
ClearPath;
StartMove;
RETRY;
ELSEIF ERRNO=ERR_SIGSUPSEARCH THEN
TPWrite "The signal of the SearchL instruction is already
high!";
TPReadFK fk,"Try again after manual reset of signal
?","YES","stEmpty","stEmpty","stEmpty","NO";
IF fk = 1 THEN
StorePath;
MoveL p10, v100, fine, tool1;
RestoPath;
ClearPath;
StartMove;
RETRY;
ELSE
Stop;
ENDIF
ENDIF

Si la seal ya est activa al principio del proceso de bsqueda o se pierde la


comunicacin con la seal, se activa un cuadro de dilogo (TPReadFK ...;). Si
se pone a cero manualmente la seal y se presiona S en la ventana de dilogo
del usuario, el robot vuelve a la posicin p10 y vuelve a intentar la operacin. De
lo contrario, la ejecucin del programa se detiene.
Si la seal est desactivada al comienzo del proceso de bsqueda, el robot busca
desde la posicin p10 hasta la posicin p20. Si no se detecta ninguna seal, el
robot vuelve a la posicin p10 y lo intenta de nuevo.

Contina en la pgina siguiente


452

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.148 SearchL - Realiza una bsqueda lineal usando el robot
Continuacin
Sintaxis
SearchL
[ \ Stop ,] | [ \ PStop ,] | [ \ SStop ,] | [ \
Sup ,]
[ Signal := ] < variable (VAR) of signaldi >
[\ Flanks] |
[\ PosFlank] |
[\ NegFlank] |
[\ HighLevel] |
[\ LowLevel] ,
[ SearchPoint := ] < var or pers (INOUT) of robtarget > ,
[ ToPoint := ] < expression (IN) of robtarget >
[ \ ID := < expression (IN) of identno >],
[ Speed := ] < expression (IN) of speeddata >
[ \ V := < expression (IN) of num > ] |
[ \ T := < expression (IN) of num > ] ,
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj := < persistent (PERS) of wobjdata > ]
[ \ Corr ];

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Bsquedas circulares

SearchC - Realiza una bsqueda en crculo usando el


robot en la pgina 428

Escritura en una entrada de correc- CorrWrite - Escribe en un generador de correcciones


cin
en la pgina 81
Movimiento lineal del robot

MoveL - Mueve el robot siguiendo una trayectoria lineal


en la pgina 278

Movimiento lineal

Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Utilizacin de gestores de errores Technical reference manual - RAPID overview, seccin


Resumen sobre RAPID - Recuperacin en caso de error
Movimiento en general

Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.149 SenDevice - Establece una conexin a un dispositivo de sensor

1.149 SenDevice - Establece una conexin a un dispositivo de sensor


Utilizacin
SenDevice se utiliza para conectarse a un dispositivo de sensor conectado a la
interfaz de sensores serie.
La interfaz de sensores se comunica con los sensores a travs de canales serie,
utilizando el protocolo de transporte RTP1.
ste es un ejemplo de configuracin de un canal de sensor.
COM_PHY_CHANNEL:

Name COM1:

Connector COM1

Baudrate 19200

COM_TRP:

Name sen1:

Type RTP1

PhyChannel COM1

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SenDevice.
Ejemplo 1
! Define variable numbers
CONST num SensorOn := 6;
CONST num XCoord := 8;
CONST num YCoord := 9;
CONST num ZCoord := 10;
VAR pos SensorPos;
! Connect to the sensor device sen1: (defined in sio.cfg).
SenDevice "sen1:";
! Request start of sensor meassurements
WriteVar "sen1:", SensorOn, 1;
! Read a cartesian position from the sensor.
SensorPos.x := ReadVar "sen1:", XCoord;
SensorPos.y := ReadVar "sen1:", YCoord;
SensorPos.z := ReadVar "sen1:", ZCoord;
! Stop sensor
WriteVar "sen1:", SensorOn, 0;

Argumentos
SenDevice device

device
Tipo de dato: string
El nombre del dispositivo de E/S configurado en sio.cfg para el sensor utilizado.

Contina en la pgina siguiente


454

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.149 SenDevice - Establece una conexin a un dispositivo de sensor
Continuacin
Sintaxis
ReadBlock
[ device := ] < expression(IN) of string>,
[ BlockNo := ] < expression (IN) of num > ,
[ FileName := ] < expression (IN) of string > ;

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Escritura de una variable de
sensor

WriteVar - Escribe una variable en la pgina 777

Lectura de una variable de sen- ReadVar - Lee una variable de un dispositivo en la pgisor
na 1030
Escritura de un bloque de datos WriteBlock - Escribe un bloque de datos en un dispositivo
de sensor
en la pgina 766
Configuracin de la comunica- Manual de referencia tcnica - Parmetros del sistema,
cin del sensor
seccin Communication

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.150 Set - Activa una seal digital de salida

1.150 Set - Activa una seal digital de salida


Utilizacin
Set se utiliza para cambiar a 1 una seal digital de salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin Set.
Ejemplo 1
Set do15;

Se cambia la seal do15 a 1.


Ejemplo 2
Set weldon;

Se cambia la seal weldon a 1.


Argumentos
Set Signal

Signal
Tipo de dato: signaldo
El nombre de la seal que se desea cambiar a uno.
Ejecucin de programas
Existe un pequeo retardo antes de que la seal cambie fsicamente al nuevo
valor. Si no desea que contine la ejecucin del programa hasta que la seal tenga
su nuevo valor, puede usar la instruccin SetDO con el parmetro opcional \Sync.
El valor real depende de la configuracin de la seal. Si la seal est invertida en
los parmetros del sistema, esta instruccin hace que el canal fsico cambie a
cero.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S.
Sintaxis
Set
[ Signal := ] < variable (VAR) of signaldo > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Cambio de una seal digital de salida a


cero

Reset - Pone a cero una seal digital de salida


en la pgina 382

Cambio del valor de una seal digital de SetDO - Cambia el valor de una seal digital de
salida
salida en la pgina 469

Contina en la pgina siguiente


456

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.150 Set - Activa una seal digital de salida
Continuacin
Para obtener ms informacin sobre

Consulte

Instrucciones de entrada/salida

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Seales de
entrada y salida

Funcionalidad de entrada/salida en gene- Technical reference manual - RAPID overview,


ral
seccin Principios de movimiento y E/S - Principios de E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros del


sistema

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.151 SetAllDataVal - Establece un valor en todos los objetos de datos de un conjunto definido

1.151 SetAllDataVal - Establece un valor en todos los objetos de datos de un conjunto


definido
Utilizacin
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 gramtica
determinada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SetAllDataVal.
VAR mydata mydata0:=0;
...
SetAllDataVal "mydata"\TypeMod:="mytypes"\Hidden,mydata0;

Esta instruccin 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, se trata del valor 0). El tipo de dato definido por el usuario mydata se
define en el mdulo 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.
[ \TypeMod ]
Mdulo de tipo
Tipo de dato: string
El nombre del mdulo en el que est definido el tipo de dato, si se utilizan tipos
de datos definidos por el usuario.
[ \Object ]
Tipo de dato: string
El comportamiento predeterminado es cambiar el valor de todos los objetos de
datos del tipo de datos indicado anteriormente, pero esta opcin permite indicar
el nombre de uno o varios objetos con una expresin regular. (Consulte tambin
la instruccin SetDataSearch)
[ \Hidden ]
Tipo de dato: switch
Tambin afecta a los objetos de datos que se encuentren en las rutinas (datos o
parmetros de rutina) que queden ocultas por otras rutinas en la cadena de
llamadas.
Value
Tipo de dato: anytype
Contina en la pgina siguiente
458

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.151 SetAllDataVal - Establece un valor en todos los objetos de datos de un conjunto definido
Continuacin
Una variable que contiene el nuevo valor que se desea establecer. El tipo de dato
debe ser el mismo que el tipo de dato del objeto cuyo valor se desea establecer.
Ejecucin de programas
La instruccin fallar si la especificacin de Type o TypeMod es incorrecta.
Si el objeto de datos coincidente es una matriz, todos los elementos de la matriz
se cambian al valor especificado.
Si el objeto de datos coincidente es un dato de slo lectura, el valor no se cambia.
Si el sistema no tiene ningn objeto de dato coincidente, la instruccin lo aceptar
y retornar sin generar errores.
Limitaciones
En el caso de los tipos de datos de semivalor, no es posible buscar el tipo de dato
asociado. Por ejemplo, si se busca dionum, no existen coincidencias de bsqueda
para la seal signaldi y si se busca num, no existen coincidencias de bsqueda
para las seales signalgi ni signalai.
No es posible asignar un valor a una variable declarada como LOCAL en un mdulo
de RAPID incorporado.
Sintaxis
SetAllDataVal
[ Type := ] < expression (IN) of string >
[\TypeMod :=<expression (IN) of string>]
[\Object :=<expression (IN) of string>]
[\Hidden ] ,
[ Value :=] <variable (VAR) of anytype>;

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Definicin de un conjunto de sm- SetDataSearch - Definir el conjunto de smbolos de una


bolos en una sesin de bsqueda secuencia de bsqueda en la pgina 462
Obtencin del siguiente smbolo
coincidente

GetNextSym - Obtiene el siguiente smbolo coincidente


en la pgina 917

Obtencin del valor de un objeto GetDataVal - Obtiene el valor de un objeto de datos en


de datos
la pgina 115
Asignacin del valor de un objeto SetDataVal - Establece el valor de un objeto de datos
de datos
en la pgina 466
El tipo de datos relacionado data- datapos - Inclusin de un bloque para un objeto de dapos
tos en la pgina 1187

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.152 SetAO - Cambia el valor de una seal analgica de salida

1.152 SetAO - Cambia el valor de una seal analgica de salida


Utilizacin
SetAO se utiliza para cambiar el valor de una seal analgica de salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SetAO.
Consulte tambin Ms ejemplos en la pgina 461.
Ejemplo 1
SetAO ao2, 5.5;

Se cambia la seal ao2 a 5.5.


Argumentos
SetAO Signal Value

Signal
Tipo de dato: signalao
El nombre de la seal analgica de salida que debe cambiar de valor.
Value
Tipo de dato: num
El valor deseado para la seal.
Ejecucin de programas
Al valor programado se le aplica una escala (acorde con los parmetros del sistema)
antes de enviarlo al canal fsico. En la figura siguiente se muestra un diagrama de
cmo se ajustan los valores de las seales analgicas a una escala.

xx0500002408_en

Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
Contina en la pgina siguiente
460

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.152 SetAO - Cambia el valor de una seal analgica de salida
Continuacin
ERR_NORUNUNIT
si se ha perdido el contacto con la unidad de E/S.
ERR_AO_LIM
si el argumento programado Value para la seal analgica de salida especificada
Signal est fuera de lmites.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin SetAO.
Ejemplo 1
SetAO weldcurr, curr_outp;

Se asigna a la seal weldcurr el mismo valor que el valor actual de la variable


curr_outp.
Sintaxis
SetAO
[ Signal := ] < variable (VAR) of signalao > ,
[ Value := ] < expression (IN) of num > ;

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Instrucciones de entrada/salida

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Seales de entrada y
salida

Funcionalidad de entrada/salida en Technical reference manual - RAPID overview, secgeneral


cin Principios de movimiento y E/S - Principios de
E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.153 SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda

1.153 SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda


Utilizacin
SetDataSearch se utiliza junto con la funcin GetNextSym para obtener objetos
de datos del sistema.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SetDataSearch.
Ejemplo 1
VAR datapos block;
VAR string name;
...
SetDataSearch "robtarget"\InTask;
WHILE GetNextSym(name,block \Recursive) DO
...

Esta sesin encontrar todos los objetos de tipo robtarget de la tarea.


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.
[ \TypeMod ]
Type Module
Tipo de dato: string
El nombre del mdulo en el que est definido el tipo de dato, si se utilizan tipos
de datos definidos por el usuario.
[ \Object ]
Tipo de dato: string
El comportamiento predeterminado es cambiar el valor de todos los objetos de
datos del tipo de datos indicado anteriormente, pero esta opcin permite indicar
el nombre de uno o varios objetos con una expresin regular.
Las expresiones regulares constituyen un potente mecanismo que permite
especificar una expresin gramtica de coincidencia con los nombres de los objetos
de datos. Esta cadena puede componerse de caracteres normales y metacaracteres.
Los metacaracteres son operadores especiales utilizados para representar a uno
o varios caracteres normales en la cadena, con el fin de ampliar la bsqueda. Es
posible comprobar si una cadena coincide totalmente con un patrn especificado
o buscar dentro de una cadena para encontrar una subcadena que coincide con
un patrn especificado.

Contina en la pgina siguiente


462

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.153 SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda
Continuacin
Dentro de una expresin regular, todos los caracteres alfanumricos coinciden
consigo mismos. Esto significa que el patrn "abc" slo coincidir con un objeto
de datos llamado "abc". Para encontrar todos los nombres de objetos de dato que
contienen la secuencia de caracteres "abc", es necesario aadir algunos
metacaracteres. La expresin regular para hacerlo es ".*abc.*".
El conjunto de metacaracteres disponibles se muestra a continuacin.
Expresin

Significado

Cualquier carcter individual.

[s]

Cualquier carcter individual del conjunto no vaco s, donde


s es una secuencia de caracteres. Los rangos pueden especificarse como c-c.

[^s]

Cualquier carcter individual no perteneciente al conjunto s.

r*

Cero o ms casos de la expresin regular r.

r+

Uno varios casos de la expresin regular r.

r?

Cero o un caso de la expresin regular r.

(r)

La expresin regular r. Se utiliza para separar una expresin


regular de otra.

r | r

Las expresiones regulares r o r'.

.*

Cualquier secuencia de caracteres (cero, uno o varios caracteres).

El comportamiento predeterminado es aceptar todos los smbolos, pero si se


especifica uno o varios de los modificadores PersSym, VarSym o ConstSym slo
se aceptan los smbolos que coincidan con la especificacin:
[ \PersSym ]
Persistent Symbols
Tipo de dato: switch
Acepta smbolos de variables persistentes (PERS).
[ \VarSym ]
Variable Symbols
Tipo de dato: switch
Acepta smbolos de variables (VAR).
[ \ConstSym ]
Constant Symbols
Tipo de dato: switch
Acepta smbolos de constantes (CONST).
Si no se especifica ninguno de los modificadores \InTask o \InMod , la bsqueda
comienza en el nivel de sistema. El nivel de sistema es la raz de todas las dems
definiciones de smbolos del rbol de smbolos. En el nivel de sistema se
encuentran todos los smbolos incorporados, junto con el manejador del nivel de
tareas. En el nivel de tarea se encuentran todos los smbolos globales cargados,
junto con el manejador del nivel de mdulos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.153 SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda
Continuacin
Si se indica el modificador \Recursive en GetNextSym, la sesin de bsqueda
incluir todos los mdulos y rutinas situadas debajo del nivel del sistema.
[ \InTask ]
In Task
Tipo de dato: switch
Inicia la bsqueda en el nivel de tarea. En el nivel de tarea se encuentran todos
los smbolos globales cargados, junto con el manejador del nivel de mdulos.
Si se indica el modificador \Recursive en GetNextSym, la sesin de bsqueda
incluir todos los mdulos y rutinas situadas debajo del nivel de tarea.
[ \InMod ]
In Module
Tipo de dato: string
Inicia la bsqueda en el nivel de mdulo especificado. En el nivel de mdulo se
encuentran todos los smbolos globales y locales cargados y declarados en el
mdulo especificado, junto con el manejador del nivel de rutinas.
Si se indica el modificador \Recursive en GetNextSym, la sesin de bsqueda
incluir todas las rutinas cargadas situadas debajo del nivel de mdulo especificado
(es decir, declaradas en el mdulo especificado).
[ \InRout ]
In Routine
Tipo de dato: string
Slo busca en el nivel de rutina especificado.
El nombre del mdulo en el que se encuentra la rutina debe especificarse en el
argumento \InMod.
El comportamiento predeterminado es encontrar tanto los smbolos de mdulo
locales como los globales, pero si se especifica uno de los modificadores
\GlobalSym o \LocalSym slo se aceptan los smbolos que coincidan con la
especificacin:
[ \GlobalSym ]
Global Symbols
Tipo de dato: switch
Omite los smbolos locales del mdulo.
[ \LocalSym ]
Local Symbols
Tipo de dato: switch
Omite los smbolos globales del mdulo.
Ejecucin de programas
La instruccin fallar si la especificacin de uno de Type, TypeMod, InMod o
InRout es incorrecta.

Contina en la pgina siguiente


464

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.153 SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda
Continuacin
Si el sistema no tiene ningn objeto de dato coincidente, la instruccin lo aceptar
y retornar sin generar errores, pero la primera instruccin GetNextSym retornar
FALSE.
Limitaciones
Los objetos de datos de matriz no pueden definirse en el conjunto de bsqueda
de smbolos y no pueden encontrarse en una secuencia de bsqueda.
En el caso de los tipos de datos de semivalor, no es posible buscar el tipo de dato
asociado. Por ejemplo, si se busca dionum, no existen coincidencias de bsqueda
para la seal signaldi y si se busca num, no existen coincidencias de bsqueda
para las seales signalgi ni signalai.
Los smbolos incorporados instalados que hayan sido declarados como LOCAL
no se encontrarn en ningn caso, independientemente del uso del argumento
\GlobalSym, \LocalSym o de ninguno de ellos.
Los smbolos incorporados instalados que hayan sido declarados como globales
o como TASK siempre se encontrarn, independientemente del uso del argumento
\GlobalSym, \LocalSym o de ninguno de ellos.
No es posible usar SetDataSearch para buscar datos de algn tipo de dato de
ALIAS definido con cdigo de RAPID. No hay ninguna limitacin para el tipo de
dato de ALIAS predefinido.
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] ;

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Obtencin del siguiente smbolo
coincidente

GetNextSym - Obtiene el siguiente smbolo coincidente en la pgina 917

Obtencin del valor de un objeto de GetDataVal - Obtiene el valor de un objeto de datos


datos
en la pgina 115
Asignacin del valor de varios obje- SetAllDataVal - Establece un valor en todos los objetos
tos de datos
de datos de un conjunto definido en la pgina 458
El tipo de datos relacionado datapos datapos - Inclusin de un bloque para un objeto de
datos en la pgina 1187

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.154 SetDataVal - Establece el valor de un objeto de datos

1.154 SetDataVal - Establece el valor de un objeto de datos


Utilizacin
SetDataVal (Set Data Value) permite establecer el valor de un objeto de datos
que se especifica mediante una variable de cadena de caracteres.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SetDataVal.
Ejemplo 1
VAR num value:=3;
...
SetDataVal "reg"+ValToStr(ReadNum(mycom)),value;

Con esta instruccin se establece el valor 3 en un registro cuyo nmero se recibe


a travs del canal serie mycom.
Ejemplo 2
VAR datapos block;
VAR bool truevar:=TRUE;
...
SetDataSearch "bool" \Object:="my.*" \InMod:="mymod"\LocalSym;
WHILE GetNextSym(name,block) DO
SetDataVal name\Block:=block,truevar;
ENDWHILE

Esta sesin cambia a TRUE todos los objetos locales de tipo bool cuyo nombre
comience con my en el mdulo mymod.
Ejemplo 3
VAR string StringArrVar_copy{2};
...
StringArrVar_copy{1} := "test1";
StringArrVar_copy{2} := "test2";
SetDataVal "StringArrVar", StringArrVar_copy;

Esta sesin definir la matriz StringArrVar para que contenga dos cadenas,
test1 y test2.
Argumentos
SetDataVal 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. Slo es posible realizar la obtencin
con la funcin GetNextSym.
Si se omite el argumento, se establece el valor del objeto de datos visible en el
mbito de ejecucin actual del programa.
Contina en la pgina siguiente
466

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.154 SetDataVal - Establece el valor de un objeto de datos
Continuacin
[\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 declaracin dar lugar a un error.
Existen variables predefinidas con el tipo de dato taskid para todas las tareas
de programa del sistema. La identificacin de la variable ser nombre_tarea+ID.
Por ejemplo, para la tarea T_ROB1 la identificacin 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 declaracin dar lugar a un error.
Value
Tipo de dato: anytype
Una variable que contiene el nuevo valor que se desea establecer. Su tipo de dato
debe ser el mismo que el del objeto de datos a establecer. El valor establecido
debe ser capturado de una variable, pero puede almacenarse en una variable o
una variable persistente.
Gestin de errores
La variable de sistema ERRNO cambia a ERR_SYM_ACCESS si:

El objeto de datos no existe.

El objeto de datos es de slo lectura.

Si el objeto de datos es un dato o un parmetro 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 declaracin da lugar a un error
y la variable de sistema ERRNO cambia a ERR_SYM_ACCESS. La bsqueda de una
PERS declarada como LOCAL en otras tareas tambin 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.
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 bsqueda con las seales signaldi. Si se busca num, no se
obtendr ninguna coincidencia de bsqueda con las seales signalgi o
signalai.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.154 SetDataVal - Establece el valor de un objeto de datos
Continuacin
No es posible asignar un valor a una variable declarada como LOCAL en un mdulo
de RAPID incorporado.
Sintaxis
SetDataVal
[ 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>];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin de un conjunto de smbolos SetDataSearch - Definir el conjunto de smbolos


en una sesin de bsqueda
de una secuencia de bsqueda en la pgina 462
Obtencin del siguiente smbolo coinci- GetNextSym - Obtiene el siguiente smbolo coindente
cidente en la pgina 917
Obtencin del valor de un objeto de da- GetDataVal - Obtiene el valor de un objeto de
tos
datos en la pgina 115
Asignacin del valor de varios objetos
de datos

SetAllDataVal - Establece un valor en todos los


objetos de datos de un conjunto definido en la
pgina 458

El tipo de datos relacionado datapos

datapos - Inclusin de un bloque para un objeto


de datos en la pgina 1187

468

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.155 SetDO - Cambia el valor de una seal digital de salida

1.155 SetDO - Cambia el valor de una seal digital de salida


Utilizacin
SetDO se usa para cambiar el valor de una seal digital de salida, con o sin retardo
ni sincronizacin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SetDO.
Ejemplo 1
SetDO do15, 1;

Se cambia la seal do15 a 1.


Ejemplo 2
SetDO weld, off;

Se cambia la seal weld a off.


Ejemplo 3
SetDO \SDelay := 0.2, weld, high;

Se cambia la seal weld a high con un retardo de 0.2 s. Sin embargo, la


ejecucin del programa contina con la instruccin siguiente.
Ejemplo 4
SetDO \Sync ,do1, 0;

Se cambia la seal do1 a 0 La ejecucin del programa espera hasta que la seal
cambia fsicamente al valor especificado.
Argumentos
SetDO [ \SDelay ]|[ \Sync ] Signal Value

[ \SDelay ]
Signal Delay
Tipo de dato: num
Retarda el cambio durante la duracin especificada, en segundos (mximo 2.000 s).
La ejecucin del programa contina directamente con la instruccin siguiente.
Despus del tiempo de retardo especificado, la seal cambia sin que el resto de
la ejecucin del programa se vea afectada.
[ \Sync ]
Synchronization
Tipo de dato: switch
Si se utiliza este argumento, la ejecucin del programa espera hasta que la seal
cambie fsicamente al valor especificado.
Signal
Tipo de dato: signaldo
El nombre de la seal que debe cambiar.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.155 SetDO - Cambia el valor de una seal digital de salida
Continuacin
Value
Tipo de dato: dionum
El valor deseado para la seal, 0 1.
Valor especificado

Cambiar la salida digital a

Cualquier valor excepto 0

Ejecucin de programas
El valor real depende de la configuracin de la seal. Si la seal est invertida en
los parmetros del sistema, el valor del canal fsico es el opuesto.
Si no se utilizan los argumentos \SDelay ni \Sync, la seal cambia lo antes
posible y la siguiente instruccin se ejecuta inmediatamente, sin esperar a que la
seal cambie fsicamente.
Limitaciones
Si una instruccin SetDO con un argumento \SDelay va seguida de una nueva
instruccin SetDO para la misma seal, con o sin argumento \SDelay, la primera
instruccin SetDO se cancela si la segunda instruccin SetDO se ejecuta antes
de que haya transcurrido el tiempo de retardo de la primera instruccin SetDO.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
si se ha perdido el contacto con la unidad de E/S.
ERR_ARGVALERR
si el valor del argumento SDelay sobrepasa el valor mximo permitido (2.000 s).
Sintaxis
SetDO
[ \ SDelay := < expression (IN) of num > , ]
|[\Sync,]
[ Signal := ] < variable (VAR) of signaldo > ,
[ Value := ] < expression (IN) of dionum > ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Instrucciones de entrada/salida

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Seales de entrada y
salida

Funcionalidad de entrada/salida en
general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Principios de
E/S

Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

470

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.156 SetGO - Cambia el valor de un grupo de seales digitales de salida

1.156 SetGO - Cambia el valor de un grupo de seales digitales de salida


Utilizacin
SetGO se usa para cambiar el valor de un grupo de seales digitales de salida,
con o sin retardo de tiempo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SetGO.
Ejemplo 1
SetGO go2, 12;

La seal go2 se cambia a 12. Si go2 se compone de 4 seales, por ejemplo, las
salidas de la 6 a la 9, las salidas 6 y 7 cambian a cero, mientras que las salidas 8
y 9 cambian a uno.
Ejemplo 2
SetGO \SDelay := 0.4, go2, 10;

Se cambia la seal go2 a 10. Si go2 se compone de 4 seales, por ejemplo, las
salidas 6-9, las salidas 6 y 8 cambian a cero, mientras que las salidas 7 y 9 cambian
a uno con un retardo de 0.4 s. Sin embargo, la ejecucin del programa contina
con la instruccin siguiente.
Ejemplo 3
SetGO go32, 4294967295;

Se cambia la seal go32 a 4294967295. go32 contiene 32 seales, todas ellas


con el valor 1.
Argumentos
SetGO [ \SDelay ] Signal Value | Dvalue

[ \SDelay ]
Signal Delay
Tipo de dato: num
Retarda el cambio durante el periodo especificado, en segundos (mximo 2.000 s).
La ejecucin del programa contina directamente con la instruccin siguiente.
Despus del tiempo de retardo especificado, el valor de las seales cambia sin
que el resto de la ejecucin del programa se vea afectada.
Si se omite el argumento, los valores de las seales cambian directamente.
Signal
Tipo de dato: signalgo
El nombre del grupo de seales que debe cambiar.
Value
Tipo de dato: num
El valor deseado para el grupo de seales (un entero positivo) se muestra en la
tabla siguiente.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.156 SetGO - Cambia el valor de un grupo de seales digitales de salida
Continuacin
El valor permitido depende del nmero de seales del grupo. Un tipo de dato num
puede contener el valor de un grupo de 32 seales o menos.
Dvalue
Tipo de dato: dnum
El valor deseado para el grupo de seales (un entero positivo) se muestra en la
tabla siguiente.
El valor permitido depende del nmero de seales del grupo. Un tipo de dato dnum
puede contener el valor de un grupo de 32 seales o menos.
Nmero de seales

Valor permitido

Valor doble permitido

0-1

0-1

0-3

0-3

0-7

0-7

0-15

0-15

0-31

0-31

0-63

0-63

0-127

0-127

0-255

0-255

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

Contina en la pgina siguiente


472

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.156 SetGO - Cambia el valor de un grupo de seales digitales de salida
Continuacin
Nmero de seales

Valor permitido

Valor doble permitido

31

0-2147483647

32

0-4294967295

*) El argumento Value del tipo num slo puede contener un mximo de 23 seales
en comparacin con el argumento Dvalue del tipo dnum, que puede contener
hasta 32 seales.
Ejecucin de programas
El valor programado se convierte en un nmero binario sin signo. Este nmero
binario se enva al grupo de seales, con el resultado de que se cambian a 0 1
las distintas seales del grupo. Debido a los retardos internos, el valor de la seal
puede permanecer sin definir durante un breve periodo de tiempo.
Limitaciones
El nmero mximo de seales que pueden usarse para un grupo es de 23 si se
usa el argumento Value y de 32 si se usa el argumento Dvalue. Esta limitacin
se aplica a todas las instrucciones y funciones que utilicen seales de grupo.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
si se ha perdido el contacto con la unidad de E/S.
ERR_ARGVALERR
si el valor del argumento SDelay sobrepasa el valor mximo permitido (2.000 s).
ERR_GO_LIM
si el argumento programado Value o Dvalue para la seal digital de salida de
grupo especificada Signal est fuera de lmites.
Sintaxis
SetGO
[ \ SDelay := < expression (IN)
[ Signal := ] < variable (VAR) of
[ Value := ] < expression (IN) of
| [ Dvalue := ] < expression (IN)

of num > , ]
signalgo > ,
num >
of dnum > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Otras instrucciones de entrada y salida Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Seales de entrada y salida
Funcionalidad de entrada/salida en gene- Technical reference manual - RAPID overview,
ral
seccin Principios de movimiento y E/S - Principios de E/S
Configuracin de E/S (parmetros del
sistema)

Manual de referencia tcnica - Parmetros del


sistema

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.157 SetSysData - Establece datos del sistema

1.157 SetSysData - Establece datos del sistema


Utilizacin
SetSysData activa el nombre del sistema especificado para el tipo de dato
especificado.
Esta instruccin permite cambiar la herramienta, el objeto de trabajo o la carga
til activos actualmente en el robot de la tarea de movimiento actual o conectada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SetSysData.
Ejemplo 1
SetSysData tool5;

Se activa la herramienta tool5.


SetSysData tool0 \ObjectName := "tool6";

Se activa la herramienta tool6.


SetSysData anytool \ObjectName := "tool2";

Se activa la herramienta tool2.


Argumentos
SetSysData SourceObject [\ObjectName]

SourceObject
Tipo de dato: anytype
La variable persistente, que debe activarse como un dato actual del sistema.
El tipo de dato de este argumento tambin 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.


[ \ObjectName ]
Tipo de dato:string
Si se especifica este argumento opcional, especifica el nombre del objeto de dato
que se desea activar (tiene prioridad sobre el nombre especificado en el argumento
SourceObject). El tipo de dato del objeto de datos que se desea activar se captura
siempre desde el argumento SourceObject.
Ejecucin de programas
Se establece el objeto de datos del sistema actual de la herramienta, el objeto de
trabajo o la carga til, de acuerdo con los argumentos.

Contina en la pgina siguiente


474

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.157 SetSysData - Establece datos del sistema
Continuacin
Recuerde que esta instruccin slo activa un nuevo objeto de datos (o el mismo
que el anterior) y no cambia nunca el valor de ningn objeto de datos.
Sintaxis
SetSysData
[ SourceObject:=] < persistent(PERS) of anytype>
[\ObjectName:= < expression (IN) of string> ] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Definicin de una carga til

loaddata - Datos de carga en la pgina 1219

Obtencin de datos del sistema

GetSysData - Obtiene datos del sistema en la


pgina 118

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.158 SingArea - Define el mtodo de interpolacin alrededor de puntos singulares

1.158 SingArea - Define el mtodo de interpolacin alrededor de puntos singulares


Utilizacin
SingArea se utiliza para definir cmo debe moverse el robot en las cercanas de
los puntos singulares.
SingArea tambin se usa para definir la interpolacin lineal y circular en los robots
con menos de seis ejes.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SingArea.
Ejemplo 1
SingArea \Wrist;

Es posible cambiar ligeramente la orientacin de la herramienta para atravesar un


punto singular (ejes 4 y 6 en lnea).
Es posible que los robots con menos de seis ejes no puedan alcanzar una
orientacin de herramienta interpolada. Al utilizar SingArea \Wrist, el robot
puede conseguir el movimiento, pero la orientacin de la herramienta cambiar
ligeramente.
Ejemplo 2
SingArea \Off;

No se permite que la orientacin de la herramienta sea distinta de la orientacin


programada. Si se atraviesa un punto singular, uno o varios ejes pueden realizar
un movimiento de barrido, lo que da lugar a una reduccin de velocidad.
Es posible que los robots con menos de seis ejes no puedan alcanzar una
orientacin de herramienta programada. Como resultado, el robot se detiene.
Argumentos
SingArea [\Wrist]|[\Off]

[ \Wrist ]
Tipo de dato: switch
Se permite que la orientacin de la herramienta sea algo diferente, para evitar la
singularidad de la mueca. Se utiliza cuando los ejes 4 y 6 estn en paralelo (con
el eje 5 a 0 grados). Tambin se usa para la interpolacin lineal y circular en los
robots con menos de seis ejes, en los que se permite que la orientacin de la
herramienta sea diferente.
[ \Off ]
Tipo de dato: switch
La orientacin de la que no puede desviarse la herramienta. Se utiliza cuando no
se atraviesa ningn punto singular o cuando no se permite que cambie la
orientacin.
Si no se especifica ninguno de los argumentos, el sistema pasar a \Off.
Contina en la pgina siguiente
476

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.158 SingArea - Define el mtodo de interpolacin alrededor de puntos singulares
Continuacin
Ejecucin de programas
Si se especifican los argumentos \Wrist , la orientacin se consigue mediante
la interpolacin de ejes para evitar los puntos singulares. De esta forma, el TCP
sigue la trayectoria correcta, pero la orientacin de la herramienta se desva hasta
cierto punto. Esto tambin se produce cuando no se atraviesa un punto singular.
La interpolacin especificada se aplica a todos los movimientos posteriores, hasta
que se ejecuta una nueva instruccin SingArea.
El movimiento slo se ve afectado por la ejecucin de la interpolacin lineal o
circular.
De forma predeterminada, la ejecucin del programa utiliza automticamente el
argumento Off en los robots con seis ejes. Los robots que tienen menos de seis
ejes pueden usar el argumento Off o el argumento /Wrist de forma
predeterminada. Esto se establece automticamente en la rutina de evento
SYS_RESET.

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

Sintaxis
SingArea
[ \ Wrist ] | [\ Off ] ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Singularidad

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Singularidades

Interpolacin

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.159 SkipWarn - Omitir el ltimo aviso

1.159 SkipWarn - Omitir el ltimo aviso


Utilizacin
SkipWarn(Skip Warning) se utiliza para omitir el ltimo mensaje de advertencia
generado, con lo que no se almacena en el registro de eventos durante la ejecucin
en el modo continuo o cclico (en los modos paso a paso hacia delante o hacia
atrs no se omite ninguna advertencia).
SkipWarn hace posible realizar una recuperacin de errores repetitiva en RAPID
sin llenar el registro de eventos con mensajes que slo son de aviso.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SkipWarn.
Ejemplo 1
%"notexistingproc"%;
nextinstruction;
ERROR
IF ERRNO = ERR_REFUNKPRC THEN
SkipWarn;
TRYNEXT;
ENDIF
ENDPROC

El programa ejecuta la instruccin siguiente nextinstruction y no se almacena


ningn mensaje de aviso en el registro de eventos.
Sintaxis
SkipWarn ;

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Recuperacin en caso de error

Technical reference manual - RAPID overview, seccin


Resumen sobre RAPID - Recuperacin en caso de error
Technical reference manual - RAPID overview, seccin
Caractersticas bsicas - Recuperacin en caso de error

Nmero de error

errnum - Nmero de error en la pgina 1194

478

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.160 SocketAccept - Acepta una conexin entrante

1.160 SocketAccept - Acepta una conexin entrante


Utilizacin
SocketAccept se utiliza para aceptar peticiones de conexin entrantes.
SocketAccept slo puede usarse con aplicaciones de servidor.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SocketAccept.
Consulte tambin Ms ejemplos en la pgina 480.
Ejemplo 1
VAR socketdev server_socket;
VAR socketdev client_socket;
...
SocketCreate server_socket;
SocketBind server_socket,"192.168.0.1", 1025;
SocketListen server_socket;
SocketAccept server_socket, client_socket;

Se crea un zcalo de servidor, que se enlaza al puerto 1025 en la direccin de la


red del controlador 192.168.0.1. Tras la ejecucin de SocketListen, el zcalo
del servidor inicia la escucha de conexiones entrantes en este puerto y esta
direccin. SocketAccept permanece a la espera de conexiones entrantes, acepta
la peticin de conexin y devuelve un zcalo de cliente para la conexin
establecida.
Argumentos
SocketAccept Socket ClientSocket [\ClientAddress] [ \Time ]

Socket
Tipo de dato: socketdev
Los zcalos de servidor que permanecen a la espera de conexiones entrantes. El
zcalo debe estar ya creado, enlazado y preparado para la escucha.
ClientSocket
Tipo de dato: socketdev
El nuevo zcalo de cliente devuelto, que se actualizar con la peticin de conexin
entrante aceptada.
[\ClientAddress]
Tipo de dato: string
La variable que se actualizar con la direccin IP de la peticin de conexin entrante
aceptada.
[\Time]
Tipo de dato: num
El tiempo mximo [s] que debe esperar la ejecucin del programa a que se produzca
una conexin entrante. Si el tiempo se agota antes de que se produzca una
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.160 SocketAccept - Acepta una conexin entrante
Continuacin
conexin entrante, se llama al gestor de errores, si lo hay, con el cdigo de error
ERR_SOCK_TIMEOUT. Si no hay ningn gestor de errores, se detiene la ejecucin.
Si no se usa el parmetro \Time el tiempo de espera es de 60 s. Para esperar
indefinidamente, utilice la constante predefinida WAIT_MAX.
Ejecucin de programas
El zcalo de servidor permanece a la espera de peticiones de conexin entrantes.
Una vez aceptada la peticin de conexin entrante, la instruccin ha finalizado y
el zcalo de cliente devuelto est conectado de forma predeterminada y puede
usarse en instrucciones SocketSend y SocketReceive.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin SocketAccept.
Ejemplo 1
VAR socketdev server_socket;
VAR socketdev client_socket;
VAR string receive_string;
VAR string client_ip;
...
SocketCreate server_socket;
SocketBind server_socket, "192.168.0.1", 1025;
SocketListen server_socket;
WHILE TRUE DO
SocketAccept server_socket, client_socket
\ClientAddress:=client_ip;
SocketReceive client_socket \Str := receive_string;
SocketSend client_socket \Str := "Hello client with ip-address
" +client_ip;
! Wait for client acknowledge
...
SocketClose client_socket;
ENDWHILE
ERROR
RETRY;
UNDO
SocketClose server_socket;
SocketClose client_socket;

Se crea un zcalo de servidor, que se enlaza al puerto 1025 en la direccin de la


red del controlador 192.168.0.1. Tras la ejecucin de SocketListen, el zcalo
de servidor inicia la escucha de conexiones entrantes en este puerto y direccin.
SocketAccept aceptar la conexin entrante de algn cliente y guardar la
direccin del cliente en la cadena client_ip. A continuacin, el servidor recibe
un mensaje de cadena del cliente y guarda el mensaje en receive_string. A
continuacin, el cliente responde con el mensaje " Hello client with
ip-address xxx.xxx.x.x" y cierra la conexin de cliente.
A partir de ese momento, el servidor est preparado para una conexin desde el
mismo cliente o desde otro cliente, dentro del bucle WHILE. Si se mueve el puntero
Contina en la pgina siguiente
480

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.160 SocketAccept - Acepta una conexin entrante
Continuacin
de programa a Main en el programa, se cierran todos los zcalos (SocketClose
puede ejecutarse siempre, incluso si el zcalo no est creado).
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. La variable de sistema ERRNO cambia a:
ERR_SOCK_CLOSED

El zcalo est cerrado (ha sido cerrado o no ha sido creado).


Use SocketCreate para crear un nuevo zcalo.

ERR_SOCK_TIMEOUT

La conexin no fue establecida antes de alcanzar el tiempo


lmite

Sintaxis
SocketAccept
[ Socket := ] < variable (VAR) of socketdev > ,
[ ClientSocket := ] < variable (VAR) of socketdev >
[ \ ClientAddress := < variable (VAR) of string> ]
[ \ Time := < expression (IN) of num > ] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comunicacin con zcalos en general

Application manual - Robot communication and


I/O control, seccin Socket Messaging

Creacin de un nuevo zcalo

SocketCreate - Crea un nuevo zcalo en la pgina 489

Conexin a un ordenador remoto (slo


cliente)

SocketConnect - Establece una conexin a un


ordenador remoto en la pgina 486

Envo de datos a un ordenador remoto

SocketSend - Enva datos a un ordenador remoto


en la pgina 499

Recepcin de datos desde un ordenador SocketReceive - Recibe datos de un ordenador


remoto
remoto en la pgina 493
Cierre del zcalo

SocketClose - Cierra un zcalo en la pgina 484

Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin IP


y puerto en la pgina 482
Cmo permanecer a la escucha de cone- SocketListen - Permanece a la escucha de conexiones (slo servidor)
xiones entrantes en la pgina 491
Obtencin del estado actual del zcalo

SocketGetStatus - Obtiene el estado actual de


un zcalo en la pgina 1047

Aplicacin de ejemplo de zcalos de


cliente

SocketSend - Enva datos a un ordenador remoto


en la pgina 499

Ejemplo de aplicacin de zcalos de ser- SocketReceive - Recibe datos de un ordenador


vidor
remoto en la pgina 493

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.161 SocketBind - Enlaza un zcalo a mi direccin IP y puerto

1.161 SocketBind - Enlaza un zcalo a mi direccin IP y puerto


Utilizacin
SocketBind se usa para enlazar un zcalo al nmero de puerto de servidor y la
direccin IP y el nmero de puerto especificados. SocketBind slo puede usarse
con aplicaciones de servidor.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SocketBind.
Ejemplo 1
VAR socketdev server_socket;
SocketCreate server_socket;
SocketBind server_socket, "192.168.0.1", 1025;

Se crea un zcalo de servidor, que se enlaza al puerto 1025 en la direccin de la


red del controlador 192.168.0.1. A partir de este momento, es posible usar el
zcalo de servidor en una instruccin SocketListen para permanecer a la escucha
de conexiones entrantes en este puerto y direccin.
Argumentos
SocketBind Socket LocalAddress LocalPort

Socket
Tipo de dato: socketdev
El zcalo de servidor a enlazar. El zcalo ya debe estar creado pero no enlazado
an.
LocalAddress
Tipo de dato: string
La direccin de red de servidor a la que se desea enlazar el zcalo. Las nicas
direcciones vlidas son las direcciones de red local pblicas o la direccin del
puerto de servicio del controlador, 192.168.125.1.
LocalPort
Tipo de dato: num
El nmero de puerto de servidor al que se desea enlazar el zcalo. Por lo general,
los puertos del 1025 al 4999 estn libres para su uso. Es posible que los puertos
con un nmero inferior al 1025 ya estn ocupados.
Ejecucin de programas
Se enlaza el zcalo de servidor al puerto de servidor y la direccin IP especificados.
Si el puerto especificado ya se est utilizando, se genera un error.
Utilice las instrucciones SocketBind y SocketListen en la puesta en marcha
del programa para asociar una direccin local a un zcalo y a continuacin
permanecer a la espera de conexiones entrantes en el puerto especificado. Se
recomienda hacerlo slo una vez con cada zcalo y puerto utilizado.
Contina en la pgina siguiente
482

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.161 SocketBind - Enlaza un zcalo a mi direccin IP y puerto
Continuacin
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. La variable de sistema ERRNO cambia a:
ERR_SOCK_CLOSED

El zcalo est cerrado (ha sido cerrado o no ha sido creado).


Utilice SocketCreate para crear un nuevo zcalo.

ERR_SOCK_ADDR_INUSE

La direccin y el puerto ya se estn utilizando y no pueden


utilizarse nuevamente. Utilice otro nmero de puerto.

Sintaxis
SocketBind
[ Socket := ] < variable (VAR) of socketdev > ,
[ LocalAddress := ] < expression (IN) of string > ,
[ LocalPort := ] < expression (IN) of num > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comunicacin con zcalos en general

Application manual - Robot communication and


I/O control, seccin Socket Messaging

Creacin de un nuevo zcalo

SocketCreate - Crea un nuevo zcalo en la pgina 489

Conexin a un ordenador remoto (slo


cliente)

SocketConnect - Establece una conexin a un


ordenador remoto en la pgina 486

Envo de datos a un ordenador remoto

SocketSend - Enva datos a un ordenador remoto


en la pgina 499

Recepcin de datos desde un ordenador SocketReceive - Recibe datos de un ordenador


remoto
remoto en la pgina 493
Cierre del zcalo

SocketClose - Cierra un zcalo en la pgina 484

Cmo permanecer a la escucha de cone- SocketListen - Permanece a la escucha de conexiones (slo servidor)
xiones entrantes en la pgina 491
Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante en
la pgina 479
Obtencin del estado actual del zcalo

SocketGetStatus - Obtiene el estado actual de


un zcalo en la pgina 1047

Aplicacin de ejemplo de zcalos de


cliente

SocketSend - Enva datos a un ordenador remoto


en la pgina 499

Aplicacin de ejemplo de zcalos de


servidor

SocketReceive - Recibe datos de un ordenador


remoto en la pgina 493

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.162 SocketClose - Cierra un zcalo

1.162 SocketClose - Cierra un zcalo


Utilizacin
SocketClose se utiliza cuando ya no se va a utilizar una conexin de zcalo.
Una vez cerrado un zcalo, no es posible utilizarlo en ninguna llamada a zcalo,
excepto SocketCreate.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SocketClose.
Ejemplo 1
SocketClose socket1;

El zcalo se cierra y no es posible seguir utilizndolo.


Argumentos
SocketClose Socket

Socket
Tipo de dato: socketdev
El zcalo que se desea cerrar.
Ejecucin de programas
El zcalo se cerrar y se liberarn los recursos que tenga asignados.
Es posible cerrar cualquier zcalo en cualquier momento. Tras su cierre, no es
posible usar el zcalo. Sin embargo, puede ser utilizado para una nueva conexin
tras una llamada a SocketCreate.
Limitaciones
El cierre de la conexin del zcalo inmediatamente despus de enviar los datos
con SocketSend puede dar lugar a la prdida de datos de envo. Esto se debe a
que el zcalo TCP/IP tiene una funcionalidad incorporada para reenviar los datos
si hay cualquier problema de comunicacin.
Para evitar estos problemas con prdida de datos, haga lo siguiente antes de
SocketClose:

Intercambie de indicativos de control para el cierre o

WaitTime 2

Evite utilizar bucles rpidos con SocketCreate ... SocketClose, dado que
el zcalo no queda realmente cerrado hasta un cierto tiempo despus (funcionalidad
de TCP/IP).
Sintaxis
SocketClose
[ Socket ':=' ] < variable (VAR) of socketdev > ';'

Contina en la pgina siguiente


484

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.162 SocketClose - Cierra un zcalo
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comunicacin con zcalos en general

Application manual - Robot communication and


I/O control, seccin Socket Messaging

Creacin de un nuevo zcalo

SocketCreate - Crea un nuevo zcalo en la pgina 489

Conexin a un ordenador remoto (slo SocketConnect - Establece una conexin a un


cliente)
ordenador remoto en la pgina 486
Envo de datos a un ordenador remoto SocketSend - Enva datos a un ordenador remoto
en la pgina 499
Recepcin de datos desde un ordenador SocketReceive - Recibe datos de un ordenador
remoto
remoto en la pgina 493
Enlazamiento de un zcalo (slo servi- SocketBind - Enlaza un zcalo a mi direccin IP
dor)
y puerto en la pgina 482
Cmo permanecer a la escucha de cone- SocketListen - Permanece a la escucha de conexiones (slo servidor)
xiones entrantes en la pgina 491
Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante en
la pgina 479t
Obtencin del estado actual del zcalo SocketGetStatus - Obtiene el estado actual de un
zcalo en la pgina 1047
Aplicacin de ejemplo de zcalos de
cliente

SocketSend - Enva datos a un ordenador remoto


en la pgina 499

Aplicacin de ejemplo de zcalos de


servidor

SocketReceive - Recibe datos de un ordenador


remoto en la pgina 493

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.163 SocketConnect - Establece una conexin a un ordenador remoto

1.163 SocketConnect - Establece una conexin a un ordenador remoto


Utilizacin
SocketConnect se utiliza para conectar el zcalo a un ordenador remoto en una
aplicacin cliente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SocketConnect.
Consulte tambin Ms ejemplos en la pgina 487.
Ejemplo 1
SocketConnect socket1, "192.168.0.1", 1025;

Se intenta la conexin a un ordenador remoto en la direccin IP 192.168.0.1 y


con el puerto 1025.
Argumentos
SocketConnect Socket Address Port [\Time]

Socket
Tipo de dato: socketdev
El zcalo de cliente al que se desea conectar. El zcalo ya debe estar creado pero
no conectado an.
Address
Tipo de dato: string
La direccin del ordenador remoto. El ordenador remoto debe estar especificado
como una direccin IP. No es posible usar el nombre del ordenador remoto.
Port
Tipo de dato: num
El puerto del ordenador remoto. Por lo general, los puertos del 1025 al 4999 estn
libres para su uso. Es posible que los puertos con un nmero inferior al 1025 ya
estn ocupados.
[ \Time ]
Tipo de dato: num
El intervalo mximo [s] que debe esperar la ejecucin del programa a que se acepte
o deniegue la conexin. Si el tiempo se agota antes de que se cumpla la condicin,
se llama al gestor de errores si lo hay, con el cdigo de error ERR_SOCK_TIMEOUT.
Si no hay ningn gestor de errores, se detiene la ejecucin.
Si no se usa el parmetro \Time el tiempo de espera es de 60 s. Para esperar
ininterrumpidamente, utilice la constante predefinida WAIT_MAX.

Contina en la pgina siguiente


486

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.163 SocketConnect - Establece una conexin a un ordenador remoto
Continuacin
Ejecucin de programas
El zcalo intenta establecer una conexin con el ordenador remoto a travs de la
direccin y el puerto especificados. La ejecucin del programa esperar hasta que
la conexin sea establecida o falle o hasta que se produzca un error de tiempo
lmite.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin SocketConnect.
Ejemplo 1
VAR num retry_no := 0;
VAR socketdev my_socket;
...
SocketCreate my_socket;
SocketConnect my_socket, "192.168.0.1", 1025;
...
ERROR
IF ERRNO = ERR_SOCK_TIMEOUT THEN
IF retry_no < 5 THEN
WaitTime 1;
retry_no := retry_no + 1;
RETRY;
ELSE
RAISE;
ENDIF
ENDIF

Se crea un zcalo y se intenta establecer una conexin a un ordenador remoto.


Si la conexin no se establece dentro del tiempo lmite predeterminado, es decir
60 segundos, el gestor de errores reintenta la conexin. Se realizan cuatro
reintentos, tras lo cual se informa del error al usuario.
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. La variable de sistema ERRNO cambia a:
ERR_SOCK_CLOSED

El zcalo est cerrado (ha sido cerrado o no ha sido creado).


Utilice SocketCreate para crear un nuevo zcalo.

ERR_SOCK_TIMEOUT

La conexin no fue establecida antes de alcanzar el tiempo


lmite.

Sintaxis
SocketConnect
[ Socket := ] < variable (VAR) of socketdev > ,
[ Address := ] < expression (IN) of string > ,
[ Port := ] < expression (IN) of num >
[ \ Time := < expression (IN) of num > ] ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.163 SocketConnect - Establece una conexin a un ordenador remoto
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Se describe en:

Comunicacin con zcalos en general

Application manual - Robot communication and


I/O control

Creacin de un nuevo zcalo

SocketCreate - Crea un nuevo zcalo en la pgina 489

Envo de datos a un ordenador remoto

SocketSend - Enva datos a un ordenador remoto


en la pgina 499

Recepcin de datos desde un ordenador SocketReceive - Recibe datos de un ordenador


remoto
remoto en la pgina 493
Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin IP
y puerto en la pgina 482
Cmo permanecer a la escucha de cone- SocketListen - Permanece a la escucha de conexiones (slo servidor)
xiones entrantes en la pgina 491
Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante
en la pgina 479
Obtencin del estado actual del zcalo

SocketGetStatus - Obtiene el estado actual de


un zcalo en la pgina 1047

Aplicacin de ejemplo de zcalos de


cliente

SocketSend - Enva datos a un ordenador remoto


en la pgina 499

Aplicacin de ejemplo de zcalos de ser- SocketReceive - Recibe datos de un ordenador


vidor
remoto en la pgina 493

488

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.164 SocketCreate - Crea un nuevo zcalo

1.164 SocketCreate - Crea un nuevo zcalo


Utilizacin
SocketCreate se usa para crear un nuevo zcalo para una comunicacin basada
en conexiones.
El intercambio de mensajes de zcalo es de tipo canal y tiene el protocolo TCP/IP
con garanta de entrega. Es posible desarrollar aplicaciones tanto de servidor
como de cliente. El protocolo de datagrama UDP/IP con difusin no se admite.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SocketCreate.
Ejemplo 1
VAR socketdev socket1;
...
SocketCreate socket1;

Se crea un nuevo dispositivo de zcalo, que se asigna a la variable socket1.


Argumentos
SocketCreate Socket

Socket
Tipo de dato: socketdev
La variable de almacenamiento de los datos de zcalo internos del sistema.
Ejecucin de programas
La instruccin crea un nuevo dispositivo de zcalo.
El zcalo no debe estar usndose. El zcalo est en uso entre las instrucciones
SocketCreate y SocketClose.
Limitaciones
Es posible declarar tantos zcalos como se desee, pero slo es posible utilizar 32
de ellos al mismo tiempo.
Evite utilizar bucles rpidos con SocketCreate ... SocketClose, dado que
el zcalo no queda realmente cerrado hasta un cierto tiempo despus (funcionalidad
de TCP/IP).
Sintaxis
SocketCreate
[ Socket := ] < variable (VAR) of socketdev > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comunicacin con zcalos en general

Application manual - Robot communication and


I/O control, seccin Socket Messaging

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.164 SocketCreate - Crea un nuevo zcalo
Continuacin
Para obtener ms informacin sobre

Consulte

Conexin a un ordenador remoto (slo


cliente)

SocketConnect - Establece una conexin a un


ordenador remoto en la pgina 486

Envo de datos a un ordenador remoto

SocketSend - Enva datos a un ordenador remoto en la pgina 499

Recepcin de datos desde un ordenador SocketReceive - Recibe datos de un ordenador


remoto
remoto en la pgina 493
Cierre del zcalo

SocketClose - Cierra un zcalo en la pgina 484

Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin IP


y puerto en la pgina 482
Cmo permanecer a la escucha de cone- SocketListen - Permanece a la escucha de coxiones (slo servidor)
nexiones entrantes en la pgina 491
Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante
en la pgina 479
Obtencin del estado actual del zcalo

SocketGetStatus - Obtiene el estado actual de


un zcalo en la pgina 1047

Aplicacin de ejemplo de zcalos de


cliente

SocketSend - Enva datos a un ordenador remoto en la pgina 499

Aplicacin de ejemplo de zcalos de ser- SocketReceive - Recibe datos de un ordenador


vidor
remoto en la pgina 493

490

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.165 SocketListen - Permanece a la escucha de conexiones entrantes

1.165 SocketListen - Permanece a la escucha de conexiones entrantes


Utilizacin
SocketListen se usa para iniciar la escucha de conexiones entrantes, por ejemplo
para empezar a actuar como servidor. SocketListen slo puede usarse para las
aplicaciones de servidor.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SocketListen.
Ejemplo 1
VAR socketdev server_socket;
VAR socketdev client_socket;
...
SocketCreate server_socket;
SocketBind server_socket, "192.168.0.1", 1025;
SocketListen server_socket;
WHILE listening DO;
! Waiting for a connection request
SocketAccept server_socket, client_socket;

Se crea un zcalo de servidor, que se enlaza al puerto 1025 en la direccin de la


red del controlador 192.168.0.1. Tras la ejecucin de SocketListen, el zcalo
del servidor inicia la escucha de conexiones entrantes en este puerto y esta
direccin.
Argumentos
SocketListen Socket

Socket
Tipo de dato: socketdev
El zcalo de servidor que debe iniciar la escucha de conexiones entrantes. El
zcalo ya debe estar creado y enlazado.
Ejecucin de programas
El zcalo de servidor inicia la escucha de conexiones entrantes. Cuando la
instruccin ha finalizado, el zcalo est preparado para aceptar una conexin
entrante.
Utilice las instrucciones SocketBind y SocketListen en la puesta en marcha
del programa para asociar una direccin local a un zcalo y a continuacin
permanecer a la espera de conexiones entrantes en el puerto especificado. Se
recomienda hacerlo slo una vez con cada zcalo y puerto utilizado.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.165 SocketListen - Permanece a la escucha de conexiones entrantes
Continuacin
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. La variable de sistema ERRNO cambia a:
ERR_SOCK_CLOSED

El zcalo est cerrado (ha sido cerrado o no ha sido creado).


Utilice SocketCreate para crear un nuevo zcalo.

Sintaxis
SocketListen
[ Socket := ] < variable (VAR) of socketdev > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comunicacin con zcalos en general

Application manual - Robot communication and


I/O control, seccin Socket Messaging

Creacin de un nuevo zcalo

SocketCreate - Crea un nuevo zcalo en la pgina 489

Conexin a un ordenador remoto (slo


cliente)

SocketConnect - Establece una conexin a un


ordenador remoto en la pgina 486

Envo de datos a un ordenador remoto

SocketSend - Enva datos a un ordenador remoto en la pgina 499

Recepcin de datos desde un ordenador SocketReceive - Recibe datos de un ordenador


remoto
remoto en la pgina 493
Cierre del zcalo

SocketClose - Cierra un zcalo en la pgina 484

Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin IP


y puerto en la pgina 482
Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante
en la pgina 479
Obtencin del estado actual del zcalo

SocketGetStatus - Obtiene el estado actual de


un zcalo en la pgina 1047

Aplicacin de ejemplo de zcalos de


cliente

SocketSend - Enva datos a un ordenador remoto en la pgina 499

Aplicacin de ejemplo de zcalos de ser- SocketReceive - Recibe datos de un ordenador


vidor
remoto en la pgina 493

492

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.166 SocketReceive - Recibe datos de un ordenador remoto

1.166 SocketReceive - Recibe datos de un ordenador remoto


Utilizacin
SocketReceive se usa para recibir datos de un ordenador remoto.
SocketReceive puede usarse tanto en aplicaciones de cliente como en
aplicaciones de servidor.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SocketReceive.
Consulte tambin Ms ejemplos en la pgina 496.
Ejemplo 1
VAR string str_data;
...
SocketReceive socket1 \Str := str_data;

Se reciben datos de un ordenador remoto y se guardan en la variable de cadena


str_data.
Argumentos
SocketReceive Socket [ \Str ] | [ \RawData ] | [ \Data ]
[\ReadNoOfBytes] [\NoRecBytes] [\Time]

Socket
Tipo de dato: socketdev
En la aplicacin cliente en la que el zcalo recibe los datos, el zcalo debe estar
ya creado y conectado.
En la aplicacin de servidor en la que el zcalo recibe los datos, el zcalo debe
estar ya aceptado.
[ \Str ]
Tipo de dato: string
La variable en la que se debe almacenar el dato de tipo string. Es posible
gestionar un nmero mximo de 80 caracteres.
[ \RawData ]
Tipo de dato: rawbytes
La variable en la que se debe almacenar el dato de tipo rawbytes. Es posible
gestionar un nmero mximo de 1.024 rawbytes.
[ \Data ]
Tipo de dato: array of byte
La variable en la que se debe almacenar el dato de tipo byte. Es posible gestionar
un nmero mximo de 1.024 byte.
Slo es posible usar uno de los parmetros opcionales \Str, \RawData y \Data
al mismo tiempo.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.166 SocketReceive - Recibe datos de un ordenador remoto
Continuacin
[ \ReadNoOfBytes ]
Read number of Bytes
Tipo de dato: num
El nmero de bytes a leer. El nmero mnimo de bytes a leer es 1 y el nmero
mximo es el valor del tamao del tipo de dato utilizado, es decir, 80 bytes si se
utiliza una variable del tipo de dato string.
Si se est manteniendo una comunicacin con un cliente que siempre enva un
nmero fijo de bytes, este parmetro opcional puede usarse para especificar que
se lea siempre el mismo nmero de bytes para cada instruccin SocketReceive.
Si el remitente enva datos RawData, el destinatario necesita especificar la
recepcin de 4 bytes por cada rawbytes enviado.
[ \NoRecBytes ]
Number Received Bytes
Tipo de dato: num
Una variable para el almacenamiento del nmero de bytes necesarios del
socketdev especificado.
El mismo resultado tambin puede conseguirse con:

Funcin StrLen con la variable del argumento \Str

Funcin RawBytesLen con la variable del argumento \RawData

[ \Time ]
Tipo de dato: num
El intervalo mximo [s] que debe esperar la ejecucin del programa a que se
reciban los datos. Si el tiempo se agota antes de que se transfieran los datos, se
llama al gestor de errores si lo hay, con el cdigo de error ERR_SOCK_TIMEOUT.
Si no hay ningn gestor de errores, se detiene la ejecucin.
Si no se usa el parmetro \Time el tiempo de espera es de 60 s. Para esperar
indefinidamente, utilice la constante predefinida WAIT_MAX.
Ejecucin de programas
La ejecucin de SocketReceive esperar hasta que los datos estn disponibles
o fallen a causa de un error de tiempo lmite.
El nmero de bytes ledos es especificado por el tipo de dato utilizado en la
instruccin. Si se utiliza un tipo de dato string para recibir datos, se reciben los
80 bytes si en efecto hay 80 bytes a leer. Si se utiliza el argumento opcional
ReadNoOfBytes el usuario puede especificar cuntos bytes deben recibirse para
cada SocketReceive.
Los datos transferidos por el cable son siempre bytes, con un mximo de 1.024
bytes por cada mensaje. No se aade ningn encabezado al mensaje de forma
predeterminada. El uso de cualquier encabezado est reservado para la aplicacin
en s.
Parmetro

Datos de entrada

Datos de cable

Datos de salida

\Str

1 carcter

1 byte (8 bits)

1 carcter

Contina en la pgina siguiente


494

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.166 SocketReceive - Recibe datos de un ordenador remoto
Continuacin
Parmetro

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, rawbytes, or array of byte)


entre SocketSend y SocketReceive.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.166 SocketReceive - Recibe datos de un ordenador remoto
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin SocketReceive.
Ejemplo 1
VAR socketdev server_socket;
VAR socketdev client_socket;
VAR string client_ip;
PROC server_messaging()
VAR string receive_string;
...
! Create, bind, listen and accept of sockets in error handlers
SocketReceive client_socket \Str := receive_string;
SocketSend client_socket \Str := "Hello client with
ip-address"+client_ip;
! Wait for acknowlegde from client
...
SocketClose server_socket;
SocketClose client_socket;
ERROR
IF ERRNO=ERR_SOCK_TIMEOUT THEN
RETRY;
ELSEIF ERRNO=SOCK_CLOSED THEN
server_recover;
RETRY;
ELSE
! No error recovery handling
ENDIF
ENDPROC
PROC server_recover()
SocketClose server_socket;
SocketClose client_socket;
SocketCreate server_socket;
SocketBind server_socket, "192.168.0.1", 1025;
SocketListen server_socket;
SocketAccept server_socket,
client_socket\ClientAddress:=client_ip;
ERROR
IF ERRNO=ERR_SOCK_TIMEOUT THEN
RETRY;
ELSEIF ERRNO=ERR_SOCK_CLOSED THEN
RETURN;
ELSE
! No error recovery handling
ENDIF
ENDPROC

ste es un ejemplo de un programa de servidor con creacin, enlazamiento,


escucha y aceptacin de zcalos en los gestores de errores. De esta forma, el
programa puede manejar el reinicio tras la cada de alimentacin.
Contina en la pgina siguiente
496

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.166 SocketReceive - Recibe datos de un ordenador remoto
Continuacin
En el procedimiento server_recover, se crea un zcalo de servidor, que se
enlaza al puerto 1025 en la direccin de la red del controlador 192.168.0.1. Tras
la ejecucin de SocketListen, el zcalo de servidor inicia la escucha de
conexiones entrantes en este puerto y direccin. SocketAccept aceptar la
conexin entrante de algn cliente y guardar la direccin del cliente en la cadena
client_ip.
En el procedimiento de comunicacin server_messaging, el servidor recibe un
mensaje de cadena del cliente y guarda el mensaje en receive_string. A
continuacin, el cliente responde con el mensaje "Hello client with
ip-address xxx.xxx.x.x".
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. La variable de sistema ERRNO cambia a:
ERR_SOCK_CLOSED

El zcalo se cierra. Conexin interrumpida.

ERR_SOCK_TIMEOUT

No se recibieron datos dentro del tiempo lmite.

Limitaciones
La mensajera de zcalos no cuenta con ningn mecanismo de sincronizacin
incorporado para evitar la recepcin de mensajes compuestos por varios mensajes
de envo. El programador es quien decide si desea gestionar la sincronizacin con
mensajes Ack (debe completarse una secuencia de SocketSend SocketReceive en el programa cliente o servidor antes de la siguiente secuencia
de SocketSend - SocketReceive).
Todos los zcalos estn cerrados tras el reinicio de la cada de alimentacin. Este
problema puede ser gestionado por la recuperacin en caso de error. Consulte el
ejemplo anterior.
Evite utilizar bucles rpidos con SocketCreate ... SocketClose, dado que
el zcalo no queda realmente cerrado hasta un cierto tiempo despus (funcionalidad
de TCP/IP).
El tamao mximo de los datos que pueden recibirse en una llamada est limitada
a 1.024 bytes.
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 > ] ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.166 SocketReceive - Recibe datos de un ordenador remoto
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comunicacin con zcalos en general

Application manual - Robot communication and


I/O control, seccin Socket Messaging

Creacin de un nuevo zcalo

SocketCreate - Crea un nuevo zcalo en la pgina 489

Conexin a un ordenador remoto (slo


cliente)

SocketConnect - Establece una conexin a un


ordenador remoto en la pgina 486

Envo de datos a un ordenador remoto

SocketSend - Enva datos a un ordenador remoto


en la pgina 499

Cierre del zcalo

SocketClose - Cierra un zcalo en la pgina 484

Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin IP


y puerto en la pgina 482
Cmo permanecer a la escucha de cone- SocketListen - Permanece a la escucha de conexiones (slo servidor)
xiones entrantes en la pgina 491
Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante
en la pgina 479
Obtencin del estado actual del zcalo

SocketGetStatus - Obtiene el estado actual de


un zcalo en la pgina 1047

Aplicacin de ejemplo de zcalos de


cliente

SocketSend - Enva datos a un ordenador remoto


en la pgina 499

498

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.167 SocketSend - Enva datos a un ordenador remoto

1.167 SocketSend - Enva datos a un ordenador remoto


Utilizacin
SocketSend se usa para enviar datos a un ordenador remoto. SocketSend puede
usarse tanto en aplicaciones de cliente como en aplicaciones de servidor.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SocketSend.
Consulte tambin Ms ejemplos en la pgina 501.
Ejemplo 1
SocketSend socket1 \Str := "Hello world";

Enva el mensaje "Hello world" al ordenador remoto.


Argumentos
SocketSend Socket [ \Str ] | [ \RawData ] | [ \Data] [ \NoOfBytes
]

Socket
Tipo de dato: socketdev
En la aplicacin cliente, el zcalo desde el que se enva debe estar ya creado y
conectado.
En la aplicacin de servidor, el zcalo al que se enva debe estar ya aceptado.
[ \Str ]
Tipo de dato: string
La cadena de tipo string que se desea enviar al ordenador remoto.
[ \RawData ]
Tipo de dato: rawbytes
El dato de tipo rawbytes que se desea enviar al ordenador remoto.
[ \Data ]
Tipo de dato: array of byte
Los datos de la matriz de tipo byte que se desea enviar al ordenador remoto.
Slo es posible usar uno de los parmetros de opcin \Str, \RawData o \Data
al mismo tiempo.
[ \NoOfBytes ]
Tipo de dato: num
Si se especifica este argumento, slo se enva al ordenador remoto este nmero
de bytes. 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.
Si no se especifica este argumento, se enva al ordenador remoto la totalidad de
la estructura de datos (la parte vlida de rawbytes).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.167 SocketSend - Enva datos a un ordenador remoto
Continuacin
Ejecucin de programas
Los datos especificados se envan al ordenador remoto. Si la conexin se
interrumpe, se genera un error.
Los datos transferidos por el cable son siempre bytes, con un mximo de 1.024
bytes por cada mensaje. No se aade ningn encabezado al mensaje de forma
predeterminada. El uso de cualquier encabezado est reservado para la aplicacin
en s.
Parmetro

Datos de entrada

Datos de cable

Datos de salida

\Str

1 carcter

1 byte (8 bits)

1 carcter

\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, rawbytes o array of byte)


entre SocketSend y SocketReceive.

Contina en la pgina siguiente


500

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.167 SocketSend - Enva datos a un ordenador remoto
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin SocketSend.
Ejemplo 1
VAR socketdev client_socket;
VAR string receive_string;
PROC client_messaging()
...
! Create and connect the socket in error handlers
SocketSend client_socket \Str := "Hello server";
SocketReceive client_socket \Str := receive_string;
...
SocketClose client_socket;
ERROR
IF ERRNO=ERR_SOCK_TIMEOUT THEN
RETRY;
ELSEIF ERRNO=ERR_SOCK_CLOSED THEN
client_recover;
RETRY;
ELSE
! No error recovery handling
ENDIF
ENDPROC
PROC client_recover()
SocketClose client_socket;
SocketCreate client_socket;
SocketConnect client_socket, "192.168.0.2", 1025;
ERROR
IF ERRNO=ERR_SOCK_TIMEOUT THEN
RETRY;
ELSEIF ERRNO=ERR_SOCK_CLOSED THEN
RETURN;
ELSE
! No error recovery handling
ENDIF
ENDPROC

ste es un ejemplo de un programa cliente con creacin y conexin de zcalos


en los gestores de errores. De esta forma, el programa puede manejar el reinicio
tras la cada de alimentacin.
En el procedimiento client_recover, se crea y conecta el zcalo de cliente a
un servidor de ordenador remoto con la direccin 192.168.0.2 en el puerto 1025.
En el procedimiento de comunicacin client_messaging, el cliente enva "Hello
server" al servidor y el servidor responde con "Hello client" al cliente. Este
mensaje se almacena en la variable receive_string.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.167 SocketSend - Enva datos a un ordenador remoto
Continuacin
Ejemplo 2
VAR socketdev client_socket;
VAR string receive_string;
PROC client_messaging()
...
! Send cr and lf to the server
SocketSend client_socket \Str := "\0D\0A";
...
ENDPROC

ste es un ejemplo de un programa cliente que enva caracteres no imprimibles


(datos binarios) en una cadena. Esto puede resultar til a la hora de comunicarse
con sensores u otros clientes que requieran este tipo de caracteres.
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. La variable de sistema ERRNO cambia a:
ERR_SOCK_CLOSED

The socket is closed. Broken connection.

Limitaciones
La mensajera de zcalos no cuenta con ningn mecanismo de sincronizacin
incorporado para evitar la recepcin de mensajes compuestos por varios mensajes
de envo. El programador es quien decide si desea gestionar la sincronizacin con
mensajes Ack (debe completarse una secuencia de SocketSend SocketReceive en el programa cliente o servidor antes de la siguiente secuencia
de SocketSend - SocketReceive).
Todos los zcalos estn cerrados tras el reinicio de la cada de alimentacin. Este
problema puede ser gestionado por la recuperacin en caso de error. Consulte el
ejemplo anterior.
Evite utilizar bucles rpidos con SocketCreate ... SocketClose, dado que
el zcalo no queda realmente cerrado hasta un cierto tiempo despus (funcionalidad
de TCP/IP).
El tamao de los datos a enviar est limitado a 1.024 bytes.
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 > ] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comunicacin con zcalos en general

Application manual - Robot communication and


I/O control, Socket Messaging

Contina en la pgina siguiente


502

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.167 SocketSend - Enva datos a un ordenador remoto
Continuacin
Para obtener ms informacin sobre

Consulte

Creacin de un nuevo zcalo

SocketCreate - Crea un nuevo zcalo en la pgina 489

Conexin a un ordenador remoto (slo


cliente)

SocketConnect - Establece una conexin a un


ordenador remoto en la pgina 486

Recepcin de datos desde un ordenador SocketReceive - Recibe datos de un ordenador


remoto
remoto en la pgina 493
Cierre del zcalo

SocketClose - Cierra un zcalo en la pgina 484

Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin IP


y puerto en la pgina 482
Cmo permanecer a la escucha de cone- SocketListen - Permanece a la escucha de coxiones (slo servidor)
nexiones entrantes en la pgina 491
Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante
en la pgina 479
Obtencin del estado actual del zcalo

SocketGetStatus - Obtiene el estado actual de


un zcalo en la pgina 1047

Aplicacin de ejemplo de zcalos de ser- SocketReceive - Recibe datos de un ordenador


vidor
remoto en la pgina 493
Uso de caracteres no imprimibles (datos Technical reference manual - RAPID kernel,
binarios) en literales de cadenas de carac- seccin String literals
teres.

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.168 SoftAct - Activa el servo suave

1.168 SoftAct - Activa el servo suave


Utilizacin
SoftAct (Soft Servo Activate) se utiliza para activar el as llamado servo suave
en cualquier eje del robot o en una unidad mecnica externa.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SoftAct.
Ejemplo 1
SoftAct 3, 20;

Activacin del servo suave en el eje 3 del robot, con un valor de suavidad del 20%.
Ejemplo 2
SoftAct 1, 90 \Ramp:=150;

Activacin del servo suave en el eje 1 del robot, con un valor de suavidad del 90%
y con un factor de rampa del 150%.
Ejemplo 3
SoftAct \MechUnit:=orbit1, 1, 40 \Ramp:=120;

Activacin del servo suave en el eje 1 de la unidad mecnica orbit1 con un valor
de suavidad del 40% y un factor de rampa del 120%.
Argumentos
SoftAct[\MechUnit] Axis Softness [\Ramp]

[ \MechUnit ]
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica. Si se omite este argumento, significa la activacin
del servo suave para el eje especificado del robot en la tarea de programa actual.
Axis
Tipo de dato: num
El nmero del eje del robot o del eje externo que debe funcionar con el servo
suave.
Softness
Tipo de dato: num
El valor de suavidad, en porcentaje (del 0% al 100%). El 0% denota la suavidad
mnima (la mxima rigidez), mientras que el 100% denota la mxima suavidad.
[ \Ramp ]
Tipo de dato: num
El factor de pendiente, en porcentaje (>= 100%). El factor de pendiente se utiliza
para controlar la aplicacin del servo suave. Un factor del 100% denota un valor
Contina en la pgina siguiente
504

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.168 SoftAct - Activa el servo suave
Continuacin
normal. Cuando se usan valores mayores, el servo suave se aplica ms lentamente
(con una pendiente mayor). El valor predeterminado para el factor de pendiente
es el 100%.
Ejecucin de programas
La suavidad se activa con el valor especificado para el eje actual. El valor de
suavidad es vlido para todos los movimientos hasta que se programa un nuevo
valor de suavidad para el eje actual o hasta que se desactiva mediante la instruccin
SoftDeact.
Limitaciones
El servo suave de cualquier eje del robot o eje externo se desactiva siempre que
se produce una cada de alimentacin elctrica. Esta limitacin puede gestionarse
en el programa del usuario cuando se reanuda la ejecucin despus de una cada
de alimentacin.
No se debe activar el mismo eje dos veces, a no ser que exista una instruccin
de movimiento entre las dos activaciones. Por tanto, la secuencia de programa
siguiente debe evitarse. De lo contrario, se producirn sacudidas en los
movimientos del robot:
SoftAct n , x ;
SoftAct n , y ;

(n = eje n del robot, x e y = valores de suavidad)


Sintaxis
SoftAct
[\MechUnit := < variable (VAR) of mecunit>,]
[Axis := ] < expression (IN) of num> ,
[Softness:= ] < expression (IN) of num> ,
[ \Ramp:= < expression (IN) of num> ];

Informacin relacionada
Para obtener ms informacin sobre Consulte
Desactivacin del servo suave

SoftDeact - Desactiva el servo suave en la pgina 506

Comportamiento con el servo suave


activado

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa

Configuracin de ejes externos

Application manual - Additional axes and stand


alone controller, seccin Axes Configuration - Soft
servo

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.169 SoftDeact - Desactiva el servo suave

1.169 SoftDeact - Desactiva el servo suave


Utilizacin
SoftDeact (Soft Servo Deactivate) se utiliza para desactivar el as llamado servo
suave.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SoftDeact.
Ejemplo 1
SoftDeact;

Desactiva el servo suave en todos los ejes.


Ejemplo 2
SoftDeact \Ramp:=150;

Desactiva el servo suave en todos los ejes, con un factor de pendiente del 150 %.
Argumentos
SoftDeact[\Ramp]

[ \Ramp ]
Tipo de dato: num
El factor de pendiente, en porcentaje (>= 100 %). El factor de pendiente se utiliza
para controlar la desactivacin del servo suave. Un factor del 100% es el valor
normal. Cuando se usan valores mayores, el servo suave se desactiva ms
lentamente (con una pendiente mayor). El valor predeterminado para el factor de
pendiente es el 100%.
Ejecucin de programas
Se desactiva el servo suave para las unidades mecnicas controladas desde la
tarea de programa actual. Si SoftDeact se realiza desde una tarea sin movimiento,
el servo suave se desactiva para la unidad mecnica controlada por la tarea de
movimiento conectada. La ejecucin de un SoftDeact durante el modo de
movimiento sincronizado, el servo suave se desactiva para todas las unidades
mecnicas que estn sincronizadas.
Al desactivar el servo suave con SoftDeact el robot se mueve hasta la posicin
programada, incluso si el robot ha abandonado su posicin durante la activacin
del servo suave.
Sintaxis
SoftDeact
[ \Ramp := < expression (IN) of num> ];

Informacin relacionada
Para obtener ms informacin sobre Consulte
Activacin del servo suave

SoftAct - Activa el servo suave en la pgina 504

506

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.170 SpeedRefresh - El ajuste de velocidad para el movimiento en curso

1.170 SpeedRefresh - El ajuste de velocidad para el movimiento en curso


Utilizacin
SpeedRefresh se utiliza para cambiar la velocidad del movimiento del robot en
curso en la actual tarea de movimiento de programa. Esta instruccin permite
crear algn tipo de adaptacin de velocidad aproximada a partir de una entrada
de sensor.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SpeedRefresh.
Ejemplo 1
VAR num change_speed:=70;
SpeedRefresh change_speed;

Esta operacin cambia el ajuste de velocidad actual al 70%.


Argumentos
SpeedRefresh Override

Override
Tipo de dato: num
El valor del ajuste de velocidad, dentro del rango del 0% al 100%.
Ejecucin de programas
Se actualiza el valor de redefinicin actual de la velocidad para los movimientos
en curso del robot y las unidades externas de la tarea de movimiento del programa
actual.
Se ven afectados todos los componentes de datos de velocidad de todas las
unidades mecnicas de la tarea de movimiento actual.
Este valor de ajuste de velocidad generado con esta instruccin 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).
Si el ajuste de velocidad utilizado para la instruccin SpeedRefresh sobrepasa
el valor establecido desde el FlexPendant, se utilizar el valor ms bajo. Esto
significa que la velocidad no puede aumentarse por encima de la velocidad
establecida desde el FlexPendant.
Si se realiza una operacin de PP a Main o se carga un nuevo programa, la
velocidad establecida con SpeedRefresh se restablece y se aplica la velocidad
establecida desde el FlexPendant.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.170 SpeedRefresh - El ajuste de velocidad para el movimiento en curso
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin SpeedRefresh.
Ejemplo 1
VAR intnum time_int;
VAR num override;
...
PROC main()
CONNECT time_int WITH speed_refresh;
ITimer 0.1, time_int;
ISleep time_int;
...
MoveL p1, v100, fine, tool2;
! Read current speed override set from FlexPendant
override := CSpeedOverride (\CTask);
IWatch time_int;
MoveL p2, v100, fine, tool2;
IDelete time_int;
! Reset to FlexPendant old speed override
WaitTime 0.5;
SpeedRefresh override;
...
TRAP speed_refresh
VAR speed_corr;
! Analog input signal value from sensor, value 0 ... 10
speed_corr := (ai_sensor * 10);
SpeedRefresh speed_corr;
ERROR
IF ERRNO = ERR_SPEED_REFRESH_LIM THEN
IF speed_corr > 100 speed_corr := 100;
IF speed_corr < 0 speed_corr := 0;
RETRY;
ENDIF
ENDTRAP

Durante el movimiento del robot desde la posicin p1 hasta p2, el valor de ajuste
de velocidad se actualiza cada 0.1 s en la rutina TRAPspeed_refresh. La seal
analgica de entrada ai_sensor se usa para el clculo del valor de Overide
para la instruccin SpeedRefresh. No se realiza ninguna ejecucin de TRAP ni
antes ni despus del movimiento de robot entre p1 y p2. Se restablece el ajuste
de velocidad manual del FlexPendant. A continuacin, el robot debe alcanzar p2.
Gestin de errores
Si Override tiene un valor que est fuera del rango del 0% al 100%, el valor de
la variable ERRNO cambia a ERR_SPEED_REFRESH_LIM. Este error es recuperable
y puede ser gestionado en el gestor ERROR.

Contina en la pgina siguiente


508

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.170 SpeedRefresh - El ajuste de velocidad para el movimiento en curso
Continuacin
Limitaciones
Recuerde que con SpeedRefresh el ajuste de velocidad no se har
momentneamente. En su lugar se producir un retardo de 0,3 a 0,5 segundos
entre la orden y su influencia en el robot fsico.
El usuario es responsable de restablecer el valor de ajuste de velocidad desde el
programa de RAPID a continuacin de la secuencia SpeedRefresh.
El ajuste de velocidad no puede aumentarse por encima del ajuste de velocidad
establecido desde el FlexPendant.
Si se utiliza SpeedRefresh en la rutina de evento START o RESET, la velocidad
establecida siempre es el ajuste de velocidad vigente en el FlexPendant.
Sintaxis
SpeedRefresh
[ Override := ] < expression (IN) of num > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones de posicionamiento

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Movimiento

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Lectura del ajuste de velocidad actual

CSpeedOverride - Lee el ajuste de velocidad


actual en la pgina 867

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.171 SpyStart - Comienza la grabacin de los datos de tiempo de ejecucin

1.171 SpyStart - Comienza la grabacin de los datos de tiempo de ejecucin


Utilizacin
SpyStart se utiliza para iniciar la grabacin de los datos de instrucciones y
tiempos durante la ejecucin.
Los datos de ejecucin se almacenan en un archivo para su anlisis posterior.
El uso previsto de esta informacin es la depuracin de los programas de RAPID,
especficamente en sistemas multitarea (slo es necesario incluir SpyStart SpyStop en una de las tareas de programa).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SpyStart.
Ejemplo 1
SpyStart "HOME:/spy.log";

Empieza la grabacin de los datos de tiempo de ejecucin en el archivo spy.log


en el disco HOME.
Argumentos
SpyStart File

Archivo
Tipo de dato: string
La ruta y el nombre del archivo que contiene los datos de ejecucin.
Ejecucin de programas
El archivo especificado se abre para escritura y los datos de tiempo de ejecucin
empiezan a grabarse en el archivo.
La grabacin de los datos de tiempo de ejecucin permanece activa hasta los
momentos siguientes:

Ejecucin de la instruccin SpyStop

Inicio de la ejecucin 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 grabacin, ya que la escritura en el
disquete es muy lenta.
No utilice nunca la funcin de espa en los programas de produccin, porque esta
funcin aumenta el tiempo de ciclo y consume ms memoria en el dispositivo de
memoria de almacenamiento que utilice.

Contina en la pgina siguiente


510

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.171 SpyStart - Comienza la grabacin de los datos de tiempo de ejecucin
Continuacin
Gestin de errores
Si no es posible abrir el archivo de la instruccin SpyStart, la variable de sistema
ERRNO cambia a ERR_FILEOPEN (consulte "Tipos de datos - errnum"). A
continuacin, este error puede ser gestionado en el gestor de errores.
Formato de archivo
TASK

INSTR

IN

CODE

OUT

MAIN

FOR i FROM 1 TO 3 DO

READY

MAIN

mynum:=mynum+i;

READY

MAIN

ENDFOR

READY

MAIN

mynum:=mynum+i;

READY

MAIN

ENDFOR

READY

MAIN

mynum:=mynum+i;

READY

MAIN

ENDFOR

READY

MAIN

SetDo1,1;

READY

MAIN

IF di1=0 THEN

READY

MAIN

MoveL p1, v1000, fine, tool0;

WAIT

14

MAIN

MoveL p1, v1000, fine, tool0;

111

READY

111

MAIN

ENDIF

108

READY

108

MAIN

MoveL p2, v1000, fine, tool0;

111

WAIT

118

MAIN

MoveL p2, v1000, fine, tool0;

326

READY

326

MAIN

SpyStop;

326

READY

SYSTEM
TRAP

SYSTEM
TRAP

La columna TASK muestra la tarea de programa que se ejecuta.


La columna INSTR muestra la instruccin ejecutada en la tarea de programa
especificada.
La columna IN muestra el tiempo en ms en la entrada de la instruccin ejecutada.
La columna CODE muestra si la instruccin est preparada (READY) o si est en
espera (WAIT) de completarse en el momento OUT.
La columna OUT muestra el tiempo en ms en la salida de la instruccin ejecutada.
Todos los tiempos se indican en ms (valores relativos).
SYSTEM TRAP significa que el sistema est haciendo algo distinto de la ejecucin
de instrucciones de RAPID.
En el caso de las llamadas a procedimientos (mdulos) NOSTEPIN, la lista de
salida slo muestra el nombre del procedimiento al que se llama. Esto se repite
con cada instruccin ejecutada en la rutina NOSTEPIN.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.171 SpyStart - Comienza la grabacin de los datos de tiempo de ejecucin
Continuacin
Sintaxis
SpyStart
[File:=]<expression (IN) of string>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Detencin de la grabacin de los datos de


ejecucin

SpyStop - Detiene la grabacin de los datos


de tiempo de ejecucin en la pgina 513

Condicin automtica

Manual de referencia tcnica - Parmetros


del sistema, Topic Controller, Type Auto
Condition Reset

512

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.172 SpyStop - Detiene la grabacin de los datos de tiempo de ejecucin

1.172 SpyStop - Detiene la grabacin de los datos de tiempo de ejecucin


Utilizacin
SpyStop se utiliza para detener la grabacin de los datos de tiempo durante la
ejecucin.
Esta informacin, que puede resultar til a la hora de optimizar el tiempo de ciclo
de ejecucin, se almacena en un archivo para su anlisis posterior.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SpyStop .
Consulte tambin Ms ejemplos en la pgina 513.
Ejemplo 1
SpyStop;

Detiene la grabacin de los datos de tiempo de ejecucin en el archivo especificado


por la instruccin SpyStart anterior.
Ejecucin de programas
La grabacin de los datos de ejecucin se detiene y el archivo especificado por
la instruccin SpyStart anterior se cierra. Si no se ha ejecutado anteriormente
la instruccin SpyStart, la instruccin SpyStop no se tiene en cuenta.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin SpyStop.
Ejemplo 1
IF debug = TRUE SpyStart "HOME:/spy.log";
produce_sheets;
IF debug = TRUE SpyStop;

Si el indicador de depuracin tiene el valor TRUE, se inicia la grabacin de datos


de ejecucin en el archivo spy.log del disco HOME. Realizar la produccin en s,
detener la grabacin y cerrar el archivo spy.log.
Limitaciones
Evite usar el disquete (opcionalmente) para la grabacin, ya que la escritura en el
disquete es muy lenta.
No utilice nunca la funcin de espa en los programas de produccin, porque esta
funcin aumenta el tiempo de ciclo y consume ms memoria en el dispositivo de
memoria de almacenamiento que utilice.
Sintaxis
SpyStop;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Inicio de la grabacin de los datos de


ejecucin

SpyStart - Comienza la grabacin de los datos


de tiempo de ejecucin en la pgina 510

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.173 StartLoad - Carga un mdulo de programa durante la ejecucin

1.173 StartLoad - Carga un mdulo de programa durante la ejecucin


Utilizacin
StartLoad se utiliza para iniciar la carga de un mdulo de programa en la memoria
de programa durante la ejecucin.
Mientras se est realizando la carga, las otras instrucciones pueden ejecutarse
en paralelo. El mdulo cargado debe estar conectado a la tarea de programa con
la instruccin WaitLoad antes de poder usar cualquier de sus smbolos o rutinas.
El mdulo de programa cargado se aade a los mdulos que ya existen en la
memoria de programa.
Los programas o mdulos de sistema pueden cargarse en el modo esttico
(predeterminado) o en el modo dinmico. En funcin del modo utilizado, algunas
operaciones descargarn el mdulo o no afectarn al mdulo en ningn sentido.
Modo esttico
En la tabla siguiente se muestra cmo afectan dos operaciones distintas a los
programas o mdulos de sistema cargados en el modo esttico.
Trasladar el puntero de programa Abrir un nuevo programa de
a main desde TP
RAPID
Mdulo de programa No se ve afectado

Descargado

Mdulo de sistema

No se ve afectado

No se ve afectado

Modo dinmico
En la tabla siguiente se muestra cmo afectan dos operaciones distintas a los
programas o mdulos de sistema cargados en el modo dinmico.
Trasladar el puntero de programa Abrir un nuevo programa de
a main desde TP
RAPID
Mdulo de programa Descargado

Descargado

Mdulo de sistema

Descargado

Descargado

Tanto los mdulos cargados en modo esttico como los cargados en modo
dinmico se descargan al utilizar la instruccin UnLoad.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin StartLoad.

Contina en la pgina siguiente


514

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.173 StartLoad - Carga un mdulo de programa durante la ejecucin
Continuacin
Consulte tambin Ms ejemplos en la pgina 516.
Ejemplo 1
VAR loadsession load1;
! Start loading of new program module PART_B containing routine
routine_b in dynamic mode
StartLoad \Dynamic, diskhome \File:="PART_B.MOD", load1;
! Executing in parallel in old module PART_A containing routine_a
%"routine_a"%;
! Unload of old program module PART_A
UnLoad diskhome \File:="PART_A.MOD";
! Wait until loading and linking of new program module PART_B is
ready
WaitLoad load1;
! Execution in new program module PART_B
%"routine_b"%;

Inicia la carga del mdulo de programa PART_B.MOD desde diskhome en la


memoria de programas con la instruccin StartLoad. En paralelo con la carga,
el programa ejecuta la rutina routine_a del mdulo PART_A.MOD. La instruccin
WaitLoad espera hasta que la carga y la vinculacin han terminado. El mdulo
se carga en el modo dinmico.
La variable load1 almacena la identidad de la sesin de carga, actualizada por
StartLoad y a la que se hace referencia desde WaitLoad.
Para ahorrar tiempo de vinculacin, las instrucciones UnLoad y WaitLoad pueden
combinarse en la instruccin WaitLoad mediante el uso del argumento
\UnLoadPath.
Argumentos
StartLoad [\Dynamic] FilePath [\File] LoadNo

[\Dynamic]
Tipo de dato: switch
El modificador permite cargar un mdulo de programa en modo dinmico. De lo
contrario, la carga se realiza en modo esttico.
FilePath
Tipo de dato: string
La ruta y el nombre del archivo que se cargar en la memoria de programa. El
nombre de archivo se excluye cuando se utiliza el argumento \File .
[\File]
Tipo de dato: string
Cuando se excluye el nombre del archivo en el argumento FilePath, es necesario
definirlo con este argumento.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.173 StartLoad - Carga un mdulo de programa durante la ejecucin
Continuacin
LoadNo
Tipo de dato: loadsession
Existe una referencia en la sesin de carga que debe usarse en la instruccin
WaitLoad para conectar el mdulo de programa cargado a la tarea de programa.
Ejecucin de programas
La ejecucin de StartLoad slo solicita la carga y contina directamente en la
instruccin siguiente, sin esperar a que se complete la carga.
A continuacin, la instruccin WaitLoad espera primero a que se complete la
carga , si no se completado an, y despus el mdulo ser vinculado e inicializado.
La inicializacin del mdulo cargado devuelve todas las variables del nivel de
mdulo a sus valores iniciales.
Las referencias no resueltas se aceptarn de forma predeterminada para esta
operacin de carga StartLoad - WaitLoad, pero ser un error de tiempo de
ejecucin al ejecutar una referencia no resuelta.
Para conseguir una estructura de programa idnea, fcil de comprender y mantener,
todas las operaciones de carga y descarga de mdulos de programa deben hacerse
en el mdulo principal (main) que siempre est presente en la memoria de
programa durante la ejecucin.
Para la carga de un programa que contiene un procedimiento main en un programa
principal (que contiene otro procedimiento main), consulte la instruccin Load.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin StartLoad.
Ejemplo 1
StartLoad \Dynamic, "HOME:/DOORDIR/DOOR1.MOD", load1;

Carga el mdulo de programa DOOR1.MOD desde HOME: en el directorio DOORDIR


en la memoria de programa. El mdulo de programa se carga en el modo dinmico.
Ejemplo 2
StartLoad \Dynamic, "HOME:" \File:="/DOORDIR/DOOR1.MOD", load1;

Lo mismo que en el ejemplo 1, pero con otra sintaxis.


Ejemplo 3
StartLoad "HOME:" \File:="/DOORDIR/DOOR1.MOD", load1;

Lo mismo que en los ejemplos 1 y 2 anteriores, pero el mdulo se carga en el


modo esttico.
Ejemplo 4
StartLoad \Dynamic, "HOME:" \File:="/DOORDIR/DOOR1.MOD", load1;
WaitLoad load1;

Es lo mismo que:
Load \Dynamic, "HOME:" \File:="/DOORDIR/DOOR1.MOD";

Contina en la pgina siguiente


516

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.173 StartLoad - Carga un mdulo de programa durante la ejecucin
Continuacin
Gestin de errores
Si no se encuentra el archivo especificado en la instruccin, la variable de sistema
ERRNO cambia a ERR_FILNOTFND. A continuacin, este error puede ser gestionado
en el gestor de errores.
Si la variable especificada en el argumento LoadNo ya se est utilizando, la
variable de sistema ERRNO cambia a ERR_LOADNO_INUSE. A continuacin, este
error puede ser gestionado en el gestor de errores.
Sintaxis
StartLoad
[\Dynamic ,]
[FilePath :=] <expression (IN) of string>
[\File := <expression (IN) of string> ] ,
[LoadNo :=] <variable (VAR) of loadsession>;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Conexin de un mdulo cargado a una WaitLoad - Conecta el mdulo cargado a la tarea
tarea
en la pgina 729
Sesin de carga

loadsession - Programar una sesin de carga en


la pgina 1226

Carga de un mdulo de programa

Load - Carga un mdulo de programa durante la


ejecucin en la pgina 217

Descarga de un mdulo de programa

UnLoad - Descarga un mdulo de programa durante la ejecucin en la pgina 701

Cancelacin de la carga de un mdulo CancelLoad - Cancela la carga de un mdulo en


de programa
la pgina 37
Llamada a procedimiento con enlazamiento en tiempo de ejecucin

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Rutinas - Llamada a procedimiento

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.174 StartMove - Reanuda el movimiento del robot

1.174 StartMove - Reanuda el movimiento del robot


Utilizacin
StartMove se utiliza para reanudar el movimiento del robot y los ejes externos y
el proceso perteneciente una vez detenido el movimiento.

La instruccin StopMove.

Tras la ejecucin de la secuencia StorePath ... RestoPath.

Los errores de movimiento elevador asincrnicamente, como por ejemplo


ERR_PATH_STOP o un error de proceso especfico tras la gestin en el gestor
de ERROR.

En el sistema bsico, es posible utilizar esta instruccin en el tipo siguiente de


tareas de programa:

Tarea main T_ROB1, para el reinicio del movimiento en esa tarea.

Cualquier otra tarea, para el reinicio del movimiento en la tarea main.

En el sistema MultiMove, es posible utilizar esta instruccin en el tipo siguiente


de tareas de programa:

Tarea de movimiento, para el reinicio del movimiento en esa tarea.

Tarea sin movimiento, para el reinicio del movimiento en la tarea de


movimiento conectada Adems, si el movimiento se reinicia en una tarea de
movimiento conectada que pertenece a un grupo de tarea coordinada
sincronizada, el movimiento se reinicia en todas las tareas cooperativas.

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin StartMove.
Ejemplo 1
StopMove;
WaitDI ready_input,1;
StartMove;

El robot empieza de nuevo a moverse cuando se activa la entrada ready_input.


Ejemplo 2
...
MoveL p100, v100, z10, tool1;
StorePath;
p:= CRobT(\Tool:=tool1);
! New temporary movement
MoveL p1, v100, fine, tool1;
...
MoveL p, v100, fine, tool1;
RestoPath;
StartMove;
...

Tras volver a la posicin del paro p (en este ejemplo igual a p100), el robot est
empezando a moverse de nuevo en el nivel de trayectoria bsico.

Contina en la pgina siguiente


518

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.174 StartMove - Reanuda el movimiento del robot
Continuacin
Argumentos
StartMove [\AllMotionTasks]

[\AllMotionTasks]
Tipo de dato: switch
Reinicia el movimiento de todas las unidades mecnicas del sistema. El modificador
[\AllMotionTasks] slo puede usarse desde tareas de programa sin movimiento.
Ejecucin de programas
Cualquier proceso asociado al movimiento detenido se reanuda al mismo tiempo
que se reanuda el movimiento.
Para reiniciar una aplicacin MultiMove en el modo sincronizado coordinado,
StartMove debe ser ejecutado en todas las tareas de movimiento implicadas en
la coordinacin.
Con el modificador \AllMotionTasks, (slo permitido con las tareas de programa
sin movimiento), se reinician los movimientos de todas las unidades mecnicas
del sistema.
En un sistema bsico sin el modificador \AllMotionTasks, se reinician los
movimientos de las unidades mecnicas siguientes:

Siempre las unidades mecnicas de la tarea principal, independientemente


de qu tarea ejecute la instruccin StartMove.

En un sistema MultiMove sin el modificador \AllMotionTasks, se reinician los


movimientos de las unidades mecnicas siguientes:

Las unidades mecnicas de la tarea de movimiento que ejecute StartMove.

Las unidades mecnicas de la tarea de movimiento conectada a la tarea sin


movimiento en la que se ejecute StartMove. Adems, si las unidades
mecnicas se reinician en una tarea de movimiento conectada que pertenece
a un grupo de tarea coordinada sincronizada, las unidades mecnicas se
reinician en todas las tareas cooperativas.

Gestin de errores
Si el robot est demasiado alejado de la trayectoria (ms de 10 mm 20 grados)
para realizar el reinicio del movimiento interrumpido, la variable de sistema ERRNO
cambia a ERR_PATHDIST.
Si el robot se encuentra en espera en el momento en que se ejecuta StartMove,
la variable de sistema ERRNO cambia a ERR_STARTMOVE. ERR_STARTMOVE tambin
puede deberse a un paro de emergencia, si los tiempos son correctos.
Si la ejecucin del programa se detiene varias veces durante la recuperacin del
movimiento sobre la trayectoria con StartMove, la variable del sistema ERRNO
cambia a ERR_PROGSTOP
Si el robot se est moviendo en el momento en que se ejecuta StartMove, la
variable de sistema ERRNO cambia a ERR_ALRDY_MOVING.
Estos errores pueden ser gestionados en el gestor de errores:

En caso de ERR_PATHDIST, mueva el robot para acercarlo a la trayectoria


antes de intentar RETRY.
Contina en la pgina siguiente

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.174 StartMove - Reanuda el movimiento del robot
Continuacin

En caso de ERR_STARTMOVE, ERR_PROGSTOP o ERR_ALRDY_MOVING espere


unos instantes antes de intentar ejecutar RETRY.

Limitaciones
Slo se permite a una de las distintas tareas sin movimiento la realizacin de la
secuencia StopMove - StartMove respecto de alguna tarea de movimiento.
No es posible realizar ninguna recuperacin en caso de error si se ejecuta
StartMove dentro de cualquier gestor de errores.
Sintaxis
StartMove
[\AllMotionTasks];

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Detencin del movimiento

StopMove - Detiene el movimiento del robot en la pgina 548

Continuacin de un movimiento StartMoveRetry - Reanuda el movimiento y la ejecucin


del robot en la pgina 521
Ms ejemplos

StorePath - Almacena la trayectoria cuando se produce


una interrupcin en la pgina 555
RestoPath - Restablece la trayectoria despus de una interrupcin en la pgina 386

520

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.175 StartMoveRetry - Reanuda el movimiento y la ejecucin del robot

1.175 StartMoveRetry - Reanuda el movimiento y la ejecucin del robot


Utilizacin
StartMoveRetry se utiliza para reanudar el movimiento del robot y de los ejes
externos, junto con el proceso correspondiente, y reintenta la ejecucin desde un
gestor de ERROR.
Esta instruccin puede usarse en un gestor de ERROR de los tipos siguientes de
tareas de programa:

Tarea principal T_ROB1 de un sistema bsico

Cualquier tarea de movimiento de un sistema MultiMove

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
StartMoveRetry.
Ejemplo 1
VAR robtarget p_err;
...
MoveL p1\ID:=50, v1000, z30, tool1 \WObj:=stn1;
...
ERROR
IF ERRNO = ERR_PATH_STOP THEN
StorePath;
p_err := CRobT(\Tool:= tool1 \WObj:=wobj0);
! Fix the problem
MoveL p_err, v100, fine, tool1;
RestoPath;
StartMoveRetry;
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
rotacin).
Durante el movimiento hasta la posicin p1, el otro robot cooperativo sufre un
error de proceso, de forma que los movimientos sincronizados coordinados se
detienen. A continuacin, este robot sufre el error ERR_PATH_STOP y la ejecucin
se transfiere al gestor de ERROR.
En el gestor de ERROR, se hace lo siguiente:

StorePath almacena la trayectoria original, pasa a un nuevo nivel de


trayectoria y pone el sistema MultiMove en el modo independiente.

Si se producen problemas con el robot, se inician los movimientos en el


nuevo nivel de trayectoria.

Antes de RestoPath es necesario volver a la posicin del error.

RestoPath vuelve al nivel de trayectoria original y devuelve el sistema


MultiMove al modo sincronizado.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.175 StartMoveRetry - Reanuda el movimiento y la ejecucin del robot
Continuacin

StartMoveRetry reinicia el movimiento interrumpido y el proceso que est


en curso. Tambin devuelve la ejecucin para reanudar la ejecucin normal.

Ejecucin de programas
StartMoveRetry realiza la secuencia siguiente:

Movimiento de recuperacin de la trayectoria

Reinicio de los procesos asociados al movimiento detenido

Reanudacin del movimiento interrumpido

RETRY de la ejecucin del programa

StartMoveRetry hace lo mismo que StartMove y RETRY juntos, pero en una


operacin indivisible.
Slo se reanuda el movimiento en las unidades mecnicas de la tarea de programa
en la que se ejecute StartMoveRetry.
Limitaciones
Slo puede usarse en los gestores de ERROR de las tareas de movimiento.
En los sistemas MultiMove que ejecutan movimientos sincronizados coordinados,
es necesario seguir las reglas de programacin siguientes en el gestor de ERROR:

StartMoveRetry debe usarse en todas las tareas de programa cooperativas.

Si se necesita para un movimiento en cualquier gestor de ERROR, las


instrucciones StorePath ... RestoPath deben usarse en todas las tareas
de programa cooperativas.

El programa debe devolver el robot hasta la posicin del error antes de


ejecutar RestoPath, si el robot fue movido en el nivel de StorePath.

Gestin de errores
Si el robot est demasiado alejado de la trayectoria (ms de 10 mm 20 grados)
para realizar el reinicio del movimiento interrumpido, la variable de sistema ERRNO
cambia a ERR_PATHDIST.
Si el robot se encuentra en espera en el momento en que se ejecuta
StartMoveRetry, la variable de sistema ERRNO cambia a ERR_STARTMOVE.
Si la ejecucin del programa se detiene varias veces durante la recuperacin del
movimiento sobre la trayectoria con StartMoveRetry, la variable del sistema
ERRNO cambia a ERR_PROGSTOP.
Si el robot se est moviendo en el momento en que se ejecuta StartMoveRetry,
la variable de sistema ERRNO cambia a ERR_ALRDY_MOVING.
No es posible hacer ninguna recuperacin en el caso de estos errores, dado que
StartMoveRetry slo puede ejecutarse en un gestor de errores.
Sintaxis
StartMoveRetry ;

Contina en la pgina siguiente


522

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.175 StartMoveRetry - Reanuda el movimiento y la ejecucin del robot
Continuacin
Informacin relacionada
Para obtener ms informacin Consulte
sobre
Detencin del movimiento

StopMove - Detiene el movimiento del robot en la pgina 548

Continuacin de un movimiento StartMove - Reanuda el movimiento del robot en la pgina 518


Reanudacin de la ejecucin
despus de un error

RETRY - Reanuda la ejecucin despus de un error en


la pgina 388

Almacenamiento y restauracin StorePath - Almacena la trayectoria cuando se produce


de trayectorias
una interrupcin en la pgina 555
RestoPath - Restablece la trayectoria despus de una
interrupcin en la pgina 386

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.176 STCalib - Calibra una herramienta servo

1.176 STCalib - Calibra una herramienta servo


Utilizacin
STCalib se utiliza para calibrar la distancia entre dos puntas de una herramienta.
Resulta necesario despus de cambiar las puntas o cambiar de herramienta y se
recomienda despus de la realizacin de una rectificacin de las puntas o despus
de utilizar una herramienta durante cierto tiempo.
Atencin! La herramienta realiza dos movimientos de cierre y apertura durante
la calibracin. El primer movimiento de cierre se usa para detectar la posicin de
contacto de las puntas.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin STCalib.
Ejemplo 1
VAR num curr_tip_wear;
VAR num retval;
CONST num max_adjustment := 20;
STCalib gun1 \ToolChg;

Calibra una pistola servo despus de un cambio de herramienta. Se espera hasta


que la calibracin de la pistola haya finalizado, antes de continuar con la siguiente
instruccin de RAPID.
Ejemplo 2
STCalib gun1 \ToolChg \Conc;

Calibra una pistola servo despus de un cambio de herramienta. Continuar con la


siguiente instruccin de RAPID sin esperar a que finalice la calibracin
Ejemplo 3
STCalib gun1 \TipChg;

Calibra una pistola servo despus de un cambio de puntas.


Ejemplo 4
STCalib gun1 \TipWear \RetTipWear := curr_tip_wear;

Calibra una pistola servo cuando se han desgastado las puntas. Guarda el desgaste
de las puntas en la variable curr_tip_wear.
Ejemplo 5
STCalib gun1 \TipChg \RetPosAdj:=retval;
IF retval > max_adjustment THEN
TPWrite "The tips are lost!";
...

Calibra una pistola servo despus de un cambio de puntas. Comprueba si faltan


las puntas.
Ejemplo 6
STCalib gun1 \TipChg \PrePos:=10;

Contina en la pgina siguiente


524

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.176 STCalib - Calibra una herramienta servo
Continuacin
Calibra una pistola servo despus de un cambio de puntas. Se mueve rpidamente
hasta la posicin de 10 mm y empieza a buscar la posicin de contacto a una
velocidad menor.
Ejemplo 7
Ejemplo de combinacin no vlida:
STCalib gun1 \TipWear \RetTipWear := curr_tip_wear \Conc;

Realizar una calibracin de desgaste de puntas. Continuar con la siguiente


instruccin de RAPID sin esperar a que finalice la calibracin En este caso, el
parmetro curr_tip_wearno contendr ningn valor vlido, dado que se usa el
modificador \Conc (la siguiente instruccin de RAPID se ejecutar antes de que
finalice el proceso de calibracin).
Argumentos
STCalib ToolName [\ToolChg] | [\TipChg] | [\TipWear] [\RetTipWear]
[\RetPosAdj] [\PrePos] [\Conc]

ToolName
Tipo de dato: string
El nombre de la unidad mecnica.
[\ToolChg]
Tipo de dato: switch
Calibracin tras un cambio de herramienta.
[\TipChg]
Tipo de dato: switch
Calibracin tras un cambio de puntas.
[\TipWear]
Tipo de dato: switch
Calibracin tras el desgaste de las puntas.
[\RetTipWear]
Tipo de dato: num
El desgaste de puntas detectado [en mm].
[\RetPosAdj]
Tipo de dato: num
El ajuste de posicin desde la ltima calibracin [mm].
[\PrePos]
Tipo de dato: num
La posicin a la que moverse a alta velocidad antes de empezar la bsqueda de
la posicin de contacto a menor velocidad [en mm].
[\Conc]
Tipo de dato: switch

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.176 STCalib - Calibra una herramienta servo
Continuacin
Distintas instrucciones consecutivas se ejecutan mientras la pistola est en
movimiento. El argumento puede utilizarse para acortar el tiempo de ciclo. Esto
resulta til, por ejemplo, si se desea controlar dos pistolas al mismo tiempo.
Ejecucin de programas
Modos de calibracin
Si la unidad mecnica existe, se ordena la calibracin de la herramienta servo. La
calibracin se realiza de acuerdo con los modificadores. Consulte la informacin
que aparece ms abajo. Si se utiliza el parmetro RetTipWear, se actualiza el
valor de desgaste de las puntas.
Calibracin tras un cambio de herramienta:
La herramienta se cerrar a baja velocidad en espera de que el contacto de las
puntas se abra rpidamente, se cierre rpidamente con una fuerza reducida y se
vuelva a abrir en una secuencia. El desgaste de la punta permanece sin cambios.
Calibracin tras un cambio de puntas:
La herramienta se cerrar a baja velocidad en espera de que el contacto de las
puntas se abra rpidamente, se cierre rpidamente con una fuerza reducida y se
vuelva a abrir en una secuencia. El desgaste de la punta se restablecer.
Calibracin tras el desgaste de las puntas:
La herramienta se cerrar a alta velocidad hasta la posicin de contacto, se abre
rpidamente y se cierra rpidamente con una fuerza reducida y se vuelve a abrir
en una secuencia. El desgaste de la punta se actualiza.
ATENCIN! Si se usa el modificador Conc, la instruccin se considerar terminada
tan pronto como se inicia y por tanto el valor de retorno RetTipWear no estar
disponible. En este caso, el valor de RetTipWear ser devuelto por la funcin
STIsOpen. Para obtener ms detalles, consulte Funciones de sistema operativo
de RobotWare STIsOpen.
Ajuste de posicin
El argumento opcional RetPosAdj puede usarse para detectar si, por ejemplo,
las puntas se han perdido tras un cambio de puntas. El parmetro conserva el
valor del ajuste posicional desde la ltima calibracin. El valor puede ser negativo
o positivo.
Utilizacin de una posicin previa
Para acelerar la calibracin, es posible definir una posicin previa. Cuando
comienza la calibracin, el brazo de la pistola se mueve rpidamente hasta la
posicin previa, se detiene y contina lentamente *) para poder detectar la posicin
de contacto de la punta. Si utiliza una posicin previa, eljala cuidadosamente!
Es importante que las puntas no entren en contacto hasta despus de alcanzar
la posicin previa! De lo contrario, la exactitud de la calibracin ser insuficiente
y es posible que se produzcan errores de supervisin de movimientos. La posicin
previa no se tiene en cuenta si es mayor que la posicin actual de la pistola (para
no ralentizar la calibracin).
*) El segundo movimiento tambin ser rpido si se usa la opcin \TipWear.

Contina en la pgina siguiente


526

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.176 STCalib - Calibra una herramienta servo
Continuacin
Gestin de errores
Si el nombre especificado para la herramienta servo no corresponde a una
herramienta servo configurada, la variable de sistema ERRNO cambia a
ERR_NO_SGUN.
Si la pistola no est abierta al ejecutar STCalib, la variable de sistema ERRNO
cambia a ERR_SGUN_NOTOPEN.
Si la unidad mecnica de la herramienta servo no est activada, la variable de
sistema ERRNO cambia a ERR_SGUN_NOTACT. Utilice la instruccin ActUnit para
activar la herramienta servo.
Si la posicin de la herramienta servo no est inicializada, la variable de sistema
ERRNO cambia a ERR_SGUN_NOTINIT. Es necesario inicializar la posicin de la
herramienta servo la primera vez que se instala la pistola o despus de hacer una
calibracin fina. Utilice la rutina de servicio ManServiceCalib o realice una
calibracin de cambio de punta. El desgaste de la punta se restablecer.
Si las puntas de la herramienta servo no estn sincronizadas, la variable de sistema
ERRNO cambia a ERR_SGUN_NOTSYNC. Las puntas de la herramienta servo deben
estar sincronizadas si se ha perdido y/o actualizado el cuentarrevoluciones. No
se pierde ningn dato de proceso, por ejemplo el desgaste de las puntas.
Si la instruccin es ejecutada desde una tarea en segundo plano y se produce un
paro de emergencia, la instruccin ser finalizada y la variable de sistema ERRNO
cambia a ERR_SGUN_ESTOP. Recuerde que si la instruccin es ejecutada desde
la tarea principal, el puntero de programa se detiene en la instruccin y sta se
reinicia desde el principio al reiniciar el programa.
Si se especifica el argumento PrePos con un valor menor que cero, la variable de
sistema ERRNO cambia a ERR_SGUN_NEGVAL.
Si la instruccin es ejecutada desde una tarea en segundo plano y el sistema se
encuentra en el estado Motors OFF, la variable de sistema ERRNO cambia a
ERR_SGUN_MOTOFF.
Todos estos errores pueden ser gestionados en un gestor de errores de RAPID.
Sintaxis
STCalib
[ ToolName := ] < expression (IN) of string > ,
[ \ToolChg] | [\TipChg] | [ \TipWear]
[ \RetTipWear := < variable or persistent(INOUT) of num >
];
[ \RetPosAdj := < variable or persistent(INOUT) of num > ];
[ \PrePos := < expression (IN) of num > ]
[ \Conc ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Apertura de una herramienta servo

STOpen - Abre una herramienta servo en la pgina 546

Cierre de una herramienta servo

STClose - Cierra una herramienta servo en la


pgina 528

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.177 STClose - Cierra una herramienta servo

1.177 STClose - Cierra una herramienta servo


Utilizacin
STClose se utiliza para cerrar la herramienta servo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin STClose.
Ejemplo 1
VAR num curr_thickness1;
VAR num curr_thickness2;
STClose gun1, 1000, 5;

Cierra la pistola servo con una fuerza de punta de 1000 N y un grosor de plancha
de 5 mm. Se espera hasta que la pistola se haya cerrado, antes de continuar con
la siguiente instruccin de RAPID.
Ejemplo 2
STClose gun1, 2000, 3\RetThickness:=curr_thickness;

Cierra la pistola servo con una fuerza de punta de 2000 N y un grosor de plancha
de 3 mm. Almacena en la variable curr_thickness el grosor medido.
Ejemplo 3
Modo concurrente
STClose gun1, 1000, 5 \Conc;
STClose gun2, 2000, 3 \Conc;

Se cierra la pistola servo gun1 con una fuerza de puntas de 1000 N y un espesor
de plancha de 5 mm. Se contina la ejecucin del programa sin esperar al cierre
de gun1 y se cierra la pistola servo gun2 con una fuerza de puntas de 2000 N y
un espesor de chapa de 3 mm. La ejecucin del programa de RAPID contina sin
esperar a que se cierre la pistola gun2.
Ejemplo 4
IF STIsClosed (gun1)\RetThickness:=curr_thickness1 THEN
IF curr_thickness1 < 0.2 Set weld_start1;
ENDIF
IF STIsClosed (gun2)\RetThickness:=curr_thickness2 THEN
IF curr_thickness2 < 0.2 Set weld_start2;
ENDIF

Se obtiene el grosor medido en la funcin STIsClosed, variables


curr_thickness1 y curr_thickness2.
Ejemplo 5
Ejemplo de combinacin no vlida:
STClose gun1, 2000, 3\RetThickness:=curr_thickness \Conc;

Se cierra la pistola servo y se contina la ejecucin del programa de RAPID. En


este caso, el parmetro curr_thickness no contiene ningn valor vlido, dado
que se usa el modificador \Conc (la siguiente instruccin de RAPID empezar a
ejecutarse antes de que se cierre la pistola).
Contina en la pgina siguiente
528

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.177 STClose - Cierra una herramienta servo
Continuacin
Argumentos
STClose ToolName TipForce Thickness [\RetThickness][\Conc]

ToolName
Tipo de dato: string
El nombre de la unidad mecnica.
TipForce
Tipo de dato: num
La fuerza de punta deseada [N].
Thickness
Tipo de dato: num
La posicin de contacto esperada para la pistola servo [mm].
[\RetThickness]
Tipo de dato: num
El grosor obtenido [mm]. Slo obtendr un valor si no se utiliza el modificador
\Conc.
[\Conc]
Tipo de dato: switch
Distintas instrucciones consecutivas se ejecutan mientras la pistola est en
movimiento. El argumento puede utilizarse para acortar el tiempo de ciclo. Esto
resulta til, por ejemplo, si se desea controlar dos pistolas al mismo tiempo.
Ejecucin de programas
Si la unidad mecnica existe, se ordena el cierre de la herramienta servo con el
grosor y la fuerza esperados.
La operacin de cierre empieza a mover el brazo de la herramienta hasta la posicin
de contacto esperada (el grosor esperado). El movimiento se detiene en esta
posicin y se realiza un cambio del modo de control de posicin al modo de control
de fuerza.
El brazo de la herramienta se mueve a la velocidad y la aceleracin mximas y
est definido en los parmetros del sistema del eje externo correspondiente. En
cuanto a los movimientos de los dems ejes, se utiliza la velocidad reducida en
el modo manual.
Cuando se consigue la fuerza de punta deseada, la instruccin est preparada y
el grosor conseguido se devuelve si se ha especificado el argumento opcional
RetThickness.
NOTA! Si se usa el modificador Conc, la instruccin se considerar terminada
tan pronto como se inicia y por tanto el valor de retorno RetThickness no estar
disponible. En este caso, el valor de RetThickness ser devuelto por la funcin
STIsClosed. Para obtener ms detalles, consulte Funciones de sistema operativo
de RobotWare - STIsClosed.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.177 STClose - Cierra una herramienta servo
Continuacin
Es posible cerrar la herramienta durante un movimiento programado del robot,
siempre y cuando el movimiento del robot no incluya el movimiento del brazo de
la herramienta.
Para obtener ms detalles, consulte Control de movimiento de herramientas servo.
Gestin de errores
Si el nombre especificado para la herramienta servo no corresponde a una
herramienta servo configurada, la variable de sistema ERRNO cambia a
ERR_NO_SGUN.
Si la pistola no est abierta al ejecutar STClose, la variable de sistema ERRNO
cambia a ERR_SGUN_NOTOPEN.
Si la unidad mecnica de la herramienta servo no est activada, la variable de
sistema ERRNO cambia a ERR_SGUN_NOTACT. Utilice la instruccin ActUnit para
activar la herramienta servo.
Si la posicin de la herramienta servo no est inicializada, la variable de sistema
ERRNO cambia a ERR_SGUN_NOTINIT. Es necesario inicializar la posicin de la
herramienta servo la primera vez que se instala la pistola o despus de hacer una
calibracin fina. Utilice la rutina de servicio ManServiceCalib o realice una
calibracin de cambio de punta. El desgaste de la punta se restablecer.
Si las puntas de la herramienta servo no estn sincronizadas, la variable de sistema
ERRNO cambia a ERR_SGUN_NOTSYNC. Las puntas de la herramienta servo deben
estar sincronizadas si se ha perdido y/o actualizado el cuentarrevoluciones. No
se pierde ningn dato de proceso, por ejemplo el desgaste de las puntas.
Si la instruccin es ejecutada desde una tarea en segundo plano y se produce un
paro de emergencia, la instruccin ser finalizada y la variable de sistema ERRNO
cambia a ERR_SGUN_ESTOP. Recuerde que si la instruccin es ejecutada desde
la tarea principal, el puntero de programa se detiene en la instruccin y sta se
reinicia desde el principio al reiniciar el programa.
Si la instruccin es ejecutada desde una tarea en segundo plano y el sistema se
encuentra en el estado Motors OFF, la variable de sistema ERRNO cambia a
ERR_SGUN_MOTOFF.
Todos estos errores pueden ser gestionados en un gestor de errores de RAPID.
Sintaxis
STClose
[ ToolName := ] < expression (IN) of string > ,
[ Tipforce := ] < expression (IN) of num > ,
[ Thickness :=] < expression (IN) of num > ]
[\ RetThickness := < variable or persistent (INOUT) of num
> ]
[\Conc]

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Apertura de una herramienta servo

STOpen - Abre una herramienta servo en la pgina 546

530

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.178 StepBwdPath - Retrocede un paso a lo largo de la trayectoria

1.178 StepBwdPath - Retrocede un paso a lo largo de la trayectoria


Utilizacin
StepBwdPath se utiliza para hacer retroceder el TCP a lo largo de la trayectoria
del robot, a partir de una rutina de evento RESTART.
El usuario es el encargado de introducir un indicador de reinicio del proceso, de
forma que una instruccin StepBwdPath en una rutina de evento RESTART slo
se ejecute al reiniciar el proceso y no en el reinicio del programa.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin StepBwdPath.
Ejemplo 1
StepBwdPath 30, 1;

Se retrocede 30 mm en 1 segundo.
Argumentos
StepBwdPath StepLength StepTime

StepLength
Tipo de dato: num
Especifica la distancia en milmetros de retroceso en este paso. Este argumento
debe ser un valor positivo.
StepTime
Tipo de dato: num
Especifica el tiempo, en segundos, que requerir el movimiento. Este argumento
debe ser un valor positivo.
Ejecucin de programas
El robot retrocede la distancia especificada a lo largo de su trayectoria. La
trayectoria es exactamente la misma, aunque en orden inverso, que la que exista
antes de producirse el paro. En caso de un paro rpido o un paro de emergencia,
la llamada a la rutina de evento RESTART se realiza una vez completada la fase
de recuperacin, de forma que el robot se encuentre ya en su trayectoria cuando
se ejecuta esta instruccin.
La velocidad real de este movimiento es el valor que resulte menor de los
siguientes:

StepLength / StepTime

La velocidad programada en el segmento

250 mm/s

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.178 StepBwdPath - Retrocede un paso a lo largo de la trayectoria
Continuacin
Las propiedades siguientes son vlidas en Sistema MultiMove - Movimiento
sincronizado y coordinado:

Todas las unidades mecnicas implicadas retoceden simultneamente y de


forma coordinada.

Cada instruccin StepBwdPath ejecutada en cualquier tarea de programa


implicada da lugar a un nuevo paso de movimiento de retroceso (sin
necesidad de ninguna instruccin StartMove).

Para reiniciar y continuar los movimientos de proceso interrumpidos, debe


ejecutarse la instruccin StartMove en todas las tareas de programa
implicadas.

Limitaciones
Una vez detenido el programa, es posible retroceder a lo largo de la trayectoria
con las limitaciones siguientes:

El primer paso de los movimientos de StepBwdPath se reduce al segmento


actual del robot.

Los movimientos de StepBwdPath siguientes se reducen al segmento previo


al segmento anterior (es posible retroceder paso a paso dentro de dos
segmentos anteriores al segmento interrumpido).

Si se intenta un movimiento ms all de estos lmites, se llama al gestor de errores


con la variable de sistema ERRNO cambiada a ERR_BWDLIMIT.
Sintaxis
StepBwdPath
[ StepLength:= ] < expression (IN) of num >,
[ StepTime := ] < expression (IN) of num >;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Movimiento en general

Manual de referencia tcnica - Descripcin general de RAPID,


seccin Principios de movimiento y E/S

Instrucciones de posicionamiento

Manual de referencia tcnica - Descripcin general de RAPID,


seccin Resumen sobre RAPID - Movimiento

532

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.179 STIndGun - Pone la pistola en el modo independiente

1.179 STIndGun - Pone la pistola en el modo independiente


Utilizacin
STIndGun(Servo Tool independent gun) se usa para poner la pistola en el modo
independiente y mover a continuacin la pistola hasta una posicin independiente
especificada. La pistola permanece en el modo independiente hasta que se ejecuta
la instruccin STIndGunReset.
Durante el modo independiente, el control de la pistola se separa del control del
robot. Es posible cerrar, abrir y calibrar la pistola o moverla a una nueva posicin
independiente, pero no seguir los movimientos coordinados del robot.
El modo independiente resulta til si la pistola realiza una tarea que es
independiente de la tarea del robot, por ejemplo la rectificacin de puntas de una
pistola estacionaria.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin STIndGun.
Ejemplo 1
Este procedimiento puede ser ejecutado desde una tarea en segundo plano
mientras el robot de la tarea principal contina con otras instrucciones, por ejemplo
de movimiento.
PROC tipdress()
! Note that the gun will move to current robtarget position, if
! already in independent mode.
STIndGunReset gun1;
...
STIndGun gun1, 30;
StClose gun1, 1000, 5;
WaitTime 10;
STOpen gun1;
...
STIndGunReset gun1;
ENDPROC

Se activa el modo independiente y se mueve la pistola a una posicin independiente


(30 mm). Durante el modo independiente, las instrucciones StClose, WaitTime
y STOpen se ejecutan sin interferir en los movimientos del robot. La instruccin

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.179 STIndGun - Pone la pistola en el modo independiente
Continuacin
StIndGunReset desactiva el modo independiente de la pistola y la mueve a la
posicin del objetivo de robot actual.

posicin
independiente
p1

STIndGun gun1, 30

STClose gun1, 1000,5

30

STIndGunReset gun1
tiempo
StOpen gun1

xx0500002342_es

La posicin p1 depende de la posicin de la pistola indicada en el objetivo de robot


recin ejecutado por el robot.
Argumentos
STIndGun ToolName GunPos

ToolName
Tipo de dato: string
El nombre de la unidad mecnica.
GunPos
Tipo de dato: num
La posicin (recorrido) de la pistola servo en mm.
Sintaxis
STIndGun
[ ToolName := ] < expression (IN) of string > ,
[ GunPos := < expression (IN) of num > ];

534

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.180 STIndGunReset - Restablece el modo independiente de la pistola

1.180 STIndGunReset - Restablece el modo independiente de la pistola


Utilizacin
STIndGunReset (Servo Tool independent gun reset) se utiliza para restablecer
la pistola desde el modo independiente y mover a continuacin la pistola a la
posicin del objetivo de robot actual.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
STIndGunReset.
STIndGunReset gun1;

Argumentos
STIndGunReset ToolName

ToolName
Tipo de dato: string
El nombre de la unidad mecnica.
Ejecucin de programas
La instruccin restablece el modo independiente de la pistola y la mueve a la
posicin del objetivo de robot actual. Durante este movimiento, la velocidad
coordinada de la pistola debe ser cero. De lo contrario, se produce un error. La
velocidad coordinada ser cero si el robot est en reposo o si el movimiento actual
del robot incluye un movimiento cero de la pistola.
Sintaxis
STIndGunReset
[ToolName :=]<expression (IN) of string>;

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.181 SToolRotCalib - Calibracin del TCP y de la rotacin de una herramienta estacionaria

1.181 SToolRotCalib - Calibracin del TCP y de la rotacin de una herramienta


estacionaria
Utilizacin
SToolRotCalib (Stationary Tool Rotation Calibration) se utiliza para calibrar el
TCP y la rotacin de una herramienta estacionaria.
La posicin del robot y sus movimientos dependen siempre de su sistema de
coordenadas de herramienta, es decir, del TCP y de la orientacin de la
herramienta. Para conseguir la mxima exactitud, es importante definir con la
mayor correccin posible el sistema de coordenadas de la herramienta.
La calibracin tambin puede realizarse con un mtodo manual, utilizando el
FlexPendant (se describe en el Manual del operador - IRC5 con FlexPendant,
seccin Programacin y testing).
Descripcin
Para definir el TCP y la rotacin de una herramienta estacionaria, necesita una
herramienta apuntadora mvil montada en el elemento terminal del robot.
Antes de usar la instruccin SToolRotCalib, es necesario cumplir algunas
condiciones previas:

La herramienta estacionaria que se desea calibrar debe estar montada


estacionariamente y definida con el componente robhold (FALSE).

La herramienta apuntadora (robhold TRUE) debe estar definida y calibrada


con los valores de TCP correctos.

Si se utiliza el robot con una exactitud total, la carga y el centro de gravedad


de la herramienta apuntadora deben estar definidos. Es posible usar
LoadIdentify para la definicin de la carga.

Es necesario activar la herramienta apuntadora, wobj0 y PDispOff antes


de empezar los movimientos del robot.

Mueva el TCP de la herramienta apuntadora hasta el lugar ms cercano


posible del TCP de la herramienta estacionaria (origen del sistema de
coordenadas de la herramienta) y defina un robtarget para el punto de
referencia RefTip.

Mueva el robot sin cambiar la orientacin de la herramienta, de forma que


el TCP de la herramienta apuntadora apunte hacia algn punto del eje z
positivo del sistema de coordenadas de la herramienta y defina un
robtarget para el punto ZPos.

Mueva el robot sin cambiar la orientacin de la herramienta, de forma que


el TCP de la herramienta apuntadora apunte hacia algn punto del eje x
positivo del sistema de coordenadas de la herramienta y defina un
robtarget para el punto XPos.

Como ayuda para apuntar hacia el eje x y el eje x positivos, puede usarse algn
tipo de herramienta alargadora.

Contina en la pgina siguiente


536

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.181 SToolRotCalib - Calibracin del TCP y de la rotacin de una herramienta estacionaria
Continuacin
Definicin de robtargets RefTip, ZPos y XPos. Consulte la figura siguiente.
Herramienta apuntadora

Herramienta alargadora

ZPos
RefTip

x
XPos
Herramienta estacionaria

xx0500002343_es

Nota
No se recomienda modificar las posiciones de RefTip, ZPos y XPos en la
instruccin SToolRotCalib.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SToolRotCalib.
Ejemplo 1
! Created with pointing TCP pointing at the stationary tool
! coordinate system
CONST robtarget pos_tip := [...];
CONST robtarget pos_z := [...];
CONST robtarget pos_x := [...];
PERS tooldata tool1:= [ FALSE, [[0, 0, 0], [1, 0, 0 ,0]], [0, [0,
0, 0], [1, 0, 0, 0], 0, 0, 0]];
!Instructions for creating or ModPos of pos_tip, pos_z and pos_x
MoveJ pos_tip, v10, fine, point_tool;
MoveJ pos_z, v10, fine, point_tool;
MoveJ pos_x, v10, fine, point_tool;
SToolRotCalib pos_tip, pos_z, pos_x, tool1;

Se calcula y actualiza la posicin del TCP (tframe.trans) y la orientacin de la


herramienta (tframe.rot) de tool1 en el sistema de coordenadas mundo.
Argumentos
SToolRotCalib RefTip ZPos XPos Tool

RefTip
Tipo de dato: robtarget
El punto en el que el TCP de la herramienta apuntadora est apuntando hacia el
TCP de la herramienta estacionaria a calibrar.
ZPos
Tipo de dato: robtarget
El punto de alargador que define la direccin z positiva.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.181 SToolRotCalib - Calibracin del TCP y de la rotacin de una herramienta estacionaria
Continuacin
XPos
Tipo de dato: robtarget
El punto de alargador que define la direccin x positiva.
Tool
Tipo de dato: tooldata
La variable persistente de la herramienta a calibrar.
Ejecucin de programas
El sistema calcula y actualiza el TCP (tframe.trans) y la orientacin (tfame.rot)
de la herramienta en los datos tooldata especificados. El clculo se basa en
el robtarget 3 especificado. El resto de datos de tooldata no se cambian.
Sintaxis
SToolRotCalib
[ RefTip :=
[ ZPos := ]
[ XPos := ]
[ Tool := ]

]
<
<
<

< expression (IN) of robtarget > ,


expression (IN) of robtarget > ,
expression (IN) of robtarget > ,
persistent (PERS) of tooldata > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Calibracin del TCP de una herramienta MToolTCPCalib - Calibracin del TCP de una
mvil
herramienta mvil en la pgina 294
Calibracin de la rotacin de una herra- MToolRotCalib - Calibracin de la rotacin de una
mienta mvil
herramienta mvil en la pgina 291
Calibracin del TCP de una herramienta MToolTCPCalib - Calibracin del TCP de una
fija
herramienta mvil en la pgina 294

538

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.182 SToolTCPCalib - Calibracin del TCP de una herramienta estacionaria

1.182 SToolTCPCalib - Calibracin del TCP de una herramienta estacionaria


Utilizacin
SToolTCPCalib (Stationary Tool TCP Calibration) ) se usa para calibrar el TCP
(punto central de la herramienta) de una herramienta estacionaria.
La posicin del robot y sus movimientos dependen siempre de su sistema de
coordenadas de herramienta, es decir, del TCP y de la orientacin de la
herramienta. Para conseguir la mxima exactitud, es importante definir con la
mayor correccin posible el sistema de coordenadas de la herramienta.
La calibracin tambin puede realizarse con un mtodo manual, utilizando el
FlexPendant (se describe en el Manual del operador - IRC5 con FlexPendant,
seccin Programacin y testing).
Descripcin
Para definir el TCP de una herramienta estacionaria, necesita una herramienta
apuntadora mvil montada en el elemento terminal del robot.
Antes de usar la instruccin SToolTCPCalib, es necesario cumplir algunas
condiciones previas:

La herramienta estacionaria que se desea calibrar debe estar montada


estacionariamente y definida con el componente robhold (FALSE).

La herramienta apuntadora (robhold TRUE) debe estar definida y calibrada


con los valores de TCP correctos.

Si se utiliza el robot con una exactitud total, la carga y el centro de gravedad


de la herramienta apuntadora deben estar definidos. Es posible usar
LoadIdentify para la definicin de la carga.

Es necesario activar la herramienta apuntadora, wobj0 y PDispOff antes


de empezar los movimientos del robot.

Mueva el TCP de la herramienta apuntadora lo ms cerca posible del TCP


de la herramienta estacionaria y defina un robtarget para el primer punto
p1.

Defina las tres posiciones adicionales, p2, p3 y p4, todas con orientaciones
diferentes.

Se recomienda que el TCP apunte hacia fuera con distintas orientaciones


para obtener un resultado estadstico fiable. Sin embargo, no es
imprescindible.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.182 SToolTCPCalib - Calibracin del TCP de una herramienta estacionaria
Continuacin
Definicin de 4 robtargets, de p1 a p4. Consulte la figura siguiente.
Herramienta apuntadora

4
2

Herramienta estacionaria

xx0500002344_es

Nota
No se recomienda modificar las posiciones de Pos1 a Pos4 en la instruccin
SToolTCPCalib.
La reorientacin entre las 4 posiciones debe ser la mayor posible, poniendo el
robot en configuraciones diferentes. Tambin resulta adecuado comprobar la
calidad del TCP antes de una calibracin. Esto puede realizarse reorientando la
herramienta y comprobando si el TCP permanece en la misma posicin.
Ejemplo bsico
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SToolTCPCalib.
Ejemplo 1
! Created with pointing TCP pointing at the stationary TCP
CONST robtarget p1 := [...];
CONST robtarget p2 := [...];
CONST robtarget p3 := [...];
CONST robtarget p4 := [...];
PERS tooldata tool1:= [ FALSE, [[0, 0, 0], [1, 0, 0 ,0]], [0,001,
[0, 0, 0.001], [1, 0, 0, 0], 0, 0, 0]];
VAR num max_err;
VAR num mean_err;
! Instructions for creating or ModPos of p1 - p4
MoveJ p1, v10, fine, point_tool;
MoveJ p2, v10, fine, point_tool;
MoveJ p3, v10, fine, point_tool;
MoveJ p4, v10, fine, point_tool;
SToolTCPCalib p1, p2, p3, p4, tool1, max_err, mean_err;

Se calibra y actualiza el valor del TCP (tframe.trans) de tool1. max_err y


mean_err contendrn el error mximo en mm a partir del TCP calculado y el error
medio en mm a partir del TCP calculado, respectivamente.

Contina en la pgina siguiente


540

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.182 SToolTCPCalib - Calibracin del TCP de una herramienta estacionaria
Continuacin
Argumentos
SToolTCPCalib Pos1 Pos2 Pos3 Pos4 Tool MaxErr MeanErr

Pos1
Tipo de dato: robtarget
El primer punto de aproximacin.
Pos2
Tipo de dato: robtarget
El segundo punto de aproximacin.
Pos3
Tipo de dato: robtarget
El tercer punto de aproximacin.
Pos4
Tipo de dato: robtarget
El cuarto punto de aproximacin.
Tool
Tipo de dato: tooldata
La variable persistente de la herramienta a calibrar.
MaxErr
Tipo de dato: num
El error mximo en mm para un punto de aproximacin.
MeanErr
Tipo de dato: num
La distancia media que separa los puntos de aproximacin del TCP calculado, es
decir, la exactitud con la que el robot se posicion respecto del TCP estacionario.
Ejecucin de programas
El sistema calcula y actualiza el valor del TCP en el sistema de coordenadas mundo
(tfame.trans) en el valor tooldata especificado. El clculo se basa en el
robtarget 4 especificado. El resto de datos de tooldata, como por ejemplo la
orientacin de la herramienta (tframe.rot) no cambia.
Sintaxis
SToolTCPCalib
[ Pos1 := ] < expression (IN) of robtarget > ,
[ Pos2 := ] < expression (IN) of robtarget > ,
[ Pos3 := ] < expression (IN) of robtarget > ,
[ Pos4 := ] < expression (IN) of robtarget > ,
[ Tool := ] < persistent (PERS) of tooldata > ,
[ MaxErr := ] < variable (VAR) of num > ,
[ MeanErr := ] < variable (VAR) of num > ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.182 SToolTCPCalib - Calibracin del TCP de una herramienta estacionaria
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Calibracin del TCP de una herramienta SToolTCPCalib - Calibracin del TCP de una hemvil
rramienta estacionaria en la pgina 539
Calibracin de la rotacin de una herra- MToolRotCalib - Calibracin de la rotacin de una
mienta mvil
herramienta mvil en la pgina 291
Calibracin del TCP y la rotacin de una SToolRotCalib - Calibracin del TCP y de la rotaherramienta fija
cin de una herramienta estacionaria en la pgina 536

542

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.183 Stop - Detiene la ejecucin del programa

1.183 Stop - Detiene la ejecucin del programa


Utilizacin
Stop se usa para detener la ejecucin del programa. Cualquier movimiento
realizado en ese momento se finalizar antes de que la instruccin Stop est lista.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin Stop.
Consulte tambin Ms ejemplos en la pgina 545.
Ejemplo 1
TPWrite "The line to the host computer is broken";
Stop;

La ejecucin del programa se detiene despus de escribir un mensaje en el


FlexPendant.
Argumentos
Stop [ \NoRegain ] | [ \AllMoveTasks ]

[ \NoRegain ]
Tipo de dato: switch
Especifica si la unidad mecnica afectada debe regresar a la posicin de paro la
siguiente vez que se reanude el programa.
Si se usa el argumento \NoRegain, ni los ejes del robot ni los ejes externos
regresan a la posicin de paro (si han sido alejados de esa posicin).
Si se omite el argumento y los ejes del robot o los ejes externos han sido alejados
de la posicin de paro, el robot muestra una pregunta en el FlexPendant. A
continuacin, el usuario puede decidir si el robot debe regresar a la posicin de
paro.
[ \AllMoveTasks ]
Tipo de dato: switch
Especifica que deben detenerse los programas de todas las tareas normales en
funcionamiento, excepto la tarea actual.
Si se omite el argumento, slo se detiene el programa de la tarea en la que se
ejecuta la instruccin.
Ejecucin de programas
La instruccin detiene la ejecucin del programa cuando las unidades mecnicas
afectadas de la tarea de movimiento actual alcanzan la velocidad cero para el
movimiento que est realizando en cada momento y se detienen. Posteriormente
es posible reanudar la ejecucin del programa a partir de la instruccin siguiente.
Si la instruccin se usa sin ningn modificador, slo se ver afectado el programa
de dicha tarea.
Si se usa el modificador AllMoveTasks en una tarea (de tipo normal, esttica o
semiesttica), se detendrn tanto el programa de dicha tarea como todas las tareas
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.183 Stop - Detiene la ejecucin del programa
Continuacin
de tipo normal. Para obtener ms informacin sobre la declaracin de tareas,
consulte la documentacin sobre los parmetros del sistema.
El modificador NoRegain slo puede usarse en las tareas de movimiento, dado
que slo afecta a la trayectoria del movimiento.
Si hay una instruccin Stop en alguna rutina de evento, la ejecucin de la rutina
se detiene y la ejecucin contina como se describe en la TABLA 1.
Si hay una instruccin Stop\AllMoveTasks en alguna rutina de evento de un
sistema MultiMove, la tarea que contiene la instruccin contina de la forma
descrita en la TABLA 1 y todas las dems tareas de movimiento que estn
ejecutando una rutina de evento continan de la forma descrita en la TABLA 2
(con el mismo efecto que un paro de programa normal durante la ejecucin de la
rutina de evento).
TABLA 1
Rutinas de evento

Efecto de la instruccin Stop

POWER ON

La ejecucin se detiene. Las rutinas de evento


STOP se ejecutan. La ejecucin no contina
en la rutina de eventos en el siguiente inicio
solicitado.

START

La ejecucin se detiene. Se ejecutan las rutinas de evento STOP. La ejecucin no contina en la rutina de eventos en el siguiente
inicio solicitado.

RESTART

La ejecucin se detiene. Se ejecutan las rutinas de evento STOP. La ejecucin no contina


en la rutina de eventos en el siguiente inicio
solicitado.

STOP

La ejecucin se detiene. No se ejecutan otras


rutinas de evento. La ejecucin no contina
en la rutina de eventos en el siguiente inicio
solicitado.

QSTOP

La ejecucin se detiene. Se ejecutan las rutinas de evento STOP. La ejecucin no contina


en la rutina de eventos en el siguiente inicio
solicitado.

RESET

La ejecucin se detiene. Se ejecutan las rutinas de evento STOP. La ejecucin no contina


en la rutina de eventos en el siguiente inicio
solicitado.

TABLA 2
Rutinas de evento

Efecto de Stop \AllMoveTasks

POWER ON

La rutina de evento POWER ON completa su


ejecucin. No se ejecuta ninguna rutina de
evento STOP.

START

La ejecucin se detiene y contina en el siguiente inicio solicitado. No se ejecuta ninguna


rutina de evento STOP .

RESTART

La ejecucin se detiene y contina en el siguiente inicio solicitado. No se ejecuta ninguna


rutina de evento STOP.

Contina en la pgina siguiente


544

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.183 Stop - Detiene la ejecucin del programa
Continuacin
TABLA 2
Rutinas de evento

Efecto de Stop \AllMoveTasks

STOP

La rutina de evento STOP completa su ejecucin.

QSTOP

La rutina de evento QSTOP completa su ejecucin.

RESET

La ejecucin se detiene y contina en el siguiente inicio solicitado. No se ejecuta ninguna


rutina de evento STOP.

Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin Stop.
Ejemplo 1
MoveL p1, v500, fine, tool1;
TPWrite "Jog the robot to the position for pallet corner 1";
Stop \NoRegain;
p1_read := CRobT(\Tool:=tool1 \WObj:=wobj0);
MoveL p2, v500, z50, tool1;

La ejecucin del programa se detiene cuando el robot se encuentra en el punto


p1. El operador mueve el robot hasta p1_read. En el siguiente inicio de programa,
el robot no vuelve a p1,, de forma que la posicin p1_read pueda almacenarse
en el programa.
Sintaxis
Stop
[ \ NoRegain ]|
[ \ AllMoveTasks ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Finalizacin de la ejecucin del programa EXIT - Finaliza la ejecucin del programa en


la pgina 109
Paro de los movimientos del robot nicamen- StopMove - Detiene el movimiento del robot
te
en la pgina 548
Detencin del programa para depuracin

Break - Interrumpe la ejecucin del programa


en la pgina 34

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.184 STOpen - Abre una herramienta servo

1.184 STOpen - Abre una herramienta servo


Utilizacin
STOpen se utiliza para abrir la herramienta servo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin STOpen.
Ejemplo 1
STOpen gun1;

Abre la herramienta servo gun1. Se espera hasta que la pistola se haya abierto,
antes de continuar con la siguiente instruccin de RAPID.
Ejemplo 2
STOpen gun1 \Conc;

Abre la herramienta servo gun1. Se contina con la siguiente instruccin de RAPID


sin esperar a que se abra la pistola.
Ejemplo 3
STOpen "SERVOGUN"\WaitZeroSpeed;

Se detiene la herramienta servo SERVOGUN, se espera hasta que finalice el


movimiento coordinado y se abre a continuacin la herramienta servo SERVOGUN.
Argumentos
STOpen ToolName

ToolName
Tipo de dato: string
El nombre de la unidad mecnica.
[\WaitZeroSpeed]
Tipo de dato: switch
Se detiene la herramienta servo, se espera hasta que finalice el movimiento
coordinado y se abre a continuacin la herramienta servo.
[\Conc]
Tipo de dato: switch
Distintas instrucciones consecutivas se ejecutan mientras la pistola est en
movimiento. El argumento puede utilizarse para acortar el tiempo de ciclo. Esto
resulta til, por ejemplo, si se desea controlar dos pistolas al mismo tiempo.
Ejecucin de programas
Si la unidad mecnica existe, se ordena la apertura de la herramienta servo. La
fuerza de la punta se reduce a cero y el brazo de la herramienta es devuelto a la
posicin anterior al cierre.
El brazo de la herramienta se mueve a la velocidad y la aceleracin mximas y
est definido en los parmetros del sistema del eje externo correspondiente. En
cuanto a los movimientos de los dems ejes, se utiliza la velocidad reducida en
el modo manual.
Contina en la pgina siguiente
546

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.184 STOpen - Abre una herramienta servo
Continuacin
Es posible abrir la herramienta durante un movimiento programado del robot,
siempre y cuando el movimiento del robot no incluya el movimiento del brazo de
la herramienta. Si la herramienta se abre durante este movimiento, aparecer el
error 50251 Tool opening failed. Puede usarse el modificador
WaitZeroSpeed para reducir el riesgo de que este error se produzca.
Si se usa el modificador Conc, la instruccin se considerar como ejecutada antes
de que se abra la herramienta servo. Se recomienda usar la funcin STIsOpen a
continuacin de STOpen para evitar problemas en el modo concurrente.
Para obtener ms detalles, consulte Control de movimiento de herramientas servo.
Gestin de errores
Si el nombre especificado para la herramienta servo no corresponde a una
herramienta servo configurada, la variable de sistema ERRNO cambia a
ERR_NO_SGUN.
Si la unidad mecnica de la herramienta servo no est activada, la variable de
sistema ERRNO cambia a ERR_SGUN_NOTACT. Utilice la instruccin ActUnit para
activar la herramienta servo.
Si la posicin de la herramienta servo no est inicializada, la variable de sistema
ERRNO cambia a ERR_SGUN_NOTINIT. Es necesario inicializar la posicin de la
herramienta servo la primera vez que se instala la pistola o despus de hacer una
calibracin fina. Utilice la rutina de servicio ManServiceCalib o realice una
calibracin de cambio de punta. El desgaste de la punta se restablecer.
Si las puntas de la herramienta servo no estn sincronizadas, la variable de sistema
ERRNO cambia a ERR_SGUN_NOTSYNC. Las puntas de la herramienta servo deben
estar sincronizadas si se ha perdido y/o actualizado el cuentarrevoluciones. No
se pierde ningn dato de proceso, por ejemplo el desgaste de las puntas.
Todos estos errores pueden ser gestionados en un gestor de errores de RAPID.
Nota
Si la instruccin es ejecutada desde una tarea en segundo plano y se produce
un paro de emergencia, la instruccin ser finalizada sin ningn error.
Sintaxis
STOpen
[ ToolName := ] < expression (IN) of string > ,
[ \WaitZeroSpeed] ,
[\Conc]

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Cierre de una herramienta servo

STClose - Cierra una herramienta servo en la


pgina 528

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.185 StopMove - Detiene el movimiento del robot

1.185 StopMove - Detiene el movimiento del robot


Utilizacin
StopMove se utiliza para detener temporalmente los movimientos de los ejes del
robot y los ejes externos y cualquier proceso asociado. Si se ejecuta la instruccin
StartMove, el movimiento y el proceso se reanudan.
Por ejemplo, esta instruccin puede usarse en una rutina TRAP para parar
temporalmente el robot cuando se produce una interrupcin.
En el sistema bsico, es posible utilizar esta instruccin en el tipo siguiente de
tareas de programa:

Tarea T_ROB1, para la detencin del movimiento en esa tarea.

Cualquier otra tarea, para la detencin del movimiento en la tarea main.

En los sistemas MultiMove, es posible utilizar esta instruccin en el tipo siguiente


de tareas de programa:

Tarea de movimiento, para la detencin del movimiento en esa tarea.

Tarea sin movimiento, para la detencin del movimiento en la tarea de


movimiento conectada Adems, si el movimiento se detiene en una tarea
de movimiento que pertenece a un grupo de tarea coordinada sincronizada,
el movimiento se detiene en todas las tareas cooperativas.

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin StopMove.
Consulte tambin Ms ejemplos en la pgina 550.
Ejemplo 1
StopMove;
WaitDI ready_input, 1;
StartMove;

El movimiento del robot se detiene hasta que se activa la entrada ready_input.


Argumentos
StopMove [\Quick] [\AllMotionTasks]

[\Quick]
Tipo de dato: switch
Detiene el robot lo antes posible, sin abandonar la trayectoria.
Si no se utiliza el parmetro opcional \Quick, el robot se detiene en su trayectoria,
pero la distancia de frenado es mayor (igual que con un paro de programa normal).
[\AllMotionTasks]
Tipo de dato: switch
Detiene el movimiento de todas las unidades mecnicas del sistema. El modificador
[\AllMotionTasks] slo puede usarse desde tareas de programa sin movimiento.

Contina en la pgina siguiente


548

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.185 StopMove - Detiene el movimiento del robot
Continuacin
Ejecucin de programas
Los movimientos de los ejes del robot y de los ejes externos se detienen sin aplicar
los frenos. Cualquier proceso asociado con el movimiento en curso se detiene al
mismo tiempo que se detiene el movimiento.
La ejecucin del programa contina tras esperar a que se detengan los ejes del
robot ni los ejes externos (en reposo).
Con el modificador \AllMotionTasks, (slo permitido con las tareas de programa
sin movimiento), se detienen los movimientos de todas las unidades mecnicas
del sistema.
En un sistema base sin el modificador \AllMotionTasks, se detienen los
movimientos de las unidades mecnicas siguientes:

Siempre las unidades mecnicas de la tarea principal, independientemente


de qu tarea ejecute la instruccin StopMove.

En un sistema MultiMove sin el modificador \AllMotionTasks, se detienen los


movimientos de las unidades mecnicas siguientes:

Las unidades mecnicas de la tarea de movimiento que ejecute StopMove.

Las unidades mecnicas de la tarea de movimiento conectada a la tarea sin


movimiento en la que se ejecute StopMove. Adems, si las unidades
mecnicas se detienen en una tarea de movimiento conectada que pertenece
a un grupo de tarea coordinada sincronizada, las unidades mecnicas se
detienen en todas las tareas cooperativas.

El estado StopMove de la tarea de movimiento, generado por la propia tarea de


movimiento, se restablece automticamente al reiniciar la tarea desde el principio.
El estado StopMove de la tarea de movimiento conectado, generado por alguna
tarea sin movimiento, se restablece automticamente.

En el caso de una tarea normal sin movimiento, al iniciar la tarea desde el


principio.

En el caso de una tarea semiesttica sin movimiento, al reiniciar tras una


cada de alimentacin si la tarea se inicia desde el principio.

En el caso de una tarea esttica sin movimiento, al iniciar la installation si


la tarea se inicia desde el principio.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.185 StopMove - Detiene el movimiento del robot
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin StopMove.
Ejemplo 1
VAR intnum intno1;
...
PROC main()
...
CONNECT intno1 WITH go_to_home_pos;
ISignalDI di1,1,intno1;
TRAP go_to_home_pos
VAR robtarget p10;
StopMove;
StorePath;
p10:=CRobT(\Tool:=tool1 \WObj:=wobj0);
MoveL home,v500,fine,tool1;
WaitDI di1,0;
Move L p10,v500,fine,tool1;
RestoPath;
StartMove;
ENDTRAP

Cuando se asigna el valor 1 a la entrada di1, se activa una interrupcin que activa
a su vez la rutina de interrupcin go_to_home_pos. El movimiento actual se
detiene y el robot pasa a moverse hacia la posicin home. Cuando se cambia a 0
la seal di1, el robot vuelve a la posicin en la cual se produjo la interrupcin y
sigue movindose a lo largo de la trayectoria programada.
Ejemplo 2
VAR intnum intno1;
...
PROC main()
CONNECT intno1 WITH go_to_home_pos;
ISignalDI di1,1,intno1;
...
TRAP go_to_home_pos ()
VAR robtarget p10;
StorePath;
p10:=CRobT(\Tool:=tool1 \WObj:=wobj0);
MoveL home,v500,fine,tool1;
WaitDI di1,0;
MoveL p10,v500,fine,tool1;
RestoPath;
StartMove;
ENDTRAP

Es similar al ejemplo anterior, pero el robot no se mueve hacia la posicin home


hasta que se completa la instruccin de movimiento actual.

Contina en la pgina siguiente


550

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.185 StopMove - Detiene el movimiento del robot
Continuacin
Limitaciones
Slo se permite a una de las distintas tareas sin movimiento la realizacin de la
secuencia StopMove - StartMove respecto de alguna tarea de movimiento.
Sintaxis
StopMove
[\Quick]
[\AllMotionTasks];

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Continuacin de un movimiento

StartMove - Reanuda el movimiento del robot en la


pgina 518
StartMoveRetry - Reanuda el movimiento y la ejecucin del robot en la pgina 521

Almacenamiento y restauracin de StorePath - Almacena la trayectoria cuando se produtrayectorias


ce una interrupcin en la pgina 555
RestoPath - Restablece la trayectoria despus de una
interrupcin en la pgina 386

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.186 StopMoveReset - Restablece el estado de movimiento de paro de sistema

1.186 StopMoveReset - Restablece el estado de movimiento de paro de sistema


Utilizacin
StopMoveReset se usa para restablecer el estado de movimiento de paro de
sistema, sin iniciar ningn movimiento.
Los errores de movimiento elevados asncronamente, como ERR_PATH_STOP o
un error de proceso especfico durante el movimiento, pueden gestionarse en el
gestor de ERROR. Cuando se produce un error de este tipo, los movimientos se
detienen inmediatamente y el indicador de movimiento de paro de sistema se
activa para las tareas de programa actuales. Esto significa que el movimiento no
se reinicia si se realiza cualquier reinicio de programa mientras el puntero de
programa est dentro del gestor de ERROR.
El reinicio de los movimientos tras un error de movimiento de este tipo tiene lugar
una vez realizada una de las acciones siguientes:

Ejecucin de StartMove o StartMoveRetry.

Ejecucin de StopMoveReset, con reanudacin del movimiento con el


siguiente inicio de programa.

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
StopMoveReset.
Ejemplo 1
...
ArcL p101, v100, seam1, weld1, weave1, z10, gun1;
...
ERROR
IF ERRNO=AW_WELD_ERR OR ERRNO=ERR_PATH_STOP THEN
! Execute something but without any restart of the movement
! ProgStop - ProgStart must be allowed
...
! No idea to try to recover from this error, so let the error
! stop the program
...
! Reset the move stop flag, so its possible to manual restart
! the program and the movement after that the program has
! stopped
StopMoveReset;
ENDIF
ENDPROC

Una vez que el gestor de ERROR mostrado anteriormente ha ejecutado ENDPROC,


la ejecucin del programa se detiene y el puntero se sita al comienzo de la
instruccin ArcL. El siguiente inicio de programa reinicia el programa y los
movimientos desde la posicin en la que se produjo el error de movimiento original.
Argumentos
StopMoveReset [\AllMotionTasks]

Contina en la pgina siguiente


552

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.186 StopMoveReset - Restablece el estado de movimiento de paro de sistema
Continuacin
[\AllMotionTasks]
Tipo de dato: switch
Restablece el estado de paro de movimiento del sistema en todas las unidades
mecnicas del sistema. El modificador [\AllMotionTasks] slo puede usarse
desde tareas de programa sin movimiento.
Ejecucin de programas
Para restablecer una aplicacin MultiMove en el modo sincronizado coordinado,
StopMoveReset debe ser ejecutado en todas las tareas de movimiento implicadas
en la coordinacin.
Con el modificador \AllMotionTasks (slo permitido con las tareas de programa
sin movimiento), el restablecimiento se realiza en todas las unidades mecnicas
del sistema.
En un sistema bsico sin el modificador \AllMotionTasks, el restablecimiento
siempre se realiza en la tarea main, independientemente de qu tarea ejecute la
instruccin StopMoveReset.
En el sistema bsico, es posible utilizar StopMoveReset en el tipo siguiente de
tareas de programa:

La tarea principal T_ROB1 para restablecer el estado de paro de movimiento


en esa tarea.

Cualquier otra tarea para restablecer el estado de paro de movimiento en la


tarea principal.

En el sistema MultiMove, es posible utilizar esta instruccin en el tipo siguiente


de tareas de programa:

Una tarea de movimiento para restablecer el estado de paro de movimiento


en esa tarea.

Una tarea sin movimiento para restablecer el estado de paro de movimiento


en la tarea de movimiento conectada. Adems, si el restablecimiento del
estado de paro de movimiento se realiza en una tarea de movimiento
conectada perteneciente a un grupo de tareas coordinadas sincronizadas,
el estado de paro de movimiento tambin se restablece en todas las tareas
cooperativas.

Sintaxis
StopMoveReset
[\AllMotionTasks];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Detencin del movimiento

StopMove - Detiene el movimiento del robot en


la pgina 548

Continuacin de un movimiento

StartMove - Reanuda el movimiento del robot en


la pgina 518
StartMoveRetry - Reanuda el movimiento y la
ejecucin del robot en la pgina 521

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.186 StopMoveReset - Restablece el estado de movimiento de paro de sistema
Continuacin
Para obtener ms informacin sobre

Consulte

Almacenamiento y restauracin de tra- StorePath - Almacena la trayectoria cuando se


yectorias
produce una interrupcin en la pgina 555
RestoPath - Restablece la trayectoria despus de
una interrupcin en la pgina 386

554

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.187 StorePath - Almacena la trayectoria cuando se produce una interrupcin

1.187 StorePath - Almacena la trayectoria cuando se produce una interrupcin


Utilizacin
StorePath se utiliza para almacenar la trayectoria de movimiento que se est
ejecutando, por ejemplo cuando se produce un error o una interrupcin. A
continuacin, el gestor de errores o la rutina TRAP pueden iniciar un nuevo
movimiento temporal y reiniciar por ltimo el movimiento original que se ha
almacenado previamente.
Por ejemplo, esta instruccin puede usarse para ir a una posicin de servicio o
limpiar una pistola cuando se produce un error.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin StorePath.
Consulte tambin Ms ejemplos en la pgina 556.
Ejemplo 1
StorePath;

Se almacena para un uso posterior la trayectoria de movimiento actual. Se cambia


el sistema al modo de movimiento independiente.
Ejemplo 2
StorePath \KeepSync;

Se almacena para un uso posterior la trayectoria de movimiento actual. Se mantiene


el modo de movimiento sincronizado.
Argumentos
StorePath [\KeepSync]

[\KeepSync]
Keep Synchronization
Tipo de dato: switch
Mantiene el modo de movimiento sincronizado tras la instruccin StorePath
\KeepSync. El modificador KeepSync slo puede usarse si el sistema se encuentra
en el modo de movimiento sincronizado antes de la llamada a StorePath
\KeepSync.
Sin el parmetro opcional \KeepSync, en un sistema MultiMove con movimiento
sincronizado, el sistema cambia al modo de movimiento independiente
semicoordinado. Tras la ejecucin de StorePath en todas las tareas implicadas,
el sistema se encuentra en el modo semicoordinado si se sigue usando el objeto
de trabajo coordinado. De lo contrario, se encuentra en el modo independiente.
En el modo semicoordinado, se recomienda empezar siempre con un movimiento
en la unidad mecnica que controla la base de coordenadas del usuario antes de
usar WaitSyncTask en todas las tareas implicadas.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.187 StorePath - Almacena la trayectoria cuando se produce una interrupcin
Continuacin
Ejecucin de programas
Se guarda la trayectoria actual de movimientos de los ejes del robot y los ejes
externos. Despus de esta operacin, es posible iniciar otro movimiento en una
rutina TRAP o un gestor de errores. Tras corregir el motivo del error o de la
interrupcin, es posible restaurar la trayectoria de movimientos guardada.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin StorePath.
Ejemplo 1
TRAP machine_ready
VAR robtarget p1;
StorePath;
p1 := CRobT();
MoveL p100, v100, fine, tool1;
...
MoveL p1, v100, fine, tool1;
RestoPath;
StartMove;
ENDTRAP

Cuando se produce una interrupcin que activa la rutina TRAP machine_ready,


la trayectoria de movimiento que est ejecutando el robot en ese momento se
detiene al final de la instruccin (ToPoint) y se almacena. A continuacin, el robot
soluciona la interrupcin, por ejemplo, sustituyendo una pieza de la mquina. A
continuacin, se reinicia el movimiento normal.
Limitaciones
Con la instruccin StorePath slo se almacenan los datos de la trayectoria de
movimiento.
Si el usuario desea solicitar movimientos en un nuevo nivel de trayectoria, es
necesario almacenar la posicin de paro directamente a continuacin de que
StorePath y de RestoPath hacen el movimiento hacia la posicin de paro
almacenada en la trayectoria.
Slo es posible tener almacenada una trayectoria de movimiento cada vez.
Sintaxis
StorePath
[\KeepSync];

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Restauracin de una trayectoria RestoPath - Restablece la trayectoria despus de una interrupcin en la pgina 386

Contina en la pgina siguiente


556

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.187 StorePath - Almacena la trayectoria cuando se produce una interrupcin
Continuacin
Para obtener ms informacin Consulte
sobre
Ms ejemplos

RestoPath - Restablece la trayectoria despus de una interrupcin en la pgina 386


PathRecStart - Inicia la grabadora de trayectorias en la
pgina 327
SyncMoveResume - Activa el modo de movimientos sincronizados coordinados en la pgina 578
SyncMoveSuspend - Activa el movimiento independientesemicoordinado en la pgina 580

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.188 STTune - Ajusta una herramienta servo

1.188 STTune - Ajusta una herramienta servo


Utilizacin
STTune se utiliza para ajustar/cambiar un parmetro de una herramienta servo.
Este parmetro se cambia temporalmente respecto del valor original, que se
configura en los parmetros del sistema. El nuevo valor ajustado se activa
inmediatamente tras la ejecucin de la instruccin.
STTune resulta til en los procedimientos de ajuste. Estos procedimientos de
ajuste suelen utilizarse para encontrar el valor ptimo de un parmetro. Un
experimento (por ejemplo la ejecucin de un programa con un movimiento de
herramienta servo) se repite al utilizar distintos valores de ajuste.
STTune no debe utilizarse durante la calibracin o el cierre de la herramienta.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin STTune.
Ejemplo 1
STTune SEOLO_RG, 0.050, CloseTimeAdjust;

El parmetro de herramienta servo CloseTimeAdjust se cambia temporalmente


a 0.050 segundos.
Argumentos
STTune MecUnit TuneValue Type

MecUnit
Tipo de dato: mecunit
El nombre de la unidad mecnica.
TuneValue
Tipo de dato: num
El nuevo valor de ajuste.
Type
Tipo de dato: tunegtype
El tipo de parmetro. Los parmetros de herramienta servo disponibles para el
ajuste son RampTorqRefOpen, RampTorqRefClose, KV, SpeedLimit,
CollAlarmTorq, CollContactPos, CollisionSpeed, CloseTimeAdjust,
ForceReadyDelayT, PostSyncTime, CalibTime, CalibForceLow,
CalibForceHigh. Estos tipos estn predefinidos en los parmetros del sistema
y constituyen los valores originales.
Descripcin
RampTorqRefOpen
Ajusta el parmetro del sistema Ramp when decrease force, que decide con
qu rapidez se libera la fuerza al abrir la herramienta. La unidad es Nm/s y su valor
tpico es 200.

Contina en la pgina siguiente


558

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.188 STTune - Ajusta una herramienta servo
Continuacin
Parmetro de sistema correspondiente: Tema Motion, tipo Force master, parmetro
ramp_torque_ref_opening.
RampTorqRefClose
Ajusta el parmetro del sistema Ramp when increase force, que decide con
qu rapidez se acumula la fuerza al abrir la herramienta. La unidad es Nm/s y su
valor tpico es 80.
Parmetro de sistema correspondiente: Tema Motion, tipo Force master, parmetro
ramp_torque_ref_closing.
KV
Ajusta el parmetro de sistema KV, que se utiliza para limitar la velocidad. La
unidad es Nms/rad y un valor tpico es 1. Para obtener ms detalles, consulte la
documentacin del eje externo.
Parmetro de sistema correspondiente: Tema Motion, tipo Force master, parmetro
Kv.
SpeedLimit
Ajusta el parmetro de sistema Speed limit, que se utiliza para limitar la
velocidad. La unidad es rad/s (la velocidad del motor) y un valor tpico es 60. Para
obtener ms detalles, consulte la documentacin del eje externo.
Parmetro de sistema correspondiente: Tema Motion, tipo Force master, parmetro
speed_limit.
CollAlarmTorq
Ajusta el parmetro de sistema Collision alarm torque, que se utiliza para
la calibracin automtica de nuevas puntas. La unidad es Nm (par del motor) y un
valor tpico es 1. Para obtener ms detalles, consulte la documentacin del eje
externo.
Parmetro de sistema correspondiente: Tema Motion, tipo Force master, parmetro
alarm_torque.
CollContactPos
Ajusta el parmetro de sistema Collision delta pos, que se utiliza para la
calibracin automtica de nuevas puntas. La unidad es m y un valor tpico es 0,002.
Para obtener ms detalles, consulte la documentacin del eje externo.
Parmetro de sistema correspondiente: Tema Motion, tipo Force master, parmetro
distance_to_contact_position.
CollisionSpeed
Ajusta el parmetro de sistema Collision speed, que se utiliza para la calibracin
automtica de nuevas puntas. La unidad es m/s y un valor tpico es 0,02. Para
obtener ms detalles, consulte la documentacin del eje externo.
Parmetro de sistema correspondiente: Tema Motion, tipo Force master, parmetro
col_speed.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.188 STTune - Ajusta una herramienta servo
Continuacin
CloseTimeAdjust
El ajuste de tiempo constante (s), positivo o negativo, del momento en el que las
puntas de la herramienta establecen contacto durante el cierre de la herramienta.
Puede usarse para retrasar ligeramente el cierre cuando se utiliza el precierre
sincronizado durante las soldaduras.
Parmetro de sistema correspondiente: Tema Motion, tipo SG process, parmetro
min_close_time_adjust.
ForceReadyDelayT
Retardo de tiempo constante (s) antes del envo de la seal de soldadura preparada
despus de alcanzar la fuerza programada.
Parmetro de sistema correspondiente: Tema Motion, tipo SG process, parmetro
pre_sync_delay_time.
PostSyncTime
Anticipacin de tiempo de liberacin (s) del siguiente movimiento del robot tras
una soldadura. Este tipo de ajuste puede ajustarse para sincronizar la apertura de
la pistola con el siguiente movimiento del robot. La sincronizacin puede fallar si
los parmetros tienen valores demasiado elevados.
Parmetro de sistema correspondiente: Tema Motion, tipo SG process, parmetro
post_sync_time.
CalibTime
El tiempo de espera (s) durante la calibracin antes de que se realice la correccin
de posicin de la punta de la herramienta. Para obtener los mejores resultados,
no utilice un valor demasiado bajo, por ejemplo 0,5 s.
Parmetro de sistema correspondiente: Tema Motion, tipo SG process, parmetro
calib_time.
CalibForceLow
La fuerza mnima de la punta (N) utilizada durante una calibracin. Para obtener
los mejores resultados de deteccin de grosor, se recomienda utilizar la mnima
fuerza de soldadura programada.
Parmetro de sistema correspondiente: Tema Motion, tipo SG process, parmetro
calib_force_low.
CalibForceHigh
La fuerza mxima de la punta (N) utilizada durante una calibracin. Para obtener
los mejores resultados de deteccin de grosor, se recomienda utilizar la mxima
fuerza de soldadura programada.
Parmetro de sistema correspondiente: Tema Motion, tipo SG process, parmetro
calib_force_high.
Ejecucin de programas
El tipo de ajuste especificado y el valor de ajuste se activan para la unidad mecnica
especificada. Este valor se aplica a todos los movimientos hasta que se programa
un nuevo valor para la unidad mecnica actual o hasta que se restablecen los
tipos y valores de ajuste mediante la instruccin STTuneReset.
Contina en la pgina siguiente
560

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.188 STTune - Ajusta una herramienta servo
Continuacin
Los valores de ajuste originales pueden cambiarse para siempre en los parmetros
del sistema.
Los valores predeterminados de ajuste de la herramienta servo se establecen
automticamente en los casos siguientes:

Al ejecutar la instruccin STTuneReset.

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

Gestin de errores
Si el nombre especificado para la herramienta servo no corresponde a una
herramienta servo configurada, la variable de sistema ERRNO cambia a
ERR_NO_SGUN.
El error puede ser gestionado en un gestor de errores de RAPID.
Sintaxis
STTune
[ MecUnit := ] < variable (VAR) of mecunit > ,
[ TuneValue := ] < expression (IN) of num > ,
[ Type :=] < expression (IN) of tunegtype > ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Restablecimiento de parmetros de herra- TuneReset - Restablecimiento del ajuste del


mientas servo
servo en la pgina 682
Ajuste de herramientas servo

Application manual - Additional axes and stand


alone controller

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.189 STTuneReset - Restablece el ajuste de la herramienta servo

1.189 STTuneReset - Restablece el ajuste de la herramienta servo


Utilizacin
STTuneReset se utiliza para restablecer los valores originales de los parmetros
de la herramienta servo si han sido cambiados con la instruccin STTune.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin STTuneReset.
Ejemplo 1
STTuneReset SEOLO_RG;

Restablece los valores originales de los parmetros de la herramienta servo de la


unidad mecnica SEOLO_RG.
Argumentos
STTuneReset MecUnit

MecUnit
Tipo de dato: mecunit
El nombre de la unidad mecnica.
Ejecucin de programas
Se restablecen los parmetros originales de la herramienta servo.
Tambin se realiza en los casos siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

Gestin de errores
Si el nombre especificado para la herramienta servo no corresponde a una
herramienta servo configurada, la variable de sistema ERRNO cambia a
ERR_NO_SGUN.
El error puede ser gestionado en un gestor de errores de RAPID.
Sintaxis
STTuneReset
[ MecUnit := ] < variable (VAR) of mecunit > ,

Informacin relacionada
Para obtener ms informacin sobre Consulte
Ajuste de parmetros de herramientas STTune - Ajusta una herramienta servo en la pgiservo
na 558
Ajuste de parmetros de herramientas Application manual - Additional axes and stand
servo
alone controller

562

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.190 SyncMoveOff - Finaliza los movimientos sincronizados coordinados

1.190 SyncMoveOff - Finaliza los movimientos sincronizados coordinados


Utilizacin
SyncMoveOff se utiliza para finalizar una secuencia de movimientos sincronizados
y, en muchos casos, movimientos coordinados. En primer lugar, todas las tareas
de programa implicadas deben esperar la sincronizacin en un punto de paro, tras
lo cual los planificadores de movimientos de las tareas de programa implicadas
cambian al modo independiente.
La instruccin SyncMoveOff slo puede usarse en un sistema MultiMove que
tenga la opcin Coordinated Robots y slo en las tareas de programa definidas
como Motion Task.
AVISO!
Para conseguir un funcionamiento seguro de la sincronizacin, cada punto de
reunin (parmetro SyncID) debe tener un nombre exclusivo. El nombre del
punto de reunin tambin debe ser el mismo en todas las tareas de programa
que deban coincidir.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SyncMoveOff.
Consulte tambin Ms ejemplos en la pgina 565.
Ejemplo 1
!Program example in task T_ROB1
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync1;
VAR syncident sync2;
...
SyncMoveOn sync1, task_list;
...
SyncMoveOff sync2;
...
!Program example in task T_ROB2
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync1;
VAR syncident sync2;
...
SyncMoveOn sync1, task_list;
...
SyncMoveOff sync2;
...

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.190 SyncMoveOff - Finaliza los movimientos sincronizados coordinados
Continuacin
La tarea de programa que llegue en primer lugar a SyncMoveOff con la identidad
sync2 espera hasta que la otras tareas lleguen a su SyncMoveOff con la misma
identidad sync2. En ese punto de sincronizacin sync2, los planificadores de
movimientos de las tareas de programa implicadas cambian al modo independiente.
A continuacin, tanto la tarea T_ROB1 como la tarea T_ROB2 prosiguen su
ejecucin.
Argumentos
SyncMoveOff SyncID [\TimeOut]

SyncID
Synchronization Identity
Tipo de dato: syncident
Variables que especifican el nombre del punto en el que se anula la sincronizacin
(reunin). El tipo de dato syncident es un tipo de dato sin valor. Slo se utiliza
como identificador para denominar el punto de anulacin de la sincronizacin.
La variable debe ser definida y tener un nombre igual en todas las tareas de
programa cooperantes. Se recomienda definir siempre la variable global en cada
tarea (VAR syncident ...).
[\TimeOut]
Tipo de dato: num
El tiempo mximo que debe esperarse hasta que las dems tareas de programa
lleguen hasta el punto de anulacin de la sincronizacin. El tiempo lmite se define
en segundos (resolucin 0,001 s).
Si el tiempo se agota antes de que todas las tareas de programa alcancen el punto
de anulacin de la sincronizacin, se llama al gestor de errores si lo hay, con el
cdigo de error ERR_SYNCMOVEOFF. Si no hay ningn gestor de errores, se detiene
la ejecucin.
Si se omite este argumento, la tarea de programa esperar de forma indefinida.
Ejecucin de programas
La tarea de programa que llegue en primer lugar a SyncMoveOff espera hasta
que todas las dems tareas especificadas alcancen SyncMoveOff con la misma
identidad SyncID. En ese punto de anulacin de la sincronizacin SyncID, el
planificador de movimientos de las tareas de programa implicadas cambia al modo
independiente. A continuacin, las tareas de programa implicadas prosiguen su
ejecucin.
Los planificadores de movimientos de las tareas de programa implicadas cambian
al modo no sincronizado. Esto significa lo siguiente:

Todas las tareas de programa de RAPID y todos los movimientos de estas


tareas vuelven a funcionar de forma independiente las unas de las otras.

Ninguna instruccin Move debe estar marcada con ningn nmero de ID.
Consulte la instruccin MoveL.

Es posible excluir las tareas de programa de las funciones de pruebas del panel
de seleccin de tareas del FlexPendant. Las instrucciones SyncMoveOn y
Contina en la pgina siguiente
564

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.190 SyncMoveOff - Finaliza los movimientos sincronizados coordinados
Continuacin
SyncMoveOff seguirn funcionando con el nmero reducido de tareas de
programa, incluso si slo es una tarea de programa.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin SyncMoveOff.
Ejemplo de movimiento sincronizado simple
!Program example in task T_ROB1
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PROC main()
...
MoveL p_zone, vmax, z50, tcp1;
WaitSyncTask sync1, task_list;
MoveL p_fine, v1000, fine, tcp1;
syncmove;
...
ENDPROC
PROC syncmove()
SyncMoveOn sync2, task_list;
MoveL * \ID:=10, v100, z10, tcp1 \WObj:= rob2_obj;
MoveL * \ID:=20, v100, fine, tcp1 \WObj:= rob2_obj;
SyncMoveOff sync3;
UNDO
SyncMoveUndo;
ENDPROC

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.190 SyncMoveOff - Finaliza los movimientos sincronizados coordinados
Continuacin
!Program example in task T_ROB2
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PROC main()
...
MoveL p_zone, vmax, z50, obj2;
WaitSyncTask sync1, task_list;
MoveL p_fine, v1000, fine, obj2;
syncmove;
...
ENDPROC
PROC syncmove()
SyncMoveOn sync2, task_list;
MoveL * \ID:=10, v100, z10, obj2;
MoveL * \ID:=20, v100, fine, obj2 ;
SyncMoveOff sync3;
UNDO
SyncMoveUndo;
ENDPROC

En primer lugar, las tareas de programa T_ROB1 y T_ROB2 esperan mutuamente


en WaitSyncTask con la identidad sync1, programada con una trayectoria de
esquina para los movimientos precedentes, con el fin de ahorrar tiempo de ciclo.
A continuacin, las tareas de programa esperan mutuamente en SyncMoveOn con
la identidad sync2, programada con un punto de paro necesario para los
movimientos precedentes. Despus, el planificador de movimientos de las tareas
de programa implicadas cambia al modo sincronizado.
A continuacin, T_ROB2 mueve obj2 a ID punto 10 y 20 en el sistema de
coordenadas mundo mientras T_ROB1 mueve tcp1 a ID punto 10 y 20 en el objeto
en movimiento obj2.
A continuacin, las tareas de programa esperan mutuamente en SyncMoveOff
con la identidad sync3, programada con un punto de paro necesario para los
movimientos precedentes. Despus, el planificador de movimientos de las tareas
de programa implicadas cambia al modo independiente.
Ejemplo con recuperacin de errores
!Program example with use of time-out function
VAR syncident sync3;
...
SyncMoveOff sync3 \TimeOut := 60;
...
ERROR
IF ERRNO = ERR_SYNCMOVEOFF THEN
RETRY;
ENDIF

Contina en la pgina siguiente


566

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.190 SyncMoveOff - Finaliza los movimientos sincronizados coordinados
Continuacin
La tarea de programa espera en la instruccin SyncMoveOff hasta que otra tarea
de programa alcance el mismo punto de sincronizacin sync3. Despus de esperar
en 60 segundos, se llama al gestor de errores con ERRNO cambiado al valor
ERR_SYNCMOVEOFF. A continuacin, se llama de nuevo a la instruccin
SyncMoveOff para una espera adicional en 60 segundos.
Ejemplo de movimiento semicoordinado y movimiento coordinado
!Example with semicoordinated and synchronized movement
!Program example in task T_ROB1
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
PERS wobjdata rob2_obj:= [FALSE,FALSE,"ROB_2",
[[0,0,0],[1,0,0,0]],[[155.241,-51.5938,57.6297],
[0.493981,0.506191,-0.501597,0.49815]]];
VAR syncident sync0;
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
VAR syncident sync4;
PROC main()
...
WaitSyncTask sync0, task_list;
MoveL p1_90, v100, fine, tcp1 \WObj:= rob2_obj;
WaitSyncTask sync1, task_list;
SyncMoveOn sync2, task_list;
MoveL p1_100 \ID:=10, v100, fine, tcp1 \WObj:= rob2_obj;
SyncMoveOff sync3;
!Wait until the movement has been finished in T_ROB2
WaitSyncTask sync3, task_list;
!Now a semicoordinated movement can be performed
MoveL p1_120, v100, z10, tcp1 \WObj:= rob2_obj;
MoveL p1_130, v100, fine, tcp1 \WObj:= rob2_obj;
WaitSyncTask sync4, task_list;
...
ENDPROC

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.190 SyncMoveOff - Finaliza los movimientos sincronizados coordinados
Continuacin
!Program example in task T_ROB2
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync0;
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
VAR syncident sync4;
PROC main()
...
MoveL p_fine, v1000, fine, tcp2;
WaitSyncTask sync0, task_list;
!Wait until the movement in T_ROB1 task is finished
WaitSyncTask sync1, task_list;
SyncMoveOn sync2, task_list;
MoveL p2_100 \ID:=10, v100, fine, tcp2;
SyncMoveOff sync3;
!The path has been removed at SyncMoveOff
!Perform a movement to wanted position for the object to make
the position available for other tasks
MoveL p2_100, v100, fine, tcp2;
WaitSyncTask sync3, task_list;
WaitSyncTask sync4, task_list;
MoveL p2_110, v100, z10, tcp2;
...
ENDPROC

Al cambiar entre el movimiento semicoordinado y el movimiento sincronizado, se


requiere una instruccin WaitSyncTask (si se utiliza la identidad sync1).
Al cambiar entre el movimiento sincronizado y el movimiento semicoordinado, la
tarea que mueve el objeto de trabajo (rob2_obj) debe moverse hasta la posicin
deseada. A continuacin se requiere WaitSyncTask (identidad sync3) para poder
realizar el movimiento semicoordinado.
Gestin de errores
Si se alcanza el tiempo lmite debido a que SyncMoveOff no concluye a tiempo,
la variable de sistema ERRNO cambia a ERR_SYNCMOVEOFF.
El error puede ser gestionado en el gestor ERROR.
Limitaciones
La instruccin SyncMoveOff slo puede ejecutarse si todos los robots implicados
estn detenidos en un punto de paro.
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
SyncMoveOff no puede ejecutarse en rutinas de RAPID que estn conectadas a
los siguientes eventos especiales del sistema: PowerOn, Stop, QStop, Restart,
Reset o Step.
Contina en la pgina siguiente
568

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.190 SyncMoveOff - Finaliza los movimientos sincronizados coordinados
Continuacin
Sintaxis
SyncMoveOff
[ SyncID := ] < variable (VAR) of syncident>
[ \TimeOut := < expression (IN) of num> ] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Especificacin de tareas de programa coope- tasks - Tareas de programa de RAPID en la


rativas
pgina 1298
Identidad para punto de sincronizacin

syncident - Identidad de punto de sincronizacin en la pgina 1293

Inicio de movimientos sincronizados coordi- SyncMoveOn - Inicia los movimientos sincronados


nizados coordinados en la pgina 570
Definicin de movimientos independientes SyncMoveUndo - Activa los movimientos independientes en la pgina 582
Comprobacin de si est activado el modo IsSyncMoveOn - Comprueba si el modo de
sincronizado
movimiento sincronizado est activado en la
pgina 955
MultiMove que tenga la opcin Coordinated Manual de aplicaciones - MultiMove
robots

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.191 SyncMoveOn - Inicia los movimientos sincronizados coordinados

1.191 SyncMoveOn - Inicia los movimientos sincronizados coordinados


Utilizacin
SyncMoveOn se utiliza para iniciar una secuencia de movimientos sincronizados,
en la mayora de los casos movimientos coordinados. En primer lugar, todas las
tareas de programa implicadas deben esperar la sincronizacin en un punto de
paro, tras lo cual el planificador de movimientos de las tareas de programa
implicadas cambian al modo sincronizado.
La instruccin SyncMoveOn slo puede usarse en un sistema MultiMove que tenga
la opcin Coordinated Robots y slo en las tareas de programa definidas como
Motion Task.
AVISO!
Para conseguir un funcionamiento seguro de la sincronizacin, cada punto de
reunin (parmetro SyncID) debe tener un nombre exclusivo. El nombre del
punto de reunin tambin debe ser el mismo en todas las tareas de programa
que deban coincidir en el punto de reunin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin SyncMoveOn.
Consulte tambin Ms ejemplos en la pgina 572.
Ejemplo 1
!Program example in task T_ROB1
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync1;
VAR syncident sync2;
...
SyncMoveOn sync1, task_list;
...
SyncMoveOff sync2;
...
!Program example in task T_ROB2
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync1;
VAR syncident sync2;
...
SyncMoveOn sync1, task_list;
...
SyncMoveOff sync2;
...

Contina en la pgina siguiente


570

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.191 SyncMoveOn - Inicia los movimientos sincronizados coordinados
Continuacin
La tarea de programa que llegue en primer lugar a SyncMoveOn con la identidad
sync1 espera hasta que la otras tareas lleguen a su SyncMoveOn con la misma
identidad sync1. En ese punto de sincronizacin sync1, el planificador de
movimientos de las tareas de programa implicadas cambia al modo sincronizado.
A continuacin, tanto la tarea T_ROB1 como la tarea T_ROB2 prosiguen su ejecucin
de forma sincronizada hasta que alcanzan la instruccin SyncMoveOff con la
misma identidad sync2.
Argumentos
SyncMoveOn SyncID TaskList [\TimeOut]

SyncID
Synchronization Identity
Tipo de dato:syncident
Una variable que especifica el nombre del punto de sincronizacin (reunin). El
tipo de dato syncident es de un tipo sin valor y slo se utiliza como un
identificador para asignar un nombre a la posicin de sincronizacin.
La variable debe ser definida y tener un nombre igual en todas las tareas de
programa cooperantes. Se recomienda definir siempre la variable global en cada
tarea (VAR syncident ...).
TaskList
Tipo de dato:tasks
Una variable persistente que especifica en una lista de tareas (matriz) el nombre
(string) de las tareas de programa que deben coincidir en el punto de
sincronizacin cuyo nombre se especifica en el argumento SyncID.
La variable persistente debe ser definida y tener un nombre igual y el mismo
contenido en todas las tareas de programa cooperantes. Se recomienda definir
siempre la variable global en el sistema (PERS tasks ...).
[\TimeOut]
Tipo de dato: num
El tiempo mximo que debe esperarse hasta que las dems tareas de programa
lleguen hasta el punto de sincronizacin. El tiempo lmite se define en segundos
(resolucin 0,001 s).
Si el tiempo se agota antes de que todas las tareas de programa alcancen el punto
de sincronizacin, se llama al gestor de errores si lo hay, con el cdigo de error
ERR_SYNCMOVEON. Si no hay ningn gestor de errores, se detiene la ejecucin.
Si se omite este argumento, la tarea de programa esperar de forma indefinida.
Ejecucin de programas
La tarea de programa que llegue en primer lugar a SyncMoveOn espera hasta que
todas las dems tareas especificadas alcancen sus instrucciones SyncMoveOn
con la misma identidad SyncID. En ese punto de sincronizacin SyncID, el
planificador de movimientos de las tareas de programa implicadas cambia al modo
sincronizado. A continuacin, las tareas de programa implicadas prosiguen su
ejecucin.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.191 SyncMoveOn - Inicia los movimientos sincronizados coordinados
Continuacin
Los planificadores de movimientos de las tareas de programa implicadas cambian
al modo sincronizado. Esto significa lo siguiente:

Cada instruccin de movimiento de cualquier tarea de programa de TaskList


funciona de forma sincronizada con instrucciones de movimiento en otras
tareas de programa de TaskList.

Todas las instrucciones de movimiento cooperativas se planifican e interpolan


con el mismo planificador de movimientos.

Todos los movimientos comienzan y terminan al mismo tiempo. El movimiento


que requiera el tiempo ms largo ser el que controle la velocidad, con una
velocidad reducida respecto del objeto de trabajo de los dems movimientos.

Todas las instrucciones de movimiento cooperativas deben estar marcadas


con el mismo nmero de ID. Consulte la instruccin MoveL.

Es posible excluir las tareas de programa de las funciones de pruebas del panel
de seleccin de tareas del FlexPendant. La instruccin SyncMoveOn seguir
funcionando con el nmero reducido de tareas de programa, incluso si slo es
una tarea de programa.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin SyncMoveOn.
Ejemplo 1
!Program example in task T_ROB1
PERS tasks task_list{2} := [["T_ROB1"], ["T_ROB2"]];
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PROC main()
...
MoveL p_zone, vmax, z50, tcp1;
WaitSyncTask sync1, task_list;
MoveL p_fine, v1000, fine, tcp1;
syncmove;
...
ENDPROC
PROC syncmove()
SyncMoveOn sync2, task_list;
MoveL * \ID:=10, v100, z10, tcp1 \WOBJ:= rob2_obj;
MoveL * \ID:=20, v100, fine, tcp1 \WOBJ:= rob2_obj;
SyncMoveOff sync3;
UNDO
SyncMoveUndo;
ENDPROC

Contina en la pgina siguiente


572

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.191 SyncMoveOn - Inicia los movimientos sincronizados coordinados
Continuacin
!Program example in task T_ROB2
PERS tasks task_list{2} := [["T_ROB1"], ["T_ROB2"]];
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PROC main()
...
MoveL p_zone, vmax, z50, obj2;
WaitSyncTask sync1, task_list;
MoveL p_fine, v1000, fine, obj2;
syncmove;
...
ENDPROC
PROC syncmove()
SyncMoveOn sync2, task_list;
MoveL * \ID:=10, v100, z10, obj2;
MoveL * \ID:=20, v100, fine, obj2;
SyncMoveOff sync3;
UNDO
SyncMoveUndo;
ENDPROC

En primer lugar, las tareas de programa T_ROB1 y T_ROB2 se esperan la una a la


otra en WaitSyncTask con la identidad sync1. Se programan con la trayectoria
de esquina para los movimientos precedentes con el fin de ahorrar tiempo de ciclo.
A continuacin, las tareas de programa se esperan la una a la otra en SyncMoveOn
con la identidad sync2. Se programan con un punto de paro necesario para los
movimientos precedentes. Despus, el planificador de movimientos de las tareas
de programa implicadas cambia al modo sincronizado.
A continuacin, T_ROB2 mueve obj2 a ID punto 10 y 20 en el sistema de
coordenadas mundo mientras que T_ROB1 muevetcp1 a ID punto 10 y 20 en el
objeto en movimiento obj2.
Ejemplo 2
!Program example with use of time-out function
VAR syncident sync3;
...
SyncMoveOn sync3, task_list \TimeOut :=60;
...
ERROR
IF ERRNO = ERR_SYNCMOVEON THEN
RETRY;
ENDIF

La tarea de programa espera en la instruccin SyncMoveOn hasta que la tarea de


programa T_ROB2 alcance el mismo punto de sincronizacin sync3. Despus de
esperar en 60 segundos, se llama al gestor de errores con ERRNO cambiado al

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.191 SyncMoveOn - Inicia los movimientos sincronizados coordinados
Continuacin
valor ERR_SYNCMOVEON. A continuacin, se llama de nuevo a la instruccin
SyncMoveOn para una espera adicional en 60 segundos.

Contina en la pgina siguiente


574

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.191 SyncMoveOn - Inicia los movimientos sincronizados coordinados
Continuacin
Ejemplo 3: Ejemplo de programa con tres tareas
!Program example in task T_ROB1
PERS tasks task_list1 {2} :=[["T_ROB1"], ["T_ROB2"]];
PERS tasks task_list2 {3} :=[["T_ROB1"], ["T_ROB2"], ["T_ROB3"]];
VAR syncident sync1;
...
VAR syncident sync5;
...
SyncMoveOn sync1, task_list1;
...
SyncMoveOff sync2;
WaitSyncTask sync3, task_list2;
SyncMoveOn sync4, task_list2;
...
SyncMoveOff sync5;
...
!Program example in task T_ROB2
PERS tasks task_list1 {2} := [["T_ROB1"], ["T_ROB2"]];
PERS tasks task_list2 {3} := [["T_ROB1"], ["T_ROB2"], ["T_ROB3"]];
VAR syncident sync1;
...
VAR syncident sync5;
...
SyncMoveOn sync1, task_list1;
...
SyncMoveOff sync2;
WaitSyncTask sync3, task_list2;
SyncMoveOn sync4, task_list2;
...
SyncMoveOff sync5;
...
!Program example in task T_ROB3
PERS tasks task_list2 {3} := [["T_ROB1"], ["T_ROB2"], ["T_ROB3"]];
VAR syncident sync3;
VAR syncident sync4;
VAR syncident sync5;
...
WaitSyncTask sync3, task_list2;
SyncMoveOn sync4, task_list2;
...
SyncMoveOff sync5;
...

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.191 SyncMoveOn - Inicia los movimientos sincronizados coordinados
Continuacin
En este ejemplo, inicialmente las tareas de programa T_ROB1 y T_ROB2 tienen
sincronizados los movimientos y T_ROB3 se mueve independientemente. Ms
adelante en el programa, las tres tareas se mueven de forma sincronizada. Para
impedir que la instruccin de SyncMoveOn se ejecute en T_ROB3 antes de que la
primera sincronizacin de T_ROB1 y T_ROB2 haya terminado, se utiliza la instruccin
WaitSyncTask.
Gestin de errores
Si se alcanza el tiempo lmite debido a que SyncMoveOn no concluye a tiempo, la
variable de sistema ERRNO cambia a ERR_SYNCMOVEON.
El error puede ser gestionado en el gestor ERROR.
Limitaciones
La instruccin SyncMoveOn slo puede ejecutarse si todos los robots implicados
estn detenidos en un punto de paro.
Slo un grupo de movimientos sincronizados coordinados puede estar activo cada
vez.
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
SyncMoveOn no puede ejecutarse en rutinas de RAPID que estn conectadas a
los siguientes eventos especiales del sistema: PowerOn, Stop, QStop, Restart,
Reset o Step.
Sintaxis
SyncMoveOn
[ SyncID := ] < variable (VAR) of syncident> ,
[ TaskList := ] < persistent array {*} (PERS) of tasks> ,
[ \TimeOut := < expression (IN) of num > ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Especificacin de tareas de programa coope- tasks - Tareas de programa de RAPID en la


rativas
pgina 1298
Identidad para punto de sincronizacin

syncident - Identidad de punto de sincronizacin en la pgina 1293

Fin de movimientos sincronizados coordina- SyncMoveOff - Finaliza los movimientos sindos


cronizados coordinados en la pgina 563
Definicin de movimientos independientes SyncMoveUndo - Activa los movimientos independientes en la pgina 582
Comprobacin de si est activado el modo IsSyncMoveOn - Comprueba si el modo de
sincronizado
movimiento sincronizado est activado en la
pgina 955
Sistema MultiMove con la opcin Coordina- Manual de aplicaciones - MultiMove
ted Robots

Contina en la pgina siguiente


576

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.191 SyncMoveOn - Inicia los movimientos sincronizados coordinados
Continuacin
Para obtener ms informacin sobre

Consulte

Espera a tareas sincronizadas

WaitSyncTask - Espera en un punto de sincronizacin con otras tareas de programa en


la pgina 736

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.192 SyncMoveResume - Activa el modo de movimientos sincronizados coordinados

1.192 SyncMoveResume - Activa el modo de movimientos sincronizados coordinados


Utilizacin
SyncMoveResume se utiliza para volver al modo de movimiento sincronizado
desde el modo de movimiento independiente. Esta instruccin slo puede usarse
en el nivel StorePath, por ejemplo, una vez que se ha ejecutado una instruccin
StorePath \KeepSync y el sistema se encuentra en el modo de movimiento
independiente una vez ejecutada la instruccin SyncMoveSuspend. Para poder
utilizar la instruccin, el sistema debe haber estado en el modo de movimiento
sincronizado antes de ejecutar las instrucciones StorePath y la instruccin
SyncMoveSuspend.
La instruccin SyncMoveResume slo puede usarse en un sistema MultiMove que
tenga las opciones Coordinated Robots y Path Recovery y slo en las tareas de
programa definidas como tarea de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SyncMoveResume.
Ejemplo 1
ERROR
StorePath \KeepSync;
! Save position
p11 := CRobT(\Tool:=tool2);
! Move in synchronized motion mode
MoveL p12\ID:=111, v50, fine, tool2;
SyncMoveSuspend;
! Move in independent mode somewhere, e.g. to a cleaning station
p13 := CRobT();
MoveL p14, v100, fine, tool2;
! Do something at cleaning station
MoveL p13, v100, fine, tool2;
SyncMoveResume;
! Move in synchronized motion mode back to start position p11
MoveL p11\ID:=111, fine, z20, tool2;
RestoPath;
StartMove;
RETRY;

Se produce algn tipo de error recuperable. El sistema permanece en el modo


sincronizado y se realiza un movimiento sincronizado a un punto, por ejemplo
retrocediendo por la trayectoria. A continuacin, se realiza un movimiento
independiente hacia una estacin de limpieza. Seguidamente, el robot retrocede
hasta el punto en el que se produjo el error y el programa contina en el punto en
el que fue interrumpido por el error.
Ejecucin de programas
SyncMoveResume fuerza la reanudacin del modo sincronizado cuando el sistema
se encuentra en el modo de movimiento independiente en el nivel StorePath.
Contina en la pgina siguiente
578

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.192 SyncMoveResume - Activa el modo de movimientos sincronizados coordinados
Continuacin
La instruccin SyncMoveResume es necesaria en todas las tareas que se estn
ejecutando en el modo de movimiento sincronizado antes de activar el modo de
movimiento independiente. Si una tarea de movimiento ejecuta una instruccin
SyncMoveResume, dicha tarea esperar hasta que tambin todas las tareas que
estuvieran anteriormente en el modo de movimiento sincronizado ejecuten una
instruccin SyncMoveResume. A continuacin, las tareas de programa implicadas
prosiguen su ejecucin.
Limitaciones
La instruccin SyncMoveResume slo puede usarse para volver al modo de
movimiento sincronizado y slo puede usarse en el nivel StorePath.
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
SyncMoveResume no puede ejecutarse en rutinas de RAPID que estn conectadas
a los siguientes eventos especiales del sistema: PowerOn, Stop, QStop,
Restart,Reset o Step.
Sintaxis
SyncMoveResume ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Especificacin de tareas de programa


cooperativas

tasks - Tareas de programa de RAPID en la pgina 1298

Inicio de movimientos sincronizados


coordinados

SyncMoveOn - Inicia los movimientos sincronizados coordinados en la pgina 570

Fin de movimientos sincronizados


coordinados

SyncMoveOff - Finaliza los movimientos sincronizados coordinados en la pgina 563

Comprobacin de si est activado el


modo sincronizado

SyncMoveOn - Inicia los movimientos sincronizados coordinados en la pgina 570

Almacenamiento de la trayectoria

StorePath - Almacena la trayectoria cuando se


produce una interrupcin en la pgina 555

Restauracin de la trayectoria

RestoPath - Restablece la trayectoria despus de


una interrupcin en la pgina 386

Suspensin del movimiento sincroniza- SyncMoveSuspend - Activa el movimiento indedo


pendiente-semicoordinado en la pgina 580

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.193 SyncMoveSuspend - Activa el movimiento independiente-semicoordinado

1.193 SyncMoveSuspend - Activa el movimiento independiente-semicoordinado


Utilizacin
SyncMoveSuspend se usa para suspender el modo de movimiento sincronizado
y poner el sistema en el modo de movimiento independiente-semicoordinado. Esta
instruccin slo puede usarse en el nivel StorePath, por ejemplo, una vez que
se ha ejecutado una instruccin StorePath o StorePath \KeepSync y el sistema
se encuentra en el modo de movimiento sincronizado.
La instruccin SyncMoveSuspend slo puede usarse en un MultiMove System
que disponga de las opciones Coordinated Robots y Path Recovery y slo en
tareas de programa definidas como tarea de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SyncMoveSuspend.
Ejemplo 1
ERROR
StorePath \KeepSync;
! Save position
p11 := CRobT(\Tool:=tool2);
! Move in synchronized motion mode
MoveL p12\ID:=111, v50, fine, tool2;
SyncMoveSuspend;
! Move in independent mode somewhere, e.g. to a cleaning station
p13 := CRobT();
MoveL p14, v100, fine, tool2;
! Do something at cleaning station
MoveL p13, v100, fine, tool2;
SyncMoveResume;
! Move in synchronized motion mode back to start position p11
MoveL p11\ID:=111, fine, z20, tool2;
RestoPath;
StartMove;
RETRY;

Se produce algn tipo de error recuperable. El sistema permanece en el modo


sincronizado y se realiza un movimiento sincronizado a un punto, por ejemplo
retrocediendo por la trayectoria. A continuacin, se realiza un movimiento
independiente hacia una estacin de limpieza. Seguidamente, el robot retrocede
hasta el punto en el que se produjo el error y el programa contina en el punto en
el que fue interrumpido por el error.
Ejecucin de programas
SyncMoveSuspend fuerza el restablecimiento de los movimientos sincronizados
y pone el sistema en el modo de movimiento independiente-semicoordinado.
La instruccin SyncMoveSuspend es necesaria en todas las tareas de movimiento
sincronizado, para poner el sistema en el modo de movimiento
independiente-semicoordinado. Si una tarea de movimiento ejecuta una instruccin
Contina en la pgina siguiente
580

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.193 SyncMoveSuspend - Activa el movimiento independiente-semicoordinado
Continuacin
SyncMoveSuspend, la tarea espera hasta que las dems tareas hayan ejecutado
una instruccin SyncMoveSuspend.
Tras la ejecucin de SyncMoveSuspend en todas las tareas implicadas, el sistema
se encuentra en el modo semicoordinado si se sigue usando el objeto de trabajo
coordinado. De lo contrario, se encuentra en el modo independiente. En el modo
semicoordinado, se recomienda empezar siempre con un movimiento en la unidad
mecnica que controla la base de coordenadas del usuario antes de usar
WaitSyncTask en todas las tareas implicadas.
Limitaciones
La instruccin SyncMoveSuspend suspende el modo sincronizado slo en el nivel
StorePath. Despus de volver del nivel StorePath, el sistema cambia al modo
en el que se encontraba antes de StorePath.
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
SyncMoveSuspend no puede ejecutarse en rutinas de RAPID que estn conectadas
a los siguientes eventos especiales del sistema: PowerOn, Stop, QStop,
Restart,Reset o Step.
Sintaxis
SyncMoveSuspend ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Especificacin de tareas de programa


cooperativas

tasks - Tareas de programa de RAPID en la pgina 1298

Inicio de movimientos sincronizados


coordinados

SyncMoveOn - Inicia los movimientos sincronizados coordinados en la pgina 570

Fin de movimientos sincronizados


coordinados

SyncMoveOff - Finaliza los movimientos sincronizados coordinados en la pgina 563

Comprobacin de si est activado el


modo sincronizado

IsSyncMoveOn - Comprueba si el modo de movimiento sincronizado est activado en la pgina 955

Almacenamiento de la trayectoria

StorePath - Almacena la trayectoria cuando se


produce una interrupcin en la pgina 555

Restauracin de la trayectoria

RestoPath - Restablece la trayectoria despus de


una interrupcin en la pgina 386

Reanudacin del movimiento sincroniza- SyncMoveResume - Activa el modo de movimiendo


tos sincronizados coordinados en la pgina 578

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.194 SyncMoveUndo - Activa los movimientos independientes

1.194 SyncMoveUndo - Activa los movimientos independientes


Utilizacin
SyncMoveUndo se utiliza para forzar el restablecimiento de los movimientos
sincronizados coordinados y pone el sistema en el modo de movimientos
independientes.
La instruccin SyncMoveUndo slo puede usarse en un sistema MultiMove que
tenga la opcin Coordinated Robots y slo en las tareas de programa definidas
como Motion Task.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SyncMoveUndo.
Ejemplo 1
Ejemplo de programa de la tarea T_ROB1
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PROC main()
...
MoveL p_zone, vmax, z50, tcp1;
WaitSyncTask sync1, task_list;
MoveL p_fine, v1000, fine, tcp1;
syncmove;
...
ENDPROC
PROC syncmove()
SyncMoveOn sync2, task_list;
MoveL * \ID:=10, v100, z10, tcp1 \WOBJ:= rob2_obj;
MoveL * \ID:=20, v100, fine, tcp1 \WOBJ:= rob2_obj;
SyncMoveOff sync3;
UNDO
SyncMoveUndo;
ENDPROC

Si el programa se detiene mientras la ejecucin se encuentra dentro del


procedimiento syncmove y el puntero de programa se mueve hacia el exterior del
procedimiento syncmove, se ejecutan todas las instrucciones que se encuentren
dentro del gestor de deshacer UNDO. En este ejemplo se ejecuta la instruccin
SyncMoveUndo y el sistema cambia al modo de movimientos independientes.
Ejecucin de programas
Se fuerza el restablecimiento de los movimientos sincronizados coordinados y
pone el sistema en el modo de movimientos independientes.

Contina en la pgina siguiente


582

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.194 SyncMoveUndo - Activa los movimientos independientes
Continuacin
Basta con ejecutar SyncMoveUndo en una tarea de programa para cambiar todo
el sistema al modo de movimientos independientes. La instruccin puede ejecutarse
varias veces sin que se produzca ningn error si el sistema ya se encuentra en el
modo de movimientos independientes.
El sistema cambia tambin al modo de movimientos independientes en las
situaciones siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

Cuando se mueve el puntero de programa hasta el principio.

Sintaxis
SyncMoveUndo ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Especificacin de tareas de programa


cooperativas

tasks - Tareas de programa de RAPID en la pgina 1298

Identidad para punto de sincronizacin syncident - Identidad de punto de sincronizacin


en la pgina 1293
Inicio de movimientos sincronizados
coordinados

SyncMoveOn - Inicia los movimientos sincronizados coordinados en la pgina 570

Fin de movimientos sincronizados coor- SyncMoveOff - Finaliza los movimientos sincronidinados


zados coordinados en la pgina 563
Comprobacin de si est activado el
modo sincronizado

IsSyncMoveOn - Comprueba si el modo de movimiento sincronizado est activado en la pgina 955

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.195 SystemStopAction - Para el sistema de robot

1.195 SystemStopAction - Para el sistema de robot


Utilizacin
SystemStopAction puede usarse para parar el sistema de robot de distintas
formas en funcin de la gravedad del error o el problema.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
SystemStopAction.
Ejemplo 1
SystemStopAction \Stop;

Esto hace que se detenga la ejecucin del programa y los movimientos del robot
en todas las tareas de movimiento. No se requiere ninguna accin especfica antes
del reinicio de la ejecucin del programa.
Ejemplo 2
SystemStopAction \StopBlock;

Esto hace que se detenga la ejecucin del programa y los movimientos del robot
en todas las tareas de movimiento. Todos los punteros de programa deben ser
movidos antes de que sea posible reanudar la ejecucin del programa.
Ejemplo 3
SystemStopAction \Halt;

Esto provoca el estado Motors OFF, la detencin de la ejecucin del programa y


los movimientos del robot en todas las tareas de movimiento. Se debe cambiar a
Motors ON antes de que sea posible reanudar la ejecucin del programa.
Argumentos
SystemStopAction [\Stop] [\StopBlock] [\Halt]

[\Stop]
Tipo de dato: switch
\Stop se usa para parar la ejecucin del programa y los movimientos del robot
en todas las tareas de movimiento. No se requiere ninguna accin especfica antes
del reinicio de la ejecucin del programa.
[\StopBlock]
Tipo de dato: switch
\StopBlock se usa para parar la ejecucin del programa y los movimientos del
robot en todas las tareas de movimiento. Todos los punteros de programa deben
ser movidos antes de que sea posible reanudar la ejecucin del programa.
[\Halt]
Tipo de dato: switch
\Halt de lugar al estado Motors OFF, la detencin de la ejecucin del programa
y los movimientos del robot en todas las tareas de movimiento. Se debe cambiar
a Motors ON antes de que sea posible reanudar la ejecucin del programa.

Contina en la pgina siguiente


584

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.195 SystemStopAction - Para el sistema de robot
Continuacin
Limitaciones
Si el robot realiza un movimiento circular durante el SystemStopAction
\StopBlock, el puntero de programa y el robot deben moverse al principio del
movimiento circular antes de reanudar la ejecucin del programa.
Sintaxis
SystemStopAction
[ \Stop ]
| [ \StopBlock ]
| [ \Halt ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Detiene la ejecucin del programa

Stop - Detiene la ejecucin del programa en


la pgina 543

Finaliza la ejecucin del programa

EXIT - Finaliza la ejecucin del programa en


la pgina 109

Paro de los movimientos del robot nicamen- StopMove - Detiene el movimiento del robot
te.
en la pgina 548
Escribir un mensaje de error

ErrLog - Escribe un mensaje de error en la


pgina 98

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.196 TEST - En funcin del valor de una expresin...

1.196 TEST - En funcin del valor de una expresin...


Utilizacin
TESTse utiliza cuando es necesario ejecutar instrucciones diferentes en funcin
del valor de una expresin o un dato.
Si no hay demasiadas alternativas, tambin es posible usar la instruccin
IF..ELSE.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TEST.
Ejemplo 1
TEST reg1
CASE 1,2,3 :
routine1;
CASE 4 :
routine2;
DEFAULT :
TPWrite "Illegal choice";
Stop;
ENDTEST

Se ejecutan instrucciones diferentes en funcin del valor de reg1. Si el valor es


1, 2 3, se ejecuta routine1. Si el valor es 4, se ejecuta routine2. De lo contrario,
se enva un mensaje de error a la unidad de programacin y la ejecucin se detiene.
Argumentos
TEST Test data {CASE Test value {, Test value} : ...} [ DEFAULT:
...] ENDTEST

Test data
Tipo de dato: All
El dato o la expresin con el que se comparar el valor de prueba.
Test value
Tipo de dato: Del mismo tipo que test data
El valor que debe tener el dato de prueba para que se ejecuten las instrucciones
asociadas.
Ejecucin de programas
Los datos de prueba se comparan con los valores de prueba de la primera condicin
CASE. Si la comparacin da un resultado positivo, se ejecutan las instrucciones
asociadas. Posteriormente, la ejecucin del programa contina con la instruccin
que aparece a continuacin de ENDTEST.
Si no se cumple la primera condicin CASE, se comprueban las dems condiciones
CASE y de ah en adelante. Si no se cumple ninguna de las condiciones, se ejecutan
las instrucciones asociadas a DEFAULT (si se ha incluido en la instruccin).

Contina en la pgina siguiente


586

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.196 TEST - En funcin del valor de una expresin...
Continuacin
Sintaxis
(EBNF)
TEST <expressio
{( CASE<test value> { , <test value> } :
<instruction list> ) | <CSE> }
[ DEFAULT : <instruction list> ]
ENDTEST
<test value> ::= <expression>

Informacin relacionada
Para obtener ms informacin sobre Consulte
Expresiones

Manual de referencia tcnica - Instrucciones, funciones y tipos de datos de RAPID, seccin Caractersticas bsicas - Expresiones

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.197 TestSignDefine - Define una seal de prueba

1.197 TestSignDefine - Define una seal de prueba


Utilizacin
TestSignDefine se utiliza para definir una seal de prueba para el sistema de
movimiento del robot.
Una seal de prueba refleja continuamente un flujo de datos de movimiento en
concreto. Por ejemplo, referencia de par para algn eje especificado. El valor actual
en un momento dado puede leerse desde RAPID con la funcin TestSignRead.
Slo es posible obtener informacin de las seales de prueba de los ejes externos.
Las seales de prueba tambin estn disponibles bajo pedido para los ejes de
robot y para las seales de prueba no predefinidas para los ejes externos.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
TestSignDefine.
Ejemplo 1
TestSignDefine 1, resolver_angle, Orbit, 2, 0.1;

La seal de prueba resolver_angle conectada al canal 1 proporciona el valor


del ngulo del resolver para el eje 2 del manipulador orbit, muestreado cada
100 ms.
Argumentos
TestSignDefine Channel SignalId MechUnit Axis SampleTime

Channel
Tipo de dato: num
Los nmeros de canal, de 1 a 12, que se desea usar para la seal de prueba. Se
debe usar el mismo nmero en la funcin TestSignRead para leer el valor actual
de la seal de prueba.
SignalId
Tipo de dato: testsignal
El nombre o el nmero de la seal de prueba. Consulte las constantes predefinidas
descritas en el tipo de dato testsignal.
MechUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica.
Axis
Tipo de dato: num
El nmero de eje de la unidad mecnica.
SampleTime
Tipo de dato: num
El tiempo de muestreo en segundos.
Contina en la pgina siguiente
588

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.197 TestSignDefine - Define una seal de prueba
Continuacin
Con un tiempo de muestreo < 0,004 s, la funcin TestSignRead devuelve el valor
medio de los ltimos muestreos internos disponibles, como se muestra en la tabla
siguiente.
Tiempo de muestreo en Resultado de TestSignRead
segundos
0

Valor medio de los ltimos 8 muestreos generados cada 0,5 ms

0.001

Valor medio de los ltimos 4 muestreos generados cada 1 ms

0.002

Valor medio de los ltimos 2 muestreos generados cada 2 ms

Mayor o igual a 0,004

Valor momentneo generado en el tiempo de muestreo especificado

0.1

Valor momentneo generado en el tiempo de muestreo especificado, de 100 ms

Ejecucin de programas
La definicin de la seal de prueba se activa y el sistema de robot empieza a
muestrear la seal de prueba.
El muestreo de la seal de prueba permanece activo en los casos siguientes:

Hasta que se ejecuta una nueva instruccin TestSignDefine para el canal


actual.

Hasta que se desactivan todas las seales de prueba con la ejecucin de la


instruccin TestSignReset.

Hasta que todas las seales se desactivan con el arranque en caliente del
sistema.

Gestin de errores
Si hay un error en el parmetro MechUnit, la variable ERRNO cambia a
ERR_UNIT_PAR. Si hay un error en el parmetro Axis, ERRNO cambia a
ERR_AXIS_PAR.
Sintaxis
TestSignDefine
[ Channel := ] < expression (IN) of num> ,
[ SignalId := ] < expression (IN) of testsignal> ,
[ MechUnit := ] < variable (VAR) of mecunit> ,
[ Axis := ] < expression (IN) of num> ,
[ SampleTime := ] < expression (IN) of num > ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Seal de prueba

testsignal - Seal de prueba en la pgina 1300

Lectura de una seal de prueba

TestSignRead - Obtiene el valor de una seal de


test en la pgina 1096

Puesta a cero de seales de prueba

TestSignReset - Restablece todas las definiciones


de seales de prueba en la pgina 590

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.198 TestSignReset - Restablece todas las definiciones de seales de prueba

1.198 TestSignReset - Restablece todas las definiciones de seales de prueba


Utilizacin
TestSignReset se utiliza para desactivar todas las seales de prueba definidas
anteriormente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
TestSignReset.
Ejemplo 1
TestSignReset;

Desactiva todas las seales de prueba definidas anteriormente.


Ejecucin de programas
Las definiciones de todas las seales de prueba se desactivan y el sistema de
robot detiene el muestreo de las seales de prueba.
El muestreo de las seales de prueba definidas permanece activo hasta:

El arranque en caliente del sistema

La ejecucin de esta instruccin, TestSignReset

Sintaxis
TestSignReset;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin de una seal de test

TestSignDefine - Define una seal de prueba en


la pgina 588

Lectura de una seal de prueba

TestSignRead - Obtiene el valor de una seal de


test en la pgina 1096

590

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.199 TextTabInstall - Instalacin de una tabla de textos

1.199 TextTabInstall - Instalacin de una tabla de textos


Utilizacin
TextTabInstall se usa para instalar una tabla de textos en el sistema.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
TextTabInstall.
Ejemplo 1
! System Module with Event Routine to be executed at event
! POWER ON, RESET or START
PROC install_text()
IF TextTabFreeToUse("text_table_name") THEN
TextTabInstall "HOME:/text_file.eng";
ENDIF
ENDPROC

La primera vez que se ejecuta la rutina de evento install_text, la funcin


TextTabFreeToUse devuelve TRUE y el archivo de texto text_file.eng se
instala en el sistema. A continuacin, es posible obtener con RAPID las cadenas
de texto instaladas en el sistema, con ayuda de las funciones TextTabGet y
TextGet.
La prxima vez que se ejecuta la rutina de evento install_text, la funcin
TextTabFreeToUse devuelve FALSE y la instalacin no se repite.
Argumentos
TextTabInstall File

Archivo
Tipo de dato: string
La ruta y el nombre del archivo que contiene las cadenas de texto que se desea
instalar en el sistema.
Limitaciones
Limitaciones de la instalacin de tablas de textos (recursos de texto) en el sistema:

No es posible instalar una misma tabla de textos ms de una vez en el


sistema.

No es posible desinstalar (liberar) una sola tabla de textos del sistema. La


nica forma de desinstalar tablas de textos del sistema es realizar un
arranque en fro del sistema. De esta forma, se desinstalan todas las tablas
de textos (tanto las del sistema como las definidas por el usuario).

Gestin de errores
Si no es posible abrir el archivo especificado en la instruccin TextTabInstall,
la variable de sistema ERRNO cambia a ERR_FILEOPEN. A continuacin, este error
puede ser gestionado en el gestor de errores.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.199 TextTabInstall - Instalacin de una tabla de textos
Continuacin
Sintaxis
TextTabInstall
[ File := ] < expression (IN) of string >;

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Comprobacin de si una tabla de TextTabFreeToUse - Comprueba si una tabla de textos


textos est libre
est libre para su uso en la pgina 1100
Formato de archivos de texto

Technical reference manual - RAPID kernel, seccin


Text files

Obtencin de un nmero de tabla TextTabGet - Obtiene el nmero de una tabla de textos


de textos
en la pgina 1102
Obtencin de textos de las tablas TextGet - Obtener un texto de las tablas de textos del
de textos del sistema
sistema en la pgina 1098
Funciones para cadenas de carac- Technical reference manual - RAPID overview, seccin
teres
Programacin bsica en RAPID - Funciones para cadenas de caracteres
Definicin de cadena de caracteres string - Cadenas de caracteres en la pgina 1287

592

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.200 TPErase - Borra el texto mostrado en el FlexPendant

1.200 TPErase - Borra el texto mostrado en el FlexPendant


Utilizacin
TPErase (FlexPendant Erase) se utiliza para borrar la pantalla del FlexPendant.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TPErase.
Ejemplo 1
TPErase;
TPWrite "Execution started";

Se borra la pantalla del FlexPendant antes de escribir en ella el mensaje Execution


started.
Ejecucin de programas
Se elimina todo el texto de la pantalla del FlexPendant. La prxima vez que se
escribe un texto, ste aparece en la lnea superior de la pantalla.
Sintaxis
TPErase;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Escritura en el FlexPendant

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Comunicacin

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.201 TPReadDnum - Lee un nmero del FlexPendant

1.201 TPReadDnum - Lee un nmero del FlexPendant


Utilizacin
TPReadDnum (FlexPendant Read Numerical) se usa para leer un nmero del
FlexPendant.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TPReadDnum.
Ejemplo 1
VAR dnum value;
TPReadDnum value, "How many units should be produced?";

El texto How many units should be produced? se escribe en el FlexPendant.


La ejecucin del programa espera hasta que se introduzca un nmero a travs del
teclado numrico del FlexPendant. El nmero se almacena en value.
Argumentos
TPReadDnum TPAnswer TPText [\MaxTime][\DIBreak] [\DIPassive]
[\DOBreak] [\DOPassive] [\BreakFlag]

TPAnswer
Tipo de dato: dnum
La variable en la que se almacena el nmero introducido a travs del FlexPendant.
TPText
Tipo de dato: string
El texto informativo que debe escribirse en el FlexPendant (con un mximo de 80
caracteres y 40 caracteres por fila).
[\MaxTime]
Tipo de dato: num
El periodo mximo que debe esperar el programa para continuar con la ejecucin.
Si no se introduce ningn nmero en ese periodo, el programa sigue ejecutndose
en el gestor de errores, a no ser que se utilice el indicador BreakFlag (que se
documenta a continuacin). La constante ERR_TP_MAXTIME puede usarse para
comprobar si ha transcurrido ya el tiempo mximo establecido.
[\DIBreak]
Digital Input Break
Tipo de dato: signaldi
La seal digital que puede interrumpir el dilogo con el operador. Si no se introduce
ningn nmero cuando la seal cambia a 1 (o si ya tiene el valor 1), el programa
sigue ejecutndose en el gestor de errores, a no ser que se utilice el indicador
BreakFlag (que se documenta a continuacin). La constante ERR_TP_DIBREAK
puede usarse para comprobar si esto ha ocurrido.

Contina en la pgina siguiente


594

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.201 TPReadDnum - Lee un nmero del FlexPendant
Continuacin
[\DIPassive]
Digital Input Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DIBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DIBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOBreak]
Digital Output Break
Tipo de dato: signaldo
La seal digital que soporta la peticin de finalizacin desde otras tareas. Si no
se selecciona ningn botn cuando la seal cambia a 1 (o si ya tiene el valor 1),
el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice el
indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOPassive]
Digital Output Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DOBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DOBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\BreakFlag]
Tipo de dato: errnum
Una variable que contiene el cdigo de error si se utilizan MaxTime, DIBreak o
DOBreak. Si se omite esta variable opcional, se ejecuta el gestor de errores. Las
constantes ERR_TP_MAXTIME, ERR_TP_DIBREAK y ERR_TP_DOBREAK pueden
usarse para seleccionar el motivo.
Ejecucin de programas
El texto de informacin se escribe siempre en una nueva lnea. Si la pantalla est
llena de texto, el cuerpo de texto se mueve previamente una lnea hacia arriba.
Puede haber un mximo de 7 lneas por encima del nuevo texto escrito.
La ejecucin del programa espera hasta que se escribe un nmero mediante el
teclado numrico (seguido de Intro u OK) o hasta que la instruccin es interrumpida
por un tiempo lmite agotado o una accin de seal.
Consulte TPReadFK para obtener una descripcin de la peticin concurrente de
TPReadFK o TPReadDnum en el FlexPendant desde la misma tarea de programa
o desde tareas de programa diferentes.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.201 TPReadDnum - Lee un nmero del FlexPendant
Continuacin
Gestin de errores
Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que responda el
operador, la variable de sistema ERRNO cambia a ERR_TP_MAXTIME y la ejecucin
contina en el gestor de errores.
Si se activa la entrada digital (parmetro \DIBreak) antes de que responda el
operador, la variable de sistema ERRNO cambia a ERR_TP_DIBREAK y la ejecucin
contina en el gestor de errores.
Si tiene lugar la salida digital (parmetro \DOBreak) antes de la accin del operador,
la variable de sistema ERRNO cambia a ERR_TP_DOBREAK y la ejecucin contina
en el gestor de errores.
Si no hay ningn cliente, por ejemplo un FlexPendant, que se encargue de la
instruccin, la variable de sistema ERRNO cambia a ERR_TP_NO_CLIENT y la
ejecucin contina en el gestor de errores.
A continuacin, estas situaciones pueden ser gestionadas en el gestor de errores.
Sintaxis
TPReadDnum
[TPAnswer:=] <var or pers (INOUT) of dnum>,
[TPText:=] <expression (IN) of string>
[\MaxTime:= <expression (IN) of num>]
[\DIBreak:= <variable (VAR) of signaldi>]
[\DIPassive]
[\DOBreak:= <variable (VAR) of signaldo>]
[\DOPassive]
[\BreakFlag:= <var or pers (INOUT) of errnum>] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Escritura y lectura a travs del FlexPen- Technical reference manual - RAPID overview,
dant
seccin Resumen sobre RAPID - Comunicacin
Introduccin de un nmero en el FlexPen- Manual del operador - IRC5 con FlexPendant,
dant
seccin Produccin en funcionamiento
Ejemplos de cmo usar los argumentos
MaxTime, DIBreak y BreakFlag

TPReadFK - Lee las teclas de funcin en la pgina 597

Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el FlexPendant en la pgina 593

596

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.202 TPReadFK - Lee las teclas de funcin

1.202 TPReadFK - Lee las teclas de funcin


Utilizacin
TPReadFK (FlexPendant Read Function Key) se utiliza para escribir un texto en
las teclas de funcin y para determinar qu tecla de funcin se ha presionado.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TPReadFK.
Consulte tambin Ms ejemplos en la pgina 599.
Ejemplo 1
TPReadFK reg1, "More?", stEmpty, stEmpty, stEmpty, "Yes", "No";

Se escribe el texto More? en la pantalla del FlexPendant y se activan las teclas


de funcin 4 y 5 usando las cadenas de texto Yes y No respectivamente (consulte
la figura siguiente). La ejecucin del programa espera hasta que se presiona una
de las teclas de funcin, la tecla 4 o la 5. En otras palabras, se asigna a reg1 el
valor 4 5 en funcin de cul de las teclas se presione.
En la figura se muestra cmo el operador puede introducir informacin a travs
de las teclas de funcin.

Ms?

No

xx0500002345_es

Argumentos
TPReadFK TPAnswer TPText TPFK1 TPFK2 TPFK3 TPFK4 TPFK5 [\MaxTime]
[\DIBreak] [\DIPassive] [\DOBreak] [\DOPassive] [\BreakFlag]

TPAnswer
Tipo de dato: num
La variable cuyo valor se devuelve (de 1 a 5) en funcin de qu tecla se presione.
Si se presiona la tecla de funcin 1, se devuelve 1, etc.
TPText
Tipo de dato: string
El texto informativo que debe escribirse en la pantalla (con un mximo de 80
caracteres y 40 caracteres por fila).
TPFKx
Function key text
Tipo de dato: string
El texto que debe escribirse en tecla de funcin adecuada (con un mximo de 45
caracteres). TPFK1 es la tecla que se encuentra en el extremo izquierdo.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.202 TPReadFK - Lee las teclas de funcin
Continuacin
Para especificar que una tecla de funcin no debe tener ningn texto, se utiliza la
constante de cadena de caracteres predefinida stEmpty para cadenas de
caracteres vacas ("").
[\MaxTime]
Tipo de dato: num
El periodo mximo, en segundos, que debe esperar el programa para continuar
con la ejecucin. Si no se presiona ninguna tecla de funcin en ese periodo, el
programa sigue ejecutndose en el gestor de errores, a no ser que se utilice el
indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_MAXTIME puede usarse para comprobar si ha transcurrido ya el tiempo
mximo establecido.
[\DIBreak]
Digital Input Break
Tipo de dato: signaldi
La seal digital que puede interrumpir el dilogo con el operador. Si no se presiona
ninguna tecla de funcin cuando la seal cambia a 1 (o si ya tiene el valor 1), el
programa sigue ejecutndose en el gestor de errores, a no ser que se utilice el
indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DIPassive]
Digital Input Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DIBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DIBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOBreak]
Digital Output Break
Tipo de dato: signaldo
La seal digital que soporta la peticin de finalizacin desde otras tareas. Si no
se selecciona ningn botn cuando la seal cambia a 1 (o si ya tiene el valor 1),
el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice el
indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOPassive]
Digital Output Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DOBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza

Contina en la pgina siguiente


598

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.202 TPReadFK - Lee las teclas de funcin
Continuacin
BreakFlag) cuando la seal DOBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\BreakFlag]
Tipo de dato: errnum
Una variable que contiene el cdigo de error si se utilizan MaxTime, DIBreak o
DOBreak. Si se omite esta variable opcional, se ejecuta el gestor de errores. Las
constantes ERR_TP_MAXTIME, ERR_TP_DIBREAK y ERR_TP_DOBREAK pueden
usarse para seleccionar el motivo.
Ejecucin de programas
El texto de informacin se escribe siempre en una nueva lnea. Si la pantalla est
llena de texto, el cuerpo de texto se mueve previamente una lnea hacia arriba.
Puede haber un mximo de 7 lneas por encima del nuevo texto escrito.
El texto se escribe en las teclas de funcin adecuadas.
La ejecucin del programa espera hasta que se presiona una de las teclas de
funcin activadas.
Descripcin de la peticin concurrente de TPReadFK o TPReadNum en el
FlexPendant (peticin TP) desde una misma tarea de programa o desde otras
tareas de programa:

Una nueva peticin de unidad de programacin de otras tareas de programa


no recibe el foco de programa (nuevo almacenamiento en la cola)

Una nueva peticin de unidad de programacin de una rutina TRAP de la


misma tarea de programa recibe el foco de programa (almacenamiento
anterior en la cola)

Un paro de programa recibe el foco de programa (almacenamiento anterior


en la cola)

Una nueva peticin de unidad de programacin con el programa parado


recibe el foco de programa (almacenamiento anterior en la cola)

Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin TPReadFK.
Ejemplo 1
VAR errnum errvar;
...
TPReadFK reg1, "Go to service position?", stEmpty, stEmpty, stEmpty,
"Yes","No"
\MaxTime:= 600
\DIBreak:= di5\BreakFlag:= errvar;
IF reg1 = 4 OR errvar = ERR_TP_DIBREAK THEN
MoveL service, v500, fine, tool1;
Stop;
ENDIF
IF errvar = ERR_TP_MAXTIME EXIT;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.202 TPReadFK - Lee las teclas de funcin
Continuacin
El robot se mueve a la posicin de servicio si se presiona la cuarta tecla de funcin
("Yes") o si se activa la seal 5. Si no se da ninguna respuesta en un periodo de
10 minutos, la ejecucin finaliza.
Gestin de errores
Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que responda el
operador, la variable de sistema ERRNO cambia a ERR_TP_MAXTIME y la ejecucin
contina en el gestor de errores.
Si se activa la entrada digital (parmetro \DIBreak) antes de que responda el
operador, la variable de sistema ERRNO cambia a ERR_TP_DIBREAK y la ejecucin
contina en el gestor de errores.
Si tiene lugar la salida digital (parmetro \DOBreak) antes de la accin del operador,
la variable de sistema ERRNO cambia a ERR_TP_DOBREAK y la ejecucin contina
en el gestor de errores.
Si no hay ningn cliente, por ejemplo un FlexPendant, que se encargue de la
instruccin, la variable de sistema ERRNO cambia a ERR_TP_NO_CLIENT y la
ejecucin contina en el gestor de errores.
A continuacin, estas situaciones pueden ser gestionadas en el gestor de errores.
Limitaciones
Evite usar un valor demasiado pequeo para el parmetro de tiempo lmite
\MaxTime si TPReadFK se ejecuta frecuentemente, por ejemplo en un bucle. Si
lo hace, puede dar lugar a un comportamiento impredecible del rendimiento del
sistema, por ejemplo la ralentizacin de la respuesta del FlexPendant.
Datos predefinidos
CONST string stEmpty := "";

La constante predefinida stEmpty debe usarse en el caso de las teclas de funcin


que no tienen textos asignados. El uso de stEmpty en lugar de "" ahorra
aproximadamente 80 bytes por cada tecla de funcin que no tenga texto.
Sintaxis
TPReadFK
[TPAnswer :=] <var or pers (INOUT) of num>,
[TPText :=] <expression (IN) of string>,
[TPFK1 :=] <expression (IN) of string>,
[TPFK2 :=] <expression (IN) of string>,
[TPFK3 :=] <expression (IN) of string>,
[TPFK4 :=] <expression (IN) of string>,
[TPFK5 :=] <expression (IN) of string>
[\MaxTime:= <expression (IN) of num>]
[\DIBreak:= <variable (VAR) of signaldi>]
[\DIPassive]
[\DOBreak:= <variable (VAR) of signaldo>]
[\DOPassive]
[\BreakFlag:= <var or pers (INOUT) of errnum>];

Contina en la pgina siguiente


600

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.202 TPReadFK - Lee las teclas de funcin
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Escritura y lectura a travs del FlexPen- Technical reference manual - RAPID overview,
dant
seccin Resumen sobre RAPID - Comunicacin
Respuestas a travs del FlexPendant

Manual del operador - IRC5 con FlexPendant,


seccin Produccin en funcionamiento

Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el FlexPendant en la pgina 593

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.203 TPReadNum - Lee un nmero del FlexPendant

1.203 TPReadNum - Lee un nmero del FlexPendant


Utilizacin
TPReadNum (FlexPendant Read Numerical) se usa para leer un nmero del
FlexPendant.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TPReadNum.
Consulte tambin Ms ejemplos en la pgina 604.
Ejemplo 1
TPReadNum reg1, "How many units should be produced?";

El texto How many units should be produced? se escribe en el FlexPendant.


La ejecucin del programa espera hasta que se introduzca un nmero a travs del
teclado numrico del FlexPendant. El nmero se almacena en reg1.
Argumentos
TPReadNum TPAnswer TPText [\MaxTime][\DIBreak] [\DIPassive]
[\DOBreak] [\DOPassive] [\BreakFlag]

TPAnswer
Tipo de dato: num
La variable en la que se almacena el nmero introducido a travs del FlexPendant.
TPText
Tipo de dato: string
El texto informativo que debe escribirse en el FlexPendant (con un mximo de 80
caracteres y 40 caracteres por fila).
[\MaxTime]
Tipo de dato: num
El periodo mximo que debe esperar el programa para continuar con la ejecucin.
Si no se introduce ningn nmero en ese periodo, el programa sigue ejecutndose
en el gestor de errores, a no ser que se utilice el indicador BreakFlag (que se
documenta a continuacin). La constante ERR_TP_MAXTIME puede usarse para
comprobar si ha transcurrido ya el tiempo mximo establecido.
[\DIBreak]
Digital Input Break
Tipo de dato: signaldi
La seal digital que puede interrumpir el dilogo con el operador. Si no se introduce
ningn nmero cuando la seal cambia a 1 (o si ya tiene el valor 1), el programa
sigue ejecutndose en el gestor de errores, a no ser que se utilice el indicador
BreakFlag (que se documenta a continuacin). La constante ERR_TP_DIBREAK
puede usarse para comprobar si esto ha ocurrido.
[\DIPassive]
Digital Input Passive
Contina en la pgina siguiente
602

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.203 TPReadNum - Lee un nmero del FlexPendant
Continuacin
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DIBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DIBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOBreak]
Digital Output Break
Tipo de dato: signaldo
La seal digital que soporta la peticin de finalizacin desde otras tareas. Si no
se selecciona ningn botn cuando la seal cambia a 1 (o si ya tiene el valor 1),
el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice el
indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOPassive]
Digital Output Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DOBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DOBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\BreakFlag]
Tipo de dato: errnum
Una variable que contiene el cdigo de error si se utilizan MaxTime, DIBreak o
DOBreak. Si se omite esta variable opcional, se ejecuta el gestor de errores. Las
constantes ERR_TP_MAXTIME, ERR_TP_DIBREAK y ERR_TP_DOBREAK pueden
usarse para seleccionar el motivo.
Ejecucin de programas
El texto de informacin se escribe siempre en una nueva lnea. Si la pantalla est
llena de texto, el cuerpo de texto se mueve previamente una lnea hacia arriba.
Puede haber un mximo de 7 lneas por encima del nuevo texto escrito.
La ejecucin del programa espera hasta que se escribe un nmero mediante el
teclado numrico (seguido de Intro u OK) o hasta que la instruccin es interrumpida
por un tiempo lmite agotado o una accin de seal.
Consulte TPReadFK para obtener una descripcin de la peticin concurrente de
TPReadFK o TPReadNum en el FlexPendant desde la misma tarea de programa o
desde tareas de programa diferentes.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.203 TPReadNum - Lee un nmero del FlexPendant
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin TPReadNum.
Ejemplo 1
TPReadNum reg1, "How many units should be produced?";
FOR i FROM 1 TO reg1 DO
produce_part;
ENDFOR

Se escribe el texto How many units should be produced? en la pantalla del


FlexPendant. A continuacin, la rutina produce_part se repite el nmero de
veces especificado a travs del FlexPendant.
Gestin de errores
Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que responda el
operador, la variable de sistema ERRNO cambia a ERR_TP_MAXTIME y la ejecucin
contina en el gestor de errores.
Si se activa la entrada digital (parmetro \DIBreak) antes de que responda el
operador, la variable de sistema ERRNO cambia a ERR_TP_DIBREAK y la ejecucin
contina en el gestor de errores.
Si se activa la salida digital (parmetro \DOBreak) antes de que responda el
operador, la variable de sistema ERRNO cambia a ERR_TP_DOBREAK y la ejecucin
contina en el gestor de errores.
Si no hay ningn cliente, por ejemplo un FlexPendant, que se encargue de la
instruccin, la variable de sistema ERRNO cambia a ERR_TP_NO_CLIENT y la
ejecucin contina en el gestor de errores.
A continuacin, estas situaciones pueden ser gestionadas en el gestor de errores.
Sintaxis
TPReadNum
[TPAnswer:=] <var or pers (INOUT) of num>,
[TPText:=] <expression (IN) of string>
[\MaxTime:= <expression (IN) of num>]
[\DIBreak:= <variable (VAR) of signaldi>]
[\DIPassive]
[\DOBreak:= <variable (VAR) of signaldo>]
[\DOPassive]
[\BreakFlag:= <var or pers (INOUT) of errnum>] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Escritura y lectura a travs del FlexPen- Technical reference manual - RAPID overview,
dant
seccin Resumen sobre RAPID - Comunicacin
Introduccin de un nmero en el FlexPen- Manual del operador - IRC5 con FlexPendant,
dant
seccin Produccin en funcionamiento
Ejemplos de cmo usar los argumentos
MaxTime, DIBreak y BreakFlag

TPReadFK - Lee las teclas de funcin en la pgina 597

Contina en la pgina siguiente


604

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.203 TPReadNum - Lee un nmero del FlexPendant
Continuacin
Para obtener ms informacin sobre

Consulte

Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el FlexPendant en la pgina 593

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.204 TPShow - Cambia de ventana en el FlexPendant

1.204 TPShow - Cambia de ventana en el FlexPendant


Utilizacin
TPShow (FlexPendant Show) se utiliza para seleccionar desde RAPID una ventana
del FlexPendant.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TPShow.
Ejemplo 1
TPShow TP_LATEST;

La ltima ventana usada en el FlexPendant antes de la ventana actual del


FlexPendant ser la que se active tras la ejecucin de esta instruccin.
Argumentos
TPShow Window

Window
Tipo de dato: tpnum
La ventana TP_LATEST mostrar la ltima ventana usada en el FlexPendant antes
de la ventana actual del FlexPendant.
Datos predefinidos
CONST tpnum TP_LATEST := 2;

Ejecucin de programas
Se activa la ventana que se seleccione para el FlexPendant.
Sintaxis
TPShow
[Window:=] <expression (IN) of tpnum> ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comunicacin a travs del FlexPendant Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Comunicacin
Nmero de ventana del FlexPendant

tpnum - Nmero de ventana del FlexPendant en


la pgina 1308

Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el FlexPendant en la pgina 593

606

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.205 TPWrite - Escribe en el FlexPendant

1.205 TPWrite - Escribe en el FlexPendant


Utilizacin
TPWrite (FlexPendant Write) se utiliza para escribir texto en el FlexPendant. Es
posible escribir el valor de determinados datos, adems de texto.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TPWrite.
Ejemplo 1
TPWrite "Execution started";

El texto Execution started se escribe en el FlexPendant.


Ejemplo 2
TPWrite "No of produced parts="\Num:=reg1;

Por ejemplo, si reg1 contiene el valor 5, se escribe el texto No of produced


parts=5 en el FlexPendant.
Argumentos
TPWrite String [\Num] | [\Bool] | [\Pos] | [\Orient] | [\Dnum]

String
Tipo de dato: string
La cadena de texto a escribir (con un mximo de 80 caracteres y 40 caracteres
por fila).
[\Num]
Numeric
Tipo de dato: num
El dato cuyo valor numrico se desea escribir a continuacin de la cadena de
texto.
[\Bool]
Boolean
Tipo de dato: bool
El dato cuyo valor lgico se desea escribir a continuacin de la cadena de texto.
[\Pos]
Position
Tipo de dato: pos
El dato cuya posicin se desea escribir a continuacin de la cadena de texto.
[\Orient]
Orientation
Tipo de dato: orient
El dato cuya orientacin se desea escribir a continuacin de la cadena de texto.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.205 TPWrite - Escribe en el FlexPendant
Continuacin
[\Dnum]
Numeric
Tipo de dato: dnum
El dato cuyo valor numrico se desea escribir a continuacin de la cadena de
texto.
Ejecucin de programas
El texto escrito en el FlexPendant comienza siempre en una nueva lnea. Si la
pantalla est llena de texto (11 lneas), dicho texto se mueve previamente una
lnea hacia arriba.
Si se usa uno de los argumentos \Num, \Dnum, \Bool, \Pos u \Orient , su
valor se convierte en primer lugar en una cadena de texto, antes de aadirla a la
primera cadena. La conversin del valor a una cadena de texto se realiza de la
forma siguiente:
Argumento

Valor

Cadena de texto

\Num

23

"23"

\Num

1.141367

"1.14137"

\Bool

TRUE

"TRUE"

\Pos

[1817.3,905.17,879.11]

"[1817.3,905.17,879.11]"

\Orient

[0.96593,0,0.25882,0]

"[0.96593,0,0.25882,0]"

\Dnum

4294967295

"4294967295"

El valor se convierte en una cadena con un formato estndar de RAPID. Esto


significa en principio 6 dgitos significativos. Si la parte decimal es menor que
0,000005 o mayor que 0,999995, el nmero se redondea a un entero.
Limitaciones
Los argumentos \Num, \Dnum, \Bool, \Pos y \Orient son excluyentes entre
s y por tanto no pueden usarse simultneamente en una misma instruccin.
Sintaxis
TPWrite
[TPText:=] <expression (IN) of string>
[\Num:= <expression (IN) of num> ]
| [\Bool:= <expression (IN) of bool> ]
| [\Pos:= <expression (IN) of pos> ]
| [\Orient:= <expression (IN) of orient> ]
| [\Dnum:= <expression (IN) of dnum> ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Borrado y lectura a travs del FlexPen- Technical reference manual - RAPID overview,
dant
seccin Resumen sobre RAPID - Comunicacin
Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el FlexPendant en la pgina 593

608

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.206 TriggC - Movimiento circular del robot con eventos

1.206 TriggC - Movimiento circular del robot con eventos


Utilizacin
TriggC (Trigg Circular) se utiliza para establecer seales de salida y/o ejecutar
rutinas de interrupcin en posiciones fijas al mismo tiempo que se mueve el robot
a lo largo de una trayectoria circular.
Es posible definir uno o varios eventos (con un mximo de 8) mediante las
instrucciones TriggIO, TriggEquip, TriggInt, TriggCheckIO, TriggSpeed
o TriggRampAO y hacer referencia posteriormente a estas definiciones en la
instruccin TriggC.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TriggC.
Consulte tambin Ms ejemplos en la pgina 613.
Ejemplo 1
VAR triggdata gunon;
TriggIO gunon, 0 \Start \DOp:=gun, 1;
MoveL p1, v500, z50, gun1;
TriggC p2, p3, v500, gunon, fine, gun1;

La seal digital de salida gun se activa cuando el TCP del robot atraviesa el punto
central de la trayectoria de esquina del punto p1.
En la figura se muestra un ejemplo de evento de E/S basado en una posicin fija.

Punto de
inicio p1

TriggC p2, p3, v500, gunon, fine, gun1;

Punto final p3

Punto de crculo p2
La seal de salida gun se cambia a 1
cuando el TCP del robot alcanza este punto
xx0500002267_es

Argumentos
TriggC [\Conc] CirPoint ToPoint [\ID] Speed [\T] Trigg_1 [\T2]
[\T3] [\T4] [\T5] [\T6] [\T7] [\T8] Zone [\Inpos] Tool [\WObj]
[ \Corr ]

[ \Conc ]
Concurrent
Tipo de dato:switch
Distintas instrucciones consecutivas se ejecutan mientras el robot est en
movimiento. Este argumento no se utiliza normalmente, pero puede utilizarse para
evitar los paros no deseados, causados por la sobrecarga de la CPU al utilizar
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.206 TriggC - Movimiento circular del robot con eventos
Continuacin
puntos de paso. Esto resulta til cuando los puntos programados estn muy
cercanos entre s y se trabaja a velocidades elevadas. Este argumento tambin
resulta til si, por ejemplo, no se requiere la comunicacin con equipos externos
ni la sincronizacin entre los equipos externos y los movimientos del robot. Tambin
puede usarse para ajustar la ejecucin de la trayectoria del robot, para evitar la
advertencia 50024 Fallo en punto de paso o el error 40082 Lmite de deceleracin.
Cuando se utiliza el argumento \Conc, el nmero de instrucciones de movimiento
seguidas est limitado a 5. En secciones de programa que incluyen
StorePath-RestoPath, no se permite el uso de instrucciones con el argumento
\Conc.
Si se omite este argumento y ToPoint no es un punto de paro, la instruccin
siguiente se ejecuta algn tiempo antes de que el robot alcance la zona
programada.
Este argumento no puede usarse en los movimientos sincronizados coordinados
en un sistema MultiMove.
CirPoint
Tipo de dato: robtarget
El punto de crculo del robot. Consulte la instruccin MoveC para obtener una
descripcin ms detallada del movimiento circular. El punto de crculo se define
como una posicin con nombre o se almacena directamente en la instruccin
(marcada con un asterisco * en la instruccin).
ToPoint
Tipo de dato: robtarget
El punto de destino de los ejes del robot y de los ejes externos. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, la reorientacin de la
misma y los ejes externos.
[ \T ]
Time
Tipo de dato: num
Contina en la pgina siguiente
610

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.206 TriggC - Movimiento circular del robot con eventos
Continuacin
Este argumento se utiliza para especificar el tiempo total en segundos que dura
el movimiento del robot. A continuacin, se sustituye por los datos de velocidad
correspondientes.
Trigg_1
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO, TriggSpeed o TriggRampAO.
[ \T2 ]
Trigg 2
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO, TriggSpeed o TriggRampAO.
[ \T3 ]
Trigg 3
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO, TriggSpeed o TriggRampAO.
[ \T4 ]
Trigg 4
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO, TriggSpeed o TriggRampAO.
[ \T5 ]
Trigg 5
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheck, TriggSpeed o TriggRampAO.
[ \T6 ]
Trigg 6
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO, TriggSpeed o TriggRampAO..
[ \T7 ]
Trigg 7
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.206 TriggC - Movimiento circular del robot con eventos
Continuacin
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO, TriggSpeed o TriggRampAO.
[ \T8 ]
Trigg 8
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO, TriggSpeed o TriggRampAO.
Zone
Tipo de dato: zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
[ \Inpos ]
In position
Tipo de dato: stoppointdata
Este argumento se utiliza para especificar los criterios de convergencia para la
posicin del TCP del robot en el punto de paro. Los datos de puntos de paro
sustituyen a la zona especificada en el parmetro Zone.
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 la posicin de destino especificada.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si por otro lado se usa un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento para ejecutar un movimiento
lineal respecto del objeto de trabajo.
[ \Corr ]
Correction
Tipo de dato: switch
Los datos de correccin escritos en una entrada de correccin mediante una
instruccin CorrWrite se aaden a la trayectoria y a la posicin de destino si se
utiliza este argumento.

Contina en la pgina siguiente


612

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.206 TriggC - Movimiento circular del robot con eventos
Continuacin
Ejecucin de programas
Consulte la instruccin MoveC para obtener ms informacin acerca del movimiento
circular.
A medida que se cumplen las condiciones de disparo cuando el robot se sita
ms y ms cerca del punto final, se realizan las actividades de disparo definidas.
Las condiciones de disparo se cumplen a una distancia determinada del punto
final de la instruccin o a una distancia determinada del punto de inicio de la
instruccin, o bien en un momento determinado (limitado a un tiempo breve) antes
del punto final de la instruccin.
Durante la ejecucin paso a paso hacia delante, las actividades de E/S se realizan
pero las rutinas de interrupcin no se ejecutan. Durante la ejecucin paso a paso
hacia atrs, no se realiza ninguna actividad de disparo.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin TriggC.
Ejemplo 1
VAR intnum intno1;
VAR triggdata trigg1;
...
PROC main()
...
CONNECT intno1 WITH trap1;
TriggInt trigg1, 0.1 \Time, intno1;
...
TriggC p1, p2, v500, trigg1, fine, gun1;
TriggC p3, p4, v500, trigg1, fine, gun1;
...
IDelete intno1;

Se ejecuta la rutina de interrupcin trap1 cuando el punto de trabajo se encuentra


en la posicin a 0,1 s antes del punto p2 o p4 respectivamente.
Gestin de errores
Si el resultado del argumento ScaleValue programado para la seal analgica
de salida especificada AOp en alguna de las instrucciones TriggSpeed est fuera
del lmite de la seal analgica que corresponde a la velocidad Speed programada
en esta instruccin, la variable de sistema ERRNO cambia a ERR_AO_LIM.
Si el argumento DipLag programado en alguna de las instrucciones TriggSpeed
conectadas es demasiado grande respecto del tiempo preestablecido para los
eventos en los parmetros del sistema, la variable de sistema ERRNO cambia a
ERR_DIPLAG_LIM.
El valor de la variable de sistema ERRNO puede cambiarse a ERR_NORUNUNIT
si no hay ningn contacto con la unidad de E/S al introducir la instruccin y los
datos triggdata utilizados dependen de una unidad de E/S en funcionamiento, es
decir, que se utiliza una seal en los datos triggdata.
Estos errores pueden ser gestionados en el gestor de errores.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.206 TriggC - Movimiento circular del robot con eventos
Continuacin
Limitaciones
Limitaciones generales acorde con la instruccin MoveC.
Si el punto de inicio actual se desva del punto habitual, de forma que la longitud
de posicionamiento total de la instruccin TriggC es ms corta de lo habitual, es
posible que todas las condiciones de disparo o algunas de ellas se satisfagan
inmediatamente en la misma posicin. En estos casos, la secuencia en la que se
realizan las actividades de disparo no estar definida. La lgica de programa del
programa del usuario no puede basarse en una secuencia normal de actividades
de disparo para un movimiento incompleto.
AVISO!
No se debe iniciar la instruccin TriggC desde el principio con la posicin del
robot ms all del punto de crculo. De lo contrario, el robot no toma la trayectoria
programada (posicionamiento alrededor de la trayectoria circular en otra
direccin, en comparacin con la programada).
Sintaxis
TriggC
[ \ Conc ,]
[ CirPoint := ] < expression (IN) of robtarget > ,
[ ToPoint := ] < expression (IN) of robtarget > ,
[ \ ID := < expression (IN) of identno >] ,
[ Speed := ] < expression (IN) of speeddata >
[ \ T := < expression (IN) of num > ] ,
[Trigg_1 := ] < variable (VAR) of triggdata >
[ \ T2 := < variable (VAR) of triggdata > ]
[ \ T3 := < variable (VAR) of triggdata > ]
[ \ T4 := < variable (VAR) of triggdata > ]
[ \ T5 := < variable (VAR) of triggdata > ]
[ \ T6 := < variable (VAR) of triggdata > ]
[ \ T7 := < variable (VAR) of triggdata > ]
[ \ T8 := < variable (VAR) of triggdata > ] ,
[Zone := ] < expression (IN) of zonedata >
[ \ Inpos := < expression (IN) of stoppointdata > ],
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj := < persistent (PERS) of wobjdata > ]
[ \ Corr ];

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Movimiento lineal con disparadores TriggL - Movimiento lineal del robot con eventos en
la pgina 646
Movimiento de ejes con disparadores TriggJ - Movimientos de ejes del robot a partir de
eventos en la pgina 639
Movimiento del robot en crculo

MoveC - Mueve el robot en crculo en la pgina 246

Contina en la pgina siguiente


614

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.206 TriggC - Movimiento circular del robot con eventos
Continuacin
Para obtener ms informacin so- Consulte
bre
Definicin de disparadores

TriggIO - Define un evento de E/S de posicin o


tiempo fijos cerca de un punto de paro en la pgina 633
TriggEquip - Define un evento de E/S basado en la
posicin y el tiempo en la trayectoria en la pgina 622
TriggInt - Define una interrupcin dependiente de
una posicin en la pgina 628
TriggCheckIO - Define una comprobacin de E/S en
una posicin fija en la pgina 616
TriggRampAO - Define un evento AO de rampa de
posicin fija en la trayectoria en la pgina 659
TriggSpeed - Define la velocidad del TCP en proporcin a una salida analgica con un evento de escala
fija de posicin-tiempo en la pgina 666

Escritura en una entrada de correc- CorrWrite - Escribe en un generador de correcciones


cin
en la pgina 81
Movimiento circular

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Definicin de datos de punto de paro stoppointdata - Datos de punto de paro en la pgina 1280
Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina1323

Movimiento en general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.207 TriggCheckIO - Define una comprobacin de E/S en una posicin fija

1.207 TriggCheckIO - Define una comprobacin de E/S en una posicin fija


Utilizacin
TriggCheckIO se utiliza para definir condiciones de prueba del valor de una seal
digital, un grupo de seales o una seal analgica de entrada y salida en una
posicin fija a lo largo de la trayectoria de movimiento del robot. Si la condicin
se cumple, no tendr lugar ninguna accin especfica. Sin embargo, si no se
cumple, se ejecuta una rutina de interrupcin despus de que el robot se ha
detenido (opcionalmente) en la trayectoria en el tiempo ms breve posible.
Para conseguir una comprobacin de E/S en un punto fijo, TriggCheckIO
compensa el retardo del sistema de control (el retardo entre el servo y el robot).
Los datos definidos se utilizan para la implementacin o instrucciones TriggL,
TriggC o TriggJ posteriores.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
TriggCheckIO.
Consulte tambin Ms ejemplos en la pgina 619.
Ejemplo 1
VAR triggdata checkgrip;
VAR intnum intno1;
PROC main()
CONNECT intno1 WITH trap1;
TriggCheckIO checkgrip, 100, airok, EQ, 1, intno1;
TriggL p1, v500, checkgrip, z50, grip1;

La seal digital de entrada airok se comprueba para determinar si tiene el valor


1 cuando el TCP se encuentra a 100 mm antes del punto p1. Si est activada, la
ejecucin normal del programa contina. Si no est activada, se ejecuta la rutina
de interrupcin trap1.
En la figura se muestra un ejemplo de comprobacin de E/S basado en una posicin
fija.

xx0500002254_en

Contina en la pgina siguiente


616

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.207 TriggCheckIO - Define una comprobacin de E/S en una posicin fija
Continuacin
Argumentos
TriggCheckIO TriggData Distance [\Start] | [\Time] Signal Relation
CheckValue |CheckDvalue [\StopMove] Interrupt

TriggData
Tipo de dato: triggdata
Una variable para almacenar el triggdata devuelto por la instruccin. Estos
datos triggdata se utilizan a continuacin en las instrucciones TriggL, TriggC
o TriggJ posteriores.
Distance
Tipo de dato: num
Define la posicin de la trayectoria en la que debe producirse la comprobacin de
E/S.
Se especifica como la distancia en mm (valor positivo) desde el punto final de la
trayectoria de movimiento (aplicable si no se utiliza el argumento \Start o \Time).
Consulte la seccin Ejecucin de programas para obtener ms detalles.
[ \Start ]
Tipo de dato: switch
Se utiliza cuando la distancia del argumento Distance comienza en el punto de
inicio del movimiento en lugar del punto final.
[ \Time ]
Tipo de dato: switch
Se utiliza cuando el valor especificado para el argumento Distance es en realidad
un tiempo en segundos (valor positivo) en lugar de una distancia.
La posicin fija de E/S basada en tiempo slo puede usarse con tiempos breves
(< 0,5 s) antes de que el robot alcance el punto final de la instruccin. Consulte la
seccin Limitaciones para obtener ms detalles.
Signal
Tipo de dato: signalxx
El nombre de la seal que se comprobar. Puede ser cualquier tipo de seal de
E/S.
Relation
Tipo de dato: opnum
Define cmo comparar el valor actual de la seal con el definido en el argumento
CheckValue. Consulte el tipo de dato opnum para ver la lista de constantes
predefinidas que se debe usar.
CheckValue
Tipo de dato: num
El valor con el que debe compararse el valor actual de la seal de entrada o salida
(dentro del rango permitido para la seal actual). Si la seal es una seal digital,
debe ser un valor entero.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.207 TriggCheckIO - Define una comprobacin de E/S en una posicin fija
Continuacin
Si la seal es una seal digital de grupo, el valor permitido depende del nmero
de seales del grupo. El valor mximo que puede usarse en el argumento
CheckValue es de 8388608, que es el valor que una seal digital de grupo de 23
bits puede tener como valor mximo (consulte los rangos vlidos para num).
CheckDvalue
Tipo de dato: dnum
El valor con el que debe compararse el valor actual de la seal de entrada o salida
(dentro del rango permitido para la seal actual). Si la seal es una seal digital,
debe ser un valor entero.
Si la seal es una seal digital de grupo, el valor permitido depende del nmero
de seales del grupo. El valor mximo de los bits de seales que puede tener una
seal digital de grupo es de 32. Con una variable dnumes posible cubrir los valores
del 0 al 4294967295, que constituyen el rango que puede tener una seal digital
de 32 bits.
[ \StopMove ]
Tipo de dato: switch
Especifica que si no se cumple la seal, el robot se detiene en la trayectoria lo
antes posible antes de que la rutina de interrupcin se ejecute.
Interrupt
Tipo de dato: intnum
La variable utilizada para identificar la rutina de interrupcin a ejecutar.
Ejecucin de programas
Cuando se ejecuta la instruccin TriggCheckIO, la condicin de disparo se
almacena en una variable especificada para el argumento TriggData.
A continuacin, cuando se ejecuta una de las instrucciones TriggL, TriggC o
TriggJ, se aplica lo siguiente en cuanto a las definiciones de TriggCheckIO:
En la tabla se describe la distancia especificada en el argumento Distance:
Movimiento lineal

La distancia en lnea recta

Movimiento circular

La longitud del arco del crculo

Movimiento no lineal

La longitud de arco aproximada a lo largo de la


trayectoria (para conseguir la exactitud adecuada, la distancia no debe superar la mitad de la
longitud del arco).

Contina en la pgina siguiente


618

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.207 TriggCheckIO - Define una comprobacin de E/S en una posicin fija
Continuacin
La figura muestra la comprobacin de E/S en una posicin fija con una trayectoria
de esquina.
Punto final
con trayectoria
de esquina
Si la distancia es 0, la seal se comprueba
cuando el TCP se encuentra aqu

xx0500002256_es

La comprobacin de la E/S con una posicin fija se realiza cuando se atraviesa el


punto de inicio (punto final) si la distancia especificada respecto del punto final
(punto de inicio) no se encuentra dentro de la longitud de movimiento de la
instruccin actual (TriggL...).
Cuando el TCP se encuentra en el punto especificado de la trayectoria, se realiza
la comprobacin de E/S siguiente en el sistema:

Lectura del valor actual de la seal de E/S.

Comparacin del valor ledo con CheckValue, acorde con la relacin


especificada en Relation.

Si la comparacin da como resultado TRUE, no se hace nada ms

Si la comparacin da como resultado FALSE, se hace lo siguiente:

Si est presente el parmetro opcional \StopMove, el robot se detiene en


la trayectoria lo antes posible.

Se genera y se ejecuta la rutina TRAP especificada.

Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin TriggCheckIO.
Ejemplo 1
VAR triggdata checkgate;
VAR intnum gateclosed;
PROC main()
CONNECT gateclosed WITH waitgate;
TriggCheckIO checkgate,150, gatedi, EQ, 1 \StopMove, gateclosed;
TriggL p1, v600, checkgate, z50, grip1;
...
TRAP waitgate
! log some information
...
WaitDI gatedi,1;
StartMove;
ENDTRAP

Se comprueba la puerta de la siguiente operacin con una pieza de trabajo para


determinar si est abierta (se comprueba la seal digital de entrada gatedi para
determinar si tiene el valor 1) cuando el TCP se encuentra 150 mm antes del punto
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.207 TriggCheckIO - Define una comprobacin de E/S en una posicin fija
Continuacin
p1. Si est abierta, el robot se desplaza hasta p1 y contina. Si no est abierta, el
robot se detiene en la trayectoria y se ejecuta la rutina de interrupcin waitgate.
Esta rutina de interrupcin registra determinada informacin y suele esperar a que
se satisfagan las condiciones para ejecutar una instruccin StartMove con el fin
de reanudar la trayectoria interrumpida.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_GO_LIM
si el argumento programado CheckValue o CheckDvalue para la seal digital de
salida de grupo especificada Signal est fuera de lmites.
ERR_AO_LIM
si el argumento programado CheckValue o CheckDvalue para la seal analgica
de salida especificada Signal est fuera de lmites.
Limitaciones
La comprobacin de E/S basada en una distancia (sin el argumento \Time) se ha
diseado para los puntos de paso (trayectorias de esquina). Las comprobaciones
de E/S basadas en distancia, con puntos de paro, presentan una exactitud menor
que la especificada a continuacin.
La comprobacin de E/S basada en tiempo (con el argumento \Time) se ha
diseado para los puntos de paro. Las comprobaciones de E/S basadas en tiempo,
con puntos de paso, presentan una exactitud menor que la especificada a
continuacin.
Las comprobaciones de E/S basadas en tiempo slo pueden especificarse a partir
del punto final del movimiento. Este tiempo no puede superar el tiempo de frenado
actual del robot, que tiene un mximo aproximado de 0,5 s (valores tpicos a una
velocidad de 500 mm/s: 150 ms en el caso del IRB2400 y de 250 ms en el caso
del IRB6400). Si el tiempo especificado es mayor que el tiempo de frenado actual,
la comprobacin de E/S se genera en cualquier caso, pero no hasta que se inicia
el frenado (ms tarde de lo especificado). Sin embargo, la totalidad del tiempo de
movimiento para el movimiento actual puede utilizarse durante los movimientos
pequeos y rpidos.
Los valores absolutos tpicos en cuanto a la exactitud de las pruebas de entradas
digitales es de +/- 5 ms. Los valores tpicos en cuanto a la repeticin de las pruebas
de entradas digitales es de +/- 2 ms.

Contina en la pgina siguiente


620

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.207 TriggCheckIO - Define una comprobacin de E/S en una posicin fija
Continuacin
Sintaxis
TriggCheckIO
[ TriggData := ] < variable (VAR) of triggdata> ,
[ Distance := ] < expression (IN) of num>
[ \ Start ] | [ \ Time ] ,
[ Signal := ] < variable (VAR) of anytype> ,
[ Relation := ] < expression (IN) of opnum> ,
[ CheckValue := ] < expression (IN) of num>
| [ CheckDvalue := ] < expression (IN) of dnum>
[ \ StopMove] ,
[ Interrupt := ] < variable(VAR) of intnum> ;

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Utilizacin de disparadores

TriggL - Movimiento lineal del robot con eventos en


la pgina 646
TriggC - Movimiento circular del robot con eventos
en la pgina 609
TriggJ - Movimientos de ejes del robot a partir de
eventos en la pgina 639

Definicin de eventos de E/S basa- TriggIO - Define un evento de E/S de posicin o


dos en la posicin y el tiempo
tiempo fijos cerca de un punto de paro en la pgina 633
TriggEquip - Define un evento de E/S basado en la
posicin y el tiempo en la trayectoria en la pgina 622
Definicin de interrupciones basadas TriggInt - Define una interrupcin dependiente de
en la posicin
una posicin en la pgina 628
Almacenamiento de datos de disparo triggdata - Eventos de posicionamiento, trigg en la
pgina 1311
Definicin de operadores de compa- opnum - Operador de comparacin en la pgina 1237I
racin

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.208 TriggEquip - Define un evento de E/S basado en la posicin y el tiempo en la trayectoria

1.208 TriggEquip - Define un evento de E/S basado en la posicin y el tiempo en la


trayectoria
Utilizacin
TriggEquip (Trigg Equipment) se utiliza para definir condiciones y acciones para
la activacin de una seal digital, un grupo de seales digitales o una seal
analgica de salida en una posicin fija a lo largo de la trayectoria de movimiento
del robot, con la posibilidad de aplicar una compensacin de tiempo para el retardo
del equipo externo.
Siempre debe usarse TriggIO (no TriggEquip) si se necesita una buena exactitud
de los ajustes de E/S cerca de un punto de paro.
Los datos definidos se utilizan para la implementacin o instrucciones TriggL,
TriggC o TriggJ posteriores.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TriggEquip.
Consulte tambin Ms ejemplos en la pgina 625.
Ejemplo 1
VAR triggdata gunon;
...
TriggEquip gunon, 10, 0.1 \DOp:=gun, 1;
TriggL p1, v500, gunon, z50, gun1;

La herramienta gun1 empieza a abrirse cuando su TCP se encuentra 0,1 s antes


del punto ficticio p2 (10 mm antes del punto p1). La pistola est totalmente abierta
cuando el TCP alcanza el punto p2.
En la figura se muestra un ejemplo de evento de E/S basado en una posicin y un
tiempo fijos.
Punto de inicio

TriggL p1, v500, gunon, z50, gun1;

Punto final p1

10 mm
Punto p2 para apertura
de la pistola
xx0500002260_es

Argumentos
TriggEquip TriggData Distance [\Start] EquipLag [\DOp] | [\GOp]|
[\AOp] | [\ProcID] SetValue | SetDvalue [\Inhib]

TriggData
Tipo de dato: triggdata

Contina en la pgina siguiente


622

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.208 TriggEquip - Define un evento de E/S basado en la posicin y el tiempo en la trayectoria
Continuacin
Una variable para almacenar el triggdata devuelto por la instruccin. Estos
datos triggdata se utilizan a continuacin en las instrucciones TriggL, TriggC
o TriggJ posteriores.
Distance
Tipo de dato: num
Define la posicin de la trayectoria en la que debe producirse el evento de equipo
de E/S.
Se especifica como la distancia en mm (valor positivo) desde el punto final de la
trayectoria de movimiento (aplicable si no se utiliza el argumento \Start).
Consulte la seccin Ejecucin de programas para obtener ms detalles.
[ \Start ]
Tipo de dato: switch
Se utiliza cuando la distancia del argumento Distance comienza en el punto de
inicio del movimiento en lugar del punto final.
EquipLag
Equipment Lag
Tipo de dato: num
Especifica el retardo del equipo externo, en segundos.
Para la compensacin del retardo de los equipos externos, utilice un valor de
argumento positivo. Un valor positivo en el argumento significa que la seal de
E/S es activada por el sistema de robot en el momento especificado, antes de que
el TCP alcance fsicamente la distancia especificada respecto del punto de inicio
o final del movimiento.
Un valor de argumento negativo significa que la seal de E/S es activada por el
sistema de robot en el momento especificado, despus de que el TCP fsico haya
sobrepasado la distancia especificada respecto del punto de inicio o final del
movimiento.
En la figura se muestra el uso del argumento EquipLag.

Punto final

Punto de inicio
Distancia
\Start

Distancia

EquipLag
xx0500002262_es

[ \DOp ]
Digital Output
Tipo de dato: signaldo
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.208 TriggEquip - Define un evento de E/S basado en la posicin y el tiempo en la trayectoria
Continuacin
El nombre de la seal cuando es necesario cambiar una seal digital de salida.
[ \GOp ]
Group Output
Tipo de dato: signalgo
El nombre de la seal, cuando es necesario cambiar un grupo de seales digitales
de salida.
[ \AOp ]
Analog Output
Tipo de dato: signalao
El nombre de la seal cuando es necesario cambiar una seal analgica de salida.
[ \ProcID ]
Process Identity
Tipo de dato: num
No implementado para uso del cliente.
(La identidad del proceso IPM que debe recibir el evento. El selector se especifica
en el argumento SetValue.)
SetValue
Tipo de dato: num
El valor deseado para la seal (dentro del rango permitido para la seal actual).
Si la seal es una seal digital, debe ser un valor entero. Si la seal es una seal
digital de grupo, el valor permitido depende del nmero de seales del grupo. El
valor mximo que puede usarse en el argumento SetValue es de 8388608, que
es el valor que una seal digital de grupo de 23 bits puede tener como valor mximo
(consulte los rangos vlidos para num).
SetDvalue
Tipo de dato: dnum
El valor deseado para la seal (dentro del rango permitido para la seal actual).
Si la seal es una seal digital, debe ser un valor entero. Si la seal es una seal
digital de grupo, el valor permitido depende del nmero de seales del grupo. El
valor mximo de los bits de seales que puede tener una seal digital de grupo
es de 32. Con una variable dnumes posible cubrir los valores del 0 al 4294967295,
que constituyen el rango que puede tener una seal digital de 32 bits.
[ \Inhib ]
Inhibit
Tipo de dato: bool
El nombre de un indicador de variable persistente para la inhibicin del valor de
la seal en tiempo de ejecucin.
Si se utiliza este argumento opcional y el valor actual del indicador especificado
es TRUE en la posicin y el momento del establecimiento de la seal analgica,
la seal especificada (DOp, GOp o AOp) se cambia a 0 en lugar del valor especificado.

Contina en la pgina siguiente


624

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.208 TriggEquip - Define un evento de E/S basado en la posicin y el tiempo en la trayectoria
Continuacin
Ejecucin de programas
Cuando se ejecuta la instruccin TriggEquip, la condicin de disparo se almacena
en una variable especificada para el argumento TriggData.
A continuacin, cuando se ejecuta una de las instrucciones TriggL, TriggC o
TriggJ, se aplica lo siguiente en cuanto a las definiciones de TriggEquip:
En la tabla se describe la distancia especificada en el argumento Distance:
Movimiento lineal

La distancia en lnea recta

Movimiento circular

La longitud del arco del crculo

Movimiento no lineal

La longitud de arco aproximada a lo largo de


la trayectoria (para conseguir la exactitud
adecuada, la distancia no debe superar la
mitad de la longitud del arco).

La figura muestra la E/S en una posicin y un tiempo fijos con una trayectoria de
esquina.
Punto final
con trayectoria
de esquina
Si la distancia es 0, la seal de salida se
activa cuando el TCP se encuentra aqu

xx0500002263_es

El evento dependiente de la posicin y del tiempo se genera cuando se atraviesa


el punto de inicio (punto final) si la distancia especificada respecto del punto final
(punto de inicio) no se encuentra dentro de la longitud de movimiento de la
instruccin actual (TriggL...). Cuando se usa el argumento EquipLag con un
tiempo (retardo) negativo, la seal de E/S puede activarse despus del punto final.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin TriggEquip.
Ejemplo 1
VAR triggdata glueflow;
...
TriggEquip glueflow, 1 \Start, 0.05 \AOp:=glue, 5.3;
MoveJ p1, v1000, z50, tool1;
TriggL p2, v500, glueflow, z50, tool1;

La seal analgica de salida glue cambia al valor 5.3 cuando el TCP atraviesa
un punto situado a 1 mm despus del punto de inicio p1 , con una compensacin
de retardo del equipo de 0.05 s.
Ejemplo 2
...
TriggL p3, v500, glueflow, z50, tool1;

La seal analgica de salida glue cambia de nuevo al valor 5.3 cuando el TCP
atraviesa un punto situado a 1 mm despus del punto de inicio p2.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.208 TriggEquip - Define un evento de E/S basado en la posicin y el tiempo en la trayectoria
Continuacin
Gestin de errores
Si el argumento SetValue programado para la seal analgica de salida AOp est
fuera de lmites, la variable de sistema ERRNO cambia a ERR_AO_LIM. El error
puede ser gestionado en el gestor de errores.
Si el argumento programado SetValue o SetDvalue para la seal digital de salida
de grupo especificada GOp est fuera de lmites, la variable de sistema ERRNO
cambia a ERR_GO_LIM. El error puede ser gestionado en el gestor de errores.
Limitaciones
Los eventos de E/S basados en una distancia se han diseado para los puntos de
paso (trayectorias de esquina). Los eventos de E/S basados en distancia, con
puntos de paro, presentan una exactitud menor que la especificada a continuacin.
En cuanto a la exactitud de los eventos de E/S con distancia y con puntos de paso,
se aplica lo siguiente a la hora de activar una salida digital a una distancia especfica
del punto de inicio o del punto final con las instrucciones TriggL o TriggC:

La exactitud especificada a continuacin es vlida para un parmetro


EquipLag positivo < 40 ms, equivalente al retardo del servo del robot (sin
cambiar el parmetro de sistema Event Preset Time). El retardo puede
variar de un tipo de robot a otro. Por ejemplo, es menor en el caso del IRB140.

La exactitud especificada a continuacin es vlida para un parmetro


EquipLag positivo < valor configurado en Event Preset Time
(parmetro de sistema).

La exactitud especificada a continuacin es vlida para un parmetro


EquipLag positivo > valor configurado en Event Preset Time
(parmetro de sistema). En este caso, se utiliza un mtodo aproximado que
no tiene en cuenta las limitaciones dinmicas del robot. Es necesario usar
SingArea \Wrist para conseguir una exactitud aceptable.

La exactitud especificada a continuacin es vlida para un valor negativo


de EquipLag.

Los valores absolutos tpicos en cuanto a la exactitud al activar salidas digitales


es de +/- 5 ms.
Los valores absolutos tpicos en cuanto a la repeticin al activar salidas digitales
es de +/- 2 ms.

Contina en la pgina siguiente


626

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.208 TriggEquip - Define un evento de E/S basado en la posicin y el tiempo en la trayectoria
Continuacin
Sintaxis
TriggEquip
[ TriggData := ] < variable (VAR) of triggdata> ,
[ Distance := ] < expression (IN) of num>
[ \ Start ] ,
[ EquipLag := ] < expression (IN) of num>
[ \ DOp := < variable (VAR) of signaldo> ]
| [ \ GOp := < variable (VAR) of signalgo> ]
| [ \ AOp := < variable (VAR) of signalao> ]
| [ \ ProcID := < expression (IN) of num> ] ,
[ SetValue := ] < expression (IN) of num>
| [ SetDvalue := ] < expression (IN) of dnum>
[ \ Inhib := < persistent (PERS) of bool> ] ,

Informacin relacionada
Para obtener ms informacin sobre Consulte
Utilizacin de disparadores

TriggL - Movimiento lineal del robot con eventos


en la pgina 646
TriggC - Movimiento circular del robot con eventos
en la pgina 609
TriggJ - Movimientos de ejes del robot a partir de
eventos en la pgina 639

Definicin de otros disparos

TriggIO - Define un evento de E/S de posicin o


tiempo fijos cerca de un punto de paro en la pgina 633
TriggInt - Define una interrupcin dependiente de
una posicin en la pgina 628

Definicin de una comprobacin de E/S TriggCheckIO - Define una comprobacin de E/S


en una posicin fija
en una posicin fija en la pgina 616
Almacenamiento de datos de disparo

triggdata - Eventos de posicionamiento, trigg en


la pgina 1311

Establecimiento de E/S

SetDO - Cambia el valor de una seal digital de


salida en la pgina 469
SetGO - Cambia el valor de un grupo de seales
digitales de salida en la pgina 471
SetAO - Cambia el valor de una seal analgica
de salida en la pgina 460

Configuracin de Event preset time

Manual de referencia tcnica - Parmetros del


sistema, seccin Motion

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.209 TriggInt - Define una interrupcin dependiente de una posicin

1.209 TriggInt - Define una interrupcin dependiente de una posicin


Utilizacin
TriggInt se utiliza para definir las condiciones y acciones de ejecucin de una
rutina de interrupcin en una posicin especfica que se encuentra en la trayectoria
de movimiento del robot.
Los datos definidos se utilizan para la implementacin o instrucciones TriggL,
TriggC o TriggJ posteriores.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TriggInt.
Ejemplo 1
VAR intnum intno1;
VAR triggdata trigg1;
...
PROC main()
CONNECT intno1 WITH trap1;
TriggInt trigg1, 5, intno1;
...
TriggL p1, v500, trigg1, z50, gun1;
TriggL p2, v500, trigg1, z50, gun1;
...
IDelete intno1;

Se ejecuta la rutina de interrupcin trap1 cuando el TCP se encuentra en una


posicin a 5 mm antes del punto p1 o p2 respectivamente.
En la figura se muestra un ejemplo de interrupcin relacionada con una posicin.
Punto de inicio TriggL p1, v500, trigg1, z50, gun1;

Punto final p1 o p2

5 mm
La interrupcin se genera
cuando el TCP se encuentra aqu
xx0500002251_es

Argumentos
TriggInt TriggData Distance [\Start] | [\Time] Interrupt

TriggData
Tipo de dato: triggdata
Una variable para almacenar el triggdata devuelto por la instruccin. Estos
datos triggdata se utilizan a continuacin en las instrucciones TriggL, TriggC
o TriggJ posteriores.
Contina en la pgina siguiente
628

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.209 TriggInt - Define una interrupcin dependiente de una posicin
Continuacin
Distance
Tipo de dato: num
Define la posicin en la que debe generarse la interrupcin dentro de la trayectoria.
Se especifica como la distancia en mm (valor positivo) desde el punto final de la
trayectoria de movimiento (aplicable si no se utiliza el argumento \Start o \Time).
Consulte la seccin Ejecucin de programas para obtener ms detalles.
[ \Start ]
Tipo de dato: switch
Se utiliza cuando la distancia del argumento Distance comienza en el punto de
inicio del movimiento en lugar del punto final.
[ \Time ]
Tipo de dato: switch
Se utiliza cuando el valor especificado para el argumento Distance es en realidad
un tiempo en segundos (valor positivo) en lugar de una distancia.
Las interrupciones relacionadas con una posicin y basadas en tiempo slo puede
usarse con tiempos breves (< 0,5 s) antes de que el robot alcance el punto final
de la instruccin. Consulte la seccin Limitaciones para obtener ms detalles.
Interrupt
Tipo de dato: intnum
La variable utilizada para identificar una interrupcin.
Ejecucin de programas
Cuando se ejecuta la instruccin TriggInt, la informacin se almacena en una
variable especificada para el argumento TriggData y se activa la interrupcin
especificada en la variable del argumento Interrupt.
A continuacin, cuando se ejecuta una de las instrucciones TriggL, TriggC o
TriggJ, se aplica lo siguiente en cuanto a las definiciones de TriggInt:
En la tabla se describe la distancia especificada en el argumento Distance:
Movimiento lineal

La distancia en lnea recta

Movimiento circular

La longitud del arco del crculo

Movimiento no lineal

La longitud de arco aproximada a lo largo de


la trayectoria (para conseguir la exactitud
adecuada, la distancia no debe superar la mitad de la longitud del arco).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.209 TriggInt - Define una interrupcin dependiente de una posicin
Continuacin
La figura muestra una interrupcin relacionada con una posicin de una trayectoria
de esquina.
Punto final
con trayectoria
de esquina
Si la distancia es 0, la interrupcin se
genera cuando el TCP se encuentra aqu

xx0500002253_es

La interrupcin relacionada con la posicin se genera cuando se atraviesa el punto


de inicio (punto final) si la distancia especificada respecto del punto final (punto
de inicio) no se encuentra dentro de la longitud de movimiento de la instruccin
actual (TriggL...).
Se considera que la interrupcin es una interrupcin segura. Una interrupcin
segura no puede ponerse en reposo con la instruccin ISleep. El evento de
interrupcin segura se almacena en la cola en caso de paro del programa y
ejecucin paso a paso y cuando se inicia de nuevo en el modo continuo, la
interrupcin se ejecuta. El nico momento en el que una interrupcin segura se
desecha es cuando la cola de interrupciones est llena. En este caso se genera
un error. La interrupcin no sobrevive al restablecimiento del programa, por ejemplo
el traslado del PP a main.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin TriggInt.
Ejemplo 1
En este ejemplo se describe la programacin de las instrucciones que interactan
para generar interrupciones dependientes de una posicin:
VAR intnum intno2;
VAR triggdata trigg2;

Declaracin de las variables intno2 y trigg2 ( no se inicia).


CONNECT intno2 WITH trap2;

Asignacin de nmeros de interrupcin almacenados en la variable intno2.


El nmero de interrupcin est asociado a la rutina de interrupcin trap2.
TriggInt trigg2, 0, intno2;

El nmero de interrupcin de la variable intno2 se marca como utilizado.

Se activa la interrupcin.

Las condiciones de disparo y el nmero de interrupcin definidos se


almacenan en la variable trigg2
TriggL p1, v500, trigg2, z50, gun1;

El robot se mueve hacia el punto p1.

Cuando el TCP alcanza el punto p1, se genera una interrupcin y se ejecuta


la rutina de interrupcin trap2.
TriggL p2, v500, trigg2, z50, gun1;

Contina en la pgina siguiente


630

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.209 TriggInt - Define una interrupcin dependiente de una posicin
Continuacin

El robot se mueve hacia el punto p2.

Cuando el TCP alcanza el punto p2, se genera una interrupcin y se ejecuta


la rutina de interrupcin trap2 de nuevo.
IDelete intno2;

Se anula la asignacin del nmero de interrupcin de la variable intno2.

Limitaciones
Los eventos de interrupcin basados en una distancia (sin el argumento \Time)
se han diseado para los puntos de paso (trayectorias de esquina). Los eventos
de interrupcin basados en distancia, con puntos de paro, presentan una exactitud
menor que la especificada a continuacin.
Los eventos de interrupcin basados en tiempo (con el argumento \Time) se han
diseado para los puntos de paro. Los eventos de interrupcin basados en tiempo,
con puntos de paso, presentan una exactitud menor que la especificada a
continuacin. Los eventos de E/S basados en tiempo slo pueden especificarse
a partir del punto final del movimiento. Este tiempo no puede superar el tiempo
de frenado actual del robot, que tiene un mximo aproximado de 0,5 s (valores
tpicos a una velocidad de 500 mm/s: 150 ms en el caso del IRB2400 y de 250 ms
en el caso del IRB6400). Si el tiempo especificado es mayor que el tiempo de
frenado actual, el evento se genera en cualquier caso, pero no hasta que se inicia
el frenado (ms tarde de lo especificado). Sin embargo, la totalidad del tiempo de
movimiento para el movimiento actual puede utilizarse durante los movimientos
pequeos y rpidos.
Los valores absolutos tpicos en cuanto a la exactitud de la generacin de
interrupciones son de +/- 5 ms. Los valores tpicos en cuanto a la repeticin la
generacin de interrupciones son de +/- 2 ms. Normalmente, existe un retardo de
2 a 30 ms entre la generacin de interrupciones y la respuesta, en funcin del tipo
de movimiento que se realiza en el momento de la interrupcin. (Consulte el Manual
de referencia de RAPID - Descripcin general de RAPID, seccin Caractersticas
bsicas - Interrupciones).
Para obtener la mayor exactitud al activar una salida en una posicin fija a lo largo
de la trayectoria del robot, utilice preferentemente las instrucciones TriggIO o
TriggEquip en lugar de las instrucciones TriggInt con SetDO/SetGO/SetAO
en rutinas de interrupcin.
Sintaxis
TriggInt
[ TriggData := ] < variable (VAR) of triggdata> ,
[ Distance := ] < expression (IN) of num>
[ \ Start ] | [ \ Time ] ,
[ Interrupt := ] < variable (VAR) ofintnum> ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.209 TriggInt - Define una interrupcin dependiente de una posicin
Continuacin
Informacin relacionada
Para obtener ms informacin sobre Consulte
Utilizacin de disparadores

TriggL - Movimiento lineal del robot con eventos en


la pgina 646
TriggC - Movimiento circular del robot con eventos
en la pgina 609
TriggJ - Movimientos de ejes del robot a partir de
eventos en la pgina 639

Definicin de E/S de posicin fija

TriggIO - Define un evento de E/S de posicin o


tiempo fijos cerca de un punto de paro en la pgina 633
TriggEquip - Define un evento de E/S basado en la
posicin y el tiempo en la trayectoria en la pgina 622

Definicin de una comprobacin de


E/S en una posicin fija

TriggCheckIO - Define una comprobacin de E/S en


una posicin fija en la pgina 616

Almacenamiento de datos de disparo triggdata - Eventos de posicionamiento, trigg en la


pgina 1311
Interrupciones

Technical reference manual - RAPID overview, seccin Caractersticas bsicas - Interrupciones

632

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.210 TriggIO - Define un evento de E/S de posicin o tiempo fijos cerca de un punto de paro

1.210 TriggIO - Define un evento de E/S de posicin o tiempo fijos cerca de un punto
de paro
Utilizacin
TriggIO se utiliza para definir condiciones y acciones para el establecimiento de
una seal digital, un grupo de seales digitales o una seal analgica de salida
en una posicin fija a lo largo de la trayectoria de movimiento del robot.
Siempre debe usarse TriggIO (no TriggEquip) si se necesita una buena exactitud
de los ajustes de E/S cerca de un punto de paro.
Para obtener un evento de E/S en una posicin determinada, TriggIO compensa
el retardo del sistema de control (el retardo entre el robot y el servo), pero no los
retardos de los equipos externos. Para la compensacin de los dos retardos, utilice
TriggEquip.
Los datos definidos se utilizan para la implementacin o instrucciones TriggL,
TriggC o TriggJ posteriores.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TriggIO.
Consulte tambin Ms ejemplos en la pgina 636.
Ejemplo 1
VAR triggdata gunon;
...
TriggIO gunon, 0.2\Time\DOp:=gun, 1;
TriggL p1, v500, gunon, fine, gun1;

La seal digital de salida gun cambia al valor 1 cuando el TCP se encuentra a


0,2 s antes del punto p1.
En la figura se muestra un ejemplo de evento de E/S basado en una posicin fija.
Punto de inicio TriggL p1, v500, gunon, fine, gun1;

Punto final p1

0,2 s
La seal de salida gun se activa
cuando el TCP se encuentra aqu
xx0500002247_es

Argumentos
TriggIO TriggData Distance [\Start] | [\Time] [\DOp] | [\GOp]|
[\AOp] | [\ProcID] SetValue | SetDvalue [\DODelay]

TriggData
Tipo de dato: triggdata
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.210 TriggIO - Define un evento de E/S de posicin o tiempo fijos cerca de un punto de paro
Continuacin
Una variable para almacenar el triggdata devuelto por la instruccin. Estos
datos triggdata se utilizan a continuacin en las instrucciones TriggL, TriggC
o TriggJ posteriores.
Distance
Tipo de dato: num
Define la posicin de la trayectoria en la que debe producirse el evento de E/S.
Se especifica como la distancia en mm (valor positivo) desde el punto final de la
trayectoria de movimiento (aplicable si no se utiliza el argumento \Start o \Time).
Consulte las secciones tituladas Ejecucin de programas en la pgina 635 y
Limitaciones en la pgina 636 para obtener ms detalles.
[ \Start ]
Tipo de dato: switch
Se utiliza cuando la distancia del argumento Distance comienza en el punto de
inicio del movimiento en lugar del punto final.
[ \Time ]
Tipo de dato: switch
Se utiliza cuando el valor especificado para el argumento Distance es en realidad
un tiempo en segundos (valor positivo) en lugar de una distancia.
La posicin fija de E/S basada en tiempo slo puede usarse con tiempos breves
(< 0,5 s) antes de que el robot alcance el punto final de la instruccin. Consulte la
seccin Limitaciones para obtener ms detalles.
[ \DOp ]
Digital Output
Tipo de dato: signaldo
El nombre de la seal cuando es necesario cambiar una seal digital de salida.
[ \GOp ]
Group Output
Tipo de dato: signalgo
El nombre de la seal, cuando es necesario cambiar un grupo de seales digitales
de salida.
[ \AOp ]
Analog Output
Tipo de dato: signalao
El nombre de la seal cuando es necesario cambiar una seal analgica de salida.
[ \ProcID ]
Process Identity
Tipo de dato: num
No implementado para uso del cliente.
(La identidad del proceso IPM que debe recibir el evento. El selector se especifica
en el argumento SetValue.)
Contina en la pgina siguiente
634

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.210 TriggIO - Define un evento de E/S de posicin o tiempo fijos cerca de un punto de paro
Continuacin
SetValue
Tipo de dato: num
El valor deseado para la seal (dentro del rango permitido para la seal actual).
Si la seal es una seal digital, debe ser un valor entero. Si la seal es una seal
digital de grupo, el valor permitido depende del nmero de seales del grupo. El
valor mximo que puede usarse en el argumento SetValue es de 8388608, que
es el valor que una seal digital de grupo de 23 bits puede tener como valor mximo
(consulte los rangos vlidos para num).
SetDvalue
Tipo de dato: d num
El valor deseado para la seal (dentro del rango permitido para la seal actual).
Si la seal es una seal digital, debe ser un valor entero. Si la seal es una seal
digital de grupo, el valor permitido depende del nmero de seales del grupo. El
valor mximo de los bits de seales que puede tener una seal digital de grupo
es de 32. Con una variable dnumes posible cubrir los valores del 0 al 4294967295,
que constituyen el rango que puede tener una seal digital de 32 bits.
[ \DODelay ]
Digital Output Delay
Tipo de dato: num
El retardo de tiempo en segundos (valor positivo) de una salida digital, un grupo
de seales digitales o una salida analgica.
Slo se usa para la definicin de retardos en seales digitales una vez que el robot
ha alcanzado la posicin especificada. Si se omite este argumento, no se utilizar
ningn retardo.
El retardo no est sincronizado con el movimiento.
Ejecucin de programas
Cuando se ejecuta la instruccin TriggIO, la condicin de disparo se almacena
en una variable especificada en el argumento TriggData.
A continuacin, cuando se ejecuta una de las instrucciones TriggL, TriggC o
TriggJ, se aplica lo siguiente en cuanto a las definiciones de TriggIO:
En la tabla siguiente se describe la distancia especificada en el argumento
Distance:
Movimiento lineal

La distancia en lnea recta

Movimiento circular

La longitud del arco del crculo

Movimiento no lineal

La longitud de arco aproximada a lo largo de la


trayectoria (para conseguir la exactitud adecuada, la distancia no debe superar la mitad de la
longitud del arco).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.210 TriggIO - Define un evento de E/S de posicin o tiempo fijos cerca de un punto de paro
Continuacin
La figura muestra la E/S en una posicin fija con una trayectoria de esquina.
Punto final
con trayectoria
de esquina
Si la distancia es 0, la seal de salida se
activa cuando el punto de trabajo del robot
(TCP) se encuentra aqu

xx0500002248_es

La E/S con una posicin fija se genera cuando se atraviesa el punto de inicio (punto
final) si la distancia especificada respecto del punto final (punto de inicio) no se
encuentra dentro de la longitud de movimiento de la instruccin actual (Trigg...).
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin TriggIO.
Ejemplo 1
VAR triggdata glueflow;
TriggIO glueflow, 1 \Start \AOp:=glue, 5.3;
MoveJ p1, v1000, z50, tool1;
TriggL p2, v500, glueflow, z50, tool1;

La seal analgica de salida glue cambia al valor 5.3 cuando el punto de


trabajo (TCP) atraviesa un punto situado 1 mm despus del punto de inicio p1.
Ejemplo 2
...
TriggL p3, v500, glueflow, z50, tool1;

La seal analgica de salida glue cambia de nuevo al valor 5.3 cuando el


punto de (TCP) trabajo atraviesa un punto situado a 1 mm despus del punto de
inicio p2.
Gestin de errores
Si el argumento SetValue programado para la seal analgica de salida AOp est
fuera de lmites, la variable de sistema ERRNO cambia a ERR_AO_LIM. El error
puede ser gestionado en el gestor de errores.
Si el argumento programado SetValue o SetDvalue para la seal digital de salida
de grupo especificada GOp est fuera de lmites, la variable de sistema ERRNO
cambia a ERR_GO_LIM. El error puede ser gestionado en el gestor de errores.
Limitaciones
Los eventos de E/S basados en una distancia (sin el argumento \Time) se han
diseado para los puntos de paso (trayectorias de esquina). Los eventos de E/S
con el parmetro distance=0 y que utilizan puntos de paro retardarn el disparo
hasta que el robot haya alcanzado el punto con una exactitud de +/-24 ms.

Contina en la pgina siguiente


636

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.210 TriggIO - Define un evento de E/S de posicin o tiempo fijos cerca de un punto de paro
Continuacin
Los eventos de E/S basados en tiempo (con el argumento \Time) se han diseado
para los puntos de paro. Los eventos de E/S basados en tiempo, con puntos de
paso, presentan una exactitud menor que la especificada a continuacin. Los
eventos de E/S basados en tiempo slo pueden especificarse a partir del punto
final del movimiento. Este tiempo no puede superar el tiempo de frenado actual
del robot, que tiene un mximo aproximado de 0,5 s (valores tpicos a una velocidad
de 500 mm/s: 150 ms en el caso del IRB2400 y de 250 ms en el caso del IRB6400).
Si el tiempo especificado es mayor que el tiempo de frenado actual, el evento se
genera en cualquier caso, pero no hasta que se inicia el frenado (ms tarde de lo
especificado). Sin embargo, la totalidad del tiempo de movimiento para el
movimiento actual puede utilizarse durante los movimientos pequeos y rpidos.
Los valores absolutos tpicos en cuanto a la exactitud al activar salidas digitales
es de +/- 5 ms. Los valores absolutos tpicos en cuanto a la repeticin al activar
salidas digitales es de +/- 2 ms.
Sintaxis
TriggIO
[ TriggData := ] < variable (VAR) of triggdata> ,
[ Distance := ] < expression (IN) of num>
[ \ Start ] | [ \ Time ]
[ \ DOp := < variable (VAR) of signaldo> ]
| [ \ GOp := < variable (VAR) of signalgo> ]
| [ \ AOp := < variable (VAR) of signalao> ]
| [ \ ProcID := < expression (IN) of num> ] ,
[ SetValue := ] < expression (IN) of num>
| [ SetDvalue := ] < expression (IN) of dnum>
[ \ DODelay := < expression (IN) of num> ] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Utilizacin de disparadores

TriggL - Movimiento lineal del robot con eventos


en la pgina 646
TriggC - Movimiento circular del robot con eventos en la pgina 609
TriggJ - Movimientos de ejes del robot a partir de
eventos en la pgina 639

Definicin de eventos de E/S basados


en la posicin y el tiempo

TriggEquip - Define un evento de E/S basado en


la posicin y el tiempo en la trayectoria en la pgina 622

Definicin de interrupciones basadas en TriggInt - Define una interrupcin dependiente de


la posicin
una posicin en la pgina 628
Almacenamiento de datos de disparo

triggdata - Eventos de posicionamiento, trigg en


la pgina 1311

Definicin de una comprobacin de E/S TriggCheckIO - Define una comprobacin de E/S


en una posicin fija
en una posicin fija en la pgina 616

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.210 TriggIO - Define un evento de E/S de posicin o tiempo fijos cerca de un punto de paro
Continuacin
Para obtener ms informacin sobre

Consulte

Establecimiento de E/S

SetDO - Cambia el valor de una seal digital de


salida en la pgina 469
SetGO - Cambia el valor de un grupo de seales
digitales de salida en la pgina 471
SetAO - Cambia el valor de una seal analgica
de salida en la pgina 460

638

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.211 TriggJ - Movimientos de ejes del robot a partir de eventos

1.211 TriggJ - Movimientos de ejes del robot a partir de eventos


Utilizacin
TriggJ (TriggJoint) se utiliza para establecer seales de salida y/o ejecutar rutinas
de interrupcin en posiciones fijas aproximadas, al mismo tiempo que el robot se
mueve rpidamente de un punto a otro cuando no es imprescindible que ese
movimiento siga una lnea recta.
Es posible definir uno o varios eventos (con un mximo de 8) mediante las
instrucciones TriggIO, TriggEquip, TriggInt, TriggCheckIO, TriggSpeed
o TriggRampAO y hacer referencia posteriormente a estas definiciones en la
instruccin TriggJ.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TriggJ.
Consulte tambin Ms ejemplos en la pgina 643.
Ejemplo 1
VAR triggdata gunon;
...
TriggIO gunon, 0 \Start \DOp:=gun, 1;
MoveL p1, v500, z50, gun1;
TriggJ p2, v500, gunon, fine, gun1;

La seal digital de salida gun se activa cuando el TCP del robot atraviesa el punto
central de la trayectoria de esquina del punto p1.
En la figura se muestra un ejemplo de evento de E/S basado en una posicin fija.

Punto de
inicio p1

TriggJ p2, v500, gunon, fine, gun1;

Punto final p2

La seal de salida gun se cambia a 1


cuando el TCP del robot alcanza este punto

xx0500002272_es

Argumentos
TriggJ [\Conc] ToPoint [\ID] Speed [\T] Trigg_1 [ \T2 ] [ \T3 ]
[\T4] [\T5] [\T6] [\T7] [\T8] Zone [\Inpos] Tool [\WObj]

[ \Conc ]
Concurrent
Tipo de dato:switch
Distintas instrucciones consecutivas se ejecutan mientras el robot est en
movimiento. Este argumento puede usarse para evitar los paros no deseados,
causados por la sobrecarga de la CPU, cuando se utilizan puntos de paso. Esto
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.211 TriggJ - Movimientos de ejes del robot a partir de eventos
Continuacin
resulta til cuando los puntos programados estn muy cercanos entre s y se
trabaja a velocidades elevadas.
Este argumento tambin resulta til si, por ejemplo, no se requiere la comunicacin
con equipos externos ni la sincronizacin entre los equipos externos y los
movimientos del robot. Tambin puede usarse para ajustar la ejecucin de la
trayectoria del robot, para evitar la advertencia 50024 Fallo en punto de paso o el
error 40082 Lmite de deceleracin.
Cuando se utiliza el argumento \Conc, el nmero de instrucciones de movimiento
seguidas est limitado a 5. En secciones de programa que incluyen
StorePath-RestoPath, no se permite el uso de instrucciones con el argumento
\Conc.
Si se omite este argumento, la instruccin posterior se ejecuta una vez que el
robot ha alcanzado el punto de paro especificado, o 100 ms antes de la zona
especificada.
Este argumento no puede usarse en los movimientos sincronizados coordinados
en un sistema MultiMove.
ToPoint
Tipo de dato:robtarget
El punto de destino de los ejes del robot y de los ejes externos. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, la reorientacin de la
misma y 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. A continuacin, se sustituye por los datos de velocidad
correspondientes.
Trigg_1
Tipo de dato: triggdata
Contina en la pgina siguiente
640

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.211 TriggJ - Movimientos de ejes del robot a partir de eventos
Continuacin
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO , TriggSpeed o TriggRampAO.
[ \T2 ]
Trigg 2
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO , TriggSpeed o TriggRampAO.
[ \T3 ]
Trigg 3
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO , TriggSpeed o TriggRampAO.
[ \T4 ]
Trigg 4
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO , TriggSpeed o TriggRampAO.
[ \T5 ]
Trigg 5
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO, TriggSpeed o TriggRampAO.
[ \T6 ]
Trigg 6
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO, TriggSpeed o TriggRampAO.
[ \T7 ]
Trigg 7
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO, TriggSpeed o TriggRampAO.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.211 TriggJ - Movimientos de ejes del robot a partir de eventos
Continuacin
[ \T8 ]
Trigg 8
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggCheckIO, TriggSpeed o TriggRampAO.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
[ \Inpos ]
In position
Tipo de dato: stoppointdata
Este argumento se utiliza para especificar los criterios de convergencia para la
posicin del TCP del robot en el punto de paro. Los datos de puntos de paro
sustituyen a la zona especificada en el parmetro Zone.
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 la posicin de destino especificada.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si por otro lado se usa un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento para ejecutar un movimiento
de ejes respecto del objeto de trabajo.
Ejecucin de programas
Consulte la instruccin MoveJ para obtener ms informacin acerca del movimiento
de ejes.
A medida que se cumplen las condiciones de disparo cuando el robot se sita
ms y ms cerca del punto final, se realizan las actividades de disparo definidas.
Las condiciones de disparo se cumplen a una distancia determinada del punto
final de la instruccin o a una distancia determinada del punto de inicio de la
instruccin, o bien en un momento determinado (limitado a un tiempo breve) antes
del punto final de la instruccin.
Durante la ejecucin paso a paso hacia delante, las actividades de E/S se realizan
pero las rutinas de interrupcin no se ejecutan. Durante la ejecucin paso a paso
hacia atrs, no se realiza ninguna actividad de disparo.
Contina en la pgina siguiente
642

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.211 TriggJ - Movimientos de ejes del robot a partir de eventos
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin TriggJ.
Ejemplo 1
VAR intnum intno1;
VAR triggdata trigg1;
...
PROC main()
CONNECT intno1 WITH trap1;
TriggInt trigg1, 0.1 \Time, intno1;
...
TriggJ p1, v500, trigg1, fine, gun1;
TriggJ p2, v500, trigg1, fine, gun1;
...
IDelete intno1;

Se ejecuta la rutina de interrupcin trap1 cuando el punto de trabajo se encuentra


en una posicin 0,1 s antes del punto de paro p1 o p2, segn corresponda.
Gestin de errores
Si el resultado del argumento ScaleValue programado para la seal analgica
de salida especificada AOp en alguna de las instrucciones TriggSpeed est fuera
del lmite de la seal analgica que corresponde a la velocidad Speed programada
en esta instruccin, la variable de sistema ERRNO cambia a ERR_AO_LIM.
Si el argumento DipLag programado en alguna de las instrucciones TriggSpeed
conectadas es demasiado grande respecto del tiempo preestablecido para los
eventos en los parmetros del sistema, la variable de sistema ERRNO cambia a
ERR_DIPLAG_LIM.
El valor de la variable de sistema ERRNO puede cambiarse a ERR_NORUNUNIT
si no hay ningn contacto con la unidad de E/S al introducir la instruccin y los
datos triggdata utilizados dependen de una unidad de E/S en funcionamiento, es
decir, que se utiliza una seal en los datos triggdata.
Estos errores pueden ser gestionados en el gestor de errores.
Limitaciones
Si el punto de inicio actual se desva del habitual, de forma que la longitud de
posicionamiento total de la instruccin TriggJ es ms corta de lo habitual (es
decir, al principio de TriggJ con la posicin del robot en el punto final), puede
ocurrir que se cumplan varias de las condiciones de disparo, o incluso todas ellas,
inmediatamente y en una misma posicin. En estos casos, la secuencia en la que
se realizan las actividades de disparo no estar definida. La lgica de programa
del programa del usuario no puede basarse en una secuencia normal de actividades
de disparo para un movimiento incompleto.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.211 TriggJ - Movimientos de ejes del robot a partir de eventos
Continuacin
Sintaxis
TriggJ
[ \ Conc ,]
[ ToPoint := ] < expression (IN) of robtarget >
[ \ ID := < expression (IN) of identno >],
[ Speed := ] < expression (IN) of speeddata >
[ \ T := < expression (IN) of num > ],
[Trigg_1 := ] < variable (VAR) of triggdata >
[ \ T2 := < variable (VAR) of triggdata > ]
[ \ T3 := < variable (VAR) of triggdata > ]
[ \ T4 := < variable (VAR) of triggdata > ]
[ \ T5 := < variable (VAR) of triggdata > ]
[ \ T6 := < variable (VAR) of triggdata > ]
[ \ T7 := < variable (VAR) of triggdata > ]
[ \ T8 := < variable (VAR) of triggdata > ] ,
[Zone := ] < expression (IN) of zonedata >
[ \ Inpos := < expression (IN) of stoppointdata > ],
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj :=< persistent (PERS) of wobjdata > ] ;

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Movimiento lineal con disparadores TriggL - Movimiento lineal del robot con eventos en
la pgina 646
Movimiento circular con disparado- TriggC - Movimiento circular del robot con eventos en
res
la pgina 609
Definicin de disparadores

TriggIO - Define un evento de E/S de posicin o tiempo


fijos cerca de un punto de paro en la pgina 633
TriggEquip - Define un evento de E/S basado en la
posicin y el tiempo en la trayectoria en la pgina 622
TriggRampAO - Define un evento AO de rampa de
posicin fija en la trayectoria en la pgina 659
TriggInt - Define una interrupcin dependiente de una
posicin en la pgina 628
TriggCheckIO - Define una comprobacin de E/S en
una posicin fija en la pgina 616

Movimiento del robot mediante un MoveJ - Mueve el robot mediante un movimiento de


movimiento de ejes
ejes en la pgina 265
Movimiento de ejes

Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S - Posicionamiento
durante la ejecucin del programa

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Definicin de datos de punto de pa- stoppointdata - Datos de punto de paro en la pgina1280


ro
Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Contina en la pgina siguiente


644

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.211 TriggJ - Movimientos de ejes del robot a partir de eventos
Continuacin
Para obtener ms informacin so- Consulte
bre
Movimiento en general

Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.212 TriggL - Movimiento lineal del robot con eventos

1.212 TriggL - Movimiento lineal del robot con eventos


Utilizacin
TriggL (Trigg Linear) se utiliza para establecer seales de salida y/o ejecutar
rutinas de interrupcin en posiciones fijas al tiempo que se mueve el robot
siguiendo un movimiento lineal.
Es posible definir uno o varios eventos (con un mximo de 8) mediante las
instrucciones TriggIO, TriggEquip, TriggInt, TriggSpeed, TriggCheckIO
o TriggRampAO. A continuacin, se hace referencia a estas definiciones en la
instruccin TriggL.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TriggL.
Consulte tambin Ms ejemplos en la pgina 650.
Ejemplo 1
VAR triggdata gunon;
TriggIO gunon, 0 \Start \DOp:=gun, 1;
MoveJ p1, v500, z50, gun1;
TriggL p2, v500, gunon, fine, gun1;

La seal digital de salida gun se activa cuando el TCP del robot atraviesa el punto
central de la trayectoria de esquina del punto p1.
En la figura se muestra un ejemplo de evento de E/S basado en una posicin fija.

Punto de
inicio p1

TriggL p2, v500, gunon, fine, gun1;

Punto final p2

La seal de salida gun se cambia a 1


cuando el TCP del robot alcanza este punto
xx0500002291_es

Argumentos
TriggL [\Conc] ToPoint [\ID] Speed [\T] Trigg_1 [\T2] [\T3] [\T4]
[\T5] [\T6] [\T7] [\T8] Zone [\Inpos] Tool [\WObj][\Corr]

[ \Conc ]
Concurrent
Tipo de dato:switch
Distintas instrucciones consecutivas se ejecutan mientras el robot est en
movimiento. Este argumento puede usarse para evitar los paros no deseados,
causados por la sobrecarga de la CPU, cuando se utilizan puntos de paso. Esto

Contina en la pgina siguiente


646

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.212 TriggL - Movimiento lineal del robot con eventos
Continuacin
resulta til cuando los puntos programados estn muy cercanos entre s y se
trabaja a velocidades elevadas.
Este argumento tambin resulta til si, por ejemplo, no se requiere la comunicacin
con equipos externos ni la sincronizacin entre los equipos externos y los
movimientos del robot. Tambin puede usarse para ajustar la ejecucin de la
trayectoria del robot, para evitar la advertencia 50024 Fallo en punto de paso o el
error 40082 Limite de deceleracin.
Cuando se utiliza el argumento \Conc, el nmero de instrucciones de movimiento
seguidas est limitado a 5. En secciones de programa que incluyen
StorePath-RestoPath, no se permite el uso de instrucciones con el argumento
\Conc.
Si se omite este argumento y ToPoint no es un punto de paro, la instruccin
siguiente se ejecuta algn tiempo antes de que el robot alcance la zona
programada.
Este argumento no puede usarse en los movimientos sincronizados coordinados
en un sistema MultiMove.
ToPoint
Tipo de dato:robtarget
El punto de destino de los ejes del robot y de los ejes externos. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, los ejes externos y la
reorientacin 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. A continuacin, se sustituye por los datos de velocidad
correspondientes.
Trigg_1
Tipo de dato: triggdata
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.212 TriggL - Movimiento lineal del robot con eventos
Continuacin
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggSpeed, TriggCheckIO o TriggRampAO.
[ \T2 ]
Trigg 2
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggSpeed, TriggCheckIO o TriggRampAO.
[ \T3 ]
Trigg 3
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggSpeed, TriggCheckIO o TriggRampAO.
[ \T4 ]
Trigg 4
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggSpeed, TriggCheckIO o TriggRampAO.
[ \T5 ]
Trigg 5
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggSpeed, TriggCheckIO o TriggRampAO.
[ \T6 ]
Trigg 6
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggSpeed, TriggCheckIO o TriggRampAO.
[ \T7 ]
Trigg 7
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggSpeed, TriggCheckIO o TriggRampAO.

Contina en la pgina siguiente


648

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.212 TriggL - Movimiento lineal del robot con eventos
Continuacin
[ \T8 ]
Trigg 8
Tipo de dato: triggdata
La variable que hace referencia a las condiciones de disparo y la actividad de
disparo, definida anteriormente en el programa usando las instrucciones TriggIO,
TriggEquip, TriggInt, TriggSpeed, TriggCheckIO o TriggRampAO.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
[ \Inpos ]
In position
Tipo de dato: stoppointdata
Este argumento se utiliza para especificar los criterios de convergencia para la
posicin del TCP del robot en el punto de paro. Los datos de puntos de paro
sustituyen a la zona especificada en el parmetro Zone.
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 la posicin de destino especificada.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si por otro lado se usa un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento para ejecutar un movimiento
lineal respecto del objeto de trabajo.
[ \Corr ]
Correction
Tipo de dato: switch
Los datos de correccin escritos en una entrada de correccin mediante una
instruccin CorrWrite se aaden a la trayectoria y a la posicin de destino si se
utiliza este argumento.
Ejecucin de programas
Consulte la instruccin MoveL para obtener ms informacin acerca del movimiento
lineal.
A medida que se cumplen las condiciones de disparo cuando el robot se sita
ms y ms cerca del punto final, se realizan las actividades de disparo definidas.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.212 TriggL - Movimiento lineal del robot con eventos
Continuacin
Las condiciones de disparo se cumplen a una distancia determinada del punto
final de la instruccin o a una distancia determinada del punto de inicio de la
instruccin, o bien en un momento determinado (limitado a un tiempo breve) antes
del punto final de la instruccin.
Durante la ejecucin paso a paso hacia delante, las actividades de E/S se realizan
pero las rutinas de interrupcin no se ejecutan. Durante la ejecucin paso a paso
hacia atrs, no se realiza ninguna actividad de disparo.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin TriggL.
Ejemplo 1
VAR intnum intno1;
VAR triggdata trigg1;
...
PROC main()
CONNECT intno1 WITH trap1;
TriggInt trigg1, 0.1 \Time, intno1;
...
TriggL p1, v500, trigg1, fine, gun1;
TriggL p2, v500, trigg1, fine, gun1;
...
IDelete intno1;

La rutina de interrupcin trap1 se ejecuta si el punto de trabajo se encuentra en


la posicin situada 0.1 segundos antes del punto p1 o p2 respectivamente.
Gestin de errores
Si el resultado del argumento ScaleValue programado para la seal analgica
de salida especificada AOp en alguna de las instrucciones TriggSpeed est fuera
del lmite de la seal analgica que corresponde a la velocidad Speed programada
en esta instruccin, la variable de sistema ERRNO cambia a ERR_AO_LIM.
Si el argumento DipLag programado en alguna de las instrucciones TriggSpeed
conectadas es demasiado grande respecto del tiempo preestablecido para los
eventos en los parmetros del sistema, la variable de sistema ERRNO cambia a
ERR_DIPLAG_LIM.
El valor de la variable de sistema ERRNO puede cambiarse a ERR_NORUNUNIT
si no hay ningn contacto con la unidad de E/S al introducir la instruccin y los
datos triggdata utilizados dependen de una unidad de E/S en funcionamiento, es
decir, que se utiliza una seal en los datos triggdata.
Estos errores pueden ser gestionados en el gestor de errores.

Contina en la pgina siguiente


650

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.212 TriggL - Movimiento lineal del robot con eventos
Continuacin
Limitaciones
Si el punto de inicio actual se desva del habitual, de forma que la longitud de
posicionamiento total de la instruccin TriggL es ms corta de lo habitual (es
decir, al principio de TriggL con la posicin del robot en el punto final), puede
ocurrir que se cumplan varias de las condiciones de disparo, o incluso todas ellas,
inmediatamente y en una misma posicin. En estos casos, la secuencia en la que
se realizan las actividades de disparo no estar definida. La lgica de programa
del programa del usuario no puede basarse en una secuencia normal de actividades
de disparo para un movimiento incompleto.
Sintaxis
TriggL
[\ Conc ,]
[ ToPoint := ] < expression (IN) of robtarget >
[ \ ID := < expression (IN) of identno >] ,
[ Speed := ] < expression (IN) of speeddata >
[ \ T := < expression (IN) of num > ],
[Trigg_1 := ] < variable (VAR) of triggdata >
[ \ T2 := < variable (VAR) of triggdata > ]
[ \ T3 := < variable (VAR) of triggdata > ]
[ \ T4 := < variable (VAR) of triggdata > ]
[ \ T5 := < variable (VAR) of triggdata > ]
[ \ T6 := < variable (VAR) of triggdata > ]
[ \ T7 := < variable (VAR) of triggdata > ]
[ \ T8 := < variable (VAR) of triggdata > ] ,
[Zone := ] < expression (IN) of zonedata >
[ \ Inpos := < expression (IN) of stoppointdata > ] ,
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj := < persistent (PERS) of wobjdata > ]
[ \ Corr ] ;

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Movimiento circular con disparado- TriggC - Movimiento circular del robot con eventos en
res
la pgina 609
Movimiento de ejes con disparado- TriggJ - Movimientos de ejes del robot a partir de
res
eventos en la pgina 639

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.212 TriggL - Movimiento lineal del robot con eventos
Continuacin
Para obtener ms informacin
sobre

Consulte

Definicin de disparadores

TriggIO - Define un evento de E/S de posicin o tiempo


fijos cerca de un punto de paro en la pgina 633
TriggEquip - Define un evento de E/S basado en la
posicin y el tiempo en la trayectoria en la pgina 622
TriggInt - Define una interrupcin dependiente de una
posicin en la pgina 628
TriggCheckIO - Define una comprobacin de E/S en
una posicin fija en la pgina 616
TriggRampAO - Define un evento AO de rampa de posicin fija en la trayectoria en la pgina 659
TriggSpeed - Define la velocidad del TCP en proporcin
a una salida analgica con un evento de escala fija de
posicin-tiempo en la pgina 666

Escritura en una entrada de correc- CorrWrite - Escribe en un generador de correcciones


cin
en la pgina 81
Movimiento lineal

Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de datos de zona

zonedata - Datos de zonas en la pgina 1331

Definicin de datos de punto de


paro

stoppointdata - Datos de punto de paro en la pgina 1280

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Movimiento en general

Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S

652

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.213 TriggLIOs - Movimientos lineales del robot con eventos de E/S

1.213 TriggLIOs - Movimientos lineales del robot con eventos de E/S


Utilizacin
TriggLIOs (disparar E/S lineal) se utiliza para establecer seales de salida al
tiempo que se mueve el robot siguiendo un movimiento lineal.
La instruccin TriggLIOs est optimizada para proporcionar una buena exactitud
cuando se utilizan movimientos con zonas (comprese con TriggEquip/TriggL).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TriggLIOs.
Consulte tambin Ms ejemplos en la pgina 656.
Ejemplo 1
VAR triggios gunon{1};
gunon{1}.used:=TRUE;
gunon{1}.distance:=3;
gunon{1}.start:=TRUE;
gunon{1}.signalname:="gun";
gunon{1}.equiplag:=0;
gunon{1}.setvalue:=1;
MoveJ p1, v500, z50, gun1;
TriggLIOs p2, v500, \TriggData1:=gunon, z50, gun1;
MoveL p3, v500, z50, gun1;

La seal gun se activa cuando el TCP est 3 mm despus del punto p1.
En la figura se muestra un ejemplo de evento de E/S basado en una posicin fija.

en0800000157

Argumentos
TriggLIOs [\Conc] ToPoint [\ID] Speed [\T] [\TriggData1]
[\TriggData2] [\TriggData3] Zone [\Inpos] Tool [\WObj] [\Corr]

[ \Conc ]
Concurrent
Tipo de dato:switch
Distintas instrucciones consecutivas se ejecutan mientras el robot est en
movimiento. Este argumento puede usarse para evitar los paros no deseados,
causados por la sobrecarga de la CPU, cuando se utilizan puntos de paso. Esto

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.213 TriggLIOs - Movimientos lineales del robot con eventos de E/S
Continuacin
resulta til cuando los puntos programados estn muy cercanos entre s y se
trabaja a velocidades elevadas.
Este argumento tambin resulta til si, por ejemplo, no se requiere la comunicacin
con equipos externos ni la sincronizacin entre los equipos externos y los
movimientos del robot. Tambin puede usarse para ajustar la ejecucin de la
trayectoria del robot, para evitar la advertencia 50024 Fallo en punto de paso o el
error 40082 Limite de deceleracin.
Cuando se utiliza el argumento \Conc, el nmero de instrucciones de movimiento
seguidas est limitado a 5. En secciones de programa que incluyen
StorePath-RestoPath, no se permite el uso de instrucciones con el argumento
\Conc.
Si se omite este argumento y ToPoint no es un punto de paro, la instruccin
siguiente se ejecuta algn tiempo antes de que el robot alcance la zona
programada.
Este argumento no puede usarse en los movimientos sincronizados coordinados
en un sistema MultiMove.
ToPoint
Tipo de dato:robtarget
El punto de destino de los ejes del robot y de los ejes externos. Se define como
una posicin con nombre o se almacena directamente en la instruccin (marcada
con un asterisco * en la instruccin).
[ \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 ningn otro caso.
El nmero de ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
Speed
Tipo de dato: speeddata
Los datos de velocidad que se aplican a los movimientos. Los datos de velocidad
definen la velocidad del punto central de la herramienta, los ejes externos y la
reorientacin 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. A continuacin, se sustituye por los datos de velocidad
correspondientes.
[\TriggData1]
Tipo de dato: array of triggios
Contina en la pgina siguiente
654

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.213 TriggLIOs - Movimientos lineales del robot con eventos de E/S
Continuacin
Una variable (matriz) que hace referencia a condiciones de disparo y actividad de
disparo. Al utilizar este argumento, es posible establecer seales analgicas de
salida, seales digitales de salida y seales digitales de salida de grupo. Si utiliza
una seal digital de salida de grupo, existe una limitacin de 23 seales por grupo.
[\TriggData2]
Tipo de dato: array of triggstrgo
Una variable (matriz) que hace referencia a condiciones de disparo y actividad de
disparo. Al utilizar este argumento, es posible establecer seales digitales de
salida de grupo compuestas por 32 seales en el grupo y con un valor establecido
mximo de 4.294.967.295. Slo es posible utilizar seales digitales de salida de
grupo.
[\TriggData3]
Tipo de dato: array of triggiosdnum
Una variable (matriz) que hace referencia a condiciones de disparo y actividad de
disparo. Al utilizar este argumento, es posible establecer seales analgicas de
salida, seales digitales de salida y seales digitales de salida de grupo compuestas
por 32 seales en el grupo y con un valor establecido mximo de 4294967295.
Zone
Tipo de dato:zonedata
Los datos de zona del movimiento. Los datos de zona describen el tamao de la
trayectoria de esquina generada.
[ \Inpos ]
In position
Tipo de dato: stoppointdata
Este argumento se utiliza para especificar los criterios de convergencia para la
posicin del TCP del robot en el punto de paro. Los datos de puntos de paro
sustituyen a la zona especificada en el parmetro Zone.
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 la posicin de destino especificada.
[ \WObj ]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin de robot indicada en la instruccin.
Es posible omitir este argumento. Si se omite, la posicin depende del sistema de
coordenadas mundo. Si por otro lado se usa un TCP estacionario o ejes externos
coordinados, es necesario especificar este argumento para ejecutar un movimiento
lineal respecto del objeto de trabajo.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.213 TriggLIOs - Movimientos lineales del robot con eventos de E/S
Continuacin
[ \Corr ]
Correction
Tipo de dato: switch
Los datos de correccin escritos en una entrada de correccin mediante una
instruccin CorrWrite se aaden a la trayectoria y a la posicin de destino si se
utiliza este argumento.
Ejecucin de programas
Consulte la instruccin MoveL para obtener ms informacin acerca del movimiento
lineal.
La instruccin TriggLIOs permite configurar de 1 a 50 actividades de disparo
diferentes a partir de seales de E/S a lo largo de una trayectoria de A a B. Las
seales que pueden usarse son seales digitales de salida, seales digitales de
salida de grupo y seales analgicas de salida. Las condiciones de disparo se
cumplen a cierta distancia antes del punto final de la instruccin o una determinada
distancia tras el punto de inicio de la instruccin.
La instruccin requiere el uso del argumento TriggData1, TriggData2 o
TriggData3, o bien todos ellos. Sin embargo, el uso de cualquiera de los disparos.
Para inhibir el uso de un disparo, el componente used puede cambiarse a FALSE
en el elemento de matriz de los tipos de datos
triggios/triggstrgo/triggiosdnum. Si no se utiliza ningn elemento de matriz,
la instruccin TriggLIOs se comporta como una instruccin MoveL y no se realiza
ninguna actividad de E/S.
Si se ejecuta el programa paso a paso hacia delante, las actividades de E/S se
ejecutan. Durante la ejecucin paso a paso hacia atrs, no se realiza ninguna
actividad de E/S.
Si se define el componente EquipLag en el argumento TriggData1, TriggData2
o TriggData3 con un tiempo (retardo) negativo, la seal de E/S puede establecerse
a continuacin del punto de destino (ToPoint).
Si utiliza el argumento TriggData2 o TriggData3, es posible utilizar valores
hasta el 4294967295, que es el valor mximo que puede tener un grupo de seales
digitales (el sistema admite como mximo 32 seales en una seal de grupo).
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin TriggLIOs.
Ejemplo 1
VAR triggios mytriggios{3}:= [[TRUE, 3, TRUE, 0, "go1", 55, 0],
[TRUE, 15, TRUE, 0, "ao1", 10, 0], [TRUE, 3, FALSE, 0, "do1",
1, 0]];
...
MoveL p1, v500, z50, gun1;
TriggLIOs p2, v500, \TriggData1:=mytriggios, z50, gun1;
MoveL p3, v500, z50, gun1;

Contina en la pgina siguiente


656

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.213 TriggLIOs - Movimientos lineales del robot con eventos de E/S
Continuacin
La seal digital de salida de grupo go1 recibe el valor 55 a una distancia de 3 mm
de p1. La seal analgica recibe el valor 10 a una distancia de 15 mm de p1. La
seal digital de salida do1 recibir el valor 3 mm a partir de ToPoint p2.
Ejemplo 2
VAR triggios mytriggios{3}:= [[TRUE, 3, TRUE, 0, "go1", 55, 0],
[TRUE, 15, TRUE, 0, "ao1", 10, 0], [TRUE, 3, FALSE, 0, "do1",
1, 0]];
VAR triggstrgo mytriggstrgo{3}:= [[TRUE, 3, TRUE, 0, "go2", "1",
0], [TRUE, 15, TRUE, 0, "go2", "800000", 0], [TRUE, 4, FALSE,
0, "go2", "4294967295", 0]];
VAR triggiosdnum mytriggiosdnum{3}:= [[TRUE, 10, TRUE, 0, "go3",
4294967295, 0], [TRUE, 10, TRUE, 0, "ao2", 5, 0], [TRUE, 10,
TRUE, 0, "do2", 1, 0]];
...
MoveL p1, v500, z50, gun1;
TriggLIOs p2, v500, \TriggData1:=mytriggios \TriggData2:=
mytriggstrgo \TriggData3:=mytriggiosdnum, z50, gun1;
MoveL p3, v500, z50, gun1;

La seal digital de salida de grupo go1 recibe el valor 55 a una distancia de 3 mm


de p1. La seal analgica de salida ao1 recibe el valor 10 a una distancia de 15
mm de p1. La seal digital de salida do1 recibir el valor 3 mm a partir de
ToPointp2. Estos eventos de posicin son definidos por la variable mytriggios.
La variable mytriggstrgo establece que se produzcan eventos de posicin a
una distancia de entre 3 y 15 mm de p1. La seal go2 recibe primero el valor 1 y
luego el valor 800000. La seal recibe el valor 4294967295 a una distancia de 4
mm de ToPointp2. Se trata del valor mximo para una seal digital de salida de
32 bits. La variable mytriggiosdnum establece que se produzcan tres eventos
de posicin a una distancia de 10 mm de p1. En primer lugar se cambia la seal
go3 a 4294967295, a continuacin se cambia ao2 a 5 y en ltimo lugar se cambia
do2 a 1.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
si se ha perdido el contacto con la unidad de E/S.
ERR_GO_LIM
si el argumento programado setvalue para la seal digital de salida de grupo
especificada signalname est fuera de lmites. (Se declara en TriggData1,
TriggData2 o TriggData3)
ERR_AO_LIM
si el argumento programado setvalue para la seal analgica de salida
especificada signalname est fuera de lmites. (Se declara en TriggData1 o
TriggData3)

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.213 TriggLIOs - Movimientos lineales del robot con eventos de E/S
Continuacin
Limitaciones
Si el punto de inicio actual se desva del habitual, de forma que la longitud de
posicionamiento total de la instruccin TriggLIOs es ms corta de lo habitual (es
decir, al principio de TriggLIOs con la posicin del robot en el punto final), puede
ocurrir que se cumplan varias de las condiciones de disparo, o incluso todas ellas,
inmediatamente y en una misma posicin. En estos casos, la secuencia en la que
se realizan las actividades de disparo no estar definida. La lgica de programa
del programa del usuario no puede basarse en una secuencia normal de actividades
de disparo para un movimiento incompleto.
La limitacin en el nmero de disparos de la instruccin TriggLIOs es de 50 para
cada instruccin programada. Sin embargo, si se supone que estos disparos deben
producirse a corta distancia, el sistema no ser capaz de gestionarlo. Esto depende
de cmo se realice el movimiento, la velocidad de TCP utilizada y la cercana
programada entre los disparos. Estas limitaciones existen pero resulta difcil
predecir cundo se producirn estos problemas.
Sintaxis
TriggLIOs
[\ Conc ,]
[ ToPoint := ] < expression (IN) of robtarget >
[ \ ID := < expression (IN) of identno >] ,
[ Speed := ] < expression (IN) of speeddata >
[ \ T := < expression (IN) of num > ],
[ \ TriggData1 := ] < array {*} (VAR) of triggios >
[ \ TriggData2 := ] < array {*} (VAR) of triggstrgo >
[ \ TriggData3 := ] < array {*} (VAR) of triggiosdnum >
[Zone := ] < expression (IN) of zonedata >
[ \ Inpos := < expression (IN) of stoppointdata > ] ,
[ Tool := ] < persistent (PERS) of tooldata >
[ \ WObj := < persistent (PERS) of wobjdata > ]
[ \ Corr ] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Almacenamiento de condiciones de disparo triggios - Positioning events, trigg en la pgiy actividad de disparo
na 1313
Almacenamiento de condiciones de disparo triggstrgo - Positioning events, trigg en la
y actividad de disparos de una seal digital pgina 1318
de grupo compuesta por 32 seales
Almacenamiento de condiciones de disparo triggiosdnum - Positioning events, trigg en
y actividad de disparo
la pgina 1316
Movimiento lineal

Manual de referencia tcnica - Descripcin


general de RAPID, seccin Principios de
movimiento y E/S - Posicionamiento durante
la ejecucin del programa

Movimiento en general

Manual de referencia tcnica - Descripcin


general de RAPID, seccin Principios de
movimiento y E/S

658

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.214 TriggRampAO - Define un evento AO de rampa de posicin fija en la trayectoria

1.214 TriggRampAO - Define un evento AO de rampa de posicin fija en la trayectoria


Utilizacin
TriggRampAO(Trigg Ramp Analog Output) se utiliza para definir condiciones y
acciones para la aplicacin de una rampa ascendente o descendente a un valor
de seal analgica de salida en una posicin fija a lo largo de la trayectoria de
movimiento del robot, con la posibilidad de aplicar una compensacin de tiempo
para el retardo del equipo externo.
Los datos definidos se utilizan para la implementacin o instrucciones TriggL,
TriggC oTriggJ posteriores. Aparte de estas instrucciones, tambin es posible
usar TriggRampAO en las instrucciones CapL o CapC.
El tipo de acciones disparo conectado a la misma instruccin TriggL/C/J puede
ser TriggRampAO o cualquiera de las instrucciones TriggIO, TriggEquip,
TriggSpeed, TriggInt o TriggCheckIO. Se permite cualquier tipo de
combinacin, si bien slo se permite una nica accin TriggSpeed con la misma
seal dentro de la misma instruccin TriggL/C/J.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TriggRampAO.
Consulte tambin Ms ejemplos en la pgina 663.
Ejemplo 1
VAR triggdata ramp_up;
...
TriggRampAO ramp_up, 0 \Start, 0.1, aolaser1, 8, 15;
MoveL p1, v200, z10, gun1;
TriggL p2, v200, ramp_up, z10, gun1;

La seal analgica aolaser1 inicia una rampa ascendente de su valor lgico


desde el valor actual hasta el nuevo valor 8, cuando el gun1 de la herramienta se
encuentra 0,1 s antes del centro de la trayectoria de esquina en p1. La totalidad
de la rampa ascendente se completa mientras el robot se mueve 15 mm.
Ejemplo 2
VAR triggdata ramp_down;
...
TriggRampAO ramp_down, 15, 0.1, aolaser1, 2, 10;
MoveL p3, v200, z10, gun1;
TriggL p4, v200, ramp_down, z10, gun1;

La seal analgica aolaser1 inicia una rampa descendente de su valor lgico


desde el valor actual hasta el nuevo valor 2, cuando el TCP de la herramienta gun1
se encuentra 15 mm y 0,1 s antes del centro de la trayectoria de esquina en p4.
La totalidad de la rampa ascendente se completa mientras el robot se mueve 10
mm.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.214 TriggRampAO - Define un evento AO de rampa de posicin fija en la trayectoria
Continuacin
Argumentos
TriggRampAO TriggData Distance [\Start] EquipLag AOutput SetValue
RampLength [\Time]

xx0600003433_en

Parmetro Distance

RL

Parmetro RampLength

CV

Valor actual de la seal analgica

SV

Parmetro SetValue para el valor de la seal analgica

P1

ToPoint para la instruccin de movimiento precedente

P2

ToPoint para la instruccin TrigL/C/J actual

TriggData
Tipo de dato: triggdata
Una variable para almacenar el triggdata devuelto por la instruccin. Estos
datos triggdata pueden usarse en las instrucciones TriggL, TriggC , TriggJ,
CapL o CapC posteriores.
Distance
Tipo de dato: num
Define la distancia desde el centro de la trayectoria de esquina en la que debe
iniciarse la rampa de la salida analgica.
Se especifica como la distancia en mm (valor positivo) desde el punto final
(ToPoint) de la trayectoria de movimiento (aplicable si no se utiliza el argumento
\Start).
Consulte la seccin Ejecucin de programas para obtener ms detalles.

Contina en la pgina siguiente


660

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.214 TriggRampAO - Define un evento AO de rampa de posicin fija en la trayectoria
Continuacin
[\Start]
Tipo de dato: switch
Se utiliza cuando la distancia del argumento Distance est relacionada con el
punto de inicio del movimiento (ToPoint precedente) en lugar del punto final.
EquipLag
Equipment Lag
Tipo de dato: num
Especifica el retardo del equipo externo, en segundos.
Para la compensacin del retardo de los equipos externos, utilice un valor de
argumento positivo. Un valor de argumento positivo significa que el principio de
la rampa de la seal AO es realizado por el sistema de robot en un momento
especificado antes de que el TCP alcance fsicamente el punto de la distancia
especificada, respecto del punto inicial o final del movimiento.
Un valor de argumento negativo significa que el inicio de la rampa de la seal AO
es realizado por el sistema de robot en un momento determinado. A continuacin,
el TCP ha sobrepasado el punto de distancia especificado en relacin con el punto
inicial o final del movimiento.
En la figura se muestra el uso del argumento EquipLag.

Punto final

Punto de inicio
Distancia
\Start

Distancia

EquipLag
xx0500002262_es

AOutput
Analog Output
Tipo de dato: signalao
El nombre de la seal de salida analgica.
SetValue
Tipo de dato: num
El valor hasta el cual debe aumentar o descender en rampa la seal analgica de
salida (debe estar dentro del valor de rango lgico permitido para la seal). La
rampa comienza con el valor actual de la seal analgica de salida.
RampLength
Tipo de dato: num
La longitud de la rampa en mm a lo largo de la trayectoria de movimientos del TCP.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.214 TriggRampAO - Define un evento AO de rampa de posicin fija en la trayectoria
Continuacin
[\Time]
Tipo de dato: switch
Se utiliza cuando RampLength especifica el tiempo de rampa en s en lugar de en
longitud de la rampa.
Debe utilizarse si una instruccin TriggL, TriggC o TriggJ posterior especifica
que el movimiento total debe realizarse por tiempo (argumento \T) en lugar de
por velocidad.
Ejecucin de programas
Cuando se ejecuta la instruccin TriggRampAO, la condicin de disparo se
almacena en una variable especificada para el argumento TriggData.
A continuacin, cuando se ejecuta una de las instrucciones TriggL, TriggC o
TriggJ, se aplica lo siguiente en cuanto a las definiciones de TriggRampAO:
En la tabla se describe la distancia especificada en el argumento Distance:
Movimiento lineal

La distancia en lnea recta

Movimiento circular

La longitud del arco del crculo

Movimiento no lineal

La longitud de arco aproximada a lo largo de


la trayectoria (para conseguir la exactitud
adecuada, la distancia no debe superar la
mitad de la longitud del arco).

La figura muestra la rampa de AO en una trayectoria de esquina.

Si la distancia es cero, la rampa de AO comienza


cuando el TCP del robot se encuentra aqu

Punto final con trayectoria


de esquina

xx0600003439_es

Caractersticas de ejecucin de programas de TriggRampAO en conexin con


cualquier TriggL/C/J:

La rampa de la seal AO comienza cuando el robot alcanza el punto Distance


especificado en la trayectoria del robot (con compensacin del valor
especificado de EquipLag)

La funcin de rampa se realiza durante un periodo de tiempo calculado a


partir del valor de RampLength especificado y la velocidad de TCP
programada. El clculo tiene en cuenta VelSet, la redefinicin de velocidad
manual y el mximo de 250 mm/s en el modo MAN, pero no tiene en cuenta
ninguna otra limitacin.

La actualizacin del valor de seal AO desde el valor inicial (lectura actual)


al SetValue especificado se realizar cada 10 ms, lo que produce una forma
escalonada. Si el tiempo de rampa calculado o el tiempo de rampa
especificado es de ms de 0,5 s la frecuencia de rampa se ralentizar:
-

<= 0,5 s produce como mximo 50 pasos de 10 ms cada uno

Contina en la pgina siguiente


662

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.214 TriggRampAO - Define un evento AO de rampa de posicin fija en la trayectoria
Continuacin
-

<= 1 s produce como mximo 50 pasos de 20 ms cada uno

<= 1,5 s produce como mximo 50 pasos de 30 ms cada uno, etctera

La accin TriggRampAO tambin se realiza en el paso FWD, pero no en el modo


de paso BWD.
En cualquier tipo de paro (paro de programa, paro de emergencia), si la funcin
de rampa est activa en esa ocasin:

En caso de rampa ascendente, el valor de AO cambia momentneamente a


un valor anterior.

En caso de rampa descendente, el valor de AO cambia momentneamente


al nuevo valor de SetValue.

Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin TriggRampAO.
Ejemplo 1
VAR triggdata ramp_up;
VAR triggdata ramp_down;
...
TriggRampAO ramp_up, 0 \Start, 0.1, aolaser1, 8, 15;
TriggRampAO ramp_down, 15, 0.1, aolaser1, 2, 10;
MoveL p1, v200, z10, gun1;
TriggL p2, v200, ramp_up, \T2:=ramp_down, z10, gun1;

En este ejemplo, se realiza tanto la rampa ascendente como la rampa descendente


de AO en la misma instruccin TriggL y en la misma trayectoria de movimiento.
Funciona sin ninguna interferencia de los valores de AO, siempre y cuando la
trayectoria de movimiento sea lo suficientemente larga.
La seal analgica aolaser1 inicia una rampa ascendente de su valor lgico
desde el valor actual hasta el nuevo valor 8, cuando el TCP de la herramienta gun1
se encuentra 0,1 s antes del centro de la trayectoria de esquina en p1. La totalidad
de la rampa ascendente se completa mientras el robot se mueve 15 mm.
La seal analgica aolaser1 comenzar a reducir su valor lgico desde el valor
8 actual al nuevo valor 2 cuando el TCP de la herramienta gun1 es de 15 mm ms
0,1 s antes del centro de la trayectoria en ngulo en p2. El descenso completo se
realizar mientras el robot se desplaza 10 mm.
Gestin de errores
Si el argumento SetValue programado para la seal analgica de salida AOutput
est fuera de lmites, la variable de sistema ERRNO cambia a ERR_AO_LIM. El error
puede ser gestionado en el gestor de errores.
Limitaciones
El valor de la seal analgica de salida no se compensa por la reduccin de
velocidad del TCP en la trayectoria de esquina ni durante otras fases de aceleracin
o deceleracin (AO no es proporcional a la velocidad del TCP).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.214 TriggRampAO - Define un evento AO de rampa de posicin fija en la trayectoria
Continuacin
Slo el punto de inicio de la rampa de AO se ejecutar en la posicin especificada
de la trayectoria. La rampa ascendente o descendente se realizar con un clculo
muerto y con alta exactitud:

A una velocidad constante, la desviacin del fin de la rampa de AO con


respecto al especificado ser reducida.

Durante las fases de aceleracin o deceleracin, como por ejemplo cerca


de puntos de paro, la desviacin ser mayor.

Recomendacin: Utilice trayectorias de esquina antes de las rampas


ascendentes y a continuacin de las rampas descendentes.

Si utiliza dos o ms TriggRampAO en la misma seal analgica de salida y en


conexin con la misma instruccin TriggL/C/J y las dos RampLength o varias
de ellas estn situadas en la misma parte de la trayectoria del robot, los valores
de AO interactuarn entre s.
El evento AO de rampa relacionada con la posicin (+/- tiempo) comienza cuando
se pase ms all del punto ToPoint anterior, si el valor especificado de Distance
a partir del punto ToPoint no est dentro de la longitud del movimiento de la
instruccin TriggL/C/J actual. El evento AO de rampa relacionada con la posicin
(+/- tiempo) comienza cuando se pase ms all del punto ToPoint anterior, si el
valor especificado de Distance desde el punto ToPoint anterior no est dentro
de la longitud del movimiento de la instruccin TriggL/C/J actual (con el
argumento \Start).
No se admite el reinicio de la funcin AO de rampa a continuacin de ningn tipo
de paro (paro de programa, paro de emergencia, etc.).
En caso de reinicio tras una cada de alimentacin, la instruccin TriggL/C/J
comienza por el principio desde la posicin de cada de alimentacin actual.
Sintaxis
TriggRampAO
[ TriggData ':=' ] < variable (VAR) of triggdata > ','
[ Distance ':=' ] < expression (IN) of num >
[ '\' Start ] ','
[ EquipLag ':=' ] < expression (IN) of num > ','
[ AOutput ':=' ] < variable (VAR) of signalao> ','
[ SetValue ':=' ] < expression (IN) of num> ','
[ RampLength ':=' ] < expression (IN) of num> ','
[ '\' Time ] ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Utilizacin de disparadores

TriggL - Movimiento lineal del robot con


eventos en la pgina 646
TriggC - Movimiento circular del robot con
eventos en la pgina 609
TriggJ - Movimientos de ejes del robot a
partir de eventos en la pgina 639

Contina en la pgina siguiente


664

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.214 TriggRampAO - Define un evento AO de rampa de posicin fija en la trayectoria
Continuacin
Para obtener ms informacin sobre

Consulte

Definicin de otros disparos

TriggEquip - Define un evento de E/S basado


en la posicin y el tiempo en la trayectoria
en la pgina 622

Almacenamiento de datos de disparo

triggdata - Eventos de posicionamiento, trigg


en la pgina 1311

Establecimiento de una seal analgica de SetAO - Cambia el valor de una seal analsalida
gica de salida en la pgina 460
signalxx - Seales digitales y analgicas en
la pgina 1272
Configuracin del tiempo preestablecido para Manual de referencia tcnica - Parmetros
eventos
del sistema, seccin Movimiento

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.215 TriggSpeed - Define la velocidad del TCP en proporcin a una salida analgica con un evento de
escala fija de posicin-tiempo

1.215 TriggSpeed - Define la velocidad del TCP en proporcin a una salida analgica
con un evento de escala fija de posicin-tiempo
Utilizacin
TriggSpeed se utiliza para definir condiciones y acciones para el control de una
seal analgica de salida cuyo valor de salida es proporcional a la velocidad real
del TCP. El inicio, el escalado y la finalizacin de la salida analgica pueden
especificarse en una posicin-tiempo fija a lo largo de la trayectoria de movimientos
del robot. Es posible utilizar una compensacin de tiempo para el retardo del
equipo externo en el inicio, el escalado y la finalizacin de la salida analgica y
tambin para los cambios de velocidad del robot.
Los datos definidos se utilizan en una o varias instrucciones TriggL, TriggC o
TriggJ posteriores.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TriggSpeed.
Consulte tambin Ms ejemplos en la pgina 671.
Ejemplo 1
VAR triggdata glueflow;
TriggSpeed glueflow, 0, 0.05, glue_ao, 0.8\DipLag=:0.04
\ErrDO:=glue_err;
TriggL p1, v500, glueflow, z50, gun1;
TriggSpeed glueflow, 10, 0.05, glue_ao, 1;
TriggL p2, v500, glueflow, z10, gun1;
TriggSpeed glueflow, 0, 0.05, glue_ao, 0;
TriggL p3, v500, glueflow, z50, gun1;

La figura siguiente muestra un ejemplo de secuencia con TriggSpeed.


Trayectoria con flujo de adhesivo
Trayectoria sin flujo de adhesivo
Nuevo valor de escala de flujo
de adhesivo
p1

p2

Comienza el flujo de adhesivo


p3
Finaliza el flujo de adhesivo

xx0500002329_es

El flujo de adhesivo (salida analgica glue_ao) con valor de escala de 0.8


comienza cuando el TCP est 0.05 s antes del punto p1, el nuevo valor de escala
Contina en la pgina siguiente
666

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.215 TriggSpeed - Define la velocidad del TCP en proporcin a una salida analgica con un evento de
escala fija de posicin-tiempo
Continuacin
de flujo de adhesivo 1 cuando el TCP est 10 mm y 0.05 s antes del punto p2,
y el flujo de adhesivo termina (valor de escala 9) cuando el TCP est 0.05 s antes
del punto p3.
Cualquier reduccin de velocidad del robot recibe una compensacin de tiempo
de forma que la seal de salida analgica glue_ao se vea afectada 0.04 s antes
de que se produzca la reduccin de velocidad del TCP.
En caso de rebasamiento del valor lgico calculado de la salida analgica glue_ao,
se activa la seal de salida digital glue_err. Si no hay ms desbordamiento,
glue_err se pone a cero.
Argumentos
TriggSpeed TriggData Distance [\Start] ScaleLag AOp ScaleValue
[\DipLag] [\ErrDO] [\Inhib]

TriggData
Tipo de dato: triggdata
Una variable para almacenar el triggdata devuelto por la instruccin. Estos
datos triggdata se utilizan a continuacin en las instrucciones TriggL, TriggC
o TriggJ posteriores.
Distance
Tipo de dato: num
Define la posicin en la trayectoria para el cambio del valor de salida analgico.
Se especifica como la distancia en mm (valor positivo) desde el punto final de la
trayectoria de movimiento (aplicable si no se utiliza el argumento \ Start).
Consulte Ejecucin de programas en la pgina 669 para obtener ms detalles.
[ \Start ]
Tipo de dato: switch
Se utiliza cuando la distancia del argumento Distance comienza en el punto de
inicio del movimiento en lugar del punto final.
ScaleLag
Tipo de dato: num
Especifique el retardo de tiempo en s (valor positivo) del equipo externo antes del
cambio del valor de la salida analgica (inicio, escalado y finalizacin).
Para la compensacin del retardo del equipo externo, el valor de este argumento
significa que la seal de salida es activada por el robot en el momento especificado,
antes de que el TCP fsico alcance la distancia especificada respecto del punto
de inicio o final del movimiento.
Este argumento tambin puede usarse para extender la salida analgica ms all
del punto final. Establezca el tiempo en segundos durante el cual el robot debe
mantener la seal analgica. Establezca el tiempo con un signo negativo. El lmite
es -0,10 segundos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.215 TriggSpeed - Define la velocidad del TCP en proporcin a una salida analgica con un evento de
escala fija de posicin-tiempo
Continuacin
En la figura siguiente se ilustra el uso del argumento ScaleLag

Punto final

Punto de inicio

Distancia
\Start

Distancia

ScaleLag
xx0500002330_es

AOp
Analog Output
Tipo de dato: signalao
El nombre de la seal de salida analgica.
ScaleValue
Tipo de dato: num
El valor de escala de la seal de salida analgica.
El valor fsico de salida de la seal analgica es calculado por el robot:

Valor lgico de salida = Valor de escala * velocidad actual del TCP en mm/s.

Valor fsico de salida = De acuerdo con la definicin de la configuracin de


la seal analgica de salida actual, tomando como entrada el valor lgico
de salida indicado ms arriba.

[ \DipLag ]
Tipo de dato: num
Especifique el retardo de tiempo en s (valor positivo) del equipo externo antes del
cambio del valor de la salida analgica debido a los cambios de velocidad del
robot.
Para la compensacin del retardo del equipo externo, el valor de este argumento
significa que la seal de salida analgica es activada por el robot en el momento
especificado, antes de que se produzca la reduccin de velocidad del TCP.
Este argumento slo puede ser utilizado por el robot en la primera instruccin
TriggSpeed (en combinacin con una de las instrucciones TriggL, TriggC o
TriggJ) en una secuencia de varias instrucciones TriggSpeed. El primer valor
de argumento especificado es vlido para todas las dems instrucciones
TriggSpeed de la secuencia.
[ \ErrDO ]
Error Digital Output
Tipo de dato: signaldo
El nombre de la seal de salida digital para informar del desbordamiento del valor
analgico.
Contina en la pgina siguiente
668

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.215 TriggSpeed - Define la velocidad del TCP en proporcin a una salida analgica con un evento de
escala fija de posicin-tiempo
Continuacin
Si, durante el movimiento, el clculo del valor lgico de salida analgica de la seal
indicada en el argumento AOp da lugar a un desbordamiento debido a un exceso
de velocidad, esta seal se activa y el valor fsico de la salida analgica se reduce
al valor mximo. Si no hay ms desbordamiento, la seal se pone a cero.
Este argumento slo puede ser utilizado por el robot en la primera instruccin
TriggSpeed (en combinacin con una de las instrucciones TriggL, TriggC o
TriggJ) en una secuencia de varias instrucciones TriggSpeed. El primer valor
de argumento especificado es vlido para todas las dems instrucciones
TriggSpeed de la secuencia.
[ \Inhib ]
Inhibit
Tipo de dato: bool
El nombre de un indicador de variable persistente para la inhibicin del valor de
la seal en tiempo de ejecucin.
Si se utiliza este argumento opcional y el valor actual del indicador especificado
es TRUE en el momento del establecimiento de la seal analgica, la seal
especificada AOp se cambia a 0 en lugar del valor especificado.
Este argumento slo puede ser utilizado por el robot en la primera instruccin
TriggSpeed (en combinacin con una de las instrucciones TriggL, TriggC o
TriggJ) en una secuencia de varias instrucciones TriggSpeed. El primer valor
de argumento especificado es vlido para todas las dems instrucciones
TriggSpeed de la secuencia.
Ejecucin de programas
Cuando se ejecuta la instruccin TriggSpeed, la condicin de disparo se almacena
en una variable especificada para el argumento TriggData.
A continuacin, cuando se ejecuta una de las instrucciones TriggL, TriggC o
TriggJ, se aplica lo siguiente en cuanto a las definiciones de TriggSpeed:
En cuanto a la distancia especificada en el argumento Distance, consulte la tabla
siguiente:
Movimiento lineal

La distancia en lnea recta

Movimiento circular

La longitud del arco del crculo

Movimiento no lineal

La longitud de arco aproximada a lo largo de la trayectoria (para


conseguir la exactitud adecuada, la distancia no debe superar la
mitad de la longitud del arco).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.215 TriggSpeed - Define la velocidad del TCP en proporcin a una salida analgica con un evento de
escala fija de posicin-tiempo
Continuacin
La figura siguiente muestra el evento de valor de escala fija de posicin-tiempo
en una trayectoria de esquina.
Punto final
con trayectoria
de esquina
Si la distancia es 0, el valor de escala
cambia cuando TCP se encuentra aqu

xx0500002331_es

El evento de valor de escala dependiente de posicin-tiempo se genera cuando


se atraviesa el punto de inicio (punto final) si la distancia especificada respecto
del punto final (punto de inicio) no se encuentra dentro de la longitud de movimiento
de la instruccin actual (TriggL, TriggC o TriggJ).
La primera instruccin TriggSpeed utilizada por una de las instrucciones TriggL,
TriggC o TriggJ crear internamente en el sistema un proceso con el mismo
nombre que la seal de salida analgica. El mismo proceso ser utilizado por todas
las instrucciones TriggL, TriggC o TriggJ posteriores que hagan referencia al
mismo nombre de seal, configurado por una instruccin TriggSpeed .
El proceso cambia inmediatamente la salida analgica a 0 en el caso de un paro
de emergencia de programa. En el caso de un paro de programa, la seal de salida
analgica permanece proporcional a la velocidad del TCP hasta que el robot se
detiene. El proceso se mantiene vivo y listo para un reinicio. Cuando el robot
reanuda su funcionamiento, la seal es proporcional a la velocidad del TCP desde
el mismo momento del inicio.
Paro de programa
Velocidad del TCP

Seal analgica
de salida

Paro de emergencia
Velocidad del TCP

Seal analgica
de salida

xx0500002332_es

El proceso muere tras gestionar un evento de escala con valor 0, siempre y


cuando no haya ninguna instruccin TriggL, TriggC o TriggJ en la cola en ese
momento.

Contina en la pgina siguiente


670

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.215 TriggSpeed - Define la velocidad del TCP en proporcin a una salida analgica con un evento de
escala fija de posicin-tiempo
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin TriggSpeed.
Ejemplo 1
VAR triggdata flow;
TriggSpeed flow, 10 \Start, 0.05, flowsignal, 0.5 \DipLag:=0.03;
MoveJ p1, v1000, z50, tool1;
TriggL p2, v500, flow, z50, tool1;

La seal analgica de salida flowsignal cambia a un valor lgico = (0.5*


velocidad actual del TCP en mm/s) 0.05 s antes de que el TCP atraviese un punto
situado 10 mm despus del punto de inicio p. El valor de salida se ajusta de
forma proporcional a la velocidad actual del TCP durante el movimiento hacia p2.
...
TriggL p3, v500, flow, z10, tool1;

El robot se mueve de p2 a p3, manteniendo el valor de la salida analgica de forma


proporcional a la velocidad actual del TCP. El valor de la salida analgica se reduce
0.03 s antes de que el robot reduzca la velocidad del TCP mientras pasa por la
trayectoria de esquina z10.
Limitaciones
A continuacin se muestran las limitaciones de la instruccin TriggSpeed.
Exactitud de un evento de valor de escala dependiente de posicin-tiempo
Los valores absolutos tpicos en cuanto a la exactitud de los eventos de valor de
escala son de 5 ms.
Los valores de repeticin tpicos en cuanto a la exactitud de los eventos de valor
de escala son de 2 ms.
Exactitud de la adaptacin a los cambios de velocidad del TCP (fases de deceleracin y aceleracin)
Los valores absolutos tpicos en cuanto a la exactitud de la adaptacin a los
cambios de velocidad del TCP son de 5 ms.
Los valores de repeticin tpicos en cuanto a la exactitud de la adaptacin a los
cambios de velocidad del TCP son de 2 ms (el valor depende del valor configurado
en Path resolution).
Negativo ScaleLag
Si se usa un valor negativo en el parmetro ScaleLag para trasladar la escala
cero al siguiente segmento, la seal de salida digital no se pone a cero si se
produce un paro de programa. Los paros de emergencia siempre ponen a cero la
seal analgica.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.215 TriggSpeed - Define la velocidad del TCP en proporcin a una salida analgica con un evento de
escala fija de posicin-tiempo
Continuacin
La seal analgica deja de ser proporcional a la velocidad del TCP en el punto
final del segmento.
Inicio de segmento

Movimientos del TCP

Fin de segmento

AO activo
No proporcional
a la velocidad del TCP
xx0500002333_es

Gestin de errores
Esta explicacin corresponde a dos segmentos consecutivos con instrucciones
TriggL/TriggSpeed. Un valor negativo en el parmetro ScaleLag hace posible
trasladar el evento de escala del primer segmento al principio del segundo
segmento. Si el segundo segmento se escala al principio, no hay ningn control
si las dos escalas interfieren.
V
Seal de salida analgica
deseada
Segmento n

Segmento n+1

Resultados posibles en caso


de interferencias

xx0500002334_es

Parmetros del sistema relacionados


El parmetro del sistema Event Preset Time se utiliza para retrasar el robot para
permitir la activacin y el control de equipos externos antes de que el robot
atraviese la posicin.
En la tabla siguiente se muestra la recomendacin para la configuracin del
parmetro del sistema Event Preset Time, con un valor de retardo de servo tpico
de 0,040 s.
ScaleLag

DipLag

Valor de Event Preset Time


necesario para evitar los
errores de tiempo de ejecucin

Valor de Event Preset


Time recomendado para
obtener la mxima
exactitud

ScaleLag >
DipLag

Siempre

DipLag, si DipLag>Servo- ScaleLag en s ms


Lag
0,090 s

Contina en la pgina siguiente


672

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.215 TriggSpeed - Define la velocidad del TCP en proporcin a una salida analgica con un evento de
escala fija de posicin-tiempo
Continuacin
Valor de Event Preset Time
necesario para evitar los
errores de tiempo de ejecucin

Valor de Event Preset


Time recomendado para
obtener la mxima
exactitud

ScaleLag

DipLag

ScaleLag <
DipLag

DipLag < Ser- - " vo Lag

0.090 s

- " -

DipLag >Servo - " Lag

DipLag en s ms 0.030
s

Sintaxis
TriggSpeed
[ TriggData := ] < variable (VAR) of triggdata>,
[ Distance := ] < expression (IN) of num>
[ \ Start ] ,
[ ScaleLag:= ] < expression (IN) of num> ,
[ AOp :=] < variable (VAR) of signalao> ,
[ ScaleValue := ] < expression (IN) of num>
[ \ DipLag := < expression (IN) of num> ]
[ \ ErrDO := < variable (VAR ) of signaldo> ]
[ \ Inhib := < persistent (PERS ) of bool >] ;

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Utilizacin de disparadores

TriggL - Movimiento lineal del robot con eventos en


la pgina 646
TriggC - Movimiento circular del robot con eventos en
la pgina 609
TriggJ - Movimientos de ejes del robot a partir de
eventos en la pgina 639

Definicin de otros disparos

TriggIO - Define un evento de E/S de posicin o tiempo


fijos cerca de un punto de paro en la pgina 633
TriggInt - Define una interrupcin dependiente de una
posicin en la pgina 628
TriggEquip - Define un evento de E/S basado en la
posicin y el tiempo en la trayectoria en la pgina 622

Almacenamiento de disparos

triggdata - Eventos de posicionamiento, trigg en la


pgina 1311

Configuracin de Event preset time Manual de referencia tcnica - Parmetros del sistema,
seccin Motion - Motion Planner - EventPreset Time

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.216 TriggStopProc - Genera datos de reinicio para las seales de disparo ante paros

1.216 TriggStopProc - Genera datos de reinicio para las seales de disparo ante
paros
Utilizacin
La instruccin TriggStopProc crea un proceso interno de supervisin en el
sistema para la puesta a cero de las seales de proceso especificadas y la
generacin de datos de reinicio en una variable persistente especificada, cada vez
que se detiene el programa (STOP) o se produce un paro de emergencia (QSTOP)
en el sistema.
TriggStopProc y el tipo de dato restartdata han sido creados para su uso en
el reinicio tras un paro de programa (STOP) o un paro de emergencia (QSTOP) de
las instrucciones del propio proceso definidas en RAPID (rutinas NOSTEPIN).
En una rutina de evento RESTART definida por el usuario, es posible analizar los
datos de reinicio actuales, retroceder por la trayectoria con la instruccin
StepBwdPath y activar seales de proceso adecuadas antes del reinicio del
movimiento.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Recuerde que en el caso de los sistemas MultiMove, slo un proceso de soporte
TriggStopProc con el nombre de seal "shadow" (argumento ShadowDO) puede
estar activa en el sistema cada vez. Esto significa que TriggStopProc supervisa
el paro de programa o el paro de emergencia en la tarea de programa en la que
fue ejecutado por ltima vez.
Argumentos
TriggStopProc RestartRef [\DO] [\GO1] [\GO2] [\GO3] [\GO4] ShadowDO

RestartRef
Restart Reference
Tipo de dato: restartdata
La variable persistente en la que estarn disponibles los datos de reinicio despus
de cada detencin de la ejecucin del programa.
[\DO1]
Digital Output 1
Tipo de dato: signaldo
La variable de seal de una seal digital de proceso que debe ponerse a cero y
supervisarse en los datos de reinicio cuando se detiene la ejecucin del programa.
[\GO1]
Group Output 1
Tipo de dato: signalgo
La variable de seal de una seal digital de grupo de proceso que debe ponerse
a cero y supervisarse en los datos de reinicio cuando se detiene la ejecucin del
programa.

Contina en la pgina siguiente


674

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.216 TriggStopProc - Genera datos de reinicio para las seales de disparo ante paros
Continuacin
[\GO2]
Group Output 2
Tipo de dato: signalgo
La variable de seal de una seal digital de grupo de proceso que debe ponerse
a cero y supervisarse en los datos de reinicio cuando se detiene la ejecucin del
programa.
[\GO3]
Group Output 3
Tipo de dato: signalgo
La variable de seal de una seal digital de grupo de proceso que debe ponerse
a cero y supervisarse en los datos de reinicio cuando se detiene la ejecucin del
programa.
[\GO4]
Group Output 4
Tipo de dato: signalgo
La variable de seal de una seal digital de grupo de proceso que debe ponerse
a cero y supervisarse en los datos de reinicio cuando se detiene la ejecucin del
programa.
Se debe utilizar al menos uno de los parmetros de opcin D01, GO1 ... GO4.
ShadowDO
Shadow Digital Output
Tipo de dato: signaldo
La variable de seal de la seal digital que debe reflejar si el proceso est activo
a lo largo de la trayectoria del robot.
Esta seal no ser puesta a cero por el proceso TriggStopProc ante un STOP
o QSTOP, pero sus valores se reflejarn en restartdata.
Ejecucin de programas
Configuracin y ejecucin de TriggStopProc
La llamada a TriggStopProc debe realizarse desde los dos lugares siguientes:

La rutina de evento START o la parte inicial del programa (el cambio del PP
a main elimina el proceso interno para TriggStopProc)

La rutina de evento POWERON (el apagado elimina el proceso interno para


TriggStopProc)

El nombre interno del proceso para TriggStopProc es el mismo que el nombre


de seal del argumento ShadowDO. Si TriggStopProc, con el mismo nombre de
seal en el argumento ShadowDO, se ejecuta dos veces desde la misma tarea de
programa u otra, slo estar activo el ltimo TriggStopProc ejecutado.
La ejecucin de TriggStopProc slo inicia la supervisin de las seales de E/S
con los paros STOP y QSTOP.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.216 TriggStopProc - Genera datos de reinicio para las seales de disparo ante paros
Continuacin
Paro de programa STOP
El proceso TriggStopProc comprende los pasos siguientes:
1 Se espera hasta que el robot se haya detenido a lo largo de la trayectoria.
2 Se almacena el valor actual (valor previo de acuerdo con restartdata) de
todas las seales de proceso utilizadas. Se ponen a cero todas las seales
de proceso utilizadas, excepto ShadowDO.
3 Haga lo siguiente durante el prximo intervalo de tiempo, aproximadamente
500 ms, si algunas seales de proceso cambian su valor durante este periodo:

Guarde de nuevo el valor actual (valor posterior acorde con


restatdata)

Poner la seal a cero excepto ShadowDO

Contar el nmero de transicciones de valor (flancos) de la seal


ShadowDO

4 Se actualiza la variable persistente especificada con el dato de reinicio.


Paro de emergencia (QSTOP)
El proceso TriggStopProc comprende los pasos siguientes:
1 Se hace el paso siguiente lo antes posible.
2 Se almacena el valor actual (valor previo de acuerdo con restartdata) de
todas las seales de proceso utilizadas. Se ponen a cero todas las seales
de proceso utilizadas, excepto ShadowDO.
3 Haga lo siguiente durante el prximo intervalo de tiempo, aproximadamente
500 ms, si algunas seales de proceso cambian su valor durante este periodo:

Guarde de nuevo su valor actual (valor posterior acorde con


restatdata)

Poner la seal a cero excepto ShadowDO

Contar el nmero de transicciones de valor (flancos) de la seal


ShadowDO

4 Se actualiza la variable persistente especificada con el dato de reinicio.


rea crtica para el reinicio del proceso
Tanto el servo del robot como el equipo externo presentan ciertos retardos. Todas
las instrucciones de la familia Trigg han sido diseadas de forma que todas las
seales se establezcan en lugares adecuados a lo largo de la trayectoria del robot,
independientemente de los distintos retardos en el equipo externo, con el fin de
obtener los mejores resultados de proceso posibles. Por ello, el establecimiento
de las seales de E/S pueden retrasarse internamente en el sistema de 0 a 80 ms,
una vez que el robot se detiene con un paro de programa (STOP) o tras el registro
de un paro de emergencia (QSTOP). Debido a esta desventaja de las funciones de
reinicio, tanto el valor previo como el valor posterior, as como los flancos de la
seal correspondiente, se introducen en los datos de reinicio.
Si este intervalo crtico de 0 a 80 ms coincide con los casos de proceso de
aplicacin siguientes, resulta difcil realizar un buen reinicio de proceso:

Al principio del proceso de aplicacin

Al final del proceso de aplicacin

Contina en la pgina siguiente


676

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.216 TriggStopProc - Genera datos de reinicio para las seales de disparo ante paros
Continuacin

Durante un proceso de aplicacin breve

Durante una breve interrupcin en el proceso de aplicacin

En la figura siguiente se muestran las fases de proceso de STOP o QSTOP dentro


del intervalo crtico de 0-80 ms

Sin ningn proceso activo

shadowval:
preshadowval = 0
1
shadowflanks = 0
0

postshadowval = 0

Proceso activo

shadowval:
preshadowval = 1
1
shadowflanks = 0
0

postshadowval = 1
Inicio del proceso

shadowval:
preshadowval = 0
1
shadowflanks = 1
0

postshadowval = 1

Fin del proceso

shadowval:
preshadowval = 1
1
shadowflanks = 1
0

postshadowval = 0
Proceso breve

shadowval:
preshadowval = 0
1
shadowflanks = 2
0

postshadowval = 0

Interrupcin breve del proceso

shadowval:
preshadowval = 1
1
shadowflanks = 2
postshadow val = 1

xx0500002326_es

Realizacin de un reinicio
Un reinicio de las instrucciones del proceso (rutinas NOSTEPIN) a lo largo de la
trayectoria del robot debe realizarse en una rutina de evento RESTART.
La rutina de evento RESTART puede componerse de los pasos siguientes:
Accin
1.

Tras un paro QSTOP, la recuperacin de la trayectoria se realiza al iniciarse el


programa.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.216 TriggStopProc - Genera datos de reinicio para las seales de disparo ante paros
Continuacin
Accin
2.

Se analizan los datos de reinicio desde el ltimo paro STOP o QSTOP.

3.

Se determina la estrategia de reinicio del proceso partiendo del resultado del


anlisis, por ejemplo:
Proceso activo, se procesa el reinicio.
Proceso inactivo, no se procesa el reinicio.
Se realizan las acciones adecuadas en funcin del tipo de aplicacin de
proceso:
- Inicio del proceso
- Fin del proceso
- Proceso breve
- Interrupcin breve del proceso

4.

Se retrocede sobre la trayectoria.

5.

La reanudacin del programa da lugar al reinicio del movimiento.

Si se est en espera en cualquier rutina de evento STOP o QSTOP hasta que el


proceso TriggStopProc haya concluido, por ejemplo con WaitUntil
(myproc.restartstop=TRUE), \MaxTime:=2;, el usuario debe siempre poner
a cero el indicador de la rutina de evento RESTART, por ejemplo con
myproc.restartstop:=FALSE. A continuacin, el reinicio queda completado.
Gestin de errores
Si no hay contacto con la unidad de E/S, la variable de sistema ERRNO cambia a
ERR_NORUNUNIT y la ejecucin contina en el gestor de errores.
Limitacin
No se admite el reinicio de las instrucciones del proceso tras una cada de
alimentacin.
Sintaxis
TriggStopProc
[ RestartRef ':=' ] < persistent (PERS) of restartdata>
[ '\' DO1 ':=' < variable (VAR) of signaldo>
[ '\' GO1 ':=' < variable (VAR) of signalgo> ]
[ '\' GO2 ':=' < variable (VAR) of signalgo> ]
[ '\' GO3 ':=' < variable (VAR) of signalgo> ]
[ '\' GO4 ':=' < variable (VAR) of signalgo> ] ','
[ ShadowDO ':=' ] < variable (VAR) of signaldo> ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones de proceso

TriggL - Movimiento lineal del robot con eventos


en la pgina 646
TriggC - Movimiento circular del robot con eventos en la pgina 609

Datos de reinicio

restartdata - Datos de reinicio de seales de disparo en la pgina 1256

Retroceso por la trayectoria

StepBwdPath - Retrocede un paso a lo largo de


la trayectoria en la pgina 531

678

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.217 TryInt - Comprobar si un objeto de dato es un entero vlido

1.217 TryInt - Comprobar si un objeto de dato es un entero vlido


Utilizacin
TryInt se utiliza para comprobar si un objeto de dato determinado es un entero
vlido.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TryInt.
Ejemplo 1
VAR num myint := 4;
...
TryInt myint;

Se evala el valor de myint y, dado que 4 es un entero vlido, la ejecucin del


programa contina.
Ejemplo 2
VAR dnum mydnum := 20000000;
...
TryInt mydnum;

Se evala el valor de mydnum y, dado que 20000000 es un entero dnum vlido,


la ejecucin del programa contina.
Ejemplo 3
VAR num myint := 5.2;
...
TryInt myint;
...
ERROR
IF ERRNO = ERR_INT_NOTVAL THEN
myint := Round(myint);
RETRY;
ENDIF

Se evala el valor de myint y, dado que 5.2 no es un entero vlido, se generar


un error. En el gestor de errores, myint se redondea a 5 y la instruccin TryInt
se ejecuta una vez ms.
Argumentos
TryInt DataObj | DataObj2

DataObj
Data Object
Tipo de dato: num
El objeto de datos en el que se desea comprobar si el valor es un entero vlido.
DataObj2
Data Object 2
Tipo de dato: dnum
El objeto de datos en el que se desea comprobar si el valor es un entero vlido.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.217 TryInt - Comprobar si un objeto de dato es un entero vlido
Continuacin
Ejecucin de programas
Se comprueba el objeto de dato indicado:

Si es un entero vlido, la ejecucin contina con la instruccin siguiente.

Si no es un entero vlido, la ejecucin contina en el gestor de errores del


procedimiento actual.

Gestin de errores
Si DataObj contiene un valor con decimales, la variable ERRNO cambia a
ERR_INT_NOTVAL.
Si el valor de DataObj es mayor o menor que el rango de valor entero del tipo de
dato num, la variable ERRNO cambia a ERR_INT_MAXVAL.
Si el valor de DataObj2 es mayor o menor que el rango de valor entero del tipo
de dato dnum, la variable ERRNO cambia a ERR_INT_MAXVAL.
Estos errores pueden ser gestionados en el gestor de errores.
Recuerde que un valor de 3.0 se evala como un entero, dado que el valor .0
puede omitirse.
Sintaxis
TryInt
[ DataObj := ] < expression (IN) of num>
| [ DataObj2 := ] < expression (IN) of dnum> ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipo de dato num

num - Valores numricos en la pgina 1234

680

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.218 TRYNEXT - Salta sobre una instruccin que ha provocado un error

1.218 TRYNEXT - Salta sobre una instruccin que ha provocado un error


Utilizacin
La instruccin TRYNEXT se utiliza para reanudar la ejecucin despus de un error,
empezando por la instruccin que sigue a la instruccin que provoc el error.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TryNext.
Ejemplo 1
reg2 := reg3/reg4;
...
ERROR
IF ERRNO = ERR_DIVZERO THEN
reg2:=0;
TRYNEXT;
ENDIF

Se intenta dividir reg3 por reg4. Si reg4 es igual a 0 (lo cual da lugar a una
divisin por cero), se realiza un salto al gestor de errores, donde se asigna a reg2
el valor 0. A continuacin, la instruccin TRYNEXT se utiliza para continuar con
la siguiente instruccin.
Ejecucin de programas
La ejecucin del programa contina en la instruccin siguiente a la instruccin
que provoc el error.
Limitaciones
La instruccin slo puede existir en el gestor de errores de la rutina.
Sintaxis
TRYNEXT;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Gestores de errores

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Recuperacin
en caso de error

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.219 TuneReset - Restablecimiento del ajuste del servo

1.219 TuneReset - Restablecimiento del ajuste del servo


Utilizacin
TuneReset se utiliza para devolver el comportamiento dinmico de todos los ejes
del robot y de las unidades mecnicas a sus valores normales.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TuneReset.
Ejemplo 1
TuneReset;

Se restablecen los valores de ajuste de todos los ejes a 100%.


Ejecucin de programas
Se restablecen a 100% los valores de ajuste de todos los ejes.
Los valores de ajuste predeterminados del servo de todos los ejes se ajustan
automticamente mediante la ejecucin de la instruccin TuneReset en los casos
siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

Sintaxis
TuneReset ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Ajuste de servos

TuneServo - Ajuste de servos en la pgina 683

682

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.220 TuneServo - Ajuste de servos

1.220 TuneServo - Ajuste de servos


Utilizacin
TuneServo se utiliza para ajustar el comportamiento dinmico de los distintos
ejes del robot. En circunstancias normales, no es necesario usar TuneServo, pero
hay ocasiones en las que el ajuste puede optimizarse en funcin de la configuracin
del robot y las caractersticas de carga. En el caso de los ejes externos, TuneServo
puede usarse para la adaptacin de la carga.
Evite ejecutar instrucciones TuneServo mientras el robot est en movimiento.
Puede dar lugar a cargas elevadas momentneas en la CPU, lo que puede dar
lugar a indicaciones de error y paros.
Atencin! Para obtener el ajuste ptimo, resulta esencial que se utilicen datos
de carga correctos. Comprubelo antes de usar TuneServo.
Normalmente, los valores de ajuste ptimos suelen diferir de un robot a otro. El
ajuste ptimo tambin puede cambiar con el paso del tiempo.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
AVISO!
Un uso incorrecto de TuneServo puede dar lugar a movimientos de oscilacin
o pares que pueden causar daos en el robot. Debe tenerlo en cuenta y tener
cuidado al usar TuneServo.
Cmo mejorar la exactitud de la trayectoria
En el caso de los robots que funcionan a velocidades bajas, TuneServo puede
usarse para mejorar la exactitud de la trayectoria, mediante:

Ajuste de TUNE_KV y TUNE_TI (consulte ms adelante la descripcin de los


distintos tipos de ajuste).

Ajuste de los parmetros de compensacin de friccin (consulte la


informacin siguiente).

Puede combinar estos dos mtodos.


Otras posibilidades para aumentar la exactitud de la trayectoria:

La reduccin de la resolucin de la trayectoria puede mejorar la trayectoria.


Nota: un valor de resolucin de trayectoria demasiado bajo causar
problemas de sobrecarga en la CPU.

La exactitud de las lneas rectas puede mejorarse mediante la reduccin de


la aceleracin mediante AccSet. Ejemplo: AccSet 20, 10.

Descripcin
Reduce el riesgo de sobrepasar posiciones - TUNE_DF
TUNE_DF se utiliza para reducir la posibilidad de sobrepasar posiciones o de que
se produzcan oscilaciones a lo largo de la trayectoria.
Siempre existe un valor de ajuste ptimo, que puede variar en funcin de la posicin
y la longitud del movimiento. Este valor ptimo puede determinarse cambiando el
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.220 TuneServo - Ajuste de servos
Continuacin
ajuste en pequeos pasos (del 1% al 2%) en los ejes que presentan este
comportamiento no deseado. Normalmente, el ajuste ptimo se encontrar dentro
del rango del 70% al 130%. Un valor de ajuste demasiado bajo o demasiado alto
puede tener un efecto negativo y puede perjudicar considerablemente a los
movimientos.
Cuando el valor de ajuste en el punto de inicio de un movimiento largo difiere
considerablemente del valor de ajuste en el punto final, puede resultar conveniente
en algunos casos usar un punto intermedio con una zona de esquina para definir
en qu punto debe cambiar el valor de ajuste.
A continuacin encontrar algunos ejemplos del uso de TuneServo para optimizar
el ajuste:

IRB 6400, en una aplicacin de servicio de prensa (carga extendida y flexible),


ejes del 4 al 6: Reduzca el valor de ajuste del eje de mueca actual hasta
que el movimiento sea aceptable. No se observarn cambios en el
movimiento hasta que se est alcanzando el valor ptimo. Un valor bajo
afectar considerablemente al movimiento. Valor de ajuste tpico: 25%.

IRB 6400, partes superiores del rea de trabajo. El eje 1 puede optimizarse
con frecuencia con valor de ajuste del 85% al 95%.

IRB 6400, movimiento corto (< 80 mm). El eje 1 puede optimizarse con
frecuencia con valor de ajuste del 94% al 98%.

IRB 2400 con movimiento sobre un track. En algunos casos, es posible


optimizar los ejes 2 y 3 con un valor de ajuste del 110% al 130%. El
movimiento a lo largo del track puede requerir un valor de ajuste distinto en
comparacin con el movimiento en ngulos rectos respecto del track.

El sobrepasamiento de posiciones y las oscilaciones pueden reducirse


mediante una reduccin de la aceleracin o de la pendiente de aceleracin
(AccSet), lo que sin embargo supone un aumento del tiempo de ciclo. Esto
es un mtodo alternativo al uso de TuneServo.

Reduce el riesgo de sobrepasar posiciones - TUNE_DG


TUNE_DG puede reducir el sobrepasamiento de posiciones en casos muy
especficos. Normalmente no debe utilizarse.
Es necesario probar primero TUNE_DF en casos de sobrepasamiento de posiciones.
El ajuste de TUNE_DG puede realizarse en pasos grandes del valor de ajuste (por
ejemplo 50%, 100%, 200%, 400%).
Nunca utilice TUNE_DG mientras el robot est en movimiento.
Reduce las vibraciones con cargas pesadas - TUNE_DH
TUNE_DH puede usarse para reducir las vibraciones y el sobrepasamiento de
posiciones (por ejemplo, con una carga flexible de gran tamao).
El valor de ajuste debe ser siempre inferior a 100. El uso de TUNE_DH aumenta la
desviacin de la trayectoria y tambin suele aumentar el tiempo de ciclo.
Ejemplo:

IRB6400 con una carga flexible de gran tamao que vibra cuando el robot
se ha detenido. Utilice TUNE_DH con el valor de ajuste 15.

Contina en la pgina siguiente


684

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.220 TuneServo - Ajuste de servos
Continuacin
TUNE_DH slo debe ejecutarse en un nico eje. Todos los ejes de la misma unidad
mecnica obtienen automticamente el mismo valor de TuneValue.
Nunca utilice TUNE_DH mientras el robot est en movimiento.
Reduce el nmero de errores de trayectoria - TUNE_DI
TUNE_DI puede usarse para reducir la desviacin de la trayectoria a velocidades
altas.
Para reducir la desviacin de la trayectoria se recomienda un valor de ajuste entre
50 y 80. El sobrepasamiento de posiciones puede aumentar (un valor de ajuste
menor puede causar un mayor sobrepasamiento de posiciones).
Un valor de ajuste superior al 100 puede reducir el sobrepasamiento de posiciones
(pero aumenta la desviacin de la trayectoria a alta velocidad).
TUNE_DI slo debe ejecutarse en un nico eje. Todos los ejes de la misma unidad
mecnica obtienen automticamente el mismo valor de TuneValue.
Slo para uso interno de ABB - TUNE_DK, TUNE_DL

xx0100000002

AVISO!
Slo para uso interno de ABB. No utilice estos tipos de ajuste. Un uso incorrecto
puede dar lugar a movimientos de oscilacin o pares que pueden causar daos
en el robot.
Ajuste de ejes externos - TUNE_KP, TUNE_KV, TUNE_TI
Estos tipos de ajustes afectan a la ganancia de control de posicin (kp), la ganancia
de control de velocidad (kv) y el tiempo de integracin de control de velocidad (ti)
de los ejes externos. Estos parmetros se usan para adaptar los ejes externos a
distintas inercias de carga. El ajuste bsico de los ejes externos tambin puede
simplificarse mediante estos tipos de ajuste.
Ajuste de ejes de robot - TUNE_KP, TUNE_KV, TUNE_TI
En el caso de los ejes del robot, estos tipos de ajuste tienen otro significado y
pueden usarse para reducir los errores de trayectoria a baja velocidad (< 500
mm/s).
Valores recomendados: TUNE_KV 100 - 180%, TUNE_TI 50 - 100%. No debe utilizar
TUNE_KP con los ejes del robot. El uso de valores demasiado altos o demasiado
bajos para TUNE_KV/TUNE_TI causarn vibraciones u oscilaciones. Tenga cuidado
si intenta superar estos valores recomendados. Haga los cambios en pasos
pequeos y evite la oscilacin de los motores.
Ajuste siempre un eje cada vez. Cambie los valores de ajuste en pequeos pasos.
Intente mejorar la trayectoria en el punto en que ese eje concreto cambia de
direccin de movimiento o en el punto en que se acelera o decelera.
No utilice nunca estos tipos de ajuste a altas velocidades ni cuando se haya
conseguido la exactitud necesaria en la trayectoria.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.220 TuneServo - Ajuste de servos
Continuacin
Compensacin de friccin - TUNE_FRIC_LEV, TUNE_FRIC_RAMP
Estos tipos de ajuste pueden usarse para reducir los errores de trayectoria del
robot que se deban a la friccin y a los movimientos no deseados que se producen
a baja velocidad (de 10 a 200 mm/s). Estos errores de trayectoria aparecen cuando
un eje del robot cambia de sentido de movimiento. Para activar la compensacin
de friccin para un eje, cambie a Yes el parmetro de sistema Motion/Control
Parameters/Friction FFW On.
El modelo de friccin es un nivel constante con el signo opuesto al sentido de
avance del eje. Friction FFW Level (Nm) es el nivel absoluto de friccin a (baja)
velocidad y es mayor que Friction FFW Ramp (rad/s). Consulte la figura siguiente,
que muestra un modelo de friccin.
Friccin del motor a baja velocidad (Nm)
Nivel friccin FFW (Nm)
Rampa friccin FFW (rad/seg)
Velocidad del motor del eje (rad/seg)

xx0500002188_es

TUNE_FRIC_LEV redefine el valor del parmetro de sistema Friction FFW Level.


El ajuste de Friction FFW Level (con TUNE_FRIC_LEV) en cada eje del robot puede
aumentar considerablemente la exactitud de la trayectoria del robot en el rango
de velocidad de 20 a 100 mm/seg. Sin embargo, en robots grandes (especialmente
en el caso de la familia IRB6400) el efecto ser mnimo dado que en estos robots
dominan otros mtodos de seguimiento de errores.
TUNE_FRIC_RAMP redefine el valor del parmetro de sistema Friction FFW Ramp.
En la mayora de los casos, no es necesario ajustar el valor de Friction FFW Ramp.
El valor predeterminado es adecuado.
Ajuste un eje cada vez. Cambie el valor de ajuste en pequeos incrementos y
determine el nivel que permita reducir al mnimo el error de trayectoria del robot
en la trayectoria en la que este eje concreto cambie de sentido de movimiento.
Repita el mismo procedimiento con el siguiente eje, etc.
Los valores finales de ajuste pueden transferirse a los parmetros del sistema.
Ejemplo:
Friction FFW Level = 1. Valor de ajuste final (TUNE_FRIC_LEV) = 150%.
Cambie el valor de Friction FFW Level a 1,5 y el valor de ajuste al 100% (el valor
predeterminado), para conseguir el valor equivalente.
Argumentos
TuneServo MecUnit Axis TuneValue [\Type]

MecUnit
Mechanical Unit
Tipo de dato: mecunit
Contina en la pgina siguiente
686

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.220 TuneServo - Ajuste de servos
Continuacin
El nombre de la unidad mecnica.
Axis
Tipo de dato: num
El nmero del eje actual de la unidad mecnica (del 1 al 6).
TuneValue
Tipo de dato: num
El valor de ajuste, en porcentaje (de 1 a 500). El 100% es el valor normal.
[ \Type ]
Tipo de dato: tunetype
El tipo de ajuste del servo. Los tipos disponibles son TUNE_DF, TUNE_KP,
TUNE_KV, TUNE_TI, TUNE_FRIC_LEV, TUNE_FRIC_RAMP, TUNE_DG,
TUNE_DH, TUNE_DI. Los tipos TUNE_DK y TUNE_DL son slo para uso interno de
ABB.
Puede omitir este argumento si utiliza el tipo de ajuste TUNE_DF.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin TuneServo.
Ejemplo 1
TuneServo MHA160R1, 1, 110 \Type:= TUNE_KP;

Activacin del tipo de ajuste TUNE_KP con un valor de ajuste del 110% en el eje
1 de la unidad mecnica MHA160R1.
Ejecucin de programas
El tipo de ajuste especificado y el valor de ajuste se activan para el eje especificado.
Este valor se aplica a todos los movimientos hasta que se programa un nuevo
valor para el eje actual o hasta que se restablecen los tipos y valores de ajuste de
todos los ejes mediante la instruccin TuneReset.
Los valores de ajuste predeterminados del servo de todos los ejes se ajustan
automticamente mediante la ejecucin de la instruccin TuneReset en los casos
siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

Limitaciones
Cualquier ajuste de servo activo se devuelve siempre a los valores predeterminados
en caso de una cada de alimentacin.
Esta limitacin puede gestionarse en el programa del usuario al reanudar la
ejecucin despus de una cada de alimentacin.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.220 TuneServo - Ajuste de servos
Continuacin
Sintaxis
TuneServo
[MecUnit := ] < variable (VAR) of mecunit> ,
[Axis := ] < expression (IN) of num> ,
[TuneValue := ] < expression (IN) of num>
[\ Type := <expression (IN) of tunetype>];

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Otros parmetros de movimiento Technical reference manual - RAPID overview, seccin
Resumen sobre RAPID - Parmetros de movimiento
Tipos de ajuste de servo

tunetype - Tipo de ajuste de servo en la pgina 1321

Restablecimiento de todos los


ajustes de servo

TuneReset - Restablecimiento del ajuste del servo en la


pgina 682

Ajuste de ejes externos

Application manual - Additional axes and stand alone


controller

Compensacin de friccin

Manual de referencia tcnica - Parmetros del sistema,


seccin Motion - Friction Compensation

688

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.221 UIMsgBox - Cuadro de mensaje de usuario de tipo bsico

1.221 UIMsgBox - Cuadro de mensaje de usuario de tipo bsico


Utilizacin
UIMsgBox (User Interaction Message Box) se usa para comunicarse con el usuario
del sistema de robot a travs de un dispositivo de usuario disponible, como el
FlexPendant. Se escribe un mensaje para el operador, que a su vez responde con
la seleccin de un botn. A continuacin, la seleccin de usuario se transfiere al
programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin UIMsgBox.
Consulte tambin Ms ejemplos en la pgina 694.
Ejemplo 1
UIMsgBox Continue the program ?;

Se muestra el mensaje "Continue the program ?". El programa contina tan


pronto como el usuario presiona el botn predeterminado OK.
Ejemplo 2
VAR btnres answer;
...
UIMsgBox
\Header:="UIMsgBox Header",
"Message Line 1"
\MsgLine2:="Message Line 2"
\MsgLine3:="Message Line 3"
\MsgLine4:="Message Line 4"
\MsgLine5:="Message Line 5"
\Buttons:=btnOKCancel
\Icon:=iconInfo
\Result:=answer;
IF answer = resOK my_proc;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.221 UIMsgBox - Cuadro de mensaje de usuario de tipo bsico
Continuacin

xx0500002432

Se muestra en la pantalla del FlexPendant el cuadro de mensaje anterior, con


icono, ttulo, lneas de mensaje de la 1 a la 5 y pulsadores definidos por el usuario.
La ejecucin espera hasta que se presiona OK o Cancelar. En otras palabras, se
asigna a answer el valor 1 (OK) 5 (Cancelar) en funcin de cul de los botones
se presione. Si la respuesta es OK, se llama a my_proc.
Recuerde que las lneas de mensaje de la 1 a la 5 se muestran en las lneas de la
1 a la 5 separadas (no se usa el modificador \Wrap).
Argumentos
UIMsgBox [\Header] MsgLine1 [\MsgLine2] [\MsgLine3] [\MsgLine4]
[\MsgLine5] [\Wrap] [\Buttons] [\Icon] [\Image] [\Result]
[\MaxTime] [\DIBreak] [\DIPassive] [\DOBreak] [\DOPassive]
[\BreakFlag]

[\Header]
Tipo de dato: string
El texto de ttulo que debe escribirse en la parte superior del cuadro de mensaje.
Mximo 40 caracteres.
MsgLine1
Message Line 1
Tipo de dato: string
La lnea 1 del texto a escribir en la pantalla. Mximo 55 caracteres.
[\MsgLine2]
Message Line 2
Contina en la pgina siguiente
690

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.221 UIMsgBox - Cuadro de mensaje de usuario de tipo bsico
Continuacin
Tipo de dato: string
Se escribe la lnea 2 de texto adicional en la pantalla. Mximo 55 caracteres.
[\MsgLine3]
Message Line 3
Tipo de dato: string
Se escribe la lnea 3 de texto adicional en la pantalla. Mximo 55 caracteres.
[\MsgLine4]
Message Line 4
Tipo de dato: string
Se escribe la lnea 4 de texto adicional en la pantalla. Mximo 55 caracteres.
[\MsgLine5]
Message Line 5
Tipo de dato: string
Se escribe la lnea 5 de texto adicional en la pantalla. Mximo 55 caracteres.
[\Wrap]
Tipo de dato: switch
Si se selecciona, todas las cadenas de MsgLine1 ... MsgLine5 se concatenan
para formar una cadena con un solo espacio entre las distintas cadenas individuales
y distribuida en el nmero mnimo posible de lneas.
De forma predeterminada, cada cadena de mensaje de MsgLine1 ... MsgLine5
aparece en una lnea separada en la pantalla.
[\Buttons]
Tipo de dato: buttondata
Define los pulsadores que se desea mostrar. Slo puede mostrarse una de las
combinaciones de botones predefinidas del tipo buttondata. Consulte Datos
predefinidos en la pgina 694.
De forma predeterminada, el sistema muestra el botn OK. (\Buttons:=btn OK).
[\Icon]
Tipo de dato: icondata
Define el icono a mostrar. Slo puede usarse uno de los iconos predefinidos de
tipo icondata. Consulte Datos predefinidos en la pgina 694.
De forma predeterminada, no se usa ningn icono.
[\Image]
Tipo de dato: string
El nombre de la imagen que debe utilizarse. Para iniciar sus propias imgenes,
las imgenes deben estar situadas en el directorio HOME: del sistema activo o
directamente en el sistema activo.
La recomendacin es situar los archivos en el directorio HOME: de forma que se
incluyan en las operaciones de copia de seguridad y restauracin.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.221 UIMsgBox - Cuadro de mensaje de usuario de tipo bsico
Continuacin
Se requiere un arranque en caliente, tras lo cual el FlexPendant carga las imgenes.
Una exigencia del sistema es que se use la opcin de RobotWare FlexPendant
Interface.
La imagen a mostrar puede tener 185 pxeles de anchura y 300 pxeles de altura.
Si la imagen tiene un tamao mayor, slo se muestran 185 * 300 pxeles de la
imagen a partir de su parte superior izquierda.
No es posible especificar ningn valor exacto en cuanto al tamao que una imagen
puede tener o el nmero de imgenes que es posible cargar en el FlexPendant.
Depende del tamao de los dems archivos cargados en el FlexPendant. La
ejecucin de los programas contina simplemente si se usa una imagen que no
est cargada en el FlexPendant.
[\Result]
Tipo de dato: btnres
La variable cuyo valor se devuelve (de 0 a 7) en funcin de qu botn se presione.
Slo es posible usar una de las constantes predefinidas del tipo btnres para
evaluar la seleccin del usuario. Consulte Datos predefinidos en la pgina 694.
En caso de cualquier tipo de interrupcin del sistema, como \MaxTime, \DIBreak
o \DOBreak o en caso de que \Buttons:=btnNone, resUnkwn se devuelve
igual a 0.
[\MaxTime]
Tipo de dato: num
El periodo mximo, en segundos, que debe esperar el programa para continuar
con la ejecucin. Si no se selecciona ningn botn en ese periodo, el programa
sigue ejecutndose en el gestor de errores, a no ser que se utilice el indicador
BreakFlag (que se documenta a continuacin). La constante ERR_TP_MAXTIME
puede usarse para comprobar si ha transcurrido ya el tiempo mximo establecido.
[\DIBreak]
Digital Input Break
Tipo de dato: signaldi
La seal digital de entrada que puede interrumpir el dilogo con el operador. Si
no se selecciona ningn botn cuando la seal cambia a 1 (o si ya tiene el valor
1), el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice
el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DIPassive]
Digital Input Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DIBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DIBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
Contina en la pgina siguiente
692

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.221 UIMsgBox - Cuadro de mensaje de usuario de tipo bsico
Continuacin
[\DOBreak]
Digital Output Break
Tipo de dato: signaldo
La seal digital de salida que puede interrumpir el dilogo con el operador. Si no
se selecciona ningn botn cuando la seal cambia a 1 (o si ya tiene el valor 1),
el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice el
indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOPassive]
Digital Output Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DOBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DOBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\BreakFlag]
Tipo de dato: errnum
Una variable (cambiada a 0 por el sistema antes de su uso) que contiene el cdigo
de error si se utilizan \MaxTime, \DIBreak o \DOBreak. Las constantes
ERR_TP_MAXTIME, ERR_TP_DIBREAK y ERR_TP_DOBREAK pueden usarse para
seleccionar el motivo. Si se omite esta variable opcional, se ejecuta el gestor de
errores.
Ejecucin de programas
Se muestra un cuadro de mensaje con icono, ttulo, lneas de mensaje, imgenes
y botones, de acuerdo con los argumentos del programa. La ejecucin del programa
espera hasta que el usuario seleccione un botn o que el cuadro de mensaje sea
interrumpido por un tiempo lmite o una accin de seal. La opcin seleccionada
por el usuario y el motivo de la interrupcin se devuelven al programa.
El nuevo cuadro de mensaje del nivel de rutina TRAP toma el foco del cuadro de
mensaje del nivel bsico.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.221 UIMsgBox - Cuadro de mensaje de usuario de tipo bsico
Continuacin
Datos predefinidos
!Icons:
CONST
CONST
CONST
CONST

icondata
icondata
icondata
icondata

iconNone := 0;
iconInfo := 1;
iconWarning := 2;
iconError := 3;

!Buttons:
CONST buttondata
CONST buttondata
CONST buttondata
CONST buttondata
CONST buttondata
CONST buttondata
CONST buttondata
!Results:
CONST btnres
CONST btnres
CONST btnres
CONST btnres
CONST btnres
CONST btnres
CONST btnres
CONST btnres

btnNone := -1;
btnOK := 0;
btnAbrtRtryIgn
btnOKCancel :=
btnRetryCancel
btnYesNo := 4;
btnYesNoCancel

:= 1;
2;
:= 3;
:= 5;

resUnkwn := 0;
resOK := 1;
resAbort := 2;
resRetry := 3;
resIgnore := 4;
resCancel := 5;
resYes := 6;
resNo := 7;

Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin UIMsgBox.
Ejemplo 1
VAR errnum err_var;
...
UIMsgBox \Header:= "Example 1", "Waiting for a break condition..."
\Buttons:=btnNone \Icon:=iconInfo \MaxTime:=60 \DIBreak:=di5
\BreakFlag:=err_var;
TEST err_var
CASE ERR_TP_MAXTIME:
! Time out break, max time 60 seconds has elapsed
CASE ERR_TP_DIBREAK:
! Input signal break, signal di5 has been set to 1
DEFAULT:
! Not such case defined
ENDTEST

El cuadro de mensaje se muestra hasta que una condicin de interrupcin sea


verdadera. El operador no puede responder ni eliminar el cuadro de mensaje
porque se ha configurado btnNone para el argumento \Buttons. El cuadro de
mensaje desaparece cuando di5 ha cambiado a 1 o en el tiempo lmite (tras 60
segundos).

Contina en la pgina siguiente


694

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.221 UIMsgBox - Cuadro de mensaje de usuario de tipo bsico
Continuacin
Ejemplo 2
VAR errnum err_var;
...
UIMsgBox \Header:= "Example 2", "Waiting for a break condition..."
\Buttons:=btnNone \Icon:=iconInfo \MaxTime:=60 \DIBreak:=di5
\DIPassive \BreakFlag:=err_var;
TEST err_var
CASE ERR_TP_MAXTIME:
! Time out break, max time 60 seconds has elapsed
CASE ERR_TP_DIBREAK:
! Input signal break, signal di5 has been set to 0
DEFAULT:
! Not such case defined
ENDTEST

El cuadro de mensaje se muestra hasta que una condicin de interrupcin sea


verdadera. El operador no puede responder ni eliminar el cuadro de mensaje
porque se ha configurado btnNone para el argumento \Buttons. El cuadro de
mensaje desaparece cuando di5 ha cambiado a 0 o en el tiempo lmite (tras 60
segundos).
Gestin de errores
Si no se usa el parmetro \BreakFlag, estas situaciones pueden ser gestionadas
en el gestor de errores:

Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_MAXTIME y la
ejecucin contina en el gestor de errores.

Si se activa la entrada digital (parmetro \DIBreak) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_DIBREAK y la
ejecucin contina en el gestor de errores.

Si se activa la salida digital (parmetro \DOBreak) antes de la accin del


operador, la variable de sistema ERRNO cambia a ERR_TP_DOBREAK y la
ejecucin contina en el gestor de errores.

Esta situacin slo puede ser gestionada desde el gestor de errores.

Si no hay ningn cliente, por ejemplo un FlexPendant, que se encargue de


la instruccin, la variable de sistema ERRNO cambia a ERR_TP_NO_CLIENT
y la ejecucin contina en el gestor de errores.

Limitaciones
Evite usar un valor demasiado pequeo para el parmetro de tiempo lmite
\MaxTime si UIMsgBox se ejecuta frecuentemente, por ejemplo en un bucle. Si
lo hace, puede dar lugar a un comportamiento impredecible del rendimiento del
sistema, por ejemplo la ralentizacin de la respuesta del FlexPendant.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.221 UIMsgBox - Cuadro de mensaje de usuario de tipo bsico
Continuacin
Sintaxis
UIMsgBox
[\Header:= <expression (IN) of string>,]
[MsgLine1:=] <expression (IN) of string>
[\MsgLine2:=<expression (IN) of string>]
[\MsgLine3:=<expression (IN) of string>]
[\MsgLine4:=<expression (IN) of string>]
[\MsgLine5:=<expression (IN) of string>]
[\Wrap]
[\Buttons:= <expression (IN) of buttondata>]
[\Icon:= <expression (IN) of icondata>]
[\Image:=<expression (IN) of string>]
[\Result:=< var or pers (INOUT) of btnres>]
[\MaxTime:= <expression (IN) of num>]
[\DIBreak:= <variable (VAR) of signaldi>]
[\DIPassive]
[\DOBreak:= <variable (VAR) of signaldo>]
[\DOPassive]
[\BreakFlag:= <var or pers (INOUT) of errnum>];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos de visualizacin de iconos

icondata - Datos de visualizacin de iconos


en la pgina 1208

Datos de pulsador

buttondata - Datos de pulsador en la pgina1175

Datos de resultado de pulsador

btnres - Datos de resultado de pulsador en la


pgina 1172

Cuadro de mensaje de interaccin con el


usuario de tipo avanzado

UIMessageBox - Cuadro de mensaje de


usuario de tipo avanzado en la pgina 1141

Introduccin de nmero de interaccin con UINumEntry - Introduccin de nmero de


el usuario
usuario en la pgina 1149
Ajuste de nmero de interaccin con el
usuario

UINumTune - Ajuste de nmero de usuario en


la pgina 1156

Introduccin alfanumrica de interaccin


con el usuario

UIAlphaEntry - Introduccin alfanumrica del


usuario en la pgina 1110

Vista de lista de interaccin con el usuario UIListView - Vista de lista de usuario en la


pgina 1132
Sistema conectado al FlexPendant, etc.

UIClientExist - Existe cliente de usuario en la


pgina 1116

FlexPendant Interface

Especificaciones del producto - Controller


software IRC5, seccin Communication FlexPendant Interface

Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el FlexPendant en la pgina 593

696

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.222 UIShow - Visualizacin de interfaz de usuario

1.222 UIShow - Visualizacin de interfaz de usuario


Utilizacin
UIShow (User Interface Show) se usa para comunicarse con el usuario del sistema
de robot a travs de un dispositivo de usuario disponible, como el FlexPendant.
Con UIShow tanto las aplicaciones individuales como las aplicaciones estndar
pueden ser iniciadas desde un programa de RAPID.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin UIShow.
Los ejemplos 1 y 2 slo funcionan si los archivos TpsViewMyAppl.dll y
TpsViewMyAppl.gtpu.dll estn presentes en el directorio HOME: y se ha
realizado un arranque en caliente.
Ejemplo 1
CONST string Name:="TpsViewMyAppl.gtpu.dll";
CONST string Type:="ABB.Robotics.SDK.Views.TpsViewMyAppl";
CONST string Cmd1:="Init data string passed to the view";
CONST string Cmd2:="New init data string passed to the view";
PERS uishownum myinstance:=0;
VAR num mystatus:=0;
...
! Launch one view of my application MyAppl
UIShow Name, Type \InitCmd:=Cmd1 \InstanceID:=myinstance
\Status:=mystatus;
! Update the view with new init command
UIShow Name, Type \InitCmd:=Cmd2 \InstanceID:=myinstance
\Status:=mystatus;

El cdigo anterior inicia la vista TpsViewMyAppl con el comando de inicializacin


Cmd1 y a continuacin actualiza la vista con Cmd2.
Ejemplo 2
CONST string Name:="TpsViewMyAppl.gtpu.dll";
CONST string Type:="ABB.Robotics.SDK.Views.TpsViewMyAppl";
CONST string Cmd1:="Init data string passed to the view";
CONST string Cmd2:="New init data string passed to the view";
PERS uishownum myinstance:=0;
VAR num mystatus:=0;
...
! Launch one view of my application MyAppl
UIShow Name, Type \InitCmd:=Cmd1 \Status:=mystatus;
! Launch another view of the application MyAppl
UIShow Name, Type \InitCmd:=Cmd2 \InstanceID:=myinstance
\Status:=mystatus;

El cdigo anterior inicia la vista TpsViewMyAppl con el comando de inicializacin


Cmd1. A continuacin, inicia otra vista con el comando de inicializacin Cmd2.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.222 UIShow - Visualizacin de interfaz de usuario
Continuacin
Ejemplo 3
CONST string Name:="tpsviewbackupandrestore.dll";
CONST string Type:="ABB.Robotics.Tps.Views.TpsViewBackupAndRestore";
VAR num mystatus:=0;
...
UIShow Name, Type \Status:=mystatus;

Inicio de las aplicaciones estndar de copia de seguridad y restauracin.


Argumentos
UIShow AssemblyName TypeName [\InitCmd] [\InstanceId] [\Status]
[\NoCloseBtn]

AssemblyName
Tipo de dato: string
El nombre del conjunto que contiene la vista.
TypeName
Tipo de dato: string
ste es el nombre de la vista (del tipo a crear). ste es el nombre completo del
nombre del tipo, es decir, con su espacio de nombres incluido.
[\InitCmd]
Init Command
Tipo de dato: string
Una cadena de datos de inicializacin entregada a la vista.
[\InstanceId]
Tipo de dato: uishownum
Un parmetro que representa un token utilizado para identificar una vista. Si se
muestra una vista a continuacin de la llamada a UIShow, se devuelve un valor
que identifica la vista. A continuacin, este token puede usarse en otras llamadas
a UIShow para activar una vista que ya est en funcionamiento. Si el valor identifica
una vista existente (en ejecucin), se activa la vista. Si no existe, se crea una nueva
instancia. Esto significa que este parmetro puede usarse para determinar si se
iniciar una nueva instancia o no. Si su valor identifica a una vista ya iniciada, esta
vista se activar, independientemente de los valores de los dems parmetros.
Una recomendacin es usar una variable InstanceId exclusiva para cada nueva
aplicacin que se prevea iniciar con la instruccin UIShow.
El parmetro debe ser una variable persistente y el motivo para ello es que esta
variable debe conservar su valor, incluso si el puntero de programa se mueve a
Main. Si se ejecuta la misma instruccin UIShow que antes y se usa la misma
variable, se activa la misma siempre y cuando siga abierta. Si la vista ha sido
cerrada, se inicia una nueva vista.
[\Status]
Tipo de dato: num

Contina en la pgina siguiente


698

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.222 UIShow - Visualizacin de interfaz de usuario
Continuacin
Status indica si la operacin tuvo xito o no. Recuerde que si se usa esta opcin,
la ejecucin de RAPID permanecer en espera hasta que se completa la instruccin,
es decir, la vista se inicia.
Este parmetro opcional se usa principalmente para fines de depuracin. (Consulte
Gestin de errores)
Status

Descripcin

Correcto

-1

No queda espacio en el FlexPendant para la nueva vista. Es


posible tener abiertas un mximo de 6 vistas a la vez en el
FlexPendant.

-2

No se encuentra el conjunto. No existe.

-3

El archivo se ha encontrado, pero no es posible cargarlo.

-4

El conjunto existe, pero no puede crearse ninguna instancia


nueva.

-5

El valor de typename no es vlido para este conjunto.

-6

InstanceID no se corresponde con el conjunto a cargar.

[\NoCloseBtn]
No Close Button
Tipo de dato: switch
NoCloseBtn desactiva el botn Cerrar de la vista.
Ejecucin de programas
La instruccin UIShow se utiliza para iniciar aplicaciones individuales en el
FlexPendant. Para iniciar aplicaciones individuales, los conjuntos deben estar
situados en el directorio HOME: del sistema activo, directamente en el sistema
activo o en una opcin adicional. La recomendacin es situar los archivos en el
directorio HOME: de forma que se incluyan en las operaciones de copia de seguridad
y restauracin. Se requiere un arranque en caliente, tras lo cual el FlexPendant
carga los nuevos conjuntos. Una exigencia del sistema es que se use la opcin
de RobotWare FlexPendant Interface.
Tambin es posible iniciar aplicaciones estndar, como la copia de seguridad y la
restauracin. En este caso, no existe la exigencia de tener instalada la opcin de
RobotWare FlexPendant Interface.
Si se usa el parmetro \Status, la ejecucin del programa espera hasta el inicio
de la aplicacin. Si los errores de la aplicacin no son gestionados, lo nico que
se supervisa es el resultado del inicio. Sin el parmetro \Status, se ordena al
FlexPendant que inicie la aplicacin, pero no existe ninguna comprobacin para
determinar si el inicio es posible o no.
Gestin de errores
Si no hay ningn cliente, por ejemplo un FlexPendant, que se encargue de la
instruccin, la variable de sistema ERRNO cambia a ERR_TP_NO_CLIENT y la
ejecucin contina en el gestor de errores.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.222 UIShow - Visualizacin de interfaz de usuario
Continuacin
Si se usa el parmetro \Status, estas situaciones pueden ser gestionadas en el
gestor de errores:

Si no queda espacio libre en el FlexPendant para el conjunto, la variable de


sistema ERRNO cambia a ERR_UISHOW_FULL y la ejecucin contina en el
gestor de errores. El FlexPendant puede tener abiertas 6 vistas a la vez.

Si algo sale mal al intentar iniciar una vista, la variable de sistema ERRNO
cambia a ERR_UISHOW_FATAL y la ejecucin contina en el gestor de errores.

Limitaciones
Al utilizar la instruccin UIShow para iniciar aplicaciones individuales, existe la
exigencia de que el sistema est dotado de la opcin FlexPendant Interface.
Las aplicaciones iniciadas con la instruccin UIShow no sobreviven a las
situaciones de cada de alimentacin. Es posible usar la rutina de evento POWER
ON para volver a configurar la aplicacin.
Sintaxis
UIShow
[AssemblyName :=] < expression (IN) of string >,
[TypeName :=] < expression (IN) of string >,
[\InitCmd := < expression (IN) of string> ]
[\InstanceId := < persistent (PERS) of uishownum> ]
[\Status := < variable (VAR) of num> ]
[\NoCloseBtn ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

FlexPendant nterface

Especificaciones del producto - Controller


software IRC5, seccin Communication FlexPendant Interface

Creacin de aplicaciones individuales para Application manual - PC SDK


el FlexPendant
uishownum

uishownum - ID de instancia para UIShow en


la pgina 1322

Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el FlexPendant en la pgina 593

700

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.223 UnLoad - Descarga un mdulo de programa durante la ejecucin

1.223 UnLoad - Descarga un mdulo de programa durante la ejecucin


Utilizacin
UnLoad se utiliza para descargar un mdulo de programa de la memoria durante
la ejecucin.
El mdulo de programa debe haberse cargado previamente en la memoria de
programa mediante las instrucciones Load o StartLoad - WaitLoad.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin UnLoad.
Consulte tambin Ms ejemplos, a continuacin.
Ejemplo 1
UnLoad diskhome \File:="PART_A.MOD";

Realizar una operacin UnLoad para descargar de la memoria de programas el


mdulo de programa PART_A.MOD, que fue cargado anteriormente en la memoria
Load. (Consulte la instruccin Load). diskhome es una constante de cadena
predefinida "HOME:".
Argumentos
UnLoad [\ErrIfChanged] | [\Save] FilePath [\File]

[\ErrIfChanged]
Tipo de dato: switch
Si se usa este argumento y el mdulo ha cambiado desde su carga en el sistema,
la instruccin generar el cdigo de recuperacin de errores ERR_NOTSAVED.
[\Save]
Tipo de dato: switch
Si se utiliza este argumento, el mdulo de programa se guarda antes de que
comience la descarga. El mdulo de programa se guarda en la posicin original
especificada en la instruccin Load o StartLoad.
FilePath
Tipo de dato: string
La ruta y el nombre del archivo que se descargar de la memoria de programa.
La ruta y el nombre del archivo deben ser los mismos que en la instruccin Load
o StartLoad ejecutadas anteriormente. El nombre de archivo se excluye cuando
se utiliza el argumento \File .
[\File]
Tipo de dato: string
Cuando se excluye el nombre del archivo en el argumento FilePath, es necesario
definirlo con este argumento. El nombre del archivo debe ser el mismo que en la
instruccin Load o StartLoad ejecutadas anteriormente.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.223 UnLoad - Descarga un mdulo de programa durante la ejecucin
Continuacin
Ejecucin de programas
Para poder ejecutar una instruccin UnLoad en el programa, es necesario haber
ejecutado anteriormente en el programa una instruccin Load o StartLoad WaitLoad.
La ejecucin del programa espera a que el mdulo de programa termine de cargarse
antes de que la ejecucin contine con la instruccin siguiente.
A continuacin, se descarga al mdulo de programa y se vinculan los dems
mdulos de programa.
Para obtener ms informacin, consulte las instrucciones Load o
StartLoad-Waitload.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin UnLoad.
Ejemplo 1
UnLoad "HOME:/DOORDIR/DOOR1.MOD";

Realizar una operacin UnLoad para descargar de la memoria de programas el


mdulo de programa DOOR1.MOD, que fue cargado anteriormente en la memoria.
Ejemplo 2
UnLoad "HOME:" \File:="DOORDIR/DOOR1.MOD";

Lo mismo que en el ejemplo 1 anterior pero con otra sintaxis.


Ejemplo 3
Unload \Save, "HOME:" \File:="DOORDIR/DOOR1.MOD";

Lo mismo que en los ejemplos 1 y 2 anteriores, pero guarda el mdulo de programa


antes de la descarga.
Limitaciones
No se permite descargar mdulos de programa que se estn ejecutando (puntero
de programa en el mdulo).
Las rutinas TRAP, los eventos de E/S del sistema y otras tareas de programa no
pueden ejecutarse durante la descarga.
Evite tener movimientos en curso durante la descarga.
La detencin del programa durante la ejecucin de la instruccin UnLoad puede
dar lugar a un paro protegido con los motores apagados y un mensaje de error
"20025 Tiempo excesivo Orden paro" en el FlexPendant.
Gestin de errores
Si no es posible descargar el archivo que se indica en la instruccin UnLoad debido
a que se est ejecutando el mdulo o a que se indica una ruta incorrecta (por
ejemplo cuando no se ha cargado el mdulo con Load o StartLoad), la variable
de sistema ERRNO cambia a ERR_UNLOAD.
Si se utiliza el argumento \ErrIfChanged y el mdulo ha cambiado, la ejecucin
de esta rutina cambiar la variable de sistema ERRNO a ERR_NOTSAVED.
Estos errores pueden ser gestionados en el gestor de errores.
Contina en la pgina siguiente
702

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.223 UnLoad - Descarga un mdulo de programa durante la ejecucin
Continuacin
Sintaxis
UnLoad
[\ErrIfChanged ,] | [\Save ,]
[FilePath:=]<expression (IN) of string>
[\File:= <expression (IN) of string>];

Informacin relacionada
Para obtener ms informa- Consulte
cin sobre
Comprobar referencias de
programa

CheckProgRef - Comprobar referencias de programa en la


pgina 39

Carga de un mdulo de pro- Load - Carga un mdulo de programa durante la ejecucin


grama
en la pgina 217
StartLoad - Carga un mdulo de programa durante la ejecucin en la pgina 514
WaitLoad - Conecta el mdulo cargado a la tarea en la pgina 729

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.224 UnpackRawBytes - Desempaqueta datos de un dato de tipo rawbytes

1.224 UnpackRawBytes - Desempaqueta datos de un dato de tipo rawbytes


Utilizacin
UnpackRawBytes se utiliza para desempaquetar el contenido de un contenedor
de tipo rawbytes en variables de tipo byte, num, dnum o string.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
UnpackRawBytes.
Ejemplo 1
VAR
VAR
VAR
VAR
VAR
VAR
VAR
VAR
VAR

iodev io_device;
rawbytes raw_data_out;
rawbytes raw_data_in;
num integer;
dnum bigInt;
num float;
string string1;
byte byte1;
byte data1;

! Data packed in raw_data_out according to the protocol


...
Open "chan1:", io_device\Bin;
WriteRawBytes io_device, raw_data_out;
ReadRawBytes io_device, raw_data_in\Time := 1;
Close io_device;

De acuerdo con el protocolo conocido por el programador, el mensaje se enva al


dispositivo "chan1:". A continuacin, la respuesta es leda desde el dispositivo.
Por ejemplo, la respuesta contiene lo siguiente:
Nmero de byte:

Contenido:

1-4

Entero '5'

5-8

Flotante 234,6

9-25

Cadena: Qu bien me lo paso!

26

Valor hexadecimal '4D'

27

Cdigo ASCII 122, es decir, z

28-36

Entero 4294967295

37-40

Entero 4294967295

UnpackRawBytes raw_data_in, 1, integer \IntX := DINT;

El contenido de integer ser el nmero entero 5.


UnpackRawBytes raw_data_in, 5, float \Float4;

El contenido de float ser el nmero con decimales 234,6.


UnpackRawBytes raw_data_in, 9, string1 \ASCII:=17;

El contenido de string1 ser el nmero entero "This is real fun!".


UnpackRawBytes raw_data_in, 26, byte1 \Hex1;

Contina en la pgina siguiente


704

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.224 UnpackRawBytes - Desempaqueta datos de un dato de tipo rawbytes
Continuacin
El contenido de byte1 ser el valor hexadecimal '4D'.
UnpackRawBytes raw_data_in, 27, data1 \ASCII:=1;

El contenido de data1 ser 122, el cdigo ASCII de "z".


UnpackRawBytes raw_data_in, 28, bigInt \IntX := LINT;

El contenido de bigInt ser el nmero entero 4294967295.


UnpackRawBytes raw_data_in, 37, bigInt \IntX := UDINT;

El contenido de bigInt ser el nmero entero 4294967295.


Argumentos
UnpackRawBytes RawData [ \Network ] StartIndex Value [\Hex1 ]| [
\IntX ] | [ \Float4 ] | [ \ASCII ]

RawData
Tipo de dato: rawbytes
El contenedor de variable del cual se desempaquetarn los datos.
[ \Network ]
Tipo de dato: switch
Indica que los valores enteros y flotantes deben desempaquetarse con la
representacin big-endian (orden de red) de RawData. Tanto ProfiBus como
InterBus utilizan big-endian.
Sin este modificador, los valores enteros y flotantes se desempaquetan con la
representacin little-endian (sin el orden de la red) de RawData. DeviceNet utiliza
little-endian.
Slo relevante junto con los parmetros opcionales \IntX - UINT, UDINT,
ULINT, INT, DINT , LINT y \Float4.
StartIndex
Tipo de dato: num
StartIndex, entre 1 y 1.024, indica a partir de dnde debe empezar el
desempaquetado de RawData.
Value
Tipo de dato: anytype
La variable que contiene los datos desempaquetados de RawData.
Los tipos de datos permitidos son: byte, num, dnum o string. No se permite el
uso de matrices.
[ \Hex1 ]
Tipo de dato: switch
Los datos a desempaquetar y situar en Value tienen el formato hexadecimal en
1 byte y se convierten al formato decimal en una variable de tipo byte.
[ \IntX ]
Tipo de dato: inttypes

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.224 UnpackRawBytes - Desempaqueta datos de un dato de tipo rawbytes
Continuacin
Los datos a desempaquetar tienen el formato que corresponde a la constante
especificada del tipo inttypes. Los datos se convertirn a una variable de tipo
num o dnum que contiene un entero y se almacenan en Value.
Consulte Datos predefinidos en la pgina 707.
[ \Float4 ]
Tipo de dato: switch
Los datos a desempaquetar y situar en Value tienen el formato flotante de 4 bytes
y se convertirn en una variable de tipo num que contiene un valor de coma flotante.
[ \ASCII ]
Tipo de dato: num
Los datos a desempaquetar y situar en Value tienen el formato byte o string.
Si Value es de tipo byte, los datos se interpretarn como cdigo ASCII y se
convertirn al formato byte (1 carcter).
Si Value es del tipo string, los datos se almacenarn como string (de 1 a 80
caracteres). Los datos de cadena no son terminados con NULL en el caso de los
datos de tipo rawbytes.
Es necesario programar uno de los argumentos, \Hex1, \IntX, \Float4 o \ASCII.
Se permiten las combinaciones siguientes:
Tipo de dato de Value:

Parmetros de opcin permitidos:

num *)

\IntX

dnum **)

\IntX

num

\Float4

string

\ASCII:=n with n between 1 and 80

byte

\Hex1 \ASCII:=1

*) Debe ser un entero dentro del rango de valor de la constante simblica


seleccionada, USINT, UINT, UDINT, SINT, INT o DINT.
*) Debe ser un entero dentro del rango de valor de la constante simblica
seleccionada, USINT, UINT, UDINT, ULINT, SINT, INT, DINT o LINT.
Ejecucin de programas
Durante la ejecucin del programa, se desempaquetan los datos del contenedor
del tipo rawbytes en una variable de tipo anytype.
En caso de un reinicio tras una cada de alimentacin, 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.

Contina en la pgina siguiente


706

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.224 UnpackRawBytes - Desempaqueta datos de un dato de tipo rawbytes
Continuacin
Datos predefinidos
Se han definido las constantes simblicas siguientes para el tipo de dato inttypes.
Puede usarlas para especificar el entero en el parmetro \IntX.
Constante sim- Valor cons- Formato de entero
blica
tante

Rango de valores enteros

USINT

Entero de 1 byte sin signo 0 ... 255

UINT

Entero de 2 byte sin signo 0 ... 65 535

UDINT

Entero de 4 byte sin signo 0 ... 8 388 608 *)


0 ... 4 294 967 295 ****)

ULINT

Entero de 8 byte sin signo 0 ... 4 503 599 627 370 496**)

SINT

-1

Entero de 1 bytes con sig- - 128... 127


no

INT

-2

Entero de 2 bytes con sig- - 32 768 ... 32 767


no

DINT

-4

Entero de 4 bytes con sig- - 8 388 607 ... 8 388 608 *)


no
-2 147 483 648 ... 2 147 483 647
***)

LINT

-8

Entero de 8 bytes con sig- - 4 503 599 627 370 496... 4 503
no
599 627 370 496 **)

*) *) Limitacin de RAPID para el almacenamiento de enteros en el tipo de dato


num.
**) *) Limitacin de RAPID para el almacenamiento de enteros en el tipo de dato
dnum.
***) Rango al utilizar una variable dnum e inttype DINT.
****) Rango al utilizar una variable dnum e inttype UDINT.
Sintaxis
UnpackRawBytes
[RawData := ] < variable (VAR) of rawbytes>
[ \ Network ] ,
[StartIndex := ] < expression (IN) of num> ,
[Value := ] < variable (VAR) of anytype>
[ \ Hex1 ]
| [ \ IntX := < expression (IN) of inttypes>]
| [ \ Float4 ]
| [ \ ASCII := < expression (IN) of num>] ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
rawbytes datos

rawbytes - Datos sin formato en la pgina 1254

Obtencin de la longitud de un dato RawBytesLen - Obtiene la longitud de un dato de


rawbytes
tipo rawbytes en la pgina 1011
Borrado del contenido de un dato de ClearRawBytes - Borra el contenido de un dato de
tipo rawbytes
tipo rawbytes en la pgina 53
Copiado del contenido de un dato de CopyRawBytes - Copia el contenido de un dato de
tipo rawbytes
tipo rawbytes en la pgina 71

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.224 UnpackRawBytes - Desempaqueta datos de un dato de tipo rawbytes
Continuacin
Para obtener ms informacin sobre Consulte
Empaquetamiento de un encabezado PackDNHeader - Empaqueta un encabezado de
de DeviceNet en datos rawbytes
DeviceNet en datos rawbytes en la pgina 304
Empaquetamiento de datos en datos PackRawBytes - Empaqueta datos en un dato de tipo
rawbytes
rawbytes en la pgina 307
Escritura de un dato rawbytes

WriteRawBytes - Escribe un dato de tipo rawbytes


en la pgina 772

Lectura de un dato rawbytes

ReadRawBytes - Lee datos de tipo rawbytes en la


pgina 374

Desempaquetamiento de datos de un UnpackRawBytes - Desempaqueta datos de un dato


dato rawbytes
de tipo rawbytes en la pgina 704
Funciones para bits/bytes

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Matemticas - Funciones de bits

Funciones para cadenas de caracte- Technical reference manual - RAPID overview, secres
cin Resumen sobre RAPID - Funciones para cadenas de caracteres

708

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.225 VelSet - Cambia la velocidad programada

1.225 VelSet - Cambia la velocidad programada


Utilizacin
VelSet se utiliza para aumentar o reducir la velocidad programada de todas las
instrucciones de posicionamiento posteriores. Esta instruccin tambin se usa
para aumentar al mximo la velocidad.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin VelSet.
Consulte tambin Ms ejemplos en la pgina 710.
Ejemplo 1
VelSet 50, 800;

Todas las velocidades programadas se reducen hasta el 50% del valor indicado
en la instruccin. Sin embargo, no se permite que TCP tenga una velocidad superior
a los 800 mm/s.
Argumentos
VelSet Override Max

Override
Tipo de dato: num
La velocidad deseada, como un porcentaje de la velocidad programada. El 100%
corresponde a la velocidad programada.
Max
Tipo de dato: num
La velocidad mxima del TCP en mm/s.
Ejecucin de programas
La velocidad programada de todas las instrucciones de posicionamiento posteriores
se ve afectada hasta que se ejecuta la instruccin VelSet.
El argumento Override afecta a lo siguiente:

Todos los componentes de velocidad (TCP, orientacin, ejes externos de


rotacin y ejes externos lineales) de speeddata.

La redefinicin de velocidad programada en la instruccin de posicionamiento


(el argumento \V).

Movimientos temporizados.

El argumento Override no afecta a lo siguiente:

La velocidad de soldado de welddata.

El calentamiento y la velocidad de llenado de seamdata.

El argumento Max slo afecta a la velocidad del TCP.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.225 VelSet - Cambia la velocidad programada
Continuacin
Los valores predeterminados de Override y Max son del 100% y de vmax.v_tcp
mm/s *) respectivamente. Estos valores se establecen automticamente en los
casos siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

*) Velocidad del TCP mxima para el tipo de robot utilizado y los valores normales
prcticos para el TCP. La funcin MaxRobSpeed de RAPID devuelve el mismo
valor.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin VelSet.
Ejemplo 1
VelSet 50, 800;
MoveL p1, v1000, z10, tool1;
MoveL p2, v2000, z10, tool1;
MoveL p3, v1000\T:=5, z10, tool1;

La velocidad es de 500 mm/s hasta el punto p1 y de 800 mm/s hasta el punto p2.
Son necesarios 10 segundos para moverse desde p2 hasta p3.
Limitaciones
La velocidad mxima no se tiene en cuenta cuando se especifica un tiempo en la
instruccin de posicionamiento.
Sintaxis
VelSet
[ Override := ] < expression (IN) of num > ,
[ Max := ] < expression (IN) of num > ;

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Velocidad mxima del TCP para MaxRobSpeed - Velocidad mxima del robot en la pgiel robot actual
na 959
Instrucciones de posicionamiento Technical reference manual - RAPID overview, seccin
Resumen sobre RAPID - Movimiento

710

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.226 WaitAI - Espera hasta que se establece un valor de seal analgica de entrada

1.226 WaitAI - Espera hasta que se establece un valor de seal analgica de entrada
Utilizacin
WaitAI (Wait Analog Input) se usa para esperar hasta que se establece un valor
de seal analgica de entrada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WaitAI.
Ejemplo 1
WaitAI ai1, \GT, 5;

La ejecucin del programa slo contina una vez que la entrada analgica ai1
tiene un valor mayor que 5.
Ejemplo 2
WaitAI ai1, \LT, 5;

La ejecucin del programa slo contina una vez que la entrada analgica ai1
tiene un valor inferior a 5.
Argumentos
WaitAI Signal [\LT] | [\GT] Value [\MaxTime] [\ValueAtTimeout]

Signal
Tipo de dato: signalai
El nombre de la seal analgica de entrada.
[\LT]
Less Than
Tipo de dato: switch
Si se usa este parmetro, la instruccin WaitAI espera hasta que el valor de la
seal analgica es inferior que el valor de Value.
[\GT]
Greater Than
Tipo de dato: switch
Si se usa este parmetro, la instruccin WaitAI espera hasta que el valor de la
seal analgica es mayor que el valor de Value.
Value
Tipo de dato: num
El valor deseado para la seal.
[\MaxTime]
Maximum Time
Tipo de dato: num
El periodo mximo permitido para el tiempo de espera, expresado en segundos.
Si el tiempo se agota antes de que se cumpla la condicin, se llama al gestor de

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.226 WaitAI - Espera hasta que se establece un valor de seal analgica de entrada
Continuacin
errores si lo hay, con el cdigo de error ERR_WAIT_MAXTIME. Si no hay ningn
gestor de errores, se detiene la ejecucin.
[\ValueAtTimeout]
Tipo de dato: num
Si la instruccin alcanza el tiempo lmite, el valor actual de la seal se almacena
en esta variable. La variable slo se define si la variable de sistema ERRNO recibe
el valor ERR_WAIT_MAXTIME.
Ejecucin de programas
Si el valor de la seal es correcto cuando se ejecuta la instruccin, el programa
sencillamente contina con la instruccin siguiente.
Si el valor de la seal no es correcto, el robot entra en un estado de espera y el
programa contina tan pronto como la seal cambie al valor correcto. El cambio
se detecta mediante una interrupcin, lo cual genera una respuesta rpida (no
sondeada).
Cuando el robot est en espera, el tiempo se supervisa. De forma predeterminada,
el robot puede esperar para siempre, pero el tiempo de espera mximo puede
especificarse con el argumento opcional \MaxTime. Si se sobrepasa este tiempo
mximo, se genera un error.
Si la ejecucin del programa se detiene y se reanuda a continuacin, la instruccin
evala el valor actual de la seal. Se rechaza cualquier cambio durante el paro del
programa.
En el modo manual y si el tiempo de espera es mayor que 3 s, aparecer una
ventana de alerta que pregunta si desea simular la instruccin. Si no desea que
aparezca la ventana de alerta, puede cambiar el valor del parmetro del sistema
SimMenu a NO (Manual de referencia tcnica - Parmetros del sistema, seccin
Controller - System Misc).
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin WaitAI.
Ejemplo 1
VAR num myvalattimeout:=0;
WaitAI ai1, \LT, 5 \MaxTime:=4 \ValueAtTimeout:=myvalattimeout;
ERROR
IF ERRNO=ERR_WAIT_MAXTIME THEN
TPWrite "Value of ai1 at timeout:" + ValToStr(myvalattimeout);
TRYNEXT;
ELSE
! No error recovery handling
ENDIF

La ejecucin del programa slo contina si ai1 es menor que 5 o al alcanzar el


tiempo lmite. En caso de que se alcance el tiempo lmite, el valor de la seal ai1
en el momento del tiempo lmite puede registrarse sin otra lectura de la seal.

Contina en la pgina siguiente


712

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.226 WaitAI - Espera hasta que se establece un valor de seal analgica de entrada
Continuacin
Gestin de errores
Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que la seal cambie
al valor correcto, la variable de sistema ERRNO cambia a ERR_WAIT_MAXTIME y la
ejecucin contina en el gestor de errores.
Si no hay contacto con la unidad de E/S, la variable de sistema ERRNO cambia a
ERR_NORUNUNIT y la ejecucin contina en el gestor de errores.
Si el argumento programado Value para la seal analgica de entrada especificada
Signal est fuera de lmites, la variable de sistema ERRNO cambia a ERR_AO_LIM
y la ejecucin contina en el gestor de errores.
A continuacin, estas situaciones pueden ser gestionadas en el gestor de errores.
Sintaxis
WaitAI
[ Signal := ] < variable (VAR) of
[ \ LT] | [ \ GT] ,
[ Value := ] < expression (IN) of
[\MaxTime :=<expression (IN) of
[ \ValueAtTimeout := < variable

signalai> ,
num>
num>]
(VAR) of num >] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Espera hasta que se cumple una condi- WaitUntil - Espera hasta que se cumple una concin
dicin en la pgina 745
Espera durante un periodo determinado WaitTime - Espera una cantidad de tiempo determinada en la pgina 743
Espera hasta que se activa o desactiva WaitAO - Espera hasta que se establece un valor
una salida analgica
de seal analgica de salida en la pgina 714

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.227 WaitAO - Espera hasta que se establece un valor de seal analgica de salida

1.227 WaitAO - Espera hasta que se establece un valor de seal analgica de salida
Utilizacin
WaitAO (Wait Analog Output) se usa para esperar hasta que se establece un valor
de seal analgica de salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WaitAO.
Ejemplo 1
WaitAO ao1, \GT, 5;

La ejecucin del programa slo contina una vez que la salida analgica ao1 tiene
un valor mayor que 5.
Ejemplo 2
WaitAO ao1, \LT, 5;

La ejecucin del programa slo contina una vez que la salida analgica ao1 tiene
un valor menor que 5.
Argumentos
WaitAO Signal [\LT] | [\GT] Value [\MaxTime] [\ValueAtTimeout]

Signal
Tipo de dato: signalao
El nombre de la seal de salida analgica.
[\LT]
Less Than
Tipo de dato: switch
Si se usa este parmetro, la instruccin WaitAO espera hasta que el valor de la
seal analgica es inferior que el valor de Value.
[\GT]
Greater Than
Tipo de dato: switch
Si se usa este parmetro, la instruccin WaitAO espera hasta que el valor de la
seal analgica es mayor que el valor de Value.
Value
Tipo de dato: num
El valor deseado para la seal.
[\MaxTime]
Maximum Time
Tipo de dato: num
El periodo mximo permitido para el tiempo de espera, expresado en segundos.
Si el tiempo se agota antes de que se cumpla la condicin, se llama al gestor de

Contina en la pgina siguiente


714

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.227 WaitAO - Espera hasta que se establece un valor de seal analgica de salida
Continuacin
errores si lo hay, con el cdigo de error ERR_WAIT_MAXTIME. Si no hay ningn
gestor de errores, se detiene la ejecucin.
[\ValueAtTimeout]
Tipo de dato: num
Si la instruccin alcanza el tiempo lmite, el valor actual de la seal se almacena
en esta variable. La variable slo se define si la variable de sistema ERRNO recibe
el valor ERR_WAIT_MAXTIME.
Ejecucin de programas
Si el valor de la seal es correcto cuando se ejecuta la instruccin, el programa
sencillamente contina con la instruccin siguiente.
Si el valor de la seal no es correcto, el robot entra en un estado de espera y el
programa contina tan pronto como la seal cambie al valor correcto. El cambio
se detecta mediante una interrupcin, lo cual genera una respuesta rpida (no
sondeada).
Cuando el robot est en espera, el tiempo se supervisa. De forma predeterminada,
el robot puede esperar para siempre, pero el tiempo de espera mximo puede
especificarse con el argumento opcional \MaxTime. Si se sobrepasa este tiempo
mximo, se genera un error.
Si la ejecucin del programa se detiene y se reanuda a continuacin, la instruccin
evala el valor actual de la seal. Se rechaza cualquier cambio durante el paro del
programa.
En el modo manual y si el tiempo de espera es mayor que 3 s, aparecer una
ventana de alerta que pregunta si desea simular la instruccin. Si no desea que
aparezca la ventana de alerta, puede cambiar el valor del parmetro del sistema
SimMenu a NO (Manual de referencia tcnica - Parmetros del sistema, seccin
Controller - System Misc).
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin WaitAO.
Ejemplo 1
VAR num myvalattimeout:=0;
WaitAO ao1, \LT, 5 \MaxTime:=4 \ValueAtTimeout:=myvalattimeout;
ERROR
IF ERRNO=ERR_WAIT_MAXTIME THEN
TPWrite "Value of ao1 at timeout:" + ValToStr(myvalattimeout);
TRYNEXT;
ELSE
! No error recovery handling
ENDIF

La ejecucin del programa slo contina si ao1 es menor que 5 o al alcanzar el


tiempo lmite. En caso de que se alcance el tiempo lmite, el valor de la seal ao1
en el momento del tiempo lmite puede registrarse sin otra lectura de la seal.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.227 WaitAO - Espera hasta que se establece un valor de seal analgica de salida
Continuacin
Gestin de errores
Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que la seal cambie
al valor correcto, la variable de sistema ERRNO cambia a ERR_WAIT_MAXTIME y la
ejecucin contina en el gestor de errores.
Si no hay contacto con la unidad de E/S, la variable de sistema ERRNO cambia a
ERR_NORUNUNIT y la ejecucin contina en el gestor de errores.
Si el argumento programado Value para la seal analgica de salida especificada
Signal est fuera de lmites, la variable de sistema ERRNO cambia a ERR_AO_LIM
y la ejecucin contina en el gestor de errores.
A continuacin, estas situaciones pueden ser gestionadas en el gestor de errores.
Sintaxis
WaitAO
[ Signal := ] < variable (VAR) of
[ \ LT] | [ \ GT] ,
[ Value := ] < expression (IN) of
[\MaxTime :=<expression (IN) of
[ \ValueAtTimeout := < variable

signalao> ,
num>
num>]
(VAR) of num >] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Espera hasta que se cumple una condi- WaitUntil - Espera hasta que se cumple una concin
dicin en la pgina 745
Espera durante un periodo determinado WaitTime - Espera una cantidad de tiempo determinada en la pgina 743
Espera hasta que se activa o desactiva WaitAI - Espera hasta que se establece un valor
una entrada analgica
de seal analgica de entrada en la pgina 711

716

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.228 WaitDI - Espera hasta que se activa una seal digital de entrada

1.228 WaitDI - Espera hasta que se activa una seal digital de entrada
Utilizacin
WaitDI (Wait Digital Input) se usa para esperar hasta que se activa una entrada
digital.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WaitDI.
Ejemplo 1
WaitDI di4, 1;

La ejecucin del programa slo contina despus de que se ha activado la entrada


di4.
Ejemplo 2
WaitDI grip_status, 0;

La ejecucin del programa slo contina despus de que se ha restablecido la


entrada grip_status.
Argumentos
WaitDI Signal Value [\MaxTime] [\TimeFlag]

Signal
Tipo de dato: signaldi
El nombre de la seal.
Value
Tipo de dato: dionum
El valor deseado para la seal.
[\MaxTime]
Maximum Time
Tipo de dato: num
El periodo mximo permitido para el tiempo de espera, expresado en segundos.
Si el tiempo se agota antes de que se cumpla la condicin, se llama al gestor de
errores si lo hay, con el cdigo de error ERR_WAIT_MAXTIME. Si no hay ningn
gestor de errores, se detiene la ejecucin.
[\TimeFlag]
Timeout Flag
Tipo de dato: bool
El parmetro de salida que contiene el valor TRUE si se agota el tiempo mximo
de espera permitido antes de que se cumpla la condicin. Si se incluye este
parmetro en la instruccin, no se considera un error si llega a agotarse el tiempo
lmite. Este argumento no se tiene en cuenta si el argumento MaxTime no se incluye
en la instruccin.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.228 WaitDI - Espera hasta que se activa una seal digital de entrada
Continuacin
Ejecucin de programas
Si el valor de la seal es correcto cuando se ejecuta la instruccin, el programa
sencillamente contina con la instruccin siguiente.
Si el valor de la seal no es correcto, el robot entra en un estado de espera. Cuando
la seal cambia al valor correcto, el programa contina. El cambio se detecta
mediante una interrupcin, lo cual genera una respuesta rpida (no sondeada).
Cuando el robot se encuentra en espera, se supervisa el tiempo y, si sobrepasa
el valor de tiempo mximo, el programa contina si se especifica un TimeFlag o
genera un error si no se especifica el indicador. Si se especifica un TimeFlag,
ste cambia a TRUE si se supera el tiempo. De lo contrario cambia a FALSE.
Si la ejecucin del programa se detiene y se reanuda a continuacin, la instruccin
evala el valor actual de la seal. Se rechaza cualquier cambio durante el paro del
programa.
En el modo manual, tras esperar 3 s, aparecer una ventana de alerta que pregunta
si desea simular la instruccin. Si no desea que aparezca la ventana de alerta,
puede cambiar el valor del parmetro del sistema SimMenu a NO (Manual de
referencia tcnica - Parmetros del sistema, seccin Controller - System Misc).
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
Se ha perdido el contacto con la unidad.
Sintaxis
WaitDI
[ Signal := ] < variable (VAR) of signaldi> ,
[ Value := ] < expression (IN) of dionum>
[\MaxTime :=<expression (IN) of num>]
[\TimeFlag:=<variable (VAR) of bool>] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Espera hasta que se cumple una condi- WaitUntil - Espera hasta que se cumple una concin
dicin en la pgina 745
Espera durante un periodo determinado WaitTime - Espera una cantidad de tiempo determinada en la pgina 743

718

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.229 WaitDO - Espera hasta que se activa una seal digital de salida

1.229 WaitDO - Espera hasta que se activa una seal digital de salida
Utilizacin
WaitDO (Wait Digital Output) se usa para esperar hasta que se activa una salida
digital.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WaitDO.
Ejemplo 1
WaitDO do4, 1;

La ejecucin del programa slo contina despus de que se ha activado la salida


do4.
Ejemplo 2
WaitDO grip_status, 0;

La ejecucin del programa slo contina despus de que se ha desactivado la


salida grip_status.
Argumentos
WaitDO Signal Value [\MaxTime] [\TimeFlag]

Signal
Tipo de dato: signaldo
El nombre de la seal.
Value
Tipo de dato: dionum
El valor deseado para la seal.
[\MaxTime]
Maximum Time
Tipo de dato: num
El periodo mximo permitido para el tiempo de espera, expresado en segundos.
Si el tiempo se agota antes de que se cumpla la condicin y no se utiliza el
argumento TimeFlag, es posible llamar al gestor de errores con el cdigo de error
ERR_WAIT_MAXTIME. Si no hay ningn gestor de errores, se detiene la ejecucin.
[\TimeFlag]
Timeout Flag
Tipo de dato: bool
El parmetro de salida que contiene el valor TRUE si se agota el tiempo mximo
de espera permitido antes de que se cumpla la condicin. Si se incluye este
parmetro en la instruccin, no se considera un error si llega a agotarse el tiempo
lmite. Este argumento no se tiene en cuenta si el argumento MaxTime no se incluye
en la instruccin.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.229 WaitDO - Espera hasta que se activa una seal digital de salida
Continuacin
Ejecucin de programas
Si el valor de la seal de salida es correcto cuando se ejecuta la instruccin, el
programa sencillamente contina con la instruccin siguiente.
Si el valor de la seal de salida no es correcto, el robot pasa a un estado de espera.
Cuando la seal cambia al valor correcto, el programa contina. El cambio se
detecta mediante una interrupcin, lo cual genera una respuesta rpida (no
sondeada).
Cuando el robot se encuentra en espera, se supervisa el tiempo y, si sobrepasa
el valor de tiempo mximo, el programa contina si se especifica un TimeFlag o
genera un error si no se especifica. Si se especifica un TimeFlag, ste cambia a
TRUE si se supera el tiempo. De lo contrario cambia a FALSE.
Si la ejecucin del programa se detiene y se reanuda a continuacin, la instruccin
evala el valor actual de la seal. Se rechaza cualquier cambio durante el paro del
programa.
En el modo manual, tras esperar 3 s, aparecer una ventana de alerta que pregunta
si desea simular la instruccin. Si no desea que aparezca la ventana de alerta,
puede cambiar el valor del parmetro del sistema SimulateMenu a NO (Manual de
referencia tcnica - Parmetros del sistema, seccin Controller - System Misc).
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
si se ha perdido el contacto con la unidad de E/S.
Sintaxis
WaitDO
[ Signal :=] < variable (VAR) of signaldo >,
[ Value := ] < expression (IN) of dionum>
[\MaxTime :=<expression (IN) of num>]
[\TimeFlag:=<variable (VAR) of bool>];

Informacin relacionada
Para obtener ms informacin sobre Consulte
Espera hasta que se cumple una con- WaitUntil - Espera hasta que se cumple una condidicin
cin en la pgina 745
Espera durante un periodo determina- WaitTime - Espera una cantidad de tiempo determido
nada en la pgina 743
Espera hasta que se activa o desactiva WaitDI - Espera hasta que se activa una seal digiuna entrada
tal de entrada en la pgina 717

720

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.230 WaitGI - Espera hasta que se activa un grupo de entradas digitales

1.230 WaitGI - Espera hasta que se activa un grupo de entradas digitales


Utilizacin
WaitGI (Wait Group digital Input) se utiliza para esperar hasta que un grupo de
seales digitales de entrada es cambiado a los valores especificados.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WaitGI.
Consulte tambin Ms ejemplos en la pgina 723.
Ejemplo 1
WaitGI gi4, 5;

La ejecucin del programa slo contina despus de que la entrada gi4 tiene el
valor 5.
Ejemplo 2
WaitGI grip_status, 0;

La ejecucin del programa slo contina despus de que se ha restablecido la


entrada grip_status.
Argumentos
WaitGI Signal [\NOTEQ] | [\LT] | [\GT] Value | Dvalue [\MaxTime]
[\ValueAtTimeout] | [\DvalueAtTimeout]

Signal
Tipo de dato: signalgi
El nombre de la seal de grupo de entradas digitales.
[\NOTEQ]
NOT EQual
Tipo de dato: switch
Si se usa este parmetro, la instruccin WaitGI espera hasta que el valor de la
seal digital de grupo divide al valor de Value.
[\LT]
Less Than
Tipo de dato: switch
Si se usa este parmetro, la instruccin WaitGI espera hasta que el valor de la
seal digital de grupo es inferior que el valor de Value.
[\GT]
Greater Than
Tipo de dato: switch
Si se usa este parmetro, la instruccin WaitGI espera hasta que el valor de la
seal digital de grupo es mayor que el valor de Value.
Value
Tipo de dato: num
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.230 WaitGI - Espera hasta que se activa un grupo de entradas digitales
Continuacin
El valor deseado para la seal. Debe ser un valor entero dentro del rango de trabajo
de la seal digital de grupo de entradas que se utiliza. El valor permitido depende
del nmero de seales del grupo. El valor mximo que puede usarse en el
argumento Value es de 8388608, que es el valor que una seal digital de grupo
de 23 bits puede tener como valor mximo.
Dvalue
Tipo de dato: dnum
El valor deseado para la seal. Debe ser un valor entero dentro del rango de trabajo
de la seal digital de grupo de entradas que se utiliza. El valor permitido depende
del nmero de seales del grupo. El valor mximo de los bits de seales que puede
tener una seal digital de grupo es de 32. Con una variable dnumes posible cubrir
los valores del 0 al 4294967295, que constituyen el rango que puede tener una
seal digital de 32 bits.
[\MaxTime]
Maximum Time
Tipo de dato: num
El periodo mximo permitido para el tiempo de espera, expresado en segundos.
Si el tiempo se agota antes de que se cumpla la condicin, se llama al gestor de
errores (si lo hay) con el cdigo de error ERR_WAIT_MAXTIME. Si no hay ningn
gestor de errores, se detiene la ejecucin.
[\ValueAtTimeout]
Tipo de dato: num
Si la instruccin alcanza el tiempo lmite, el valor actual de la seal se almacena
en esta variable. La variable slo se define si la variable de sistema ERRNO recibe
el valor ERR_WAIT_MAXTIME. Si se utiliza el argumento Dvalue, use el argumento
DvalueAtTimeout para almacenar el valor actual en la seal (motivo: limitacin
del valor entero mximo para num).
Los valores de seal del 0 al 8.388.608 se almacenan siempre como un entero
exacto.
[\DvalueAtTimeout]
Tipo de dato: dnum
Si la instruccin alcanza el tiempo lmite, el valor actual de la seal se almacena
en esta variable. La variable slo se define si la variable de sistema ERRNO recibe
el valor ERR_WAIT_MAXTIME.
Los valores de seal del 0 al 4.294.967.295 se almacenan siempre como un entero
exacto.
Ejecucin de programas
Si el valor de la seal es correcto cuando se ejecuta la instruccin, el programa
sencillamente contina con la instruccin siguiente.
Si el valor de la seal no es correcto, el robot entra en un estado de espera y el
programa contina tan pronto como la seal cambie al valor correcto. El cambio

Contina en la pgina siguiente


722

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.230 WaitGI - Espera hasta que se activa un grupo de entradas digitales
Continuacin
se detecta mediante una interrupcin, lo cual genera una respuesta rpida (no
sondeada).
Cuando el robot est en espera, el tiempo se supervisa. De forma predeterminada,
el robot puede esperar para siempre, pero el tiempo de espera mximo puede
especificarse con el argumento opcional \MaxTime. Si se sobrepasa este tiempo
mximo, se genera un error.
Si la ejecucin del programa se detiene y se reanuda a continuacin, la instruccin
evala el valor actual de la seal. Se rechaza cualquier cambio durante el paro del
programa.
En el modo manual y si el tiempo de espera es mayor que 3 s, aparecer una
ventana de alerta que pregunta si desea simular la instruccin. Si no desea que
aparezca la ventana de alerta, puede cambiar el valor del parmetro del sistema
SimMenu a NO (Manual de referencia tcnica - Parmetros del sistema, seccin
Controller - System Misc).
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin WaitGI.
Ejemplo 1
WaitGI gi1,\NOTEQ,0;

La ejecucin del programa slo contina despus de que la entrada gi1 es distinta
del valor 0.
Ejemplo 2
WaitGI gi1,\LT,1;

La ejecucin del programa slo contina una vez que gi1 es menor que 1.
Ejemplo 3
WaitGI gi1,\GT,0;

La ejecucin del programa slo contina una vez que gi1 es mayor que 0.
Ejemplo 4
VAR num myvalattimeout:=0;
WaitGI gi1, 5 \MaxTime:=4 \ValueAtTimeout:=myvalattimeout;
ERROR
IF ERRNO=ERR_WAIT_MAXTIME THEN
TPWrite "Value of gi1 at timeout:" + ValToStr(myvalattimeout);
TRYNEXT;
ELSE
! No error recovery handling
ENDIF

La ejecucin del programa slo contina si gi1 es igual a 5 o al alcanzar el tiempo


lmite. En caso de que se alcance el tiempo lmite, el valor de la seal gi1 en el
momento del tiempo lmite puede registrarse sin otra lectura de la seal.
Gestin de errores
Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que la seal cambie
al valor correcto, la variable de sistema ERRNO cambia a ERR_WAIT_MAXTIME y la
ejecucin contina en el gestor de errores.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.230 WaitGI - Espera hasta que se activa un grupo de entradas digitales
Continuacin
Si no hay contacto con la unidad de E/S, la variable de sistema ERRNO cambia a
ERR_NORUNUNIT y la ejecucin contina en el gestor de errores.
Si el argumento programado Value o Dvalue para la seal digital de entrada de
grupo especificada Signal est fuera de lmites, la variable de sistema ERRNO
cambia a ERR_GO_LIM y la ejecucin contina en el gestor de errores.
A continuacin, estas situaciones pueden ser gestionadas en el gestor de errores.
Sintaxis
WaitGI
[ Signal := ] < variable (VAR) of signalgi> ,
[\ NOTEQ] | [ \ LT] | [ \ GT] ,
[ Value := ] < expression (IN) of num>
| [ Dvalue := ] < expression (IN) of dnum>
[\MaxTime :=<expression (IN) of num>]
[ \ValueAtTimeout := < variable (VAR) of num > ]
| [ \DvalueAtTimeout := < variable (VAR) of dnum > ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Espera hasta que se cumple una condi- WaitUntil - Espera hasta que se cumple una concin
dicin en la pgina 745
Espera durante un periodo determinado WaitTime - Espera una cantidad de tiempo determinada en la pgina 743
Espera hasta que un grupo de salidas
digitales se activa/desactiva

WaitGO - Espera hasta que se activa un grupo de


salidas digitales en la pgina 725

724

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.231 WaitGO - Espera hasta que se activa un grupo de salidas digitales

1.231 WaitGO - Espera hasta que se activa un grupo de salidas digitales


Utilizacin
WaitGO (Wait Group digital Output) se utiliza para esperar hasta que un grupo de
seales digitales de salida cambia a un valor especificado.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WaitGO.
Consulte tambin Ms ejemplos en la pgina 727.
Ejemplo 1
WaitGO go4, 5;

La ejecucin del programa slo contina despus de que la salida go4 tiene el
valor 5.
Ejemplo 2
WaitGO grip_status, 0;

La ejecucin del programa slo contina despus de que la salida grip_status


se restablece.
Argumentos
WaitGO Signal [\NOTEQ] | [\LT] | [\GT] Value | Dvalue [\MaxTime]
[\ValueAtTimeout] | [\DvalueAtTimeout]

Signal
Tipo de dato: signalgo
El nombre de la seal de grupo de salidas digitales.
[\NOTEQ]
NOT EQual
Tipo de dato: switch
Si se usa este parmetro, la instruccin WaitGO espera hasta que el valor de la
seal digital de grupo divide al valor de Value.
[\LT]
Less Than
Tipo de dato: switch
Si se usa este parmetro, la instruccin WaitGO espera hasta que el valor de la
seal digital de grupo es inferior que el valor de Value.
[\GT]
Greater Than
Tipo de dato: switch
Si se usa este parmetro, la instruccin WaitGO espera hasta que el valor de la
seal digital de grupo es mayor que el valor de Value.
Value
Tipo de dato: num
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.231 WaitGO - Espera hasta que se activa un grupo de salidas digitales
Continuacin
El valor deseado para la seal. Debe ser un valor entero dentro del rango de trabajo
de la seal digital de grupo de salidas que se utiliza. El valor permitido depende
del nmero de seales del grupo. El valor mximo que puede usarse en el
argumento Value es de 8388608, que es el valor que una seal digital de grupo
de 23 bits puede tener como valor mximo.
Dvalue
Tipo de dato: dnum
El valor deseado para la seal. Debe ser un valor entero dentro del rango de trabajo
de la seal digital de grupo de salidas que se utiliza. El valor permitido depende
del nmero de seales del grupo. El valor mximo de los bits de seales que puede
tener una seal digital de grupo es de 32. Con una variable dnumes posible cubrir
los valores del 0 al 4294967295, que constituyen el rango que puede tener una
seal digital de 32 bits.
[\MaxTime]
Maximum Time
Tipo de dato: num
El periodo mximo permitido para el tiempo de espera, expresado en segundos.
Si el tiempo se agota antes de que se cumpla la condicin, se llama al gestor de
errores si lo hay, con el cdigo de error ERR_WAIT_MAXTIME. Si no hay ningn
gestor de errores, se detiene la ejecucin.
[\ValueAtTimeout]
Tipo de dato: num
Si la instruccin alcanza el tiempo lmite, el valor actual de la seal se almacena
en esta variable. La variable slo se define si la variable de sistema ERRNO recibe
el valor ERR_WAIT_MAXTIME. Si se utiliza el argumento Dvalue, use el argumento
DvalueAtTimeout para almacenar el valor actual en la seal (motivo: limitacin
del valor entero mximo para num).
Los valores de seal del 0 al 8.388.608 se almacenan siempre como un entero
exacto.
[\DvalueAtTimeout]
Tipo de dato: dnum
Si la instruccin alcanza el tiempo lmite, el valor actual de la seal se almacena
en esta variable. La variable slo se define si la variable de sistema ERRNO recibe
el valor ERR_WAIT_MAXTIME.
Los valores de seal del 0 al 4.294.967.295 se almacenan siempre como un entero
exacto.
Ejecucin de programas
Si el valor de la seal es correcto cuando se ejecuta la instruccin, el programa
sencillamente contina con la instruccin siguiente.
Si el valor de la seal no es correcto, el robot entra en un estado de espera y el
programa contina tan pronto como la seal cambie al valor correcto. El cambio

Contina en la pgina siguiente


726

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.231 WaitGO - Espera hasta que se activa un grupo de salidas digitales
Continuacin
se detecta mediante una interrupcin, lo cual genera una respuesta rpida (no
sondeada).
Cuando el robot est en espera, el tiempo se supervisa. De forma predeterminada,
el robot puede esperar para siempre, pero el tiempo de espera mximo puede
especificarse con el argumento opcional \MaxTime. Si se sobrepasa este tiempo
mximo, se genera un error.
Si la ejecucin del programa se detiene y se reanuda a continuacin, la instruccin
evala el valor actual de la seal. Se rechaza cualquier cambio durante el paro del
programa.
En el modo manual y si el tiempo de espera es mayor que 3 s, aparecer una
ventana de alerta que pregunta si desea simular la instruccin. Si no desea que
aparezca la ventana de alerta, puede cambiar el valor del parmetro del sistema
SimMenu a NO (Manual de referencia tcnica - Parmetros del sistema, seccin
Controller - System Misc).
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin WaitGO.
Ejemplo 1
WaitGO go1,\NOTEQ,0;

La ejecucin del programa slo contina despus de que la entrada go1 es distinta
del valor 0.
Ejemplo 2
WaitGO go1,\LT,1;

La ejecucin del programa slo contina una vez que go1 es menor que 1.
Ejemplo 3
WaitGO go1,\GT,0;

La ejecucin del programa slo contina una vez que go1 es mayor que 0.
Ejemplo 4
VAR num myvalattimeout:=0;
WaitGO go1, 5 \MaxTime:=4 \ValueAtTimeout:=myvalattimeout;
ERROR
IF ERRNO=ERR_WAIT_MAXTIME THEN
TPWrite "Value of go1 at timeout:" + ValToStr(myvalattimeout);
TRYNEXT;
ELSE
! No error recovery handling
ENDIF

La ejecucin del programa slo contina si go1 es igual a 5 o al alcanzar el tiempo


lmite. En caso de que se alcance el tiempo lmite, el valor de la seal go1 en el
momento del tiempo lmite puede registrarse sin otra lectura de la seal.
Gestin de errores
Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que la seal cambie
al valor correcto, la variable de sistema ERRNO cambia a ERR_WAIT_MAXTIME y la
ejecucin contina en el gestor de errores.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.231 WaitGO - Espera hasta que se activa un grupo de salidas digitales
Continuacin
Si no hay contacto con la unidad de E/S, la variable de sistema ERRNO cambia a
ERR_NORUNUNIT y la ejecucin contina en el gestor de errores.
Si el argumento programado Value o Dvalue para la seal digital de salida de
grupo especificada Signal est fuera de lmites, la variable de sistema ERRNO
cambia a ERR_GO_LIM y la ejecucin contina en el gestor de errores.
A continuacin, estas situaciones pueden ser gestionadas en el gestor de errores.
Sintaxis
WaitGO
[ Signal := ] < variable (VAR) of signalgo> ,
[\ NOTEQ] | [ \ LT] | [ \ GT] ,
[ Value := ] < expression (IN) of num>
| [ Dvalue := ] < expression (IN) of dnum>
[\MaxTime :=<expression (IN) of num>]
[ \ValueAtTimeout := < variable (VAR) of num > ]
| [ \DvalueAtTimeout := < variable (VAR) of dnum > ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Espera hasta que se cumple una condi- WaitUntil - Espera hasta que se cumple una concin
dicin en la pgina 745
Espera durante un periodo determinado WaitTime - Espera una cantidad de tiempo determinada en la pgina 743
Espera hasta que un grupo de entradas WaitGI - Espera hasta que se activa un grupo de
digitales se activa/desactiva
entradas digitales en la pgina 721

728

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.232 WaitLoad - Conecta el mdulo cargado a la tarea

1.232 WaitLoad - Conecta el mdulo cargado a la tarea


Utilizacin
WaitLoad se utiliza para conectar el mdulo cargado con StartLoad a la tarea
de programa.
El mdulo de programa cargado se aade a los mdulos que ya existen en la
memoria de programa.
El mdulo cargado con StartLoad debe estar conectado a la tarea de programa
con la instruccin WaitLoad para poder utilizar cualquiera de sus
smbolos/rutinas.
WaitLoad tambin puede descargar un mdulo de programa si se utilizan los
modificadores opcionales. De esta forma se reduce el nmero de vnculos (1 en
lugar de 2).
WaitLoad tambin puede comprobar si hay referencias no resueltas si se utiliza
el modificador opcional \CheckRef.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WaitLoad.
Consulte tambin Ms ejemplos en la pgina 730.
Ejemplo 1
VAR loadsession load1;
...
StartLoad "HOME:/PART_A.MOD", load1;
MoveL p10, v1000, z50, tool1 \WObj:=wobj1;
MoveL p20, v1000, z50, tool1 \WObj:=wobj1;
MoveL p30, v1000, z50, tool1 \WObj:=wobj1;
MoveL p40, v1000, z50, tool1 \WObj:=wobj1;
WaitLoad load1;
%"routine_x"%;
UnLoad "HOME:/PART_A.MOD";

Carga en la memoria de programas el mdulo PART_A.MOD existente en HOME:.


En paralelo, mueve el robot. A continuacin, conecta el nuevo mdulo de programa
a la tarea de programa y llama a la rutina routine_x del mdulo PART_A.
Argumentos
WaitLoad [\UnloadPath] [\UnloadFile] LoadNo [\CheckRef]

[\UnloadPath]
Tipo de dato: string
La ruta y el nombre del archivo que se descargar de la memoria de programa. El
nombre de archivo se excluye cuando se utiliza el argumento \UnloadFile.
[\UnloadFile]
Tipo de dato: string
Cuando se excluye el nombre del archivo en el argumento \UnloadPath es
necesario definirlo con este argumento.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.232 WaitLoad - Conecta el mdulo cargado a la tarea
Continuacin
LoadNo
Tipo de dato: loadsession
sta es una referencia a la sesin de carga, creada por la instruccin StartLoad
que se necesita para conectar a la tarea de programa el mdulo cargado.
[\CheckRef]
Tipo de dato: switch
Busca referencias no resueltas en la tarea de programa despus de la carga del
mdulo. Si no se usa, no se realiza ninguna bsqueda de referencias no resueltas.
Ejecucin de programas
A continuacin, la instruccin WaitLoad espera primero a que se complete la
carga , si no se ha completado an, y despus el mdulo ser vinculado e
inicializado. La inicializacin del mdulo cargado devuelve todas las variables del
nivel de mdulo a sus valores iniciales.
Las referencias no resueltas se aceptarn siempre para las operaciones de carga
StartLoad - WaitLoad si no se utiliza el parmetro \CheckRef, pero ser un
error de tiempo de ejecucin al ejecutar una referencia no resuelta.
El sistema se inicia con la operacin de descarga, si se especifica. Si la descarga
del mdulo falla, no se carga ningn nuevo mdulo.
Si se produce algn error en la operacin de carga, incluidas las referencias no
resueltas si se usa el modificador \CheckRef, el mdulo cargado no estar ya
disponible en la memoria de programas.
Para conseguir una estructura de programa idnea, fcil de comprender y mantener,
todas las operaciones de carga y descarga de mdulos de programa deben hacerse
en el mdulo principal ("main") que siempre est presente en la memoria de
programa durante la ejecucin.
Para cargar un programa que contiene un procedimiento principal desde un
programa principal (que tiene su propio procedimiento main), consulte la instruccin
Load.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin WaitLoad.
Ejemplo 1
StartLoad "HOME:/DOORDIR/DOOR2.MOD", load1;
...
WaitLoad \UnloadPath:="HOME:/DOORDIR/DOOR1.MOD", load1;

Carga en la memoria de programa el mdulo de programa DOOR2.MOD desde el


directorio DOORDIR de HOME: y conecta el nuevo mdulo a la tarea. El mdulo de
programa DOOR1.MOD se descarga de la memoria de programa.
Ejemplo 2
StartLoad "HOME:" \File:="DOORDIR/DOOR2.MOD", load1;
! The robot can do some other work
WaitLoad \UnloadPath:="HOME:" \File:= "DOORDIR/DOOR1.MOD", load1;

Contina en la pgina siguiente


730

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.232 WaitLoad - Conecta el mdulo cargado a la tarea
Continuacin
Equivale a las instrucciones siguientes, pero el robot puede hacer otras operaciones
durante el tiempo de carga. Adems, las har ms rpido (con un solo vnculo en
lugar de los dos vnculos que aparecen a continuacin).
Load "HOME:" \File:="DOORDIR/DOOR2.MOD";
UnLoad "HOME:" \File:="DOORDIR/DOOR1.MOD";

Gestin de errores
Si no se encuentra el archivo especificado en la instruccin StartLoad, la variable
de sistema ERRNO cambia a ERR_FILNOTFND en la ejecucin de WaitLoad.
Si se produce otro tipo de problemas que impiden leer el archivo a cargar, la
variable de sistema ERRNO cambia a ERR_IOERROR.
Si el argumento LoadNo hace referencia a una sesin de carga desconocida, la
variable de sistema ERRNO cambia a ERR_UNKPROC.
Si el mdulo no puede cargarse porque la memoria de programas est llena, la
variable de sistema ERRNO cambia a ERR_PRGMEMFULL.
Si el mdulo ya est cargado en la memoria de programa, la variable de sistema
ERRNO cambia a ERR_LOADED.
Si el mdulo cargado contiene errores de sintaxis, la variable de sistema ERRNO
cambia a ERR_SYNTAX.
Si el mdulo cargado da lugar a errores de vnculo no recuperables, la variable de
sistema ERRNO cambia a ERR_LINKREF.
Si se usa WaitLoad con el modificador \CheckRef para buscar errores de
referencia y la memoria de programas contiene referencias no resueltas, la variable
de sistema ERRNO cambia a ERR_LINKREF.
Los errores siguientes slo pueden producirse cuando el argumento \UnloadPath
se usa en la instruccin WaitLoad:

Si no es posible descargar el mdulo especificado en el argumento


\UnloadPath porque se estn ejecutando acciones dentro del mdulo, la
variable ERRNO cambia a ERR_UNLOAD.

Si no es posible descargar el mdulo especificado en el argumento


\UnloadPath porque el mdulo de programa no ha sido cargado con Load
o StartLoad-WaitLoad desde el programa de RAPID, la variable de sistema
ERRNO tambin cambia a ERR_UNLOAD.

Estos errores pueden ser gestionados en el gestor de ERROR. Si se produce alguno


de estos errores, el mdulo en s ser descargado y no estar disponible en el
gestor de ERROR.
Nota
RETRY no puede usarse para la recuperacin de errores generados por
WaitLoad.
Limitaciones
No es posible cambiar el valor actual de una variable PERS cargando el mismo
mdulo con un nuevo valor de inicializacin para el valor real de la variable PERS.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.232 WaitLoad - Conecta el mdulo cargado a la tarea
Continuacin
Ejemplo:

Se carga en el sistema el archivo my_module.mod con la declaracin PERS


num my_pers:=1;.

El archivo my_module.mod se edita en el disco con el nuevo valor de


variable persistente, por ejemplo PERS num my_pers:=3;

Se ejecuta el cdigo que aparece ms abajo.

Despus de cargar de nuevo my_module.mod, el valor de my_pers sigue


siendo 1 en lugar de 3.
StartLoad \Dynamic, "HOME:/my_module.mod", load1;
...
WaitLoad \UnLoadPath:="HOME:/my_module.mod", load1;

Esta limitacin es consecuencia de las caractersticas de las variables PERS. El


valor actual de la variable PERS no es alterado por el valor de inicializacin de la
variable PERS cargada nuevamente si la variable PERS ya se est utilizando en el
momento de la carga.
Los problemas descritos anteriormente no se producen si se ejecuta en su lugar
el cdigo siguiente:
UnLoad "HOME:/my_module.mod";
StartLoad \Dynamic, "HOME:/my_module.mod", load1;
...
WaitLoad load1;

Otra opcin es utilizar una constante CONST para el valor de inicializacin y hacer
la asignacin siguiente al comienzo de la ejecucin del nuevo mdulo: my_pers
:= my_const;
Sintaxis
WaitLoad
[ \ UnloadPath := <expression (IN) of string> ,]
[ \ UnloadFile := <expression (IN) of string> ,]
[ LoadNo := ] <variable (VAR) of loadsession>
[ \ CheckRef ] ;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Carga de mdulos de programa duran- StartLoad - Carga un mdulo de programa durante
te la ejecucin
la ejecucin en la pgina 514
Sesin de carga

loadsession - Programar una sesin de carga en


la pgina 1226

Carga de un mdulo de programa

Load - Carga un mdulo de programa durante la


ejecucin en la pgina 217

Descarga de un mdulo de programa UnLoad - Descarga un mdulo de programa durante


la ejecucin en la pgina 701
Cancelacin de la carga de un mdulo CancelLoad - Cancela la carga de un mdulo en la
de programa
pgina 37
Comprobar referencias de programa

CheckProgRef - Comprobar referencias de programa en la pgina 39

Contina en la pgina siguiente


732

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.232 WaitLoad - Conecta el mdulo cargado a la tarea
Continuacin
Para obtener ms informacin sobre Consulte
Llamada a procedimiento con enlaza- Technical reference manual - RAPID overview,
miento en tiempo de ejecucin
seccin Caractersticas bsicas - Rutinas - Llamada
a procedimiento

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.233 WaitRob - Esperar hasta un punto de paro o una velocidad cero

1.233 WaitRob - Esperar hasta un punto de paro o una velocidad cero


Utilizacin
WaitRob espera hasta que el robot y los ejes externos han llegado al punto de
paro o tienen una velocidad cero.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WaitRob.
Consulte tambin Ms ejemplos en la pgina 734.
Ejemplo 1
WaitRob \InPos;

La ejecucin del programa espera hasta que el robot y los ejes externos hayan
llegado al punto de paro.
Argumentos
WaitRob [\InPos] | [\ZeroSpeed]

[\InPos]
In Position
Tipo de dato: switch
Si se utiliza este argumento, el robot y los ejes externos deben haber llegado al
punto de paro (ToPoint de la instruccin de movimiento actual) para que pueda
continuar la ejecucin.
[\ZeroSpeed]
Zero Speed
Tipo de dato: switch
Si se utiliza este argumento, el robot y los ejes externos deben presentar una
velocidad cero para que pueda continuar la ejecucin.
Si no se introduce ninguno de los argumentos \InPos ni \ZeroSpeed, aparece
un mensaje de error.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin WaitRob.
Ejemplo 1
PROC stop_event()
WaitRob \ZeroSpeed;
SetDO rob_moving, 0;
ENDPROC

Este ejemplo muestra una rutina de evento que ejecuta un paro de programa. La
seal digital de salida rob_moving tiene el valor 1 mientras el robot se est
moviendo y cambia a 0 cuando el robot y los ejes externos se han detenido tras
un paro de programa.

Contina en la pgina siguiente


734

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.233 WaitRob - Esperar hasta un punto de paro o una velocidad cero
Continuacin
Sintaxis
WaitRob
[ \ InPos ] | [ \ ZeroSpeed ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Movimiento en general

Manual de referencia tcnica - Descripcin


general de RAPID, seccin Principios de
movimiento y E/S

Otras instrucciones de posicionamiento

Manual de referencia tcnica - Descripcin


general de RAPID, seccin

Definicin de datos de punto de paro

stoppointdata - Datos de punto de paro en la


pgina 1280

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.234 WaitSyncTask - Espera en un punto de sincronizacin con otras tareas de programa

1.234 WaitSyncTask - Espera en un punto de sincronizacin con otras tareas de


programa
Utilizacin
WaitSyncTask se utiliza para sincronizar varias tareas de programa en un punto
especial de cada uno de los programas. Cada tarea de programa espera hasta
que todas las tareas de programa hayan alcanzado el punto de sincronizacin
designado.
Nota
WaitSyncTask slo sincroniza la ejecucin del programa. Para conseguir la
sincronizacin tanto de la ejecucin del programa como de los movimientos del
robot, la instruccin de movimiento previa a WaitSyncTask debe ser un punto
de paro en todas las tareas de programa implicadas. Tambin es posible
sincronizar tanto la ejecucin del programa como los movimientos del robot
utilizando WaitsyncTask \Inpos ... en todas las tareas de programa
implicadas.
AVISO!
Para conseguir un funcionamiento seguro de la sincronizacin, el punto de
reunin (parmetro SyncID) debe tener un nombre exclusivo en cada tarea de
programa. Este nombre debe ser tambin el mismo en el caso de las tareas de
programa que deben coincidir en el punto de reunin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
WaitSyncTask.
Consulte tambin Ms ejemplos en la pgina 738.
Ejemplo 1
Ejemplo de programa de la tarea T_ROB1
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync1;
...
WaitSyncTask sync1, task_list;
...

Ejemplo 2
Ejemplo de programa de la tarea T_ROB2
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync1;
...
WaitSyncTask sync1, task_list;
...

Contina en la pgina siguiente


736

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.234 WaitSyncTask - Espera en un punto de sincronizacin con otras tareas de programa
Continuacin
La tarea de programa que llegue en primer lugar a WaitSyncTask con la identidad
sync1 espera hasta que la otra tarea de programa llegue a su WaitSyncTask con
la misma identidad sync1. A continuacin, las dos tareas de programa T_ROB1 y
T_ROB2 prosiguen su ejecucin.
Argumentos
WaitSyncTask [\InPos] SyncID TaskList [\TimeOut]

[\InPos]
In Position
Tipo de dato: switch
Si se usa este argumento, los ejes del robot y los ejes externos deben estar
completamente parados antes de que esta tarea de programa empiece a esperar
a otras tareas de programa para que alcancen el punto de reunin especificado
en la instruccin WaitSyncTask.
SyncID
Synchronization identity
Tipo de dato: syncident
Una variable que especifica el nombre del punto de sincronizacin (reunin). El
tipo de dato syncident es de un tipo sin valor y slo se utiliza como un
identificador para asignar un nombre a la posicin de sincronizacin.
La variable debe ser definida y tener un nombre igual en todas las tareas de
programa cooperantes. Se recomienda definir siempre la variable global en cada
tarea de programa (VAR syncident ...).
TaskList
Tipo de dato: tasks
Una variable persistente que especifica en una lista de tareas (matriz) el nombre
(string) de las tareas de programa que deben coincidir en el punto de
sincronizacin cuyo nombre se especifica en el argumento SyncID.
La variable persistente debe ser definida y tener un nombre igual y el mismo
contenido en todas las tareas de programa cooperantes. Se recomienda definir
siempre la variable global en el sistema (PERS tasks ...).
[\TimeOut]
Tipo de dato: num
El tiempo mximo que debe esperarse hasta que las dems tareas de programa
lleguen hasta el punto de sincronizacin. Tiempo lmite en segundos (resolucin
0,001 s). Si este argumento no se especifica, la tarea de programa esperar de
forma indefinida.
Si el tiempo se agota antes de que todas las tareas de programa alcancen el punto
de sincronizacin, se llama al gestor de errores si lo hay, con el cdigo de error
ERR_WAITSYNCTASK. Si no hay ningn gestor de errores, se detiene la ejecucin.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.234 WaitSyncTask - Espera en un punto de sincronizacin con otras tareas de programa
Continuacin
Ejecucin de programas
La tarea de programa actual espera en WaitSyncTask, hasta que las otras tareas
de programa indicadas en TaskList hayan alcanzado el mismo punto SyncID.
En ese momento, la tarea de programa correspondiente continuar ejecutando su
siguiente instruccin.
Es posible programar WaitSyncTask entre instrucciones de movimiento con una
zona de esquina intercalada. En funcin del equilibrio de temporizacin entre las
tareas de programa en el momento de la ejecucin, el sistema puede:

Con la mejor temporizacin, mantener todas las zonas de esquina.

Con la peor temporizacin, mantener slo la zona de esquina de la tarea de


programa que alcance la instruccin WaitSyncTask en ltimo lugar. En el
caso de las tareas de programa, esto da como resultado puntos de paro.

Es posible excluir las tareas de programa de las funciones de pruebas del panel
de seleccin de tareas del FlexPendant.
Es posible utilizar los principios siguientes:

Principio 1) Excluir permanentemente en el ciclo la tarea de programa del


panel de seleccin de tareas antes del inicio desde Main (tras cambiar el PP
a Main). Esta desconexin ser vlida durante todo el ciclo del programa.

Principio 2) Excluir temporalmente la tarea de programa del panel de


seleccin de tareas entre varias instrucciones WaitSyncTask del ciclo de
programa. El sistema slo ejecutar las otras tareas conectadas, pero forzar
al usuario con un mensaje de error a conectar las tareas de programa
excluidas antes de pasar por la instruccin WaitSyncTask cooperativa.

Principio 3) Si se ejecuta de acuerdo con el principio 2, es posible excluir


algn ciclo permanente de tarea de programa del panel de seleccin de
tareas para su posterior ejecucin segn el principio 2, ejecutando la rutina
de servicio SkipTaskExec.

Recuerde que el panel de seleccin de tareas est bloqueado mientras el sistema


est funcionando con movimiento sincronizado.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin WaitSyncTask.
Ejemplo 1
Ejemplo de programa de la tarea T_ROB1
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync1;
...
WaitSyncTask \InPos, sync1, task_list \TimeOut := 60;
...
ERROR
IF ERRNO = ERR_WAITSYNCTASK THEN
RETRY;
ENDIF

Contina en la pgina siguiente


738

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.234 WaitSyncTask - Espera en un punto de sincronizacin con otras tareas de programa
Continuacin
La tarea de programa T_ROB1 espera en la instruccin WaitSyncTask hasta que
sus unidades mecnicas estn en posicin y, a continuacin, espera a que la tarea
de programa T_ROB2 alcance el punto de sincronizacin con la misma identidad.
Despus de esperar durante 60 s, se llama al gestor de errores con ERRNO
cambiado al valor ERR_WAITSYNCTASK. A continuacin, se llama de nuevo a la
instruccin WaitSyncTask para una espera adicional de 60 s.
Gestin de errores
Si se alcanza el tiempo lmite debido a que WaitSyncTask no concluye a tiempo,
la variable de sistema ERRNO cambia a ERR_WAITSYNCTASK.
El error puede ser gestionado en el gestor ERROR.
Limitacin
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
WaitSyncTask \InPos no puede ejecutarse en rutinas de RAPID que estn
conectadas a los siguientes eventos especiales del sistema: PowerOn, Stop,
QStop,Restart o Step.
Sintaxis
WaitSyncTask
[\ InPos ,]
[ SyncID := ] < variable (VAR) of syncident> ,
[ TaskList := ] < persistent array {*} (PERS) of tasks>
[ \ TimeOut := < expression (IN) of num > ] ;

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Especificacin de tareas de progra- tasks - Tareas de programa de RAPID en la pgina 1298
ma cooperativas
Identidad para punto de sincroniza- syncident - Identidad de punto de sincronizacin en
cin
la pgina 1293

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.235 WaitTestAndSet - Espera a que se desactive una variable y la activa a continuacin

1.235 WaitTestAndSet - Espera a que se desactive una variable y la activa a


continuacin
Utilizacin
WaitTestAndSet espera que el valor de una variable persistente de tipo bool
cambie a FALSE. Una vez que la variable cambia al valor FALSE, la instruccin
cambia el valor a TRUE y permite proseguir con la ejecucin. La variable persistente
puede usarse como un semforo binario para tareas de sincronizacin y exclusin
mutua.
Esta instruccin tiene la misma funcionalidad subyacente que la funcin
TestAndSet, pero WaitTestAndSet espera siempre y cuando el valor bool sea
FALSE, mientras que la instruccin TestAndSet finaliza inmediatamente.
No se recomienda usar la instruccin WaitTestAndSet en rutinas TRAP, gestores
de deshacer o rutinas de evento.
A continuacin se enumeran algunos de los recursos que pueden necesitar
proteccin de acceso al mismo tiempo:

Uso de algunas rutinas de RAPID que presentan problemas de


funcionamiento cuando se ejecutan en paralelo

Uso del FlexPendant - Registro del operador

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
WaitTestAndSet.
Consulte tambin Ms ejemplos en la pgina 741.
Ejemplo 1
MAIN program task:
PERS bool tproutine_inuse := FALSE;
...
WaitTestAndSet tproutine_inuse;
TPWrite "First line from MAIN";
TPWrite "Second line from MAIN";
TPWrite "Third line from MAIN";
tproutine_inuse := FALSE;

BACK1 program task:


PERS bool tproutine_inuse := FALSE;
...
WaitTestAndSet tproutine_inuse;
TPWrite "First line from BACK1";
TPWrite "Second line from BACK1";
TPWrite "Third line from BACK1";
tproutine_inuse := FALSE;

Para evitar mezclar las lneas en el registro del operador, una de MAIN y una de
BACK1, el uso de la funcin WaitTestAndSet garantiza que las tres lneas de
cada tarea no se separen.

Contina en la pgina siguiente


740

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.235 WaitTestAndSet - Espera a que se desactive una variable y la activa a continuacin
Continuacin
Si la tarea de programa MAIN activa el semforo
WaitTestAndSet(tproutine_inuse) en primer lugar, la tarea de programa
BACK1 debe esperar hasta que la tarea de programa MAIN libere el semforo.
Argumentos
WaitTestAndSet Object

Object
Tipo de dato: bool
Objeto de datos definido por el usuario para usarlo como semforo.- El objeto de
datos debe ser una variable persistente PERS. Si se utilizan funciones
WaitTestAndSet entre tareas de programa diferentes, el objeto debe ser de tipo
PERS global.
Ejecucin de programas
Esta instruccin comprueba y define, en un solo paso indivisible, la variable
persistente definida por el usuario como en el ejemplo de cdigo que aparece a
continuacin:

Si tiene el valor FALSE, lo cambia a TRUE

Si tiene el valor TRUE,, espera hasta que cambie a FALSE y lo cambia a


TRUE
IF Object = FALSE THEN
Object := TRUE;
ELSE
! Wait until it become FALSE
WaitUntil Object = FALSE;
Object := TRUE;
ENDIF

A continuacin, la instruccin queda completada. Para evitar problemas, dado que


las variables persistentes conservan su valor si el puntero de programa PP se
mueve a Main, cambie siempre el objeto de semforo a FALSE en el evento de
rutina START.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin WaitTestAndSet.
Ejemplo 1
PERS bool semPers:= FALSE;
...
PROC doit(...)
WaitTestAndSet semPers;
...
semPers := FALSE;
ENDPROC

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.235 WaitTestAndSet - Espera a que se desactive una variable y la activa a continuacin
Continuacin

Nota
Si la ejecucin del programa se detiene en la rutina doit y el puntero de
programa se traslada a main, la variable semPers no se restablecer. Para
evitarlo, devuelva la variable semPers a FALSE en la rutina de evento START.
Sintaxis
WaitTestAndSet
[ Object := ] < persistent (PERS) of bool> ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comprobacin de una variable y activarla si TestAndSet - Comprueba una variable y la


est desactivada (tipo sondeado con WaitTi- establece si no est establecida en la pgime)
na 1092

742

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.236 WaitTime - Espera una cantidad de tiempo determinada

1.236 WaitTime - Espera una cantidad de tiempo determinada


Utilizacin
WaitTime se usa para esperar una cantidad de tiempo determinado. Esta
instruccin tambin puede usarse para esperar hasta que los ejes del robot y los
ejes externos se hayan parado.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WaitTime.
Consulte tambin Ms ejemplos, a continuacin.
Ejemplo 1
WaitTime 0.5;

La ejecucin del programa espera 0,5 segundos.


Argumentos
WaitTime [\InPos] Time

[\InPos]
In Position
Tipo de dato: switch
Si se usa este argumento, los ejes del robot y los ejes externos deben estar
completamente parados antes de que empiece a contar el tiempo de espera. Este
argumento slo puede usarse si la tarea controla las unidades mecnicas.
Time
Tipo de dato: num
El tiempo, en segundos, que debe esperar la ejecucin del programa. Valor mnimo
0 s. Valor mximo sin lmites. Resolucin 0,001 s.
Ejecucin de programas
La ejecucin del programa se detiene temporalmente durante la cantidad de tiempo
especificada. Sin embargo, la gestin de interrupciones y otras funciones parecidas
permanecen activas.
En el modo manual, si el tiempo de espera es superior a 3 s, aparecer una ventana
de alerta que pregunta si desea simular la instruccin. Si no quiere que aparezca
la ventana de alerta, puede cambiar el parmetro del sistema Controller/System
Misc./ Simulate Menu a 0.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin WaitTime.
Ejemplo 1
WaitTime \InPos,0;

La ejecucin del programa espera hasta que los ejes del robot y los ejes externos
se hayan detenido completamente.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.236 WaitTime - Espera una cantidad de tiempo determinada
Continuacin
Limitaciones
El argumento \Inpos no puede usarse junto con el servo suave.
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
WaitTime \Inpos no puede ejecutarse en rutinas de RAPID que estn
conectadas a los siguientes eventos especiales del sistema: PowerOn, Stop,
QStop, Restart o Step.
Sintaxis
WaitTime
[\InPos,]
[Time :=] <expression (IN) of num>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Espera hasta que se cumple una condi- WaitUntil - Espera hasta que se cumple una concin
dicin en la pgina 745
Espera hasta que se activa o desactiva WaitDI - Espera hasta que se activa una seal diuna E/S
gital de entrada en la pgina 717

744

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.237 WaitUntil - Espera hasta que se cumple una condicin

1.237 WaitUntil - Espera hasta que se cumple una condicin


Utilizacin
WaitUntil se usa para esperar hasta que se cumpla una condicin lgica. Por
ejemplo, puede usarse para esperar hasta que se activan una o varias entradas.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WaitUntil.
Consulte tambin Ms ejemplos en la pgina 746.
Ejemplo 1
WaitUntil di4 = 1;

La ejecucin del programa slo contina despus de que se ha activado la entrada


di4.
Argumentos
WaitUntil [\InPos] Cond [\MaxTime] [\TimeFlag] [\PollRate]

[\InPos]
In Position
Tipo de dato: switch
Si se utiliza este argumento, el robot y los ejes externos deben haber llegado al
punto de paro (ToPoint de la instruccin de movimiento actual) para que pueda
continuar la ejecucin. Este argumento slo puede usarse si la tarea controla las
unidades mecnicas.
Cond
Tipo de dato:bool
La expresin lgica que debe esperarse.
[\MaxTime]
Tipo de dato: num
El periodo mximo permitido para el tiempo de espera, expresado en segundos.
Si el tiempo se agota antes de que se active la condicin, se llama al gestor de
errores si lo hay, con el cdigo de error ERR_WAIT_MAXTIME. Si no hay ningn
gestor de errores, se detiene la ejecucin.
[\TimeFlag]
Timeout Flag
Tipo de dato: bool
El parmetro de salida que contiene el valor TRUE si se agota el tiempo mximo
de espera permitido antes de que se cumpla la condicin. Si se incluye este
parmetro en la instruccin, no se considera un error si llega a agotarse el tiempo
lmite. Este argumento no se tiene en cuenta si el argumento MaxTime no se incluye
en la instruccin.
[\PollRate]
Polling Rate
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.237 WaitUntil - Espera hasta que se cumple una condicin
Continuacin
Tipo de dato: num
La frecuencia de sondeo en segundos para la comprobacin si la condicin del
argumento Cond es TRUE. Esto significa que WaitUntil comprueba primero la
condicin una vez, y si no es TRUE, la comprueba cada segundo especificado
hasta que sea TRUE. El valor mnimo de la frecuencia de sondeo es 0,01 s. Si no
se usa este argumento, se cambia la tasa de sondeo predeterminada a 0,1 s.
Ejecucin de programas
Si no se cumple la condicin programada al ejecutar una instruccin WaitUntil,
la condicin se comprueba de nuevo cada 100 ms (o segn el valor especificado
en el argumento Cond).
Cuando el robot se encuentra en espera, se supervisa el tiempo y, si sobrepasa
el valor de tiempo mximo, el programa contina si se especifica un TimeFlag o
genera un error si no se especifica el indicador. Si se especifica un TimeFlag,
ste cambia a TRUE si se supera el tiempo. De lo contrario cambia a FALSE.
En el modo manual, tras esperar ms de 3 s, aparecer una ventana de alerta que
pregunta si desea simular la instruccin. Si no desea que aparezca la ventana de
alerta, puede cambiar el valor del parmetro del sistema SimMenu a NO (Manual
de referencia tcnica - Parmetros del sistema, seccin Controller - System Misc).
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin WaitUntil.
Ejemplo 1
VAR bool timeout;
WaitUntil start_input = 1 AND grip_status = 1\MaxTime := 60
\TimeFlag := timeout;
IF timeout THEN
TPWrite "No start order received within expected time";
ELSE
start_next_cycle;
ENDIF

Si no se cumplen las dos condiciones de entrada en un plazo de 60 segundos, se


escribe un mensaje de error en la pantalla del FlexPendant.
Ejemplo 2
WaitUntil \Inpos, di4 = 1;

La ejecucin del programa espera hasta que el robot se ha detenido y hasta que
se activa la entrada di4.
Ejemplo 3
WaitUntil di4 = 1 \MaxTime:=5;
..

Contina en la pgina siguiente


746

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.237 WaitUntil - Espera hasta que se cumple una condicin
Continuacin
ERROR
IF ERRNO = ERR_NORUNUNIT THEN
TPWrite "The I/O unit is not running";
TRYNEXT;
ELSEIF ERRNO = ERR_WAIT_MAX THEN
RAISE;
ELSE
Stop;
ENDIF

La ejecucin del programa espera hasta que la entrada di4 se activa. Si la unidad
de E/S ha sido desactivada o si se alcanza el tiempo lmite de espera, la ejecucin
contina en el gestor de errores.
Gestin de errores
Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que la condicin
haya cambiado al valor correcto, la variable de sistema ERRNO cambia a
ERR_WAIT_MAXTIME y la ejecucin contina en el gestor de errores.
Si se utiliza una seal en la condicin y no hay contacto con la unidad de E/S, la
variable de sistema ERRNO cambia a ERR_NORUNUNIT y la ejecucin contina en
el gestor de errores.
A continuacin, estas situaciones pueden ser gestionadas en el gestor de errores.
Limitacin
El argumento \Inpos no puede usarse junto con el servo suave.
Si esta instruccin va precedida de una instruccin 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 ejecucin tras una cada de suministro
elctrico.
WaitUntil \Inpos no puede ejecutarse en rutinas de RAPID que estn
conectadas a los siguientes eventos especiales del sistema: PowerOn, Stop,
QStop, Restart o Step.
WaitUntil \Inpos no puede usarse conjuntamente con StopMove para detectar
si el movimiento ha sido detenido. La instruccin WaitUntil puede quedar en
suspenso para siempre en ese caso. No detecta que el movimiento se ha detenido,
pero s detecta que los ejes del robot y los ejes externos han alcanzado el ltimo
ToPoint programado (MoveX, SearchX, TriggX).
Sintaxis
WaitUntil
[\InPos,]
[Cond :=] <expression (IN) of bool>
[\MaxTime :=<expression (IN) of num>]
[\TimeFlag :=<variable (VAR) of bool>]
[\PollRate :=<expression (IN) of num>];

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.237 WaitUntil - Espera hasta que se cumple una condicin
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Espera hasta que se activa o desactiva WaitDI - Espera hasta que se activa una seal
una entrada
digital de entrada en la pgina 717
Espera durante un tiempo determinado WaitTime - Espera una cantidad de tiempo determinada en la pgina 743
Expresiones

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Expresiones

748

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.238 WaitWObj - Espera a un objeto de trabajo en un transportador

1.238 WaitWObj - Espera a un objeto de trabajo en un transportador


Utilizacin
WaitWObj (Wait Work Object) establece una conexin a un objeto de trabajo de
la ventana de inicio de la unidad mecnica de transportador.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WaitWObj.
Consulte tambin Ms ejemplos en la pgina 750.
Ejemplo 1
WaitWObj wobj_on_cnv1;

El programa se conecta al primer objeto de la cola de objetos que se encuentre


dentro de la ventana de inicio del controlador. Si no hay ningn objeto en la ventana
de inicio, la ejecucin espera algn objeto.
Argumentos
WaitWObj WObj [ \RelDist ][\MaxTime][\TimeFlag]

WObj
Work Object
Tipo de dato: wobjdata
El objeto de trabajo mvil (sistema de coordenadas) con el que est relacionada
la posicin de robot indicada en la instruccin. El transportador de la unidad
mecnica debe especificarse con ufmec en el objeto de trabajo.
[ \RelDist ]
Relative Distance
Tipo de dato: num
Espera a que un objeto entre en la ventana de inicio y pase ms all de la distancia
especificada por el argumento. Si el objeto ya est conectado, la ejecucin espera
hasta que el objeto pasa ms all de la distancia indicada. Si el objeto ya ha pasado
ms all de la \RelDist la ejecucin contina.
[\MaxTime]
Maximum Time
Tipo de dato: num
El periodo mximo permitido para el tiempo de espera, expresado en segundos.
Si el tiempo se agota antes de la conexin del objeto o antes de que se alcance
la distancia \Reldist, se llama al gestor de errores si lo hay, con el cdigo de
error ERR_WAIT_MAXTIME. Si no hay ningn gestor de errores, se detiene la
ejecucin.
[\TimeFlag]
Timeout Flag
Tipo de dato: bool

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.238 WaitWObj - Espera a un objeto de trabajo en un transportador
Continuacin
El parmetro de salida que contiene el valor TRUE si se agota el tiempo mximo
de espera permitido antes de que se conecte el objeto o se alcance la distancia
\Reldist. Si se incluye este parmetro en la instruccin, no se considera un error
si llega a agotarse el tiempo lmite. Este argumento no se tiene en cuenta si el
argumento MaxTime no se incluye en la instruccin.
Ejecucin de programas
Si no hay ningn objeto en la ventana de inicio, la ejecucin del programa espera.
Si hay un objeto presente, ste se conecta al transportador y la ejecucin prosigue.
Si se ejecuta una segunda instruccin WaitWObj mientras la conexin ya existe,
se devuelve un error a no ser que ser utilice el argumento opcional \RelDist.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin WaitWObj.
Ejemplo 1
WaitWObj wobj_on_cnv1\RelDist:=500.0;

Si no hay conexin, se espera a que el objeto entre en la ventana de inicio y a


continuacin se espera a que el objeto sobrepase un punto situado a 500 mm en
el transportador.
Si ya existe una conexin al objeto, se espera a que el objeto sobrepase los 500
mm.
Si no hay conexin, se espera la presencia de un objeto en la ventana de inicio.
Ejemplo 2
WaitWObj wobj_on_cnv1\RelDist:=0.0;

Si ya existe una conexin, se contina la ejecucin dado que el objeto ya ha


sobrepasado la posicin de 0,0 mm.
Ejemplo 3
WaitWObj wobj_on_cnv1;
WaitWObj wobj_on_cnv1\RelDist:=0.0;

La primera instruccin WaitWObj se conecta al objeto que se encuentra en la


ventana de inicio. La segunda instruccin WaitWObj retorna inmediatamente si
el objeto sigue conectado. Sin embargo, esperar al siguiente objeto si el objeto
anterior se ha movido ms all de la distancia mxima o ha sido soltado.
Ejemplo 4
WaitWObj wobj_on_cnv1\RelDist:=500.0\MaxTime:=0.1 \Timeflag:=flag1;

La instruccin WaitWobj retorna inmediatamente si el objeto ha pasado ms all


de los 500 mm pero, de lo contrario, espera a un objeto durante 0,1 s. Si ningn
objeto sobrepasa la posicin de 500 mm durante estos 0,1 s, la instruccin retornar
con flag1 = TRUE.

Contina en la pgina siguiente


750

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.238 WaitWObj - Espera a un objeto de trabajo en un transportador
Continuacin
Limitaciones
Se requieren 50 ms para conectarse al primer objeto de la ventana de inicio.
Despus de la conexin, una segunda instruccin WaitWObj con el argumento
opcional \RelDist slo requiere el tiempo normal de ejecucin de una instruccin
de RAPID.
Gestin de errores
Si se producen los errores siguientes durante la ejecucin de la instruccin
WaitWobj, la variable de sistema ERRNO cambia de valor. Estos errores pueden
ser gestionados en el gestor de errores.
ERR_CNV_NOT_ACT

El transportador no est activado.

ERR_CNV_CONNECT

La instruccin WaitWobj ya est conectada.

ERR_CNV_DROPPED

El objeto que estaba esperando la instruccin WaitWobj ha


sido desechado por otra tarea. (DSQC 354, revisin 2: Un objeto ha pasado por la ventana de inicio)

ERR_WAIT_MAXTIME

El objeto no lleg a tiempo y no hay ningn Timeflag.

Sintaxis
WaitWObj
[ WObj :=]< persistent (PERS) of wobjdata> ;
[ \ RelDist := < expression (IN) of num > ]
[\MaxTime :=<expression (IN) of num>]
[\TimeFlag :=<variable (VAR) of bool>] ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Colocacin de un objeto de trabajo en un DropWObj - Suelta un objeto de trabajo sobre


transportador
un transportador en la pgina 90
Seguimiento de transportadores

Application manual - Conveyor tracking

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.239 WarmStart - Reinicia el controlador

1.239 WarmStart - Reinicia el controlador


Utilizacin
WarmStart se utiliza para reiniciar el controlador.
Los parmetros del sistema pueden cambiarse desde RAPID con la instruccin
WriteCfgData. Debe reiniciar el controlador para que los cambios de algunos
parmetros del sistema entren en vigor. El reinicio puede realizarse con la
instruccin WarmStart.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WarmStart.
Ejemplo 1
WriteCfgData "/MOC/MOTOR_CALIB/rob1_1","cal_offset",offset1;
WarmStart;

Escribe el valor de la variable de tipo num de tipo offset1 como offset de


calibracin del eje 1 de rob1 y genera un reinicio del controlador.
Ejecucin de programas
Warmstart se aplica inmediatamente y el puntero de programa se sita en la
instruccin siguiente.
Sintaxis
WarmStart ;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Escritura de un atributo de un parmetro WriteCfgData - Escribe un atributo de un parmedel sistema


tro del sistema en la pgina 768
Configuracin

Manual de referencia tcnica - Parmetros del


sistema

752

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.240 WHILE - Repite una o varias operaciones siempre y cuando...

1.240 WHILE - Repite una o varias operaciones siempre y cuando...


Utilizacin
WHILEse usa cuando es necesario repetir un conjunto de instrucciones siempre
y cuando la evaluacin de la expresin de la condicin determinada d como
resultado el valor TRUE.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WHILE.
Ejemplo 1
WHILE reg1 < reg2 DO
...
reg1 := reg1 + 1;
ENDWHILE

Repite las instrucciones que se encuentran dentro del bloque WHILE siempre y
cuando reg1 < reg2.
Argumentos
WHILE Condition DO ... ENDWHILE

Condition
Tipo de dato: bool
La condicin cuya evaluacin debe dar como resultado TRUE para que se ejecuten
las instrucciones que se encuentran dentro del bloque WHILE.
Ejecucin de programas
1 Se evala la expresin de la condicin. Si la evaluacin de la expresin da
como resultado TRUE, se ejecutan las instrucciones que se encuentran dentro
del bloque WHILE.
2 A continuacin, la expresin de la condicin se evala de nuevo y, si el
resultado de la evaluacin es TRUE, se ejecutan de nuevo las instrucciones
del bloque WHILE.
3 Este proceso contina hasta que el resultado de la evaluacin de la expresin
d como resultado FALSE.
En ese momento, la iteracin se termina y la ejecucin del programa contina en
la instruccin que sigue al bloque WHILE.
Si el resultado de la evaluacin de la expresin da como resultado FALSE desde
el principio, no se llegan a ejecutar las instrucciones del bloque WHILE y el control
del programa se transfiere inmediatamente a la instruccin que sigue al bloque
WHILE.
Comentarios
Si es posible determinar el nmero de repeticiones, puede usarse la instruccin
FOR.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.240 WHILE - Repite una o varias operaciones siempre y cuando...
Continuacin
Sintaxis
(EBNF)
WHILE <conditional expression> DO
<instruction list>
ENDWHILE

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Expresiones

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Expresiones

Repeticin un nmero determinado de


veces

FOR - Repite un nmero determinado de veces


en la pgina 112

754

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.241 WorldAccLim - Control de aceleracin en el sistema de coordenadas mundo

1.241 WorldAccLim - Control de aceleracin en el sistema de coordenadas mundo


Utilizacin
WorldAccLim (World Acceleration Limitation) se usa para limitar la aceleracin y
deceleracin de la herramienta (y de la carga til) en el sistema de coordenadas
mundo.
Slo se implementa en el tipo de robot IRB5400-04, IRB6600 y IRB7600 con
movimiento sobre track.
La limitacin se consigue conjuntamente en el punto central de gravedad de la
herramienta usada, la carga til real (si la hay) y la brida de montaje del robot.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WorldAccLim.
Ejemplo 1
WorldAccLim \On := 3.5;

Se limita la aceleracin a 3,5 m/s2.


Ejemplo 2
WorldAccLim \Off;

La aceleracin se devuelve a su valor mximo (predeterminado).


Argumentos
WorldAccLim [\On]|[\Off]

[ \On ]
Tipo de dato: num
El valor absoluto de la limitacin de aceleracin en m/s 2.
[ \Off ]
Tipo de dato: switch
Aceleracin mxima (predeterminada).
Ejecucin de programas
Las limitaciones de aceleracin se aplican al siguiente segmento ejecutado por el
robot y es vlido hasta que se ejecuta una nueva instruccin WorldAccLim.
La aceleracin mxima (WorldAccLim \Off) se establece automticamente en
los casos siguientes:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.241 WorldAccLim - Control de aceleracin en el sistema de coordenadas mundo
Continuacin
Se recomienda usar slo un tipo de limitacin de la aceleracin. Si se usa una
combinacin de instrucciones WorldAccLim, AccSet y PathAccLim , el sistema
reduce la aceleracin y deceleracin en el orden siguiente:

Segn WorldAccLim

Segn AccSet

Segn PathAccLim

Limitaciones
La aceleracin mnima permitida es de 1 m/s 2.
Gestin de errores
Si el argumento On se cambia a un valor que es demasiado bajo, la variable de
sistema ERRNO cambia a ERR_ACC_TOO_LOW. A continuacin, este error puede
ser gestionado en el gestor de errores.
Sintaxis
WorldAccLim
[\On := <expression (IN) of num>] | [\Off ];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones de posicionamiento

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Movimiento

Datos de parmetros de movimiento

motsetdata - Datos de parmetros de movimiento en la pgina 1229

Reduccin de la aceleracin

AccSet - Reduce la aceleracin en la pgina 17

Limitacin de aceleracin a lo largo de la PathAccLim - Reduce la aceleracin del TCP a


trayectoria
lo largo de la trayectoria en la pgina 312

756

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.242 Write - Escribe en un archivo o un canal serie alfanumrico

1.242 Write - Escribe en un archivo o un canal serie alfanumrico


Utilizacin
Write se usa para escribir en un archivo o un canal serie alfanumrico. Es posible
escribir el valor de determinados datos, adems de texto.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin Write.
Consulte tambin Ms ejemplos en la pgina 759.
Ejemplo 1
Write logfile, "Execution started";

Se escribe el texto Execution started en el archivo al que se hace referencia


en logfile.
Ejemplo 2
VAR num reg1:=5;
...
Write logfile, "No of produced parts="\Num:=reg1;

Se escribe el texto No of produced parts=5 en el archivo al que se hace


referencia en logfile.
Argumentos
Write IODevice String [\Num] | [\Bool] | [\Pos] | [\Orient] |
[\Dnum] [\NoNewLine]

IODevice
Tipo de dato: iodev
El nombre (la referencia) del archivo o canal serie actual.
String
Tipo de dato: string
El texto a escribir.
[\Num]
Numeric
Tipo de dato: num
El dato cuyo valor numrico se desea escribir a continuacin de la cadena de
texto.
[\Bool]
Boolean
Tipo de dato: bool
El dato cuyo valor lgico se desea escribir a continuacin de la cadena de texto.
[\Pos]
Position
Tipo de dato: pos
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.242 Write - Escribe en un archivo o un canal serie alfanumrico
Continuacin
El dato cuya posicin se desea escribir a continuacin de la cadena de texto.
[\Orient]
Orientation
Tipo de dato: orient
El dato cuya orientacin se desea escribir a continuacin de la cadena de texto.
[\Dnum]
Numeric
Tipo de dato: dnum
El dato cuyo valor numrico se desea escribir a continuacin de la cadena de
texto.
[\NoNewLine]
Tipo de dato: switch
Omite el carcter de salto de lnea que suele indicar el final del texto. Es decir, la
siguiente instruccin write escribe a continuacin en la misma lnea.
Ejecucin de programas
La cadena de texto se escribe en un archivo o un canal serie especificado. Tambin
se escribe un carcter de salto de lnea (LF), pero tambin puede omitirse si se
usa el argumento \NoNewLine.
Si se usa uno de los argumentos \Num, \Bool, \Pos o \Orient , su valor se
convierte en primer lugar en una cadena de texto, antes de aadirla a la primera
cadena. La conversin del valor a una cadena de texto se realiza de la forma
siguiente:
Argumento

Valor

Cadena de texto

\Num

23

23

\Num

1.141367

1.14137

\Bool

TRUE

"TRUE"

\Pos

[1817.3,905.17,879.11]

"[1817.3,905.17,879.11]"

\Orient

[0.96593,0,0.25882,0]

[0.96593,0,0.25882,0]"

\Dnum

4294967295

"4294967295"

El valor se convierte en una cadena con un formato estndar de RAPID. Esto


significa en principio 6 dgitos significativos. Si la parte decimal es menor que
0,000005 o mayor que 0,999995, el nmero se redondea a un entero.
En caso de un reinicio tras una cada de alimentacin, 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.

Contina en la pgina siguiente


758

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.242 Write - Escribe en un archivo o un canal serie alfanumrico
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin Write.
Ejemplo 1
VAR iodev printer;
VAR num reg1:=0
VAR num stopprod_value:=0
...
Open "com2:", printer\Write;
stopprod_value:=stopprod;
WHILE stopprod_value = 0 DO
produce_part;
reg1:=reg1+1;
Write printer, "Produced part="\Num:=reg1\NoNewLine;
Write printer, " "\NoNewLine;
Write printer, CTime();
stopprod_value:=stopprod;
ENDWHILE
Close printer;

Con cada ciclo, se enva a una impresora una lnea que contiene el nmero de la
pieza producida y la hora. La impresora est conectada al canal serie com2:. El
mensaje impreso puede tener el aspecto siguiente:
Produced part=473

09:47:15

Limitaciones
Los argumentos \Num, \Dnum, \Bool, \Pos y \Orient son excluyentes entre
s y por tanto no pueden usarse simultneamente en una misma instruccin.
Esta instruccin slo puede usarse con canales serie o archivos que hayan sido
abiertos para escritura.
Gestin de errores
Si se produce un error durante la escritura, la variable de sistema ERRNO cambia
a ERR_FILEACC. A continuacin, este error puede ser gestionado en el gestor de
errores.
Sintaxis
Write
[IODevice:=] <variable (VAR) of iodev>,
[String:=] <expression (IN) of string>
[\Num:= <expression (IN) of num> ]
| [\Bool:= <expression (IN) of bool> ]
| [\Pos:= <expression (IN) of pos> ]
| [\Orient:= <expression (IN) of orient> ]
| [\Dnum:= <expression (IN) of dnum> ]
[\NoNewLine];

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.242 Write - Escribe en un archivo o un canal serie alfanumrico
Continuacin
Informacin relacionada
Para obtener ms informacin sobre Consulte
Apertura de un archivo o canal serie Technical reference manual - RAPID overview,
seccin Resumen sobre RAPID - Comunicacin

760

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.243 WriteAnyBin - Escribe datos en un canal serie o archivo binario

1.243 WriteAnyBin - Escribe datos en un canal serie o archivo binario


Utilizacin
WriteAnyBin (Write Any Binary) se utiliza para escribir cualquier tipo de dato en
un canal serie o un archivo binario.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WriteAnyBin.
Consulte tambin Ms ejemplos en la pgina 762.
Ejemplo 1
VAR iodev channel2;
VAR orient quat1 := [1, 0, 0, 0];
...
Open "com2:", channel2 \Bin;
WriteAnyBin channel2, quat1;

El dato de tipo orient data quat1 se escribe en el canal al que se hace referencia
con channel2.
Argumentos
WriteAnyBin IODevice Data

IODevice
Tipo de dato: iodev
El nombre (la referencia) del canal serie o el archivo binario que debe usarse con
la operacin de escritura.
Data
Tipo de dato: ANYTYPE
Dato a escribir.
Ejecucin de programas
Se escriben en el canal serie o el archivo binario especificado el nmero de bytes
necesario para los datos especificados.
En caso de un reinicio tras una cada de alimentacin, 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.
Limitaciones
Esta instruccin slo puede usarse con canales serie o archivos que hayan sido
abiertos para escritura.
Los datos a escribir con esta instruccin WriteAnyBin deben ser de los tipos de
datos num, bool o string. Tambin puede usarse un registro, un componente
de registro, una matriz o un elemento de matriz de este tipo de dato de valor. No
es posible usar datos enteros o datos parciales con semivalor ni tipos de datos
sin valor.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.243 WriteAnyBin - Escribe datos en un canal serie o archivo binario
Continuacin
Gestin de errores
Si se produce un error durante la escritura, la variable de sistema ERRNO cambia
a ERR_FILEACC. A continuacin, este error puede ser gestionado en el gestor de
errores.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin WriteAnyBin.
Ejemplo 1
VAR iodev channel;
VAR num input;
VAR robtarget cur_robt;
Open "com2:", channel\Bin;
! Send the control character enq
WriteStrBin channel, "\05";
! Wait for the control character ack
input := ReadBin (channel \Time:= 0.1);
IF input = 6 THEN
! Send current robot position
cur_robt := CRobT(\Tool:= tool1\WObj:= wobj1);
WriteAnyBin channel, cur_robt;
ENDIF
Close channel;

Se escribe en un canal serie binario la posicin actual del robot.


Limitaciones
Dado que WriteAnyBin-ReadAnyBin slo se han diseado para enviar datos
internos de controlador entre sistemas de control IRC5, no se hace pblico ningn
protocolo de datos y no es posible interpretar estos datos en ningn PC.
El desarrollo de software de control puede afectar a la compatibilidad, 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 versin 5.07, no es posible leer el archivo con la instruccin
ReadAnyBin de RobotWare versin 5.08. Y, en el caso opuesto, si un WriteAnyBin
a un archivo se realiza con RobotWare versin 5.08, no es posible leer el archivo
con la instruccin ReadAnyBin de RobotWare versin 5.07.
Versin 0 del software de controlador IRC5 igual o anterior a la RW5.07
Versin 1 del software de controlador IRC5 igual o posterior a la RW5.08
Siempre existe la compatibilidad entre todas las revisiones de cualquier versin
de software.
Sintaxis
WriteAnyBin
[IODevice:=] <variable (VAR) of iodev>,
[Data:=] <expression (IN) of ANYTYPE>;

Contina en la pgina siguiente


762

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.243 WriteAnyBin - Escribe datos en un canal serie o archivo binario
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Apertura y otras operaciones con canales


serie o archivos

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Comunicacin

Lectura de datos de un canal serie o un archi- ReadAnyBin - Lee datos de un canal serie
vo
o un archivo binario en la pgina 361

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.244 WriteBin - Escribe en un canal serie binario

1.244 WriteBin - Escribe en un canal serie binario


Utilizacin
WriteBin se usa para escribir un nmero de bytes en un canal serie binario.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WriteBin.
Consulte tambin Ms ejemplos en la pgina 765.
Ejemplo 1
WriteBin channel2, text_buffer, 10;

Se escriben 10 caracteres de la lista text_buffer en el canal al que se hace


referencia con channel2.
Argumentos
WriteBin IODevice Buffer NChar

IODevice
Tipo de dato: iodev
El nombre (la referencia) del canal serie actual.
Buffer
Tipo de dato: array of num
La lista (matriz) que contiene los nmeros (caracteres) que se desean escribir.
NChar
Number of Characters
Tipo de dato: num
El nmero de caracteres a escribir desde Buffer.
Ejecucin de programas
Se escribe en el canal serie la cantidad especificada de nmeros (caracteres) de
la lista.
En caso de un reinicio tras una cada de alimentacin, 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.
Limitaciones
Esta instruccin slo puede usarse con canales serie que hayan sido abiertos para
escritura binaria.
Gestin de errores
Si se produce un error durante la escritura, la variable de sistema ERRNO cambia
a ERR_FILEACC. A continuacin, este error puede ser gestionado en el gestor de
errores.

Contina en la pgina siguiente


764

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.244 WriteBin - Escribe en un canal serie binario
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin WriteBin.
Ejemplo 1
VAR iodev channel;
VAR num out_buffer{20};
VAR num input;
VAR num nchar;
Open "com2:", channel\Bin;
out_buffer{1} := 5;!( enq )
WriteBin channel, out_buffer, 1;
input := ReadBin (channel \Time:= 0.1);
IF input = 6 THEN !( ack )
out_buffer{1} := 2;!( stx )
out_buffer{2} := 72;!( H )
out_buffer{3} := 101;!( e )
out_buffer{4} := 108;!( l )
out_buffer{5} := 108;!( l )
out_buffer{6} := 111;!( o )
out_buffer{7} := 32;!( )
out_buffer{8} := StrToByte("w"\Char);!( w )
out_buffer{9} := StrToByte("o"\Char);!( o )
out_buffer{10} := StrToByte("r"\Char);!( r )
out_buffer{11} := StrToByte("l"\Char);!( l )
out_buffer{12} := StrToByte("d"\Char);!( d )
out_buffer{13} := 3;!( etx )
WriteBin channel, out_buffer, 13;
ENDIF

Despus de un intercambio de indicativos de control (enq,ack) se escribe la


cadena de texto Hello world (con los caracteres de control asociados) en un
canal serie. La funcin StrToByte se usa en los mismos casos para convertir una
cadena en un dato de byte (num).
Sintaxis
WriteBin
[IODevice:=] <variable (VAR) of iodev>,
[Buffer:=] <array {*} (IN) of num>,
[NChar:=] <expression (IN) of num>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Apertura y otras operaciones con cana- Technical reference manual - RAPID overview,
les serie
seccin Resumen sobre RAPID - Comunicacin
Conversin de una cadena de caracteres StrToByte - Convierte una cadena en un byte en
a datos de byte
la pgina 1083
Datos de byte

byte - Valores enteros de 0 a 255 en la pgina 1177

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.245 WriteBlock - Escribe un bloque de datos en un dispositivo

1.245 WriteBlock - Escribe un bloque de datos en un dispositivo


Utilizacin
WriteBlock se utiliza para escribir un bloque de datos en un dispositivo que est
conectado a la interfaz de sensores serie. Los datos se capturan de un archivo.
La interfaz de sensores se comunica con los sensores a travs de canales serie,
utilizando el protocolo de transporte RTP1.
ste es un ejemplo de configuracin de un canal de sensor.
COM_PHY_CHANNEL:

Name COM1:

Connector COM1

Baudrate 19200

COM_TRP:

Name sen1:

Type RTP1

PhyChannel COM1

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WriteBlock.
Ejemplo 1
CONST string SensorPar := "flp1:senpar.cfg";
CONST num ParBlock:= 1;
! Connect to the sensor device "sen1:" (defined in sio.cfg).
SenDevice "sen1:";
! Write sensor parameters from flp1:senpar.cfg
! to sensor datablock 1.
WriteBlock "sen1:", ParBlock, SensorPar;

Argumentos
WriteBlock device BlockNo FileName [ \TaskName ]

device
Tipo de dato: string
El nombre del dispositivo de E/S configurado en sio.cfg para el sensor utilizado.
BlockNo
Tipo de dato: num
El argumento BlockNo se utiliza para seleccionar el bloque de datos de sensor
que se desea escribir.
FileName
Tipo de dato: string

Contina en la pgina siguiente


766

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.245 WriteBlock - Escribe un bloque de datos en un dispositivo
Continuacin
El argumento FileName se utiliza para seleccionar un archivo cuyos datos se
escriben en el bloque de datos de sensor seleccionado en el argumento BlockNo.
[ \TaskName ]
Tipo de dato: string
El argumento TaskName hace posible el acceso a dispositivos de otras tareas de
RAPID.
Gestin de fallos
Constante de error (valor de ERRNO)

Descripcin

SEN_NO_MEAS

Fallo de medicin

SEN_NOREADY

Sensor incapaz de gestionar el comando

SEN_GENERRO

Error general del sensor

SEN_BUSY

Bus de sensor

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 comunicacin no vlido

SEN_CAMCHECK

Fallo de comprobacin de sensor

SEN_TIMEOUT

Error de comunicacin

Sintaxis
WriteBlock
[ device := ] < expression(IN) of string>,
[ BlockNo := ] < expression (IN) of num > ,
[ FileName := ] < expression (IN) of string > ,
[ \ TaskName := < expression (IN) of string > ] ;

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Establecimiento de una conexin SenDevice - Establece una conexin a un dispositivo de
a un dispositivo de sensor
sensor en la pgina 454
Escritura de una variable de
sensor

WriteVar - Escribe una variable en la pgina 777

Lectura de un bloque de datos


de sensor

ReadBlock - Lee un bloque de datos de un dispositivo


en la pgina 364

Configuracin de la comunicacin del sensor

Manual de referencia tcnica - Parmetros del sistema,


seccin Communication

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.246 WriteCfgData - Escribe un atributo de un parmetro del sistema

1.246 WriteCfgData - Escribe un atributo de un parmetro del sistema


Utilizacin
WriteCfgData se utiliza para escribir un atributo de un parmetro del sistema
(de los datos de configuracin).
Adems de escribir parmetros con nombre, tambin es posible buscar y actualizar
parmetros sin nombre.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
WriteCfgData. Estos dos ejemplos muestran cmo escribir datos de parmetro
con nombre.
Ejemplo 1
VAR num offset1 := 1.2;
...
WriteCfgData "/MOC/MOTOR_CALIB/rob1_1","cal_offset",offset1;

Escribe en la variable de tipo num con nombre offset1 el offset de calibracin


para el eje 1 de rob_1.
Ejemplo 2
VAR string io_unit := "my_unit";
...
WriteCfgData "/EIO/EIO_SIGNAL/process_error","Unit",io_unit;

Escribe en la variable de tipo string con nombre io_unit, el nombre de la


unidad de E/S en la que est definida la seal process_error.
Argumentos
WriteCfgData InstancePath Attribute CfgData [\ListNo]

InstancePath
Tipo de dato: string
Especifica una ruta hasta el parmetro que debe leerse.
En el caso de los parmetros con nombre, el formato de esta cadena es
/DOMAIN/TYPE/ParameterName.
En el caso de los parmetros sin nombre, el formato de esta cadena es
/DOMAIN/TYPE/Attribute/AttributeValue.
Attribute
Tipo de dato: string
El nombre del atributo del parmetro que se desea escribir.
CfgData
Tipo de dato: anytype
El objeto de dato del que se lee el nuevo dato que se desea almacenar. En funcin
del tipo de atributo, los tipos vlidos son bool, num o string.

Contina en la pgina siguiente


768

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.246 WriteCfgData - Escribe un atributo de un parmetro del sistema
Continuacin
[\ListNo]
Tipo de dato: num
Una variable que contiene el nmero de instancia de atributo+ AttributeValue
a encontrar y actualizar.
La primera vez que aparece Attribute + AttributeValue tiene el nmero de
instancia 0. Si hay ms instancias a buscar, el valor devuelto en \ListNo se
incrementar en 1. De lo contrario, si no hay ms instancias el valor de retorno
ser -1. La constante predefinida END_OF_LIST puede usarse para comprobar si
hay ms instancias a buscar.
Ejecucin de programas
El valor del atributo especificado por el argumento Attribute se define de acuerdo
con el valor del objeto de dato especificado por el argumento CfgData.
Si se usa el formato /DOMAIN/TYPE/ParameterName en InstancePath, slo
estn disponibles los parmetros con nombre, es decir, los parmetros cuyo primer
atributo sea name, Name o NAME.
En el caso de los parmetros sin nombre, utilice el parmetro opcional \ListNo
para especificar en cul de las instancias debe escribirse el valor del atributo. Se
actualiza tras cada escritura exitosa en la siguiente instancia disponible.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin WriteCfgdata. Estos
dos ejemplos muestran cmo escribir en parmetros sin nombre.
Ejemplo 1
VAR num read_index;
VAR num write_index;
VAR string read_str;
...
read_index:=0;
write_index:=0;
ReadCfgData "/EIO/EIO_CROSS/Act1/do_13", "Res", read_str,
\ListNo:=read_index;
WriteCfgData "/EIO/EIO_CROSS/Act1/do_13", "Res", "my"+read_str,
\ListNo:=write_index;

Lee la seal resultante de la seal digital de actuacin sin nombre do_13 y guarda
el nombre en la variable de cadena llamada read_str. A continuacin se actualiza
el nombre a di_13 con el prefijo "my".
En este ejemplo, el dominio EIO tiene el cdigo cfg siguiente:
EIO_CROSS:
-Res "di_1" -Act1 "do_2"
-Res "di_2" -Act1 "do_2"
-Res "di_13" -Act1 "do_13"

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.246 WriteCfgData - Escribe un atributo de un parmetro del sistema
Continuacin
Ejemplo 2
VAR num read_index;
VAR num write_index;
VAR string read_str;
...
read_index:=0;
write_index:=0;
WHILE read_index <> END_OF_LIST DO
ReadCfgData "/EIO/EIO_SIGNAL/Unit/USERIO", "Name", read_str,
\ListNo:=read_index;
IF read_index <> END_OF_LIST THEN
WriteCfgData "/EIO/EIO_SIGNAL/Unit/USERIO", "Name",
"my"+read_str, \ListNo:=write_index;
ENDIF
ENDWHILE

Se leen los nombres de todas las seales definidas para la unidad de E/S USERIO.
Cambie los nombres de las seales al nombre ledo, con el prefijo "my".
En este ejemplo, el dominio EIO tiene el cdigo 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"

Gestin de errores
Si no es posible encontrar los datos especificados con InstancePath +
Attribute en la base de datos de configuracin, la variable de sistema ERRNO
cambia a ERR_CFG_NOTFND.
Si el tipo de dato del parmetro CfgData es distinto del tipo de dato real de los
datos encontrados y especificados con InstancePath + Attribute en la base
de datos de configuracin, la variable de sistema ERRNO cambia a
ERR_CFG_ILLTYPE.
Si el dato del parmetro CfgData est fuera de lmites (valor mx./mn.), la variable
de sistema ERRNO cambia a ERR_CFG_LIMIT.
Si se est intentando escribir en un dato protegido contra escritura, la variable de
sistema ERRNO cambia a ERR_CFG_INTERNAL.
Si la variable del argumento \ListNo tiene un valor que est fuera del rango de
instancias disponibles (0 ... n) al ejecutar la instruccin, ERRNO cambia a
ERR_CFG_OUTOFBOUNDS.
Estos errores pueden ser gestionados en el gestor de errores.
Limitaciones
La conversin de las unidades de los programas de RAPID (mm, grados, segundos,
etc.) a las unidades del parmetro del sistema (metros, radianes, segundos, etc.),
que afecta a CfgData del tipo de datos num, debe ser realizada por el usuario en
el programa de RAPID.
Debe reiniciar manualmente el controlador o ejecutar la instruccin WarmStart
para que el cambio entre en vigor.
Contina en la pgina siguiente
770

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.246 WriteCfgData - Escribe un atributo de un parmetro del sistema
Continuacin
Si se usa el formato /DOMAIN/TYPE/ParameterName en InstancePath, slo
estn disponibles los parmetros con nombre, es decir, los parmetros cuyo primer
atributo sea name, Name o NAME.
Las cadenas de RAPID estn limitadas a 80 caracteres. En algunos casos, puede
ser en teora una longitud demasiado reducida para la definicin de InstancePath,
Attribute o CfgData.
Datos predefinidos
La constante predefinida END_OF_LIST, con valor -1, puede usarse para detener
la escritura si no es posible encontrar ms instancias.
Sintaxis
WriteCfgData
[ InstancePath ':=' ] < expression (IN) of string > ','
[ Attribute ':=' ] < expression (IN) of string > ','
[ CfgData ':=' ] < expression (IN) of anytype >
[ '\' ListNo ':=' < variable (VAR) of num >] ';'

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin de cadena de caracteres

string - Cadenas de caracteres en la pgina 1287

Lectura de un atributo de un parmetro ReadCfgData - Lee un atributo de un parmetro


del sistema
del sistema en la pgina 366
Obtencin del nombre del robot de la
tarea actual

RobName - Obtiene el nombre del robot del TCP


en la pgina 1037

Configuracin

Manual de referencia tcnica - Parmetros del


sistema

Reinicio en caliente del sistema

WarmStart - Reinicia el controlador en la pgina 752

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.247 WriteRawBytes - Escribe un dato de tipo rawbytes

1.247 WriteRawBytes - Escribe un dato de tipo rawbytes


Utilizacin
WriteRawBytes se usa para escribir datos de tipo rawbytes en un dispositivo
abierto con Open\Bin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
WriteRawBytes.
Ejemplo 1
VAR
VAR
VAR
VAR
VAR

iodev io_device;
rawbytes raw_data_out;
rawbytes raw_data_in;
num float := 0.2;
string answer;

ClearRawBytes raw_data_out;
PackDNHeader "10", "20 1D 24 01 30 64", raw_data_out;
PackRawBytes float, raw_data_out, (RawBytesLen(raw_data_out)+1)
\Float4;
Open "/FCI1:/dsqc328_1", io_device \Bin;
WriteRawBytes io_device, raw_data_out;
ReadRawBytes io_device, raw_data_in \Time:=1;
Close io_device;
UnpackRawBytes raw_data_in, 1, answer \ASCII:=10;

En este ejemplo, 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.2.
Se abre un dispositivo, "/FCI1/:dsqc328_1", y los datos vlidos actuales de
raw_data_out se escriben en el dispositivo. A continuacin, el programa espera
al menos 1 segundo antes de leer del dispositivo, almacenando en raw_data_in
la informacin leda.
Despus de cerrar el dispositivo /FCI1/:dsqc328_1, los datos ledos se
desempaquetan dando lugar a una cadena de 10 caracteres que se almacena en
answer.
Argumentos
WriteRawBytes IODevice RawData [\NoOfBytes]

IODevice
Tipo de dato: iodev
IODevice es el identificador del dispositivo en el que se debe escribir el dato
RawData.
RawData
Tipo de dato: rawbytes
Contina en la pgina siguiente
772

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.247 WriteRawBytes - Escribe un dato de tipo rawbytes
Continuacin
RawData el contenedor de datos que se debe escribir en IODevice.
[\NoOfBytes]
Tipo de dato: num
\NoOfBytes indica cuntos bytes de RawData deben escribirse en IODevice,
empezando por el nmero de ndice 1.
Si \NoOfBytes no est presente, se escribe en IODevice la longitud actual de
bytes vlidos de la variable RawData.
Ejecucin de programas
Durante la ejecucin del programa, los datos se escriben en el dispositivo indicado
por IODevice.
Si se utiliza WriteRawBytes junto con los comandos de bus de campo, por ejemplo
DeviceNet, el bus de campo siempre enva una respuesta. La respuesta debe ser
manejada en RAPID con la instruccin ReadRawBytes.
La longitud actual de los bytes vlidos de la variable RawData no cambia.
En caso de un reinicio tras una cada de alimentacin, 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.
Gestin de errores
Si se produce un error durante la escritura, la variable de sistema ERRNO cambia
a ERR_FILEACC.
A continuacin, es posible gestionar este error en el gestor de errores.
Sintaxis
WriteRawBytes
[IODevice := ] < variable (VAR) of iodev> ,
[RawData := ] < variable (VAR) of rawbytes>
[\NoOfBytes := < expression (IN) of num>];

Informacin relacionada
Para obtener ms informacin sobre

Consulte

rawbytes datos

rawbytes - Datos sin formato en la pgina 1254

Obtencin de la longitud de un dato


rawbytes

RawBytesLen - Obtiene la longitud de un dato


de tipo rawbytes en la pgina 1011

Borrado del contenido de un dato de tipo ClearRawBytes - Borra el contenido de un dato


rawbytes
de tipo rawbytes en la pgina 53
Copiado del contenido de un dato de tipo CopyRawBytes - Copia el contenido de un dato
rawbytes
de tipo rawbytes en la pgina 71
Empaquetamiento de un encabezado de PackDNHeader - Empaqueta un encabezado de
DeviceNet en datos rawbytes
DeviceNet en datos rawbytes en la pgina 304
Empaquetamiento de datos en datos
rawbytes

PackRawBytes - Empaqueta datos en un dato


de tipo rawbytes en la pgina 307

Lectura de un dato rawbytes

ReadRawBytes - Lee datos de tipo rawbytes en


la pgina 374

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.247 WriteRawBytes - Escribe un dato de tipo rawbytes
Continuacin
Para obtener ms informacin sobre

Consulte

Desempaquetamiento de datos de un dato UnpackRawBytes - Desempaqueta datos de un


rawbytes
dato de tipo rawbytes en la pgina 704

774

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.248 WriteStrBin - Escribe una cadena de caracteres en un canal serie binario

1.248 WriteStrBin - Escribe una cadena de caracteres en un canal serie binario


Utilizacin
WriteStrBin (Write String Binary) se utiliza para escribir una cadena de un canal
serie o un archivo binario.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WriteStrBin.
Consulte tambin Ms ejemplos en la pgina 776.
Ejemplo 1
WriteStrBin channel2, "Hello World\0A";

The string "Hello World\0A"se escribe en el canal al que se hace referencia


con channel2. En este caso, la cadena termina con el carcter de salto de lnea
\0A. Todos los caracteres y valores hexadecimales escritos con WriteStrBin
permanecen sin cambios en el sistema.
Argumentos
WriteStrBin IODevice Str

IODevice
Tipo de dato: iodev
El nombre (la referencia) del canal serie actual.
Str
String
Tipo de dato: string
El texto a escribir.
Ejecucin de programas
La cadena de texto se escribe en el canal serie o el archivo especificado.
En caso de un reinicio tras una cada de alimentacin, 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.
Limitaciones
Esta instruccin slo puede usarse con canales serie o archivos que hayan sido
abiertos para lectura y escritura binaria.
Gestin de errores
Si se produce un error durante la escritura, la variable de sistema ERRNO cambia
a ERR_FILEACC. A continuacin, este error puede ser gestionado en el gestor de
errores.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.248 WriteStrBin - Escribe una cadena de caracteres en un canal serie binario
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin WriteStrBin.
Ejemplo 1
VAR iodev channel;
VAR num input;
Open "com2:", channel\Bin;
! Send the control character enq
WriteStrBin channel, "\05";
! Wait for the control character ack
input := ReadBin (channel \Time:= 0.1);
IF input = 6 THEN
! Send a text starting with control character stx and ending with
etx
WriteStrBin channel, "\02Hello world\03";
ENDIF
Close channel;

Despus de un intercambio de indicativos de control, se escribe la cadena de texto


Hello world (con los caracteres de control asociados en formato hexadecimal)
en un canal serie binario.
Sintaxis
WriteStrBin
[IODevice:=] <variable (VAR) of iodev>,
[Str:=] <expression (IN) of string>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Apertura y otras operaciones con canales


serie

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Comunicacin

Lectura de cadenas binarias

ReadStrBin - Lee una cadena de un canal


serie o un archivo binario en la pgina 1028

776

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.249 WriteVar - Escribe una variable

1.249 WriteVar - Escribe una variable


Utilizacin
WriteVar se utiliza para escribir una variable en un dispositivo que est conectado
a la interfaz de sensores serie..
La interfaz de sensores se comunica con los sensores a travs de canales serie,
utilizando el protocolo de transporte RTP1.
ste es un ejemplo de configuracin de un canal de sensor.
COM_PHY_CHANNEL:

Name COM1:

Connector COM1

Baudrate 19200

COM_TRP:

Name sen1:

Type RTP1

PhyChannel COM1

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WriteVar.
Ejemplo 1
! Define variable numbers
CONST num SensorOn := 6;
CONST num XCoord := 8;
CONST num YCoord := 9;
CONST num ZCoord := 10;
VAR pos SensorPos;
! Connect to the sensor device sen1: (defined in sio.cfg).
SenDevice "sen1:";
! Request start of sensor meassurements
WriteVar "sen1:", SensorOn, 1;
! Read a cartesian position from the sensor.
SensorPos.x := ReadVar "sen1:", XCoord;
SensorPos.y := ReadVar "sen1:", YCoord;
SensorPos.z := ReadVar "sen1:", ZCoord;
! Stop sensor
WriteVar "sen1:", SensorOn, 0;

Argumentos
WriteVar device VarNo VarData [ \TaskName ]

device
Tipo de dato: string
El nombre del dispositivo de E/S configurado en sio.cfg para el sensor utilizado.
VarNo
Tipo de dato: num
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.249 WriteVar - Escribe una variable
Continuacin
El argumento VarNo se utiliza para seleccionar la variable de sensor.
VarData
Tipo de dato: num
El argumento VarData define qu datos deben ser escritos en la variable
seleccionada por el argumento VarNo.
[ \TaskName ]
Tipo de dato: string
El argumento TaskName hace posible el acceso a dispositivos de otras tareas de
RAPID.
Gestin de fallos
Constante de error (valor de ERRNO)

Descripcin

SEN_NO_MEAS

Fallo de medicin

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 comunicacin no vlido

SEN_CAMCHECK

Fallo de comprobacin de sensor

SEN_TIMEOUT

Error de comunicacin

Sintaxis
WriteVar
[ device := ] < expression (IN) of string> ,
[ VarNo := ] < expression (IN) of num > ,
[ VarData := ] < expression (IN) of num > ,
[ \ TaskName := < expression (IN) of string > ] ;

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Establecimiento de una conexin SenDevice - Establece una conexin a un dispositivo


a un dispositivo de sensor
de sensor en la pgina 454
Lectura de una variable de sensor ReadVar - Lee una variable de un dispositivo en la pgina 1030
Escritura de un bloque de datos WriteBlock - Escribe un bloque de datos en un dispositide sensor
vo en la pgina 766
Lectura de un bloque de datos de ReadBlock - Lee un bloque de datos de un dispositivo
sensor
en la pgina 364

Contina en la pgina siguiente


778

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.249 WriteVar - Escribe una variable
Continuacin
Para obtener ms informacin
sobre

Consulte

Configuracin de la comunicacin Manual de referencia tcnica - Parmetros del sistema,


del sensor
seccin Communication

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.250 WZBoxDef - Define una zona mundo con forma de prisma

1.250 WZBoxDef - Define una zona mundo con forma de prisma


Utilizacin
WZBoxDef (World Zone Box Definition) se usa para definir una zona mundo con
forma de prisma recto cuyos ejes son paralelos a los ejes del sistema de
coordenadas mundo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WZBoxDef.
Ejemplo 1
corner2

Z
Y

Prisma

corner1
Sistema de coordenadas mundo

Mn. 10 mm

xx0500002205_es

VAR shapedata volume;


CONST pos corner1:=[200,100,100];
CONST pos corner2:=[600,400,400];
...
WZBoxDef \Inside, volume, corner1, corner2;

Define un prisma cuyas coordenadas son paralelas a los ejes del sistema de
coordenadas mundo. Se define a partir de las esquinas opuestas corner1 y
corner2.
Argumentos
WZBoxDef [\Inside] | [\Outside] Shape LowPoint HighPoint

[\Inside]
Tipo de dato: switch
Define el volumen que contiene el prisma.
[\Outside]
Tipo de dato: switch
Define el volumen que queda fuera del prisma (el volumen inverso).
Es imprescindible especificar uno de los argumentos \Inside o \Outside.
Shape
Tipo de dato: shapedata
Una variable para el almacenamiento del volumen definido (datos privados del
sistema).

Contina en la pgina siguiente


780

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.250 WZBoxDef - Define una zona mundo con forma de prisma
Continuacin
LowPoint
Tipo de dato: pos
La posicin (x,y,z) en mm que define una esquina inferior del prisma.
HighPoint
Tipo de dato: pos
La posicin (x,y,z) en mm que define la esquina diagonalmente opuesta a la
anterior.
Ejecucin de programas
La definicin del prisma se almacena en la variable de tipo shapedata (el
argumento Shape), para su uso futuro en instrucciones WZLimSup o WZDOSet.
Limitaciones
Las posiciones de LowPoint y HighPoint deben ser vlidas para las esquinas
opuestas (con valores distintos de coordenadas x, y, z).
Si el robot se usa para apuntar hacia fuera de LowPoint o HighPoint, el objeto
de trabajo wobj0 debe estar activo (se usa el componente trans de robtarget
por ejemplo p1.trans como argumento).
Sintaxis
WZBoxDef
[[\Inside] | [\Outside],]
[LowPoint:=]<expression (IN) of pos>,
[Shape:=]<variable (VAR) of shapedata>,
[HighPoint:=]<expression (IN) of pos>;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Zonas mundo

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Zonas
mundo

Forma de las zonas mundo

shapedata - Datos de forma de zonas mundo en la


pgina 1270

Definicin de zonas mundo esfricas WZSphDef - Define una zona mundo con forma
esfrica en la pgina 806
Definicin de zonas mundo cilndricas WZCylDef - Define una zona mundo con forma cilndrica en la pgina 782
Definicin de una zona mundo para las WZHomeJointDef - Define una zona mundo para
posiciones iniciales de los ejes
las posiciones iniciales de los ejes en la pgina 795
Definicin de una zona mundo para las WZLimJointDef - Define una zona mundo para la
posiciones lmite de los ejes
limitacin de los ejes en la pgina 799
Activacin de la supervisin de lmites WZLimSup - Activa la supervisin de lmites de las
de las zonas mundo
zonas mundo en la pgina 803
Activacin de salidas digitales basadas WZDOSet - Activacin de salidas digitales basadas
en zonas mundo
en zonas mundo en la pgina 787

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.251 WZCylDef - Define una zona mundo con forma cilndrica

1.251 WZCylDef - Define una zona mundo con forma cilndrica


Utilizacin
WZCylDef (definicin de zona mundo cilndrica) se usa para definir una zona
mundo que tiene la forma de un cilindro con el eje del cilindro paralelo al eje z del
sistema de coordenadas mundo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WZCylDef.
Ejemplo 1

R2 (mn. 5 mm)

H2 (mn. 10 mm)
Z
Y
C2
X
Sistema de coordenadas mundo
xx0500002206_es

VAR shapedata volume;


CONST pos C2:=[300,200,200];
CONST num R2:=100;
CONST num H2:=200;
...
WZCylDef \Inside, volume, C2, R2, H2;

Define un cilindro con el centro de la circunferencia inferior en C2, el radio R2 y la


altura H2.
Argumentos
WZCylDef [\Inside] | [\Outside] Shape CentrePoint Radius Height

[\Inside]
Tipo de dato: switch
Define el volumen que contiene el cilindro.
[\Outside]
Tipo de dato: switch
Define el volumen que queda fuera del cilindro (el volumen inverso).
Es imprescindible especificar uno de los argumentos \Inside o \Outside.

Contina en la pgina siguiente


782

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.251 WZCylDef - Define una zona mundo con forma cilndrica
Continuacin
Shape
Tipo de dato: shapedata
Una variable para el almacenamiento del volumen definido (datos privados del
sistema).
CentrePoint
Tipo de dato: pos
La posicin (x,y,z) en mm que define el centro de un extremo circular del cilindro.
Radius
Tipo de dato: num
El radio del cilindro, en mm.
Height
Tipo de dato: num
La altura del cilindro, en mm. Si es positiva (direccin +z), el argumento
CentrePoint es el centro del extremo inferior del cilindro (como en el ejemplo
anterior). Si es negativa (direccin -z), el argumento CentrePoint es el centro
del extremo superior del cilindro.
Ejecucin de programas
La definicin del cilindro se almacena en la variable de tipo shapedata (el
argumento Shape), para su uso futuro en instrucciones WZLimSup o WZDOSet.
Limitaciones
Si el robot se usa para apuntar hacia fuera de CentrePoint, el objeto de trabajo
wobj0 debe estar activo (se usa el componente trans de robtarget por ejemplo
p1.trans como argumento).
Sintaxis
WZCylDef
[\Inside] | [\Outside],
[Shape:=]<variable (VAR) of shapedata>,
[centerPoint:=]<expression (IN) of pos>,
[Radius:=]<expression (IN) of num>,
[Height:=]<expression (IN) of num>;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Zonas mundo

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Zonas
mundo

Forma de las zonas mundo

shapedata - Datos de forma de zonas mundo en


la pgina 1270

Definicin de zonas mundo en forma de WZBoxDef - Define una zona mundo con forma
prisma
de prisma en la pgina 780
Definicin de zonas mundo esfricas

WZSphDef - Define una zona mundo con forma


esfrica en la pgina 806

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.251 WZCylDef - Define una zona mundo con forma cilndrica
Continuacin
Para obtener ms informacin sobre Consulte
Definicin de una zona mundo para las WZHomeJointDef - Define una zona mundo para
posiciones iniciales de los ejes
las posiciones iniciales de los ejes en la pgina 795
Definicin de una zona mundo para las WZLimJointDef - Define una zona mundo para la
posiciones lmite de los ejes
limitacin de los ejes en la pgina 799
Activacin de la supervisin de lmites WZLimSup - Activa la supervisin de lmites de
de las zonas mundo
las zonas mundo en la pgina 803
Activacin de salidas digitales basadas WZDOSet - Activacin de salidas digitales basadas
en zonas mundo
en zonas mundo en la pgina 787

784

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.252 WZDisable - Desactiva la supervisin de las zonas mundo temporales

1.252 WZDisable - Desactiva la supervisin de las zonas mundo temporales


Utilizacin
WZDisable (World Zone Disable) se utiliza para desactivar la supervisin de una
zona mundo temporal, definida anteriormente para detener el movimiento o activar
una salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WZDisable.
Ejemplo 1
VAR wztemporary wzone;
...
PROC...
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
ENDPROC

Al moverse hacia p_pick, se comprueba la posicin del TCP del robot para que
no entre dentro del volumen wzone especificado. Esta supervisin no se realiza
cuando se va hacia p_place.
Argumentos
WZDisable WorldZone

WorldZone
Tipo de dato: wztemporary
Una variable o una variable persistente de tipo wztemporary que contiene la
identidad de la zona mundo que debe desactivarse.
Ejecucin de programas
La zona mundo temporal se desactiva. Esto significa que la supervisin del TCP
del robot respecto del volumen correspondiente se detiene temporalmente. Puede
reactivarse mediante la instruccin WZEnable.
Limitaciones
Slo es posible desactivar las zonas mundo temporales. Las zonas mundo
estacionarias estn siempre activadas.
Sintaxis
WZDisable
[WorldZone:=]<variable or persistent (INOUT) of wztemporary>;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Zonas mundo

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Zonas mundo

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.252 WZDisable - Desactiva la supervisin de las zonas mundo temporales
Continuacin
Para obtener ms informacin sobre Consulte
Forma de las zonas mundo

shapedata - Datos de forma de zonas mundo en la


pgina 1270

Datos de zonas mundo temporales

wztemporary - Datos de zona mundo temporal en


la pgina 1329

Activacin de la supervisin de lmites WZLimSup - Activa la supervisin de lmites de las


de las zonas mundo
zonas mundo en la pgina 803
Activacin de salidas digitales basa- WZDOSet - Activacin de salidas digitales basadas
das en zonas mundo
en zonas mundo en la pgina 787
Activacin de zonas mundo

WZEnable - Activa la supervisin de las zonas


mundo temporales en la pgina 791

Eliminacin de zonas mundo

WZFree - Elimina la supervisin de las zonas mundo


temporales en la pgina 793

786

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.253 WZDOSet - Activacin de salidas digitales basadas en zonas mundo

1.253 WZDOSet - Activacin de salidas digitales basadas en zonas mundo


Utilizacin
WZDOSet (World Zone Digital Output Set) se utiliza para definir la accin y para
activar una zona mundo para la supervisin de los movimientos del robot.
Despus de la ejecucin de esta instruccin, cuando el TCP del robot o los ejes
del robot o los ejes externos (la zona de los ejes) se encuentra dentro de la zona
mundo definida o se est acercando a ella, se establece una seal digital de salida
con el valor especificado.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WZDOSet.
Consulte tambin Ms ejemplos en la pgina 789.
Ejemplo 1
VAR wztemporary service;
PROC zone_output()
VAR shapedata volume;
CONST pos p_service:=[500,500,700];
...
WZSphDef \Inside, volume, p_service, 50;
WZDOSet \Temp, service \Inside, volume, do_service, 1;
ENDPROC

Se define la zona mundo temporal service en el programa de aplicacin. Dicha


zona establece la seal do_service cuando el TCP del robot se encuentra dentro
de la esfera definida, durante la ejecucin del programa o durante los
desplazamientos.
Argumentos
WZDOSet [\Temp] | [\Stat] WorldZone [\Inside] | [\Before] Shape
Signal SetValue

[\Temp]
Temporary
Tipo de dato: switch
La zona mundo a definir es una zona mundo temporal.
[\Stat]
Stationary
Tipo de dato: switch
La zona mundo a definir es una zona mundo estacionaria.
Es imprescindible especificar uno de los argumentos \Temp o \Stat.
WorldZone
Tipo de dato: wztemporary o wzstationary

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.253 WZDOSet - Activacin de salidas digitales basadas en zonas mundo
Continuacin
Una variable o una variable persistente que se actualizar con la identidad (el valor
numrico) de la zona mundo.
Si se usa el modificador \Temp, el tipo de dato debe ser wztemporary. Si se usa
el modificador \Stat, el tipo de dato debe ser wzstationary.
[\Inside]
Tipo de dato: switch
La seal digital de salida se activa cuando el TCP del robot o los ejes especificados
se encuentran dentro del volumen definido.
[\Before]
Tipo de dato: switch
La seal digital de salida se activa antes de que el TCP del robot o los ejes
especificados alcancen el volumen definido (lo antes posible antes del volumen).
Es imprescindible especificar uno de los argumentos \Inside o \Before.
Shape
Tipo de dato: shapedata
La variable que define el volumen de la zona mundo.
Signal
Tipo de dato: signaldo
El nombre de la seal digital de salida que debe cambiar de valor.
Si se utiliza una zona mundo estacionaria, la seal debe estar protegida contra
escritura frente al acceso del usuario (RAPID, FP). Cambie el valor de Access
Level de la seal en los parmetros del sistema o en los ejes especificados.
SetValue
Tipo de dato: dionum
El valor deseado para la seal (0 1) cuando el TCP se encuentra dentro del
volumen o slo antes de que entre en el volumen.
Cuando est fuera del volumen o cerca de entrar en l, la seal cambia al valor
opuesto.
Ejecucin de programas
Se activa la zona mundo definida. A partir de ese momento, se supervisa la posicin
del TCP del robot (o la posicin de los ejes del robot o de los ejes externos). La
salida se establece cuando la posicin del TCP del robot (o la posicin de los ejes
del robot o de los ejes externos) se encuentra dentro del volumen (\Inside) o se
acerca al borde del volumen (\Before).
Si se usa WZHomeJointDef o WZLimJointDef junto con WZDOSet, la seal digital
se establece slo si todos los ejes activos con supervisin de espacio de ejes se
encuentran dentro del espacio de ejes o cerca de l.

Contina en la pgina siguiente


788

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.253 WZDOSet - Activacin de salidas digitales basadas en zonas mundo
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin WZDOSet.
Ejemplo 1
VAR wztemporary home;
VAR wztemporary service;
PERS wztemporary equip1:=[0];
PROC main()
...
! Definition of all temporary world zones
zone_output;
...
! equip1 in robot work area
WZEnable equip1;
...
! equip1 out of robot work area
WZDisable equip1;
...
! No use for equip1 any more
WZFree equip1;
...
ENDPROC
PROC zone_output()
VAR shapedata volume;
CONST pos p_home:=[800,0,800];
CONST pos p_service:=[800,800,800];
CONST pos p_equip1:=[-800,-800,0];
...
WZSphDef \Inside, volume, p_home, 50;
WZDOSet \Temp, home \Inside, volume, do_home, 1;
WZSphDef \Inside, volume, p_service, 50;
WZDOSet \Temp, service \Inside, volume, do_service, 1;
WZCylDef \Inside, volume, p_equip1, 300, 1000;
WZLimSup \Temp, equip1, volume;
! equip1 not in robot work area
WZDisable equip1;
ENDPROC

Se definen las zonas mundo temporales home y service en el programa de


aplicacin para cambiar el valor de las seales do_home y do_service, cuando
el robot est dentro de la esfera home o service respectivamente durante la
ejecucin del programa o durante los movimientos manuales.
Tambin se define la zona mundo temporal equip1, que est activa slo en la
parte del programa durante la cual equip1 se encuentra dentro del rea de trabajo
del robot. En ese momento el robot se para antes de entrar en el volumen equip1,
tanto durante la ejecucin del programa como durante el movimiento. equip1
puede desactivarse o activarse desde otras tareas de programa usando el valor
de la variable persistente equip1.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.253 WZDOSet - Activacin de salidas digitales basadas en zonas mundo
Continuacin
Limitaciones
Las zonas mundo no pueden redefinirse usando la misma variable en el argumento
WorldZone.
Las zonas mundo estacionarias no pueden ser desactivadas, activadas de nuevo
ni borrarse en el programa de RAPID.
Las zonas mundo temporales pueden ser desactivadas (WZDisable), activadas
de nuevo (WZEnable) o borrarse (WZFree)) en el programa de RAPID.
Sintaxis
WZDOSet
[[\Temp] | [\Stat],]
[WorldZone:=]<variable or persistent (INOUT) of wztemporary>
[\Inside] | [\Before] ,
[Shape:=]<variable (VAR) of shapedata>,
[Signal:=]<variable (VAR) of signaldo>,
[SetValue:=]<expression (IN) of dionum>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Zonas mundo

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Zonas
mundo

Forma de las zonas mundo

shapedata - Datos de forma de zonas mundo en


la pgina 1270

Zona mundo temporal

wztemporary - Datos de zona mundo temporal en


la pgina 1329

Zona mundo estacionaria

wzstationary - Datos de zona mundo estacionaria


en la pgina 1327

Definicin de zonas mundo en forma de WZBoxDef - Define una zona mundo con forma
prisma recto
de prisma en la pgina 780
Definicin de zonas mundo esfricas

WZSphDef - Define una zona mundo con forma


esfrica en la pgina 806

Definicin de zonas mundo cilndricas

WZCylDef - Define una zona mundo con forma


cilndrica en la pgina 782

Definicin de una zona mundo para las WZHomeJointDef - Define una zona mundo para
posiciones iniciales de los ejes
las posiciones iniciales de los ejes en la pgina 795
Activacin de la supervisin de lmites WZLimSup - Activa la supervisin de lmites de
de las zonas mundo
las zonas mundo en la pgina 803
Nivel de acceso de las seales

Manual de referencia tcnica - Parmetros del


sistema, seccin I/O - Signal - Access Level

790

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.254 WZEnable - Activa la supervisin de las zonas mundo temporales

1.254 WZEnable - Activa la supervisin de las zonas mundo temporales


Utilizacin
WZEnable (World Zone Enable) se utiliza para reactivar la supervisin de una zona
mundo temporal, definida anteriormente para detener el movimiento o activar una
salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WZEnable.
Ejemplo 1
VAR wztemporary wzone;
...
PROC ...
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
WZEnable wzone;
MoveL p_home, v200, z30, tool1;
ENDPROC

Al moverse hacia p_pick, se comprueba la posicin del TCP del robot para que
no entre dentro del volumen wzone especificado. Esta supervisin no se realiza
cuando se va hacia p_place, pero se reactiva antes del movimiento hacia p_home.
Argumentos
WZEnable WorldZone

WorldZone
Tipo de dato: wztemporary
Una variable o una variable persistente de tipo wztemporary que contiene la
identidad de la zona mundo que debe activarse.
Ejecucin de programas
La zona mundo temporal se reactiva. Recuerde que las zonas mundo se activan
automticamente cuando se crean. Slo es necesario reactivarlas cuando han
sido desactivadas anteriormente mediante WZDisable.
Limitaciones
Slo es posible desactivar y reactivar las zonas mundo temporales. Las zonas
mundo estacionarias estn siempre activadas.
Sintaxis
WZEnable
[WorldZone:=]<variable or persistent (INOUT) of wztemporary>;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.254 WZEnable - Activa la supervisin de las zonas mundo temporales
Continuacin
Informacin relacionada
Para obtener ms informacin sobre Consulte
Zonas mundo

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Zonas
mundo

Forma de las zonas mundo

shapedata - Datos de forma de zonas mundo en la


pgina 1270

Datos de zonas mundo temporales

wztemporary - Datos de zona mundo temporal en


la pgina 1329

Activacin de la supervisin de lmites WZLimSup - Activa la supervisin de lmites de las


de las zonas mundo
zonas mundo en la pgina 803
Activacin de salidas digitales basadas WZDOSet - Activacin de salidas digitales basadas
en zonas mundo
en zonas mundo en la pgina 787
Desactivacin de zonas mundo

WZDisable - Desactiva la supervisin de las zonas


mundo temporales en la pgina 785

Eliminacin de zonas mundo

WZFree - Elimina la supervisin de las zonas


mundo temporales en la pgina 793

792

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.255 WZFree - Elimina la supervisin de las zonas mundo temporales

1.255 WZFree - Elimina la supervisin de las zonas mundo temporales


Utilizacin
WZFree (World Zone Free) se utiliza para eliminar la definicin de una zona mundo
temporal, definida anteriormente para detener el movimiento o activar una salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WZFree.
Ejemplo 1
VAR wztemporary wzone;
...
PROC ...
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
WZEnable wzone;
MoveL p_home, v200, z30, tool1;
WZFree wzone;
ENDPROC

Al moverse hacia p_pick, se comprueba la posicin del TCP del robot para que
no entre dentro del volumen wzone especificado. Esta supervisin no se realiza
cuando se va hacia p_place, pero se reactiva antes del movimiento hacia p_home.
Cuando se alcanza esta posicin, se elimina la definicin de zona mundo.
Argumentos
WZFree WorldZone

WorldZone
Tipo de dato: wztemporary
Una variable o una variable persistente de tipo wztemporary que contiene la
identidad de la zona mundo que debe eliminarse.
Ejecucin de programas
La zona mundo temporal se desactiva primero, tras lo cual su definicin se elimina.
Despus de eliminar una zona mundo temporal, no es posible reactivarla ni
desactivarla.
Limitaciones
Slo es posible desactivar, reactivar o eliminar las zonas mundo temporales. Las
zonas mundo estacionarias estn siempre activadas.
Sintaxis
WZFree
[WorldZone:=]<variable or persistent (INOUT) of wztemporary>;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.255 WZFree - Elimina la supervisin de las zonas mundo temporales
Continuacin
Informacin relacionada
Para obtener ms informacin sobre Consulte
Zonas mundo

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Zonas
mundo

Forma de las zonas mundo

shapedata - Datos de forma de zonas mundo en la


pgina 1270

Datos de zonas mundo temporales

wztemporary - Datos de zona mundo temporal en


la pgina 1329

Activacin de la supervisin de lmites WZLimSup - Activa la supervisin de lmites de las


de las zonas mundo
zonas mundo en la pgina 803
Activacin de salidas digitales basadas WZDOSet - Activacin de salidas digitales basadas
en zonas mundo
en zonas mundo en la pgina 787
Desactivacin de zonas mundo

WZDisable - Desactiva la supervisin de las zonas


mundo temporales en la pgina 785

Activacin de zonas mundo

WZEnable - Activa la supervisin de las zonas


mundo temporales en la pgina 791

794

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.256 WZHomeJointDef - Define una zona mundo para las posiciones iniciales de los ejes

1.256 WZHomeJointDef - Define una zona mundo para las posiciones iniciales de
los ejes
Utilizacin
WZHomeJointDef (World Zone Home Joint Definition) se utiliza para definir una
zona mundo en las coordenadas de los ejes del robot y de los ejes externos para
usarlas como posicin INICIO o de SERVICIO.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
WZHomeJointDef.
Ejemplo 1
VAR wzstationary home;
...
PROC power_on()
VAR shapedata joint_space;
CONST jointtarget home_pos := [ [ 0, 0, 0, 0, 0, -45], [ 0, 9E9,
9E9, 9E9, 9E9, 9E9] ];
CONST jointtarget delta_pos := [ [ 2, 2, 2, 2, 2, 2], [ 5, 9E9,
9E9, 9E9, 9E9, 9E9] ];
...
WZHomeJointDef \Inside, joint_space, home_pos, delta_pos;
WZDOSet \Stat, home \Inside, joint_space, do_home, 1;
ENDPROC

Definicin y activacin de la zona mundo estacionaria home, que cambia la seal


do_home to 1, cuando todos los ejes del robot y el eje externo extax.eax_a
se encuentran en la posicin de ejes home_pos (dentro de +/- delta_pos para
cada eje) durante la ejecucin del programa y durante los desplazamientos. La
variable joint_space del tipo de dato shapedata se usa para transferir datos
de la instruccin WZHomeJointDef a la instruccin WZDOSet.
Argumentos
WZHomeJointDef [\Inside] | [\Outside] Shape MiddleJointVal
DeltaJointVal

[\Inside]
Tipo de dato: switch
Define el espacio de ejes que existe dentro de MiddleJointVal +/DeltaJointVal.
[\Outside]
Tipo de dato: switch
Define el espacio de ejes que existe fuera de MiddleJointVal +/- DeltaJointVal
(espacio de ejes inverso).
Shape
Tipo de dato: shapedata

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.256 WZHomeJointDef - Define una zona mundo para las posiciones iniciales de los ejes
Continuacin
Una variable para el almacenamiento del espacio de ejes (datos privados del
sistema).
MiddleJointVal
Tipo de dato: jointtarget
La posicin en coordenadas de ejes para el centro del espacio de ejes que se
desea definir. Especifica la posicin para cada eje del robot y cada eje externo
(grados en el caso de los ejes de rotacin y mm en el caso de los ejes lineales).
Especifica la posicin en posiciones absolutas de los ejes (no dentro del sistema
de coordenadas de desplazamiento EOffsSet-EOffsOn en el caso de los ejes
externos). El valor 9E9 en un eje significa que el eje no se supervisar. Los ejes
externos no activos tambin usan 9E9 en el momento de la programacin.
DeltaJointVal
Tipo de dato: jointtarget
La variacin de posicin delta +/- en coordenadas de ejes desde el centro del
espacio de ejes. El valor debe ser mayor que 0 en todos los ejes que se desee
supervisar.
En la figura siguiente se muestra la definicin de espacios de ejes para los ejes
de rotacin.

DeltaJointVal
MiddleJointVal

DeltaJointVal

ngulo de brazo
xx0500002208_es

En la figura siguiente se muestra la definicin de espacios de ejes para los ejes


lineales.
MiddleJointVal
DeltaJointVal

DeltaJointVal
_

+
Posicin de eje lineal

xx0500002209_es

Ejecucin de programas
La definicin del espacio de ejes se almacena en la variable de tipo shapedata
(el argumento Shape), para su uso futuro en instrucciones WZLimSup o WZDOSet.
Si se usa WZHomeJointDef junto con WZDOSet, la seal digital se establece, pero
slo si todos los ejes activos con supervisin de espacio de ejes se encuentran
dentro del espacio de ejes o cerca de l.
Contina en la pgina siguiente
796

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.256 WZHomeJointDef - Define una zona mundo para las posiciones iniciales de los ejes
Continuacin
Si se usa WZHomeJointDef con un espacio exterior de ejes (argumento \Outside)
junto con WZLimSup, se detiene el robot tan pronto como uno de los ejes activos
con supervisin de espacio de ejes alcanza el espacio de ejes.
Si se usa WZHomeJointDef con un espacio interior de ejes (argumento \Inside)
junto con WZLimSup, se detiene el robot tan pronto como el ltimo eje activo con
supervisin de espacio de ejes alcanza el espacio de ejes. Esto significa que uno
o varios ejes, pero no todos los ejes activos y supervisados, se encontrarn dentro
del espacio de ejes en un momento determinado.
En el momento de la ejecucin de la instruccin ActUnit o DeactUnit para la
activacin o desactivacin de unidades mecnicas, se actualiza el estado de
supervisin de la posicin HOME o la limitacin del rea de trabajo.
Limitaciones

xx0100000002

Slo las unidades mecnicas activas y sus ejes activos en el momento de la


activacin de la zona mundo (con la instruccin WZDOSet o WZLimSup), se incluyen
en la supervisin de la posicin HOME respecto de la limitacin del rea de trabajo.
Adems, para que sean supervisados, la unidad mecnica y sus ejes deben seguir
estando activos durante el movimiento del programa o mediante un movimiento
especial.
Por ejemplo, si un eje con supervisin est fuera de la posicin de ejes HOME
pero est desactivado, esto no impide que la seal digital de salida de la posicin
de ejes HOME se establezca si todos los dems ejes activos con supervisin de
espacio se encuentran dentro de la posicin de ejes HOME. Cuando se activa de
nuevo el eje, ste se incluye en la supervisin y el sistema de robot se encuentra
fuera de la posicin de ejes HOME. La salida digital se restablece.
Sintaxis
WZHomeJointDef
[[\Inside] | [\Outside],]
[Shape:=]<variable (VAR) of shapedata>,
[MiddleJointVal :=]<expression (IN) of jointtarget>,
[DeltaJointVal :=]<expression (IN) of jointtarget>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Zonas mundo

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Zonas
mundo

Forma de las zonas mundo

shapedata - Datos de forma de zonas mundo


en la pgina 1270

Definicin de zonas mundo en forma de


prisma

WZBoxDef - Define una zona mundo con forma


de prisma en la pgina 780

Definicin de zonas mundo cilndricas

WZCylDef - Define una zona mundo con forma


cilndrica en la pgina 782

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.256 WZHomeJointDef - Define una zona mundo para las posiciones iniciales de los ejes
Continuacin
Para obtener ms informacin sobre

Consulte

Definicin de zonas mundo esfricas

WZSphDef - Define una zona mundo con forma


esfrica en la pgina 806

Definicin de una zona mundo para las


posiciones lmite de los ejes

WZLimJointDef - Define una zona mundo para


la limitacin de los ejes en la pgina 799

Activacin de la supervisin de lmites de WZLimSup - Activa la supervisin de lmites


las zonas mundo
de las zonas mundo en la pgina 803
Activacin de salidas digitales basadas en WZDOSet - Activacin de salidas digitales bazonas mundo
sadas en zonas mundo en la pgina 787

798

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.257 WZLimJointDef - Define una zona mundo para la limitacin de los ejes

1.257 WZLimJointDef - Define una zona mundo para la limitacin de los ejes
Utilizacin
WZLimJointDef (World Zone Limit Joint Definition) se utiliza para definir una zona
mundo en las coordenadas de los ejes del robot y de los ejes externos para usarlas
para la limitacin del rea de trabajo.
Con WZLimJointDef es posible limitar el rea de trabajo de cada eje del robot y
cada eje externo en el programa RAPID, aparte de la limitacin que puede realizar
con los parmetros del sistema Motion - Arm - robx_y - Upper Joint Bound ... Lower
Joint Bound.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin
WZLimJointDef.
Ejemplo 1
VAR wzstationary work_limit;
...
PROC power_on()
VAR shapedata joint_space;
CONST jointtarget low_pos:= [ [ -90, 9E9, 9E9, 9E9, 9E9, 9E9],
[ -1000, 9E9, 9E9, 9E9, 9E9, 9E9]];
CONST jointtarget high_pos := [ [ 90, 9E9, 9E9, 9E9,9E9, 9E9],
[ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
...
WZLimJointDef \Outside, joint_space, low_pos, high_pos;
WZLimSup \Stat, work_limit, joint_space;
ENDPROC

Definicin y activacin de la zona mundo estacionaria work_limit, que limita el


rea de trabajo del eje del robot 1 a -90 y +90 grados y de los ejes externos
extax.eax_a a -1.000 mm durante la ejecucin del programa y los movimientos.
La variable joint_space del tipo de dato shapedata se usa para transferir datos
de la instruccin WZLimJointDef a la instruccin WZLimSup.
Argumentos
WZLimJointDef [\Inside] | [\Outside] Shape LowJointVal HighJointVal

[\Inside]
Tipo de dato: switch
Define el espacio de ejes que existe dentro de LowJointVal ... HighJointVal.
[\Outside]
Tipo de dato: switch
Define el espacio de ejes que existe fuera de LowJointVal ... HighJointVal
(espacio de ejes inverso).
Shape
Tipo de dato: shapedata
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

1 Instrucciones
1.257 WZLimJointDef - Define una zona mundo para la limitacin de los ejes
Continuacin
Una variable para el almacenamiento del espacio de ejes (datos privados del
sistema).
LowJointVal
Tipo de dato: jointtarget
La posicin en coordenadas de ejes para el lmite inferior del espacio de ejes que
se desea definir. Especifica la posicin para cada eje del robot y cada eje externo
(grados en el caso de los ejes de rotacin y mm en el caso de los ejes lineales).
Especifica la posicin en posiciones absolutas de los ejes (no dentro del sistema
de coordenadas de desplazamiento EOffsSet o EOffsOn en el caso de los ejes
externos). El valor 9E9 en un eje significa que el eje no se supervisar en cuanto
al lmite inferior. Los ejes externos no activos tambin usan 9E9 en el momento
de la programacin.
HighJointVal
Tipo de dato: jointtarget
La posicin en coordenadas de ejes para el lmite superior del espacio de ejes
que se desea definir. Especifica la posicin para cada eje del robot y cada eje
externo (grados en el caso de los ejes de rotacin y mm en el caso de los ejes
lineales). Especifica la posicin en posiciones absolutas de los ejes (no dentro del
sistema de coordenadas de desplazamiento EOffsSet o EOffsOn en el caso de
los ejes externos). El valor 9E9 en un eje significa que el eje no se supervisar en
cuanto al lmite superior. Los ejes externos no activos tambin usan 9E9 en el
momento de la programacin.
El valor de HighJointVal menos LowJointVal en cada eje debe ser mayor que
0 en todos los ejes que se desee supervisar.
En la figura siguiente se muestra la definicin de espacios de ejes para los ejes
de rotacin.

LowJointVal

_
+

HighJointVal

ngulo de brazo
xx0500002281_es

En la figura siguiente se muestra la definicin de espacios de ejes para los ejes


lineales.

xx0100000002

Contina en la pgina siguiente


800

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.257 WZLimJointDef - Define una zona mundo para la limitacin de los ejes
Continuacin
Ejecucin de programas
La definicin del espacio de ejes se almacena en la variable de tipo shapedata
(el argumento Shape), para su uso futuro en instrucciones WZLimSup o WZDOSet.
Si se usa WZLimJointDef junto con WZDOSet, la seal digital se establece slo
si todos los ejes activos con supervisin de espacio de ejes se encuentran dentro
del espacio de ejes o cerca de l.
Si se usa WZLimJointDef con un espacio exterior de ejes (argumento \Outside)
junto con WZLimSup, se detiene el robot tan pronto como uno de los ejes activos
con supervisin de espacio de ejes alcanza el espacio de ejes.
Si se usa WZLimJointDef con un espacio interior de ejes (argumento \Inside)
junto con WZLimSup, se detiene el robot tan pronto como el ltimo eje activo con
supervisin de espacio de ejes alcanza el espacio de ejes. Esto significa que uno
o varios ejes, pero no todos los ejes activos y supervisados, se encontrarn dentro
del espacio de ejes en un momento determinado.
En el momento de la ejecucin de la instruccin ActUnit o DeactUnit, se
actualiza el estado de la supervisin.
Limitaciones

xx0100000002

AVISO!
Slo las unidades mecnicas activas y sus ejes activos en el momento de la
activacin de la zona mundo (con la instruccin WZDOSet o WZLimSup), se incluyen
en la supervisin de la posicin HOME respecto de la limitacin del rea de trabajo.
Adems, para que sean supervisados, la unidad mecnica y sus ejes deben seguir
estando activos durante el movimiento del programa o mediante un movimiento
especial.
Por ejemplo, si un eje con supervisin est fuera de la posicin de ejes INICIO
pero est desactivado, esto no impide que la seal digital de salida de la posicin
de ejes INICIO se establezca si todos los dems ejes activos con supervisin de
espacio se encuentran dentro de la posicin de ejes INICIO. Cuando se activa de
nuevo el eje, ste se incluye en la supervisin y el sistema de robot se encuentra
fuera de la posicin de ejes INICIO. La salida digital se restablece.
Sintaxis
WZLimJointDef
[[\Inside] | [\Outside],]
[Shape:=]<variable (VAR) of shapedata>,
[LowJointVal:=]<expression (IN) of jointtarget>,
[HighJointVal:=]<expression (IN) of jointtarget>;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.257 WZLimJointDef - Define una zona mundo para la limitacin de los ejes
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Zonas mundo

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Zonas
mundo

Forma de las zonas mundo

shapedata - Datos de forma de zonas mundo en


la pgina 1270

Definicin de zonas mundo en forma de WZBoxDef - Define una zona mundo con forma
prisma
de prisma en la pgina 780
Definicin de zonas mundo cilndricas

WZCylDef - Define una zona mundo con forma


cilndrica en la pgina 782

Definicin de zonas mundo esfricas

WZSphDef - Define una zona mundo con forma


esfrica en la pgina 806

Definicin de una zona mundo para las WZHomeJointDef - Define una zona mundo para
posiciones iniciales de los ejes
las posiciones iniciales de los ejes en la pgina 795
Activacin de la supervisin de lmites
de las zonas mundo

WZLimSup - Activa la supervisin de lmites de


las zonas mundo en la pgina 803

Activacin de salidas digitales basadas WZDOSet - Activacin de salidas digitales basaen zonas mundo
das en zonas mundo en la pgina 787

802

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.258 WZLimSup - Activa la supervisin de lmites de las zonas mundo

1.258 WZLimSup - Activa la supervisin de lmites de las zonas mundo


Utilizacin
WZLimSup (World Zone Limit Supervision) se usa para definir la accin y para
activar una zona mundo para la supervisin del rea de trabajo del robot o de los
ejes externos.
Despus de la ejecucin de esta instruccin, cuando el TCP llega a la zona mundo
definida o cuando los ejes del robot o los ejes externos alcanzan la zona mundo
definida para los ejes, el movimiento se detiene tanto durante la ejecucin del
programa como durante los movimientos.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WZLimSup.
Consulte tambin Ms ejemplos en la pgina 804.
Ejemplo 1
VAR wzstationary max_workarea;
...
PROC POWER_ON()
VAR shapedata volume;
...
WZBoxDef \Outside, volume, corner1, corner2;
WZLimSup \Stat, max_workarea, volume;
ENDPROC

Definicin y activacin de la zona mundo estacionaria max_workarea, con la


forma del rea que queda fuera de un prisma (almacenado temporalmente en
volume) y la supervisin del rea de trabajo para la realizacin de acciones. El
robot se detiene y muestra un mensaje de error antes de entrar en el rea que
queda fuera del prisma.
Argumentos
WZLimSup [\Temp] | [\Stat] WorldZone Shape

[\Temp]
Temporary
Tipo de dato: switch
La zona mundo a definir es una zona mundo temporal.
[\Stat]
Stationary
Tipo de dato: switch
La zona mundo a definir es una zona mundo estacionaria.
Es imprescindible especificar uno de los argumentos \Temp o \Stat.
WorldZone
Tipo de dato: wztemporary o wzstationary

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

1 Instrucciones
1.258 WZLimSup - Activa la supervisin de lmites de las zonas mundo
Continuacin
Una variable o una variable persistente que se actualizar con la identidad (el valor
numrico) de la zona mundo.
Si se usa el modificador \Temp, el tipo de dato debe ser wztemporary. Si se usa
el modificador \Stat, el tipo de dato debe ser wzstationary.
Shape
Tipo de dato: shapedata
La variable que define el volumen de la zona mundo.
Ejecucin de programas
Se activa la zona mundo definida. A partir de ese momento, se supervisa la posicin
del TCP del robot o la posicin de los ejes del robot o de los ejes externos. Si se
alcanza el rea definida, se detiene el movimiento.
Si se usa WZLimJointDef o WZHomeJointDef con un espacio exterior de ejes
(argumento \Outside) junto con WZLimSup, se detiene el robot tan pronto como
uno de los ejes activos con supervisin de espacio de ejes alcanza el espacio de
ejes.
Si se usa WZLimJointDef o WZHomeJointDef con un espacio interior de ejes
(argumento \Inside) junto con WZLimSup, se detiene el robot tan pronto como
el ltimo eje activo con supervisin de espacio de ejes alcanza el espacio de ejes.
Esto significa que uno o varios ejes, pero no todos los ejes activos y supervisados,
se encontrarn dentro del espacio de ejes en un momento determinado.
En el momento de la ejecucin de la instruccin ActUnit o DeactUnit, se
actualiza el estado de la supervisin.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin WZLimSup.
Ejemplo 1
VAR wzstationary box1_invers;
VAR wzstationary box2;
PROC wzone_power_on()
VAR shapedata volume;
CONST pos box1_c1:=[500,-500,0];
CONST pos box1_c2:=[-500,500,500];
CONST pos box2_c1:=[500,-500,0];
CONST pos box2_c2:=[200,-200,300];
...
WZBoxDef \Outside, volume, box1_c1, box1_c2;
WZLimSup \Stat, box1_invers, volume;
WZBoxDef \Inside, volume, box2_c1, box2_c2;
WZLimSup \Stat, box2, volume;
ENDPROC

Limitacin del rea de trabajo para el robot con las siguientes zonas mundo
estacionarias:

Fuera del rea de trabajo cuando se est fuera de box1_invers

Contina en la pgina siguiente


804

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.258 WZLimSup - Activa la supervisin de lmites de las zonas mundo
Continuacin

Fuera del rea de trabajo cuando se est dentro de box2

Si la rutina est conectada al evento de sistema POWER ON (ARRANQUE), estas


zonas mundo estarn siempre activas en el sistema, tanto para los movimientos
del programa como para el movimiento manual.
Limitaciones
Las zonas mundo no pueden redefinirse usando la misma variable en el argumento
WorldZone.
Las zonas mundo estacionarias no pueden ser desactivadas, activadas de nuevo
ni borrarse en el programa de RAPID.
Las zonas mundo temporales pueden ser desactivadas (WZDisable), activadas
de nuevo (WZEnable) o borrarse (WZFree)) en el programa de RAPID.
Sintaxis
WZLimSup
[[\Temp] | [\Stat],]
[WorldZone:=]<variable or persistent (INOUT) of wztemporary>,
[Shape:=]<variable (VAR) of shapedata>;

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Zonas mundo

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Zonas
mundo

Forma de las zonas mundo

shapedata - Datos de forma de zonas mundo en


la pgina 1270

Zona mundo temporal

wztemporary - Datos de zona mundo temporal en


la pgina 1329

Zona mundo estacionaria

wzstationary - Datos de zona mundo estacionaria


en la pgina 1327

Definicin de zonas mundo en forma de WZBoxDef - Define una zona mundo con forma
prisma recto
de prisma en la pgina 780
Definicin de zonas mundo esfricas

WZSphDef - Define una zona mundo con forma


esfrica en la pgina 806

Definicin de zonas mundo cilndricas WZCylDef - Define una zona mundo con forma
cilndrica en la pgina 782
Definicin de una zona mundo para las WZHomeJointDef - Define una zona mundo para
posiciones iniciales de los ejes
las posiciones iniciales de los ejes en la pgina 795
Definicin de una zona mundo para las WZLimJointDef - Define una zona mundo para la
posiciones lmite de los ejes
limitacin de los ejes en la pgina 799
Activacin de salidas digitales basadas WZDOSet - Activacin de salidas digitales basaen zonas mundo
das en zonas mundo en la pgina 787

3HAC16581-5 Revisin: L

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

1 Instrucciones
1.259 WZSphDef - Define una zona mundo con forma esfrica

1.259 WZSphDef - Define una zona mundo con forma esfrica


Utilizacin
WZSphDef (World Zone Sphere Definition) se usa para definir una zona mundo
con la forma de una esfera.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin WZSphDef.
Ejemplo 1

Z
Y

C1
R1 (mn. 5 mm)

Sistema de coordenadas mundo.

xx0500002207_es

kfjglkjfglkwejlrkgj
lwfljgwelkg
VAR shapedata volume;
CONST pos C1:=[300,300,200];
CONST num R1:=200;
...
WZSphDef \Inside, volume, C1, R1;

Se define una esfera con el nombre volume, con el centro C1 y el radio R1.
Argumentos
WZSphDef [\Inside] | [\Outside] Shape CentrePoint Radius

[\Inside]
Tipo de dato: switch
Define el volumen que contiene la esfera.
[\Outside]
Tipo de dato: switch
Define el volumen que queda fuera de la esfera (el volumen inverso).
Es imprescindible especificar uno de los argumentos \Inside o \Outside.
Shape
Tipo de dato: shapedata
Una variable para el almacenamiento del volumen definido (datos privados del
sistema).
Contina en la pgina siguiente
806

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.259 WZSphDef - Define una zona mundo con forma esfrica
Continuacin
CentrePoint
Tipo de dato: pos
La posicin (x,y,z) en mm que define el centro de la esfera.
Radius
Tipo de dato: num
El radio de la esfera, en mm.
Ejecucin de programas
La definicin de la esfera se almacena en la variable de tipo shapedata (el
argumento Shape), para su uso futuro en instrucciones WZLimSup o WZDOSet.
Limitaciones
Si el robot se usa para apuntar hacia fuera de CentrePoint, el objeto de trabajo
wobj0 debe estar activo (se usa el componente trans de robtarget por ejemplo
p1.trans como argumento).
Sintaxis
WZSphDef
[[\Inside] | [\Outside],]
[Shape:=]<variable (VAR) of shapedata>,
[CentrePoint:=]<expression (IN) of pos>,
[Radius:=]<expression (IN) of num>;

Informacin relacionada
Para obtener ms informacin sobre Consulte
Zonas mundo

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Zonas
mundo

Forma de las zonas mundo

shapedata - Datos de forma de zonas mundo en la


pgina 1270

Definicin de zonas mundo en forma WZBoxDef - Define una zona mundo con forma de
de prisma
prisma en la pgina 780
Definicin de zonas mundo cilndricas WZCylDef - Define una zona mundo con forma cilndrica en la pgina 782
Definicin de una zona mundo para
las posiciones iniciales de los ejes

WZHomeJointDef - Define una zona mundo para


las posiciones iniciales de los ejes en la pgina 795

Definicin de una zona mundo para


las posiciones lmite de los ejes

WZLimJointDef - Define una zona mundo para la limitacin de los ejes en la pgina 799

Activacin de la supervisin de lmites WZLimSup - Activa la supervisin de lmites de las


de las zonas mundo
zonas mundo en la pgina 803
Activacin de salidas digitales basa- WZDOSet - Activacin de salidas digitales basadas
das en zonas mundo
en zonas mundo en la pgina 787

3HAC16581-5 Revisin: L

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

Esta pgina se ha dejado vaca intencionadamente

2 Funciones
2.1 Abs - Obtiene el valor absoluto

2 Funciones
2.1 Abs - Obtiene el valor absoluto
Utilizacin
Abs se utiliza para obtener el valor absoluto, es decir, un valor positivo a partir de
un dato numrico.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Abs.
Consulte tambin Ms ejemplos en la pgina 809.
Ejemplo 1
reg1 := Abs(reg2);

Se asigna a Reg1 el valor absoluto de reg2.


Valor de retorno
Tipo de dato: num
El valor absoluto, es decir, un valor numrico positivo, por ejemplo:
Valor de entrada

Valor devuelto

-3

-2.53

2.53

Argumentos
Abs (Value)

Value
Tipo de dato: num
El valor de entrada.
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin Abs.
Ejemplo 1
TPReadNum no_of_parts, "How many parts should be produced? ";
no_of_parts := Abs(no_of_parts);

Se pregunta al operador cuntas piezas deben producirse. Para garantizar que el


valor sea mayor que cero, se convierte en positivo el valor introducido por el
operador.
Sintaxis
Abs (
[ Value := ] < expression (IN) of num >)

Una funcin con un valor de retorno del tipo de dato num.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.1 Abs - Obtiene el valor absoluto
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

810

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.2 AbsDnum - Obtiene el valor absoluto de un dnum

2.2 AbsDnum - Obtiene el valor absoluto de un dnum


Utilizacin
AbsDnum se utiliza para obtener el valor absoluto, es decir, un valor positivo a
partir de un valor numrico dnum.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin AbsDnum.
Consulte tambin Ms ejemplos en la pgina 811.
Ejemplo 1
VAR dnum value1;
VAR dnum value2:=-20000000;
value1 := AbsDnum(value2);

Se asigna a Value1 el valor absoluto de value2.


Valor de retorno
Tipo de dato: dnum
El valor absoluto, es decir, un valor numrico positivo. Por ejemplo:
Valor de entrada

Valor devuelto

-3

-3

-2.53

2.53

-4503599627370496

4503599627370496

Argumentos
AbsDnum (Value)

Value
Tipo de dato: dnum
El valor de entrada.
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin AbsDnum.
Ejemplo 1
TPReadDnum no_of_parts, "How many parts should be produced? ";
no_of_parts := AbsDnum(no_of_parts);

Se pregunta al operador cuntas piezas deben producirse. Para garantizar que el


valor sea mayor que cero, se convierte en positivo el valor introducido por el
operador.
Sintaxis
AbsDnum '('
[ Value ':=' ] < expression (IN) of dnum > ')'

Una funcin con un valor de retorno del tipo de dato dnum.


Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.2 AbsDnum - Obtiene el valor absoluto de un dnum
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Matemticas

812

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.3 ACos - Calcula el valor de arco coseno

2.3 ACos - Calcula el valor de arco coseno


Utilizacin
ACos (Arc Cosine) se utiliza para calcular el valor de arco coseno.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ACos.
Ejemplo 1
VAR num angle;
VAR num value;
...
...
angle := ACos(value);

angle obtiene el valor de arco coseno de value.


Valor de retorno
Tipo de dato: num
El valor del arco coseno, expresado en grados, en el rango [0, 180].
Argumentos
ACos (Value)

Value
Tipo de dato: num
El valor del argumento debe estar en el rango [-1, 1].
Limitaciones
La ejecucin de la funcin Acos(x) genera un error si x est fuera del rango [-1,
1].
Sintaxis
Acos(
[Value :=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

3HAC16581-5 Revisin: L

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

2 Funciones
2.4 AOutput - Lee el valor de una seal analgica de salida

2.4 AOutput - Lee el valor de una seal analgica de salida


Utilizacin
AOutput se utiliza para obtener el valor actual de una seal analgica de salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin AOutput.
Ejemplo 1
IF AOutput(ao4) > 5 THEN ...

Si el valor actual de la seal ao4 es mayor que 5, entonces ...


Valor de retorno
Tipo de dato: num
El valor actual de la seal.
Al valor actual se le aplica una escala (acorde con los parmetros del sistema)
antes de leerlo desde el programa de RAPID. En la figura siguiente se muestra un
diagrama de cmo se ajustan los valores de las seales analgicas a una escala.

xx0500002408_en

Argumentos
AOutput (Signal)

Signal
Tipo de dato: signalao
El nombre de la salida analgica que debe leerse.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT si se ha perdido el contacto con la unidad.

Contina en la pgina siguiente


814

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.4 AOutput - Lee el valor de una seal analgica de salida
Continuacin
Sintaxis
AOutput (
[ Signal := ] < variable (VAR) of signalao > )

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Establecimiento de una seal anal- SetAO - Cambia el valor de una seal analgica de
gica de salida
salida en la pgina 460
Instrucciones de entrada/salida

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Seales de entrada y
salida

Funcionalidad de entrada/salida en Technical reference manual - RAPID overview, secgeneral


cin Principios de movimiento y E/S - Principios de
E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

3HAC16581-5 Revisin: L

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

2 Funciones
2.5 ArgName - Obtiene el nombre de un argumento

2.5 ArgName - Obtiene el nombre de un argumento


Utilizacin
ArgName (Argument Name) se utiliza para obtener el nombre del objeto de datos
original del argumento o el dato actual.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ArgName.
Consulte tambin Ms ejemplos en la pgina 817.
Ejemplo 1
VAR num chales :=5;
...
proc1 chales;
PROC proc1 (num par1)
VAR string name;
...
name:=ArgName(par1);
TPWrite "Argument name "+name+" with value "\Num:=par1;
ENDPROC

La variable name recibe el valor de cadena "chales". En el FlexPendant se


escribe la cadena siguiente: "Nombre de argumento chales con el valor 5".
Valor de retorno
Tipo de dato: string
El nombre del objeto de datos original.
Argumentos
ArgName (Parameter [\ErrorNumber])

Parameter
Tipo de dato: anytype
El identificador formal del parmetro (en la rutina en la que se encuentra ArgName)
o la identidad de los datos.
Puede usar todos los tipos de datos con estructura atmica o de registro,
componente de registro, matriz o elemento de matriz.
ErrorNumber
Tipo de dato: errnum
Una variable (antes de usarla es cambiada a 0 por el sistema) que contendr el
cdigo de error si el argumento es un valor de expresin, el argumento no est
presente o el argumento es del tipo switch. Si se omite esta variable opcional, se
ejecuta el gestor de errores.

Contina en la pgina siguiente


816

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.5 ArgName - Obtiene el nombre de un argumento
Continuacin
Ejecucin de programas
La funcin devuelve el nombre del objeto de datos original de todo un objeto de
tipo constante, variable o variable persistente. El objeto de datos original puede
ser global, local del mdulo de programa o local de una rutina (se aplican las reglas
de mbito habituales de RAPID).
Si forma parte de un objeto de datos, se devuelve el nombre del objeto de datos
en su conjunto.
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin ArgName.
Conversin de un identificador en una cadena
Esta funcin tambin puede usarse para convertir un identificador en un valor
string, especificando el identificador en el argumento Parameter de cualquier
objeto de datos global, local del mdulo o local del mbito de la rutina:
VAR num chales :=5;
...
proc1;
PROC proc1 ()
VAR string name;
...
name:=ArgName(chales);
TPWrite "Global data object "+name+" has value "\Num:=chales;
ENDPROC

La variable name recibe el valor de cadena "chales". En el FlexPendant se


escribe la cadena siguiente: "El objeto de datos global chales tiene el valor 5".
Llamada a la rutina en varios pasos
Recuerde que la funcin devuelve el nombre original del objeto de datos:
VAR num chales :=5;
...
proc1 chales;
...
PROC proc1 (num parameter1)
...
proc2 parameter1;
...
ENDPROC
PROC proc2 (num par1)
VAR string name;
...
name:=ArgName(par1);
TPWrite "Original data object name "+name+" with value"
\Num:=par1;
ENDPROC

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.5 ArgName - Obtiene el nombre de un argumento
Continuacin
La variable name recibe el valor de cadena "chales". En el FlexPendant se
escribe la cadena siguiente: "Nombre original del objeto de datos chales con el
valor 5".
Suprimir la ejecucin en el gestor de errores
PROC main()
VAR string mystring:="DUMMY";
proc1 mystring;
proc1 "This is a test";
...
ENDPROC
PROC proc1 (string par1)
VAR string name;
VAR errnum myerrnum;
name := ArgName(par1 \ErrorNumber:=myerrnum);
IF myerrnum=ERR_ARGNAME THEN
TPWrite "The argument par1 is an expression value";
TPWrite "The name of the argument can not be evaluated";
ELSE
TPWrite "The name on the argument is "+name;
ENDIF
ENDPROC

La variable name recibe el valor de cadena "mystring" al realizarse la primera


llamada a proc1. Al realizarse la segunda llamada a proc1, se asigna una cadena
vaca al nombre. En el FlexPendant se escribe la siguiente cadena: "The argument
par1 is an expression value" y "The name of the argument can not
be evaluated".
Gestin de errores
Si se produce uno de los errores siguientes, la variable de sistema ERRNO cambia
a ERR_ARGNAME:

El argumento es un valor de expresin.

El argumento no est presente.

El argumento es del tipo switch.

A continuacin, este error puede ser gestionado en el gestor de errores.


Sintaxis
ArgName (
[ Parameter:= ] < reference (REF) of any type> )
[\ErrorNumber:= <var or pers (INOUT) of errnum>])

Una funcin con un valor de retorno del tipo de dato string.

Contina en la pgina siguiente


818

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.5 ArgName - Obtiene el nombre de un argumento
Continuacin
Informacin relacionada
Para obtener ms informacin sobre Consulte
Funciones para cadenas de caracteres Technical reference manual - RAPID overview,
seccin Resumen sobre RAPID - Funciones para
cadenas de caracteres
Definicin de cadena de caracteres

string - Cadenas de caracteres en la pgina 1287

Valores de cadena de caracteres

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Elementos bsicos

3HAC16581-5 Revisin: L

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

2 Funciones
2.6 ASin - Calcula el valor del arco seno

2.6 ASin - Calcula el valor del arco seno


Utilizacin
ASin (Arc Sine) se utiliza para calcular el valor de arco seno.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ASin.
Ejemplo 1
VAR num angle;
VAR num value;
...
...
angle := ASin(value);
angle will get the arc sine value of value

Valor de retorno
Tipo de dato: num
El valor del arco seno, expresado en grados, en el rango [-90, 90].
Argumentos
ASin (Value)

Value
Tipo de dato: num
El valor del argumento debe estar en el rango [-1, 1].
Limitaciones
La ejecucin de la funcin ASin(x) genera un error si x est fuera del rango [-1,
1].
Sintaxis
ASin(
[Value :=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

820

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.7 ATan - Calcula el valor de arco tangente

2.7 ATan - Calcula el valor de arco tangente


Utilizacin
ATan (Arc Tangent) se utiliza para calcular el valor de arco tangente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ATan.
Ejemplo 1
VAR num angle;
VAR num value;
...
...
angle := ATan(value);

angle obtiene el valor de arco tangente de value.


Valor de retorno
Tipo de dato: num
El valor del arco tangente, expresado en grados, en el rango [-90, 90].
Argumentos
ATan (Value)

Value
Tipo de dato: num
El valor del argumento.
Sintaxis
ATan(
[Value :=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

Arco tangente con un valor devuelto en el ATan2 - Calcula el valor de arco tangente 2 en
rango [, 180]
la pgina 822

3HAC16581-5 Revisin: L

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

2 Funciones
2.8 ATan2 - Calcula el valor de arco tangente 2

2.8 ATan2 - Calcula el valor de arco tangente 2


Utilizacin
ATan2 (Arc Tangent2) se utiliza para calcular el valor del arco tangente 2.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ATan2.
Ejemplo 1
VAR num angle;
VAR num x_value;
VAR num y_value;
...
...
angle := ATan2(y_value, x_value);

angle obtiene el valor de arco tangente de y_value/x_value.


Valor de retorno
Tipo de dato: num
El valor del arco tangente, expresado en grados, en el rango [-180, 180]. El valor
ser igual a ATan(y/x), pero en el rango [-180, 180], ya que la funcin utiliza el
signo de los dos argumentos para determinar el cuadrante del valor de retorno.
Argumentos
ATan2 (Y X)

Y
Tipo de dato: num
El valor del argumento numerador.
X
Tipo de dato: num
El valor del argumento denominador.
Sintaxis
ATan2(
[Y :=] <expression (IN) of num> ,
[X :=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

Arco tangente con un solo argumento

ATan - Calcula el valor de arco tangente en la


pgina 821

822

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.9 BitAnd - AND lgico bit a bit - Operacin con datos de byte

2.9 BitAnd - AND lgico bit a bit - Operacin con datos de byte
Utilizacin
BitAnd se utiliza para ejecutar una operacin lgica bit a bit AND en tipos de datos
byte.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin BitAnd.
Ejemplo 1
VAR byte data1 := 38;
VAR byte data2 := 34;
VAR byte data3;
data3 := BitAnd(data1, data2);

Se ejecuta la operacin lgica AND bit a bit (consulte la figura siguiente) con los
datos data1 y data2. El resultado se devuelve en data3 (representacin entera).

xx0500002454

Valor de retorno
Tipo de dato: byte
El resultado de la operacin lgica AND bit a bit en representacin entera.
Argumentos
BitAnd (BitData1 BitData2)

BitData1
Tipo de dato: byte
El dato de bit 1, en representacin entera.
BitData2
Tipo de dato: byte
El dato de bit 2, en representacin entera.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.9 BitAnd - AND lgico bit a bit - Operacin con datos de byte
Continuacin
Limitaciones
El rango de los tipos de datos byte es de 0 a 255.
Sintaxis
BitAnd(
[BitData1 :=] <expression (IN) of byte> ,
[BitData2 :=] <expression (IN) of byte>
)

Una funcin con un valor de retorno del tipo de dato byte.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

OR lgico bit a bit - Operacin con datos de BitOr - OR lgico bit a bit - Operacin con
byte
datos de byte en la pgina 831
XOR lgico bit a bit - Operacin con datos de BitXOr - XOR lgico bit a bit - Operacin con
byte
datos de byte en la pgina 835
NEGACIN lgica bit a bit - Operacin con
datos de byte

BitNeg - NEGACIN lgica bit a bit - Operacin con datos de byte en la pgina 829

Otras funciones de bits

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Funciones de bits

824

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.10 BitCheck - Comprueba si un bit especificado de un dato de byte est activado

2.10 BitCheck - Comprueba si un bit especificado de un dato de byte est activado


Utilizacin
BitCheck se utiliza para comprobar si un bit especificado de un dato de byte
definido tiene el valor 1.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin BitCheck.
Ejemplo 1
CONST num parity_bit := 8;
VAR byte data1 := 130;
IF BitCheck(data1, parity_bit) = TRUE THEN
...
ELSE
...
ENDIF

BitPos 1

BitPos 8

Se comprueba el bit nmero 8 (parity_bit) de la variable data1. Es decir, si el


bit especificado tiene el valor 1 en la variable data1, esta funcin devolver TRUE.
La comprobacin de bits de un dato de tipo byte se muestra en la figura siguiente.

La posicin de bit 8 tiene el valor 1.

VAR byte data1 := 130;


Valor de retorno de BitCheck... : TRUE

xx0500002442_es

Valor de retorno
Tipo de dato: bool
TRUE si el bit especificado tiene el valor 1, FALSE si el bit especificado tiene el
valor 0.
Argumentos
BitCheck (BitData BitPos)

BitData
Tipo de dato: byte
Los datos de bits a comprobar, en representacin entera.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.10 BitCheck - Comprueba si un bit especificado de un dato de byte est activado
Continuacin
BitPos
Bit Position
Tipo de dato: num
El valor de la posicin de bit (de 1 a 8) de BitData a comprobar.
Limitaciones
El rango de los tipos de datos byte es de 0 a 255 en decimal.
Las posiciones de bit vlidas son de la 1 a la 8.
Sintaxis
BitCheck(
[BitData :=] <expression (IN) of byte> ,
[BitPos :=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Activacin de un bit especfico de un BitSet - Activa un bit especfico de un dato de byte
dato de byte
en la pgina 30
Desactivacin de un bit especfico de BitClear - Desactiva un bit especfico de un dato de
un dato de byte
byte en la pgina 28
Otras funciones de bits

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Funciones de bits

826

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.11 BitLSh - DESPLAZAMIENTO A LA IZQUIERDA lgico bit a bit - Operacin de byte

2.11 BitLSh - DESPLAZAMIENTO A LA IZQUIERDA lgico bit a bit - Operacin de


byte
Utilizacin
BitLSh (Bit Left Shift) se utiliza para ejecutar una operacin lgica de
DESPLAZAMIENTO A LA IZQUIERDA bit a bit en tipos de datos byte.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin BitLSh.
Ejemplo 1
VAR num left_shift := 3;
VAR byte data1 := 38;
VAR byte data2;
data2 := BitLSh(data1, left_shift);

Se ejecuta la operacin lgica DESPLAZAMIENTO A LA IZQUIERDA bit a bit con


el dato data1, con 3 pasos (left_shift) de desplazamiento hacia la izquierda.
El resultado se devuelve en data2 (representacin entera).
En la figura siguiente se muestra la operacin DESPLAZAMIENTO A LA IZQUIERDA
lgico bit a bit.

xx0500002457

Valor de retorno
Tipo de dato: byte
El resultado de la operacin lgica DESPLAZAMIENTO A LA IZQUIERDA bit a bit
en representacin entera.
Las posiciones de bit de la derecha se rellenan con bits 0.
Argumentos
BitLSh (BitData ShiftSteps)

BitData
Tipo de dato: byte
Los datos de bits a desplazar, en representacin entera.
ShiftSteps
Tipo de dato: num
El nmero de desplazamientos lgicos (de 1 a 8) que se desea ejecutar.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.11 BitLSh - DESPLAZAMIENTO A LA IZQUIERDA lgico bit a bit - Operacin de byte
Continuacin
Limitaciones
El rango de los tipos de datos byte es de 0 a 255.
El valor vlido del argumento ShiftSteps es un nmero de 1 a 8, lo que
corresponde a un byte.
Sintaxis
BitLSh(
[BitData :=] <expression (IN) of byte> ,
[ShiftSteps :=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato byte.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

DESPLAZAMIENTO A LA DERECHA l- BitRSh - DESPLAZAMIENTO A LA DERECHA


gico bit a bit - Operacin con datos de bit lgico bit a bit - Operacin de byte en la pgina 833
Otras funciones de bits

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Funciones de
bits

828

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.12 BitNeg - NEGACIN lgica bit a bit - Operacin con datos de byte

2.12 BitNeg - NEGACIN lgica bit a bit - Operacin con datos de byte
Utilizacin
BitNeg (Bit Negation) se utiliza para ejecutar una operacin lgica NEGATION bit a bit (complemento de uno) en los tipos de datos byte.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin BitNeg.
Ejemplo 1
VAR byte data1 := 38;
VAR byte data2;
data2 := BitNeg(data1);

Se ejecuta la operacin lgica NEGATION bit a bit (consulte la figura siguiente) con
los datos data1. El resultado se devuelve en data2 (representacin entera).

xx0500002456

Valor de retorno
Tipo de dato: byte
El resultado de la operacin lgica NEGATION bit a bit en representacin entera.
Argumentos
BitNeg (BitData)

BitData
Tipo de dato: byte
El dato de byte, en representacin entera.
Limitaciones
El rango de los tipos de datos byte es de 0 a 255.
Sintaxis
BitNeg(
[BitData :=] <expression (IN) of byte>
)

Una funcin con un valor de retorno del tipo de dato byte.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.12 BitNeg - NEGACIN lgica bit a bit - Operacin con datos de byte
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

AND lgico bit a bit - Operacin con datos de BitAnd - AND lgico bit a bit - Operacin con
byte
datos de byte en la pgina 823
OR lgico bit a bit - Operacin con datos de BitOr - OR lgico bit a bit - Operacin con
byte
datos de byte en la pgina 831
XOR lgico bit a bit - Operacin con datos de BitXOr - XOR lgico bit a bit - Operacin con
byte
datos de byte en la pgina 835
Otras funciones de bits

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Funciones de bits

830

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.13 BitOr - OR lgico bit a bit - Operacin con datos de byte

2.13 BitOr - OR lgico bit a bit - Operacin con datos de byte


Utilizacin
BitOr (Bit inclusive Or) se utiliza para ejecutar una operacin lgica OR bit a bit
en los tipos de datos byte.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin BitOr.
Ejemplo 1
VAR byte data1 := 39;
VAR byte data2 := 162;
VAR byte data3;
data3 := BitOr(data1, data2);

Se ejecuta la operacin lgica OR bit a bit con los datos data1 y data2. El
resultado se devuelve en data3 (representacin entera).
En la figura siguiente se muestra la operacin OR lgico bit a bit.

xx0500002458

Valor de retorno
Tipo de dato: byte
El resultado de la operacin lgica OR bit a bit en representacin entera.
Argumentos
BitOr (BitData1 BitData2)

BitData1
Tipo de dato: byte
El dato de bit 1, en representacin entera.
BitData2
Tipo de dato: byte
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.13 BitOr - OR lgico bit a bit - Operacin con datos de byte
Continuacin
El dato de bit 2, en representacin entera.
Limitaciones
El rango de los tipos de datos byte es de 0 a 255.
Sintaxis
BitOr(
[BitData1 :=] <expression (IN) of byte> ,
[BitData2 :=] <expression (IN) of byte>
)

Una funcin con un valor de retorno del tipo de dato byte.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

AND lgico bit a bit - Operacin con datos BitAnd - AND lgico bit a bit - Operacin con
de byte
datos de byte en la pgina 823
XOR lgico bit a bit - Operacin con datos BitXOr - XOR lgico bit a bit - Operacin con
de byte
datos de byte en la pgina 835
NEGACIN lgica bit a bit - Operacin
con datos de byte

BitNeg - NEGACIN lgica bit a bit - Operacin


con datos de byte en la pgina 829

Otras funciones de bits

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Funciones de
bits

832

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.14 BitRSh - DESPLAZAMIENTO A LA DERECHA lgico bit a bit - Operacin de byte

2.14 BitRSh - DESPLAZAMIENTO A LA DERECHA lgico bit a bit - Operacin de


byte
Utilizacin
BitRSh (Bit Right Shift) se utiliza para ejecutar una operacin lgica de
DESPLAZAMIENTO A LA DERECHA bit a bit en tipos de datos byte.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin BitRSh.
Ejemplo 1
VAR num right_shift := 3;
VAR byte data1 := 38;
VAR byte data2;
data2 := BitRSh(data1, right_shift);

Se ejecuta la operacin lgica DESPLAZAMIENTO A LA DERECHA bit a bit con


el dato data1, con 3 pasos (right_shift) de desplazamiento hacia la derecha.
El resultado se devuelve en data2 (representacin entera)
En la figura siguiente se muestra la operacin DESPLAZAMIENTO A LA DERECHA
lgico bit a bit.

xx0500002455

Valor de retorno
Tipo de dato: byte
El resultado de la operacin lgica DESPLAZAMIENTO A LA DERECHA bit a bit
en representacin entera.
Las posiciones de bit de la izquierda se rellenan con bits 0.
Argumentos
BitRSh (BitData ShiftSteps)

BitData
Tipo de dato: byte
Los datos de bits a desplazar, en representacin entera.
ShiftSteps
Tipo de dato: num
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.14 BitRSh - DESPLAZAMIENTO A LA DERECHA lgico bit a bit - Operacin de byte
Continuacin
El nmero de desplazamientos lgicos (de 1 a 8) que se desea ejecutar.
Limitaciones
El rango de los tipos de datos byte es de 0 a 255.
El valor vlido del argumento ShiftSteps es un nmero de 1 a 8, lo que
corresponde a un byte.
Sintaxis
BitRSh(
[BitData :=] <expression (IN) of byte>,
[ShiftSteps:=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato byte.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

DESPLAZAMIENTO A LA IZQUIERDA l- BitLSh - DESPLAZAMIENTO A LA IZQUIERDA


gico bit a bit - Operacin con datos de bit lgico bit a bit - Operacin de byte en la pgina 827
Otras funciones de bits

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Funciones de
bits

834

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.15 BitXOr - XOR lgico bit a bit - Operacin con datos de byte

2.15 BitXOr - XOR lgico bit a bit - Operacin con datos de byte
Utilizacin
BitXOr (Bit eXclusive Or) se utiliza para ejecutar una operacin lgica bit a bit
XOR en tipos de datos byte.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin BitXOr.
Ejemplo 1
VAR byte data1 := 39;
VAR byte data2 := 162;
VAR byte data3;
data3 := BitXOr(data1, data2);

Se ejecuta la operacin lgica XOR bit a bit con los datos data1 y data2. El
resultado se devuelve en data3 (representacin entera).
En la figura siguiente se muestra la operacin XOR lgico bit a bit.

xx0500002459

Valor de retorno
Tipo de dato: byte
El resultado de la operacin lgica XOR bit a bit en representacin entera.
Argumentos
BitXOr (BitData1 BitData2)

BitData1
Tipo de dato: byte
El dato de bit 1, en representacin entera.
BitData2
Tipo de dato: byte
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.15 BitXOr - XOR lgico bit a bit - Operacin con datos de byte
Continuacin
El dato de bit 2, en representacin entera.
Limitaciones
El rango de los tipos de datos byte es de 0 a 255.
Sintaxis
BitXOr(
[BitData1 :=] <expression (IN) of byte> ,
[BitData2 :=] <expression (IN) of byte>
)

Una funcin con un valor de retorno del tipo de dato byte.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

AND lgico bit a bit - Operacin con datos BitAnd - AND lgico bit a bit - Operacin con
de byte
datos de byte en la pgina 823
OR lgico bit a bit - Operacin con datos BitOr - OR lgico bit a bit - Operacin con datos
de byte
de byte en la pgina 831
NEGACIN lgica bit a bit - Operacin
con datos de byte

BitNeg - NEGACIN lgica bit a bit - Operacin


con datos de byte en la pgina 829

Otras funciones de bits

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Funciones de
bits

836

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.16 ByteToStr - Convierte un byte en un dato de cadena de caracteres

2.16 ByteToStr - Convierte un byte en un dato de cadena de caracteres


Utilizacin
ByteToStr(Byte To String) se utiliza para convertir un byte a un dato del tipo
string con un formato de datos de byte definido.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ByteToStr.
Ejemplo 1
VAR string con_data_buffer{5};
VAR byte data1 := 122;
con_data_buffer{1} := ByteToStr(data1);

El contenido del componente con_data_buffer{1} de la matriz ser "122" tras


la funcin ByteToStr ....
con_data_buffer{2} := ByteToStr(data1\Hex);

El contenido del componente con_data_buffer{2} de la matriz ser "7A" tras


la funcin ByteToStr ....
con_data_buffer{3} := ByteToStr(data1\Okt);

El contenido del componente con_data_buffer{3} de la matriz ser "172" tras


la funcin ByteToStr ....
con_data_buffer{4} := ByteToStr(data1\Bin);

El contenido del componente con_data_buffer{4} de la matriz ser 01111010


despus de la funcin ByteToStr ....
con_data_buffer{5} := ByteToStr(data1\Char);

El contenido del componente con_data_buffer{5} de la matriz ser "z" tras la


funcin ByteToStr ....
Valor de retorno
Tipo de dato: string
El resultado de la operacin de conversin, con el formato siguiente:
Formato

Caracteres

Longitud de cade- Rango


na

Dec .....:

0 - 9

1-3

"0" - "255"

Hex .....:

0 - 9, A -F

"00" - "FF"

Oct ......:

0 - 7

"000" - "377"

Bin ......:

0 - 1

"00000000" - "11111111"

Char ....:

Cualquier carcter ASCII 1


(*)

Un carcter ASCII

(*) Si es un carcter ASCII no imprimible, el formato de retorno ser el formato de


cdigo de carcter de RAPID (por ejemplo \07 para el carcter de control BEL).
Argumentos
ByteToStr (BitData [\Hex] | [\Okt] | [\Bin] | [\Char])

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.16 ByteToStr - Convierte un byte en un dato de cadena de caracteres
Continuacin
BitData
Tipo de dato: byte
Los datos de bits a convertir.
Si se omite el argumento modificador opcional, los datos se convierten al formato
decimal (Dec).
[\Hex]
Hexadecimal
Tipo de dato: switch
Los datos se convierten al formato hexadecimal.
[\Okt]
Octal
Tipo de dato: switch
Los datos se convierten al formato octal.
[\Bin]
Binary
Tipo de dato: switch
Los datos se convierten al formato binary.
[\Char]
Character
Tipo de dato: switch
Los datos se convierten al formato de carcter ASCII.
Limitaciones
El rango de los tipos de datos byte es de 0 a 255 en decimal.
Sintaxis
ByteToStr(
[BitData :=] <expression (IN) of byte>
[\ Hex ] | [\ Okt] | [\ Bin] | [\ Char]
)

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin Consulte
sobre
Conversin de una cadena de
caracteres a datos de byte

StrToByte - Convierte una cadena en un byte en la pgina 1083

Otras funciones de bits (byte)

Technical reference manual - RAPID overview, seccin


Resumen sobre RAPID - Matemticas - Funciones de
bits

Otras funciones de cadenas de


caracteres

Technical reference manual - RAPID overview, seccin


Resumen sobre RAPID - Funciones para cadenas de
caracteres

838

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.17 CalcJointT - Calcula los ngulos de las articulaciones a partir de un robtarget

2.17 CalcJointT - Calcula los ngulos de las articulaciones a partir de un robtarget


Utilizacin
CalcJointT (Calculate Joint Target) se utiliza para calcular ngulos de los ejes
del robot y de los ejes externos a partir de datos robtarget especificados.
Los datos de entrada robtarget deben especificarse con el mismo sistema de
coordenadas que se especifique con argumento en Tool, WObj, en el
desplazamiento de programa activo en el momento de la ejecucin (ProgDisp) y
en el offset de los ejes externos (EOffs)).. Los datos jointtarget devueltos se
expresan en el sistema de coordenadas de calibracin.
Si una aplicacin MultiMove de tipo semicoordinado o de modo sincronizado
coordinado con el objeto de trabajo coordinado movido por alguna unidad mecnica
situada en otra tarea de programa, la funcin CalcJointT puede usarse si:

Es adecuado que la posicin actual del objeto de trabajo coordinado movido


por la unidad mecnica se use en el clculo (base de coordenadas del usuario
actual). Todos los dems datos sern capturados desde el programa de
RAPID.

La unidad mecnica situada en otra tarea de programa est en reposo.

Se usa el argumento \UseCurWObjPos.

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin CalcJointT.
Ejemplo 1
VAR jointtarget jointpos1;
CONST robtarget p1 := [...];
jointpos1 := CalcJointT(p1, tool1 \WObj:=wobj1);

El valor de jointtarget correspondiente al valor de robtarget p1 se


almacena en jointpos1. La herramienta tool1 y el objeto de trabajo wobj1 se
utilizan para calcular los ngulos de los ejes jointpos1.
Ejemplo 2
VAR jointtarget jointpos2;
CONST robtarget p2 := [...];
jointpos2 := CalcJointT(\UseCurWObjPos, p2, tool2 \WObj:=orb1);

El valor de jointtarget correspondiente al valor de robtarget p2 se


almacena en jointpos2. La herramienta tool 2 y el objeto de trabajo orb1 se
utilizan para calcular los ngulos de los ejes jointpos2. Se usa para el clculo
la posicin actual del manipulador orb1 en reposo, no situado en la misma tarea
de programa que el robot del TCP.
Valor de retorno
Tipo de dato: jointtarget
Los ngulos en grados de los ejes del robot en el lado del brazo.
Los valores de los ejes externos, en mm para los ejes lineales y en grados para
los ejes de rotacin.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.17 CalcJointT - Calcula los ngulos de las articulaciones a partir de un robtarget
Continuacin
Los valores devueltos estn siempre relacionados con la posicin de calibracin.
Argumentos
CalcJointT ( [\UseCurWObjPos] Rob_target Tool [\WObj] )

[\UseCurWObjPos]
Tipo de dato: switch
Se usa en el clculo la posicin actual del objeto de trabajo coordinado movido
por la unidad mecnica en otra tarea (base de coordenadas del usuario actual).
Todos los dems datos sern capturados desde el programa de RAPID.
Rob_target
Tipo de dato: robtarget
La posicin del robot y de los ejes externos en el sistema de coordenadas ms
externo respecto de la herramienta y el objeto de trabajo especificados y respecto
del desplazamiento de programa activo en el momento de la ejecucin (ProgDisp)
y/o el offset de los ejes externos (EOffs).
Tool
Tipo de dato: tooldata
La herramienta utilizada para el clculo de los ngulos de los ejes del robot.
[\WObj]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin del robot.
Si se omite este argumento, se utiliza el objeto de trabajo wobj0. Este argumento
debe especificarse si se utiliza una herramienta estacionaria, ejes externos
coordinados o un transportador.
Ejecucin de programas
El valor jointtarget devuelto se calcula a partir del valor de entrada robtarget.
Si se usa el argumento \UseCurWObjPos, tambin se usa la posicin actual de
la unidad mecnica que controla la base de coordenadas del usuario. Para calcular
los ngulos de los ejes del robot, se tienen en cuenta Tool, WObj (incluida la base
coordinada de coordenadas del usuario) y el ProgDisp activo en el momento de
la ejecucin. Para calcular la posicin de los ejes externos en el momento de la
ejecucin, se tiene en cuenta el EOffs activo.
El clculo selecciona siempre la configuracin del robot acorde con los datos de
configuracin especificados en los datos de entrada robtarget. Ni la instruccin
ConfL ni ConfJ afectan a este principio de clculo. Si se utiliza la singularidad de
la mueca, se cambia el eje 4 a 0 grados.
Si hay cualquier desplazamiento de programa activo (ProgDisp) y/o se almacena
un desplazamiento de eje externo (EOffs) en el momento de almacenar los datos
robtarget, es necesario que el mismo desplazamiento de programa y/o el mismo
offset de eje externo est activo cuando se ejecuta CalcJointT.
Contina en la pgina siguiente
840

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.17 CalcJointT - Calcula los ngulos de las articulaciones a partir de un robtarget
Continuacin
Limitacin
Si se utiliza una base de coordenadas, la unidad coordinada debe estar activada
antes de usar CalcJointT.
La unidad mecnica que controla la base de coordenadas del usuario en el objeto
de trabajo debe estar disponible normalmente en la misma tarea de programa que
el robot del TCP que ejecuta CalcJointT.
Normalmente, CalcJointT utiliza robtarget, tooldata y wobjdata desde el
programa de RAPID para calcular jointtarget. En el caso de los objetos de
trabajo coordinados, la posicin de la unidad mecnica se indica como una posicin
de ejes externos en el robtarget. ste no es el caso si la unidad mecnica es
controlada por otra tarea de programa (sistema MultiMove) o si la unidad mecnica
no est controlada por el sistema de control (transportador). En el caso del sistema
MultiMove, pero no en el caso del transportador, es posible usar el argumento
\UseCurWObjPos si la unidad mecnica est en reposo en el momento de la
ejecucin de CalCJointT.
Gestin de errores
Si al menos uno de los ejes est fuera del rea de trabajo o se superan los lmites
en al menos un eje acoplado, la variable de sistema ERRNO cambia a ERR_ROBLIMIT
y la ejecucin contina en el gestor de errores.
Si la unidad mecnica que controla el objeto de trabajo (base de coordenadas del
usuario) no est en reposo en el momento de la ejecucin de CalJointT
\UseCurWobjPos, la variable de sistema ERRNO cambia a ERR_WOBJ_MOVING y
la ejecucin contina en el gestor de errores.
A partir de ese momento, el gestor de errores puede controlar estas situaciones.
Sintaxis
CalcJointT '('
[ '\'UseCurWObjPos ',']
[ Rob_target ':='] <expression (IN) of robtarget> ','
[ Tool ':=' ] <persistent (PERS) of tooldata>
[ '\' WObj ':=' <persistent (PERS) of wobjdata>] ')'

Una funcin con un valor de retorno del tipo de dato jointtarget.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Clculo de robtarget a partir de jointtarget

CalcRobT - Calcula el valor de robtarget a


partir de jointtarget en la pgina 843

Definicin de posicin

robtarget - Datos de posicin en la pgina 1266

Definicin de posicin de los ejes

jointtarget - Datos de posicin de eje en la


pgina 1216

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la


pgina 1323

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.17 CalcJointT - Calcula los ngulos de las articulaciones a partir de un robtarget
Continuacin
Para obtener ms informacin sobre

Consulte

Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S


- Sistemas de coordenadas

Sistema de coordenadas de desplazamiento PDispOn - Activa el desplazamiento de prode programa


grama en la pgina 337
Sistema de coordenadas de offset de ejes
externos

EOffsOn - Activa un offset de ejes externos


en la pgina 92

842

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.18 CalcRobT - Calcula el valor de robtarget a partir de jointtarget

2.18 CalcRobT - Calcula el valor de robtarget a partir de jointtarget


Utilizacin
CalcRobT (Calculate Robot Target )se utiliza para calcular los datos de robtarget
a partir de datos jointtarget determinados.
Esta funcin devuelve un valor de robtarget con la posicin (x, y, z), la orientacin
(q1 ... q4), la configuracin de los ejes del robot y la posicin de los ejes externos.
Los datos de entrada de jointtarget deben especificarse en el sistema de
coordenadas de calibracin.
Los datos robtarget devueltos se expresan en el sistema de coordenadas ms
exterior. Tiene en cuenta la herramienta, el objeto de trabajo y el desplazamiento
de programa activo en el momento de la ejecucin (ProgDisp) y el offset de eje
externo (EOffs).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin CalcRobT.
Ejemplo 1
VAR robtarget p1;
CONST jointtarget jointpos1 := [...];
p1 := CalcRobT(jointpos1, tool1 \WObj:=wobj1);

El valor de robtarget correspondiente al valor de jointtargetjointpos1 se


almacena en p1. La herramienta tool1 y el objeto de trabajo wobj1 se utilizan
para calcular la posicin p1.
Valor de retorno
Tipo de dato: robtarget
El robot y la posicin de los ejes externos se devuelven en el tipo de dato
robtarget y se expresan en el sistema de coordenadas ms exterior. Tiene en
cuenta la herramienta, el objeto de trabajo y el desplazamiento de programa activo
en el momento de la ejecucin (ProgDisp) y el offset de eje externo (EOffs).
Si no hay ningn ProgDisp activo, la posicin del robot se expresa en el sistema
de coordenadas del objeto. Si no hay ningn EOffs activo, la posicin de los ejes
externos se expresa en el sistema de coordenadas de calibracin.
Argumentos
CalcRobT( Joint_target Tool [\WObj] )

Joint_target
Tipo de dato: jointtarget
La posicin de los ejes del robot y de los ejes externos, respecto del sistema de
coordenadas de calibracin.
Tool
Tipo de dato: tooldata
La herramienta utilizada para el clculo de la posicin del robot.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.18 CalcRobT - Calcula el valor de robtarget a partir de jointtarget
Continuacin
[\WObj]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin del robot devuelta por la funcin.
Si se omite este argumento, se utiliza el objeto de trabajo wobj0. Este argumento
debe especificarse si se utiliza una herramienta estacionaria, ejes externos
coordinados o un transportador.
Ejecucin de programas
El valor robtarget devuelto se calcula a partir del valor de entrada jointtarget.
Para calcular la posicin cartesiana del robot, se tienen en cuenta los valores
especificados de Tool, WObj (incluida la base de coordenadas de usuario
coordinada) y el ProgDisp activo en el momento de la ejecucin.
Para calcular la posicin de los ejes externos, se tiene en cuenta adems el EOffs
activo en el momento de la ejecucin.
Limitacin
Si se utiliza una base de coordenadas, la unidad coordinada debe estar activada
antes de usar CalcRobT. La unidad coordinada tambin debe estar situada en la
misma tarea que el robot.
Sintaxis
CalcRobT(
[Joint_target := ] <expression (IN) of jointtarget>,
[Tool := ] <persistent (PERS) of tooldata>
[\WObj := <persistent (PERS) of wobjdata>] )

Una funcin con un valor de retorno del tipo de dato robtarget.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Clculo de robtarget a partir de jointtarget CalcJointT - Calcula los ngulos de las articulaciones a partir de un robtarget en la pgina 839
Definicin de posicin

robtarget - Datos de posicin en la pgina 1266

Definicin de posicin de los ejes

jointtarget - Datos de posicin de eje en la pgina 1216

Definicin de herramientas

tooldata - Datos de herramientas en la pgina1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Sistemas de coordenadas

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sistemas de coordenadas

Sistema de coordenadas de desplazamien- PDispOn - Activa el desplazamiento de prograto de programa


ma en la pgina 337
Sistema de coordenadas de offset de ejes EOffsOn - Activa un offset de ejes externos en
externos
la pgina 92

844

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.19 CalcRotAxFrameZ - Calcular la base de coordenadas de un eje de rotacin

2.19 CalcRotAxFrameZ - Calcular la base de coordenadas de un eje de rotacin


Utilizacin
CalcRotAxFrameZ (Calculate Rotational Axis Frame with positive Z-point) se
utiliza para calcular el sistema de coordenadas de usuario de una unidad mecnica
basada en un eje de rotacin. Esta funcin debe utilizarse cuando el robot maestro
y el eje externo se encuentran en tareas de RAPID diferentes. Si se encuentran
en la misma tarea, se debe utilizar la funcin CalcRotAxisFrame.
Descripcin
La definicin de una base de coordenadas de usuario para un eje de rotacin
externo requiere que la mesa giratoria (o la estructura mecnica similar) del eje
externo tenga un punto de referencia marcado. Adems, es necesario calibrar la
base de coordenadas del robot del TCP y del TCP. El procedimiento de calibracin
se basa en un conjunto de posicionamiento del TCP del robot sobre el punto de
referencia, mientras la mesa giratoria gira hasta distintos ngulos. Tambin se
requiere el posicionamiento del TCP del robot en la direccin Z positiva. Para ver
una definicin de puntos de un eje de rotacin, consulte la figura siguiente.
Eje de rotacin

Mesa giratoria accionada


por un solo eje externo
Posicin 2

y
Posicin 1

Posicin 3
x

Punto de referencia
de la mesa giratoria
Posicin 4

z
y

Origen del sistema de coordenadas


del usuario del eje de rotacin sencillo
x

Mundo
xx0500002468_es

El sistema de coordenadas de usuario del eje de rotacin tiene su origen en el


centro de la mesa giratoria. La direccin Z coincide con el eje de rotacin y el eje
X atraviesa el punto de referencia.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.19 CalcRotAxFrameZ - Calcular la base de coordenadas de un eje de rotacin
Continuacin
La figura siguiente muestra el sistema de coordenadas de usuario para dos
posicionamientos diferentes de la mesa giratoria (con la mesa giratoria vista desde
arriba).

Rotacin de 0 grados

Rotacin de +45 grados

xx0500002469_es

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin
CalcRotAxFrameZ.
Ejemplo 1
CONST robtarget pos1 := [...];
CONST robtarget pos2 := [...];
CONST robtarget pos3 := [...];
CONST robtarget pos4 := [...];
CONST robtarget zpos;
VAR robtarget targetlist{10};
VAR num max_err := 0;
VAR num mean_err := 0;
VAR pose resFr:=[...];
PERS tooldata tMyTool:= [...];
! Instructions for creating/ModPos pos1 - pos4 with TCP pointing
at the turntable.
MoveJ pos1, v10, fine, tMyTool;
MoveJ pos2, v10, fine, tMyTool;
MoveJ pos3, v10, fine, tMyTool;
MoveJ pos4, v10, fine, tMyTool;
!Instruction for creating/ModPos zpos with TCP pointing at a point
in positive z direction
MoveJ zpos, v10, fine, tMyTool;

Contina en la pgina siguiente


846

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.19 CalcRotAxFrameZ - Calcular la base de coordenadas de un eje de rotacin
Continuacin
! Add the targets to the array
targetlist{1}:= pos1;
targetlist{2}:= pos2;
targetlist{3}:= pos3;
targetlist{4}:= pos4;
resFr:=CalcRotAxFrameZ(targetlist, 4, zpos, max_err, mean_err);
! Update the system parameters.
IF (max_err < 1.0) AND (mean_err < 0.5) THEN
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_pos_x",resFr.trans.x/1000;
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_pos_y",resFr.trans.y/1000;
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_pos_z",resFr.trans.z/1000;
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_orient_u0",resFr.rot.q1;
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_orient_u1",resFr.rot.q2;
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_orient_u2",resFr.rot.q3;
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_orient_u3",resFr.rot.q4;
TPReadFK reg1,"Warmstart required for calibration to take effect."
,stEmpty,stEmpty,stEmpty, stEmpty,"OK";
WarmStart;
ENDIF

Se crean cuatro posiciones, de pos1 a pos4 y se les aplica ModPos de forma que
la herramienta del robot tMyTool apunte al mismo punto de referencia del eje
externo STN_1, pero con una rotacin de eje externo diferente. La posicin, zpos,
se crea o modifica con modpos de forma que la herramienta del robot, tMyTool,
est orientada en la direccin Z positiva de acuerdo con la definicin de la direccin
Z positiva de una unidad mecnica externa de rotacin. Con la definicin en la
direccin Z positiva de una unidad mecnica externa de rotacin. Consulte
Descripcin en la pgina 845. A continuacin, los puntos se utilizan para calcular
la base de coordenadas del eje externo, resFr, respecto del sistema de
coordenadas mundo. Por ltimo, se escribe la base de coordenadas en el archivo
de configuracin cuando se realiza un arranque en caliente, para aplicar el cambio.
Eje de rotacin

xx0500002472_es

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.19 CalcRotAxFrameZ - Calcular la base de coordenadas de un eje de rotacin
Continuacin

Nota
Definicin en la direccin Z positiva de una unidad mecnica externa de rotacin:
Haga coincidir los dedos de la mano con el eje de rotacin positivo del eje de
rotacin. En esta posicin, la direccin del pulgar define la direccin Z positiva.
Consulte la figura anterior.
Valor de retorno
Tipo de dato: pose
La base de coordenadas calculada.
Argumentos
CalcRotAxFrameZ (TargetList TargetsInList PositiveZPoint
MaxErrMeanErr)

TargetList
Tipo de dato: robtarget
Una matriz de robtargets que contienen las posiciones definidas al apuntar la mesa
giratoria hacia fuera. El nmero mnimo de robtargets es 4 y el mximo es 10.
TargetsInList
Tipo de dato: num
Nmero de robtargets de una matriz.
PositiveZPoint
Tipo de dato: robtarget
robtarget contiene la posicin definida apuntando hacia un punto en la direccin
Z positiva. Con la definicin en la direccin Z positiva de una unidad mecnica
externa de rotacin. Consulte Descripcin en la pgina 845.
MaxErr
Maximum Error
Tipo de dato: num
El error mximo estimado, en mm.
MeanErr
Mean Error
Tipo de dato: num
El error medio estimado, en mm.
Gestin de errores
Si las posiciones no tienen la relacin requerida o no se especifican con una
exactitud suficiente, la variable de sistema ERRNO cambia a ERR_FRAME. A
continuacin, este error puede ser gestionado en el gestor de errores.

Contina en la pgina siguiente


848

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.19 CalcRotAxFrameZ - Calcular la base de coordenadas de un eje de rotacin
Continuacin
Sintaxis
CalcRotAxFrameZ(
[TargetList :=] <array {*} (IN) of robtarget> ,
[TargetsInList :=] <expression (IN) of num> ,
[PositiveZPoint :=] <expression (IN) of robtarget> ,
[MaxErr :=] <variable (VAR) of num> ,
[MeanErr :=] <variable (VAR) of num>)

Una funcin con un valor de retorno del tipo de dato pose.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Matemticas

3HAC16581-5 Revisin: L

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

2 Funciones
2.20 CalcRotAxisFrame - Calcular la base de coordenadas de un eje de rotacin

2.20 CalcRotAxisFrame - Calcular la base de coordenadas de un eje de rotacin


Utilizacin
CalcRotAxisFrame (Calculate Rotational Axis Frame) se utiliza para calcular el
sistema de coordenadas de usuario de una unidad mecnica basada en un eje de
rotacin. Esta funcin debe utilizarse cuando el robot maestro y el eje externo se
encuentran en la misma tarea de RAPID. Si se encuentran en tareas diferentes,
se debe utilizar la funcin CalcRotAxFrameZ.
Descripcin
La definicin de una base de coordenadas de usuario para un eje de rotacin
externo requiere que la mesa giratoria (o la estructura mecnica similar) del eje
externo tenga un punto de referencia marcado. Adems, es necesario calibrar la
base de coordenadas principal del robot y el TCP. El procedimiento de calibracin
se basa en un conjunto de posicionamiento del TCP del robot sobre el punto de
referencia, mientras la mesa giratoria gira hasta distintos ngulos. La definicin
de puntos de un eje de rotacin se muestra en la figura siguiente.
Eje de rotacin

Mesa giratoria accionada


por un solo eje externo
Posicin 2

y
Posicin 1

Posicin 3
x

Punto de referencia
de la mesa giratoria
Posicin 4

z
y

Origen del sistema de coordenadas


del usuario del eje de rotacin sencillo
x

Mundo
xx0500002468_es

El sistema de coordenadas de usuario del eje de rotacin tiene su origen en el


centro de la mesa giratoria. La direccin Z coincide con el eje de rotacin y el eje
X atraviesa el punto de referencia.

Contina en la pgina siguiente


850

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.20 CalcRotAxisFrame - Calcular la base de coordenadas de un eje de rotacin
Continuacin
La figura siguiente muestra el sistema de coordenadas de usuario para dos
posicionamientos diferentes de la mesa giratoria (con la mesa giratoria vista desde
arriba).

Rotacin de 0 grados

Rotacin de +45 grados

xx0500002469_es

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.20 CalcRotAxisFrame - Calcular la base de coordenadas de un eje de rotacin
Continuacin
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin
CalcRotAxisFrame.
Ejemplo 1
CONST robtarget pos1 := [...];
CONST robtarget pos2 := [...];
CONST robtarget pos3 := [...];
CONST robtarget pos4 := [...];
VAR robtarget targetlist{10};
VAR num max_err := 0;
VAR num mean_err := 0;
VAR pose resFr:=[...];
PERS tooldata tMyTool:= [...];
! Instructions needed for creating/ModPos pos1 - pos4 with TCP
pointing at the turntable.
MoveJ pos1, v10, fine, tMyTool;
MoveJ pos2, v10, fine, tMyTool;
MoveJ pos3, v10, fine, tMyTool;
MoveJ pos4, v10, fine, tMyTool;
! Add the targets to the array
targetlist{1}:= pos1;
targetlist{2}:= pos2;
targetlist{3}:= pos3;
targetlist{4}:= pos4;
resFr:=CalcRotAxisFrame(STN_1 , targetlist, 4, max_err, mean_err);
! Update the system parameters.
IF (max_err < 1.0) AND (mean_err < 0.5) THEN
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_pos_x",resFr.trans.x/1000;
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_pos_y",resFr.trans.y/1000;
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_pos_z",resFr.trans.z/1000;
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_orient_u0",resFr.rot.q1;
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_orient_u1",resFr.rot.q2;
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_orient_u2",resFr.rot.q3;
WriteCfgData "/MOC/SINGLE/STN_1",
"base_frame_orient_u3",resFr.rot.q4;
TPReadFK reg1,"Warmstart required for calibration to take
effect.",stEmpty,stEmpty,stEmpty,stEmpty,"OK";
WarmStart;
ENDIF

Contina en la pgina siguiente


852

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.20 CalcRotAxisFrame - Calcular la base de coordenadas de un eje de rotacin
Continuacin
Se crean cuatro posiciones, de pos1 a pos4 y se les aplica ModPos de forma que
la herramienta del robot tMyTool apunte al mismo punto de referencia del eje
externo STN_1, pero con una rotacin de eje externo diferente. A continuacin,
los puntos se utilizan para calcular la base de coordenadas del eje externo, resFr,
respecto del sistema de coordenadas mundo. Por ltimo, se escribe la base de
coordenadas en el archivo de configuracin cuando se realiza un arranque en
caliente, para aplicar el cambio.
Valor de retorno
Tipo de dato: pose
La base de coordenadas calculada.
Argumentos
CalcRotAxisFrame (MechUnit [\AxisNo] TargetList TargetsInList MaxErr
MeanErr)

MechUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica a calibrar.
[\AxisNo]
Tipo de dato: num
Un argumento opcional que define el nmero de eje cuya base de coordenadas
debe determinarse. Si slo existe un eje de rotacin, ste recibe el valor 1. En el
caso de las unidades mecnicas con varios ejes, el nmero del eje debe indicarse
con este argumento.
TargetList
Tipo de dato: robtarget
Una matriz de robtargets que contienen las posiciones definidas al apuntar la mesa
giratoria hacia fuera. El nmero mnimo de robtargets es 4 y el mximo es 10.
TargetsInList
Tipo de dato: num
Nmero de robtargets de una matriz.
MaxErr
Maximum Error
Tipo de dato: num
El error mximo estimado, en mm.
MeanErr
Mean Error
Tipo de dato: num
El error medio estimado, en mm.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.20 CalcRotAxisFrame - Calcular la base de coordenadas de un eje de rotacin
Continuacin
Gestin de errores
Si las posiciones no tienen la relacin requerida o no se especifican con una
exactitud suficiente, la variable de sistema ERRNO cambia a ERR_FRAME. A
continuacin, este error puede ser gestionado en el gestor de errores.
Sintaxis
CalcRotAxisFrame(
[MechUnit :=] <variable (VAR) of mecunit>
[\AxisNo := <expression (IN) of num> ],
[TargetList:=] <array {*} (IN) of robtarget> ,
[TargetsInList:=] <expression (IN) of num> ,
[MaxErr :=] <variable (VAR) of num> ,
[MeanErr :=] <variable (VAR) of num>)

Una funcin con un valor de retorno del tipo de dato pose.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Matemticas

854

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.21 CDate - Lee la fecha actual como una cadena

2.21 CDate - Lee la fecha actual como una cadena


Utilizacin
CDate (Current Date) se utiliza para leer la fecha actual del sistema.
Esta funcin puede usarse para mostrar la fecha actual al operador en la pantalla
del FlexPendant o para pegar la fecha actual en un archivo de texto en el que se
escribe desde el programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin CDate.
Consulte tambin Ms ejemplos en la pgina 855.
Ejemplo 1
VAR string date;
date := CDate();

La fecha actual se almacena en la variable date.


Valor de retorno
Tipo de dato: string
La fecha actual en una cadena.
El formato de fecha estndar es "ao-mes-da", por ejemplo " -01-29".
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin CDate.
Ejemplo 1
VAR string date;
date := CDate();
TPWrite "The current date is: "+date;
Write logfile, date;

Se escribe la fecha actual en la pantalla del FlexPendant y dentro de un archivo


de texto.
Sintaxis
CDate ( )

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Instrucciones de tiempo

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Sistema y tiempo

Cambio de hora del reloj del sistema Manual del operador - IRC5 con FlexPendant, seccin Cmo cambiar la configuracin del FlexPendant

3HAC16581-5 Revisin: L

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

2 Funciones
2.22 CJointT - Lee los ngulos actuales de los ejes

2.22 CJointT - Lee los ngulos actuales de los ejes


Utilizacin
CJointT (Current Joint Target) se utiliza para leer los ngulos actuales de los ejes
del robot y los ejes externos.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin CJointT.
Consulte tambin Ms ejemplos en la pgina 856.
Ejemplo 1
VAR jointtarget joints;
joints := CJointT();

Los ngulos actuales de los ejes de un robot y de los ejes externos se almacenan
en joints.
Valor de retorno
Tipo de dato: jointtarget
Los ngulos actuales en grados de los ejes del robot en el lado del brazo.
Los valores actuales de los ejes externos, en mm para los ejes lineales y en grados
para los ejes de rotacin.
Los valores devueltos estn relacionados con la posicin de calibracin.
Argumentos
CJointT ([\TaskRef]|[\TaskName])

[\TaskRef]
Task Reference
Tipo de dato: taskid
La identidad de tarea de programa desde la cual debe leerse jointtarget.
Existen variables predefinidas con el tipo de dato taskid para todas las tareas
de programa del sistema. La identificacin de la variable ser nombre_tarea+ID.
Por ejemplo, para la tarea T_ROB1 la identificacin de la tarea es T_ROB1Id.
[\TaskName]
Tipo de dato: string
El nombre de tarea de programa desde la cual debe leerse jointtarget.
Si no se especifica ninguno de los argumentos, ni \TaskRef ni \TaskName, se
usa la tarea actual.
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin CJointT.
Ejemplo 1
! In task T_ROB1
VAR jointtarget joints;
joints := CJointT(\TaskRef:=T_ROB2Id);

Contina en la pgina siguiente


856

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.22 CJointT - Lee los ngulos actuales de los ejes
Continuacin
La posicin actual de los ejes del robot y los ejes externos de la tarea T_ROB2 se
almacena en joints en la tarea T_ROB1.
Recuerde que el robot de la tarea T_ROB2 puede estar movindose al leer la
posicin. Para asegurarse de que el robot est en reposo, puede programarse un
punto de paro fine en la instruccin de movimiento precedente de la tarea T_ROB2
y usar la instruccin WaitSyncTask para sincronizar las instrucciones de la tarea
T_ROB1.
Ejemplo 2
! In task T_ROB1
VAR jointtarget joints;
joints := CJointT(\TaskName:="T_ROB2");

El mismo efecto que en el ejemplo 1 anterior.


Gestin 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 ningn error si el argumento \TaskRef o \TaskName
especifica la tarea sin movimiento que ejecuta esta funcin CJointT (hace
referencia a la propia tarea sin movimiento). En este caso, la posicin se captura
de la tarea de movimiento conectada.
Sintaxis
CJointT(
[\ TaskRef := <variable (VAR) of taskid>]
|[\ TaskName := <expression (IN) of string>])

Una funcin con un valor de retorno del tipo de dato jointtarget.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin de ejes

jointtarget - Datos de posicin de eje en la pgina 1216

Lectura del ngulo actual del motor

ReadMotor - Lee los ngulos actuales de los


motores en la pgina 1019

3HAC16581-5 Revisin: L

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

2 Funciones
2.23 ClkRead - Lee un reloj utilizado para la temporizacin

2.23 ClkRead - Lee un reloj utilizado para la temporizacin


Utilizacin
ClkRead se utiliza para leer un reloj que funciona como un cronmetro para
funciones de temporizacin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin ClkRead .
Ejemplo 1
reg1:=ClkRead(clock1);

Se lee el reloj clock1 y su tiempo en segundos se almacena en la variable reg1.


Ejemplo 2
reg1:=ClkRead(clock1 \HighRes);

Se lee el reloj clock1 y su tiempo en segundos se almacena con alta resolucin


en la variable reg1.
Valor de retorno
Tipo de dato: num
El tiempo almacenado en el reloj, en segundos. La resolucin es normalmente de
0,001 segundos. Si se utiliza el modificador HighRes, es posible obtener una
resolucin de 0,000001 segundos.
Argumento
ClkRead (Clock \HighRes)

Reloj
Tipo de dato: clock
El nombre del reloj a leer.
[ \HighRes ]
High Resolution
Tipo de dato: switch
Especifica que el tiempo debe leerse con una resolucin mayor. Si se utiliza este
modificador, es posible leer el tiempo con una resolucin de 0,000001 segundos.
Debido a la precisin del tipo de dato num, slo puede obtener la resolucin en
microsegundos mientras el valor ledo sea inferior a 1 segundo.
Ejecucin de programas
El reloj puede leerse tanto cuando est parado como cuando est en marcha.
Despus de leer el reloj, es posible leerlo de nuevo, ponerlo otra vez en marcha,
pararlo o ponerlo a cero.

Contina en la pgina siguiente


858

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.23 ClkRead - Lee un reloj utilizado para la temporizacin
Continuacin
Gestin de errores
Si el reloj funciona de forma continuada durante 4.294.967 segundos (49 das, 17
horas, 2 minutos y 47 segundos), se desborda y la variable de sistema ERRNO
cambia a ERR_OVERFLOW.
El error puede ser gestionado en el gestor de errores.
Si se utiliza el modificador HighRes, el error ERR_OVERFLOW no puede producirse,
pero el reloj comenzar de nuevo por el principio tras aproximadamente 49700
das.
Sintaxis
ClkRead (
[ Clock := ] < variable (VAR) of clock >
[ '\' HighRes] ')'

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Instrucciones de reloj

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Sistema y tiempo

Ms ejemplos

ClkStart - Pone en marcha un reloj utilizado para la


temporizacin en la pgina 56

3HAC16581-5 Revisin: L

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

2 Funciones
2.24 CorrRead - Lee los offsets totales actuales

2.24 CorrRead - Lee los offsets totales actuales


Utilizacin
CorrRead se utiliza para leer todas las correcciones entregadas por todos los
generadores de correcciones conectados.
CorrRead puede usarse para:

Determinar hasta qu punto son distintas la trayectoria actual y la trayectoria


original.

Tomar las acciones oportunas para reducir la diferencia.

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin CorrRead.
Consulte tambin Ms ejemplos en la pgina 860.
Ejemplo 1
VAR pos offset;
...
offset := CorrRead();

Los offsets actuales proporcionados por todos los generadores de correcciones


conectados estn disponibles en la variable offset.
Valor de retorno
Tipo de dato: pos
Los offsets totales absolutos proporcionados hasta el momento por todos los
generadores de correcciones conectados.
Ms ejemplos
Para ver ms ejemplos de la funcin CorrRead, consulte Instrucciones - CorrCon.
Sintaxis
CorrRead ( )

Una funcin con un valor de retorno del tipo de dato pos.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Conexin con un generador de correcciones CorrCon - Establece una conexin con un generador de correcciones en la pgina 75
Desconexin de un generador de correccio- CorrDiscon - Cierra la conexin con un genenes
rador de correcciones en la pgina 80
Escritura en un generador de correcciones CorrWrite - Escribe en un generador de correcciones en la pgina 81
Eliminacin de todos los generadores de
correcciones

CorrClear - Elimina todos los generadores de


correcciones en la pgina 74

Descriptor de correccin

corrdescr - Descriptor de generador de correcciones en la pgina 1185

860

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.25 Cos - Calcula el valor del coseno

2.25 Cos - Calcula el valor del coseno


Utilizacin
Cos (Cosine) se utiliza para calcular el valor de coseno de un valor de ngulo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Cos.
Ejemplo 1
VAR num angle;
VAR num value;
...
...
value := Cos(angle);

value obtiene el valor de coseno de angle.


Valor de retorno
Tipo de dato: num
El valor del coseno en el rango [-1, 1] .
Argumentos
Cos (Angle)

Angle
Tipo de dato: num
El valor del ngulo, expresado en grados.
Sintaxis
Cos(
[Angle :=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

3HAC16581-5 Revisin: L

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

2 Funciones
2.26 CPos - Lee los datos de posicin (pos) actuales

2.26 CPos - Lee los datos de posicin (pos) actuales


Utilizacin
CPos (Current Position) se utiliza para leer la posicin actual del robot.
Esta funcin devuelve los valores x, y, z del TCP del robot, en un dato del tipo pos.
Si es necesario leer la posicin completa del robot (robtarget), utilice en su lugar
la funcin CRobT.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin CPos.
Consulte tambin Ms ejemplos en la pgina 863.
VAR pos pos1;
MoveL *, v500, fine \Inpos := inpos50, tool1;
pos1 := CPos(\Tool:=tool1 \WObj:=wobj0);

La posicin actual del TCP del robot se almacena en la variable pos1. La


herramienta tool1 y el objeto de trabajo wobj0 se utilizan para calcular la posicin.
Recuerde que el robot est en reposo antes de que se lea y calcule la posicin.
Esto se consigue utilizando el punto de paro fine con la exactitud de posicin
inpos50 en la instruccin de movimiento anterior.
Valor de retorno
Tipo de dato: pos
La posicin actual (pos) del robot con x, y, z en el sistema de coordenadas ms
externo, teniendo en cuenta la herramienta especificada, el objeto de trabajo y el
sistema de coordenadas ProgDisp activo.
Argumentos
CPos([\Tool] [\WObj])

[\Tool]
Tipo de dato: tooldata
La herramienta utilizada para el clculo de la posicin actual del robot.
Si se omite este argumento, se utiliza la herramienta activa actualmente.
[\WObj]
Work Object
Tipo de dato: wobjdata
El objeto de trabajo (sistema de coordenadas) con el que est relacionada la
posicin actual del robot devuelta por la funcin.
Si se omite este argumento, se utiliza el objeto de trabajo activo actualmente.

Contina en la pgina siguiente


862

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.26 CPos - Lee los datos de posicin (pos) actuales
Continuacin

AVISO!
Resulta aconsejable especificar siempre los argumentos \Tool y \WObj durante
la programacin. De esta forma, la posicin devolver siempre la posicin
deseada, incluso si se ha activado otra herramienta u otro objeto de trabajo.
Ejecucin de programas
Las coordenadas devueltas representan la posicin del TCP en el sistema de
coordenadas ProgDisp.
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin CPos.
VAR pos pos2;
VAR pos pos3;
VAR pos pos4;
pos2 := CPos(\Tool:=grip3 \WObj:=fixture);
...
pos3 := CPos(\Tool:=grip3 \WObj:=fixture);
pos4 := pos3-pos2;

La posicin x, y, z del robot se captura en dos puntos dentro del programa,


mediante la funcin CPos. La herramienta grip3 y el objeto de trabajo fixture
se utilizan para calcular la posicin. Se calculan las distancias x, y, z recorridas
entre estas posiciones y se almacenan dichas distancias en la variable pos4.
Sintaxis
CPos (
[\Tool := <persistent (PERS) of tooldata>]
[\WObj := <persistent (PERS) of wobjdata>] )

Una funcin con un valor de retorno del tipo de dato pos.


Informacin relacionada
Para obtener ms informacin Consulte
sobre
Definicin de posicin

pos - Posiciones (slo X, Y y Z) en la pgina 1249

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo wobjdata - Datos del objeto de trabajo en la pgina 1323
Sistema de coordenadas ProgDisp

PDispOn - Activa el desplazamiento de programa en la


pgina 337

Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S - Sistemas de coordenadas

Lectura del robtarget

CRobT - Lee los datos de posicin (robtarget) actuales


en la pgina 864

3HAC16581-5 Revisin: L

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

2 Funciones
2.27 CRobT - Lee los datos de posicin (robtarget) actuales

2.27 CRobT - Lee los datos de posicin (robtarget) actuales


Utilizacin
CRobT(Current Robot Target) se utiliza para leer la posicin actual de los ejes del
robot y los ejes externos.
Esta funcin devuelve un valor de robtarget con la posicin (x, y, z), la orientacin
(q1 ... q4), la configuracin de los ejes del robot y la posicin de los ejes externos.
Si slo es necesario leer los valores x, y, z del TCP del robot (pos), utilice en su
lugar la funcin CPos.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin CRobT.
Consulte tambin Ms ejemplos en la pgina 865.
Ejemplo 1
VAR robtarget p1;
MoveL *, v500, fine \Inpos := inpos50, tool1;
p1 := CRobT(\Tool:=tool1 \WObj:=wobj0);

La posicin actual de los ejes del robot y los ejes externos se almacena en p1. La
herramienta tool1 y el objeto de trabajo wobj0 se utilizan para calcular la posicin.
Recuerde que el robot est en reposo antes de que se lea y calcule la posicin.
Esto se consigue utilizando el punto de paro fine con la exactitud de posicin
inpos50 en la instruccin de movimiento anterior.
Valor de retorno
Tipo de dato: robtarget
La posicin actual de los ejes de un robot y de los ejes externos en el sistema de
coordenadas ms externo, teniendo en cuenta la herramienta especificada, el
objeto de trabajo y el sistema de coordenadas ProgDisp/ExtOffs activo.
Argumentos
CRobT ([\TaskRef]|[\TaskName] [\Tool] [\WObj])

[\TaskRef]
Task Reference
Tipo de dato: taskid
La identidad de tarea de programa desde la cual debe leerse robtarget.
Existen variables predefinidas con el tipo de dato taskid para todas las tareas
de programa del sistema. La identificacin de la variable ser "nombre_tarea"+"ID".
Por ejemplo, para la tarea T_ROB1 la identificacin de la tarea es T_ROB1Id.
[\TaskName]
Tipo de dato: string
El nombre de tarea de programa desde la cual debe leerse robtarget.
Si no se especifica ninguno de los argumentos, ni \TaskRef ni \TaskName, se
usa la tarea actual.
Contina en la pgina siguiente
864

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.27 CRobT - Lee los datos de posicin (robtarget) actuales
Continuacin
[\Tool]
Tipo de dato: tooldata
La variable persistente de la herramienta utilizada para calcular la posicin actual
del robot.
Si se omite este argumento, se utiliza la herramienta activa actualmente.
[\WObj]
Work Object
Tipo de dato: wobjdata
La variable persistente del objeto de trabajo (sistema de coordenadas) con el que
est relacionada la posicin actual del robot devuelta por la funcin.
Si se omite este argumento, se utiliza el objeto de trabajo activo actualmente.
AVISO!
Resulta aconsejable especificar siempre los argumentos \Tool y \WObj durante
la programacin. De esta forma, la posicin devolver siempre la posicin
deseada, incluso si se ha activado otra herramienta u otro objeto de trabajo.
Ejecucin de programas
Las coordenadas devueltas representan la posicin del TCP en el sistema de
coordenadas ProgDisp. Los ejes externos se representan en el sistema de
coordenadas ExtOffs.
Si uno de los argumentos \TaskRef o \TaskName se usa pero no as los
argumentos Tool y WObj, se usarn la herramienta actual y el objeto de trabajo
de la tarea especfica.
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin CRobT.
Ejemplo 1
VAR robtarget p2;
p2 := ORobT( CRobT(\Tool:=grip3 \WObj:=fixture) );

La posicin actual de los ejes del robot y de los ejes externos en el sistema de
coordenadas del objeto (sin ProgDisp ni ExtOffs) se almacena en p2. La
herramienta grip3 y el objeto de trabajo fixture se utilizan para calcular la
posicin.
Ejemplo 2
! In task T_ROB1
VAR robtarget p3;
p3 := CRobT(\TaskRef:=T_ROB2Id \Tool:=tool1 \WObj:=wobj0);

La posicin actual de los ejes del robot y los ejes externos de la tarea T_ROB2 se
almacena en p3 en la tarea T_ROB1. La herramienta tool1 y el objeto de trabajo
wobj0 se utilizan para calcular la posicin.
Recuerde que el robot de la tarea T_ROB2 puede estar movindose al leer y calcular
la posicin. Para asegurarse de que el robot est en reposo, puede programarse
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.27 CRobT - Lee los datos de posicin (robtarget) actuales
Continuacin
un punto de paro fine en la instruccin de movimiento precedente de la tarea
T_ROB2 y usar la instruccin WaitSyncTask para sincronizar las instrucciones
de la tarea T_ROB1.
Ejemplo 3
! In task T_ROB1
VAR robtarget p4;
p4 := CRobT(\TaskName:="T_ROB2");

La posicin actual de los ejes del robot y los ejes externos de la tarea T_ROB2 se
almacena en p4 en la tarea T_ROB1. La herramienta actual y el objeto de trabajo
de la tarea T_ROB2 se utilizan para calcular la posicin.
Gestin 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 ningn error si los argumentos \TaskRef o \TaskName
especifican la tarea sin movimiento que ejecuta esta funcin CRobT (hace referencia
a la propia tarea sin movimiento). En este caso, la posicin se captura de la tarea
de movimiento conectada.
Sintaxis
CRobT(
[\ TaskRef := <variable (VAR) of taskid>]
|[\ TaskName := <expression (IN) of string>]
[\Tool := <persistent (PERS) of tooldata>]
[\WObj := <persistent (PERS) of wobjdata>] )

Una funcin con un valor de retorno del tipo de dato robtarget.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Definicin de posicin

robtarget - Datos de posicin en la pgina 1266

Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Sistemas de coordenadas

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sistemas
de coordenadas

Sistema de coordenadas ProgDisp

PDispOn - Activa el desplazamiento de programa


en la pgina 337

Sistema de coordenadas ExtOffs

EOffsOn - Activa un offset de ejes externos en la


pgina 92

Lectura del pos actual (slo x, y, z)

CPos - Lee los datos de posicin (pos) actuales


en la pgina 862

866

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.28 CSpeedOverride - Lee el ajuste de velocidad actual

2.28 CSpeedOverride - Lee el ajuste de velocidad actual


Utilizacin
CSpeedOverride se utiliza para leer el ajuste de velocidad definido por el operador
desde el FlexPendant. El valor de retorno se muestra como un porcentaje, en el
que el 100% corresponde a la velocidad programada.
En aplicaciones que utilizan la instruccin SpeedRefresh, esta funcin tambin
puede usarse para leer el valor de ajuste de velocidad actual para esta tarea de
programa de movimiento o la tarea de movimiento conectada.
Atencin! No debe confundirlo con el argumento Override de la instruccin
VelSet de RAPID.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin CSpeedOverride.
Ejemplo 1
VAR num myspeed;
myspeed := CSpeedOverride();

El ajuste de velocidad actual se almacena en la variable myspeed. Por ejemplo,


si el valor es 100, equivale al 100%.
Valor de retorno
Tipo de dato: num
El valor del ajuste de velocidad, como porcentaje de la velocidad programada.
Ser un valor numrico en el rango de 0 a 100.
Argumentos
CSpeedOverride ( [\CTask] )

[\CTask]
Tipo de dato: switch
Se obtiene el valor de ajuste de velocidad actual para esta tarea de programa de
movimiento o la conectada. Se utiliza junto con la instruccin SpeedRefresh.
Si no se utiliza este argumento, la funcin devuelve el ajuste de velocidad actual
de todo el sistema (todas las tareas de programa de movimiento). Esto significa
el ajuste de velocidad manual, definido en la unidad de programacin.
Sintaxis
CSpeedOverride(
[\ CTask ] )

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Cambio del ajuste de velocidad

Manual del operador - IRC5 con FlexPendant, seccin Programacin y testing de ciclos de produccin - Men de configuracin rpida - Velocidad

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.28 CSpeedOverride - Lee el ajuste de velocidad actual
Continuacin
Para obtener ms informacin sobre Consulte
Actualizacin del ajuste de velocidad SpeedRefresh - El ajuste de velocidad para el modesde RAPID
vimiento en curso en la pgina 507

868

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.29 CTime - Lee la hora actual en forma de una cadena

2.29 CTime - Lee la hora actual en forma de una cadena


Utilizacin
CTime se utiliza para leer la hora actual del sistema.
Esta funcin puede usarse para mostrar la hora actual al operador en la pantalla
del FlexPendant o para pegar la hora actual en un archivo de texto en el que se
escribe desde el programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin CTime.
Ejemplo 1
VAR string time;
time := CTime();
La hora actual se almacena en la variable time.
Valor de retorno
Tipo de dato: string
La hora actual en una cadena.
El formato de hora estndar es "horas:minutos:segundos", por ejemplo "18:20:46".
Mas ejemplos
A continuacin aparecen ms ejemplos de la funcin CTime.
Ejemplo 1
VAR string time;
time := CTime();
TPWrite "The current time is: "+time;
Write logfile, time;

Se escribe la hora actual en la pantalla del FlexPendant y dentro de un archivo de


texto.
Sintaxis
CTime ( )

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Instrucciones de hora y fecha

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Sistema y tiempo

Cambio de hora del reloj del sistema Manual del operador - IRC5 con FlexPendant, seccin Cmo cambiar la configuracin del FlexPendant

3HAC16581-5 Revisin: L

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

2 Funciones
2.30 CTool - Lee los datos actuales de la herramienta

2.30 CTool - Lee los datos actuales de la herramienta


Utilizacin
CTool (Current Tool) se utiliza para leer los datos de la herramienta actual.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin CTool:
Ejemplo 1
PERS tooldata temp_tool:= [ TRUE, [ [0, 0, 0], [1, 0, 0 ,0] ],
[0.001, [0, 0, 0.001], [1, 0, 0, 0], 0, 0, 0] ];
temp_tool := CTool();

El valor de la herramienta actual se almacena en la variable temp_tool.


Valor de retorno
Tipo de dato: tooldata
Esta funcin devuelve un valor de tipo tooldata que contiene el valor de la
herramienta actual, es decir, la ltima herramienta utilizada en una instruccin de
movimiento.
El valor devuelto representa la posicin y la orientacin del TCP en el sistema de
coordenadas del centro de la mueca. Consulte tooldata.
Argumentos
CTool ([\TaskRef]|[\TaskName])

[\TaskRef]
Task Reference
Tipo de dato: taskid
La identidad de tarea de programa desde la cual debe leerse la herramienta actual.
Existen variables predefinidas con el tipo de dato taskid para todas las tareas
de programa del sistema. La identificacin de la variable ser "nombre_tarea"+"ID".
Por ejemplo, para la tarea T_ROB1 la identificacin de la tarea es T_ROB1Id.
[\TaskName]
Tipo de dato: string
El nombre de tarea de programa desde el cual debe leerse la herramienta actual.
Si no se especifica ninguno de los argumentos, ni \TaskRef ni \TaskName, se
usa la tarea actual.
Gestin 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 ningn error si los argumentos \TaskRef o \TaskName
especifican la tarea sin movimiento que ejecuta esta funcin CTool (hace referencia
a la propia tarea sin movimiento). En este caso, los datos de la herramienta se
capturan de la tarea de movimiento conectada.
Contina en la pgina siguiente
870

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.30 CTool - Lee los datos actuales de la herramienta
Continuacin
Sintaxis
CTool(
[\ TaskRef := <variable (VAR) of taskid>]
|[\ TaskName := <expression (IN) of string>] )

Una funcin con un valor de retorno del tipo de dato tooldata.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Definicin de herramientas

tooldata - Datos de herramientas en la pgina 1301

Sistemas de coordenadas

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sistemas
de coordenadas

3HAC16581-5 Revisin: L

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

2 Funciones
2.31 CWObj - Lee los datos del objeto de trabajo actual

2.31 CWObj - Lee los datos del objeto de trabajo actual


Utilizacin
CWObj (Current Work Object) se utiliza para leer los datos del objeto de trabajo
actual.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin CWObj.
Ejemplo 1
PERS wobjdata temp_wobj:= [FALSE, TRUE, "", [[0,0,0], [1,0,0,0]],
[[0,0,0], [1,0,0,0]]];
temp_wobj := CWObj();

El valor del objeto de trabajo actual se almacena en la variable temp_wobj.


Valor de retorno
Tipo de dato: wobjdata
Esta funcin devuelve un valor de tipo wobjdata que contiene el valor del objeto
de trabajo actual, es decir, el ltimo objeto de trabajo utilizado en una instruccin
de movimiento.
El valor devuelto representa la posicin y la orientacin del objeto de trabajo en
el sistema de coordenadas mundo. Consulte wobjdata.
Argumentos
CWobj ([\TaskRef]|[\TaskName])

[\TaskRef]
Task Reference
Tipo de dato: taskid
La identidad de tarea de programa desde la cual debe leerse el objeto de trabajo
actual.
Existen variables predefinidas con el tipo de dato taskid para todas las tareas
de programa del sistema. La identificacin de la variable ser "nombre_tarea"+"ID".
Por ejemplo, para la tarea T_ROB1 la identificacin de la tarea es T_ROB1Id.
[\TaskName]
Tipo de dato: string
El nombre de tarea de programa desde el cual debe leerse el objeto de trabajo
actual.
Si no se especifica ninguno de los argumentos, ni \TaskRef ni \TaskName, se
usa la tarea actual.
Gestin 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.
Contina en la pgina siguiente
872

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.31 CWObj - Lee los datos del objeto de trabajo actual
Continuacin
Sin embargo, no se genera ningn error si los argumentos \TaskRef o \TaskName
especifican la tarea sin movimiento que ejecuta esta funcin CWobj (hace referencia
a la propia tarea sin movimiento). En este caso, los datos del objeto de trabajo se
capturan de la tarea de movimiento conectada.
Sintaxis
CWobj(
[\ TaskRef := <variable (VAR) of taskid>]
|[\ TaskName := <expression (IN) of string>] )

Una funcin con un valor de retorno del tipo de dato wobjdata.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin de objetos de trabajo

wobjdata - Datos del objeto de trabajo en la pgina 1323

Sistemas de coordenadas

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sistemas de coordenadas

3HAC16581-5 Revisin: L

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

2 Funciones
2.32 DecToHex - Convierte de decimal a hexadecimal

2.32 DecToHex - Convierte de decimal a hexadecimal


Utilizacin
DecToHex se usa para convertir un nmero especificado en una cadena que admita
lectura de la base 10 a la base 16.
La cadena resultante se construye con el conjunto de caracteres [0-9,A-F,a-f].
Esta rutina admite los nmeros del 0 al 9223372036854775807 en decimal o
7FFFFFFFFFFFFFFF en hexadecimal.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin DecToHex.
Ejemplo 1
VAR string str;
str := DecToHex("99999999");

Se asigna a la variable str el valor "5F5E0FF".


Valor de retorno
Tipo de dato: string
La cadena convertida a la representacin hexadecimal a partir del nmero indicado
en la cadena del parmetro de entrada.
Argumentos
DecToHex ( Str )

Str
String
Tipo de dato: string
La cadena a convertir.
Sintaxis
DecToHex(
[ Str := ] <expression (IN) of string>
)

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Funciones para cadenas de caracteres Technical reference manual - RAPID overview,
seccin Resumen sobre RAPID - Funciones para
cadenas de caracteres
Definicin de cadena de caracteres

string - Cadenas de caracteres en la pgina 1287

Valores de cadena de caracteres

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Elementos bsicos

874

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.33 DefAccFrame - Define una base de coordenadas exacta

2.33 DefAccFrame - Define una base de coordenadas exacta


Utilizacin
DefAccFrame (Define Accurate Frame) se utiliza para definir una base de
coordenadas de tres a diez posiciones originales y un nmero igual de posiciones
desplazadas.
Descripcin
Es posible definir una base de coordenadas cuando se conoce un conjunto de
objetivos en dos posiciones diferentes. Por tanto, se utilizan las mismas posiciones
fsicas, pero expresadas de forma diferente.
Debe considerarse con dos enfoques diferentes:
1 Se expresan las mismas posiciones fsicas respecto de sistemas de
coordenadas diferentes. Por ejemplo, se obtienen varias posiciones de un
plano de CAD, por lo que las posiciones se expresan en el sistema de
coordenadas local del CAD. A continuacin, las mismas posiciones se
expresan en el sistema de coordenadas mundo del robot. A partir de estos
dos conjuntos de posiciones, se calcula la base de coordenadas existente
entre el sistema de coordenadas de CAD y el sistema de coordenadas mundo.
2 Existe un conjunto de posiciones relacionadas con un objeto en una posicin
original. Despus de un desplazamiento del objeto, se determinan de nuevo
las posiciones (buscadas con frecuencia). A partir de estos dos conjuntos
de posiciones (posiciones anteriores y nuevas posiciones) se calcula la base
de coordenadas de desplazamiento.
Basta con tres objetivos para definir una base de coordenadas, pero deben
utilizarse varios puntos para aumentar la exactitud.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin DefAccFrame.
Ejemplo 1
Sistema de coordenadas de CAD p1...p5
P2

P1

P3
P4
P5

Sistema de coordenadas
mundo p6...p10
xx0500002179_es

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.33 DefAccFrame - Define una base de coordenadas exacta
Continuacin
CONST
CONST
CONST
CONST
CONST
VAR
VAR
VAR
VAR
VAR
VAR
VAR

robtarget
robtarget
robtarget
robtarget
robtarget

robtarget
robtarget
robtarget
robtarget
robtarget
robtarget
robtarget

p1
p2
p3
p4
p5

:=
:=
:=
:=
:=

[...];
[...];
[...];
[...];
[...];

p6 := [...];
p7 := [...];
p8 := [...];
p9 := [...];
p10 := [...];
pWCS{5};
pCAD{5};

VAR pose frame1;


VAR num max_err;
VAR num mean_err;
! Add positions to robtarget arrays
pCAD{1}:=p1;
...
pCAD{5}:=p5;
pWCS{1}:=p6;
...
pWCS{5}:=p10;
frame1 := DefAccFrame (pCAD, pWCS, 5, max_err, mean_err);

Se han almacenado cinco posiciones, p1- p5, relacionadas con un objeto. Las
mismas posiciones tambin se almacenan en relacin con el sistema de
coordenadas mundo, como p6-p10. A partir de estas 10 posiciones se calcula la
base de coordenadas frame1 existente entre el sistema de coordenadas del objeto
y el sistema de coordenadas mundo. La base de coordenadas ser la base de
coordenadas CAD, expresada en el sistema de coordenadas mundo. Si se
intercambia el orden de entrada de las listas de objetivos, por ejemplo
DefAccFrame (pWCS, pCAD....), la base de coordenadas mundo se expresa
en el sistema de coordenadas CAD.
Valor de retorno
Tipo de dato: pose
La base de coordenadas TargetListOne calculada se expresa en el sistema de
coordenadas TargetListTwo.
Argumentos
DefAccFrame (TargetListOne TargetListTwo TargetsInList
MaxErrMeanErr)

TargetListOne
Tipo de dato: robtarget

Contina en la pgina siguiente


876

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.33 DefAccFrame - Define una base de coordenadas exacta
Continuacin
Una matriz de robtargets que contienen las posiciones definidas en el primer
sistema de coordenadas. El nmero mnimo de robtargets es 3 y el mximo es 10.
TargetListTwo
Tipo de dato: robtarget
Una matriz de robtargets que contienen las posiciones definidas en el segundo
sistema de coordenadas. El nmero mnimo de robtargets es 3 y el mximo es 10.
TargetsInList
Tipo de dato: num
Nmero de robtargets de una matriz.
MaxErr
Tipo de dato: num
El error mximo estimado, en mm.
MeanErr
Tipo de dato: num
El error medio estimado, en mm.
Gestin de errores
Si las posiciones no tienen la relacin requerida o no se especifican con una
exactitud suficiente, la variable de sistema ERRNO cambia a ERR_FRAME. A
continuacin, este error puede ser gestionado en el gestor de errores.
Sintaxis
DefAccFrame(
[TargetListOne:=] <array {*} (IN) of robtarget> ,
[TargetListTwo :=] <array {*} (IN) of robtarget> ,
[TargetsInList:=] <expression (IN) of num> ,
[MaxErr:=] <variable (VAR) of num> ,
[MeanErr:=] <variable (VAR) of num>)

Una funcin con un valor de retorno del tipo de dato pose.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Clculo de una base de coordenadas a


partir de tres posiciones

DefFrame - Define una base de coordenadas


en la pgina 881

Clculo de una base de coordenadas a


partir de 6 posiciones

DefDFrame - Define una base de coordenadas


de desplazamiento en la pgina 878

3HAC16581-5 Revisin: L

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

2 Funciones
2.34 DefDFrame - Define una base de coordenadas de desplazamiento

2.34 DefDFrame - Define una base de coordenadas de desplazamiento


Utilizacin
DefDFrame(Define Displacement Frame) se utiliza para calcular una base de
coordenadas de desplazamiento a partir de tres posiciones originales y tres
posiciones desplazadas.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin DefDFrame.
Ejemplo 1

p3
p6
p5
p4
p1

p2

El nuevo plano

xx0500002177_es

CONST robtarget p1 := [...];


CONST robtarget p2 := [...];
CONST robtarget p3 := [...];
VAR robtarget p4;
VAR robtarget p5;
VAR robtarget p6;
VAR pose frame1;
...
!Search for the new positions
SearchL sen1, p4, *, v50, tool1;
...
SearchL sen1, p5, *, v50, tool1;
...
SearchL sen1, p6, *, v50, tool1;
frame1 := DefDframe (p1, p2, p3, p4, p5, p6);
...
!Activation of the displacement defined by frame1
PDispSet frame1;

Se han almacenado tres posiciones, p1-p3, relacionadas con un objeto en una


posicin original. Despus de un desplazamiento del objeto, se buscan tres
posiciones nuevas, que se almacenan como p4-p6. La base de coordenadas de
desplazamiento se calcula a partir de estas seis posiciones. A continuacin se
utiliza la base de coordenadas calculada para desplazar todas las posiciones
almacenadas en el programa.

Contina en la pgina siguiente


878

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.34 DefDFrame - Define una base de coordenadas de desplazamiento
Continuacin
Valor de retorno
Tipo de dato: pose
La base de coordenadas de desplazamiento.
Argumentos
DefDFrame (OldP1 OldP2 OldP3 NewP1 NewP2 NewP3)

OldP1
Tipo de dato: robtarget
La primera posicin original.
OldP2
Tipo de dato: robtarget
La segunda posicin original.
OldP3
Tipo de dato: robtarget
La tercera posicin original.
NewP1
Tipo de dato: robtarget
La primera posicin desplazada. La diferencia entre OldP1 y NewP1 define la parte
de traslacin de la base de coordenadas y debe medirse y determinarse con una
gran exactitud.
NewP2
Tipo de dato: robtarget
La segunda posicin desplazada. La lnea NewP1 ... NewP2 define la rotacin
de la lnea anterior OldP1 ... OldP2.
NewP3
Tipo de dato: robtarget
La tercera posicin desplazada. Esta posicin definir la rotacin del plano. Por
ejemplo, debe estar situada en el nuevo plano formado por NewP1, NewP2 y NewP3.
Gestin de errores
Si no es posible calcular la base de coordenadas debido a la baja exactitud de las
posiciones, la variable de sistema ERRNO cambia a ERR_FRAME. A continuacin,
este error puede ser gestionado en el gestor de errores.
Sintaxis
DefDFrame(
[OldP1 :=]
[OldP2 :=]
[OldP3 :=]
[NewP1 :=]
[NewP2 :=]
[NewP3 :=]

<expression
<expression
<expression
<expression
<expression
<expression

(IN)
(IN)
(IN)
(IN)
(IN)
(IN)

of
of
of
of
of
of

robtarget> ,
robtarget> ,
robtarget> ,
robtarget> ,
robtarget> ,
robtarget> )

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.34 DefDFrame - Define una base de coordenadas de desplazamiento
Continuacin
Una funcin con un valor de retorno del tipo de dato pose.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Activacin de una base de coordenadas PDispSet - Activa un desplazamiento de prograde desplazamiento


ma a partir de una base de coordenadas conocida en la pgina 342
Definicin manual de la base de coorde- Manual del operador - IRC5 con FlexPendant,
nadas de desplazamiento
seccin Calibracin

880

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.35 DefFrame - Define una base de coordenadas

2.35 DefFrame - Define una base de coordenadas


Utilizacin
DefFrame (Define Frame) se utiliza para calcular una base de coordenadas a partir
de tres posiciones que la definen.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin DefFrame.
Ejemplo 1

y
p3

z
x
p2
y

frame1
x
Base de coordenadas del objeto

p1

xx0500002181_es

Se utilizan tres posiciones, p1- p3, en relacin con el sistema de coordenadas


del objeto, para definir el nuevo sistema de coordenadas, frame1. La primera
posicin, p1, define el origen del nuevo sistema de coordenadas. La segunda
posicin, p2, define la direccin del eje x. La tercera posicin, p3, define la
ubicacin del plano xy. La base de coordenadas frame1 definida puede usarse
como base de coordenadas de desplazamiento, como se muestra en el ejemplo
siguiente:
CONST robtarget p1
CONST robtarget p2
CONST robtarget p3
VAR pose frame1;
...
...
frame1 := DefFrame
...
...
!Activation of the
PDispSet frame1;

:= [...];
:= [...];
:= [...];

(p1, p2, p3);

displacement defined by frame1

Valor de retorno
Tipo de dato: pose
La base de coordenadas calculada.
El clculo se realiza respecto del sistema de coordenadas del objeto activo.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.35 DefFrame - Define una base de coordenadas
Continuacin
Argumentos
DefFrame (NewP1 NewP2 NewP3 [\Origin])

NewP1
Tipo de dato: robtarget
La primera posicin, que definir el origen del nuevo sistema de coordenadas.
NewP2
Tipo de dato: robtarget
La segunda posicin, que definir la direccin del eje x de la nueva base de
coordenadas.
NewP3
Tipo de dato: robtarget
La tercera posicin, que definir el plano xy del nuevo sistema de coordenadas.
La posicin del punto 3 estar en el lado y positivo, como se muestra en la figura
anterior.
[\Origin]
Tipo de dato: num
Un argumento opcional que definir cmo se posiciona el origen del nuevo sistema
de coordenadas. El valor Origin = 1 significa que el origen se sita en NewP1, es
decir, el mismo que si se omite este argumento. El valor Origin = 2 significa que
el origen se sita en NewP2. Consulte la figura siguiente.
z

Nuevo P3
x
Nuevo P2

y
x
Base de coordenadas del objeto

frame1
Nuevo P1

xx0500002178_es

El valor Origin = 3 significa que el origen se sita en la lnea que va desde NewP1
a NewP2 y por tanto NewP3 se sita en el eje y. Consulte la figura siguiente.
z

y
z

Nuevo P3
x

Nuevo P2

frame1
x
Base de coordenadas del objeto

Nuevo P1

xx0500002180_es

Cualquier otro valor, o la omisin de Origin, situar el origen en NewP1.


Contina en la pgina siguiente
882

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.35 DefFrame - Define una base de coordenadas
Continuacin
Gestin de errores
Si no es posible calcular la base de coordenadas a causa de las limitaciones
mencionadas, la variable de sistema ERRNO cambia a ERR_FRAME. A continuacin,
este error puede ser gestionado en el gestor de errores.
Limitaciones
Las tres posiciones de p1 - p3 que definen la base de coordenadas deben formar
un tringulo bien definido. El tipo de tringulo mejor definido es aqul en el que
todos los lados tienen la misma longitud.

xx0500002182

Se considera que este tringulo no est bien definido si el ngulo es demasiado


pequeo. El ngulo es demasiado pequeo si se cumple la expresin siguiente:
|cos | < 1 - 10 -4
El tringulo p1, p2, p3 no debe ser demasiado pequeo, es decir, las posiciones
no deben estar demasiado cercanas entre s. Las distancias existentes entre p1
- p2 y entre p1 - p3 no deben ser inferiores a 0,1 mm.
Sintaxis
DefFrame(
[NewP1 :=] <expression (IN) of robtarget> ,
[NewP2 :=] <expression (IN) of robtarget> ,
[NewP3 :=] <expression (IN) of robtarget>
[\Origin:= <expression (IN) of num >])

Una funcin con un valor de retorno del tipo de dato pose.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

Activacin de una base de coordenadas PDispSet - Activa un desplazamiento de prograde desplazamiento


ma a partir de una base de coordenadas conocida en la pgina 342

3HAC16581-5 Revisin: L

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

2 Funciones
2.36 Dim - Obtiene las dimensiones de una matriz

2.36 Dim - Obtiene las dimensiones de una matriz


Utilizacin
Dim (Dimension) se utiliza para obtener el nmero de elementos de una matriz.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Dim.
Consulte tambin Ms ejemplos en la pgina 885.
Ejemplo 1
PROC arrmul(VAR num array{*}, num factor)
FOR index FROM 1 TO Dim(array, 1) DO
array{index} := array{index} * factor;
ENDFOR
ENDPROC

Se multiplican por un factor todos los elementos de una matriz de elementos de


tipo num. Este procedimiento acepta como entrada cualquier matriz de una sola
dimensin y compuesta de elementos de tipo num.
Valor de retorno
Tipo de dato: num
El nmero de elementos de la matriz en la dimensin especificada.
Argumentos
Dim (ArrPar DimNo)

ArrPar
Array Parameter
Tipo de dato: cualquier tipo
El nombre de la matriz.
DimNo
Dimension Number
Tipo de dato: num
La dimensin deseada de la matriz:
1 = Primera dimensin
2 = Segunda dimensin
3 = Tercera dimensin

Contina en la pgina siguiente


884

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.36 Dim - Obtiene las dimensiones de una matriz
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la funcin Dim.
Ejemplo 1
PROC add_matrix(VAR num array1{*,*,*}, num array2{*,*,*})
IF Dim(array1,1) <> Dim(array2,1) OR Dim(array1,2) <>
Dim(array2,2) OR Dim(array1,3) <> Dim(array2,3) THEN
TPWrite "The size of the matrices are not the same";
Stop;
ELSE
FOR i1 FROM 1 TO Dim(array1, 1) DO
FOR i2 FROM 1 TO Dim(array1, 2) DO
FOR i3 FROM 1 TO Dim(array1, 3) DO
array1{i1,i2,i3} := array1{i1,i2,i3} + array2{i1,i2,i3};
ENDFOR
ENDFOR
ENDFOR
ENDIF
RETURN;
ENDPROC

Se suman dos matrices. Si las matrices son de distinto tamao, el programa se


detiene y aparece un mensaje de error.
Este procedimiento acepta cualquier matriz tridimensional y compuesta de
elementos de tipo num.
Sintaxis
Dim (
[ArrPar:=] <reference (REF) of any type> ,
[DimNo:=] <expression (IN) of num> )

Los parmetros REF exigen que el argumento correspondiente sea una constante,
una variable o una variable persistente entera. El argumento tambin puede ser
un parmetro IN, un parmetro VAR o un parmetro PERS entero.
Una funcin con un valor de retorno del tipo de dato num.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Parmetros de matriz

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Rutinas

Declaracin de matriz

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Datos

3HAC16581-5 Revisin: L

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

2 Funciones
2.37 Distance - Distancia entre dos puntos

2.37 Distance - Distancia entre dos puntos


Utilizacin
Distance se utiliza para calcular la distancia entre dos puntos del espacio.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Distance.
Ejemplo 1

xx0500002321

VAR num dist;


CONST pos p1 := [4,0,4];
CONST pos p2 := [-4,4,4];
...
dist := Distance(p1, p2);

Se calcula la distancia en el espacio existente entre los puntos p1 y p2 . El


resultado se asigna a la variable dist.
Valor de retorno
Tipo de dato: num
La distancia (siempre positiva) en mm entre los puntos.
Argumentos
Distance (Point1 Point2)

Point1
Tipo de dato: pos
El primer punto descrito con el tipo de dato pos.
Point2
Tipo de dato: pos
El segundo punto descrito con el tipo de dato pos.

Contina en la pgina siguiente


886

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.37 Distance - Distancia entre dos puntos
Continuacin
Ejecucin de programas
Clculo de la distancia existente entre dos puntos:

xx0500002322

Distancia =

( x x ) 2 + ( y y ) 2 + ( z z ) 2
2
1
2
1
2
1

xx0500002323_es

Sintaxis
Distance(
[Point1 :=] <expression (IN) of pos> ,
[Point2 :=] <expression (IN) of pos> )

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

Definicin de una posicin con pos

pos - Posiciones (slo X, Y y Z) en la pgina 1249

3HAC16581-5 Revisin: L

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

2 Funciones
2.38 DnumToNum - Convierte dnum a num

2.38 DnumToNum - Convierte dnum a num


Utilizacin
DnumToNum convierte un valor dnum a un valor num si es posible. De lo contrario,
genera un error recuperable.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la funcin DnumToNum.
Ejemplo 1
VAR num mynum:=0;
VAR dnum mydnum:=8388607;
VAR dnum testFloat:=8388609;
VAR dnum anotherdnum:=4294967295;
! Works OK
mynum:=DnumToNum(mydnum);
! Accept floating point value
mynum:=DnumToNum(testFloat);
! Cause error recovery error
mynum:=DnumToNum(anotherdnum \Integer);

El valor dnum 8388607 es devuelto por la funcin como el valor num 8388607.
El valor dnum 8388609 es devuelto por la funcin como el valor num 8.38861E+06.
El valor dnum 4294967295 genera el error recuperable ERR_ARGVALERR.
Valor de retorno
Tipo de dato: num
El valor dnum de entrada puede estar en el rango de -8388607 a 8388608 y devuelve
el mismo valor como un num. Si no se utiliza el modificador \Integer, el valor
dnum de entrada puede estar en el rango de -3,40282347E+38 a 3,40282347E+38
y el valor de retorno puede convertirse en un valor de coma flotante.
Argumentos
DnumToNum (Value [\Integer])

Value
Tipo de dato: dnum
El valor numrico a convertir.
[\Integer]
Tipo de dato: switch
Slo valores enteros
Si no se utiliza el modificador \Integer, se realiza un cambio al tipo menor incluso
si el valor pasa a ser un valor de coma flotante. Si no se utiliza, se realiza una
comprobacin de si el valor es un entero que est entre -8388607 y 8388608. Si
no es as, se genera un error recuperable.

Contina en la pgina siguiente


888

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.38 DnumToNum - Convierte dnum a num
Continuacin
Gestin 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:
Cdigo de error

Descripcin

ERR_ARGVALERR

Si el valor es superior a 8388608 o inferior a -8388607 o no es


un entero (si se utiliza el argumento opcional Integer)

ERR_NUM_LIMIT

El valor es superior a 3,40282347E+38 o inferior a 3,40282347E+38

ERR_INT_NOTVAL

El valor no es un entero

Sintaxis
DnumToNum
[ Value := ] < expression (IN) of dnum >
[\ Integer] ;

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Dnum tipo de dato

dnum - Valores numricos dobles en la pgina 1190.

Num tipo de dato

num - Valores numricos en la pgina 1234.

3HAC16581-5 Revisin: L

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

2 Funciones
2.39 DnumToStr - Convierte un valor numrico en una cadena de caracteres

2.39 DnumToStr - Convierte un valor numrico en una cadena de caracteres


Utilizacin
DnumToStr (Numeric To String) se utiliza para convertir un valor numrico en una
cadena.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin DnumToStr.
Ejemplo 1
VAR string str;
str := DnumToStr(0.3852138754655357,3);

Se asigna a la variable str el valor "0.385".


Ejemplo 2
VAR dnum val;
val:= 0.3852138754655357;
str := DnumToStr(val, 2\Exp);

Se asigna a la variable str el valor "3.85E-01".


Ejemplo 3
VAR dnum val;
val := 0.3852138754655357;
str := DnumToStr(val, 15);

Se asigna a la variable str el valor "0.385213875465536".


Ejemplo 4
VAR dnum val;
val:=4294967295.385215;
str := DnumToStr(val, 4);

Se asigna a la variable str el valor "4294967295.3852".


Valor de retorno
Tipo de dato: str
El valor numrico, convertido en una cadena con el nmero especificado de
decimales, en notacin cientfica si as se solicita. Si es necesario, el valor numrico
se redondea. Si no se incluye ningn decimal, se suprime el punto decimal.
Argumentos
DnumToStr (Val Dec [\Exp])

Val
Value
Tipo de dato: dnum
El valor numrico a convertir.
Dec
Decimals
Tipo de dato: num
Contina en la pgina siguiente
890

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.39 DnumToStr - Convierte un valor numrico en una cadena de caracteres
Continuacin
Nmero de decimales. El nmero de decimales no debe ser negativo ni mayor que
la precisin disponible para los valores numricos.
El nmero mximo de decimales que pueden usarse es 15.
[\Exp]
Exponent
Tipo de dato: switch
Para usar exponente en el valor de retorno.
Sintaxis
DnumToStr(
[ Val := ] <expression (IN) of dnum>
[ Dec := ] <expression (IN) of num>
[ \Exp ]
)

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Funciones para cadenas de caracteres

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Funciones para cadenas de caracteres

Definicin de cadena de caracteres

string - Cadenas de caracteres en la pgina 1287

Valores de cadena de caracteres

Technical reference manual - RAPID overview, seccin Caractersticas bsicas - Elementos bsicos

Convertir un valor numrico num en una ca- NumToStr - Convierte un valor numrico en
dena de caracteres
una cadena de caracteres en la pgina 972

3HAC16581-5 Revisin: L

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

2 Funciones
2.40 DotProd - Producto escalar de dos vectores pos

2.40 DotProd - Producto escalar de dos vectores pos


Utilizacin
DotProd (Dot Product) se utiliza para calcular el producto escalar de dos vectores
pos. La aplicacin tpica de esta funcin es calcular la proyeccin de un vector
sobre el otro o calcular el ngulo existente entre dos vectores.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin DotProd.
Ejemplo 1

xx0500002449

El producto escalar de dos vectores A y B es un escalar, lo que equivale a los


productos de las magnitudes de A y B y el coseno del ngulo que forman.
A B = j A j j B j cos AB

El producto escalar:

Es menor o igual que el producto de las magnitudes.

Puede ser un valor positivo o negativo, en funcin de si el ngulo formado


por los vectores es superior o inferior a 90 grados.

Es igual al producto de la magnitud de un vector y la proteccin del segundo


vector sobre el primero.

Es cero si los vectores son perpendiculares entre s.

Los vectores se describen con el tipo de dato pos y el producto escalar se describe
con el tipo de dato num:
VAR num
VAR pos
VAR pos
...
...
vector1
vector2
dotprod

dotprod;
vector1;
vector2;

:= [1,1,1];
:= [1,2,3];
:= DotProd(vector1, vector2);

Valor de retorno
Tipo de dato: num
El valor del producto escalar de los dos vectores.
Contina en la pgina siguiente
892

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.40 DotProd - Producto escalar de dos vectores pos
Continuacin
Argumentos
DotProd (Vector1 Vector2)

Vector1
Tipo de dato: pos
El primer vector descrito con el tipo de dato pos.
Vector2
Tipo de dato: pos
El segundo vector descrito con el tipo de dato pos.
Sintaxis
DotProd '('
[Vector1 ':='] <expression (IN) of pos>','
[Vector2 ':='] <expression (IN) of pos>
')'

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

3HAC16581-5 Revisin: L

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

2 Funciones
2.41 DOutput - Lee el valor de una seal digital de salida

2.41 DOutput - Lee el valor de una seal digital de salida


Utilizacin
DOutput se utiliza para leer el valor actual de una seal digital de salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin DOutput.
Consulte tambin Ms ejemplos en la pgina 894.
Ejemplo 1
IF DOutput(do2) = 1 THEN...

Si el valor actual de la seal do2 es igual a 1, entonces ...


Valor de retorno
Tipo de dato: dionum
El valor actual de la seal (0 1).
Argumentos
DOutput (Signal)

Signal
Tipo de dato: signaldo
El nombre de la seal a leer.
Ejecucin de programas
El valor ledo depende de la configuracin de la seal. Si la seal est invertida
en los parmetros de sistema, el valor devuelto por esta funcin es lo opuesto al
valor real del canal fsico.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT si se ha perdido el contacto con la unidad de E/S.
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin DOutput.
Ejemplo 1
IF DOutput(auto_on) <> active THEN . . .

Si el valor actual de la seal de sistema auto_on es not active, entonces ....


Es decir, si el robot est en el modo de funcionamiento manual, entonces ...
Nota
La seal debe estar definida previamente como salida de sistema en los
parmetros de sistema.

Contina en la pgina siguiente


894

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.41 DOutput - Lee el valor de una seal digital de salida
Continuacin
Sintaxis
DOutput '('
[ Signal := ] < variable (VAR) of signaldo > )

Una funcin con un valor de retorno del tipo de dato dionum.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Activacin de una seal digital de
salida

SetDO - Cambia el valor de una seal digital de salida en la pgina 469

Instrucciones de entrada/salida

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Seales de entrada y
salida

Funcionalidad de entrada/salida en
general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Principios de
E/S

Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

3HAC16581-5 Revisin: L

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

2 Funciones
2.42 EulerZYX - Obtiene ngulos Euler a partir de una orientacin

2.42 EulerZYX - Obtiene ngulos Euler a partir de una orientacin


Utilizacin
EulerZYX (Euler ZYX rotations) se utiliza para obtener un componente de ngulo
Euler a partir de una variable de tipo orient.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin EulerZYX.
Ejemplo 1
VAR num anglex;
VAR num angley;
VAR num anglez;
VAR pose object;
...
...
anglex := EulerZYX(\X, object.rot);
angley := EulerZYX(\Y, object.rot);
anglez := EulerZYX(\Z, object.rot);

Valor de retorno
Tipo de dato: num
El ngulo Euler correspondiente, expresado en grados, en el rango [-180, 180].
Argumentos
EulerZYX ([\X] | [\Y] | [\Z] Rotation)

[\X]
Tipo de dato: switch
Obtiene la rotacin alrededor del eje X.
[\Y]
Tipo de dato: switch
Obtiene la rotacin alrededor del eje Y.
[\Z]
Tipo de dato: switch
Obtiene la rotacin alrededor del eje Z.
Atencin!
Los argumentos \X, \Y y \Z son excluyentes entre s. Si no se especifica ninguno
de estos argumentos, se genera un error en tiempo de ejecucin.
Rotation
Tipo de dato: orient
La rotacin representada en forma de cuaternio.

Contina en la pgina siguiente


896

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.42 EulerZYX - Obtiene ngulos Euler a partir de una orientacin
Continuacin
Sintaxis
EulerZYX '('
['\'X ,] | ['\'Y ,] | ['\'Z,]
[Rotation:=] <expression (IN) of orient>
)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

3HAC16581-5 Revisin: L

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

2 Funciones
2.43 EventType - Obtiene el tipo de evento actual dentro de cualquier rutina de evento

2.43 EventType - Obtiene el tipo de evento actual dentro de cualquier rutina de


evento
Utilizacin
EventType puede usarse en cualquier rutina de evento y devuelve a continuacin
el tipo de evento ejecutado actualmente.
Si la llamada a EventType se realiza desde cualquier rutina de tarea de programa,
EventType devuelve siempre 0, para indicar EVENT_NONE.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin EventType.
Ejemplo 1
TEST EventType()
CASE EVENT_NONE:
! Not executing any event
CASE EVENT_POWERON:
! Executing POWER ON event
CASE EVENT_START:
! Executing START event
CASE EVENT_STOP:
! Executing STOP event
CASE EVENT_QSTOP:
! Executing QSTOP event
CASE EVENT_RESTART:
! Executing RESTART event
CASE EVENT_RESET:
! Executing RESET event
CASE EVENT_STEP:
! Executing STEP event
ENDTEST

Uso de la funcin EventType dentro de cualquier rutina de evento para determinar


qu eventos de sistema, si los hay, se estn ejecutando en ese momento.
Valor de retorno
Tipo de dato: event_type
El tipo de evento ejecutado actualmente 1 ... 7, 0 si no se ejecuta ninguna rutina
de evento.

Contina en la pgina siguiente


898

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.43 EventType - Obtiene el tipo de evento actual dentro de cualquier rutina de evento
Continuacin
Datos predefinidos
Pueden utilizarse las siguientes constantes simblicas predefinidas del tipo
event_type para comprobar el valor de retorno.
CONST
CONST
CONST
CONST
CONST
CONST
CONST
CONST

event_type
event_type
event_type
event_type
event_type
event_type
event_type
event_type

EVENT_NONE := 0;
EVENT_POWERON := 1;
EVENT_START := 2;
EVENT_STOP := 3;
EVENT_QSTOP:= 4;
EVENT_RESTART := 5;
EVENT_RESET := 6;
EVENT_STEP := 7;

Sintaxis
EventType( )

A function with a return value of the data type event_type.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Rutinas de evento en general

Manual de referencia tcnica - Parmetros del


sistema, seccin Controller - Event Routine

Tipo de datos event_type, constantes pre- event_type - Tipo de rutina de evento en la pdefinidas
gina 1203

3HAC16581-5 Revisin: L

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

2 Funciones
2.44 ExecHandler - Obtener el tipo de gestor de ejecucin

2.44 ExecHandler - Obtener el tipo de gestor de ejecucin


Utilizacin
ExecHandler puede usarse para determinar si el cdigo de RAPID actual se est
ejecutando en algn gestor de rutina de programa de RAPID.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ExecHandler.
Ejemplo 1
TEST ExecHandler()
CASE HANDLER_NONE:
! Not executing in any
CASE HANDLER_BWD:
! Executing in routine
CASE HANDLER_ERR:
! Executing in routine
CASE HANDLER_UNDO:
! Executing in routine
ENDTEST

routine handler
BACKWARD handler
ERROR handler
UNDO handler

Uso de la funcin ExecHandler para determinar si el cdigo se est ejecutando


dentro de algn tipo de gestor de rutina o no.
Se devolver HANDLER_ERR incluso si la llamada es ejecutada dentro de un
mtodo secundario del gestor de errores.
Valor de retorno
Tipo de dato: handler_type
El tipo de gestor actual ejecutado de 1 a 3, 0 si no se ejecuta dentro de ningn
gestor de rutina.
Datos predefinidos
Pueden utilizarse las siguientes constantes simblicas predefinidas del tipo
handler_type para comprobar el valor de retorno.
CONST
CONST
CONST
CONST

handler_type
handler_type
handler_type
handler_type

HANDLER_NONE := 0;
HANDLER_BWD := 1;
HANDLER_ERR := 2;
HANDLER_UNDO := 3;

Sintaxis
ExecHandler( )

A function with a return value of the data type handler_type.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipo de gestor de ejecucin

handler_type - Type of execution handler en


la pgina 1207

900

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.45 ExecLevel - Obtener el nivel de ejecucin

2.45 ExecLevel - Obtener el nivel de ejecucin


Utilizacin
ExecLevel puede usarse para determinar el nivel de ejecucin actual del cdigo
de RAPID que se est ejecutando.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ExecLevel.
Ejemplo 1
TEST ExecLevel()
CASE LEVEL_NORMAL:
! Execute on base level
CASE LEVEL_TRAP:
! Execute in TRAP routine
CASE LEVEL_SERVICE:
! Execute in service, event or system input interrupt routine
ENDTEST

Uso de la funcin ExecLevel para determinar el nivel de ejecucin actual.


Valor de retorno
Tipo de dato: exec_level
El nivel de ejecucin actual, de 0 a 2.
Datos predefinidos
Pueden utilizarse las siguientes constantes simblicas predefinidas del tipo
event_level para comprobar el valor de retorno.
CONST exec_level LEVEL_NORMAL := 0;
CONST exec_level LEVEL_TRAP := 1;
CONST exec_level LEVEL_SERVICE := 2;

Sintaxis
ExecLevel( )

A function with a return value of the data type exec_level.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipo de dato del nivel de ejecucin

exec_level - Execution level en la pgina 1204

3HAC16581-5 Revisin: L

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

2 Funciones
2.46 Exp - Calcula el valor exponencial

2.46 Exp - Calcula el valor exponencial


Utilizacin
Exp (Exponential) se utiliza para calcular el valor exponencial, e x.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Exp.
Ejemplo 1
VAR num x;
VAR num value;
...
value:= Exp( x);

value obtiene el valor exponencial de x.


Valor de retorno
Tipo de dato: num
El valor exponencial, e x.
Argumentos
Exp (Exponent)

Exponent
Tipo de dato: num
El valor del argumento de exponente.
Sintaxis
Exp '('
[Exponent :=] <expression (IN) of num>)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

902

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.47 FileSize - Obtiene el tamao de un archivo

2.47 FileSize - Obtiene el tamao de un archivo


Utilizacin
FileSize se utiliza para obtener el tamao del archivo especificado.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin FileSize.
Consulte tambin Ms ejemplos en la pgina 904.
Ejemplo 1
PROC listfile(string filename)
VAR num size;
size := FileSize(filename);
TPWrite filename+" size: "+NumToStr(size,0)+" Bytes";
ENDPROC

Este procedimiento imprime el nombre del archivo especificado, junto con la


especificacin de su tamao.
Valor de retorno
Tipo de dato: num
El tamao en bytes.
Argumentos
FileSize (Path)

Path
Tipo de dato: string
El nombre del archivo, especificado con una ruta completa o relativa.
Ejecucin de programas
Esta funcin devuelve un valor numrico que especifica el tamao en bytes del
archivo especificado.
Tambin es posible obtener esta misma informacin acerca de un directorio.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.47 FileSize - Obtiene el tamao de un archivo
Continuacin
Ms ejemplos
A continuacin aparecen algunos ejemplos bsicos de la funcin.
Ejemplo 1
En este ejemplo se enumeran todos los archivos que tengan un tamao mayor de
1 KByte dentro de la estructura de directorios de "HOME:", incluidos todos los
subdirectorios.
PROC searchdir(string dirname, string actionproc)
VAR dir directory;
VAR string filename;
IF IsFile(dirname \Directory) THEN
OpenDir directory, dirname;
WHILE ReadDir(directory, filename) DO
! .. and . is the parent and resp. this directory
IF filename <> ".." AND filename <> "." THEN
searchdir dirname+"/"+filename, actionproc;
ENDIF
ENDWHILE
CloseDir directory;
ELSE
%actionproc% dirname;
ENDIF
ERROR
RAISE;
ENDPROC
PROC listfile(string filename)
IF FileSize(filename) > 1024 THEN
TPWrite filename;
ENDIF
ENDPROC
PROC main()
! Execute the listfile routine for all files found under the
! tree of HOME:
searchdir "HOME:","listfile";
ENDPROC

Este programa recorre la estructura de directorios que existe dentro de "HOME:" y


con cada archivo encontrado, ejecuta el procedimiento listfile. searchdir es
una parte genrica, que no tiene ninguna informacin sobre el inicio de la bsqueda
ni sobre a qu rutina se debe llamar con cada archivo. Utiliza IsFile para
comprobar si se ha encontrado un subdirectorio o un archivo y utiliza el mecanismo
de enlazamiento en tiempo de ejecucin para llamar al procedimiento especificado
en actionproc con todos los archivos encontrados. La rutina
actionproclistfile comprueba si el archivo tiene un tamao mayor que 1
KByte.

Contina en la pgina siguiente


904

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.47 FileSize - Obtiene el tamao de un archivo
Continuacin
Gestin de errores
Si el archivo no existe, la variable de sistema ERRNO cambia a ERR_FILEACC. A
continuacin, este error puede ser gestionado en el gestor de errores.
Sintaxis
FileSize '('
[ Path := ] < expression (IN) of string> )

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin Consulte
sobre
Creacin de un directorio

MakeDir - Crea un nuevo directorio en la pgina 227

Eliminacin de un directorio

RemoveDir - Elimina un directorio en la pgina 377

Cambio del nombre de un archi- RenameFile - Cambia el nombre de un archivo en la pvo


gina 380
Eliminacin de un archivo

RemoveFile - Elimina un archivo en la pgina 379

Copia de un archivo

CopyFile - Copia un archivo en la pgina 69

Comprobacin del tipo del archi- IsFile - Comprobar el tipo de un archivo en la pgina 944
vo
Comprobacin del tamao del
sistema de archivos

FSSize - Obtiene el tamao de un sistema de archivos


en la pgina 910

3HAC16581-5 Revisin: L

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

2 Funciones
2.48 FileTime - Obtiene la informacin de hora de un archivo

2.48 FileTime - Obtiene la informacin de hora de un archivo


Utilizacin
FileTime se utiliza para obtener la ltima hora de modificacin, acceso o cambio
de estado de un archivo. La hora se indica en segundos a partir de las 00:00:00
horas, hora de Greenwich, del 1 de enero de 1970. La hora se devuelve como un
valor de tipo num y opcionalmente tambin en un valor de tipo stringdig.
Ejemplo bsico
A continuacin aparecen algunos ejemplos bsicos de la funcin FileTime.
Consulte tambin Ms ejemplos en la pgina 907.
Ejemplo 1
IF FileTime ("HOME:/mymod.mod" \ModifyTime)
> ModTime ("mymod") THEN
UnLoad "HOME:mymod.mod";
Load \Dynamic, "HOME:mymod.mod";
ENDIF

Este programa recarga un mdulo si el archivo de origen es ms reciente. Utiliza


ModTime para obtener la hora de la ltima modificacin del mdulo especificado
y para compararlo con los valores de FileTime\ModifyTime del origen. A
continuacin, si el origen es ms reciente, el programa descarga y carga de nuevo
el mdulo.
Limitacin de este ejemplo: El tipo de dato num no puede manejar enteros positivos
superiores a 8388608 segundos con una representacin exacta. Para obtener una
mejor resolucin, consulte el ejemplo de la funcin StrDigCmp.
Valor de retorno
Tipo de dato: num
El tiempo, medido en segundos, desde las 00:00:00 horas, horario de Greenwich,
del 1 de enero de 1970.
Argumentos
FileTime ( Path [\ModifyTime] | [\AccessTime] | [\StatCTime]
[\StrDig])

Path
Tipo de dato: string
El archivo especificado con una ruta completa o relativa.
[\ModifyTime]
Tipo de dato: switch
ltima hora de modificacin.
[\AccessTime]
Tipo de dato: switch
Hora del ltimo acceso (lectura, ejecucin o modificacin).
Contina en la pgina siguiente
906

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.48 FileTime - Obtiene la informacin de hora de un archivo
Continuacin
[\StatCTime]
Tipo de dato: switch
Hora del ltimo cambio de estado (cualificacin de acceso) del archivo.
[\StrDig]
String Digit
Tipo de dato: stringdig
Para obtener la hora del archivo en una representacin de tipo stringdig.
Su uso adicional en StrDigCmp permite gestionar enteros positivos superiores a
8388608 con una representacin exacta.
Ejecucin de programas
Esta funcin devuelve un valor numrico que especifica el tiempo desde la ltima
operacin de:

Modificacin

Acceso

Cambio de estado

del archivo especificado.


Tambin es posible obtener esta misma informacin acerca de un directorio.
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin FileTime.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.48 FileTime - Obtiene la informacin de hora de un archivo
Continuacin
A continuacin aparece un ejemplo completo en el que se implementa un servicio
de alerta para un mximo de 10 archivos.
LOCAL RECORD falert
string filename;
num ftime;
ENDRECORD
LOCAL VAR falert myfiles[10];
LOCAL VAR num currentpos:=0;
LOCAL VAR intnum timeint;
PROC alertInit(num freq)
currentpos:=0;
CONNECT timeint WITH mytrap;
ITimer freq,timeint;
ENDPROC
LOCAL TRAP mytrap
VAR num pos:=1;
WHILE pos <= currentpos DO
IF FileTime(myfiles{pos}.filename \ModifyTime) >
myfiles{pos}.ftime THEN
TPWrite "The file "+myfiles{pos}.filename+" is changed";
ENDIF
pos := pos+1;
ENDWHILE
ENDTRAP
PROC alertNew(string filename)
currentpos := currentpos+1;
IF currentpos <= 10 THEN
myfiles{currentpos}.filename := filename;
myfiles{currentpos}.ftime := FileTime (filename \ModifyTime);
ENDIF
ENDPROC
PROC alertFree()
IDelete timeint;
ENDPROC

Gestin de errores
Si el archivo no existe, la variable de sistema ERRNO cambia a ERR_FILEACC. A
continuacin, este error puede ser gestionado en el gestor de errores.

Contina en la pgina siguiente


908

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.48 FileTime - Obtiene la informacin de hora de un archivo
Continuacin
Sintaxis
FileTime '('
[ Path ':=' ] < expression (IN) of string>
[ '\' ModifyTime] |
[ '\' AccessTime] |
[ '\' StatCTime]
[ '\' StrDig ':=' < variable (VAR) of stringdig> ] ')'

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

ltima hora de modificacin de un mdulo ModTime - Obtiene la hora de modificacin


cargado
del mdulo cargado en la pgina 963ModTime
- Obtiene la hora de modificacin del mdulo
cargado en la pgina 963
Cadena de caracteres con slo dgitos

ModTime - Obtiene la hora de modificacin


del mdulo cargado en la pgina 963stringdig
- Cadena de caracteres con slo dos dgitos
en la pgina 1289

Comparar dos cadenas que slo contienen ModTime - Obtiene la hora de modificacin
dgitos
del mdulo cargado en la pgina 963StrDigCmp - Comparar dos cadenas que slo
contienen dgitos en la pgina 1066

3HAC16581-5 Revisin: L

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

2 Funciones
2.49 FSSize - Obtiene el tamao de un sistema de archivos

2.49 FSSize - Obtiene el tamao de un sistema de archivos


Utilizacin
FSSize (File System Size) se utiliza para obtener el tamao del sistema de archivos
en el que se encuentra el archivo especificado. El tamao en bytes, kilobytes o
megabytes se devuelve con el tipo num.
Ejemplo bsico
A continuacin aparecen algunos ejemplos bsicos de la funcin FSSize.
Consulte tambin Ms ejemplos en la pgina 911.
Ejemplo 1
PROC main()
VAR num totalfsyssize;
VAR num freefsyssize;
freefsyssize := FSSize("HOME:/spy.log" \Free);
totalfsyssize := FSSize("HOME:/spy.log" \Total);
TPWrite NumToStr(((totalfsyssize freefsyssize)/totalfsyssize)*100,0)
+" percent used";
ENDPROC

Este procedimiento imprime la cantidad de espacio del disco utilizada en el sistema


de archivos HOME (disco flash /hd0a/), en forma de un porcentaje.
Valor de retorno
Tipo de dato: num
El tamao en bytes.
Argumentos
FSSize (Name [\Total] | [\Free] [\Kbyte] [\Mbyte])

Name
Tipo de dato: string
El nombre de un archivo en el sistema de archivos, especificado con una ruta
completa o relativa.
[ \Total ]
Tipo de dato: switch
Obtiene la cantidad total de espacio del sistema de archivos.
[ \Free ]
Tipo de dato: switch
Obtiene la cantidad de espacio libre del sistema de archivos.
[ \Kbyte ]
Tipo de dato: switch
Convertir a kilobytes el nmero de bytes ledos, es decir, dividir el tamao entre
1.024.
Contina en la pgina siguiente
910

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.49 FSSize - Obtiene el tamao de un sistema de archivos
Continuacin
[ \Mbyte ]
Tipo de dato: switch
Convertir a megabytes el nmero de bytes ledos, es decir, dividir el tamao entre
1.048.576 (1.024*1.024).
Ejecucin de programas
Esta funcin devuelve un valor numrico que especifica el tamao del sistema de
archivos en el que se encuentra el archivo especificado.
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin FSSize.
Ejemplo 1
LOCAL VAR intnum timeint;
LOCAL TRAP mytrap
IF FSSize("HOME:/spy.log" \Free)/FSSize("HOME:/spy.log" \Total)
<= 0.1 THEN
TPWrite "The disk is almost full";
alertFree;
ENDIF
ENDTRAP
PROC alertInit(num freq)
CONNECT timeint WITH mytrap;
ITimer freq,timeint;
ENDPROC
PROC alertFree()
IDelete timeint;
ENDPROC

A continuacin aparece un ejemplo completo de la implementacin de un servicio


de alerta que imprime una advertencia en el FlexPendant cuando el espacio libre
que queda en el sistema de archivos "HOME:" es inferior al 10%.
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor de ERROR. La variable de sistema ERRNO cambia a:
ERR_FILEACC

El sistema de archivos no existe

ERR_FILESIZE

El tamao sobrepasa el valor de entero mximo de un valor


num, 8388608

Sintaxis
FSSize '('
[ Name := ] < expression (IN) of string>
[ \Total ] | [ \Free ]
[ \Kbyte ]
[ \Mbyte ])

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.49 FSSize - Obtiene el tamao de un sistema de archivos
Continuacin
Una funcin con un valor de retorno del tipo de dato num.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Creacin de un directorio

MakeDir - Crea un nuevo directorio en la pgina 227

Eliminacin de un directorio

RemoveDir - Elimina un directorio en la pgina 377

Cambio del nombre de un archivo

RenameFile - Cambia el nombre de un archivo


en la pgina 380

Eliminacin de un archivo

RemoveFile - Elimina un archivo en la pgina 379

Copia de un archivo

CopyFile - Copia un archivo en la pgina 69

Comprobacin del tipo del archivo

IsFile - Comprobar el tipo de un archivo en la


pgina 944

Comprobacin del tamao del archivo

FileSize - Obtiene el tamao de un archivo en la


pgina 903

912

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.50 GetMecUnitName - Obtiene el nombre de la unidad mecnica.

2.50 GetMecUnitName - Obtiene el nombre de la unidad mecnica.


Utilizacin
GetMecUnitName se utiliza para obtener el nombre de una unidad mecnica
usando como argumento una de las unidades mecnicas instaladas. Esta funcin
devuelve el nombre de las unidades mecnicas en forma de string.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin GetMecUnitName.
Ejemplo 1
VAR string mecname;
mecname:= GetMecUnitName(T_ROB1);

mecname obtiene el valor "T_ROB1" como un valor string. Todas las unidades
mecnicas (tipo de dato mecunit), como por ejemplo T_ROB1, estn predefinidas
en el sistema.
Valor de retorno
Tipo de dato: string
El valor de retorno ser el nombre de la unidad mecnica como un valor string.
Argumentos
GetMecUnitName ( MechUnit )

MechUnit
Mechanical Unit
Tipo de dato: mecunit
MechUnit acepta una de las unidades mecnicas predefinidas existentes en la
configuracin.
Sintaxis
GetMecUnitName '('
[ MechUnit := ] < variable (VAR) of mecunit > )

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Unidad mecnica

mecunit - Unidad mecnica en la pgina 1227

3HAC16581-5 Revisin: L

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

2 Funciones
2.51 GetNextMechUnit - Obtener el nombre y los datos de las unidades mecnicas

2.51 GetNextMechUnit - Obtener el nombre y los datos de las unidades mecnicas


Utilizacin
GetNextMechUnit (Get Next Mechanical Unit) se utiliza para obtener los nombres
de las unidades mecnicas del sistema de robot. Aparte del nombre de la unidad
mecnica, es posible obtener distintas propiedades opcionales de la unidad
mecnica.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin
GetNextMechUnit.
Consulte tambin Ms ejemplos en la pgina 915.
Ejemplo 1
VAR num listno := 0;
VAR string name := "";
TPWrite "List of mechanical units:";
WHILE GetNextMechUnit(listno, name) DO
TPWrite name;
! listno := listno + 1 is done by GetNextMechUnit
ENDWHILE

Se muestran en el FlexPendant los nombres de todas las unidades mecnicas


disponibles en el sistema.
Valor de retorno
Tipo de dato: bool
TRUE si se encuentra alguna unidad mecnica. De lo contrario, FALSE.
Argumentos
GetNextMechUnit( ListNumber UnitName [\MecRef] [\TCPRob] [\NoOfAxes]
[\MecTaskNo] [\MotPlanNo] [\Active] [\DriveModule]
[\OKToDeact])

ListNumber
Tipo de dato: num
Este parmetro especifica qu elementos de la lista de unidades mecnicas interna
del sistema se desea obtener. En el momento del retorno, la variable es siempre
incrementada por el sistema en una unidad, para facilitar el acceso a la siguiente
unidad de la lista. La primera unidad mecnica de la lista tiene el nmero de ndice
0.
UnitName
Tipo de dato: string
El nombre de la unidad mecnica.
[\MecRef]
Tipo de dato: mecunit
Contina en la pgina siguiente
914

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.51 GetNextMechUnit - Obtener el nombre y los datos de las unidades mecnicas
Continuacin
La referencia del sistema a la unidad mecnica.
[\TCPRob]
Tipo de dato: bool
TRUE si la unidad mecnica es un robot de TCP. De lo contrario, FALSE.
[\NoOfAxes]
Tipo de dato: num
Nmero de ejes de la unidad mecnica. Valor entero.
[\MecTaskNo]
Tipo de dato: num
El nmero de la tarea de programa que controla a la unidad mecnica. Valor entero
en el rango 1-20. Si no est controlada por ninguna tarea de programa, se devuelve
-1.
Esta conexin real se define en los parmetros del sistema del dominio del
controlador (en alguna aplicacin puede ser definida en tiempo de ejecucin).
[\MotPlanNo]
Tipo de dato: num
El nmero del planificador de movimientos que controla la unidad mecnica. Valor
entero en el rango 1-6. Si no est controlada por ningn planificador de
movimientos, se devuelve -1.
Esta conexin se define en los parmetros del sistema del dominio del controlador.
[\Active]
Tipo de dato: bool
TRUE si la unidad mecnica est activada. De lo contrario, FALSE.
[\DriveModule]
Tipo de dato: num
El nmero de Drive Module 1 - 4 utilizado por esta unidad mecnica.
[\OKToDeact]
Tipo de dato: bool
Devuelve TRUE si se permite la desactivacin de la unidad mecnica desde el
programa de RAPID.
Ms ejemplos
A continuacin aparecen ms ejemplos de la instruccin GetNextMechUnit.
Ejemplo 1
VAR num listno := 4;
VAR string name := "";
VAR bool found := FALSE;
found := GetNextMechUnit (listno, name);

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.51 GetNextMechUnit - Obtener el nombre y los datos de las unidades mecnicas
Continuacin
Si se cambia found a TRUE, el nombre de la unidad mecnica con nmero 4
aparecer en la variable name. De lo contrario, name slo contiene una cadena
vaca.
Sintaxis
GetNextMechUnit '('
[ ListNumber ':=' ] < variable (VAR) of num> ','
[ UnitName ':=' ] < variable (VAR) of string> ','
[ '\' MecRef ':=' < variable (VAR) of mecunit> ]
[ '\' TCPRob ':=' < variable (VAR) of bool> ]
[ '\' NoOfAxes ':=' < variable (VAR) of num> ]
[ '\' MecTaskNo ':=' < variable (VAR) of num> ]
[ '\' MotPlanNo ':=' < variable (VAR) of num> ]
[ '\' Active ':=' < variable (VAR) of bool>]
[ '\' DriveModule ':=' < variable (VAR) of num>]
[ '\' OKToDeact ':=' < variable (VAR) of bool>] ';'

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Unidad mecnica

mecunit - Unidad mecnica en la pgina 1227

Activacin y desactivacin de unidades


mecnicas

ActUnit - Activa una unidad mecnica en la


pgina 19
DeactUnit - Desactiva una unidad mecnica
en la pgina 83

Caractersticas de los tipos de datos sin va- Technical reference manual - RAPID overview,
lor
seccin Caractersticas bsicas - Tipos de
datos

916

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.52 GetNextSym - Obtiene el siguiente smbolo coincidente

2.52 GetNextSym - Obtiene el siguiente smbolo coincidente


Utilizacin
GetNextSym (Get Next Symbol) se utiliza junto con SetDataSearch para obtener
objetos de datos del sistema.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin GetNextSym.
Ejemplo 1
VAR datapos block;
VAR string name;
VAR bool truevar:=TRUE;
...
SetDataSearch "bool" \Object:="my.*" \InMod:="mymod"\LocalSym;
WHILE GetNextSym(name,block) DO
SetDataVal name\Block:=block,truevar;
ENDWHILE

Esta sesin cambia a TRUE todos los objetos de datos locales de tipo bool cuyo
nombre comience con my en el mdulo mymod.
Valor de retorno
Tipo de dato: bool
TRUE si se ha obtenido un nuevo objeto. El nombre del objeto y el bloque que
contiene se devuelven a travs de los argumentos.
FALSE si no se han encontrado ms objetos coincidentes.
Argumentos
GetNextSym (Object Block [\Recursive])

Object
Tipo de dato: string
Una variable (VAR o PERS) para almacenar el nombre del objeto de datos que se
obtendr.
Block
Tipo de dato: datapos
El bloque que contiene el objeto.
[ \Recursive ]
Tipo de dato: switch
Este modificador obliga a que la bsqueda a entrar en el bloque subyacente. Por
ejemplo, si la sesin ha comenzado en el nivel de tarea, tambin buscar en los
mdulos y las rutinas que se encuentran por debajo de la tarea.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.52 GetNextSym - Obtiene el siguiente smbolo coincidente
Continuacin
Sintaxis
GetNextSym (
[ Object := ] < variable or persistent (INOUT) of string > ,
[ Block :=] <variable (VAR) of datapos>
[\Recursive ] )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Definicin de un conjunto de smbo- SetDataSearch - Definir el conjunto de smbolos de
los en una sesin de bsqueda
una secuencia de bsqueda en la pgina 462
Obtencin del valor de un objeto de GetDataVal - Obtiene el valor de un objeto de datos
datos
en la pgina 115
Asignacin del valor de un objeto
de datos

SetDataVal - Establece el valor de un objeto de datos


en la pgina 466

Asignacin del valor de varios obje- SetAllDataVal - Establece un valor en todos los objetos
tos de datos
de datos de un conjunto definido en la pgina 458
El tipo de datos relacionado datapos datapos - Inclusin de un bloque para un objeto de
datos en la pgina 1187

918

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.53 GetServiceInfo - Obtener informacin de servicio del sistema

2.53 GetServiceInfo - Obtener informacin de servicio del sistema


Utilizacin
GetServiceInfo se utiliza para leer informacin de servicio del sistema. Esta
funcin devuelve la informacin de servicio en forma de string.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin GetServiceInfo.
Consulte tambin Ms ejemplos en la pgina 409.
Ejemplo 1
VAR string mystring;
VAR num mynum;
IF TaskRunRob() THEN
mystring:=GetServiceInfo(ROB_ID \DutyTimeCnt);
IF StrToVal(mystring, mynum) = FALSE THEN
TPWrite "Conversion failed!";
Stop;
ENDIF
ENDIF

Si la tarea controla un robot, utilice la variable predefinida ROB_ID para leer el


contador de tiempo de funcionamiento. A continuacin, convierta el valor de cadena
en un valor numrico.
Valor de retorno
Tipo de dato: string
El valor de la unidad de servicio de la unidad mecnica especificada. Para obtener
ms informacin acerca de los valores de retorno, consulte Argumentos a
continuacin.
Argumentos
GetServiceInfo (MechUnit [\DutyTimeCnt])

MechUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica cuya informacin se desea obtener.
[\DutyTimeCnt]
Duty Time Counter
Tipo de dato: switch
Devuelve el contador de tiempo de funcionamiento de la unidad mecnica utilizada
en el argumento MechUnit. Se devuelve una cadena que contiene "0" si esta
opcin se usa en el controlador virtual.
El contador de tiempo de funcionamiento es el valor en horas que la unidad
mecnica ha estado en Motores ON y los frenos se han liberado.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.53 GetServiceInfo - Obtener informacin de servicio del sistema
Continuacin
Ejecucin de programas
Se lee la informacin de servicio correspondiente al parmetro opcional utilizado.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la funcin GetServiceInfo.
Ejemplo 1
VAR string mystring;
mystring:=GetServiceInfo(ROB_1 \DutyTimeCnt);
TPWrite "DutyTimeCnt for ROB_1: " + mystring;
mystring:=GetServiceInfo(ROB_2 \DutyTimeCnt);
TPWrite "DutyTimeCnt for ROB_2: " + mystring;
mystring:=GetServiceInfo(INTERCH \DutyTimeCnt);
TPWrite "DutyTimeCnt for INTERCH: " + mystring;
mystring:=GetServiceInfo(STN_1 \DutyTimeCnt);
TPWrite "DutyTimeCnt for STN_1: " + mystring;
mystring:=GetServiceInfo(STN_2 \DutyTimeCnt);
TPWrite "DutyTimeCnt for STN_2: " + mystring;

Obtiene informacin acerca del contador de tiempo de funcionamiento de todas


las unidades mecnicas de un sistema MultiMove y escribe los valores en el
FlexPendant.
Sintaxis
GetServiceInfo(
[MechUnit := ] <variable (VAR) of mecunit>,
[\ DutyTimeCnt])

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Unidad mecnica

mecunit - Unidad mecnica en la pgina 1227.

920

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.54 GetSysInfo - Obtener informacin acerca del sistema

2.54 GetSysInfo - Obtener informacin acerca del sistema


Utilizacin
GetSysInfo se utiliza para leer informacin acerca del sistema. Los datos
disponibles son el nmero de serie, la versin del software, el tipo de robot, la ID
de controlador o la direccin IP de red local.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin GetSysInfo.
Ejemplo 1
VAR string serial;
VAR string version;
VAR string rtype;
VAR string cid;
VAR string lanip;
VAR string clang;
serial := GetSysInfo(\SerialNo);
version := GetSysInfo(\SWVersion);
rtype := GetSysInfo(\RobotType);
cid := GetSysInfo(\CtrlId);
lanip := GetSysInfo(\LanIp);
clang := GetSysInfo(\CtrlLang);

El nmero de serie se almacena en la variable serial, el nmero de versin se


almacena en la variable version, el nmero de robot se almacena en la variable
rtype, el nmero de ID del controlador se almacena en la variable cid, la direccin
IP de la red local se almacena en la variable lanip y el idioma del controlador se
almacena en la variable clang.
Ejemplos de cadenas devueltas:
Nmero de serie: 14-21858
Versin de software: ROBOTWARE_5.08.134
Tipo de robot: 2400/16 tipo A
ID de controlador: 44-1267
Direccin IP de red local: 192.168.8.103
Idioma: es
Valor de retorno
Tipo de dato: string
El nmero de serie, la versin del software, el tipo de robot, la ID de controlador,
la direccin IP de red local o el idioma del controlador. Para obtener ms
informacin acerca de los valores de retorno, consulte Arguments a continuacin.
Argumentos
GetSysInfo ([\SerialNo] | [\SWVersion] | [\RobotType] | [\CtrlId]
| [\LanIp] | [\CtrlLang])

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.54 GetSysInfo - Obtener informacin acerca del sistema
Continuacin
Es imprescindible programar uno de los argumentos SerialNo, SWVersion,
RobotType , CtrlId, LanIp o CtrlLang.
[ \SerialNo ]
Serial Number
Tipo de dato: switch
Devuelve el nmero de serie.
[ \SWVersion ]
Software Version
Tipo de dato: switch
Devuelve la versin de software.
[ \RobotType ]
Tipo de dato: switch
Devuelve el tipo de robot en la tarea actual o conectada. Si la unidad mecnica no
es un robot de TCP, se devuelve "-".
[ \CtrlId ]
Controller ID
Tipo de dato: switch
Devuelve una ID de controlador. Devuelve una cadena vaca si no se ha
especificado ninguna ID de controlador. Se devuelve una cadena que contiene
"VC" si esta opcin se usa en el controlador virtual.
[ \LanIp ]
Lan Ip address
Tipo de dato: switch
Devuelve la direccin IP de red local del controlador. Se devuelve una cadena que
contiene "VC" si esta opcin se usa en el controlador virtual. Se devuelve una
cadena vaca si no hay ninguna direccin IP de red local configurada en el sistema.
[ \CtrlLang ]
Controller Language
Tipo de dato: switch
Devuelve el idioma utilizado en el controlador.
Valor de retorno

Idioma

cs

Checo

zh

Chino (chino simplificado, chino continental)

da

Dans

nl

Holands

en

Ingls

fi

Finlands

fr

Francs

de

Alemn

Contina en la pgina siguiente


922

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.54 GetSysInfo - Obtener informacin acerca del sistema
Continuacin
Valor de retorno

Idioma

hu

Hngaro

it

Italiano

ja

Japons

ko

Coreano

pl

Polaco

pt

Portugus (portugus de Brasil)

ro

Rumano

ru

Ruso

es

Espaol

sv

Sueco

tr

Turco

Sintaxis
GetSysInfo(
[\SerialNo]
| [\SWVersion]
| [\RobotType]
| [\CtrlId]
| [\LanIp]
| [\CtrlLang])

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Comprobar la identidad del sistema

IsSysID - Comprobar la identidad del sistema en la


pgina 957

3HAC16581-5 Revisin: L

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

2 Funciones
2.55 GetTaskName - Obtiene el nombre y el nmero de la tarea actual

2.55 GetTaskName - Obtiene el nombre y el nmero de la tarea actual


Utilizacin
GetTaskName se utiliza para obtener la identidad de la tarea de programa actual,
con su nombre y su nmero.
Desde algunas tareas sin movimiento, tambin es posible obtener el nombre y el
nmero de su tarea de movimiento conectada. En el caso de los sistemas
MultiMove, el parmetro del sistema Controller/Tasks/Use Mechanical Unit Group
define la tarea de movimiento conectada, mientras que en un sistema bsico la
tarea principal siempre es la tarea de movimiento conectada desde cualquier otra
tarea.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin GetTaskName.
Ejemplo 1
VAR string taskname;
...
taskname := GetTaskName();

El nombre de la tarea actual se devuelve en la variable taskname.


Ejemplo 2
VAR string taskname;
VAR num taskno;
...
taskname := GetTaskName(\TaskNo:=taskno);

El nombre de la tarea actual se devuelve en la variable taskname. La identidad


entera de la tarea se almacena en la variable taskno.
Ejemplo 3
VAR string taskname;
VAR num taskno;
...
taskname := GetTaskName(\MecTaskNo:=taskno);

Si la tarea actual es una tarea sin movimiento, el nombre de la tarea de movimiento


conectada se devuelve en la variable taskname. La identidad numrica de la tarea
de movimiento conectada se almacena en la variable taskno.
Si la tarea actual controla varias unidades mecnicas, el nombre de la tarea actual
se devuelve en la variable taskname. La identidad numrica de la tarea se
almacena en la variable taskno.
Valor de retorno
Tipo de dato: string
El nombre de la tarea en la que se ejecuta la funcin, o bien el nombre de la tarea
de movimiento conectada.
Argumentos
GetTaskName ( [\TaskNo] | [\MecTaskNo] )

Contina en la pgina siguiente


924

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.55 GetTaskName - Obtiene el nombre y el nmero de la tarea actual
Continuacin
[\TaskNo]
Tipo de dato: num
Devuelve el nombre de la tarea actual (con la misma funcionalidad que si no se
usa ninguno de los modificadores \TaskNo ni \MecTaskNo). Obtiene tambin
la identidad de la tarea actual, representada como un valor entero. Los nmeros
devueltos estarn en el rango entre 1 y 20.
[\MecTaskNo]
Tipo de dato: num
Devuelve el nombre de la tarea de movimiento conectada o el nombre de la tarea
de movimiento actual. Tambin obtiene la identidad de la tarea de movimiento
conectada o actual, representada como un valor entero. Los nmeros devueltos
estarn en el rango entre 1 y 20.
Sintaxis
GetTaskName(
[ \TaskNo := ] < variable (VAR) of num >
[ \MecTaskNo:= ] < variable (VAR) of num > )

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Multitarea

Technical reference manual - RAPID overview,


seccin%nbsp;Resumen sobre RAPID - Multitarea
Technical reference manual - RAPID overview,
seccin Caractersticas bsicas - Multitarea

3HAC16581-5 Revisin: L

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

2 Funciones
2.56 GetTime - Lee la hora actual como un valor numrico

2.56 GetTime - Lee la hora actual como un valor numrico


Utilizacin
GetTime se utiliza para leer un componente concreto del sistema actual como un
valor numrico.
GetTime puede usarse para:

Hacer que el programa realice una accin a una hora determinada

Realizar determinadas actividades en un da laborable

No realizar determinadas actividades durante el fin de semana

Responder de una forma distinta ante los errores en funcin de la hora del
da

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin GetTime.
Ejemplo 1
hour := GetTime(\Hour);

La hora actual se almacena en la variable hour.


Valor de retorno
Tipo de dato: num
Uno de los cuatro componentes de hora especificados a continuacin.
Argumento
GetTime ( [\WDay] | [\Hour] | [\Min] | [\Sec] )

[\WDay]
Tipo de dato: switch
Devuelve el da de la semana. Rango: de 1 a 7 (de lunes a domingo).
[\Hour]
Tipo de dato: switch
Devuelve la hora actual. Rango: de 0 a 23.
[\Min]
Tipo de dato: switch
Devuelve el minuto actual. Rango: de 0 a 59.
[\Sec]
Tipo de dato: switch
Devuelve el segundo actual. Rango: de 0 a 59.
Es necesario especificar al menos uno de los argumentos. De lo contrario, la
ejecucin del programa se detiene y se genera un mensaje de error.

Contina en la pgina siguiente


926

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.56 GetTime - Lee la hora actual como un valor numrico
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin GetTime .
Ejemplo 1
weekday := GetTime(\WDay);
hour := GetTime(\Hour);
IF weekday < 6 AND hour >6 AND hour < 16 THEN
production;
ELSE
maintenance;
ENDIF

Si el da actual es un da laborable y la hora est entre las 7 y las 15:49 horas, el


robot realiza tareas de produccin. En cualquier otro momento, el robot se
encuentra en el modo de mantenimiento.
Sintaxis
GetTime (
[\ WDay ]
| [ \ Hour ]
| [ \ Min ]
| [ \ Sec ] )

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones de hora y fecha

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Sistema y
tiempo

Cambio de hora del reloj del sistema

Manual del operador - IRC5 con FlexPendant,


seccin Cmo cambiar la configuracin del
FlexPendant

3HAC16581-5 Revisin: L

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

2 Funciones
2.57 GInputDnum - Lee el valor de una seal de entrada de grupo

2.57 GInputDnum - Lee el valor de una seal de entrada de grupo


Utilizacin
GInputDnum se utiliza para leer el valor actual de un grupo de seales digitales
de entrada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin GInputDnum.
Ejemplo 1
IF GInputDnum(gi2) = 55 THEN ...

Si el valor actual de la seal gi2 es 55, entonces ...


Ejemplo 2
IF GInputDnum(gi2) = 4294967295 THEN ...

Si el valor actual de la seal gi2 es 4294967295, entonces ...


Valor de retorno
Tipo de dato: dnum
El valor actual de la seal (un entero positivo).
Se leen los valores de las distintas seales del grupo, que se interpretan como
nmeros binarios sin signo. Estos nmeros binarios se convierten a continuacin
a enteros.
El valor devuelto se encuentra dentro de un rango que depende del nmero de
seales del grupo.
Nmero de seales

Valor permitido

0-1

0-3

0-7

0-15

0-31

0-63

0-127

0-255

0-511

10

0-1023

11

0-2047

12

0-4095

13

0-8191

14

0-16383

15

0-32767

16

0-65535

17

0-131071

Contina en la pgina siguiente


928

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.57 GInputDnum - Lee el valor de una seal de entrada de grupo
Continuacin
Nmero de seales

Valor permitido

18

0-262143

19

0-524287

20

0-1048575

21

0-2097151

22

0-4194303

23

0-8388607

24

0-16777215

25

0-33554431

26

0-67108863

27

0-134217727

28

0-268435455

29

0-536870911

30

0-1073741823

31

0-2147483647

32

0-4294967295

Argumentos
GInputDnum (Signal)

Signal
Tipo de dato: signalgi
El nombre del grupo de seales a leer.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
Cdigo de error

Descripcin

ERR_NORUNUNIT

Sin contacto con la unidad de E/S.

Sintaxis
GInputDnum (
[ Signal := ] < variable (VAR) of signalgi > )

Una funcin con un valor de retorno del tipo de dato dnum.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones de entrada/salida

Manual de referencia tcnica - Descripcin


general de RAPID, seccin Resumen sobre
RAPID - Seales de entrada y salida

Funcionalidad de entrada/salida en general Manual de referencia tcnica - Descripcin


general de RAPID, seccin Principios de
movimiento y E/S

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.57 GInputDnum - Lee el valor de una seal de entrada de grupo
Continuacin
Para obtener ms informacin sobre

Consulte

Configuracin de E/S

Manual de referencia tcnica - Parmetros


del sistema

930

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.58 GOutput - Lee el valor de un grupo de seales digitales de salida

2.58 GOutput - Lee el valor de un grupo de seales digitales de salida


Utilizacin
GOutput se utiliza para leer el valor actual de un grupo de seales digitales de
salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin GOutput.
Ejemplo 1
IF GOutput(go2) = 5 THEN ...

Si el valor actual de la seal go2 es 5, entonces ...


Valor de retorno
Tipo de dato: num
El valor actual de la seal (un entero positivo).
Se leen los valores de las distintas seales del grupo, que se interpretan como
nmeros binarios sin signo. Estos nmeros binarios se convierten a continuacin
a enteros.
El valor devuelto se encuentra dentro de un rango que depende del nmero de
seales del grupo.
Nmero de seales

Valor permitido

0-1

0-3

0-7

0-15

0-31

0-63

0-127

0-255

0-511

10

0-1023

11

0-2047

12

0-4095

13

0-8191

14

0-16383

15

0-32767

16

0-65535

17

0-131071

18

0-262143

19

0-524287

20

0-1048575

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.58 GOutput - Lee el valor de un grupo de seales digitales de salida
Continuacin
Nmero de seales

Valor permitido

21

0-2097151

22

0-4194303

23

0-8388607

Argumentos
GOutput (Signal)

Signal
Tipo de dato: signalgo
El nombre del grupo de seales a leer.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT
si se ha perdido el contacto con la unidad de E/S.
Sintaxis
GOutput (
[ Signal := ] < variable (VAR) of signalgo > )

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Establecimiento de un grupo de
seales de salida

SetGO - Cambia el valor de un grupo de seales digitales de salida en la pgina 471

Lee un grupo de seales de salida GOutputDnum - Lee el valor de una seal de salida de
grupo en la pgina 933
Lee un grupo de seales de entrada GInputDnum - Lee el valor de una seal de entrada de
grupo en la pgina 928
Instrucciones de entrada/salida

Technical reference manual - RAPID overview, seccin


Resumen sobre RAPID - Seales de entrada y salida

Funcionalidad de entrada/salida en Technical reference manual - RAPID overview, seccin


general
Principios de movimiento y E/S - Principios de E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

932

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.59 GOutputDnum - Lee el valor de una seal de salida de grupo

2.59 GOutputDnum - Lee el valor de una seal de salida de grupo


Utilizacin
GOutputDnum se utiliza para leer el valor actual de un grupo de seales digitales
de salida.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin GOutputDnum.
Ejemplo 1
IF GOutputDnum(go2) = 55 THEN ...

Si el valor actual de la seal go2 es 55, entonces ...


Ejemplo 2
IF GOutputDnum(go2) = 4294967295 THEN ...

Si el valor actual de la seal go2 es 4294967295, entonces ...


Valor de retorno
Tipo de dato: dnum
El valor actual de la seal (un entero positivo).
Se leen los valores de las distintas seales del grupo, que se interpretan como
nmeros binarios sin signo. Estos nmeros binarios se convierten a continuacin
a enteros.
El valor devuelto se encuentra dentro de un rango que depende del nmero de
seales del grupo.
Nmero de seales

Valor permitido

0-1

0-3

0-7

0-15

0-31

0-63

0-127

0-255

0-511

10

0-1023

11

0-2047

12

0-4095

13

0-8191

14

0-16383

15

0-32767

16

0-65535

17

0-131071

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.59 GOutputDnum - Lee el valor de una seal de salida de grupo
Continuacin
Nmero de seales

Valor permitido

18

0-262143

19

0-524287

20

0-1048575

21

0-2097151

22

0-4194303

23

0-8388607

24

0-16777215

25

0-33554431

26

0-67108863

27

0-134217727

28

0-268435455

29

0-536870911

30

0-1073741823

31

0-2147483647

32

0-4294967295

Argumentos
GOutputDnum (Signal)

Signal
Tipo de dato: signalgo
El nombre del grupo de seales a leer.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
Cdigo de error

Descripcin

ERR_NORUNUNIT

Sin contacto con la unidad de E/S.

Sintaxis
GOutputDnum (
[ Signal := ] < variable (VAR) of signalgo > )

Una funcin con un valor de retorno del tipo de dato dnum.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Establecimiento de un grupo de seales de SetGO - Cambia el valor de un grupo de sesalida


ales digitales de salida en la pgina 471I
Instrucciones de entrada/salida

Manual de referencia tcnica - Descripcin


general de RAPID, seccin Resumen sobre
RAPID - Seales de entrada y salida

Contina en la pgina siguiente


934

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.59 GOutputDnum - Lee el valor de una seal de salida de grupo
Continuacin
Para obtener ms informacin sobre

Consulte

Funcionalidad de entrada/salida en general Manual de referencia tcnica - Descripcin


general de RAPID, seccin Principios de
movimiento y E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros


del sistema

3HAC16581-5 Revisin: L

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

2 Funciones
2.60 HexToDec - Convierte de hexadecimal a decimal

2.60 HexToDec - Convierte de hexadecimal a decimal


Utilizacin
HexToDec se usa para convertir un nmero especificado en una cadena que admita
lectura de la base 16 a la base 10.
La cadena de entrada se construye con el conjunto de caracteres [0-9,A-F,a-f].
Esta rutina admite los nmeros del 0 al 9223372036854775807 en decimal o
7FFFFFFFFFFFFFFF en hexadecimal.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin HexToDec.
Ejemplo 1
VAR string str;
str := HexToDec("5F5E0FF");

Se asigna a la variable str el valor "99999999".


Valor de retorno
Tipo de dato: string
La cadena convertida a la representacin decimal a partir del nmero indicado en
la cadena del parmetro de entrada.
Argumentos
HexToDec ( Str )

Str
String
Tipo de dato: string
La cadena a convertir.
Sintaxis
HexToDec(
[ Str := ] <expression (IN) of string>
)

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Funciones para cadenas de caracteres

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Funciones
para cadenas de caracteres

Definicin de cadena de caracteres

string - Cadenas de caracteres en la pgina1287

Valores de cadena de caracteres

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Elementos
bsicos

936

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.61 IndInpos - Estado de posicin de un eje independiente

2.61 IndInpos - Estado de posicin de un eje independiente


Utilizacin
IndInpos se utiliza para comprobar si un eje independiente ha alcanzado la
posicin seleccionada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin IndInpos.
Ejemplo 1
IndAMove Station_A,1\ToAbsNum:=90,20;
WaitUntil IndInpos(Station_A,1) = TRUE;
WaitTime 0.2;

Se espera hasta que el eje 1 de Station_A se encuentre en la posicin de 90


grados.
Valor de retorno
Tipo de dato: bool
La tabla describe los valores de retorno de IndInpos:
Valor de retorno

Estado del eje

TRUE

En posicin y con velocidad cero.

FALSE

An no situado en la posicin y/o no tiene una velocidad


cero.

Argumentos
IndInpos ( MecUnit Axis )

MecUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica.
Eje
Tipo de dato: num
El nmero del eje actual de la unidad mecnica (del 1 al 6).
Limitaciones
Un eje independiente ejecutado con la instruccin IndCMove devuelve siempre
el valor FALSE, incluso si la velocidad tiene el valor cero.
Se debe aadir un periodo de espera de 0,2 segundos tras la instruccin, para
garantizar que se ha alcanzado el estado correcto. Este periodo debe ser mayor
en el caso de los ejes externos que presenten un rendimiento deficiente.
Gestin de errores
Si el eje no est activado, la variable de sistema ERRNO cambia a ERR_AXIS_ACT.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.61 IndInpos - Estado de posicin de un eje independiente
Continuacin
Si el eje no se encuentra en el modo independiente, el valor de la variable de
sistema ERRNO cambia a ERR_AXIS_IND.
Estos errores pueden ser gestionados en el gestor de errores.
Sintaxis
IndInpos (
[ MecUnit:= ] < variable (VAR) of mecunit>,
[ Axis:= ] < expression (IN) of num>)

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin Consulte
sobre
Ejes independientes en general Technical reference manual - RAPID overview, seccin
Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa
Otras instrucciones y funciones Technical reference manual - RAPID overview, seccin
independientes
Resumen sobre RAPID - Movimiento
Comprobacin del estado de ve- IndInpos - Estado de velocidad de un eje independiente
locidad de los ejes independien- en la pgina 939
tes
Definicin de ejes independientes Manual de referencia tcnica - Parmetros del sistema,
seccin Motion - Arm

938

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.62 IndInpos - Estado de velocidad de un eje independiente

2.62 IndInpos - Estado de velocidad de un eje independiente


Utilizacin
IndSpeed se utiliza para comprobar si un eje independiente ha alcanzado la
velocidad seleccionada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin IndSpeed.
Ejemplo 1
IndCMove Station_A, 2, 3.4;
WaitUntil IndSpeed(Station_A,2 \InSpeed) = TRUE;
WaitTime 0.2;

Se espera hasta que el eje 2 de Station_A haya alcanzado la velocidad de 3,4


grados/s.
Valor de retorno
Tipo de dato: bool
La tabla describe los valores de retorno de IndSpeed \IndSpeed:
Valor de retorno

Estado del eje

TRUE

Se ha alcanzado la velocidad seleccionada.

FALSE

No se ha alcanzado la velocidad seleccionada.

La tabla describe los valores de retorno de IndSpeed \ZeroSpeed:


Valor de retorno

Estado del eje

TRUE

Velocidad cero.

FALSE

Velocidad distinta de cero

Argumentos
IndSpeed ( MecUnit Axis [ \InSpeed ] | [ \ZeroSpeed ] )

MecUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica.
Axis
Tipo de dato: num
El nmero del eje actual de la unidad mecnica (del 1 al 6).
[ \InSpeed ]
Tipo de dato: switch
IndSpeed devuelve el valor TRUE si el eje ha alcanzado la velocidad seleccionada,
o FALSE si no lo ha hecho.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.62 IndInpos - Estado de velocidad de un eje independiente
Continuacin
[ \ZeroSpeed ]
Tipo de dato: switch
IndSpeed devuelve el valor TRUE si el eje tiene la velocidad cero, o FALSE si no
la tiene.
Si se utiliza tanto el argumento \InSpeed como \ZeroSpeed, se muestra un
mensaje de error.
Limitacin
La funcin IndSpeed\InSpeed siempre devuelve el valor FALSE en las situaciones
siguientes:

El robot se encuentra en el modo manual a velocidad reducida.

La velocidad se reduce mediante la instruccin VelSet.

La velocidad se reduce desde la ventana de produccin.

Se debe aadir un periodo de espera de 0,2 segundos tras la instruccin, para


garantizar que se ha obtenido el estado correcto. Este periodo debe ser mayor en
el caso de los ejes externos que presenten un rendimiento deficiente.
Gestin de errores
Si el eje no est activado, la variable de sistema ERRNO cambia a ERR_AXIS_ACT.
Si el eje no se encuentra en el modo independiente, el valor de la variable de
sistema ERRNO cambia a ERR_AXIS_IND.
Estos errores pueden ser gestionados en el gestor de errores.
Sintaxis
IndSpeed (
[ MecUnit:= ] < variable (VAR) of mecunit>,
[ Axis:= ] < expression (IN) of num>
[ \ InSpeed ] | [ \ ZeroSpeed ] )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Ejes independientes en general

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Posicionamiento
durante la ejecucin del programa

Otras instrucciones y funciones inde- Technical reference manual - RAPID overview, secpendientes
cin Resumen sobre RAPID - Movimiento
Ms ejemplos

IndCMove - Movimiento independiente continuo en


la pgina 143

Comprobacin del estado de posi- IndInpos - Estado de posicin de un eje independiente


cin de los ejes independientes
en la pgina 937
Definicin de ejes independientes

Manual de referencia tcnica - Parmetros del sistema, seccin Motion - Arm

940

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.63 IOUnitState - Obtiene el estado actual de una unidad de E/S

2.63 IOUnitState - Obtiene el estado actual de una unidad de E/S


Utilizacin
IOUnitState se utiliza para determinar el estado actual de una unidad de E/S.
Su estado fsico y su estado lgico definen el estado de una unidad de E/S.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin IOUnitState
.
Ejemplo 1
IF (IOUnitState("UNIT1" \Phys)=IOUNIT_PHYS_STATE_RUNNING) THEN
! Possible to access some signal on the I/O unit
ELSE
! Read/Write some signal on the I/O unit result in error
ENDIF

Se realiza una comprobacin para ver si la unidad de E/S UNIT1 funciona


correctamente.
Ejemplo 2
IF (IOUnitState("UNIT1" \Logic)=IOUNIT_LOG_STATE_DISABLED) THEN
! Unit is disabled by user from RAPID or FlexPendant
ELSE
! Unit is enabled.
ENDIF

Se realiza una comprobacin para ver si la unidad de E/S UNIT1 est deshabilitada.
Valor de retorno
Tipo de dato: iounit_state
El valor de retorno tiene valores diferentes en funcin de si se utilizan los
argumentos opcionales \Logic o \Phys o de si no se utiliza ningn argumento
opcional.
Los estados lgicos de la unidad de E/S describen el estado cuya activacin en
la unidad de E/S puede solicitar el usuario. El estado de la unidad de E/S se define
en la tabla siguiente cuando se utiliza el argumento opcional \Logic.
Valor de retor- Constante simblica
no

Comentario

10

IOUNIT_LOG_STATE_DISABLED

La unidad ha sido desactivada por el usuario desde RAPID, el FlexPendant o los parmetros del sistema.

11

IOUNIT_LOG_STATE_ENABLED

La unidad ha sido activada


por el usuario desde RAPID,
el FlexPendant o los parmetros del sistema. Es la opcin
predeterminada tras el inicio.

Cuando la unidad de E/S es activada lgicamente por el usuario y el controlador


del bus de campo intenta poner una unidad de E/S en el estado fsico
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.63 IOUnitState - Obtiene el estado actual de una unidad de E/S
Continuacin
IOUNIT_PHYS_STATE_RUNNING, la unidad de E/S podra terminar en otros estados
por distintos motivos (consulte la tabla siguiente).
El estado de la unidad de E/S se define en la tabla siguiente cuando se utiliza el
argumento opcional \Phys.
Valor de retor- Constante simblica
no

Comentario

20

IOUNIT_PHYS_STATE_DEACTIVATED

Unidad sin funcionamiento,


desactivada por el usuario

21

IOUNIT_PHYS_STATE_RUNNING

Unidad en funcionamiento

22

IOUNIT_PHYS_STATE_ERROR

La unidad no funciona a causa de algn error de tiempo


de ejecucin

23

IOUNIT_PHYS_STATE_UNCONNECTED

La unidad est configurada


pero no est conectada al bus
o ste est parado.

24

IOUNIT_PHYS_STATE_UNCONFIGURED La unidad no est configurada


pero est conectada al bus. 1)

25

IOUNIT_PHYS_STATE_STARTUP

La unidad est en el modo de


puesta en marcha. 1)

26

IOUNIT_PHYS_STATE_INIT

La unidad ha sido creada. 1)

Nota
Ni en RobotWare 5.08 ni en versiones anteriores es posible utilizar la instruccin
IOUnitState con los argumentos opcionales \Phys o \Logic. En RobotWare
5.09, se recomienda usar el argumento opcional \Phys o \Logic.
El estado de la unidad de E/S se define en la tabla siguiente cuando no se utiliza
ninguno de los argumentos opcionales, \Phys ni \Logic.
Valor de retor- Constante simblica
no

Comentario

IOUNIT_RUNNING

La unidad funciona correctamente.

IOUNIT_RUNERROR

La unidad no funciona a causa de algn error de tiempo


de ejecucin

IOUNIT_DISABLE

La unidad ha sido desactivada


por el usuario desde RAPID o
el FlexPendant.

IOUNIT_OTHERERR

Otros errores de configuracin o puesta en marcha

1) No es posible obtener este estado en el programa de RAPID con la versin actual

de RobotWare - OS.
Argumentos
IOUnitState (UnitName [\Phys] | [\Logic])

UnitName
Tipo de dato: string
Contina en la pgina siguiente
942

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.63 IOUnitState - Obtiene el estado actual de una unidad de E/S
Continuacin
El nombre de la unidad de E/S que se desea comprobar (con el mismo nombre
con el que se configur).
[\Phys]
Fsico
Tipo de dato: switch
Si se utiliza este parmetro, se lee el estado fsico de la unidad de E/S .
[\Logic]
Lgico
Tipo de dato: switch
Si se utiliza este parmetro, se lee el estado lgico de la unidad de E/S.
Sintaxis
IOUnitState (
[ UnitName := ] < expression (IN) of string >
[ \ Phys] | [ \ Logic] )

Una funcin con un valor de retorno del tipo de dato iounit_state.


Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Estado de la unidad de E/S

IOEnable - Activa una unidad de E/S en la pgina 170iounit_state - Estado de la unidad de E/S en la
pgina 1215

Activar una unidad de E/S

IOEnable - Activa una unidad de E/S en la pgina 170

Desactivacin de una unidad de E/S IODisable - Desactiva una unidad de E/S en la pgina 167
Instrucciones de entrada/salida

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Seales de entrada y
salida

Funcionalidad de entrada/salida en Technical reference manual - RAPID overview, secgeneral


cin Principios de movimiento y E/S - Principios de
E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

3HAC16581-5 Revisin: L

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

2 Funciones
2.64 IsFile - Comprobar el tipo de un archivo

2.64 IsFile - Comprobar el tipo de un archivo


Utilizacin
La funcin IsFile obtiene informacin acerca del archivo o directorio indicado y
comprueba si es del mismo tipo que el especificado. Si no se especifica ningn
tipo, slo se realiza una comprobacin de existencia.
El nombre del archivo se especifica en un argumento de trayectoria. No se requieren
permisos de lectura, escritura ni ejecucin para el archivo indicado, pero debe ser
posible leer el contenido de todos los directorios indicados en la ruta que conduce
hasta el archivo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin IsFile.
Consulte tambin Ms ejemplos en la pgina 946.
Ejemplo 1
PROC printFT(string filename)
IF IsFile(filename \Directory) THEN
TPWrite filename+" is a directory";
RETURN;
ENDIF
IF IsFile(filename \Fifo) THEN
TPWrite filename+" is a fifo file";
RETURN;
ENDIF
IF IsFile(filename \RegFile) THEN
TPWrite filename+" is a regular file";
RETURN;
ENDIF
IF IsFile(filename \BlockSpec) THEN
TPWrite filename+" is a block special file";
RETURN;
ENDIF
IF IsFile(filename \CharSpec) THEN
TPWrite filename+" is a character special file";
RETURN;
ENDIF
ENDPROC

En este ejemplo se imprime en el FlexPendant el filename y el tipo del archivo


especificado.
Valor de retorno
Tipo de dato: bool
La funcin devuelve TRUE si el tipo especificado y el tipo real coinciden. De lo
contrario, devuelve FALSE. Si no se especifica ningn tipo, devuelve TRUE si el
archivo existe y FALSE si no existe.

Contina en la pgina siguiente


944

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.64 IsFile - Comprobar el tipo de un archivo
Continuacin
Argumentos
IsFile (Path [\Directory] [\Fifo] [\RegFile] [\BlockSpec]
[\CharSpec])

Path
Tipo de dato: string
El archivo especificado con una ruta completa o relativa.
[ \Directory ]
Tipo de dato: switch
Indica si el archivo es un directorio.
[ \Fifo ]
Tipo de dato: switch
Indica si el archivo es un archivo fifo.
[ \RegFile ]
Tipo de dato: switch
Indica si el archivo es un archivo normal, es decir, un archivo binario o ASCII
normal.
[ \BlockSpec ]
Tipo de dato: switch
Indica si el archivo es un archivo con bloques especiales.
[ \CharSpec ]
Tipo de dato: switch
Indica si el archivo es un archivo con caracteres especiales.
Ejecucin de programas
Esta funcin devuelve un valor bool que especifica si la comprobacin es cierta
o no.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.64 IsFile - Comprobar el tipo de un archivo
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin IsFile.
Ejemplo 1
Este ejemplo implementa una funcin de recorrido genrico de una estructura de
directorios.
PROC searchdir(string dirname, string actionproc)
VAR dir directory;
VAR string filename;
IF IsFile(dirname \Directory) THEN
OpenDir directory, dirname;
WHILE ReadDir(directory, filename) DO
! .. and . is the parent and resp. this directory
IF filename <> ".." AND filename <> "." THEN
searchdir dirname+"/"+filename, actionproc;
ENDIF
ENDWHILE
CloseDir directory;
ELSE
%actionproc% dirname;
ENDIF
ERROR
RAISE;
ENDPROC
PROC listfile(string filename)
TPWrite filename;
ENDPROC
PROC main()
! Execute the listfile routine for all files found under the
! tree of HOME:
searchdir "HOME:","listfile";
ENDPROC

Este programa recorre la estructura de directorios que existe dentro de "HOME:" y


con cada archivo encontrado, ejecuta el procedimiento listfile. searchdir es
la parte genrica, que no tiene ninguna informacin sobre el inicio de la bsqueda
ni sobre a qu rutina se debe llamar con cada archivo. Utiliza IsFile para
comprobar si se ha encontrado un subdirectorio o un archivo y utiliza el mecanismo
de enlazamiento en tiempo de ejecucin para llamar al procedimiento especificado
en actionproc con todos los archivos encontrados. La rutina actionproc debe
ser un procedimiento con un parmetro de tipo string.
Gestin de errores
Si el archivo no existe y se ha especificado un tipo, la variable de sistema ERRNO
cambia a ERR_FILEACC. A continuacin, este error puede ser gestionado en el
gestor de errores.

Contina en la pgina siguiente


946

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.64 IsFile - Comprobar el tipo de un archivo
Continuacin
Limitaciones
No es posible usar esta funcin con canales serie ni buses de campo.
Si se usa con discos montados de tipo FTP o NFS, la existencia del archivo o la
informacin del tipo no siempre se actualiza. Para obtener una informacin correcta,
es posible que sea necesaria una orden explcita con la ruta de bsqueda (con la
instruccin Open) antes de usar IsFile.
Sintaxis
Isfile (
[ Path:= ] < expression (IN) of string>
[ \Directory ]
| [ \Fifo ]
| [ \RegFile ]
| [ \BlockSpec ]
| [ \CharSpec ]
)

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin Consulte
sobre
Directorio

dir - Estructura de directorio de archivos en la pgina 1189

Apertura de un directorio

OpenDir - Abre un directorio en la pgina 302

Cierre de un directorio

CloseDir - Cierra un directorio en la pgina 60

Lectura de un directorio

ReadDir - Lee la siguiente entrada de un directorio en la


pgina 1016

Creacin de un directorio

MakeDir - Crea un nuevo directorio en la pgina 227

Eliminacin de un directorio

RemoveDir - Elimina un directorio en la pgina 377

Cambio del nombre de un archi- RenameFile - Cambia el nombre de un archivo en la pvo


gina 380
Eliminacin de un archivo

RemoveFile - Elimina un archivo en la pgina 379

Copia de un archivo

CopyFile - Copia un archivo en la pgina 69

Comprobacin del tamao del


archivo

FileSize - Obtiene el tamao de un archivo en la pgina 903

Comprobacin del tamao del


sistema de archivos

FSSize - Obtiene el tamao de un sistema de archivos


en la pgina 910

3HAC16581-5 Revisin: L

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

2 Funciones
2.65 IsMechUnitActive - Indica si una unidad mecnica est activa

2.65 IsMechUnitActive - Indica si una unidad mecnica est activa


Utilizacin
IsMechUnitActive (Is Mechanical Unit Active) se utiliza para comprobar si una
unidad mecnica est activada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin
IsMechUnitActive.
Ejemplo 1
IF IsMechUnitActive(SpotWeldGun) CloseGun SpotWeldGun;
Si la unidad mecnica SpotWeldGun est activada, se llama a la rutina CloseGun,
que se utiliza para cerrar la pistola.
Valor de retorno
Tipo de dato: bool
La funcin devuelve lo siguiente:

TRUE, si la unidad mecnica est activada

FALSE, si la unidad mecnica est desactivada

Argumentos
IsMechUnitActive ( MechUnit )

MechUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica.
Sintaxis
IsMechUnitActive (
[MechUnit:=] < variable (VAR) of mecunit> ,

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Activacin de unidades mecnicas ActUnit - Activa una unidad mecnica en la pgina 19


Desactivacin de unidades mecni- DeactUnit - Desactiva una unidad mecnica en la pgicas
na 83
Unidades mecnicas

mecunit - Unidad mecnica en la pgina 1227

948

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.66 IsPers - Determina si es una variable persistente

2.66 IsPers - Determina si es una variable persistente


Utilizacin
IsPers se utiliza para comprobar si un objeto de datos es una variable persistente
o no.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin IsPers.
Ejemplo 1
PROC procedure1 (INOUT num parameter1)
IF IsVar(parameter1) THEN
! For this call reference to a variable
...
ELSEIF IsPers(parameter1) THEN
! For this call reference to a persistent variable
...
ELSE
! Should not happen
EXIT;
ENDIF
ENDPROC

El procedimiento procedure1 toma caminos diferentes en funcin de si el


parmetro recibido parameter1 es una variable o una variable persistente.
Valor de retorno
Tipo de dato: bool
TRUE si el parmetro INOUT comprobado es una variable persistente. FALSE si
el parmetro INOUT comprobado no es una variable persistente.
Argumentos
IsPers (DatObj)

DatObj ()
Data Object
Tipo de dato: cualquier tipo
El nombre formal del parmetro INOUT.
Sintaxis
IsPers(
[ DatObj := ] < var or pers (INOUT) of any type > )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comprobacin de si un dato es una va- IsVar - Determina si un dato es una variable en


riable
la pgina 958

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.66 IsPers - Determina si es una variable persistente
Continuacin
Para obtener ms informacin sobre

Consulte

Tipos de parmetros (modos de acceso) Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Rutinas

950

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.67 IsStopMoveAct - Est activo el indicador de movimiento de paro

2.67 IsStopMoveAct - Est activo el indicador de movimiento de paro


Utilizacin
IsStopMoveAct se usa para obtener el estado de los indicadores de movimiento
de paro de la tarea de movimiento actual o conectada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin IsStopMoveAct.
Ejemplo 1
stopflag2:= IsStopMoveAct(\FromNonMoveTask);

stopflag2 ser TRUE si el indicador de movimiento de paro de las tareas sin


movimiento est activado en la tarea de movimiento actual o conectada. De lo
contrario, ser FALSE.
Ejemplo 2
IF IsStopMoveAct(\FromMoveTask) THEN
StartMove;
ENDIF

Si el indicador de movimiento de paro de la tarea de movimiento est activado en


la tarea de movimiento actual, ser restablecido por la instruccin StartMove.
Valor de retorno
Tipo de dato: bool
El valor de retorno ser TRUE si el indicador de movimiento de paro seleccionado
est activado. De lo contrario, el valor de retorno ser FALSE.
Argumentos
IsStopMoveAct ( [\FromMoveTask] | [\FromNonMoveTask] )

[\FromMoveTask]
Tipo de dato: switch
FromMoveTask se usa para obtener el estado del indicador de movimiento del
tipo de una tarea de movimiento privada.
Este tipo de indicador de movimiento de paro slo puede ser activado por:

La propia tarea de movimiento con la instruccin StopMove

Tras la salida del nivel RestoPath en el programa.

En la ejecucin de un gestor de errores asncrono para errores de proceso


o movimiento antes de cualquier StorePath y tras cualquier RestoPath

[\FromNonMoveTask]
Tipo de dato: switch
FromNonMoveTask se usa para obtener el estado del indicador de movimiento
del tipo de cualquier tarea sin movimiento. Este tipo de indicador de movimiento
de paro slo puede ser activado por cualquier tarea sin movimiento de las tareas
de movimiento conectadas o de todas ellas, con la instruccin StopMove.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.67 IsStopMoveAct - Est activo el indicador de movimiento de paro
Continuacin
Sintaxis
IsStopMoveAct(
[\ FromMoveTask]
| [\ FromNonMoveTask] )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Detencin del movimiento del ro- StopMove - Detiene el movimiento del robot en la pgibot
na 548
Reanudacin del movimiento del StartMove - Reanuda el movimiento del robot en la probot
gina 518

952

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.68 IsStopStateEvent - Comprueba si se ha movido el puntero de programa

2.68 IsStopStateEvent - Comprueba si se ha movido el puntero de programa


Utilizacin
IsStopStateEvent devuelve informacin acerca del movimiento del puntero de
programa (PP) de la tarea de programa actual.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin
IsStopStateEvent.
Ejemplo 1
IF IsStopStateEvent (\PPMoved) = TRUE THEN
! PP has been moved during the last program stop
ELSE
! PP has not been moved during the last program stop
ENDIF
IF IsStopStateEvent (\PPToMain) THEN
! PP has been moved to main routine during the last program stop
ENDIF

Valor de retorno
Tipo de dato: bool
El estado de si el PP se ha movido durante el ltimo estado de paro de programa
y cmo se ha movido.
TRUE Si el PP se ha movido durante el ltimo paro.
FALSE Si el PP no se ha movido durante el ltimo paro.
Si el PP se ha movido a la rutina Main, tanto \PPMoved como \PPToMain
devuelven TRUE.
Si el PP se ha movido a otra rutina, tanto \PPMoved como \PPToMain devuelven
TRUE.
Si el PP se ha movido dentro de una lista de una rutina, \PPMoved devuelve TRUE
y \PPToMain devuelve FALSE.
Tras llamar a una rutina de servicio (manteniendo el contexto de ejecucin en la
secuencia de programa principal), \PPMove devuelve FALSE y \PPToMain devuelve
FALSE.
Argumentos
IsStopStateEvent ([\PPMoved] | [\PPToMain])

[ \PPMoved ]
Tipo de dato: switch
Comprueba si el PP se ha movido.
[ \PPToMain ]
Tipo de dato: switch
Comprueba si el PP se ha movido a Main o a una rutina.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.68 IsStopStateEvent - Comprueba si se ha movido el puntero de programa
Continuacin
Limitaciones
En la mayora de los casos, esta funcin no puede usarse con la ejecucin hacia
atrs o hacia delante, porque el sistema se encuentra en el estado de paro entre
un paso y el siguiente.
Sintaxis
IsStopStateEvent(
[\ PPMoved] | [\ PPToMain] )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Creacin de instrucciones propias

Technical reference manual - RAPID overview,


seccin - Programacin fuera de lnea Creacin de instrucciones propias

954

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.69 IsSyncMoveOn - Comprueba si el modo de movimiento sincronizado est activado

2.69 IsSyncMoveOn - Comprueba si el modo de movimiento sincronizado est


activado
Utilizacin
IsSyncMoveOn se utiliza para comprobar si la tarea de programa actual de tipo
Motion Task tiene activado el modo de movimiento sincronizado.
Desde algunas Non Motion Task tambin es posible comprobar si la Motion
Task conectada se encuentra en el modo de movimiento sincronizado. El parmetro
del sistema Controller/Tasks/Use Mechanical Unit Group define la Motion Task
conectada.
Cuando la Motion Task se est ejecutando en el nivel StorePathIsSyncMoveOn
comprueba si la tarea est en el modo sincronizado en ese nivel,
independientemente del modo sincronizado en el nivel original.
La instruccin IsSyncMoveOn suele utilizarse en un sistema MultiMove con la
opcin Coordinated Robots, pero puede usarse en cualquier sistema y con cualquier
tarea de programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin IsSyncMoveOn.
Ejemplo 1
Ejemplo de programa de la tarea T_ROB1
PERS tasks task_list{2} := [ ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PROC main()
...
MoveL p_zone, vmax, z50, tcp1;
WaitSyncTask sync1, task_list;
MoveL p_fine, v1000, fine, tcp1;
syncmove;
...
ENDPROC
PROC syncmove()
SyncMoveOn sync2, task_list;
MoveL * \ID:=10, v100, z10, tcp1 \WOBJ:= rob2_obj;
MoveL * \ID:=20, v100, fine, tcp1 \WOBJ:= rob2_obj;
SyncMoveOff sync3;
UNDO
SyncMoveUndo;
ENDPROC

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.69 IsSyncMoveOn - Comprueba si el modo de movimiento sincronizado est activado
Continuacin
Ejemplo de programa de la tarea BCK1
PROC main()
...
IF IsSyncMoveOn() THEN
! Connected Motion Task is in synchronized movement mode
ELSE
! Connected Motion Task is in independent mode
ENDIF
...
ENDPROC

En el momento de la ejecucin de IsSyncMoveOn en la tarea de segundo plano


BCK1, se comprueba si la tarea de movimiento conectada en ese momento se
encuentra en el modo de movimiento sincronizado.
Valor de retorno
Tipo de dato: bool
TRUE si la tarea de programa conectada se encuentra en el modo de movimiento
sincronizado o, de lo contrario, FALSE.
Ejecucin de programas
Se comprueba si la tarea de programa actual o conectada se encuentra en el modo
de movimiento sincronizado. Cuando la MotionTask se est ejecutando en el
StorePath level, SyncMoveOn comprueba si la tarea est en el modo
sincronizado en el StorePath level, no en el nivel original.
Sintaxis
IsSyncMoveOn ( )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Especificacin de tareas de programa coo- tasks - Tareas de programa de RAPID en la


perativas
pgina 1298
Identidad para punto de sincronizacin

syncident - Identidad de punto de sincronizacin en la pgina 1293

Inicio de movimientos sincronizados coordi- SyncMoveOn - Inicia los movimientos sincronados


nizados coordinados en la pgina 570
Fin de movimientos sincronizados coordina- SyncMoveOff - Finaliza los movimientos sindos
cronizados coordinados en la pgina 563
Definicin de movimientos independientes SyncMoveUndo - Activa los movimientos independientes en la pgina 582
Almacenamiento de trayectoria y ejecucin StorePath - Almacena la trayectoria cuando
en un nuevo nivel
se produce una interrupcin en la pgina 555

956

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.70 IsSysID - Comprobar la identidad del sistema

2.70 IsSysID - Comprobar la identidad del sistema


Utilizacin
IsSysId (System Identity) puede usarse para comprobar la identidad del sistema,
mediante le nmero de serie del sistema.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin IsSysId.
Ejemplo 1
IF NOT IsSysId("6400-1234") THEN
ErrWrite "System identity fault","Faulty system identity for this
program";
EXIT;
ENDIF

Este programa se ha diseado para un sistema de robot especial con el nmero


de serie 6400-1234 y no puede utilizarse con otro sistema de robot.
Valor de retorno
Tipo de dato: bool
TRUE = El nmero de serie del sistema de robot es el mismo que el especificado
en la comprobacin.
FALSE = El nmero de serie del sistema de robot no es el mismo que el especificado
en la comprobacin.
Argumentos
IsSysId ( SystemId)

SystemId
Tipo de dato: string
El nmero de serie del sistema de robot que indica la identidad del sistema.
Sintaxis
IsSysId (
[ SystemId:= ] < expression (IN) of string> )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin Consulte
sobre
Lectura de informacin del siste- GetSysInfo - Obtener informacin acerca del sistema en
ma
la pgina 921

3HAC16581-5 Revisin: L

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

2 Funciones
2.71 IsVar - Determina si un dato es una variable

2.71 IsVar - Determina si un dato es una variable


Utilizacin
IsVar se utiliza para comprobar si un objeto de datos es una variable.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin IsVar.
Ejemplo 1
PROC procedure1 (INOUT num parameter1)
IF IsVAR(parameter1) THEN
! For this call reference to a variable
...
ELSEIF IsPers(parameter1) THEN
! For this call reference to a persistent variable
...
ELSE
! Should not happen
EXIT;
ENDIF
ENDPROC

El procedimiento procedure1 toma caminos diferentes en funcin de si el


parmetro recibido parameter1 es una variable o una variable persistente.
Valor de retorno
Tipo de dato: bool
TRUE si el parmetro INOUT comprobado es una variable. FALSE si el parmetro
INOUT comprobado no es una variable.
Argumentos
IsVar (DatObj)

DatObj
Data Object
Tipo de dato: cualquier tipo
El nombre formal del parmetro INOUT.
Sintaxis
IsVar(
[ DatObj := ] < var or pers (INOUT) of any type > )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comprobacin de si un dato es una variable IsPers - Determina si es una variable persistenpersistente


te en la pgina 949
Tipos de parmetros (modos de acceso)

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Rutinas

958

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.72 MaxRobSpeed - Velocidad mxima del robot

2.72 MaxRobSpeed - Velocidad mxima del robot


Utilizacin
MaxRobSpeed (Maximum Robot Speed) devuelve la velocidad de TCP mxima del
tipo de robot utilizado.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin MaxRobSpeed.
Ejemplo 1
TPWrite "Max. TCP speed in mm/s for my robot="\Num:=MaxRobSpeed();

Se escribe el mensaje Max. TCP speed in mm/s for my robot = 5000 en


el FlexPendant.
Valor de retorno
Tipo de dato: num
Devuelve la velocidad mxima del TCP en mm/seg para el tipo de robot utilizado
y los valores normales prcticos para el TCP.
Si utiliza valores de TCP extremadamente altos en la base de coordenadas de la
herramienta, debe crear sus propios datos de velocidad con una velocidad de TCP
mayor que la que devuelve MaxRobSpeed.
Sintaxis
MaxRobSpeed ( )

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Definicin de velocidad

speeddata - Datos de velocidad en la pgina 1276

Definicin de la velocidad mxima VelSet - Cambia la velocidad programada en la pgina 709

3HAC16581-5 Revisin: L

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

2 Funciones
2.73 MirPos - Obtencin de la posicin espejo de una posicin

2.73 MirPos - Obtencin de la posicin espejo de una posicin


Utilizacin
MirPos (Mirror Position) se utiliza para obtener los valores espejo de las partes
de traslacin y rotacin de una posicin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin MirPos.
CONST robtarget p1:= [...];
VAR robtarget p2;
PERS wobjdata mirror:= [...];
...
p2 := MirPos(p1, mirror);

p1 es un valor de tipo robtarget que contiene una posicin del robot y una
orientacin de la herramienta. La informacin espejo se obtiene en el plano xy de
la base de coordenadas definido por mirror, respecto del sistema de coordenadas
mundo. El resultado es un nuevo dato de tipo robtarget, que se almacena en p2.
Valor de retorno
Tipo de dato: robtarget
La nueva posicin, que es la posicin espejo de la posicin de entrada.
Argumentos
MirPos (Point MirPlane [\WObj] [\MirY])

Point
Tipo de dato: robtarget
La posicin de entrada del robot. La parte de orientacin de esta posicin define
la orientacin actual del sistema de coordenadas de la herramienta.
MirPlane
Mirror Plane
Tipo de dato: wobjdata
Los datos del objeto de trabajo que definen el plano espejo. El plano espejo es el
plano xy de la base de coordenadas del objeto definida en MirPlane. La ubicacin
de la base de coordenadas del objeto se define respecto de la base de coordenadas
del usuario (tambin definida en MirPlane) que a su vez se define respecto de
la base de coordenadas mundo.
[\WObj]
Work Object
Tipo de dato: wobjdata
Se definen los datos del objeto de trabajo que definen la base de coordenadas del
objeto y la base de coordenadas del usuario respecto de la posicin de entrada,
Point. Si no se utiliza el argumento, la posicin se define respecto del sistema de
coordenadas mundo.
IMPORTANTE!
Contina en la pgina siguiente
960

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.73 MirPos - Obtencin de la posicin espejo de una posicin
Continuacin
Si la posicin se crea con un objeto de trabajo activo, es necesario hacer referencia
al objeto en el argumento.
[\MirY]
Mirror Y
Tipo de dato: switch
Si se omite este modificador, que es el comportamiento predeterminado, se obtiene
una imagen espejo de la base de coordenadas de la herramienta en cuanto al eje
x y al eje z. Si se utiliza este modificador, se obtiene una imagen espejo de la base
de coordenadas de la herramienta en cuanto al eje y, y al eje z.
Limitaciones
No se realiza ningn reclculo de la parte de configuracin del robot que se incluye
en los datos de entrada robtarget.
Si se utiliza una base de coordenadas, la unidad coordinada debe estar dentro de
la misma tarea que el robot.
Sintaxis
MirPos(
[ Point := ] < expression (IN) of robtarget>,
[MirPlane :=] <expression (IN) of wobjdata>,
[\WObj := <expression (IN) of wobjdata> ]
[\MirY ])

Una funcin con un valor de retorno del tipo de dato robtarget.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

Datos de posicin

robtarget - Datos de posicin en la pgina 1266

Datos del objeto de trabajo

wobjdata - Datos del objeto de trabajo en la


pgina 1323

3HAC16581-5 Revisin: L

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

2 Funciones
2.74 ModExist - Comprobar si un mdulo de programa existe

2.74 ModExist - Comprobar si un mdulo de programa existe


Utilizacin
ModExist (Module Exist) se utiliza para comprobar si un mdulo determinado
existe o no en la tarea de programa.
La bsqueda se realiza en primer lugar en los mdulos cargados y, a continuacin,
si no se encuentra ninguno, en los mdulos instalados.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ModExist.
Ejemplo 1
VAR bool mod_exist;
mod_exist:=ModExist ("MyModule");

Si el mdulo MyModule existe en la tarea, la funcin devuelve TRUE. Si no es as,


la funcin devuelve FALSE.
Valor de retorno
Tipo de dato: bool
TRUE si el mdulo se encuentra, y FALSE si no se encuentra.
Argumentos
ModExist (ModuleName)

ModuleName
Tipo de dato: string
El nombre del mdulo a buscar.
Sintaxis
ModExist (
[ ModuleName := ] < expression (IN) of string > )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Bsqueda de la hora de modificacin del


mdulo cargado

ModTime - Obtiene la hora de modificacin del


mdulo cargado en la pgina 963

962

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.75 ModTime - Obtiene la hora de modificacin del mdulo cargado

2.75 ModTime - Obtiene la hora de modificacin del mdulo cargado


Utilizacin
ModTime (Modify Time) se usa para obtener la hora ms reciente de modificacin
del archivo del mdulo cargado. El mdulo se especifica con su nombre y debe
encontrarse en la memoria de tareas. La hora se indica en segundos a partir de
las 00:00:00 horas, hora de Greenwich, del 1 de enero de 1970. La hora se devuelve
como un valor de tipo num y opcionalmente tambin en un valor de tipo stringdig.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ModTime.
Consulte tambin Ms ejemplos en la pgina 964.
Ejemplo 1
MODULE mymod
VAR num mytime;
PROC printMyTime()
mytime := ModTime("mymod");
TPWrite "My time is "+NumToStr(mytime,0);
ENDPROC
ENDMODULE

Valor de retorno
Tipo de dato: num
El tiempo, medido en segundos, desde las 00:00:00 horas, horario de Greenwich,
del 1 de enero de 1970.
Argumentos
ModTime ( Object [\StrDig] )

Object
Tipo de dato: string
El nombre del mdulo.
[\StrDig]
String Digit
Tipo de dato: stringdig
Para obtener la hora de carga del mdulo en una representacin de tipo
stringdig.
Su uso adicional en StrDigCmp permite gestionar enteros positivos superiores a
8388608 con una representacin exacta.
Ejecucin de programas
Esta funcin devuelve un valor numrico que especifica la hora de ltima
modificacin del archivo, antes de que fuera cargado como un mdulo de programa
en el sistema.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.75 ModTime - Obtiene la hora de modificacin del mdulo cargado
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin ModTime.
Ejemplo 1
IF FileTime ("HOME:/mymod.mod" \ModifyTime)
> ModTime ("mymod") THEN
UnLoad "HOME:/mymod.mod";
Load \Dynamic, "HOME:/mymod.mod";
ENDIF

Este programa recarga un mdulo si el archivo de origen es ms reciente. Utiliza


ModTime para obtener la hora de la ltima modificacin del mdulo especificado
y para compararlo con los valores de FileTime\ModifyTime del origen. A
continuacin, si el origen es ms reciente, el programa descarga y carga de nuevo
el mdulo.
Limitacin de este ejemplo: El tipo de dato num no puede manejar enteros positivos
superiores a 8388608 segundos con una representacin exacta. Para obtener una
mejor resolucin, consulte el ejemplo de la funcin StrDigCmp.
Gestin de errores
Si no hay ningn mdulo con el nombre especificado en la tarea de programa, la
variable de sistema ERRNO cambia a ERR_MOD_NOT_LOADED. A continuacin,
este error puede ser gestionado en el gestor de errores.
Limitaciones
Esta funcin devuelve siempre 0 si se usa en un mdulo que est codificado o
instalado de forma compartida.
Sintaxis
ModTime (
[ Object := ] < expression (IN) of string>
[ '\' StrDig := < variable (VAR) of stringdig> ] )

A function with a return value of the data type num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Obtencin de informacin de tiempo sobre FileTime - Obtiene la informacin de hora de


un archivo
un archivo en la pgina 906
Cadena de caracteres con slo dgitos

stringdig - Cadena de caracteres con slo dos


dgitos en la pgina 1289

Comparar dos cadenas que slo contienen StrDigCmp - Comparar dos cadenas que slo
dgitos
contienen dgitos en la pgina 1066

964

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.76 MotionPlannerNo - Obtiene el nmero de planificador de movimientos conectado

2.76 MotionPlannerNo - Obtiene el nmero de planificador de movimientos conectado


Utilizacin
MotionPlannerNodevuelve el nmero de planificador de movimientos conectado.
Si ejecuta MotionPlannerNo en una tarea de movimiento, ste devuelve su
nmero de planificador. En caso contrario, si ejecuta MotionPlannerNo en una
tarea sin movimiento se devuelve el nmero de planificador de movimientos
conectado acorde con la configuracin de los parmetros del sistema.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin
MotionPlannerNo.
Ejemplo 1
!Motion task T_ROB1
PERS string buffer{6} := [stEmpty, stEmpty, stEmpty, stEmpty,
stEmpty, stEmpty];
VAR num motion_planner;
PROC main()
...
MoveL point, v1000, fine, tcp1;
motion_planner := MotionPlannerNo();
buffer[motion_planner] := "READY";
...
ENDPROC
!Background task BCK1
PERS string buffer{6};
VAR num motion_planner;
VAR string status;
PROC main()
...
motion_planner := MotionPlannerNo();
status := buffer[motion_planner];
...
ENDPROC
!Motion T_ROB2
PERS string buffer{6};
VAR num motion_planner;
PROC main()
...
MoveL point, v1000, fine, tcp1;
motion_planner := MotionPlannerNo();
buffer[motion_planner] := "READY";
...
ENDPROC
!Background task BCK2
PERS string buffer{6};

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.76 MotionPlannerNo - Obtiene el nmero de planificador de movimientos conectado
Continuacin
VAR num motion_planner;
VAR string status;
PROC main()
...
motion_planner := MotionPlannerNo();
status := buffer[motion_planner];
...
ENDPROC

Utilice la funcin MotionPlannerNo para determinar qu nmero de planificador


de movimientos est conectado a la tarea. Puede implementarse exactamente el
mismo cdigo en todas las tareas de movimiento y las tareas en segundo plano.
Despus todas las tareas en segundo plano pueden comprobar el estado de su
tarea de movimiento conectada.
Valor de retorno
Tipo de dato:num
El nombre del planificador de movimientos conectado. En las tareas sin movimiento,
se devuelve el nmero de planificador de movimientos de la unidad mecnica
asociada.
El rango de valor de retorno es de 1 a 6.
Sintaxis
MotionPlannerNo( )

A function with a return value of the data type num.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Especificacin de tareas de programa Manual de referencia tcnica - Parmetros del sistecooperativas
ma, seccin Controller - Task

966

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.77 NonMotionMode - Lee el modo de ejecucin sin movimiento

2.77 NonMotionMode - Lee el modo de ejecucin sin movimiento


Utilizacin
NonMotionMode(Non-Motion Execution Mode) se usa para leer el modo de
ejecucin sin movimiento actual de la tarea del programa. El modo de ejecucin
sin movimiento se selecciona o deselecciona desde el FlexPendant, dentro de la
opcin de men ABB\Panel de control\Supervisin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin NonMotionMode.
Ejemplo 1
IF NonMotionMode() =TRUE THEN
...
ENDIF

La seccin de programa slo se ejecuta si el programa no se encuentra en el modo


de ejecucin sin movimiento.
Valor de retorno
Tipo de dato: bool
El modo sin movimiento actual, con uno de los valores definidos en la tabla
siguiente.
Valor de retorno Constante simblica Comentario
0

FALSE

No se usa la ejecucin sin movimiento

TRUE

Se usa la ejecucin sin movimiento

Argumentos
NonMotionMode ( [ \Main] )

[ \Main ]
Tipo de dato: switch
Devuelve el modo de ejecucin actual para la tarea de movimiento conectada. Se
utiliza en un sistema multitarea para obtener el modo de ejecucin actual para la
tarea real, si se trata de una tarea de movimiento o una tarea de movimiento
conectada, si la funcin NonMotionMode se ejecuta en una tarea sin movimiento.
Si se omite el argumento, el valor de retorno siempre refleja el modo de ejecucin
opuesto de la tarea de programa que ejecuta la funcin NonMotionMode.
Recuerde que el modo de ejecucin est conectado al sistema y no a ninguna
tarea. Esto quiere decir que todas las tareas de un sistema obtienen el mismo
valor de retorno de NonMotionMode.
Sintaxis
NonMotionMode ( [\Main])

Una funcin con un valor de retorno del tipo de dato bool.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.77 NonMotionMode - Lee el modo de ejecucin sin movimiento
Continuacin
Informacin relacionada
Para obtener ms informacin Consulte
sobre
Lectura del modo de funciona- OpMode - Lee el modo de funcionamiento en la pgina 976
miento

968

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.78 NOrient - Normaliza la orientacin

2.78 NOrient - Normaliza la orientacin


Utilizacin
NOrient (Normalize Orientation) se utiliza para normalizar una orientacin no
normalizada (cuaternio).
Descripcin
La orientacin debe estar normalizada, es decir, la suma de los cuadrados debe
ser igual a 1:

xx0500002452

Si la orientacin est ligeramente desnormalizada, es posible normalizarla. El error


de normalizacin es el valor absoluto de la suma de los cuadrados de los
componentes de orientacin. Se considera que la orientacin est ligeramente
desnormalizada si el error de normalizacin es superior a 0,00001 e inferior a 0,1.
Si el error de normalizacin es superior a 0,1, no puede utilizarse la orientacin.

xx0500002453

normerr > 0,1

No utilizable

normerr > 0,00001 AND normerr <= 0,1

Levemente no normalizada

normerr <= 0,00001

Normalizada

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin NOrient.
Ejemplo 1
Tenemos una posicin ligeramente desnormalizada (0,707170, 0, 0, 0,707170).

xx0500002451

VAR orient unnormorient := [0.707170, 0, 0, 0.707170];


VAR orient normorient;
...
...
normorient := NOrient(unnormorient);

La normalizacin de la orientacin (0,707170, 0, 0, 0,707170) se convierte en


(0,707107, 0, 0, 0,707107).
Valor de retorno
Tipo de dato: orient
La orientacin normalizada.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.78 NOrient - Normaliza la orientacin
Continuacin
Argumentos
NOrient (Rotation)

Rotacin
Tipo de dato: orient
La orientacin que debe ser normalizada.
Sintaxis
NOrient(
[Rotation :=] <expression (IN) of orient>
)

Una funcin con un valor de retorno del tipo de dato orient.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

970

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.79 NumToDnum - Convierte num a dnum

2.79 NumToDnum - Convierte num a dnum


Utilizacin
NumToDnum convierte un valor num en un valor dnum.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la funcin NumToDnum.
Ejemplo 1
VAR num mynum:=55;
VAR dnum mydnum:=0;
mydnum:=NumToDnum(mynum);

El valor num 55 es devuelto por la funcin como el valor dnum 55.


Valor de retorno
Tipo de dato: dnum
El valor de retorno del tipo dnum tendr el mismo valor que el valor de entrada del
tipo num.
Argumentos
NumToDnum (Value)

Value
Tipo de dato: num
El valor numrico a convertir.
Sintaxis
NumToDnum
[ Value := ] < expression (IN) of num > ;

Una funcin con un valor de retorno del tipo de dato dnum.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Num tipo de dato

num - Valores numricos en la pgina 1234

Dnum tipo de dato

dnum - Valores numricos dobles en la pgina 1190

3HAC16581-5 Revisin: L

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

2 Funciones
2.80 NumToStr - Convierte un valor numrico en una cadena de caracteres

2.80 NumToStr - Convierte un valor numrico en una cadena de caracteres


Utilizacin
NumToStr (Numeric To String) se utiliza para convertir un valor numrico en una
cadena.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin NumToStr.
Ejemplo 1
VAR string str;
str := NumToStr(0.38521,3);

Se asigna a la variable str el valor "0.385".


Ejemplo 2
reg1 := 0.38521;
str := NumToStr(reg1, 2\Exp);

Se asigna a la variable str el valor "3.85E-01".


Valor de retorno
Tipo de dato: string
El valor numrico, convertido en una cadena con el nmero especificado de
decimales, en notacin cientfica si as se solicita. Si es necesario, el valor numrico
se redondea. Si no se incluye ningn decimal, se suprime el punto decimal.
Argumentos
NumToStr (Val Dec [\Exp])

Val
Value
Tipo de dato: num
El valor numrico a convertir.
Dec
Decimals
Tipo de dato: num
Nmero de decimales. El nmero de decimales no debe ser negativo ni mayor que
la precisin disponible para los valores numricos.
[\Exp]
Exponent
Tipo de dato: switch
Para usar exponente en el valor de retorno.

Contina en la pgina siguiente


972

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.80 NumToStr - Convierte un valor numrico en una cadena de caracteres
Continuacin
Sintaxis
NumToStr(
[ Val := ] <expression (IN) of num>
[ Dec := ] <expression (IN) of num>
[ \Exp ]
)

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Funciones para cadenas de carac- Technical reference manual - RAPID overview, seccin
teres
Resumen sobre RAPID - Funciones para cadenas de
caracteres
Definicin de cadena de caracteres string - Cadenas de caracteres en la pgina 1287
Valores de cadena de caracteres Technical reference manual - RAPID overview, seccin
Caractersticas bsicas - Elementos bsicos
Convertir un valor numrico dnum DnumToStr - Convierte un valor numrico en una cadeen una cadena de caracteres
na de caracteres en la pgina 890

3HAC16581-5 Revisin: L

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

2 Funciones
2.81 Offs - Desplaza una posicin del robot

2.81 Offs - Desplaza una posicin del robot


Utilizacin
Offs se utiliza para aadir un offset en el sistema de coordenadas de objeto a
una posicin de robot.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Offs.
Consulte tambin Ms ejemplos en la pgina 975.
MoveL Offs(p2, 0, 0, 10), v1000, z50, tool1;

Se mueve el robot a un punto que se encuentra a 10 mm de la posicin p2 (en la


direccin z).
p1 := Offs (p1, 5, 10, 15);

Se desplaza la posicin del robot p15 mm en la direccin x, 10 mm en la direccin


y, y 15 mm en la direccin z.
Valor de retorno
Tipo de dato: robtarget
Los datos de la posicin desplazada.
Argumentos
Offs (Point XOffset YOffset ZOffset)

Point
Tipo de dato: robtarget
Los datos de posicin del desplazamiento.
XOffset
Tipo de dato: num
El desplazamiento en mm en la direccin x del sistema de coordenadas de objeto.
YOffset
Tipo de dato: num
El desplazamiento en la direccin y del sistema de coordenadas de objeto.
ZOffset
Tipo de dato: num
El desplazamiento en la direccin z del sistema de coordenadas de objeto.

Contina en la pgina siguiente


974

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.81 Offs - Desplaza una posicin del robot
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin Offs.
Ejemplo 1
PROC pallet (num row, num column, num distance, PERS tooldata tool,
PERS wobjdata wobj)
VAR robtarget palletpos:=[[0, 0, 0], [1, 0, 0, 0], [0, 0, 0, 0],
[9E9, 9E9, 9E9, 9E9, 9E9, 9E9]];
palettpos := Offs (palettpos, (row-1)*distance, (column-1)*distance,
0);
MoveL palettpos, v100, fine, tool\WObj:=wobj;
ENDPROC

Se crea una rutina para tomar piezas de un pal. Cada pal se define como un
objeto de trabajo (consulte la figura siguiente). La pieza que debe tomarse (fila y
columna) y la distancia existente entre las partes se indican como parmetros de
entrada. El aumento del ndice de fila y columna se realiza fuera de la rutina.
La figura muestra la posicin y la orientacin del pal que se especifican mediante
la definicin de un objeto de trabajo.

palletpos row1, column1


Columnas

Filas

Eje Y
O O

O O
Eje X
O O

xx050002300_es

Sintaxis
Offs (
[Point :=] <expression (IN) of robtarget> ,
[XOffset :=] <expression (IN) of num> ,
[YOffset :=] <expression (IN) of num> ,
[ZOffset :=] <expression (IN) of num> )

Una funcin con un valor de retorno del tipo de dato robtarget.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos de posicin

robtarget - Datos de posicin en la pgina 1266

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

Instrucciones de posicionamiento

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Movimiento

3HAC16581-5 Revisin: L

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

2 Funciones
2.82 OpMode - Lee el modo de funcionamiento

2.82 OpMode - Lee el modo de funcionamiento


Utilizacin
OpMode(Operating Mode) se utiliza para leer el modo de funcionamiento actual
del sistema.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin OpMode.
Ejemplo 1
TEST OpMode()
CASE OP_AUTO:
...
CASE OP_MAN_PROG:
...
CASE OP_MAN_TEST:
...
DEFAULT:
...
ENDTEST

Se ejecutan secciones distintas del programa en funcin del modo de


funcionamiento actual.
Valor de retorno
Tipo de dato: symnum
El modo de funcionamiento actual, con uno de los valores definidos en la tabla
siguiente.
Valor de retor- Constante simblica Comentario
no
0

OP_UNDEF

Modo de funcionamiento no definido

OP_AUTO

Modo de funcionamiento automtico

OP_MAN_PROG

Modo de funcionamiento manual a 250 mm/seg


como mximo

OP_MAN_TEST

Modo de funcionamiento manual a mxima velocidad, 100 %

Sintaxis
OpMode( )

Una funcin con un valor de retorno del tipo de dato symnum.


Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Distintos modos de funcionamiento Manual del operador - IRC5 con FlexPendant
Lectura del modo de ejecucin

RunMode - Obtiene el modo de ejecucin en la pgina 1044

976

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.83 OrientZYX - Genera una orientacin a partir de ngulos Euler

2.83 OrientZYX - Genera una orientacin a partir de ngulos Euler


Utilizacin
OrientZYX (Orient from Euler ZYX angles) se utiliza para generar una variable de
tipo orient a partir de ngulos Euler.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin OrientZYX.
Ejemplo 1
VAR num anglex;
VAR num angley;
VAR num anglez;
VAR pose object;
...
object.rot := OrientZYX(anglez, angley, anglex)

Valor de retorno
Tipo de dato: orient
La orientacin obtenida a partir de ngulos Euler.
Las rotaciones se realizan en el orden siguiente:

Rotacin alrededor del eje z

Rotacin alrededor del nuevo eje y

Rotacin alrededor del nuevo eje x

Argumentos
OrientZYX (ZAngle YAngle XAngle)

ZAngle
Tipo de dato: num
La rotacin, en grados, alrededor del eje Z.
YAngle
Tipo de dato: num
La rotacin, en grados, alrededor del eje Y.
XAngle
Tipo de dato: num
La rotacin, en grados, alrededor del eje X.
Las rotaciones se realizan en el orden siguiente:

Rotacin alrededor del eje z

Rotacin alrededor del nuevo eje y

Rotacin alrededor del nuevo eje x

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.83 OrientZYX - Genera una orientacin a partir de ngulos Euler
Continuacin
Sintaxis
OrientZYX(
[ZAngle:=] <expression (IN) of num> ,
[YAngle :=] <expression (IN) of num> ,
[XAngle:=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato orient.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Manual del operador - IRC5 con FlexPendant,


seccin Resumen sobre RAPID - Matemticas

978

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.84 ORobT - Elimina el desplazamiento de programa de una posicin

2.84 ORobT - Elimina el desplazamiento de programa de una posicin


Utilizacin
ORobT (Object Robot Target) se utiliza para transformar una posicin del sistema
de coordenadas de desplazamiento de programa al sistema de coordenadas del
objeto y/o eliminar un offset de los ejes externos.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ORobT.
Consulte tambin Ms ejemplos en la pgina 980.
Ejemplo 1
VAR robtarget p10;
VAR robtarget p11;
VAR num wobj_diameter;
p10 := CRobT(\Tool:=tool1 \WObj:=wobj_diameter);
p11 := ORobT(p10);

Se almacenan en p10 y p11 las posiciones actuales de los ejes del robot y de
los ejes externos. Los valores almacenados en p10 dependen del sistema de
coordenadas ProgDisp/ExtOffs. Los valores almacenados en p11 dependen del
sistema de coordenadas del objeto sin ningn desplazamiento de programa ni
offset en los ejes externos.
Valor de retorno
Tipo de dato: robtarget
Los datos de posicin transformados.
Argumentos
ORobT (OrgPoint [\InPDisp] | [\InEOffs])

OrgPoint
Original Point
Tipo de dato: robtarget
El punto original que debe transformarse.
[\InPDisp]
In Program Displacement
Tipo de dato: switch
Devuelve la posicin del TCP en el sistema de coordenadas ProgDisp, es decir,
slo elimina el offset de los ejes externos.
[\InEOffs]
In External Offset
Tipo de dato: switch
Devuelve los ejes externos en el sistema de coordenadas del offset, es decir, slo
elimina el desplazamiento de programa del robot.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.84 ORobT - Elimina el desplazamiento de programa de una posicin
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la funcin ORobT.
Ejemplo 1
p10 := ORobT(p10 \InEOffs );

La funcin ORobT eliminar cualquier desplazamiento de programa que est


activo, dejando la posicin del TCP respecto del sistema de coordenadas del
objeto. Los ejes externos permanecen en el sistema de coordenadas del offset.
Ejemplo 2
p10 := ORobT(p10 \InPDisp );

La funcin ORobT eliminar cualquier offset de los ejes externos. La posicin del
TCP permanece en el sistema de coordenadas ProgDisp.
Sintaxis
ORobT (
[ OrgPoint := ] < expression (IN) of robtarget>
[\InPDisp] | [\InEOffs])

Una funcin con un valor de retorno del tipo de dato robtarget.


Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Definicin de desplazamientos de
programa para el robot

PDispOn - Activa el desplazamiento de programa en


la pgina 337
PDispSet - Activa un desplazamiento de programa a
partir de una base de coordenadas conocida en la
pgina 342

Definicin de un offset para los ejes EOffsOn - Activa un offset de ejes externos en la pexternos
gina 92
EOffsSet - Activa un offset de ejes externos a partir
de valores conocidos en la pgina 94
Sistemas de coordenadas

Manual del operador - IRC5 con FlexPendant, seccin


Principios de movimiento y E/S - Sistemas de coordenadas

980

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.85 ParIdPosValid - Posicin de robot vlida para la identificacin de parmetros

2.85 ParIdPosValid - Posicin de robot vlida para la identificacin de parmetros


Utilizacin
ParIdPosValid (Parameter Identification Position Valid) comprueba si la posicin
del robot es vlida para la identificacin actual de parmetros, por ejemplo la
identificacin de carga de la herramienta o de la carga til.
Esta instruccin slo puede usarse en la tarea main o, si se cuenta con un sistema
MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ParIdPosValid.
Ejemplo 1
VAR jointtarget joints;
VAR bool valid_joints{12};
! Read the current joint angles
joints := CJointT();
! Check if valid robot position
IF ParIdPosValid (TOOL_LOAD_ID, joints, valid_joints) = TRUE THEN
! Valid position for load identification
! Continue with LoadId
...
ELSE
! Not valid position for one or several axes for load
! identification
! Move the robot to the output data given in variable joints
! and do ParIdPosValid once again
...
ENDIF

Se comprueba si la posicin del robot es vlida antes de realizar la identificacin


de carga de la herramienta.
Valor de retorno
Tipo de dato: bool
TRUE si la posicin del robot es vlida para la identificacin de parmetros actual.
FALSE si la posicin del robot no es vlida para la identificacin de parmetros
actual.
Argumentos
ParIdPosValid (ParIdType Pos AxValid [\ConfAngle])

ParIdType
Tipo de dato: paridnum
Un tipo de identificacin de parmetros de los definidos en la tabla siguiente
Valor

Constante simblica

Comentario

TOOL_LOAD_ID

Identificacin de la carga de la herramienta

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.85 ParIdPosValid - Posicin de robot vlida para la identificacin de parmetros
Continuacin
Valor

Constante simblica

Comentario

PAY_LOAD_ID

Identificacin de la carga til (consulte la instruccin


GripLoad)

IRBP_K

Identificacin de la carga del manipulador externo


IRBP K

IRBP_L

Identificacin de la carga del manipulador externo


IRBP L

IRBP_C

Identificacin de la carga del manipulador externo


IRBP C

IRBP_C_INDEX

Identificacin de la carga del manipulador externo


IRBP C_INDEX

IRBP_T

Identificacin de la carga del manipulador externo


IRBP T

IRBP_R

Identificacin de la carga del manipulador externo


IRBP R

IRBP_A

Identificacin de la carga del manipulador externo


IRBP A

IRBP_B

Identificacin de la carga del manipulador externo


IRBP B

IRBP_D

Identificacin de la carga del manipulador externo


IRBP D

Pos
Tipo de dato: jointtarget
La variable especifica los ngulos actuales de todos los ejes del robot y de los
ejes externos. La variable se actualiza mediante ParIdPosValid de acuerdo con
la tabla siguiente.
Valor de eje de entrada

Valor de eje de salida

Vlido

No cambia

No vlido

Cambia a un valor adecuado

AxValid
Tipo de dato: bool
Una variable de matriz con 12 elementos que corresponden a 6 ejes del robot y 6
ejes externos. La variable se actualiza mediante ParIdPosValid de acuerdo con
la tabla siguiente.
Valor de eje de entrada de Pos

Estado de salida de AxValid

Vlido

TRUE

No vlido

FALSE

[ \ConfAngle ]
Tipo de dato: num

Contina en la pgina siguiente


982

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.85 ParIdPosValid - Posicin de robot vlida para la identificacin de parmetros
Continuacin
El argumento de opcin para la especificacin de un ngulo de configuracin
especfico +/- grados para su uso en la identificacin de parmetros.

*)

*)

Identificacin de carga en la posicin


del eje 6 en otra configuracin
(se selecciona con ConfAngle )

ConfAngle positivo en grados


*) Medicin de movimientos en distintas
configuraciones del eje 6

Eje 6

Identificacin de carga de la posicin del eje 6


en el inicio (se verifica conParIdPosValid )

xx0500002493_es

Si no se especifica este argumento, el valor predeterminado es +90 grados.


Mn. + -30 grados. Valor ptimo + o -90 grados.
Gestin de errores
Si se produce un error, la variable de sistema ERRNO cambia a ERR_PID_RAISE_PP.
A continuacin, este error puede ser gestionado en el gestor de errores.
Sintaxis
ParIdPosValid(
[ ParIdType := ] <expression (IN) of paridnum> ,
[ Pos := ] <variable (VAR) of jointtarget> ,
[ AxValid := ] <array variable {*} (VAR) of bool>
[ \ ConfAngle := <expression (IN) of num> ] )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipo de identificacin de parmetro

paridnum - Tipo de identificacin de parmetro en la pgina 1243

Tipo de robot vlido

ParIdRobValid - Tipo de robot vlido para la


identificacin de parmetros en la pgina 984

Identificacin de carga de la herramienta o LoadId - Identificacin de carga de la herrala carga til


mienta o la carga til en la pgina 221
Identificacin de carga de posicionadores
(IRBP)

ManLoadIdProc - Identificacin de carga de


los manipuladores IRBP en la pgina 228

3HAC16581-5 Revisin: L

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

2 Funciones
2.86 ParIdRobValid - Tipo de robot vlido para la identificacin de parmetros

2.86 ParIdRobValid - Tipo de robot vlido para la identificacin de parmetros


Utilizacin
ParIdRobValid (Parameter Identification Robot Valid) comprueba si el tipo de
robot o manipulador es vlido para la identificacin actual de parmetros, por
ejemplo la identificacin de carga de la herramienta o de la carga til.
Esta instruccin slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ParIdRobValue.
Ejemplo 1
TEST ParIdRobValid (TOOL_LOAD_ID)
CASE ROB_LOAD_VAL:
! Possible to do load identification of tool in actual robot
type
...
CASE ROB_LM1_LOAD_VAL:
! Only possible to do load identification of tool with
! IRB 6400FHD if actual load < 200 kg
...
CASE ROB_NOT_LOAD_VAL:
! Not possible to do load identification of tool in actual
robot type
...
ENDTEST

Valor de retorno
Tipo de dato: paridvalidnum
Indica si la identificacin del parmetro especificado puede realizarse con el tipo
de robot o manipulador actual, con los valores definidos en la tabla siguiente.
Valor

Constante simblica

Comentario

10

ROB_LOAD_VAL

Tipo de robot o manipulador vlido para la identificacin


actual de parmetros

11

ROB_NOT_LOAD_VAL No es ningn tipo vlido para la identificacin actual de


parmetros

12

ROB_LM1_LOAD_VAL Tipo de robot vlido IRB 6400FHD para la identificacin


actual de parmetros, si la carga real es < 200 kg

Argumentos
ParIdRobValid(ParIdType [\MechUnit] [\AxisNo])

ParIdType
Tipo de dato: paridnum

Contina en la pgina siguiente


984

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.86 ParIdRobValid - Tipo de robot vlido para la identificacin de parmetros
Continuacin
Un tipo de identificacin de parmetros de los definidos en la tabla siguiente.
Valor

Constante simblica

Comentario

TOOL_LOAD_ID

Identificacin de la carga de la herramienta del robot

PAY_LOAD_ID

Identificacin de la carga til del robot (consulte la instruccin GripLoad)

IRBP_K

Identificacin de la carga del manipulador externo IRBP


K

IRBP_L

Identificacin de la carga del manipulador externo IRBP


L

IRBP_C

Identificacin de la carga del manipulador externo IRBP


C

IRBP_C_INDEX

Identificacin de la carga del manipulador externo IRBP


C_INDEX

IRBP_T

Identificacin de la carga del manipulador externo IRBP


T

IRBP_R

Identificacin de la carga del manipulador externo IRBP


R

IRBP_A

Identificacin de la carga del manipulador externo IRBP


A

IRBP_B

Identificacin de la carga del manipulador externo IRBP


B

IRBP_D

Identificacin de la carga del manipulador externo IRBP


D

[ \MechUnit ]
Mechanical Unit
Tipo de dato: mecunit
La unidad mecnica utilizada para la identificacin de carga. Slo debe
especificarse en el caso de los manipuladores externos. Si se omite este argumento,
se utiliza el robot de TCP de la tarea.
[ \AxisNo ]
Axis number
Tipo de dato: num
Dentro de la unidad mecnica, el nmero del eje que sostiene la carga que se
desea identificar. Slo debe especificarse en el caso de los manipuladores externos.
Si se utiliza el argumento \MechUnit, debe utilizarse \AxisNo. El argumento
\AxisNo no puede usarse sin \MechUnit.
Gestin de errores
Si se produce un error, la variable de sistema ERRNO cambia a ERR_PID_RAISE_PP.
A continuacin, este error puede ser gestionado en el gestor de errores.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.86 ParIdRobValid - Tipo de robot vlido para la identificacin de parmetros
Continuacin
Sintaxis
ParIdRobValid(
[ParIdType :=] <expression (IN) of paridnum>
[\ MechUnit := <variable (VAR) of mecunit>]
[\ AxisNo := <expression (IN) of num>] )

Una funcin con un valor de retorno del tipo de dato paridvalidnum.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipo de identificacin de parmetro

paridnum - Tipo de identificacin de parmetro en la pgina 1243

Unidad mecnica a identificar

mecunit - Unidad mecnica en la pgina 1227

Resultado de esta funcin

paridvalidnum - Resultado de ParIdRobValid


en la pgina 1245

Posicin de robot vlida

ParIdPosValid - Posicin de robot vlida para


la identificacin de parmetros en la pgina 981

Identificacin de carga de la herramienta o LoadId - Identificacin de carga de la herrala carga til del robot
mienta o la carga til en la pgina 221
Identificacin de carga de cargas de posicio- ManLoadIdProc - Identificacin de carga de
nador
los manipuladores IRBP en la pgina 228

986

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.87 PathLevel - Obtiene el nivel de trayectoria actual

2.87 PathLevel - Obtiene el nivel de trayectoria actual


Utilizacin
PathLevel se utiliza para obtener el nivel de trayectoria actual. Esta funcin
mostrar si la tarea se est ejecutando en el nivel original o si la trayectoria de
movimiento original se ha almacenado y se est ejecutando un nuevo movimiento
temporal. Para saber ms sobre Path Recovery consulte el Application manual Motion functions and events.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin PathLevel.
Consulte tambin Ms ejemplos en la pgina 987.
Ejemplo 1
VAR num level;
level:= PathLevel();

La variable level es 1 si se ejecut en una trayectoria de movimiento original o


2 si se ejecut en una nueva trayectoria de movimiento temporal.
Valor de retorno
Tipo de dato: num
Hay dos valores de retorno posibles.
Valor de retor- Descripcin
no
1

Ejecucin en una trayectoria de movimiento original.

Ejecucin en una trayectoria StorePath, una nueva trayectoria de movimiento temporal.

Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la funcin PathLevel.
Ejemplo 1
...
MoveL p100, v100, z10, tool1;
StopMove;
StorePath;
p:= CRobT(\Tool:=tool1);
!New temporary movement
MoveL p1, v100, fine, tool1;
...
level:= PathLevel();
...
MoveL p, v100, fine, tool1;
RestoPath;
StartMove;
...

La variable level es 2.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.87 PathLevel - Obtiene el nivel de trayectoria actual
Continuacin
Limitaciones
La opcin Path Recovery de RobotWare debe estar instalada para poder utilizar
la funcin PathLevel en el nivel de trayectoria 2
Sintaxis
PathLevel()

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informa- Consulte
cin sobre
Recuperacin de trayectorias.

Application manual - Motion functions and events

Almacenamiento y restaura- StorePath - Almacena la trayectoria cuando se produce una


cin de trayectorias.
interrupcin en la pgina 555
RestoPath - Restablece la trayectoria despus de una interrupcin en la pgina 386
Detencin e inicio del movi- StartMove - Reanuda el movimiento del robot en la pgina 518
miento.
StopMove - Detiene el movimiento del robot en la pgina 548

988

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.88 PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida guardada

2.88 PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida


guardada
Utilizacin
PathRecValidBwd se utiliza para comprobar si la grabadora de trayectorias est
activa y si est disponible una trayectoria hacia atrs grabada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin
PathRecValidBwd.
Consulte tambin Ms ejemplos en la pgina 990.
Ejemplo 1
VAR bool bwd_path;
VAR pathrecid fixture_id;
bwd_path := PathRecValidBwd (\ID:=fixture_id);

La variable bwd_path tiene el valor TRUE si es posible retroceder hasta una


posicin con el identificador fixture_id. En caso negativo, bwd_path recibe el
valor FALSE.
Valor de retorno
Tipo de dato: bool
El valor de retorno de la funcin puede determinarse a partir del diagrama de flujo
siguiente:
Inicio

Se omite pathrecid ?

No

Est presente el pathrecid


especificado en la grabadora
de trayectorias?

No

Hay cualquier pathrecid en


la grabadora de trayectorias?

No

S
S

Ha sido detenida la grabadora


de trayectorias desde que se
aplic pathrecid ?

No

Se ha movido el robot mientras


la grabadora de trayectorias
estuvo parada?

Ha sido iniciada la
grabadora de trayectorias
en la misma posicin en
la que fue detenida?

No

No

Devolver TRUE

Devolver FALSE

xx0500002132_es

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.88 PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida guardada
Continuacin
Argumentos
PathRecValidBwd ([\ID])

[\ID]
Identifier
Tipo de dato: pathrecid
Una variable que especifica el nombre de la posicin de inicio de la grabacin. El
tipo de dato pathrecid es de un tipo sin valor y slo se utiliza como un
identificador para asignar un nombre a la posicin de grabacin.
Ejecucin de programas
Antes de pedir con PathRecMoveBwd a la grabadora de trayectorias que retroceda
por la trayectoria, es posible comprobar con PathRecValidBwd si existe una
trayectoria grabada vlida.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la funcin
PathRecValidBwd.
Ejemplo 1
PathRecStart id1;
MoveL p1, vmax, z50, tool1;
MoveL p2, vmax, z50, tool1;
bwd_path := PathRecValidBwd (\ID := id1);

Se inicia la grabadora de trayectorias y se ejecutan dos instrucciones de


movimiento. PathRecValidBwd devuelve TRUE y la trayectoria de retroceso ser:
p2 -> p1 -> Posicin inicial.
Ejemplo 2
PathRecStart id1;
MoveL p1, vmax, z50, tool1;
MoveL p2, vmax, z50, tool1;
PathRecStop \Clear;
bwd_path:= PathRecValidBwd (\ID := id1);

Se inicia la grabadora de trayectorias y se ejecutan dos instrucciones de


movimiento. A continuacin, se detiene y vaca la grabadora de trayectorias.
PathRecValidBwd devuelve FALSE.
Ejemplo 3
PathRecStart id1;
MoveL p1, vmax, z50, tool1;
PathRecStart id2;
MoveL p2, vmax, z50, tool1;
bwd_path := PathRecValidBwd ();

Se inicia la grabadora de trayectorias y se ejecuta una instruccin de movimiento.


A continuacin, se inicia un identificador de trayectoria adicional, seguido de una
instruccin de movimiento. PathRecValidBwd devuelve TRUE y la trayectoria de
retroceso ser:
p2 -> p1.
Contina en la pgina siguiente
990

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.88 PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida guardada
Continuacin
Ejemplo 4
PathRecStart id1;
MoveL p1, vmax, z50, tool1;
WaitSyncTask sync101, tasklist_r1o1;
MoveL p2, vmax, z50, tool1;
bwd_path1 := PathRecValidBwd ();
bwd_path2 := PathRecValidBwd (\ID := id1);

La ejecucin del programa anterior dar lugar a que la variable booleana


bwd_path1 reciba el valor TRUE, dado que existe una trayectoria de retroceso
vlida hacia WaitSyncTask. La variable booleana bwd_path2 recibe el valor
FALSE dado que no es posible retroceder ms arriba de una sentencia
WaitSyncTask.
Sintaxis
PathRecValidBwd (
[\ ID := < variable (VAR) of pathrecid >] )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Identificadores de grabadora de trayectorias pathrecid - Identificador de grabadora de trayectorias en la pgina 1247


Inicio y detencin de la grabadora de trayec- PathRecStart - Inicia la grabadora de trayectotorias
rias en la pgina 327
PathRecStop - Detiene la grabadora de trayectorias en la pgina 330
Reproduccin de la grabacin de trayecto- PathRecMoveBwd - Hace retroceder la grabarias hacia atrs
dora de trayectorias en la pgina 316
Comprobacin de si existe una trayectoria PathRecValidFwd - Comprueba si existe una
vlida hacia delante
trayectoria de avance vlida guardada en la
pgina 992
Reproduccin de la grabacin de trayecto- PathRecMoveFwd - Hace avanzar la grabadora
rias hacia delante
de trayectorias en la pgina 324
Movimiento en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S

3HAC16581-5 Revisin: L

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

2 Funciones
2.89 PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada

2.89 PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida


guardada
Utilizacin
PathRecValidFwd se utiliza para comprobar si la grabadora de trayectorias puede
usarse para avanzar. La posibilidad de avanzar con la grabadora de trayectorias
implica que se debe haber solicitado previamente el movimiento hacia atrs a la
grabadora de trayectorias.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin
PathRecValidFwd.
Consulte tambin Ms ejemplos en la pgina 994.
Ejemplo 1
VAR bool fwd_path;
VAR pathrecid fixture_id;
fwd_path:= PathRecValidFwd (\ID:=fixture_id);

La variable fwd_path tiene el valor TRUE si es posible avanzar hasta una posicin
con el identificador fixture_id. En caso negativo, fwd_path recibe el valor
FALSE.
Valor de retorno
Tipo de dato: bool
El valor de retorno de PathRecValidFwdsin el valor especificado en \ID es:
TRUE si:

La grabadora de trayectorias ha movido el robot hacia atrs, usando


PathRecMoveBwd.

El robot no se ha alejado de la trayectoria ejecutada por PathRecMoveBwd.

FALSE si:

No se cumplen las condiciones indicadas anteriormente.

El valor de retorno de PathRecValidFwdcon el valor especificado en \ID es:


TRUE si:

La grabadora de trayectorias ha movido el robot hacia atrs, usando


PathRecMoveBwd.

El robot no se ha alejado de la trayectoria ejecutada por PathRecMoveBwd.

La \ID especificada fue entregada durante el movimiento de retroceso.

FALSE si:

No se cumplen las condiciones indicadas anteriormente.

Argumentos
PathRecValidFwd ([\ID])

Contina en la pgina siguiente


992

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.89 PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada
Continuacin
[\ID]
Identifier
Tipo de dato: pathrecid
Una variable que especifica el nombre de la posicin de inicio de la grabacin. El
tipo de dato pathrecid es de un tipo sin valor y slo se utiliza como un
identificador para asignar un nombre a la posicin de grabacin.
Ejecucin de programas
Despus de pedir con PathRecMoveBwd a la grabadora de trayectorias que
retroceda, es posible comprobar si existe una trayectoria vlida grabada sobre la
que mover el robot. Si se omite el identificador \ID, PathRevValidFwd indica si
es posible avanzar hasta la posicin en la que se inici el movimiento de retroceso.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.89 PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la funcin
PathRecValidFwd.
Ejemplo 1
VAR pathrecid id1;
VAR pathrecid id2;
VAR pathrecid id3;
PathRecStart id1;
MoveL p1, vmax, z50, tool1;
PathRecStart id2;
MoveL p2, vmax, z50, tool1;
PathRecStart id3;
!See figures 1 and 8 in tbe following table.
MoveL p3, vmax, z50, tool1;
ERROR
StorePath;
IF PathRecValidBwd(\ID:=id3) THEN
!See figure 2 in the following table.
PathRecMoveBwd \ID:=id3;
! Do some other operation
ENDIF
IF PathRecValidBwd(\ID:=id2) THEN
!See figure 3 in the following table.
PathRecMoveBwd \ID:=id2;
! Do some other operation
ENDIF
!See figure 4 in the following table.
PathRecMoveBwd;
! Do final service action
IF PathRecValidFwd(\ID:=id2) THEN
!See figure 5 in the following table.
PathRecMoveFwd \ID:=id2;
! Do some other operation
ENDIF
IF PathRecValidFwd(\ID:=id3) THEN
!See figure 6 in the following table.
PathRecMoveFwd \ID:=id3;
! Do some other operation
ENDIF
!See figure 7 in the following table.
PathRecMoveFwd;
RestoPath;
StartMove;
RETRY;

Contina en la pgina siguiente


994

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.89 PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada
Continuacin
1

p2

Error

Posicin de inicio
id1

p1

id3
p3

id2
xx0500002121_es

p2

Error

id3

xx0500002124_es

xx0500002126

4
Posicin de inicio
id1

p1
id2

xx0500002127_es

Posicin de inicio
id1

p1
id2

xx0500002128_es

xx0500002129

p2

Error

id3

xx0500002130_es

Error
p3
xx0500002131_es

En el ejemplo anterior, se inicia la grabadora de trayectorias y se aaden


identificadores en tres ubicaciones distintas a lo largo de la trayectoria ejecutada.
La imagen anterior contiene referencias al cdigo de ejemplo y describe cmo se
mover el robot si se produce un error durante la ejecucin hacia delante hasta
el punto p3. PathRecValidBwd y PathRecValidFwd se utilizan respectivamente,
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.89 PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada
Continuacin
dado que no es posible avanzar para determinar en qu punto del programa se
ha producido un error posible.
Sintaxis
PathRecValidFwd (
[\ ID:= < variable (VAR) of pathrecid >] )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Identificadores de grabadora de trayec- pathrecid - Identificador de grabadora de trayectorias


torias en la pgina 1247
Inicio y detencin de la grabadora de
trayectorias

PathRecStart - Inicia la grabadora de trayectorias


en la pgina 327
PathRecStop - Detiene la grabadora de trayectorias en la pgina 330

Comprobacin de si existe una trayecto- PathRecValidBwd - Comprueba si existe una traria de retroceso vlida
yectoria de retroceso vlida guardada en la pgina 989
Reproduccin de la grabacin de trayec- PathRecMoveBwd - Hace retroceder la grabadora
torias hacia atrs
de trayectorias en la pgina 316
Reproduccin de la grabacin de trayec- PathRecMoveFwd - Hace avanzar la grabadora
torias hacia delante
de trayectorias en la pgina 324
Movimiento en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S

996

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.90 PFRestart - Comprueba si se ha interrumpido una trayectoria despus de un fallo de alimentacin

2.90 PFRestart - Comprueba si se ha interrumpido una trayectoria despus de un


fallo de alimentacin
Utilizacin
PFRestart (Power Failure Restart) se utiliza para comprobar si la trayectoria fue
interrumpida como consecuencia de la cada de alimentacin Si es as, es posible
que sea necesario realizar algunas acciones especficas. La funcin comprueba
la trayectoria en el nivel actual, el nivel de base y el nivel de interrupciones.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin PFRestart.
Ejemplo 1
IF PFRestart() = TRUE THEN

Se comprueba si existe una trayectoria interrumpida en el nivel actual. Si es as,


la funcin devuelve TRUE.
Valor de retorno
Tipo de dato: bool
TRUE si existe una trayectoria interrumpida en el nivel de trayectoria especificado.
De lo contrario, devuelve FALSE.
Argumentos
PFRestart([\Base] | [\Irpt])

[ \Base ]
Base Level
Tipo de dato: switch
Devuelve TRUE si existe una trayectoria interrumpida en el nivel de base.
[ \Irpt ]
Interrupt Level
Tipo de dato: switch
Devuelve TRUE si existe una trayectoria interrumpida en el nivel StorePath.
Si no se indica ningn argumento, la funcin devuelve TRUE si existe una trayectoria
interrumpida en el nivel actual.
Sintaxis
PFRestart(
[\Base] | [\Irpt])

Una funcin con un valor de retorno del tipo de dato bool.

3HAC16581-5 Revisin: L

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

2 Funciones
2.91 PoseInv - Invierte los datos de pose

2.91 PoseInv - Invierte los datos de pose


Utilizacin
PoseInv (Pose Invert) calcula la transformacin inversa de una pose.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin PoseInv.
Ejemplo 1
z1

pose1
Sistema de
coordenadas 1

z0

y1
x1
Sistema de
coordenadas 0

y0

pose2

x0
xx0500002443_es

Pose1 representa el sistema de coordenadas 1 relacionado con el sistema de


coordenadas 0. La transformacin que indica el sistema de coordenadas 0
relacionado con el sistema de coordenadas 1 se obtiene mediante la transformacin
inversa, almacenada en pose2.
VAR pose pose1;
VAR pose pose2;
...
pose2 := PoseInv(pose1);

Valor de retorno
Tipo de dato: pose
El valor de la pose inversa.
Argumentos
PoseInv (Pose)

Pose
Tipo de dato: pose
La pose a invertir.
Sintaxis
PoseInv(
[Pose :=] <expression (IN) of pose>
)

Una funcin con un valor de retorno del tipo de dato pose.


Contina en la pgina siguiente
998

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.91 PoseInv - Invierte los datos de pose
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

3HAC16581-5 Revisin: L

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

2 Funciones
2.92 PoseMult - Multiplica datos de pose

2.92 PoseMult - Multiplica datos de pose


Utilizacin
PoseMult (Pose Multiply) se utiliza para calcular el producto de dos
transformaciones de pose. Una aplicacin tpica es calcular una nueva pose como
resultado de un desplazamiento que acta sobre una pose original.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin PoseMult.
Ejemplo 1
z1

y1

pose1

z0

pose2

z2

Sistema de
coordenadas 1
Sistema de
coordenadas 2

x1

Sistema de
coordenadas 0

y2

y0

pose3

x0

x2

xx0500002444_es

pose1 representa el sistema de coordenadas 1 relacionado con el sistema de


coordenadas 0. pose2 representa el sistema de coordenadas 2 relacionado con
el sistema de coordenadas 1. La transformacin que indica pose3, el sistema de
coordenadas 2 relacionado con el sistema de coordenadas 0, se obtiene mediante
el producto de las dos transformaciones:
VAR pose
VAR pose
VAR pose
...
pose3 :=

pose1;
pose2;
pose3;
PoseMult(pose1, pose2);

Valor de retorno
Tipo de dato: pose
El valor del producto de dos poses.
Argumentos
PoseMult (Pose1 Pose2)

Pose1
Tipo de dato: pose
La primera pose.
Pose2
Tipo de dato: pose
Contina en la pgina siguiente
1000

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.92 PoseMult - Multiplica datos de pose
Continuacin
La segunda pose.
Sintaxis
PoseMult(
[Pose1 :=] <expression (IN) of pose>,
[Pose2 :=] <expression (IN) of pose>
)

Una funcin con un valor de retorno del tipo de dato pose.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

3HAC16581-5 Revisin: L

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

2 Funciones
2.93 PoseVect - Aplica una transformacin a un vector

2.93 PoseVect - Aplica una transformacin a un vector


Utilizacin
PoseVect (vector de pose) se utiliza para calcular el producto de una pose y un
vector. Se suele utilizar para calcular un vector como resultado del efecto de un
desplazamiento o de un vector original.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin PoseVect.
Ejemplo 1

pos2

pos1

z1

z0

pose1

Sistema de
coordenadas 1

y1

Sistema de
coordenadas 0
y0

x1

x0
xx0500002445_es

pose1 representa el sistema de coordenadas 1 relacionado con el sistema de


coordenadas 0.
pos1 es un vector relacionado con sistema de coordenadas 1. El vector
correspondiente relacionado con el sistema de coordenadas 0 se obtiene mediante
el producto;
VAR pose pose1;
VAR pos pos1;
VAR pos pos2;
...
...
pos2:= PoseVect(pose1, pos1);

Valor de retorno
Tipo de dato: pos
El valor del producto de la pose y el valor pos original.
Argumentos
PoseVect (Pose Pos)

Pose
Tipo de dato: pose
La transformacin a aplicar.
Contina en la pgina siguiente
1002

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.93 PoseVect - Aplica una transformacin a un vector
Continuacin
Pos
Tipo de dato: pos
El valor pos a transformar.
Sintaxis
PoseVect(
[Pose :=] <expression (IN) of pose>,
[Pos :=] <expression (IN) of pos>
)

Una funcin con un valor de retorno del tipo de dato pos.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

3HAC16581-5 Revisin: L

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

2 Funciones
2.94 Pow - Calcula el resultado de elevar un valor a una potencia

2.94 Pow - Calcula el resultado de elevar un valor a una potencia


Utilizacin
Pow (Power) se utiliza para calcular el valor exponencial en cualquier base.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Pow.
Ejemplo 1
VAR num x;
VAR num y
VAR num reg1;
...
reg1:= Pow(x, y);

reg1 recibe el valor xy.


Valor de retorno
Tipo de dato: num
El valor de la Base elevado a la potencia del exponente, es decir base exponente.
Argumentos
Pow (Base Exponent)

Base
Tipo de dato: num
El valor del argumento usado como base.
Exponent
Tipo de dato: num
El valor del argumento de exponente.
Limitaciones
La ejecucin de la funcin x y genera un error en los casos siguientes:

Si x < 0 e y no es un entero;

Si x = 0 e y 0.

Sintaxis
Pow(
[Base :=] <expression (IN) of num>,
[Exponent :=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

1004

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.95 PowDnum - Calcula el resultado de elevar un valor a una potencia

2.95 PowDnum - Calcula el resultado de elevar un valor a una potencia


Utilizacin
PowDnum (Power Dnum) se utiliza para calcular el valor exponencial en cualquier
base.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin PowDnum.
Ejemplo 1
VAR dnum x;
VAR num y
VAR dnum value;
...
value:= PowDnum(x, y);

value recibe el valor xy.


Valor de retorno
Tipo de dato: dnum
El valor de la Base elevado a la potencia del exponente, es decir baseExponente.
Argumentos
PowDnum (Base Exponent)

Base
Tipo de dato: dnum
El valor del argumento usado como base.
Exponent
Tipo de dato: num
El valor del argumento de exponente.
Limitaciones
La ejecucin de la funcin x y genera un error en los casos siguientes:

Si x < 0 e y no es un entero;

Si x = 0 e y 0.

Sintaxis
PowDnum(
[Base :=] <expression (IN) of dnum>,
[Exponent :=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato dnum.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.95 PowDnum - Calcula el resultado de elevar un valor a una potencia
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Matemticas

1006

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.96 PPMovedInManMode - Comprobar si el puntero de programa se ha movido en el modo manual.

2.96 PPMovedInManMode - Comprobar si el puntero de programa se ha movido en


el modo manual.
Utilizacin
PPMovedInManMode devuelve TRUE si el usuario ha movido el puntero de
programa mientras el controlador se encuentra en el modo manual, es decir, si la
llave de operador est en las posiciones de manual a velocidad reducida o manual
a mxima velocidad. El estado del puntero de programa movido se pone a cero
cuando se sita la llave de Auto a Man o cuando se usa la instruccin
ResetPPMoved.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin
PPMovedInManMode.
Ejemplo 1
IF PPMovedInManMode() THEN
WarnUserOfPPMovement;
DoJob;
ELSE
DoJob;
ENDIF

Valor de retorno
Tipo de dato: bool
TRUE si el puntero de programa ha sido movido por el usuario en el modo manual.
Ejecucin de programas
Comprobar si el puntero de programa de la tarea de programa actual ha sido
movido en el modo manual.
Sintaxis
PPMovedInManMode()

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comprobar si el puntero de programa se ha IsStopStateEvent - Comprueba si se ha momovido


vido el puntero de programa en la pgina 953
Restablecer el estado del puntero de progra- ResetPPMoved - Restablecer el estado del
ma movido en el modo manual
puntero de programa movido en el modo
manual. en la pgina 383

3HAC16581-5 Revisin: L

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

2 Funciones
2.97 Present - Comprueba si se est usando un parmetro opcional

2.97 Present - Comprueba si se est usando un parmetro opcional


Utilizacin
Present se utiliza para comprobar si se ha utilizado un argumento opcional al
llamar a una rutina.
Los parmetros opcionales no pueden usarse si no se especificaron al llamar a la
rutina. Esta funcin puede usarse para comprobar si se ha especificado un
parmetro, con la finalidad de evitar la aparicin de errores.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Present.
Consulte tambin Ms ejemplos en la pgina 1009.
Ejemplo 1
PROC feeder (\switch on | switch off)
IF Present (on) Set do1;
IF Present (off) Reset do1;
ENDPROC

La salida do1, que controla un transportador, se activa o desactiva en funcin del


argumento utilizado al llamar a la rutina.
Valor de retorno
Tipo de dato: bool
TRUE = Se ha definido el valor de parmetro o el modificador al llamar a la rutina.
FALSE = No se ha definido el valor del parmetro o el modificador.
Argumentos
Present (OptPar)

OptPar
Optional Parameter
Tipo de dato: cualquier tipo
El nombre del parmetro opcional cuya presencia se desea comprobar.

Contina en la pgina siguiente


1008

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.97 Present - Comprueba si se est usando un parmetro opcional
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la funcin Present.
Ejemplo 1
PROC glue (\switch on, num glueflow, robtarget topoint, speeddata
speed, zonedata zone, PERS tooldata tool, \PERS wobjdata wobj)
IF Present (on) PulseDO glue_on;
SetAO gluesignal, glueflow;
IF Present (wobj) THEN
MoveL topoint, speed, zone, tool \WObj:=wobj;
ELSE
MoveL topoint, speed, zone, tool;
ENDIF
ENDPROC

Se crea una rutina de aplicacin de adhesivo Si se especifica el argumento \on


al llamar a la rutina, se genera un pulso en la seal glue_on. A continuacin, el
robot activa la seal analgica de salida gluesignal, que controla la pistola de
adhesivo y la mueve hasta la posicin final. Dado que el parmetro wobj es
opcional, se utilizan instrucciones MoveL diferentes en funcin de si se utiliza o
no este argumento.
Sintaxis
Present (
[OptPar:=] <reference (REF) of any type> )

En este caso, el parmetro REF requiere el nombre del parmetro opcional.


Una funcin con un valor de retorno del tipo de dato bool.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Parmetros de rutinas

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Rutinas

3HAC16581-5 Revisin: L

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

2 Funciones
2.98 ProgMemFree - Obtiene el tamao de memoria libre del programa

2.98 ProgMemFree - Obtiene el tamao de memoria libre del programa


Utilizacin
ProgMemFree (Program Memory Free) se usa para obtener el tamao libre de la
memoria de programas.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ProgMemFree.
Ejemplo 1
FUNC num module_size(string file_path)
VAR num pgmfree_before;
VAR num pgmfree_after;
pgmfree_before:=ProgMemFree();
Load \Dynamic, file_path;
pgmfree_after:=ProgMemFree();
Unload file_path;
RETURN (pgmfree_before-pgmfree_after);
ENDFUNC

ProgMemFree se usa en una funcin que devuelve el valor de cunta memoria se


reserva para un mdulo en la memoria de programas.
Valor de retorno
Tipo de dato: num
El tamao del espacio libre de la memoria de programas, en bytes.
Sintaxis
ProgMemFree( )

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Carga de un mdulo de programa

Load - Carga un mdulo de programa durante la ejecucin en la pgina 217

Descarga de un mdulo de progra- UnLoad - Descarga un mdulo de programa durante


ma
la ejecucin en la pgina 701

1010

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.99 RawBytesLen - Obtiene la longitud de un dato de tipo rawbytes

2.99 RawBytesLen - Obtiene la longitud de un dato de tipo rawbytes


Utilizacin
RawBytesLen se utiliza para obtener la longitud actual de los bytes vlidos de
una variable de tipo rawbytes.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin RawBytesLen.
Ejemplo 1
VAR rawbytes from_raw_data;
VAR rawbytes to_raw_data;
VAR num integer := 8
VAR num float := 13.4;
ClearRawBytes from_raw_data;
PackRawBytes integer, from_raw_data, 1 \IntX := INT;
PackRawBytes float, from_raw_data, (RawBytesLen(from_raw_data)+1)
\Float4;
CopyRawBytes from_raw_data, 1, to_raw_data, 3;

En este ejemplo, la variable from_raw_data del tipo rawbytes es borrada en


primer lugar. Es decir, todos sus bytes cambian a 0 (el valor predeterminado tras
la declaracin). A continuacin el valor del entero se almacena en los primeros 2
bytes y, con ayuda de la funcin RawBytesLen, el valor de float se almacena
en los 4 bytes siguientes (comenzando por el nmero de ndice 3).
Despus de guardar un dato en from_raw_data, el contenido (6 bytes) se copia
a to_raw_data, empezando por la posicin 3.
Valor de retorno
Tipo de dato: num
La longitud actual de los bytes vlidos de una variable de tipo rawbytes; en el
rango de 0 a 1.024.
En general, la longitud actual de los bytes vlidos de una variable rawbytes es
actualizada por el sistema al ltimo byte escrito en la estructura de la variable
rawbytes.
Para obtener ms detalles, consulte el tipo de dato rawbytes, la instruccin
ClearRawBytes, CopyRawBytes, PackDNHeader, PackRawBytes y
ReadRawBytes.
Argumentos
RawBytesLen (RawData)

RawData
Tipo de dato: rawbytes
RawData es el contenedor de datos cuya longitud actual de bytes vlidos se desea
obtener.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.99 RawBytesLen - Obtiene la longitud de un dato de tipo rawbytes
Continuacin
Ejecucin de programas
Durante la ejecucin del programa, se devuelve la longitud actual de bytes vlidos.
Sintaxis
RawBytesLen (
[RawData := ] < variable (VAR) of rawbytes> )

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

rawbytes datos

rawbytes - Datos sin formato en la pgina 1254

Borrado del contenido de un dato de tipo


rawbytes

ClearRawBytes - Borra el contenido de un


dato de tipo rawbytes en la pgina 53

Copiado del contenido de un dato de tipo


rawbytes

CopyRawBytes - Copia el contenido de un


dato de tipo rawbytes en la pgina 71

Empaquetamiento de un encabezado de De- PackDNHeader - Empaqueta un encabezado


viceNet en datos rawbytes
de DeviceNet en datos rawbytes en la pgina 304
Empaquetamiento de datos en datos rawby- PackRawBytes - Empaqueta datos en un
dato de tipo rawbytes en la pgina 307
tes
Lectura de un dato rawbytes

ReadRawBytes - Lee datos de tipo rawbytes


en la pgina 374

Desempaquetamiento de datos de un dato


rawbytes

UnpackRawBytes - Desempaqueta datos de


un dato de tipo rawbytes en la pgina 704

Escritura de un dato rawbytes

WriteRawBytes - Escribe un dato de tipo


rawbytes en la pgina 772

1012

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.100 ReadBin - Lee un byte de un archivo o un canal serie

2.100 ReadBin - Lee un byte de un archivo o un canal serie


Utilizacin
ReadBin (Read Binary) se utiliza para leer un byte (8 bits) de un archivo o un canal
serie.
Esta funcin es compatible con archivos o canales serie de tipo binario y
alfanumrico.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ReadBin.
Consulte tambin Ms ejemplos en la pgina 1014.
Ejemplo 1
VAR num character;
VAR iodev inchannel;
...
Open "com2:", inchannel\Bin;
character := ReadBin(inchannel);

Se lee un byte del canal serie binario inchannel.


Valor de retorno
Tipo de dato: num
Un byte (8 bits) se lee de un archivo o un canal serie especificado. Este byte se
convierte en el valor numrico positivo correspondiente y se devuelve con el tipo
de dato num. Si un archivo est vaco (se ha alcanzado el fin del archivo), se
devuelve EOF_BIN (el nmero -1).
Argumentos
ReadBin (IODevice [\Time])

IODevice
Tipo de dato: iodev
El nombre (la referencia) del archivo o del canal serie que debe leerse.
[\Time]
Tipo de dato: num
El tiempo mximo para la operacin de lectura (tiempo lmite) en segundos. Si no
se especifica este argumento, el tiempo mximo es de 60 segundos. Para esperar
ininterrumpidamente, utilice la constante predefinida WAIT_MAX.
Si se agota este tiempo antes de que se complete la operacin de lectura, se llama
al gestor de errores con el cdigo de error ERR_DEV_MAXTIME. Si no hay ningn
gestor de errores, se detiene la ejecucin.
La funcin de tiempo lmite se utiliza tambin durante un paro de programa y se
observar en el programa de RAPID al poner en marcha el programa.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.100 ReadBin - Lee un byte de un archivo o un canal serie
Continuacin
Ejecucin de programas
La ejecucin del programa espera hasta que se pueda leer un byte (8 bits) del
archivo o del canal serie.
En caso de un reinicio tras una cada de alimentacin, 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.
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin ReadBin.
Ejemplo 1
VAR num bindata;
VAR iodev file;
Open "HOME:/myfile.bin", file \Read \Bin;
bindata := ReadBin(file);
WHILE bindata <> EOF_BIN DO
TPWrite ByteToStr(bindata\Char);
bindata := ReadBin(file);
ENDWHILE

Se lee el contenido del archivo binario myfile.bin desde el principio hasta el fin y
se muestran los datos binarios recibidos (un carcter cada vez) en el FlexPendant,
tras convertirlos en caracteres.
Limitaciones
Esta funcin slo puede usarse con archivos y canales serie que hayan sido
abiertos con un acceso de lectura (\Read en el caso de los archivos alfanumricos,
\Bin o \Append \Bin en el caso de los archivos binarios).
Gestin de errores
Si se produce un error durante la lectura, la variable de sistema ERRNO cambia a
ERR_FILEACC.
Si se agota el tiempo lmite antes de que se complete la operacin de lectura, la
variable de sistema ERRNO cambia a ERR_DEV_MAXTIME.
A continuacin, estos errores pueden ser gestionados en el gestor de errores.
Datos predefinidos
La constante EOF_BIN puede usarse para detener la lectura al final del archivo.
CONST num EOF_BIN := -1;

Sintaxis
ReadBin(
[IODevice :=] <variable (VAR) of iodev>
[\Time:= <expression (IN) of num>])

Una funcin con un valor de retorno del tipo de dato num.

Contina en la pgina siguiente


1014

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.100 ReadBin - Lee un byte de un archivo o un canal serie
Continuacin
Informacin relacionada
Para obtener ms informacin sobre Consulte
Apertura y otras operaciones con ca- Technical reference manual - RAPID overview,
nales serie o archivos
seccin Resumen sobre RAPID - Comunicacin
Conversin de un byte en una cadena ByteToStr - Convierte un byte en un dato de cadena
de caracteres
de caracteres en la pgina 837

3HAC16581-5 Revisin: L

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

2 Funciones
2.101 ReadDir - Lee la siguiente entrada de un directorio

2.101 ReadDir - Lee la siguiente entrada de un directorio


Utilizacin
ReadDir se utiliza para obtener el nombre del siguiente archivo o subdirectorio
existente dentro de un directorio abierto previamente con la instruccin OpenDir.
Siempre y cuando la funcin devuelva TRUE, pueden existir ms archivos o
subdirectorios a obtener.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ReadDir.
Consulte tambin Ms ejemplos en la pgina 1017.
Ejemplo 1
PROC lsdir(string dirname)
VAR dir directory;
VAR string filename;
OpenDir directory, dirname;
WHILE ReadDir(directory, filename) DO
TPWrite filename;
ENDWHILE
CloseDir directory;
ENDPROC

Este ejemplo imprime los nombres de todos los archivos o subdirectorios que se
encuentran dentro del directorio especificado.
Valor de retorno
Tipo de dato: bool
La funcin devuelve TRUE si ha obtenido un nombre. De lo contrario, devuelve
FALSE.
Argumentos
ReadDir (Dev FileName)

Dev
Tipo de dato: dir
Una variable que hace referencia a un directorio y capturada con la instruccin
OpenDir.
FileName
Tipo de dato: string
El nombre del archivo o subdirectorio obtenido.
Ejecucin de programas
La funcin devuelve un valor booleano que especifica si la obtencin de un nombre
fue o no correcta.

Contina en la pgina siguiente


1016

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.101 ReadDir - Lee la siguiente entrada de un directorio
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin ReadDir
Ejemplo 1
Este ejemplo implementa una funcin de recorrido genrico de una estructura de
directorios.
PROC searchdir(string dirname, string actionproc)
VAR dir directory;
VAR string filename;
IF IsFile(dirname \Directory) THEN
OpenDir directory, dirname;
WHILE ReadDir(directory, filename) DO
! .. and . is the parent and resp. this directory
IF filename <> ".." AND filename <> "." THEN
searchdir dirname+"/"+filename, actionproc;
ENDIF
ENDWHILE
CloseDir directory;
ELSE
%actionproc% dirname;
ENDIF
ERROR
RAISE;
ENDPROC
PROC listfile(string filename)
TPWrite filename;
ENDPROC
PROC main()
! Execute the listfile routine for all files found under the
! tree in HOME:
searchdir "HOME:","listfile";
ENDPROC

Este programa recorre la estructura de directorios que existe dentro de "HOME:" y


con cada archivo encontrado, ejecuta el procedimiento listfile. searchdir es
la parte genrica, que no tiene ninguna informacin sobre el inicio de la bsqueda
ni sobre a qu rutina se debe llamar con cada archivo. Utiliza IsFile para
comprobar si se ha encontrado un subdirectorio o un archivo y utiliza el mecanismo
de enlazamiento en tiempo de ejecucin para llamar al procedimiento especificado
en actionproc con todos los archivos encontrados. La rutina actionproc debe
ser un procedimiento con un parmetro de tipo string.
Gestin de errores
Si el directorio no se ha abierto (consulte OpenDir), la variable del sistema ERRNO
cambia a ERR_FILEACC. A continuacin, este error puede ser gestionado en el
gestor de errores.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.101 ReadDir - Lee la siguiente entrada de un directorio
Continuacin
Sintaxis
ReadDir (
[ Dev:= ] < variable (VAR) of dir>,
[ FileName:= ] < var or pers (INOUT) of string>)

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin Consulte
sobre
Directorio

dir - Estructura de directorio de archivos en la pgina 1189

Creacin de un directorio

MakeDir - Crea un nuevo directorio en la pgina 227

Apertura de un directorio

OpenDir - Abre un directorio en la pgina 302

Cierre de un directorio

CloseDir - Cierra un directorio en la pgina 60

Eliminacin de un directorio

RemoveDir - Elimina un directorio en la pgina 377

Eliminacin de un archivo

RemoveFile - Elimina un archivo en la pgina 379

Cambio del nombre de un archivo RenameFile - Cambia el nombre de un archivo en la pgina 380

1018

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.102 ReadMotor - Lee los ngulos actuales de los motores

2.102 ReadMotor - Lee los ngulos actuales de los motores


Utilizacin
ReadMotor se utiliza para leer los ngulos actuales de los distintos motores de
los ejes del robot y de los ejes externos. La aplicacin principal de esta funcin
es la realizacin de procedimientos de calibracin del robot.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ReadMotor.
Consulte tambin Ms ejemplos en la pgina 1020.
VAR num motor_angle2;
motor_angle2 := ReadMotor(2);

El ngulo actual del motor del segundo eje del robot se almacena en
motor_angle2.
Valor de retorno
Tipo de dato: num
El ngulo actual del motor del eje indicado en radianes, ya sea un eje del robot o
un eje externo.
Argumentos
ReadMotor [\MecUnit ] Axis

MecUnit
Mechanical Unit
Tipo de dato: mecunit
El nombre de la unidad mecnica cuyos valores de eje se desea comprobar. Si se
omite este argumento, se obtiene el valor de un eje del robot conectado.
Eje
Tipo de dato: num
El nmero del eje cuyo valor se desea obtener (de 1 a 6).
Ejecucin de programas
El ngulo de motor devuelto representa la posicin actual del motor en radianes
sin ningn offset de calibracin. El valor no depende de ninguna posicin fija del
robot, slo de la posicin cero interna del resolver, es decir, normalmente la
posicin cero del resolver ms cercana a la posicin de calibracin (la diferencia
existente entre la posicin cero del resolver y la posicin de calibracin es el valor
del offset de calibracin). Este valor representa el movimiento completo de cada
eje, si bien puede ser de varios giros.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.102 ReadMotor - Lee los ngulos actuales de los motores
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin ReadMotor.
Ejemplo 1
VAR num motor_angle3;
motor_angle3 := ReadMotor(\MecUnit:=ROB_1, 3);

El ngulo de motor actual del tercer eje del robot ROB_1 se almacena en
motor_angle3.
Sintaxis
ReadMotor(
[\MecUnit := < variable (VAR) of mecunit>,]
[Axis := ] < expression (IN) of num> )

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Lectura del ngulo actual del eje

CJointT - Lee los ngulos actuales de los ejes


en la pgina 856

1020

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.103 ReadNum - Lee un nmero de un archivo o un canal serie

2.103 ReadNum - Lee un nmero de un archivo o un canal serie


Utilizacin
ReadNum (Read Numeric) se utiliza para leer un nmero de un archivo o un canal
serie alfanumrico.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ReadNum.
Consulte tambin Ms ejemplos en la pgina 1022.
Ejemplo 1
VAR iodev infile;
...
Open "HOME:/file.doc", infile\Read;
reg1 := ReadNum(infile);

Se asigna a reg1 un nmero ledo del archivo file.doc.


Valor de retorno
Tipo de dato: num
El valor numrico ledo de un archivo o un canal serie especificado. Si el archivo
est vaco (se ha alcanzado el fin del archivo), se devuelve el nmero EOF_NUM
(9.998E36).
Argumentos
ReadNum (IODevice [\Delim] [\Time])

IODevice
Tipo de dato: iodev
El nombre (la referencia) del archivo o del canal serie que debe leerse.
[\Delim]
Delimiters
Tipo de dato: string
Una cadena que contiene los delimitadores que deben utilizarse para interpretar
las lneas del archivo o del canal serie. De forma predeterminada (sin \Delim), el
archivo se lee una lnea cada vez y el nico delimitador que se tiene en cuenta es
el carcter de salto de lnea (\0A). Cuando se utiliza el argumento \Delim, cualquier
carcter del argumento de cadena especificado se utilizar para determinar qu
parte de la lnea es significativa.
Cuando se utiliza el argumento \Delim, el sistema de control aade siempre los
caracteres de retorno de carro (\0D) y salto de lnea (\0A) a los delimitadores
especificados por el usuario.
Para especificar caracteres no alfanumricos, utilice \xx, donde xx es la
representacin hexadecimal del cdigo ASCII del carcter (por ejemplo: TAB se
especifica mediante \09).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.103 ReadNum - Lee un nmero de un archivo o un canal serie
Continuacin
[\Time]
Tipo de dato: num
El tiempo mximo para la operacin de lectura (tiempo lmite) en segundos. Si no
se especifica este argumento, el tiempo mximo es de 60 segundos. Para esperar
ininterrumpidamente, utilice la constante predefinida WAIT_MAX.
Si se agota este tiempo antes de que se complete la operacin de lectura, se llama
al gestor de errores con el cdigo de error ERR_DEV_MAXTIME. Si no hay ningn
gestor de errores, se detiene la ejecucin.
La funcin de tiempo lmite se utiliza tambin durante un paro de programa y se
notificar en el programa de RAPID al poner en marcha el programa.
Ejecucin de programas
A partir de la posicin actual del archivo, la funcin lee y desecha cualquier
delimitador de encabezado. Un delimitador de encabezado que se usa sin el
argumento \Delim es el carcter de salto de lnea. Los delimitadores de
encabezado con el argumento \Delim son cualquier carcter del argumento \Delim
ms los caracteres de retorno de carro y salto de lnea. Por tanto, se lee todo lo
que se encuentre hasta el siguiente carcter delimitador e incluyndolo (el
delimitador se desecha posteriormente), pero no ms de 80 caracteres. Si la parte
significativa tiene ms de 80 caracteres, el resto de los caracteres se leen en la
siguiente operacin de lectura.
A continuacin, la cadena leda se convierte en un valor numrico. Por ejemplo,
." 234.4 " se convierte en el valor numrico 234,4.
En caso de un reinicio tras una cada de alimentacin, 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.
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin ReadNum.
reg1 := ReadNum(infile\Delim:="\09");
IF reg1 > EOF_NUM THEN
TPWrite "The file is empty";
...

Lee un nmero en una lnea en la que los nmeros estn separados por caracteres
TAB ("\09") o SPACE (" "). Antes de usar el nmero ledo del archivo, se realiza
una comprobacin para asegurarse de que el archivo no est vaco.
Limitaciones
La funcin slo puede usarse con archivos alfanumricos que hayan sido abiertos
para lectura.
Gestin de errores
Si se produce un error de acceso durante la lectura, la variable de sistema ERRNO
cambia a ERR_FILEACC.
Si se intenta leer un dato no numrico, la variable de sistema ERRNO cambia a
ERR_RCVDATA.
Contina en la pgina siguiente
1022

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.103 ReadNum - Lee un nmero de un archivo o un canal serie
Continuacin
Si se agota el tiempo lmite antes de que se complete la operacin de lectura, la
variable de sistema ERRNO cambia a ERR_DEV_MAXTIME.
A continuacin, estos errores pueden ser gestionados en el gestor de errores.
Datos predefinidos
La constante EOF_NUM puede usarse para detener la lectura al final del archivo.
CONST num EOF_NUM := 9.998E36;

Sintaxis
ReadNum (
[IODevice :=]<variable (VAR) of iodev>
[\Delim:=<expression (IN) of string>]
[\Time:=<expression (IN) of num>])

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Apertura y otras operaciones con canales Technical reference manual - RAPID overview,
serie o archivos
seccin Resumen sobre RAPID - Comunicacin

3HAC16581-5 Revisin: L

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

2 Funciones
2.104 ReadStr - Lee una cadena de caracteres de un archivo o un canal serie

2.104 ReadStr - Lee una cadena de caracteres de un archivo o un canal serie


Utilizacin
ReadStr (Read String) se utiliza para leer una cadena de un archivo o un canal
serie alfanumrico.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ReadStr.
Consulte tambin Ms ejemplos en la pgina 1026.
Ejemplo 1
VAR string text;
VAR iodev infile;
...
Open "HOME:/file.doc", infile\Read;
text := ReadStr(infile);

Se asigna a text una cadena leda del archivo file.doc.


Valor de retorno
Tipo de dato: string
La cadena de caracteres leda del archivo o canal serie especificado. Si el archivo
est vaco (se ha alcanzado el fin del archivo), se devuelve la cadena de caracteres
"EOF".
Argumentos
ReadStr (IODevice [\Delim] [\RemoveCR] [\DiscardHeaders] [\Time])

IODevice
Tipo de dato: iodev
El nombre (la referencia) del archivo o del canal serie que debe leerse.
[\Delim]
Delimiters
Tipo de dato: string
Una cadena que contiene los delimitadores que deben utilizarse para interpretar
las lneas del archivo o del canal serie. De forma predeterminada, el archivo se
lee una lnea cada vez y el nico delimitador que se tiene en cuenta es el carcter
de salto de lnea (\0A). Cuando se utiliza el argumento \Delim, cualquier carcter
del argumento de cadena especificado, adems del carcter predeterminado de
salto de lnea, se utilizar para determinar qu parte de la lnea es significativa.
Para especificar caracteres no alfanumricos, utilice \xx , donde xx es la
representacin hexadecimal del cdigo ASCII del carcter (por ejemplo: TAB se
especifica con \09).
[\RemoveCR]
Tipo de dato: switch

Contina en la pgina siguiente


1024

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.104 ReadStr - Lee una cadena de caracteres de un archivo o un canal serie
Continuacin
Un modificador utilizado para eliminar el retorno de carro final al leer archivos de
PC. En los archivos de PC, los cambios de lnea se especifican mediante un retorno
de carro y un salto de lnea (CRLF). Al leer una lnea en este tipo de archivos, el
carcter de retorno de carro se lee de forma predeterminada en la cadena de
retorno. Cuando se utiliza este argumento, el carcter de retorno de carro se lee
del archivo pero no se incluye en la cadena de caracteres devuelta.
[\DiscardHeaders]
Tipo de dato: switch
Este argumento especifica si los delimitadores de encabezado (especificados en
\Delim ms el salto de lnea predeterminado) deben ser omitidos o no antes de
transferir los datos a la cadena de caracteres de retorno. De forma predeterminada,
si el primer carcter de la posicin actual del archivo es un delimitador, se lee pero
no se transfiere a la cadena de caracteres de retorno, se detiene la interpretacin
de la lnea y el valor devuelto ser una cadena de caracteres vaca. Si se utiliza
este argumento, todos los delimitadores incluidos en la lnea se leern del archivo
pero se desechan y no se realizar el retorno hasta que la cadena de caracteres
devuelta contenga los datos a partir del primer carcter de la lnea que no sea un
delimitador.
[\Time]
Tipo de dato: num
El tiempo mximo para la operacin de lectura (tiempo lmite) en segundos. Si no
se especifica este argumento, el tiempo mximo es de 60 segundos. Para esperar
ininterrumpidamente, utilice la constante predefinida WAIT_MAX.
Si se agota este tiempo antes de que se complete la operacin de lectura, se llama
al gestor de errores con el cdigo de error ERR_DEV_MAXTIME. Si no hay ningn
gestor de errores, se detiene la ejecucin.
La funcin de tiempo lmite se utiliza tambin durante un paro de programa y se
observar en el programa de RAPID al poner en marcha el programa.
Ejecucin de programas
A partir de la posicin actual del archivo, si se utiliza el argumento
\DiscardHeaders, la funcin lee y desecha cualquier delimitador de encabezado
(caracteres de salto de lnea y cualquier carcter especificado en el argumento
\Delim). En todos los casos, lee todo hasta el siguiente carcter delimitador, pero
no ms de 80 caracteres. Si la parte significativa tiene ms de 80 caracteres, el
resto de los caracteres se leen en la siguiente operacin de lectura. El delimitador
que causa la detencin de la interpretacin se lee del archivo pero no se transfiere
a la cadena devuelta. Si el ltimo carcter de la cadena es un carcter de retorno
de carro y se utiliza el argumento \RemoveCR, este carcter se elimina de la cadena.
En caso de un reinicio tras una cada de alimentacin, 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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.104 ReadStr - Lee una cadena de caracteres de un archivo o un canal serie
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin ReadStr.
Ejemplo 1
text := ReadStr(infile);
IF text = EOF THEN
TPWrite "The file is empty";
...

Antes de usar la cadena de caracteres leda del archivo, se realiza una


comprobacin para asegurarse de que el archivo no est vaco.
Ejemplo 2
Por ejemplo, veamos un archivo que contiene:
<LF><SPACE><TAB>Hello<SPACE><SPACE>World<CR><LF>
text := ReadStr(infile);

text ser una cadena vaca: el primer carcter del archivo es el delimitador
predeterminado <LF>.
text := ReadStr(infile\DiscardHeaders);

text contendr <SPACE><TAB>Hello<SPACE><SPACE>World<CR>: el primer


carcter del archivo, el delimitador predeterminado <LF>, se desecha.
text := ReadStr(infile\RemoveCR\DiscardHeaders);

text contendr <SPACE><TAB>Hello<SPACE><SPACE>World:. El primer carcter


del archivo, el delimitador predeterminado <LF>, se desecha. El carcter de retorno
de carro final se elimina
text := ReadStr(infile\Delim:=" \09"\RemoveCR\DiscardHeaders);

text contendr "Hello": los primeros caracteres del archivo que coincidan con
el delimitador predeterminado <LF> o con el conjunto de caracteres definido por
\Delim (espacio y tabulador) se desechan. Se transfieren los datos existentes
hasta el primer delimitador ledo del archivo, aunque ste ltimo no se transfiere
a la cadena. Una nueva ejecucin de la misma sentencia devuelve "World".
Ejemplo 3
Por ejemplo, veamos un archivo que contiene:
<CR><LF>Hello<CR><LF>
text := ReadStr(infile);

text contendr el carcter <CR> (\0d): los caracteres <CR> y <LF> se leen del
archivo, pero slo se transfiere <CR> a la cadena. Una nueva ejecucin de la misma
sentencia devuelve "Hello\0d".
text := ReadStr(infile\RemoveCR);

text ser una cadena vaca: los caracteres <CR> y <LF> se leen del archivo;<CR>
se transfiere pero se elimina de la cadena. Una nueva ejecucin de la misma
sentencia devuelve "Hello".
text := ReadStr(infile\Delim:="\0d");

text ser una cadena vaca: <CR> se lee del archivo pero no se transfiere a la
cadena devuelta. Una nueva ejecucin de la misma instruccin devuelve de nuevo

Contina en la pgina siguiente


1026

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.104 ReadStr - Lee una cadena de caracteres de un archivo o un canal serie
Continuacin
una cadena vaca: <LF> se lee del archivo pero no se transfiere a la cadena
devuelta.
text := ReadStr(infile\Delim:="\0d"\DiscardHeaders);

text contendr "Hello". una nueva ejecucin de la misma instruccin devuelve


"EOF" (final del archivo).
Limitaciones
La funcin slo puede usarse con archivos o canales serie que se han abierto para
lectura en modo alfanumrico.
Gestin de errores
Si se produce un error durante la lectura, la variable de sistema ERRNO cambia a
ERR_FILEACC.
Si se agota el tiempo lmite antes de que se complete la operacin de lectura, la
variable de sistema ERRNO cambia a ERR_DEV_MAXTIME.
A continuacin, estos errores pueden ser gestionados en el gestor de errores.
Datos predefinidos
La constante EOF puede usarse para comprobar si el archivo estaba vaco al
intentar leer del archivo o para detener la lectura al final del archivo.
CONST string EOF := "EOF";

Sintaxis
ReadStr (
[IODevice :=] <variable (VAR) of iodev>
[\Delim :=<expression (IN) of string>]
[\RemoveCR]
[\DiscardHeaders]
[\Time:= <expression (IN) of num>])

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Apertura y otras operaciones con canales Technical reference manual - RAPID overview,
serie o archivos
seccin Resumen sobre RAPID - Comunicacin

3HAC16581-5 Revisin: L

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

2 Funciones
2.105 ReadStrBin - Lee una cadena de un canal serie o un archivo binario

2.105 ReadStrBin - Lee una cadena de un canal serie o un archivo binario


Utilizacin
ReadStrBin (Read String Binary) se utiliza para leer una cadena de un canal serie
o un archivo binario.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ReadStrBin.
Ejemplo 1
VAR iodev channel2;
VAR string text;
...
Open "com2:", channel2 \Bin;
text := ReadStrBin (channel2, 10);
text := ReadStrBin(infile,20);
IF text = EOF THEN

Se asigna a text una cadena de texto de 10 caracteres leda del canal serie al
que se hace referencia con channel2
Antes de usar la cadena de caracteres leda del archivo, se realiza una
comprobacin para asegurarse de que el archivo no est vaco.
Valor de retorno
Tipo de dato: string
La cadena de texto leda del canal serie o el archivo especificado. Si el archivo
est vaco (se ha alcanzado el fin del archivo), se devuelve la cadena de caracteres
"EOF".
Argumentos
ReadStrBin (IODevice NoOfChars [\Time])

IODevice
Tipo de dato: iodev
El nombre (la referencia) del canal serie o el archivo binario del que se desea leer.
NoOfChars
Number of Characters
Tipo de dato: num
El nmero de caracteres a leer del canal serie o del archivo binario.
[\Time]
Tipo de dato: num
El tiempo mximo para la operacin de lectura (tiempo lmite) en segundos. Si no
se especifica este argumento, el tiempo mximo es de 60 segundos. Para esperar
ininterrumpidamente, utilice la constante predefinida WAIT_MAX.

Contina en la pgina siguiente


1028

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.105 ReadStrBin - Lee una cadena de un canal serie o un archivo binario
Continuacin
Si se agota este tiempo antes de que se complete la operacin de lectura, se llama
al gestor de errores con el cdigo de error ERR_DEV_MAXTIME. Si no hay ningn
gestor de errores, se detiene la ejecucin.
La funcin de tiempo lmite se utiliza tambin durante un paro de programa y se
observar en el programa de RAPID al poner en marcha el programa.
Ejecucin de programas
La funcin lee el nmero especificado de caracteres del canal serie o del archivo
binario.
En caso de un reinicio tras una cada de alimentacin, 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.
Limitaciones
La funcin slo puede usarse con canales serie o archivos que hayan sido abiertos
para lectura en modo binario.
Gestin de errores
Si se produce un error durante la lectura, la variable de sistema ERRNO cambia a
ERR_FILEACC.
Si se agota el tiempo lmite antes de que se complete la operacin de lectura, la
variable de sistema ERRNO cambia a ERR_DEV_MAXTIME.
A continuacin, estos errores pueden ser gestionados en el gestor de errores.
Datos predefinidos
La constante EOF puede usarse para comprobar si el archivo estaba vaco al
intentar leer del archivo o para detener la lectura al final del archivo.
CONST string EOF := "EOF";

Sintaxis
ReadStrBin (
[IODevice :=] <variable (VAR) of iodev>,
[NoOfChars :=] <expression (IN) of num>
[\Time := <expression (IN) of num>])

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Apertura y otras operaciones con archivos Technical reference manual - RAPID overview,
o canales serie
seccin Resumen sobre RAPID - Comunicacin
Escritura de cadenas binarias

WriteStrBin - Escribe una cadena de caracteres


en un canal serie binario en la pgina 775

3HAC16581-5 Revisin: L

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

2 Funciones
2.106 ReadVar - Lee una variable de un dispositivo

2.106 ReadVar - Lee una variable de un dispositivo


Utilizacin
ReadVar se utiliza para leer una variable de un dispositivo que est conectado a
la interfaz de sensores serie.
La interfaz de sensores se comunica con los sensores a travs de canales serie,
utilizando el protocolo de transporte RTP1.
ste es un ejemplo de configuracin de un canal de sensor.
COM_PHY_CHANNEL:

Name COM1:

Connector COM1

Baudrate 19200

COM_TRP:

Name sen1:

Type RTP1

PhyChannel COM1

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ReadVar.
Ejemplo 1
CONST num XCoord := 8;
CONST num YCoord := 9;
CONST num ZCoord := 10;
VAR pos SensorPos;
! Connect to the sensor device "sen1:" (defined in sio.cfg).
SenDevice "sen1:";
! Read a cartesian position from the sensor.
SensorPos.x := ReadVar ("sen1:", XCoord);
SensorPos.y := ReadVar ("sen1:", YCoord);
SensorPos.z := ReadVar ("sen1:", ZCoord);

Argumentos
ReadVar (device, VarNo, [ \TaskName ])

device
Tipo de dato: string
El nombre del dispositivo de E/S configurado en sio.cfg para el sensor utilizado.
VarNo
Tipo de dato: num
El argumento VarNo se utiliza para seleccionar la variable que se desea leer.

Contina en la pgina siguiente


1030

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.106 ReadVar - Lee una variable de un dispositivo
Continuacin
[ \TaskName ]
Tipo de dato: string
El argumento TaskName hace posible el acceso a dispositivos de otras tareas de
RAPID.
Gestin de fallos
Constante de error (valor de ERRNO)

Descripcin

SEN_NO_MEAS

Fallo de medicin

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 comunicacin no vlido

SEN_CAMCHECK

Fallo de comprobacin de sensor

SEN_TIMEOUT

Error de comunicacin

Sintaxis
ReadVar
[ device := ] < expression(IN) of string>,
[ VarNo := ] < expression (IN) of num > ,
[ \ TaskName := < expression (IN) of string > ] ;

A function with a return value of the data type num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Establecimiento de una conexin a un


dispositivo de sensor

SenDevice - Establece una conexin a un dispositivo de sensor en la pgina 454

Escritura de una variable de sensor

WriteVar - Escribe una variable en la pgina 777

Escritura de un bloque de datos de sensor WriteBlock - Escribe un bloque de datos en un


dispositivo en la pgina 766
Lectura de un bloque de datos de sensor ReadBlock - Lee un bloque de datos de un dispositivo en la pgina 364
Configuracin de la comunicacin del
sensor

Technical reference manual - RAPID overview,


seccin Communication

3HAC16581-5 Revisin: L

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

2 Funciones
2.107 RelTool - Hace un desplazamiento respecto de la herramienta

2.107 RelTool - Hace un desplazamiento respecto de la herramienta


Utilizacin
RelTool (Relative Tool) se utiliza para aadir un desplazamiento y/o una rotacin,
expresada en el sistema de coordenadas de la herramienta activa, a una posicin
del robot.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin RelTool.
Ejemplo 1
MoveL RelTool (p1, 0, 0, 100), v100, fine, tool1;
Se mueve el robot a una posicin que se encuentra a 100 mm de p1 en la direccin
de la herramienta.
Ejemplo 2
MoveL RelTool (p1, 0, 0, 0 \Rz:= 25), v100, fine, tool1;
Se gira la herramienta 25 alrededor de su eje z.
Valor de retorno
Tipo de dato: robtarget
La nueva posicin, con la adicin de un desplazamiento y/o una rotacin, si la hay,
respecto de la herramienta activa.
Argumentos
RelTool (Point Dx Dy Dz [\Rx] [\Ry] [\Rz])

Point
Tipo de dato: robtarget
La posicin de entrada del robot. La parte de orientacin de esta posicin define
la orientacin actual del sistema de coordenadas de la herramienta.
Dx
Tipo de dato: num
El desplazamiento en mm en la direccin x del sistema de coordenadas de la
herramienta.
Dy
Tipo de dato: num
El desplazamiento en mm en la direccin y del sistema de coordenadas de la
herramienta.
Dz
Tipo de dato: num
El desplazamiento en mm en la direccin z del sistema de coordenadas de la
herramienta.

Contina en la pgina siguiente


1032

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.107 RelTool - Hace un desplazamiento respecto de la herramienta
Continuacin
[\Rx]
Tipo de dato: num
La rotacin en grados alrededor del eje x del sistema de coordenadas de la
herramienta.
[\Ry]
Tipo de dato: num
La rotacin en grados alrededor del eje y del sistema de coordenadas de la
herramienta.
[\Rz]
Tipo de dato: num
La rotacin en grados alrededor del eje z del sistema de coordenadas de la
herramienta.
Si se especifican dos o tres rotaciones al mismo tiempo, stas se realizan primero
alrededor del eje x, a continuacin alrededor del nuevo eje y, y a continuacin
alrededor del nuevo eje z.
Sintaxis
RelTool(
[ Point := ] < expression (IN) of robtarget>,
[Dx :=] <expression (IN) of num>,
[Dy :=] <expression (IN) of num>,
[Dz :=] <expression (IN) of num>
[\Rx := <expression (IN) of num> ]
[\Ry := <expression (IN) of num> ]
[\Rz := <expression (IN) of num> ])

Una funcin con un valor de retorno del tipo de dato robtarget.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos de posicin

robtarget - Datos de posicin en la pgina 1266

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

Instrucciones de posicionamiento

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Movimiento

3HAC16581-5 Revisin: L

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

2 Funciones
2.108 RemainingRetries - Reintentos restantes an pendientes

2.108 RemainingRetries - Reintentos restantes an pendientes


Utilizacin
RemainingRetries se usa para determinar cuntos RETRY quedan por hacer en
el gestor de errores del programa. El nmero mximo de reintentos se define en
la configuracin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin
RemainingRetries.
Ejemplo 1
...
ERROR
IF RemainingRetries() > 0 THEN
RETRY;
ELSE
TRYNEXT;
ENDIF
...

Este programa reintentar la instruccin, a pesar de error, hasta alcanzar el nmero


mximo de reintentos y a continuacin intentar la instruccin siguiente.
Valor de retorno
Tipo de dato: num
El valor de retorno indica cuntos reintentos quedan por hacer del nmero total
de reintentos.
Sintaxis
RemainingRetries()

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Gestores de errores

Technical reference manual - RAPID overview, seccin


Caractersticas bsicas - Recuperacin en caso de error

Reanudacin de la ejecucin des- RETRY - Reanuda la ejecucin despus de un error en


pus de un error
la pgina 388
Configuracin del nmero mximo Manual de referencia tcnica - Parmetros del sistema,
de reintentos
seccin System misc
Restablece el nmero de reinten- ResetRetryCount - Restablece el nmero de reintentos
tos contado
en la pgina 384

1034

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.109 RMQGetSlotName - Obtener el nombre de un cliente de RMQ

2.109 RMQGetSlotName - Obtener el nombre de un cliente de RMQ


Utilizacin
RMQGetSlotName (RAPID Mesasage Queue Get Slot Name) se utiliza para obtener
el nombre de ranura de un RMQ cliente de Robot Application Builder a partir de
una identidad de ranura determinada, es decir, desde un rmqslot determinado.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin RMQGetSlotName.
Ejemplo 1
VAR rmqslot slot;
VAR string client_name;
RMQFindSlot slot, "RMQ_T_ROB1";
...
client_name := RMQGetSlotName(slot);
TPWrite "Name of the client: " + client_name;

Este ejemplo ilustra cmo obtener el nombre de un cliente utilizando la identidad


del cliente.
Valor de retorno
Tipo de dato: string
Se devuelve el nombre del cliente. Puede tratarse de un nombre de RMQ o del
nombre de un cliente de Robot Application Builder que utiliza la funcionalidad de
RMQ.
Argumentos
RMQGetSlotName (Slot)

Slot
Tipo de dato: rmqslot
El nmero de ranura de identidad del cliente cuyo nombre se desea encontrar.
Ejecucin de programas
La instruccin RMQGetSlotName se usa para encontrar el nombre del cliente que
tiene el nmero de identidad especificado en el argumento Slot. El cliente puede
ser otro RMQ, o bien un cliente de Robot Application Builder.
Gestin de errores
Pueden generarse los errores recuperables siguientes. Los errores pueden ser
gestionados en un gestor ERROR. La variable de sistema ERRNO cambia a:
ERR_RMQ_INVALID

La ranura de destino no ha sido conectada o la ranura de


destino ya no est disponible. Si no hay conexin, debe realizarse una llamada a RMQFindSlot. Si no est disponible, el
motivo es que un cliente remoto se ha desconectado del controlador.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.109 RMQGetSlotName - Obtener el nombre de un cliente de RMQ
Continuacin
Sintaxis
RMQGetSlotName(
[ Slot := ] < variable (VAR) of rmqslot >)

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID


Message Queue

Application manual - Robot communication


and I/O control, seccin RAPID Message
Queue.

Encontrar el nmero de identidad de una ta- RMQFindSlot - Buscar una identidad de ranurea de RAPID Message Queue o de un
ra para el nombre de ranura en la pgina 397
cliente de Robot Application Builder
Enviar datos a la cola de una tarea de RAPID RMQSendMessage - Enviar un mensaje de
o de un cliente de Robot Application Builder datos de RMQ en la pgina 412
Obtener el primer mensaje de una cola de
RAPID Message Queue.

RMQGetMessage - Obtener un mensaje de


RMQ en la pgina 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 pgiesperar una respuesta del cliente
na 416
Extraer los datos de encabezado de un rmq- RMQGetMsgHeader - Obtener informacin
de encabezado de un mensaje de RMQ en
message
la pgina 405
Extraer los datos de un rmqmessage

RMQGetMsgData - Obtener la parte de datos


de un mensaje de RMQ en la pgina 402

Ordenar y habilitar interrupciones para un ti- IRMQMessage - Ordenar interrupciones de


po de dato en concreto
RMQ para un tipo de dato en la pgina 175
RMQ Slot

rmqslot - Nmero de identidad de un cliente


de RMQ en la pgina 1264

1036

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.110 RobName - Obtiene el nombre del robot del TCP

2.110 RobName - Obtiene el nombre del robot del TCP


Utilizacin
RobName (Robot Name) se utiliza para obtener el nombre del robot de TCP desde
una tarea de programa. Si la tarea no controla ningn robot de TCP, esta funcin
devuelve una cadena vaca.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin RobName.
Consulte tambin Ms ejemplos en la pgina 1037.
Ejemplo 1
VAR string my_robot;
...
my_robot := RobName();
IF my_robot="" THEN
TPWrite "This task does not control any TCP robot";
ELSE
TPWrite "This task controls TCP robot with name "+ my_robot;
ENDIF

Se escribe en el FlexPendant el nombre del robot de TCP controlado desde esta


tarea de programa. Si no se controla ningn robot de TCP, se indica que la tarea
no controla ningn robot.
Valor de retorno
Tipo de dato: string
El nombre de unidad mecnica del robot de TCP controlado desde esta tarea de
programa. Devuelve una cadena vaca si no se est controlando ningn robot de
TCP.
Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la instruccin RobName.
Ejemplo 1
VAR string my_robot;
...
IF TaskRunRob() THEN
my_robot := RobName();
TPWrite "This task controls robot with name "+ my_robot;

ENDIF
Si esta tarea de programa controla algn robot de TCP, se escribe en el
FlexPendant el nombre del robot de TCP.
Sintaxis
RobName ()

Una funcin con un valor de retorno del tipo de dato string.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.110 RobName - Obtiene el nombre del robot del TCP
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comprobacin de si la tarea controla


algn robot de TCP

TaskRunRob - Comprueba si una tarea controla


algn robot en la pgina 1089

Comprobacin de si la tarea controla


alguna unidad mecnica

TaskRunMec - Comprueba si una tarea controla


alguna unidad mecnica en la pgina 1088

Obtencin del nombre de las unidades GetNextMechUnit - Obtener el nombre y los datos
mecnicas del sistema
de las unidades mecnicas en la pgina 914
Funciones para cadenas de caracteres Manual de referencia tcnica - Instrucciones,
funciones y tipos de datos de RAPID, seccin
Resumen sobre RAPID - Funciones para cadenas
de caracteres
Definicin de cadena de caracteres

string - Cadenas de caracteres en la pgina 1287

1038

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.111 RobOS - Comprueba si el programa se est ejecutando en RC o VC

2.111 RobOS - Comprueba si el programa se est ejecutando en RC o VC


Utilizacin
RobOS (Robot Operating System) puede usarse para comprobar si la ejecucin se
realiza en Robot Controller RC o en Virtual Controller VC.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin RobOS.
Ejemplo 1
IF RobOS() THEN
! Execution statements in RC
ELSE
! Execution statements in VC
ENDIF

Valor de retorno
Tipo de dato: bool
TRUE si la ejecucin se est realizando en el controlador de robot RC. De lo
contrario, FALSE.
Sintaxis
RobOS ()

Una funcin con un valor de retorno del tipo de dato bool.

3HAC16581-5 Revisin: L

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

2 Funciones
2.112 Round - Redondear un valor numrico

2.112 Round - Redondear un valor numrico


Utilizacin
Round se utiliza para redondear un valor numrico con un nmero determinado
de decimales o a un valor entero.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Round.
Ejemplo 1
VAR num val;
val := Round(0.3852138\Dec:=3);

The variable val is given the value 0.385.


Ejemplo 2
val := Round(0.3852138\Dec:=1);

Se asigna a la variable val el valor 0,4.


Ejemplo 3
val := Round(0.3852138);

Se asigna a la variable val el valor 0.


Ejemplo 4
val := Round(0.3852138\Dec:=6);

Se asigna a la variable val el valor 0,385214.


Valor de retorno
Tipo de dato: num
El valor numrico redondeado con el nmero especificado de decimales.
Argumentos
Round ( Val [\Dec])

Val
Value
Tipo de dato: num
El valor numrico a redondear.
[\Dec]
Decimals
Tipo de dato: num
Nmero de decimales.
Si el nmero de decimales especificado es 0 o se omite el argumento, el valor se
redondea a un entero.
El nmero de decimales no debe ser negativo ni mayor que la precisin disponible
para los valores numricos.
El nmero mximo de decimales que pueden usarse es 6.

Contina en la pgina siguiente


1040

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.112 Round - Redondear un valor numrico
Continuacin
Sintaxis
Round(
[ Val := ] <expression (IN) of num>
[ \Dec := <expression (IN) of num> ]
)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

Truncacin de un valor

Trunc - Trunca un valor numrico en la pgina 1104

3HAC16581-5 Revisin: L

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

2 Funciones
2.113 RoundDnum - Redondear un valor numrico

2.113 RoundDnum - Redondear un valor numrico


Utilizacin
RoundDnum se utiliza para redondear un valor numrico con un nmero determinado
de decimales o a un valor entero.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin RoundDnum.
Ejemplo 1
VAR dnum val;
val := RoundDnum(0.3852138754655357\Dec:=3);

The variable val is given the value 0.385.


Ejemplo 2
val := RoundDnum(0.3852138754655357\Dec:=1);

Se asigna a la variable val el valor 0,4.


Ejemplo 3
val := RoundDnum(0.3852138754655357);

Se asigna a la variable val el valor 0.


Ejemplo 4
val := RoundDnum(0.3852138754655357\Dec:=15);

Se asigna a la variable val el valor 0,385213875465536.


Ejemplo 5
val := RoundDnum(1000.3852138754655357\Dec:=15);

Se asigna a la variable val el valor 1000,38521387547.


Valor de retorno
Tipo de dato: dnum
El valor numrico redondeado con el nmero especificado de decimales.
Argumentos
RoundDnum ( Val [\Dec])

Val
Value
Tipo de dato: dnum
El valor numrico a redondear.
[\Dec]
Decimals
Tipo de dato: num
Nmero de decimales.
Si el nmero de decimales especificado es 0 o se omite el argumento, el valor se
redondea a un entero.
Contina en la pgina siguiente
1042

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.113 RoundDnum - Redondear un valor numrico
Continuacin
El nmero de decimales no debe ser negativo ni mayor que la precisin disponible
para los valores numricos.
El nmero mximo de decimales que pueden usarse es 15.
Sintaxis
RoundDnum(
[ Val := ] <expression (IN) of dnum>
[ \Dec := <expression (IN) of num> ]
)

Una funcin con un valor de retorno del tipo de dato dnum.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Matemticas

Redondeo de un valor

Round - Redondear un valor numrico en la


pgina 1040

Truncacin de un valor

Trunc - Trunca un valor numrico en la pgina 1104

Truncacin de un valor

TruncDnum - Trunca un valor numrico en


la pgina 1106

3HAC16581-5 Revisin: L

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

2 Funciones
2.114 RunMode - Obtiene el modo de ejecucin

2.114 RunMode - Obtiene el modo de ejecucin


Utilizacin
RunMode(Running Mode) se usa para leer el modo de ejecucin actual de la tarea
del programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin RunMode.
Ejemplo 1
IF RunMode() = RUN_CONT_CYCLE THEN
...
ENDIF

La seccin de programa slo se ejecuta para un funcionamiento continuado o


cclico.
Valor de retorno
Tipo de dato: symnum
El modo de ejecucin actual, con uno de los valores definidos como se describe
en la tabla siguiente.
Valor de retorno Constante simblica

Comentario

RUN_UNDEF

Modo de ejecucin no definido

RUN_CONT_CYCLE

Modo de ejecucin continuo o en modo ciclo

RUN_INSTR_FWD

Modo de ejecucin de avance de instrucciones

RUN_INSTR_BWD

Modo de ejecucin hacia atrs

RUN_SIM

Modo de ejecucin simulado. An no publicado.

RUN_STEP_MOVE

Instrucciones de movimiento en ejecucin hacia


delante e instrucciones lgicas en modo de ejecucin continuo

Argumentos
RunMode ( [ \Main] )

[ \Main ]
Tipo de dato: switch
Devuelve el modo actual de la tarea si sta es una tarea de movimiento. Si se usa
en una tarea sin movimiento, devuelve el modo actual de la tarea de movimiento
a la que est conectada la tarea sin movimiento.
Si se omite el argumento, el valor de retorno siempre refleja el modo de ejecucin
opuesto de la tarea de programa que ejecuta la funcin RunMode.
Sintaxis
RunMode ( [\Main] )

Una funcin con un valor de retorno del tipo de dato symnum.

Contina en la pgina siguiente


1044

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.114 RunMode - Obtiene el modo de ejecucin
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Lectura del modo de funcionamiento

OpMode - Lee el modo de funcionamiento en la


pgina 976

3HAC16581-5 Revisin: L

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

2 Funciones
2.115 Sin - Calcula el valor del seno

2.115 Sin - Calcula el valor del seno


Utilizacin
Sin(Sine) se utiliza para calcular el valor de seno de un valor de ngulo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Sin.
Ejemplo 1
VAR num angle;
VAR num value;
...
...
value := Sin(angle);

value obtiene el valor de seno de angle.


Valor de retorno
Tipo de dato: num
El valor del seno en el rango [-1, 1].
Argumentos
Sin (Angle)

Angle
Tipo de dato: num
El valor del ngulo, expresado en grados.
Sintaxis
Sin(
[Angle:=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

1046

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.116 SocketGetStatus - Obtiene el estado actual de un zcalo

2.116 SocketGetStatus - Obtiene el estado actual de un zcalo


Utilizacin
SocketGetStatus devuelve el estado actual de un zcalo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin
SocketGetStatus.
Consulte tambin Ms ejemplos en la pgina 1048.
Ejemplo 1
VAR socketdev socket1;
VAR socketstatus state;
...
SocketCreate socket1;
state := SocketGetStatus( socket1 );

El estado de zcalo SOCKET_CREATED se almacena en la variable state.


Valor de retorno
Tipo de dato: socketstatus
El estado actual del zcalo.
Slo es posible usar constantes simblicas predefinidas del tipo socketstatus
para comprobar el estado.
Argumentos
SocketGetStatus( Socket )

Socket
Tipo de dato: socketdev
La variable de zcalo cuyo estado se desea averiguar.
Ejecucin de programas
Esta funcin devuelve uno de los estados de zcalo predefinidos siguientes:
SOCKET_CREATED, SOCKET_CONNECTED, SOCKET_BOUND, SOCKET_LISTENING o
SOCKET_CLOSED.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.116 SocketGetStatus - Obtiene el estado actual de un zcalo
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin SocketGetStatus.
VAR socketstatus status;
VAR socketdev my_socket;
...
SocketCreate my_socket;
SocketConnect my_socket, "192.168.0.1", 1025;
! A lot of RAPID code
status := SocketGetStatus( my_socket );
!Check which instruction that was executed last, not the state of
!the socket
IF status = SOCKET_CREATED THEN
TPWrite "Instruction SocketCreate has been executed";
ELSEIF status = SOCKET_CLOSED THEN
TPWrite "Instruction SocketClose has been executed";
ELSEIF status = SOCKET_BOUND THEN
TPWrite "Instruction SocketBind has been executed";
ELSEIF status = SOCKET_LISTENING THEN
TPWrite "Instruction SocketListen or SocketAccept has been
executed";
ELSEIF status = SOCKET_CONNECTED THEN
TPWrite "Instruction SocketConnect, SocketReceive or SocketSend
has been executed";
ELSE
TPWrite "Unknown socket status";
ENDIF

Se crea un zcalo cliente, que se conecta a un ordenador remoto. Antes de que


el zcalo se utilice en una instruccin SocketSend, se comprueba el estado del
zcalo para verificar que an est conectado.
Limitaciones
El estado de un zcalo slo puede ser cambiado mediante la ejecucin de una
instruccin de zcalo de RAPID. Por ejemplo, si se conecta el zcalo pero la
conexin se interrumpe, este hecho no ser indicado por la funcin
SocketGetStatus. En su lugar, se devolver un error cuando se utiliza el zcalo
en una instruccin SocketSend o SocketReceive.
Sintaxis
SocketGetStatus (
[ Socket := ] < variable (VAR) of socketdev > )

Una funcin con un valor de retorno del tipo de dato socketstatus.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comunicacin con zcalos en general

Application manual - Robot communication and


I/O control

Creacin de un nuevo zcalo

SocketCreate - Crea un nuevo zcalo en la pgina 489

Contina en la pgina siguiente


1048

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.116 SocketGetStatus - Obtiene el estado actual de un zcalo
Continuacin
Para obtener ms informacin sobre

Consulte

Conexin a un ordenador remoto (slo


cliente)

SocketConnect - Establece una conexin a un


ordenador remoto en la pgina 486

Envo de datos a un ordenador remoto

SocketSend - Enva datos a un ordenador remoto en la pgina 499

Recepcin de datos desde un ordenador SocketReceive - Recibe datos de un ordenador


remoto
remoto en la pgina 493
Cierre del zcalo

SocketClose - Cierra un zcalo en la pgina 484

Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin


IP y puerto en la pgina 482
Cmo permanecer a la escucha de cone- SocketListen - Permanece a la escucha de coxiones (slo servidor)
nexiones entrantes en la pgina 491
Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante
en la pgina 479

3HAC16581-5 Revisin: L

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

2 Funciones
2.117 Sqrt - Calcula el valor de la raz cuadrada

2.117 Sqrt - Calcula el valor de la raz cuadrada


Utilizacin
Sqrt (Square root) se utiliza para calcular la raz cuadrada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Sqrt.
Ejemplo 1
VAR num x_value;
VAR num y_value;
...
...
y_value := Sqrt( x_value);

y-value obtiene el valor de la raz cuadrada de x_value, es decir (x_value).


Valor de retorno
Tipo de dato: num
El valor de la raz cuadrada ().
Argumentos
Sqrt (Value)

Value
Tipo de dato: num
El valor del argumento de la raz cuadrada, es decir value.
Value debe ser 0.
Limitaciones
La ejecucin de la funcin Sqrt(x) genera un error si x < 0.
Sintaxis
Sqrt(
[Value:=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Calcular el valor de raz cuadrada de un


valor numrico dnum

SqrtDnum - Calcula el valor de la raz cuadrada


en la pgina 1051

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

1050

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.118 SqrtDnum - Calcula el valor de la raz cuadrada

2.118 SqrtDnum - Calcula el valor de la raz cuadrada


Utilizacin
SqrtDmum (Square root dnum) se utiliza para calcular la raz cuadrada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin SqrtDnum.
Ejemplo 1
VAR dnum x_value;
VAR dnum y_value;
...
...
y_value := SqrtDnum(x_value);

y_value obtiene el valor de la raz cuadrada de x_value, es decir (x_value).


Valor de retorno
Tipo de dato: dnum
El valor de la raz cuadrada ().
Argumentos
SqrtDnum (Value)

Value
Tipo de dato: dnum
El valor del argumento de la raz cuadrada, es decir value.
Value debe ser 0.
Limitaciones
La ejecucin de la funcin Sqrt(x) genera un error si x < 0.
Sintaxis
SqrtDnum '('
[ Value ':=' ] < expression (IN) of dnum > ','
')'

Una funcin con un valor de retorno del tipo de dato dnum.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Calcular el valor de raz cuadrada de un valor Sqrt - Calcula el valor de la raz cuadrada en
numrico num
la pgina 1050
Instrucciones y funciones matemticas

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Matemticas

3HAC16581-5 Revisin: L

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

2 Funciones
2.119 STCalcForce - Calcula fuerza de la punta de una herramienta servo

2.119 STCalcForce - Calcula fuerza de la punta de una herramienta servo


Utilizacin
STCalcForce se utiliza para calcular la fuerza de la punta de una herramienta
servo. Por ejemplo, esta funcin se utiliza para determinar la fuerza de punta
mxima permitida con una herramienta servo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin STCalcForce.
Ejemplo 1
VAR num tip_force;
tip_force := STCalcForce(gun1, 7);

Se calcula la fuerza de la punta con un par motor deseado de 7 Nm.


Valor de retorno
Tipo de dato: num
La fuerza de punta calculada [N].
Argumentos
STCalcForce (ToolName MotorTorque)

ToolName
Tipo de dato: string
El nombre de la unidad mecnica.
MotorTorque
Tipo de dato: num
El par motor deseado [Nm].
Gestin de errores
Si el nombre especificado para la herramienta servo no corresponde a una
herramienta servo configurada, la variable de sistema ERRNO cambia a
ERR_NO_SGUN.
El error puede ser gestionado en un gestor de errores de RAPID.
Sintaxis
STCalcForce
[ ToolName := ] < expression (IN) of string > ,
[ MotorTorque := ] < expression (IN) of num > ;

A function with a return value of the data type num.


Informacin relacionada
Para obtener ms informacin Consulte
sobre
Apertura de una herramienta
servo

STOpen - Abre una herramienta servo en la pgina 546

Contina en la pgina siguiente


1052

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.119 STCalcForce - Calcula fuerza de la punta de una herramienta servo
Continuacin
Para obtener ms informacin Consulte
sobre
Cierre de una herramienta servo STClose - Cierra una herramienta servo en la pgina 528
Clculo del par motor

STCalcTorque - Calcula el par motor de una herramienta


servo en la pgina 1054

3HAC16581-5 Revisin: L

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

2 Funciones
2.120 STCalcTorque - Calcula el par motor de una herramienta servo

2.120 STCalcTorque - Calcula el par motor de una herramienta servo


Utilizacin
STCalcTorque se utiliza para calcular el par motor de una herramienta servo. Por
ejemplo, esta funcin se utiliza cuando se realiza una calibracin de la fuerza.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin STCalcTorque.
Ejemplo 1
VAR num curr_motortorque;
curr_motortorque := STCalcTorque( gun1, 1000);

Se calcula el par motor con una fuerza de la punta deseada de 1000 Nm.
Valor de retorno
Tipo de dato: num
El par motor calculado [Nm].
Argumentos
STCalcTorque (ToolName TipForce)

ToolName
Tipo de dato: string
El nombre de la unidad mecnica.
TipForce
Tipo de dato: num
La fuerza de punta deseada [N].
Gestin de errores
Si el nombre especificado para la herramienta servo no corresponde a una
herramienta servo configurada, la variable de sistema ERRNO cambia a
ERR_NO_SGUN.
El error puede ser gestionado en un gestor de errores de RAPID.
Sintaxis
STCalcTorque
[ ToolName := ] < expression (IN) of string > ,
[ TipForce := ] < expression (IN) of num > ;

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informa- Consulte
cin sobre
Apertura de una herramienta STOpen - Abre una herramienta servo en la pgina 546
servo

Contina en la pgina siguiente


1054

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.120 STCalcTorque - Calcula el par motor de una herramienta servo
Continuacin
Para obtener ms informa- Consulte
cin sobre
Cierre de una herramienta
servo

STClose - Cierra una herramienta servo en la pgina 528

Clculo de la fuerza de la
punta

STCalcForce - Calcula fuerza de la punta de una herramienta


servo en la pgina 1052

3HAC16581-5 Revisin: L

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

2 Funciones
2.121 STIsCalib - Compruebe si una herramienta servo est calibrada

2.121 STIsCalib - Compruebe si una herramienta servo est calibrada


Utilizacin
STIsCalib se utiliza para comprobar si una herramienta servo est calibrada, es
decir, comprobar si las puntas de la pistola estn calibradas o sincronizadas.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin STIsCalib.
Ejemplo 1
IF STIsCalib(gun1\sguninit) THEN
...
ELSE
!Start the gun calibration
STCalib gun1\TipChg;
ENDIF

Ejemplo 2
IF STIsCalib(gun1\sgunsynch) THEN
...
ELSE
!Start the gun calibration to synchronize the gun position with
the revolution counter
STCalib gun1\ToolChg;
ENDIF

Valor de retorno
Tipo de dato: bool
TRUE si la herramienta comprobada est calibrada, es decir, que la distancia entre
las puntas de la herramienta est calibrada, o si la herramienta comprobada est
sincronizada, es decir, que la posicin de las puntas de la herramienta est
sincronizada con el cuentarrevoluciones de la herramienta.
FALSE si la herramienta comprobada no est calibrada ni sincronizada.
Argumentos
STIsCalib(ToolName [ \sguninit ] | [ \sgunsynch ])

ToolName
Tipo de dato: string
El nombre de la unidad mecnica.
[ \sguninit ]
Tipo de dato: switch
Este argumento se utiliza para comprobar si la posicin de la pistola est
inicializada y calibrada.
[ \sgunsynch ]
Tipo de dato: switch

Contina en la pgina siguiente


1056

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.121 STIsCalib - Compruebe si una herramienta servo est calibrada
Continuacin
Este argumento se utiliza para comprobar si la posicin est sincronizada con el
cuentarrevoluciones.
Sintaxis
STIsCalib(
[ ToolName := ] < expression (IN) of string >
[ \sguninit ] | [ \sgunsynch ] )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Calibracin de una herramienta servo

STCalib - Calibra una herramienta servo en


la pgina 524

3HAC16581-5 Revisin: L

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

2 Funciones
2.122 STIsClosed - Comprueba si una herramienta servo est cerrada

2.122 STIsClosed - Comprueba si una herramienta servo est cerrada


Utilizacin
STIsClosed se utiliza para comprobar si una herramienta servo est cerrada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin STIsClosed.
Ejemplo 1
IF STIsClosed(gun1) THEN
!Start the weld process
Set weld_start;
ELSE
...
ENDIF

Comprobar si la pistola est cerrada.


Ejemplo 2
STClose "sgun", 1000, 3 \Conc;
WHILE NOT(STIsClosed("sgun"\RetThickness:=thickness)) DO
WaitTime 0.1;
ENDWHILE
IF thickness > max_thickness THEN...

Se empieza a cerrar la pistola con el nombre sgun. Se contina inmediatamente


con la siguiente instruccin, en la que el programa espera a que se cierre la pistola.
Se lee el valor de grosor conseguido cuando la instruccin STIsClosed haya
devuelto TRUE.
Ejemplo 3
Ejemplos de combinaciones no vlidas
STClose "sgun", 1000, 3 \RetThickness:=thickness \Conc;
WHILE NOT(STIsClosed("sgun"\RetThickness:=thickness_2)) DO;
...

Se cierra la pistola. El parmetro thickness no incluye ningn valor vlido ya que


se utiliza el modificador \Conc. Espere a que se cierre la pistola. Cuando la pistola
se cierra y STIsClosed devuelve TRUE, el parmetro thickness_2 incluir un valor
vlido ya que el modificador \Conc se utiliz para STClose.
STClose "sgun", 1000, 3 \RetThickness:=thickness;
WHILE NOT(STIsClosed("sgun"\RetThickness:=thickness_2)) DO;
...

Se cierra la pistola. El parmetro thickness incluir un valor vlido cuando la pistola


se haya cerrado, dado que el modificador \Conc no se utiliza. El parmetro
thickness_2 no incluir ningn valor vlido, dado que el modificador \Conc no se
utiliz en la instruccin STClose.
Valor de retorno
Tipo de dato: bool
Contina en la pgina siguiente
1058

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.122 STIsClosed - Comprueba si una herramienta servo est cerrada
Continuacin
TRUE si la herramienta comprobada est cerrada, es decir, si se consigue la fuerza
de punta deseada.
FALSE si la herramienta comprobada no est cerrada.
Argumentos
STIsClosed (ToolName)

ToolName
Tipo de dato: string
El nombre de la unidad mecnica.
[\RetThickness]
Tipo de dato: num
El grosor conseguido [mm].
ATENCIN! Slo es vlido si \Conc se ha utilizado en la instruccin STClose
precedente.
Sintaxis
STIsClosed(
[ ToolName := ] < expression (IN) of string > )
[\ RetThickness := < variable or persistent (INOUT) of num
> ]

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Apertura de una herramienta ser- STOpen - Abre una herramienta servo en la pgina 546
vo
Cierre de una herramienta servo STClose - Cierra una herramienta servo en la pgina 528
Comprobacin de si una herramienta servo est abierta

STIsOpen - Comprueba si una herramienta servo est


abierta en la pgina 1061

3HAC16581-5 Revisin: L

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

2 Funciones
2.123 STIsIndGun - Comprueba si una herramienta servo se encuentra en el modo independiente

2.123 STIsIndGun - Comprueba si una herramienta servo se encuentra en el modo


independiente
Utilizacin
STIsIndGun se utiliza para comprobar si una herramienta servo se encuentra en
el modo independiente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin STIsIndGun.
Ejemplo 1
IF STIsIndGun(gun1) THEN
Start the gun calibration
STCalib gun1\???????;
ELSE
...
ENDIF

Valor de retorno
Tipo de dato: bool
TRUE si la herramienta comprobada se encuentra en el modo independiente, es
decir, puede moverse de forma independiente de los movimientos del robot.
FALSE si la herramienta comprobada no est en el modo independiente.
Argumentos
STIsIndGun(ToolName)

ToolName
Tipo de dato: string
El nombre de la unidad mecnica.
Sintaxis
STIsIndGun(
[ ToolName := ] < expression (IN) of string > )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Calibracin de una herramienta servo

STCalib - Calibra una herramienta servo en


la pgina 524

Cambiar la pistola al modo independiente

STIndGun - Pone la pistola en el modo independiente en la pgina 533

Restablecer el modo independiente de la


pistola

STIndGunReset - Restablece el modo independiente de la pistola en la pgina 535

1060

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.124 STIsOpen - Comprueba si una herramienta servo est abierta

2.124 STIsOpen - Comprueba si una herramienta servo est abierta


Utilizacin
STIsOpen se utiliza para comprobar si una herramienta servo est abierta.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin STIsOpen.
Ejemplo 1
IF STIsOpen(gun1) THEN
!Start the motion
MoveL ...
ELSE
...
ENDIF

Comprobar si la pistola est abierta.


Ejemplo 2
STCalib "sgun" \TipWear \Conc;
WHILE NOT(STIsOpen("sgun") \RetTipWear:=tipwear \RetPosAdj:=posadj)
DO;
WaitTime 0.1;
ENDWHILE

IF tipwear > 20...


IF posadj > 25...
Realizar una calibracin de desgaste de puntas. Espere hasta que la pistola sgun
est abierta. Lea los valores de desgaste de la punta y el ajuste posicional.
Ejemplo 3
Ejemplos de combinaciones no vlidas
STCalib "sgun" \TipWear \RetTipWear:=tipwear_1 \Conc;
WHILE NOT(STIsOpen("sgun") \RetTipWear:=tipwear_2) DO;
WaitTime 0.1;
ENDWHILE

Iniciar una calibracin de desgaste de puntas. El parmetro tipwear_1no incluye


ningn valor vlido ya que se utiliza el modificador \Conc. Cuando la calibracin
est preparada y STIsOpen devuelve TRUE, el parmetro tipwear_2 contendr
un valor vlido.
STCalib "sgun" \TipWear \RetTipWear:=tipwear_1;
WHILE NOT(STIsOpen("sgun") \RetTipWear:=tipwear_2) DO;
WaitTime 0.1;
ENDWHILE

Realizar una calibracin de desgaste de puntas. El parmetro tipwear_1 incluye


un valor vlido ya que no se utiliza el modificador \Conc. Cuando STIsOpen
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.124 STIsOpen - Comprueba si una herramienta servo est abierta
Continuacin
devuelve TRUE, el parmetro tipwear_2 no contiene ningn valor vlido dado
que el modificador \Conc no se utiliz en STCalib.
Valor de retorno
Tipo de dato: bool
TRUE si la herramienta comprobada est abierta, es decir, si el brazo de la
herramienta se encuentra en la posicin abierta programada.
FALSE si la herramienta comprobada no est abierta.
Argumentos
STIsOpen (ToolName)

ToolName
Tipo de dato: string
El nombre de la unidad mecnica.
[\RetTipWear]
Tipo de dato: num
El desgaste de puntas detectado [en mm].
ATENCIN! Slo es vlido si \Conc se ha usado en una instruccin STCalib
precedente y si STIsOpen devuelve TRUE.
[\RetPosAdj]
Tipo de dato: num
El ajuste de posicin desde la ltima calibracin [mm].
ATENCIN! Slo es vlido si se ha usado \Conc en una instruccin STCalib
precedente y si STIsOpen devuelve TRUE.
Sintaxis
STIsOpen(
[ ToolName := ] < expression (IN) of string > )
[ \RetTipWear := < variable or persistent(INOUT) of num >
];
[ \RetPosAdj := < variable or persistent(INOUT) of num > ]

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin Consulte
sobre
Apertura de una herramienta
servo

STOpen - Abre una herramienta servo en la pgina 546

Cierre de una herramienta servo STClose - Cierra una herramienta servo en la pgina 528
Comprobacin de si una herramienta servo est cerrada

STIsClosed - Comprueba si una herramienta servo est


cerrada en la pgina 1058

1062

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.125 StrDigCalc - Operaciones aritmticas con el tipo de dato stringdig

2.125 StrDigCalc - Operaciones aritmticas con el tipo de dato stringdig


Utilizacin
StrDigCalc se utiliza para realizar operaciones aritmticas (+, -, *, /, %) con dos
cadenas de dgitos positivos, de la misma forma en que se realizan las operaciones
aritmticas numricas con valores enteros positivos.
Esta funcin permite gestionar enteros positivos superiores a 8.388.608 con una
representacin exacta.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin StrDigCalc.
Consulte tambin Ms ejemplos en la pgina 1064.
Ejemplo 1
res := StrDigCalc(str1, OpAdd, str2);

Se asigna a res el resultado de la operacin de suma de los valores representados


por las cadenas digitales str1 y str2.
Valor de retorno
Tipo de dato: stringdig
stringdig se utiliza para representar enteros positivos grandes en una cadena,
usando nicamente dgitos.
Este tipo de dato ha sido introducido dado que el tipo de dato num no es capaz de
manejar enteros positivos superiores a 8.388.608 con una representacin exacta.
Argumentos
StrDigCalc (StrDig1 Operation StrDig2)

StrDig1
String Digit 1
Tipo de dato: stringdig
Una cadena que representa un valor entero positivo.
Operation
Arithmetic operator
Tipo de dato: opcalc
Define la operacin aritmtica a realizar con las dos cadenas de dgitos. Es posible
usar las operaciones aritmticas siguientes del tipo de dato opcalc; OpAdd,
OpSub, OpMult, OpDiv y OpMod.
StrDig2
String Digit 2
Tipo de dato: stringdig
Una cadena que representa un valor entero positivo.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.125 StrDigCalc - Operaciones aritmticas con el tipo de dato stringdig
Continuacin
Ejecucin de programas
Esta funcin permite:

Comprobar que slo haya dgitos del 0 al 9 en StrDig1 y StrDig2

Convertir las dos cadenas de dgitos a long integers

Realizar una operacin aritmtica con los dos long integers

Convertir el resultado de long integer a stringdig

Ms ejemplos
A continuacin aparecen ms ejemplos de cmo usar la funcin StrDigCalc.
Ejemplo 1
res := StrDigCalc(str1, OpSub, str2);

Se asigna a res el resultado de la operacin de resta de los valores representados


por las cadenas digitales str1 y str2.
Ejemplo 2
res := StrDigCalc(str1, OpMult, str2);

Se asigna a res el resultado de la operacin de multiplicacin de los valores


representados por las cadenas digitales str1 y str2.
Ejemplo 3
res := StrDigCalc(str1, OpDiv, str2);

Se asigna a res el resultado de la operacin de divisin de los valores


representados por las cadenas digitales str1 y str2.
Ejemplo 4
res := StrDigCalc(str1, OpMod, str2);

Se asigna a res el resultado de la operacin de mdulo de los valores


representados por las cadenas digitales str1 y str2.
Gestin de errores
Los errores siguientes pueden ser gestionados en un gestor de errores de RAPID.
Cdigo de error

Descripcin

ERR_INT_NOTVAL

Valores de entrada no slo con dgitos o mdulo entre cero

ERR_INT_MAXVAL

Valor de entrada superior a 4294967295

ERR_CALC_OVERFLOW

Resultado dentro del rango 0...4.294.967.295

ERR_CALC_NEG

Resta negativa, es decir StrDig2 > StrDig1

ERR_CALC_DIVZERO

Divisin entre cero

Limitaciones
StrDigCalc slo acepta cadenas que contengan nicamente dgitos (caracteres
del 0 al 9). La existencia de cualquier otro carcter en stringdig da lugar a un
error.
Esta funcin slo puede manejar enteros positivos hasta 4.294.967.295.

Contina en la pgina siguiente


1064

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.125 StrDigCalc - Operaciones aritmticas con el tipo de dato stringdig
Continuacin
Sintaxis
StrDigCalc(
[ StrDig1 := ] < expression (IN) of stringdig > ,
[ Operation := ] < expression (IN) of opcalc > ,
[ StrDig2 := ] < expression (IN) of stringdig > )

Una funcin con un valor de retorno del tipo de dato stringdig.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Cadenas de caracteres con slo dgitos.

stringdig - Cadena de caracteres con slo


dos dgitos en la pgina 1289

Operadores aritmticos.

opcalc - Arithmetic Operator en la pgina 1236

3HAC16581-5 Revisin: L

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

2 Funciones
2.126 StrDigCmp - Comparar dos cadenas que slo contienen dgitos

2.126 StrDigCmp - Comparar dos cadenas que slo contienen dgitos


Utilizacin
StrDigCmp se utiliza para comparar dos cadenas de dgitos positivos, de la misma
forma en que se comparan numricamente dos enteros positivos.
Esta funcin permite gestionar enteros positivos superiores a 8.388.608 con una
representacin exacta.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin StrDigCmp.
Ejemplo 1
VAR stringdig digits1 := "1234";
VAR stringdig digits2 := "1256";
VAR bool is_equal;
is_equal := StrDigCmp(digits1, EQ, digits2);

La variable is_equal cambia a FALSE, porque el valor numrico 1234 no es igual


a 1256.
Ejemplo 2
CONST string file_path := "...";
CONST string mod_name := "...";
VAR num num_file_time:
VAR stringdig dig_file_time;
VAR num num_mod_time;
VAR stringdig dig_mod_time;
...
num_file_time := FileTime(file_path, \ModifyTime,
\StrDig:=dig_file_time);
num_mod_time := ModTime(mod_name,\StrDig:=dig_mod_time);
IF StrDigCmp(dig_file_time, GT, dig_mod_time) THEN
! Load the new program module
ENDIF

Tanto FileTime como ModTime devuelven el nmero de segundos desde


00:00:00 GMT jan 1 1970, que no pueden representarse con una
representacin exacta en una variable de tipo num. Debido a esta limitacin, se
usan la funcin StrDigCmp y el tipo de dato stringdig.
En la variable dig_file_time se almacena la hora de modificacin del archivo
de mdulo del disco. En la variable dig_mod_time se almacena la hora de ltima
modificacin del archivo del mismo mdulo, antes de que fuera cargado en la
memoria de programas del controlador. Se comparan las dos cadenas de dgitos
y se muestra que el mdulo del disco es ms reciente, de forma que debera ser
cargado en la memoria de programas.
Valor de retorno
Tipo de dato: bool
TRUE si se cumple la condicin indicada. FALSE en caso contrario.

Contina en la pgina siguiente


1066

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.126 StrDigCmp - Comparar dos cadenas que slo contienen dgitos
Continuacin
Argumentos
StrDigCmp (StrDig1 Relation StrDig2)

StrDig1
String Digit 1
Tipo de dato: stringdig
La primera cadena a comparar numricamente, slo con dgitos.
Relation
Tipo de dato: opnum
Define cmo comparar las dos cadenas de dgitos. Es posible usar las constantes
predefinidas del tipo de dato opnumLT, LTEQ, EQ, NOTEQ, GTEQ o bien GT.
StrDig2
String Digit 2
Tipo de dato: stringdig
La segunda cadena a comparar numricamente, slo con dgitos.
Ejecucin de programas
Esta funcin permite:

Comprobar que slo se usen dgitos del 0 al 9 en StrDig1 y StrDig2

Convertir las dos cadenas de dgitos a long integers

Comparar numricamente los dos long integers

Gestin de errores
Los errores siguientes pueden ser gestionados en un gestor de errores de RAPID.
Cdigo de error

Descripcin

ERR_INT_NOTVAL

Valores de entrada no slo dgitos

ERR_INT_MAXVAL

Valor superior a 4294967295

Limitaciones
StrDigCmp slo acepta cadenas que contengan nicamente dgitos (caracteres
del 0 al 9). La existencia de cualquier otro carcter en stringdig da lugar a un
error.
Esta funcin slo puede manejar enteros positivos hasta 4.294.967.295.
Sintaxis
StrDigCmp(
[ StrDig1 := ] < expression (IN) of stringdig > ,
[ Relation := ] < expression (IN) of opnum > ,
[ StrDig2 := ] < expression (IN) of stringdig > )

Una funcin con un valor de retorno del tipo de dato bool.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.126 StrDigCmp - Comparar dos cadenas que slo contienen dgitos
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Cadena de caracteres con slo dgitos

stringdig - Cadena de caracteres con slo


dos dgitos en la pgina 1289

Operadores de comparacin

opnum - Operador de comparacin en la pgina 1237

Informacin de hora de archivo

FileTime - Obtiene la informacin de hora de


un archivo en la pgina 906

Hora de modificacin de archivo del mdulo ModTime - Obtiene la hora de modificacin


cargado
del mdulo cargado en la pgina 963

1068

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.127 StrFind - Busca un carcter en una cadena de caracteres

2.127 StrFind - Busca un carcter en una cadena de caracteres


Utilizacin
StrFind (String Find) se utiliza para buscar en una cadena, a partir de una posicin
especificada, un carcter que se encuentra dentro de un conjunto determinado de
caracteres.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin StrFind.
Ejemplo 1
VAR num found;
found := StrFind("Robotics",1,"aeiou");

Se asigna a la variable found el valor 2.


found := StrFind("Robotics",1,"aeiou"\NotInSet);

Se asigna a la variable found el valor 1


found := StrFind("IRB 6400",1,STR_DIGIT);

Se asigna a la variable found el valor 5.


found := StrFind("IRB 6400",1,STR_WHITE);

Se asigna a la variable found el valor 4.


Valor de retorno
Tipo de dato: num
La posicin de carcter del primer carcter, ya sea en o despus de la posicin
especificada, que pertenece al conjunto especificado. Si no se encuentra ninguno
de los caracteres especificados, se devuelve la longitud de la cadena de caracteres
+1.
Argumentos
StrFind (Str ChPos Set [\NotInSet])

Str
String
Tipo de dato: string
La cadena en la que se desea buscar.
ChPos
Character Position
Tipo de dato: num
La posicin del carcter inicial. Si la posicin est fuera de la cadena de caracteres,
se genera un error de tiempo de ejecucin.
Set
Tipo de dato: string
El conjunto de caracteres que se desea comprobar. Consulte tambin Datos
predefinidos en la pgina 1070.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.127 StrFind - Busca un carcter en una cadena de caracteres
Continuacin
[\NotInSet]
Tipo de dato: switch
Buscar un carcter que no se encuentra en el conjunto de caracteres presente en
Set.
Sintaxis
StrFind(
[ Str := ]
[ ChPos :=
[ Set := ]
[\NotInSet
)

<expression (IN) of string> ,


] <expression (IN) of num> ,
<expression (IN) of string>
]

Una funcin con un valor de retorno del tipo de dato num.


Datos predefinidos
El sistema dispone de varias constantes de cadena de caracteres predefinidas,
que pueden usarse junto con las funciones para cadenas de caracteres.
Nombre

Conjunto de caracteres

STR_DIGIT

<digit> ::=
0|1|2|3|4|5|6|7|8|9

STR_UPPER

<upper case letter> ::=


A|B|C|D|E|F|G|H|I|J
|K|L|M|N|O|P|Q|R|S|T
|U|V|W|X|Y|Z||||
||||||||||
| | | 1)| | | | | | |
| | | | | 2) | 3)

STR_LOWER

<lower case letter> ::=


a|b|c|d|e|f|g|h|i|j
|k|l|m|n|o|p|q|r|s|t
|u|v|w|x|y|z||||
||||||||||
| | | 1) | | | | | | |
| | | | | 2) | 3) | | -

STR_WHITE

<blank character> ::=

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Funciones para cadenas de caracteres

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Funciones
para cadenas de caracteres

Definicin de cadena de caracteres

string - Cadenas de caracteres en la pgina 1287

Valores de cadena de caracteres

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Elementos
bsicos

1070

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.128 StrLen - Obtiene la longitud de una cadena

2.128 StrLen - Obtiene la longitud de una cadena


Utilizacin
StrLen (String Length) se utiliza para obtener la longitud actual de la cadena.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin StrLen.
Ejemplo 1
VAR num len;
len := StrLen("Robotics");

Se asigna a la variable len el valor 8.


Valor de retorno
Tipo de dato: num
El nmero de caracteres de la cadena (>=0).
Argumentos
StrLen (Str)

Str
String
Tipo de dato: string
La cadena de caracteres cuyo nmero de caracteres se desea contar.
Sintaxis
StrLen(
[ Str := ] <expression (IN) of string> )

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Funciones para cadenas de caracteres

Manual de referencia tcnica - Instrucciones,


funciones y tipos de datos de RAPID, seccin
Resumen sobre RAPID - Funciones de cadena

Definicin de cadena de caracteres

string - Cadenas de caracteres en la pgina1287

Valores de cadena de caracteres

Manual de referencia tcnica - Instrucciones,


funciones y tipos de datos de RAPID, seccin
Caractersticas bsicas - Elementos bsicos

3HAC16581-5 Revisin: L

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

2 Funciones
2.129 StrMap - Mapea una cadena de caracteres

2.129 StrMap - Mapea una cadena de caracteres


Utilizacin
StrMap (String Mapping) se utiliza para crear una copia de una cadena en la que
todos los caracteres se convierten acorde con una especificacin de mapeo
especificada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin StrMap.
Ejemplo 1
VAR string str;
str := StrMap("Robotics","aeiou","AEIOU");

Se asigna a la variable str el valor "RObOtIcs".


Ejemplo 2
str := StrMap("Robotics",STR_LOWER, STR_UPPER);

Se asigna a la variable str el valor "ROBOTICS".


Valor de retorno
Tipo de dato: string
La cadena de caracteres creada mediante la conversin de los caracteres de la
cadena especificada, de la forma indicada por las cadenas de origen y destino.
Cada carcter de la cadena especificada que se encuentre en la cadena de origen
se reemplaza con el carcter de la posicin correspondiente de la cadena de
destino. Los caracteres para los que no se haya especificado ningn mapeo se
copian sin cambios a la cadena resultante.
Argumentos
StrMap ( Str FromMap ToMap)

Str
String
Tipo de dato: string
La cadena a convertir.
FromMap
Tipo de dato: string
Parte de ndice del mapeo. Consulte tambin Datos predefinidos en la pgina 1073.
ToMap
Tipo de dato: string
Parte de valor del mapeo. Consulte tambin Datos predefinidos en la pgina 1073.

Contina en la pgina siguiente


1072

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.129 StrMap - Mapea una cadena de caracteres
Continuacin
Sintaxis
StrMap(
[ Str := ] <expression (IN) of string> ,
[ FromMap:= ] <expression (IN) of string> ,
[ ToMap:= ] <expression (IN) of string>
)

Una funcin con un valor de retorno del tipo de dato string.


Datos predefinidos
El sistema dispone de varias constantes de cadena de caracteres predefinidas,
que pueden usarse junto con las funciones para cadenas de caracteres.
Nombre

Conjunto de caracteres

STR_DIGIT

<digit> ::=
0|1|2|3|4|5|6|7|8|9

STR_UPPER

<upper case letter> ::=


A|B|C|D|E|F|G|H|I|J
|K|L|M|N|O|P|Q|R|S|T
|U|V|W|X|Y|Z||||
||||||||||
| | | 1)| | | | | | |
| | | | | 2) | 3)

STR_LOWER

<lower case letter> ::=


a|b|c|d|e|f|g|h|i|j
|k|l|m|n|o|p|q|r|s|t
|u|v|w|x|y|z||||
||||||||||
| | | 1) | | | | | | |
| | | | | 2) | 3) | | -

STR_WHITE

<blank character> ::=

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Funciones para cadenas de
caracteres

Technical reference manual - RAPID overview, seccin


Resumen sobre RAPID - Funciones para cadenas de caracteres

Definicin de cadena de carac- string - Cadenas de caracteres en la pgina 1287


teres
Valores de cadena de caracte- Technical reference manual - RAPID overview, seccin
res
Caractersticas bsicas - Elementos bsicos

3HAC16581-5 Revisin: L

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

2 Funciones
2.130 StrMatch - Busca un patrn dentro de una cadena de caracteres

2.130 StrMatch - Busca un patrn dentro de una cadena de caracteres


Utilizacin
StrMatch (String Match) se utiliza para buscar un patrn determinado dentro de
otra cadena, a partir de una posicin especificada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin StrMatch.
Ejemplo 1
VAR num found;
found := StrMatch("Robotics",1,"bo");

Se asigna a la variable found el valor 3.


Valor de retorno
Tipo de dato: num
La posicin de carcter de la primera subcadena, en o despus de la posicin
especificada, que es igual a la cadena de patrn especificada. Si no se encuentra
la subcadena, se devuelve la longitud de la cadena + 1.
Argumentos
StrMatch (Str ChPos Pattern)

Str
String
Tipo de dato: string
La cadena en la que se desea buscar.
ChPos
Character Position
Tipo de dato: num
La posicin del carcter inicial. Si la posicin est fuera de la cadena de caracteres,
se genera un error de tiempo de ejecucin.
Pattern
Tipo de dato: string
La cadena de caracteres de patrn que se desea buscar.
Sintaxis
StrMatch(
[ Str := ] <expression (IN) of string>,
[ ChPos := ] <expression (IN) of num> ,
[ Pattern:= ] <expression (IN) of string>
)

Una funcin con un valor de retorno del tipo de dato num.

Contina en la pgina siguiente


1074

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.130 StrMatch - Busca un patrn dentro de una cadena de caracteres
Continuacin
Informacin relacionada
Para obtener ms informacin Consulte
sobre
Funciones para cadenas de carac- Technical reference manual - RAPID overview, seccin
teres
Resumen sobre RAPID - Funciones para cadenas de
caracteres
Definicin de cadena de caracte- string - Cadenas de caracteres en la pgina 1287
res
Valores de cadena de caracteres Technical reference manual - RAPID overview, seccin
Caractersticas bsicas - Elementos bsicos

3HAC16581-5 Revisin: L

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

2 Funciones
2.131 StrMemb - Comprueba si un carcter pertenece a un conjunto

2.131 StrMemb - Comprueba si un carcter pertenece a un conjunto


Utilizacin
StrMemb (String Member) se utiliza para comprobar si un carcter concreto de
una cadena pertenece a un conjunto determinado de caracteres.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin StrMemb.
Ejemplo 1
VAR bool memb;
memb := StrMemb("Robotics",2,"aeiou");

Se asigna a la variable memb el valor TRUE, ya que o forma parte del conjunto
"aeiou".
memb := StrMemb("Robotics",3,"aeiou");

Se asigna a la variable memb el valor FALSE, ya que b no forma parte del conjunto
"aeiou".
memb := StrMemb("S-721 68 VSTERS",3,STR_DIGIT);

Se asigna a la variable memb el valor TRUE, ya que 7 forma parte del conjunto
STR_DIGIT.
Valor de retorno
Tipo de dato: bool
TRUE si el carcter de la posicin especificada de la cadena especificada se
encuentra dentro del conjunto de caracteres especificado.
Argumentos
StrMemb (Str ChPos Set)

Str
String
Tipo de dato: string
La cadena que se desea comprobar.
ChPos
Character Position
Tipo de dato: num
La posicin del carcter que se desea comprobar. Si la posicin est fuera de la
cadena de caracteres, se genera un error de tiempo de ejecucin.
Set
Tipo de dato: string
El conjunto de caracteres que se desea comprobar.

Contina en la pgina siguiente


1076

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.131 StrMemb - Comprueba si un carcter pertenece a un conjunto
Continuacin
Sintaxis
StrMemb(
[ Str := ] <expression (IN) of string> ,
[ ChPos := ] <expression (IN) of num> ,
[ Set := ] <expression (IN) of string>
)

Una funcin con un valor de retorno del tipo de dato bool.


Datos predefinidos
El sistema dispone de varias constantes de cadena de caracteres predefinidas,
que pueden usarse junto con las funciones para cadenas de caracteres.
Nombre

Conjunto de caracteres

STR_DIGIT

<digit> ::=
0|1|2|3|4|5|6|7|8|9

STR_UPPER

<upper case letter> ::=


A|B|C|D|E|F|G|H|I|J
|K|L|M|N|O|P|Q|R|S|T
|U|V|W|X|Y|Z||||
| | | 1)| | | | | | |
| | | | | 2) | 3)

STR_LOWER

<lower case letter> ::=


a|b|c|d|e|f|g|h|i|j
|k|l|m|n|o|p|q|r|s|t
|u|v|w|x|y|z||||
||||||||||
| | | 1) | | | | | | |
| | | | | 2) | 3) | | -

STR_WHITE

<blank character> ::=

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Funciones para cadenas de carac- Technical reference manual - RAPID overview, seccin
teres
Resumen sobre RAPID - Funciones para cadenas de
caracteres
Definicin de cadena de caracte- string - Cadenas de caracteres en la pgina 1287
res
Valores de cadena de caracteres Technical reference manual - RAPID overview, seccin
Caractersticas bsicas - Elementos bsicos

3HAC16581-5 Revisin: L

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

2 Funciones
2.132 StrOrder - Comprueba si dos cadenas de caracteres estn ordenadas

2.132 StrOrder - Comprueba si dos cadenas de caracteres estn ordenadas


Utilizacin
StrOrder (String Order) compara dos cadenas (carcter a carcter) y devuelve
un valor booleano para indicar si las dos cadenas estn en el mismo orden de
acuerdo con la secuencia de orden de caracteres especificada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin StrOrder.
Ejemplo 1
VAR bool le;
le := StrOrder("FIRST","SECOND",STR_UPPER);

Se asigna a la variable le el valor TRUE, porque "F" va antes de "S" en la secuencia


de clasificacin de caracteres STR_UPPER.
Ejemplo 2
VAR bool le;
le := StrOrder("FIRST","FIRSTB",STR_UPPER);

Se asigna a la variable le el valor TRUE, porque Str2"FIRSTB" contiene un


carcter adicional en la secuencia de orden de caracteres (ningn carcter
comparado con "B").
Ejemplo 3
VAR bool le;
le := StrOrder("FIRSTB","FIRST",STR_UPPER);

Se asigna a la variable le el valor FALSE, porque Str1"FIRSTB" contiene un


carcter adicional en la secuencia de orden de caracteres ("B" comparado con
ningn carcter).
Valor de retorno
Tipo de dato: bool
TRUE si la primera cadena va antes de la segunda cadena (Str1 <= Str2) cuando
se utiliza la clasificacin de caracteres especificada.
Se supone que los caracteres que no estn incluidos en el orden definido siguen
a los caracteres presentes.
Argumentos
StrOrder ( Str1 Str2 Order)

Str1
String 1
Tipo de dato: string
El primer valor de cadena.

Contina en la pgina siguiente


1078

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.132 StrOrder - Comprueba si dos cadenas de caracteres estn ordenadas
Continuacin
Str2
String 2
Tipo de dato: string
El segundo valor de cadena.
Order
Tipo de dato: string
Una secuencia de caracteres que define el orden. Consulte tambin Datos
predefinidos en la pgina 1079.
Sintaxis
StrOrder(
[ Str1 := ] <expression (IN) of string> ,
[ Str2 := ] <expression (IN) of string> ,
[ Order := ] <expression (IN) of string>
)

Una funcin con un valor de retorno del tipo de dato bool.


Datos predefinidos
El sistema dispone de varias constantes de cadena de caracteres predefinidas,
que pueden usarse junto con las funciones para cadenas de caracteres.
Nombre

Conjunto de caracteres

STR_DIGIT

<digit> ::=
0|1|2|3|4|5|6|7|8|9

STR_UPPER

<upper case letter> ::=


A|B|C|D|E|F|G|H|I|J
|K|L|M|N|O|P|Q|R|S|T
|U|V|W|X|Y|Z||||
||||||||||
| | | 1)| | | | | | |
| | | | | 2) | 3)

STR_LOWER

<lower case letter> ::=


a|b|c|d|e|f|g|h|i|j
|k|l|m|n|o|p|q|r|s|t
|u|v|w|x|y|z||||
||||||||||
| | | 1) | | | | | | |
| | | | | 2) | 3) | | -

STR_WHITE

<blank character> ::=

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Funciones para cadenas de carac- Technical reference manual - RAPID overview, seccin
teres
Resumen sobre RAPID - Funciones para cadenas de
caracteres
Definicin de cadena de caracteres string - Cadenas de caracteres en la pgina 1287

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.132 StrOrder - Comprueba si dos cadenas de caracteres estn ordenadas
Continuacin
Para obtener ms informacin
sobre

Consulte

Valores de cadena de caracteres Technical reference manual - RAPID overview, seccin


Caractersticas bsicas - Elementos bsicos

1080

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.133 StrPart - Busca una parte de una cadena

2.133 StrPart - Busca una parte de una cadena


Utilizacin
StrPart (String Part) se utiliza para encontrar una parte de una cadena y obtenerla
como una cadena nueva.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin StrPart.
Ejemplo 1
VAR string part;
part := StrPart("Robotics",1,5);

Se asigna a la variable part el valor "Robot".


Valor de retorno
Tipo de dato: string
La subcadena de la cadena especificada, que tiene la longitud especificada y
comienza en la posicin de carcter especificada.
Argumentos
StrPart (Str ChPos Len)

Str
String
Tipo de dato: string
La cadena en la que se desea buscar una parte.
ChPos
Character Position
La posicin del carcter inicial. Si la posicin est fuera de la cadena de caracteres,
se genera un error de tiempo de ejecucin.
Len
Length (Longitud)
Tipo de dato: num
La longitud de la cadena parcial. Si la longitud es negativa o es superior a la longitud
de la cadena, o si la subcadena est (parcialmente) fuera de la cadena, se genera
un error de tiempo de ejecucin.
Sintaxis
StrPart(
[ Str := ] <expression (IN) of string> ,
[ ChPos := ] <expression (IN) of num> ,
[ Len := ] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato string.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.133 StrPart - Busca una parte de una cadena
Continuacin
Informacin relacionada
Para obtener ms informacin Consulte
sobre
Funciones para cadenas de ca- Technical reference manual - RAPID overview, seccin
racteres
Resumen sobre RAPID - Funciones para cadenas de
caracteres
Definicin de cadena de caracte- string - Cadenas de caracteres en la pgina 1287
res
Valores de cadena de caracteres Technical reference manual - RAPID overview, seccin
Caractersticas bsicas - Elementos bsicos

1082

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.134 StrToByte - Convierte una cadena en un byte

2.134 StrToByte - Convierte una cadena en un byte


Utilizacin
StrToByte (String To Byte) se utiliza para convertir un dato del tipo string con
un formato de dato de byte en un dato del tipo byte.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin StrToByte.
Ejemplo 1
VAR string con_data_buffer{5} := ["10", "AE", "176", "00001010",
"A"];
VAR byte data_buffer{5};
data_buffer{1} := StrToByte(con_data_buffer{1});

El contenido del componente de matriz data_buffer{1} ser 10 en representacin


decimal despus de la funcin StrToByte ....
data_buffer{2} := StrToByte(con_data_buffer{2}\Hex);

El contenido del componente de matriz data_buffer{2} ser 174 en


representacin decimal despus de la funcin StrToByte ....
data_buffer{3} := StrToByte(con_data_buffer{3}\Okt);

El contenido del componente de matriz data_buffer{3} ser 126 en


representacin decimal despus de la funcin StrToByte ... .
data_buffer{4} := StrToByte(con_data_buffer{4}\Bin);

El contenido del componente de matriz data_buffer{4} ser 10 en representacin


decimal despus de la funcin StrToByte ... .
data_buffer{5} := StrToByte(con_data_buffer{5}\Char);

El contenido del componente de matriz data_buffer{5} ser 65 en representacin


decimal despus de la funcin StrToByte ....
Valor de retorno
Tipo de dato: byte
El resultado de la operacin de conversin en representacin decimal.
Argumentos
StrToByte (ConStr [\Hex] | [\Okt] | [\Bin] | [\Char])

ConStr
Convert String
Tipo de dato: string
Los datos de cadena a convertir.
Si se omite el argumento modificador opcional, la cadena de caracteres se
convierten al formato decimal (Dec).
[\Hex]
Hexadecimal
Tipo de dato: switch
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.134 StrToByte - Convierte una cadena en un byte
Continuacin
La cadena de caracteres se convierte al formato hexadecimal.
[\Okt]
Octal
Tipo de dato: switch
La cadena de caracteres se convierte al formato octal.
[\Bin]
Binary
Tipo de dato: switch
La cadena de caracteres se convierte al formato binary.
[\Char]
Character
Tipo de dato: switch
La cadena de caracteres se convierte al formato de carcter ASCII.
Limitaciones
En funcin del formato de la cadena que se desea convertir, se aplica el dato de
cadena siguiente:
Formato

Longitud de cadena Rango

Dec .....: '- '

"0" - "255"

Hex .....: '- ', 'a'-'f', 'A'- 'F'

"0" - "FF"

Oct ......: '- '

"0" - "377"

Bin ......: '- '

"0" - "11111111"

Char ....: Cualquier carcter ASCII

Un carcter ASCII

Es posible utilizar cdigos de carcter de RAPID (por ejemplo "\07" para el carcter
de control BEL) como argumentos de ConStr.
Sintaxis
StrToByte(
[ConStr :=] <expression (IN) of string>
[\ Hex ] | [\ Okt] | [\ Bin] | [\ Char]
)

Una funcin con un valor de retorno del tipo de dato byte.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Conversin de un byte en una cadena de


caracteres

ByteToStr - Convierte un byte en un dato de


cadena de caracteres en la pgina 837

Otras funciones de bits (byte)

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas
- Funciones de bits

Otras funciones de cadenas de caracteres Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Funciones
para cadenas de caracteres

1084

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.135 StrToVal - Convierte una cadena de caracteres en un valor

2.135 StrToVal - Convierte una cadena de caracteres en un valor


Utilizacin
StrToVal (String To Value) se utiliza para convertir una cadena en un valor de
cualquier tipo de dato.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin StrToVal.
Consulte tambin Ms ejemplos en la pgina 1086.
Ejemplo 1
VAR bool ok;
VAR num nval;
ok := StrToVal("3.85",nval);

Se asigna a la variable ok el valor TRUE y a nval el valor 3.85.


Valor de retorno
Tipo de dato: bool
TRUE si la conversin solicitada tiene xito y FALSE si no es as.
Argumentos
StrToVal ( Str Val )

Str
String
Tipo de dato: string
Un valor de cadena que contiene datos literales con un formato que corresponde
al tipo de dato utilizado en el argumento Val. El formato vlido es el de los
agregados literales de RAPID.
Val
Value
Tipo de dato: ANYTYPE
El nombre de la variable o de la variable persistente de cualquier tipo para el
almacenamiento del resultado de la conversin.
Puede usar todos los tipos de datos de valor con estructura atmica o de registro,
componente de registro, matriz o elemento de matriz. El dato permanece sin
cambios si la conversin solicitada ha fallado debido a que el formato no se
corresponde con el dato utilizado en el argumento Str.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.135 StrToVal - Convierte una cadena de caracteres en un valor
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin StrToVal.
Ejemplo 1
VAR string str15 := "[600, 500, 225.3]";
VAR bool ok;
VAR pos pos15;
ok := StrToVal(str15,pos15);

Se asigna a la variable ok el valor TRUE y se asigna a la variable pos15 el valor


especificado en la cadena str15.
Sintaxis
StrToVal(
[ Str := ] <expression (IN) of string> ,
[ Val := ] <var or pers (INOUT) of ANYTYPE>
)

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Funciones para cadenas de caracte- Technical reference manual - RAPID overview, secres
cin Resumen sobre RAPID - Funciones para cadenas de caracteres
Definicin de cadena de caracteres

string - Cadenas de caracteres en la pgina 1287

Valores de cadena de caracteres

Technical reference manual - RAPID overview, seccin Caractersticas bsicas - Elementos bsicos

1086

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.136 Tan - Calcula el valor de tangente

2.136 Tan - Calcula el valor de tangente


Utilizacin
Tan (Tangent) se utiliza para calcular el valor de tangente desde un valor de ngulo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin.
Ejemplo 1
VAR num angle;
VAR num value;
...
...
value := Tan(angle);

value obtiene el valor de tangente de angle.


Valor de retorno
Tipo de dato: num
El valor de la tangente.
Argumentos
Tan (Angle)

Angle
Tipo de dato: num
El valor del ngulo, expresado en grados.
Sintaxis
Tan(
[Angle :=] <expression (IN) of num>
)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

Arco tangente con un valor devuelto en el ATan2 - Calcula el valor de arco tangente 2 en
rango [-180, 180]
la pgina 822

3HAC16581-5 Revisin: L

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

2 Funciones
2.137 TaskRunMec - Comprueba si una tarea controla alguna unidad mecnica

2.137 TaskRunMec - Comprueba si una tarea controla alguna unidad mecnica


Utilizacin
TaskRunMec se utiliza para comprobar si la tarea de programa controla cualquier
unidad mecnica (robot con TCP o manipulador sin TCP).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin TaskRunMec.
Ejemplo 1
VAR bool flag;
...
flag := TaskRunMec( );

Si la tarea actual controla cualquier unidad mecnica, flag tendr el valor TRUE.
De lo contrario, tendr el valor FALSE.
Valor de retorno
Tipo de dato: bool
Si la tarea actual controla cualquier unidad mecnica, el valor de retorno ser
TRUE. De lo contrario, ser FALSE.
Ejecucin de programas
Se comprueba si la tarea de programa actual controla alguna unidad mecnica.
Sintaxis
TaskRunMec( )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Comprobacin de si la tarea controla TaskRunRob - Comprueba si una tarea controla alalgn robot
gn robot en la pgina 1089
Activacin y desactivacin de unida- ActUnit - Activa una unidad mecnica en la pgina 19
des mecnicas
DeactUnit - Desactiva una unidad mecnica en la
pgina 83
Configuracin de unidades mecni- Manual de referencia tcnica - Parmetros del sistecas
ma

1088

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.138 TaskRunRob - Comprueba si una tarea controla algn robot

2.138 TaskRunRob - Comprueba si una tarea controla algn robot


Utilizacin
TaskRunRob se utiliza para comprobar si la tarea de programa controla cualquier
robot (una unidad mecnica con TCP).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin TaskRunRob.
Ejemplo 1
VAR bool flag;
...
flag := TaskRunRob( );

Si la tarea actual controla algn robot, flag tendr el valor TRUE. De lo contrario,
tendr el valor FALSE.
Valor de retorno
Tipo de dato: bool
Si la tarea actual controla algn robot, el valor de retorno ser TRUE. De lo contrario,
ser FALSE.
Ejecucin de programas
Se comprueba si la tarea de programa actual controla algn robot.
Sintaxis
TaskRunRob ( )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre Consulte
Comprobacin de si la tarea controla TaskRunMec - Comprueba si una tarea controla
alguna unidad mecnica
alguna unidad mecnica en la pgina 1088
Activacin y desactivacin de unidades ActUnit - Activa una unidad mecnica en la pgimecnicas
na 19
DeactUnit - Desactiva una unidad mecnica en la
pgina 83
Configuracin de unidades mecnicas Manual de referencia tcnica - Parmetros del sistema

3HAC16581-5 Revisin: L

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

2 Funciones
2.139 TasksInSync - Devuelve el nmero de tareas sincronizadas

2.139 TasksInSync - Devuelve el nmero de tareas sincronizadas


Utilizacin
TasksInSync se utiliza para obtener el nmero de tareas sincronizadas.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico de la funcin TasksInSync.
Ejemplo 1
VAR tasks tasksInSyncList{6};
...
PROC main ()
VAR num noOfSynchTasks;
...
noOfSynchTasks:= TasksInSync (tasksInSyncList);
TPWrite "No of synchronized tasks = "\Num:=noOfSynchTasks;
ENDPROC

Se asigna a la variable noOfSynchTasks el nmero de tareas sincronizadas y


tasksInSyncList contendr los nombres de las tareas sincronizadas. En este
ejemplo, la lista de tareas es una variable pero tambin puede ser una variable
persistente.
Valor de retorno
Tipo de dato: num
El nmero de tareas sincronizadas.
Argumentos
TaskInSync (TaskList)

TaskList
Tipo de dato: tasks
Un argumento inout que, en una lista de tareas (una matriz), presentar el nombre
(string) de las tareas de programas que estn sincronizadas. La lista de tareas
puede ser del tipo VAR o PERS.
Ejecucin de programas
La funcin devuelve el nmero de tareas sincronizadas del sistema. Los nombres
de las tareas sincronizadas se presentan en el argumento inout TaskList. En los
casos en los que no hay ninguna tarea sincronizada, la lista slo contendr cadenas
vacas.
Limitaciones
En la actualidad slo se admite un nico grupo sincronizado, de forma que
TasksInSync devuelve el nmero de tareas que estn sincronizadas dentro de
ese grupo.

Contina en la pgina siguiente


1090

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.139 TasksInSync - Devuelve el nmero de tareas sincronizadas
Continuacin
Sintaxis
TasksInSync
[ TaskList := ] < var or pers array {*} (INOUT) of tasks> ,

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Especificacin de tareas de programa coope- tasks - Tareas de programa de RAPID en la


rativas
pgina1298SyncMoveOn - Inicia los movimientos sincronizados coordinados en la pgina 570
Inicio de movimientos sincronizados coordi- SyncMoveOn - Inicia los movimientos sincronados
nizados coordinados en la pgina 570

3HAC16581-5 Revisin: L

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

2 Funciones
2.140 TestAndSet - Comprueba una variable y la establece si no est establecida

2.140 TestAndSet - Comprueba una variable y la establece si no est establecida


Utilizacin
TestAndSet puede usarse junto con un objeto de datos normal del tipo bool,
como semforo binario, para obtener el derecho exclusivo de acceso a reas
concretas del cdigo de RAPID o a recursos del sistema. Esta funcin podra
utilizarse tanto entre tareas de programa diferentes y niveles de ejecucin diferentes
(rutinas TRAP o de eventos) como dentro de una misma tarea de programa.
A continuacin se enumeran algunos de los recursos que pueden necesitar
proteccin de acceso al mismo tiempo:

Uso de algunas rutinas de RAPID que presentan problemas de


funcionamiento cuando se ejecutan en paralelo

Uso del FlexPendant - Registro del operador

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin TestAndSet.
Consulte tambin Ms ejemplos en la pgina 1093.
Ejemplo 1
MAIN program task:
PERS bool tproutine_inuse := FALSE;
...
WaitUntil TestAndSet(tproutine_inuse);
TPWrite "First line from MAIN";
TPWrite "Second line from MAIN";
TPWrite "Third line from MAIN";
tproutine_inuse := FALSE;

BACK1 program task:


PERS bool tproutine_inuse := FALSE;
...
WaitUntil TestAndSet(tproutine_inuse);
TPWrite "First line from BACK1";
TPWrite" Second line from BACK1";
TPWrite "Third line from BACK1";
tproutine_inuse := FALSE;

Para evitar mezclar las lneas en el registro del operador, una de MAIN y una de
BACK1, el uso de la funcin TestAndSet garantiza que las tres lneas de cada
tarea no se separen.
Si la tarea de programa MAIN activa el semforo TestAndSet(tproutine_inuse)
en primer lugar, la tarea de programa BACK1 debe esperar hasta que la tarea de
programa MAIN libere el semforo.
Valor de retorno
Tipo de dato: bool
TRUE si el semforo ha sido activado por la tarea actual (la tarea que ejecuta la
funcin TestAndSet). De lo contrario, FALSE.
Contina en la pgina siguiente
1092

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.140 TestAndSet - Comprueba una variable y la establece si no est establecida
Continuacin
Argumentos
TestAndSet Object

Object
Tipo de dato: bool
Objeto de datos definido por el usuario para usarlo como semforo.- El objeto de
datos puede ser una variable VAR o una variable persistente PERS. Si se utilizan
funciones TestAndSet entre tareas de programa diferentes, el objeto debe ser
una variable persistente PERS o una variable instalada VAR (objetos compartidos
entre tareas).
Ejecucin de programas
Esta funcin comprueba en un paso indivisible si el usuario ha establecido el valor
de la variable y, si no es as, lo establece y devuelve TRUE. De lo contrario, devuelve
FALSE.
IF Object = FALSE THEN
Object := TRUE;
RETURN TRUE;
ELSE
RETURN FALSE;
ENDIF

Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin TestAndSet.
Ejemplo 1
LOCAL VAR bool doit_inuse := FALSE;
...
PROC doit(...)
WaitUntil TestAndSet (doit_inuse);
...
doit_inuse := FALSE;
ENDPROC

Si se instala, incorpora y comparte un mdulo, es posible utilizar una variable de


mdulo local para la proteccin del acceso desde distintas tareas de programa al
mismo tiempo.
Nota
En este caso con los mdulos incorporados instalados y cuando se utiliza la
variable persistente como objeto de semforo: si la ejecucin del programa se
detiene en la rutina doit y el puntero de programa se traslada a main, la variable
doit_inuse no se restablecer. Para evitarlo, devuelva la variable doit_inuse
a FALSE en la rutina de evento START.
Sintaxis
TestAndSet (
[ Object := ] < variable or persistent (INOUT) of bool> )

Una funcin con un valor de retorno del tipo de dato bool.


Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.140 TestAndSet - Comprueba una variable y la establece si no est establecida
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Esperar hasta que la variable se desactiva WaitTestAndSet - Espera a que se desactive


y se activa de nuevo (tipo de espera con
una variable y la activa a continuacin en la
control de interrupcin)
pgina 740

1094

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.141 TestDI - Se comprueba si una entrada digital est activada

2.141 TestDI - Se comprueba si una entrada digital est activada


Utilizacin
TestDI se usa para comprobar si una entrada digital est activada.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin TestDI.
Ejemplo 1
IF TestDI (di2) THEN . . .

Si el valor actual de la seal di2 es 1, . . .


IF NOT TestDI (di2) THEN . . .

Si el valor actual de la seal di2 es 0, . . .


WaitUntil TestDI(di1) AND TestDI(di2);

La ejecucin del programa contina slo cuando tanto la entrada di1 como la
entrada di2 estn activadas.
Valor de retorno
Tipo de dato: bool
TRUE = El valor actual de la seal es 1.
FALSE = El valor actual de la seal es 0.
Argumentos
TestDI (Signal)

Signal
Tipo de dato: signaldi
El nombre de la seal a comprobar.
Sintaxis
TestDI (
[ Signal := ] < variable (VAR) of signaldi > )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Lectura del valor de una seal digital de signalxx - Seales digitales y analgicas en la
entrada
pgina 1272
Instrucciones de entrada/salida

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Seales de
entrada y salida

3HAC16581-5 Revisin: L

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

2 Funciones
2.142 TestSignRead - Obtiene el valor de una seal de test

2.142 TestSignRead - Obtiene el valor de una seal de test


Utilizacin
TestSignRead se utiliza para leer el valor actual de una seal de test.
Esta funcin devuelve el valor momentneo o el valor medio de los ltimos
muestreos, en funcin de la especificacin de canal utilizada en la instruccin
TestSignDefine.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin TestSignRead.
Consulte tambin Ms ejemplos en la pgina 1097.
Ejemplo 1
CONST num speed_channel:=1;
VAR num speed_value;
...
TestSignDefine speed_channel, speed, orbit, 1, 0;
...
! During some movements with orbits axis 1
speed_value := TestSignRead(speed_channel);
...
TestSignReset;

Se asigna a speed_value el valor medio de los ltimos 8 muestreos generados


cada 0,5 mseg de la seal de test speed en el canal speed_channel definido
como canal 1. El canal speed_channel mide la velocidad del eje axis 1 en la
unidad mecnica orbit.
Valor de retorno
Tipo de dato: num
El valor numrico en unidades SI del lado de motor del canal especificado, acorde
con la definicin de la instruccin TestSignDefine.
Argumentos
TestSignRead (Channel)

Channel
Tipo de dato: num
El nmero de canal, de 1 a 12, de la seal de test a leer. Este mismo nmero debe
usarse en la instruccin de definicin TestSignDefine.
Ejecucin de programas
Devuelve el valor momentneo o el valor medio de los ltimos muestreos, en
funcin de la especificacin de canal utilizada en la instruccin TestSignDefine.
Para ms informacin sobre las seales de test predefinidas con unidades SI
vlidas para los ejes de manipuladores externos, consulte el tipo de dato
testsignal.

Contina en la pgina siguiente


1096

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.142 TestSignRead - Obtiene el valor de una seal de test
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin TestSignRead.
Ejemplo 1
CONST num torque_channel:=2;
VAR num torque_value;
VAR intnum timer_int;
CONST jointtarget psync := [...];
...
PROC main()
CONNECT timer_int WITH TorqueTrap;
ITimer \Single, 0.05, timer_int;
TestSignDefine torque_channel, torque_ref, IRBP_K, 2, 0.001;
...
MoveAbsJ psync \NoEOffs, v5, fine, tool0;
...
IDelete timer_int;
TestSignReset;
TRAP TorqueTrap
IF (TestSignRead(torque_channel) > 6) THEN
TPWrite "Torque pos = " + ValToStr(CJointT());
Stop;
ELSE
IDelete timer_int;
CONNECT timer_int WITH TorqueTrap;
ITimer \Single, 0.05, timer_int;
ENDIF
ENDTRAP

Cuando la referencia de par del manipulador IRBP_K y el eje 2 es por primera vez
mayor que 6 Nm en el lado del motor durante el movimiento lento hacia la posicin
psync, la posicin de ejes se muestra en el FlexPendant.
Sintaxis
TestSignRead(
[ Channel :=] <expression (IN) of num>)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin de una seal de test TestSignDefine - Define una seal de prueba en la pgina 588
Puesta a cero de seales de
prueba

TestSignReset - Restablece todas las definiciones de seales de prueba en la pgina 590

3HAC16581-5 Revisin: L

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

2 Funciones
2.143 TextGet - Obtener un texto de las tablas de textos del sistema

2.143 TextGet - Obtener un texto de las tablas de textos del sistema


Utilizacin
TextGet se utiliza para obtener una cadena de texto de las tablas de textos del
sistema.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin TextGet.
Ejemplo 1
VAR string text1;
...
text1 := TextGet(14, 5);

Se asigna a la variable text1 el texto almacenado en el recurso de textos 14 y el


nmero de ndice 5.
Valor de retorno
Tipo de dato: string
El texto especificado, tomado de las tablas de textos del sistema.
Argumentos
TextGet ( Table Index )

Table
Tipo de dato: num
El nmero de la tabla de textos (entero positivo).
Index
Tipo de dato: num
El nmero de ndice (entero positivo) dentro de la tabla de textos.
Gestin de errores
Si la tabla o ndice no es vlido y no puede obtenerse ninguna cadena de texto de
las tablas de texto del sistema, la variable de sistema ERRNO cambia a
ERR_TXTNOEXIST. La ejecucin contina en el gestor de errores.
Sintaxis
TextGet (
[ Table := ] < expression (IN) of num > ,
[ Index := ] < expression (IN) of num> )

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Obtencin de un nmero de tabla TextTabGet - Obtiene el nmero de una tabla de textos


de textos
en la pgina 1102

Contina en la pgina siguiente


1098

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.143 TextGet - Obtener un texto de las tablas de textos del sistema
Continuacin
Para obtener ms informacin
sobre

Consulte

Instalacin de una tabla de textos TextTabInstall - Instalacin de una tabla de textos en la


pgina 591
Formato de archivos de texto

Technical reference manual - RAPID kernel, seccin


RAPID Kernel reference manual - Text files

Funciones para cadenas de carac- Technical reference manual - RAPID overview, seccin
teres
Resumen sobre RAPID - Funciones para cadenas de
caracteres
Definicin de cadena de caracte- string - Cadenas de caracteres en la pgina 1287
res
Valores de cadena de caracteres Technical reference manual - RAPID overview, seccin
Caractersticas bsicas - Elementos bsicos

3HAC16581-5 Revisin: L

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

2 Funciones
2.144 TextTabFreeToUse - Comprueba si una tabla de textos est libre para su uso

2.144 TextTabFreeToUse - Comprueba si una tabla de textos est libre para su uso
Utilizacin
TextTabFreeToUse debe utilizarse para comprobar si un nombre de tabla de
textos (una cadena de recursos de texto) puede utilizarse libremente (que no est
instalada en el sistema), es decir, si es posible instalar la tabla de textos en el
sistema o no.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin
TextTabFreeToUse.
Ejemplo 1
! System Module with Event Routine to be executed at event
! POWER ON, RESET or START
PROC install_text()
IF TextTabFreeToUse("text_table_name") THEN
TextTabInstall "HOME:/text_file.eng";
ENDIF
ENDPROC

La primera vez que se ejecuta la rutina de evento install_text, la funcin


TextTabFreeToUse devuelve TRUE y el archivo de texto text_file.eng se
instala en el sistema. A continuacin, es posible obtener con RAPID las cadenas
de texto instaladas en el sistema, con ayuda de las funciones TextTabGet y
TextGet.
La prxima vez que se ejecuta la rutina de evento install_text, la funcin
TextTabFreeToUse devuelve FALSE FALSE y la instalacin no se repite.
Valor de retorno
Tipo de dato: bool
Esta funcin devuelve lo siguiente:

TRUE, si la tabla de textos no est an instalada en el sistema.

FALSE, si la tabla de textos est ya instalada en el sistema.

Argumentos
TextTabFreeToUse ( TableName )

TableName
Tipo de dato: string
El nombre de la tabla de textos (una cadena con 80 caracteres como mximo).
Consulte <text_resource>:: en el Manual de referencia de RAPID - Kernel de
RAPID, seccin Archivos de texto. La cadena text_resource es el nombre de
la tabla de textos.

Contina en la pgina siguiente


1100

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.144 TextTabFreeToUse - Comprueba si una tabla de textos est libre para su uso
Continuacin
Limitaciones
Limitaciones de la instalacin de tablas de textos (recursos de texto) en el sistema:

No es posible instalar una misma tabla de textos ms de una vez en el


sistema.

No es posible desinstalar (liberar) una sola tabla de textos del sistema. La


nica forma de desinstalar tablas de textos del sistema es realizar un
arranque en fro del sistema. De esta forma, se desinstalan todas las tablas
de textos (tanto las del sistema como las definidas por el usuario).

Sintaxis
TextTabFreeToUse(
[ TableName:= ] < expression (IN) of string > )

Una funcin con un valor de retorno del tipo de dato bool


Informacin relacionada
Para obtener ms informacin sobre Consulte
Instalacin de una tabla de textos

TextTabInstall - Instalacin de una tabla de textos


en la pgina 591

Formato de archivos de texto

Technical reference manual - RAPID kernel, seccin


RAPID Kernel reference manual - Text files

Obtencin de un nmero de tabla de TextTabGet - Obtiene el nmero de una tabla de


textos
textos en la pgina 1102
Obtencin de textos de las tablas de TextGet - Obtener un texto de las tablas de textos
textos del sistema
del sistema en la pgina 1098
Funciones para cadenas de caracte- Technical reference manual - RAPID overview, secres
cin Resumen sobre RAPID - Funciones para cadenas de caracteres
Definicin de cadena de caracteres string - Cadenas de caracteres en la pgina 1287

3HAC16581-5 Revisin: L

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

2 Funciones
2.145 TextTabGet - Obtiene el nmero de una tabla de textos

2.145 TextTabGet - Obtiene el nmero de una tabla de textos


Utilizacin
TextTabGet se utiliza para obtener en tiempo de ejecucin el nmero de tabla
de textos de una tabla de textos definida por el usuario.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin TextTabGet.
Una nueva tabla de textos llamada deburr_part1 para los textos definidos por
el usuario. La nueva tabla de textos tiene el nombre de archivo deburr.eng.
# deburr.esp - Archivo para descripcin de textos de USUARIO deburr_part1 en
espaol
#
# DESCRIPTION:
#Archivo de textos de usuario para el desarrollo de RAPID
#
deburr_part1::
0:
RAPID S4: Tabla de textos de usuario para quitar las rebabas de la pieza 1
1:
La pieza 1 no est en posicin.
2:
Identidad de la pieza en la que se trabaja: XYZ
3:
Error de pieza en la lnea 1
#
# Fin del archivo
Ejemplo 1
VAR num text_res_no;
...
text_res_no := TextTabGet("deburr_part1");

Se asigna a la variable text_res_no el nmero de tabla de texto de la tabla de


texto definida deburr_part1.
Ejemplo 2
ErrWrite TextGet(text_res_no, 1), TextGet(text_res_no, 2);

Se almacena un mensaje en el registro del robot. Tambin se muestra en la pantalla


del FlexPendant. Los mensajes se toman de la tabla de textos deburr_part1:
La pieza 1 no est en posicin.
Identidad de la pieza en la que se trabaja: XYZ
Valor de retorno
Tipo de dato: num
Contina en la pgina siguiente
1102

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.145 TextTabGet - Obtiene el nmero de una tabla de textos
Continuacin
El nmero de la tabla de textos definida.
Argumentos
TextTabGet ( TableName )

TableName
Tipo de dato: string
El nombre de la tabla de texto.
Sintaxis
TextTabGet (
[ TableName = ] < expression (IN) of string > ;)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Obtencin de textos de las tablas
de textos del sistema

TextGet - Obtener un texto de las tablas de textos del


sistema en la pgina 1098

Instalacin de una tabla de textos

TextTabInstall - Instalacin de una tabla de textos en


la pgina 591

Formato de archivos de texto

Technical reference manual - RAPID kernel, seccin


RAPID Kernel reference manual -Text files

Funciones para cadenas de caracte- Technical reference manual - RAPID overview, seccin
res
Resumen sobre RAPID - Funciones para cadenas de
caracteres
Definicin de cadena de caracteres string - Cadenas de caracteres en la pgina 1287
Valores de cadena de caracteres

Technical reference manual - RAPID overview, seccin


Caractersticas bsicas - Elementos bsicos

3HAC16581-5 Revisin: L

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

2 Funciones
2.146 Trunc - Trunca un valor numrico

2.146 Trunc - Trunca un valor numrico


Utilizacin
Trunc (Truncate) se utiliza para truncar un valor numrico hasta un nmero
especificado de decimales o a un valor entero.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Trunc.
Ejemplo 1
VAR num val;
val := Trunc(0.3852138\Dec:=3);

Se asigna a la variable val el valor 0.385.


Ejemplo 2
reg1 := 0.3852138;
val := Trunc(reg1\Dec:=1);

Se asigna a la variable val el valor 0.3.


Ejemplo 3
val := Trunc(0.3852138);

Se asigna a la variable val el valor 0.


Ejemplo 4
val := Trunc(0.3852138\Dec:=6);

Se asigna a la variable val el valor 0.385213.


Valor de retorno
Tipo de dato: num
El valor numrico truncado con el nmero especificado de decimales.
Argumentos
Trunc ( Val [\Dec] )

Val
Value
Tipo de dato: num
El valor numrico a truncar.
[\Dec]
Decimals
Tipo de dato: num
Nmero de decimales.
Si el nmero de decimales especificado es 0 o se omite el argumento, el valor se
trunca a un entero.
El nmero de decimales no debe ser negativo ni mayor que la precisin disponible
para los valores numricos.
El nmero mximo de decimales que pueden usarse es 6.
Contina en la pgina siguiente
1104

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.146 Trunc - Trunca un valor numrico
Continuacin
Sintaxis
Trunc(
[ Val := ] <expression (IN) of num>
[ \Dec := <expression (IN) of num> ]
)

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas
Redondeo de un valor

Round - Redondear un valor numrico en la pgina 1040

3HAC16581-5 Revisin: L

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

2 Funciones
2.147 TruncDnum - Trunca un valor numrico

2.147 TruncDnum - Trunca un valor numrico


Utilizacin
TruncDnum (Truncate dnum) se utiliza para truncar un valor numrico hasta un
nmero especificado de decimales o a un valor entero.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin TruncDnum.
Ejemplo 1
VAR dnum val;
val := TruncDnum(0.3852138754655357\Dec:=3);

The variable val is given the value 0.385.


Ejemplo 2
val := TruncDnum(0.3852138754655357\Dec:=1);

Se asigna a la variable val el valor 0,3.


Ejemplo 3
val := TruncDnum(0.3852138754655357);

Se asigna a la variable val el valor 0.


Ejemplo 4
val := TruncDnum(0.3852138754655357\Dec:=15);

Se asigna a la variable val el valor 0,385213875465535.


Ejemplo 5
val := TruncDnum(1000.3852138754655357\Dec:=15);

Se asigna a la variable val el valor 1000,38521387547.


Valor de retorno
Tipo de dato: dnum
El valor numrico truncado con el nmero especificado de decimales.
Argumentos
TruncDnum ( Val [\Dec] )

Val
Value
Tipo de dato: dnum
El valor numrico a truncar.
[\Dec]
Decimals
Tipo de dato: num
Nmero de decimales.
Si el nmero de decimales especificado es 0 o se omite el argumento, el valor se
trunca a un entero.
Contina en la pgina siguiente
1106

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.147 TruncDnum - Trunca un valor numrico
Continuacin
El nmero de decimales no debe ser negativo ni mayor que la precisin disponible
para los valores numricos.
El nmero mximo de decimales que pueden usarse es 15.
Sintaxis
TruncDnum(
[ Val := ] <expression (IN) of dnum>
[ \Dec := <expression (IN) of num> ]
)

Una funcin con un valor de retorno del tipo de dato dnum.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Matemticas

Truncacin de un valor

Trunc - Trunca un valor numrico en la pgina 1104

Redondeo de un valor

Round - Redondear un valor numrico en la


pgina 1040

Redondeo de un valor

RoundDnum - Redondear un valor numrico


en la pgina 1042

3HAC16581-5 Revisin: L

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

2 Funciones
2.148 Type - Obtener el nombre del tipo de dato de una variable

2.148 Type - Obtener el nombre del tipo de dato de una variable


Utilizacin
Type se usa para obtener el nombre del tipo de dato de la variable especificada
en el argumento Data.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin Type.
Ejemplo 1
VAR string rettype;
VAR intnum intnumtype;
...
PROC main()
rettype := Type(intnumtype);
TPWrite "Data type name: " + rettype;

La informacin mostrada ser: "Data type name: intnum"


Ejemplo 2
VAR string rettype;
VAR intnum intnumtype;
...
PROC main()
rettype := Type(intnumtype \BaseName);
TPWrite "Data type name: " + rettype;

La informacin mostrada ser: "Data type name: num"


Ejemplo 3
VAR string rettype;
VAR num numtype;
...
PROC main()
rettype := Type(numtype);
TPWrite "Data type name: " + rettype;

La informacin mostrada ser: "Data type name: num"


Valor de retorno
Tipo de dato: string
Una cadena con el nombre del tipo de dato para la variable especificada en el
argumento Data.
Argumentos
Type (Data [\BaseName])

Data
Data object name
Tipo de dato: anytype
El nombre de la variable cuyo tipo de dato se desea obtener.

Contina en la pgina siguiente


1108

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.148 Type - Obtener el nombre del tipo de dato de una variable
Continuacin
[\BaseName]
Base data type Name
Tipo de dato: switch
Si se usa, la funcin devuelve el nombre del tipo de dato subyacente si el valor
Data es un tipo de dato declarado como ALIAS.
Sintaxis
Type(
[ Data := ] < reference (REF) of anytype >
[ \ BaseName ]
)

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin de tipos de alias.

Technical reference manual - RAPID kernel,


seccin Lexical elements - Alias types

3HAC16581-5 Revisin: L

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

2 Funciones
2.149 UIAlphaEntry - Introduccin alfanumrica del usuario

2.149 UIAlphaEntry - Introduccin alfanumrica del usuario


Utilizacin
UIAlphaEntry (User Interaction Alpha Entry) se usa para introducir una cadena
desde un dispositivo de usuario disponible, como el FlexPendant. Se escribe un
mensaje para el operador, que a su vez responde con una cadena de texto. A
continuacin, la cadena se transfiere al programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la instruccin UIAlpaEntry.
Consulte Ms ejemplos en la pgina 1114.
Ejemplo 1
VAR string answer;
...
answer := UIAlphaEntry(
\Header:= "UIAlphaEntry Header",
\Message:= "Which procedure do You want to run?"
\Icon:=iconInfo
\InitString:= "default_proc");
%answer%;

xx0500002437

Se muestra en la pantalla del FlexPendant el cuadro de mensaje alfanumrico


anterior, con icono, ttulo, mensaje y cadena inicial. El usuario edita la cadena
inicial o escribe una nueva cadena con el teclado alfanumrico admitido. La
ejecucin del programa espera hasta que se presione OK. A continuacin, la
Contina en la pgina siguiente
1110

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.149 UIAlphaEntry - Introduccin alfanumrica del usuario
Continuacin
cadena escrita se devuelve en la variable answer. A continuacin, el programa
llama al procedimiento especificado para su enlazamiento en tiempo de ejecucin.
Valor de retorno
Tipo de dato: string
Esta funcin devuelve la cadena introducida.
Si la funcin es interrumpida por \BreakFlag::

Si se especifica el parmetro \InitString, aparece esta cadena

Si no se especifica el parmetro \InitString, aparece la cadena "" vaca.

Si la funcin se interrumpe a travs del gestor de ERROR, no aparecer ningn


valor de retorno.
Argumentos
UIAlphaEntry ([\Header] [\Message]|[\MsgArray]
[\Wrap][\Icon][\InitString] [\MaxTime] [\DIBreak] [\DIPassive]
[\DOBreak] [\DOPassive] [\BreakFlag])

[\Header]
Tipo de dato: string
El texto de ttulo que debe escribirse en la parte superior del cuadro de mensaje.
Mximo 40 caracteres.
[\Message]
Tipo de dato: string
Una lnea de texto a escribir en la pantalla. Mximo 55 caracteres.
[\MsgArray]
Message Array
Tipo de dato: string
Several text lines from an array to be written on the display.
Slo es posible usar uno de los parmetros, \Message o \MsgArray en cada
momento.
El espacio mximo del diseo es de 9 lneas de 55 caracteres cada una.
[\Wrap]
Tipo de dato: switch
Si se selecciona, todas las cadenas especificadas en el argumento \MsgArray se
concatenan para formar una cadena con un solo espacio entre las distintas cadenas
individuales y distribuida en el nmero mnimo posible de lneas.
De forma predeterminada, cada una de las cadenas del argumento \MsgArray
aparece en una lnea separada en la pantalla.
[\Icon]
Tipo de dato: icondata
Define el icono a mostrar. Only one of the predefined icons of type icondata can
be used. Consulte Datos predefinidos en la pgina 1113.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.149 UIAlphaEntry - Introduccin alfanumrica del usuario
Continuacin
De forma predeterminada, no se usa ningn icono.
[\InitString]
Tipo de dato: string
Una cadena inicial que debe mostrarse de forma predeterminada en el cuadro de
introduccin de texto.
[\MaxTime]
Tipo de dato: num
El periodo mximo, en segundos, que debe esperar el programa para continuar
con la ejecucin. Si no se presiona el botn OK en ese periodo, el programa sigue
ejecutndose en el gestor de errores, a no ser que se utilice el indicador BreakFlag
(que se documenta a continuacin). La constante ERR_TP_MAXTIME puede usarse
para comprobar si ha transcurrido ya el tiempo mximo establecido.
[\DIBreak]
Digital Input Break
Tipo de dato: signaldi
La seal digital de entrada que puede interrumpir el dilogo con el operador. Si
no se presiona el botn OK antes de que la seal cambie a 1 (o si ya tiene el valor
1), el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice
el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DIPassive]
Digital Input Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DIBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DIBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOBreak]
Digital Output Break
Tipo de dato: signaldo
La seal digital de salida que puede interrumpir el dilogo con el operador. Si no
se presiona el botn OK antes de que la seal cambie a 1 (o si ya tiene el valor
1), el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice
el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOPassive]
Digital Output Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DOBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
Contina en la pgina siguiente
1112

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.149 UIAlphaEntry - Introduccin alfanumrica del usuario
Continuacin
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DOBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\BreakFlag]
Tipo de dato: errnum
Una variable (cambiada a 0 por el sistema antes de su uso) que contiene el cdigo
de error si se utilizan \MaxTime, \DIBreak o \DOBreak. Las constantes
ERR_TP_MAXTIME, ERR_TP_DIBREAK y ERR_TP_DOBREAK pueden usarse para
seleccionar el motivo. Si se omite esta variable opcional, se ejecuta el gestor de
errores.
Ejecucin de programas
El cuadro de mensaje alfanumrico, con su teclado alfanumrico, icono, ttulo,
lneas de mensaje y cadena inicial se muestra de acuerdo con los argumentos del
programa. La ejecucin del programa espera hasta que el usuario edite la cadena
o cree una nueva y presione OK o hasta que el cuadro de mensaje sea interrumpido
por un tiempo lmite o una accin de seal. La cadena introducida y el motivo de
la interrupcin se devuelven al programa.
El nuevo cuadro de mensaje del nivel de rutina TRAP toma el foco del cuadro de
mensaje del nivel bsico.
Datos predefinidos
!Icons:
CONST
CONST
CONST
CONST

icondata
icondata
icondata
icondata

iconNone := 0;
iconInfo := 1;
iconWarning := 2;
iconError := 3;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.149 UIAlphaEntry - Introduccin alfanumrica del usuario
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin UIAlphaEntry.
Ejemplo 1
VAR errnum err_var;
VAR string answer;
VAR string logfile;
...
answer := UIAlphaEntry (\Header:= "Log file name:"
\Message:= "Enter the name of the log file to create?"
\Icon:=iconInfo
\InitString:= "signal.log"
\MaxTime:=60
\DIBreak:=di5\BreakFlag:=err_var);
TEST err_var
CASE ERR_TP_MAXTIME:
CASE ERR_TP_DIBREAK:
! No operator answer
logfile:="signal.log";
CASE 0:
! Operator answer
logfile := answer;
DEFAULT:
! No such case defined
ENDTEST

Aparece el cuadro de mensaje y el operador puede introducir una cadena y pulsar


OK. El cuadro de mensaje tambin puede interrumpirse con un tiempo lmite o
mediante una seal de entrada digital. En el programa es posible encontrar la
razn y realizar la accin adecuada.
Gestin de errores
Si no se usa el parmetro \BreakFlag, estas situaciones pueden ser gestionadas
en el gestor de errores:
Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que responda el
operador, la variable de sistema ERRNO cambia a ERR_TP_MAXTIME y la ejecucin
contina en el gestor de errores.
Si se activa la entrada digital (parmetro \DIBreak) antes de que responda el
operador, la variable de sistema ERRNO cambia a ERR_TP_DIBREAK y la ejecucin
contina en el gestor de errores.
Si se activa la salida digital (parmetro \DOBreak)) antes de la accin del operador,
la variable de sistema ERRNO cambia a ERR_TP_DOBREAK y la ejecucin contina
en el gestor de errores.
Esta situacin slo puede ser gestionada desde el gestor de errores.
Si no hay ningn cliente, por ejemplo un FlexPendant, que se encargue de la
instruccin, la variable de sistema ERRNO cambia a ERR_TP_NO_CLIENT y la
ejecucin contina en el gestor de errores.

Contina en la pgina siguiente


1114

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.149 UIAlphaEntry - Introduccin alfanumrica del usuario
Continuacin
Limitaciones
Evite usar un valor demasiado pequeo para el parmetro de tiempo lmite
\MaxTime si UIAlphaEntry se ejecuta frecuentemente, por ejemplo en un bucle.
Si lo hace, puede dar lugar a un comportamiento impredecible del rendimiento del
sistema, por ejemplo la ralentizacin de la respuesta del FlexPendant.
Sintaxis
UIAlphaEntry '('
['\' Header ':= <expression (IN) of string>]
['\' Message ':=' <expression (IN) of string>]
| ['\' MsgArray ':='<array {*} (IN) of string>]
['\' Wrap]
['\' Icon ':=' <expression (IN) of icondata>]
['\' InitString ':='<expression (IN) of string>]
['\' MaxTime ':=' <expression (IN) of num>]
['\' DIBreak ':=' <variable (VAR) of signaldi>]
['\' DIPassive]
['\' DOBreak ':='<variable (VAR) of signaldo>]
['\' DOPassive]
['\' BreakFlag ':=' <var or pers (INOUT) of errnum>] ')'

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos de visualizacin de iconos

icondata - Datos de visualizacin de iconos


en la pgina 1208

Cuadro de mensaje de interaccin con el


usuario de tipo bsico

UIMsgBox - Cuadro de mensaje de usuario


de tipo bsico en la pgina 689

Cuadro de mensaje de interaccin con el


usuario de tipo avanzado

UIMessageBox - Cuadro de mensaje de


usuario de tipo avanzado en la pgina 1141

Introduccin de nmero de interaccin con UINumEntry - Introduccin de nmero de


el usuario
usuario en la pgina 1149
Ajuste de nmero de interaccin con el
usuario

UINumTune - Ajuste de nmero de usuario


en la pgina 1156

Vista de lista de interaccin con el usuario UIListView - Vista de lista de usuario en la


pgina 1132
Sistema conectado al FlexPendant, etc.

UIClientExist - Existe cliente de usuario en la


pgina 1116

Llamada a procedimiento con enlazamiento Technical reference manual - RAPID overview,


en tiempo de ejecucin
seccin Caractersticas bsicas - Rutinas Llamada a procedimiento
Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el FlexPendant en la pgina 593

3HAC16581-5 Revisin: L

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

2 Funciones
2.150 UIClientExist - Existe cliente de usuario

2.150 UIClientExist - Existe cliente de usuario


Utilizacin
UIClientExist (User Interaction Client Exist) se usa para comprobar si hay algn
dispositivo de usuario, por ejemplo el FlexPendant conectado al controlador.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin UIClientExist.
Ejemplo 1
IF UIClientExist() THEN
! Possible to get answer from the operator
! The TPReadFK and UIMsgBox ... can be used
ELSE
! Not possible to communicate with any operator
ENDIF

Se comprueba si es posible obtener alguna respuesta del operador del sistema.


Valor de retorno
Tipo de dato: bool
Devuelve TRUE si hay un FlexPendant conectado al sistema. De lo contrario,
devuelve FALSE.
Limitaciones
UIClientExist devuelve TRUE durante un intervalo de hasta 16 segundos. A
continuacin, el FlexPendant es retirado. Tras ese intervalo, UIClientExist
devuelve FALSE (es decir, a partir del momento en el que se detecta que se ha
perdido la conexin con el FlexPendant). Se usa la misma limitacin al volver a
conectar el FlexPendant.
Sintaxis
UIClientExist( )

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Cuadro de mensaje de interaccin con el


usuario de tipo bsico

UIMsgBox - Cuadro de mensaje de usuario


de tipo bsico en la pgina 689

Cuadro de mensaje de interaccin con el


usuario de tipo avanzado

UIMessageBox - Cuadro de mensaje de


usuario de tipo avanzado en la pgina 1141

Introduccin de nmero de interaccin con UINumEntry - Introduccin de nmero de


el usuario
usuario en la pgina 1149
Ajuste de nmero de interaccin con el
usuario

UINumTune - Ajuste de nmero de usuario


en la pgina 1156

Introduccin alfanumrica de interaccin con UIAlphaEntry - Introduccin alfanumrica del


el usuario
usuario en la pgina 1110

Contina en la pgina siguiente


1116

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.150 UIClientExist - Existe cliente de usuario
Continuacin
Para obtener ms informacin sobre

Consulte

Vista de lista de interaccin con el usuario

UIListView - Vista de lista de usuario en la


pgina 1132

Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el


FlexPendant en la pgina 593

3HAC16581-5 Revisin: L

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

2 Funciones
2.151 UIDnumEntry - Introduccin de nmero de usuario

2.151 UIDnumEntry - Introduccin de nmero de usuario


Utilizacin
UIDnumEntry (User Interaction Number Entry) se usa para introducir un valor
numrico desde un dispositivo de usuario disponible, como el FlexPendant. Se
escribe un mensaje para el operador, que a su vez responde con un valor numrico.
El valor numrico es comprobado, autorizado y transferido de nuevo al programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin UIDnumEntry.
Consulte tambin Ms ejemplos en la pgina 1122.
Ejemplo 1
VAR dnum answer;
...
answer := UIDnumEntry(
\Header:="UIDnumEntry Header"
\Message:="How many units should be produced?"
\Icon:=iconInfo
\InitValue:=50000000
\MinValue:=10000000
\MaxValue:=100000000
\AsInteger);

xx0900001064

Se muestra en la pantalla del FlexPendant el cuadro de mensaje numrico anterior,


con icono, encabezado, mensaje y valores inicial, mximo y mnimo. El cuadro de
mensaje comprueba que el operador seleccione un entero perteneciente al rango
Contina en la pgina siguiente
1118

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.151 UIDnumEntry - Introduccin de nmero de usuario
Continuacin
de valores. La ejecucin del programa espera hasta que se presione OK. A
continuacin, se devuelve el valor numrico seleccionado.
Valor de retorno
Tipo de dato: dnum
Esta funcin devuelve el valor numrico introducido.
Si la funcin es interrumpida por \BreakFlag:

Si se especifica el parmetro \InitValue, se devuelve este valor.

Si no se especifica el parmetro \InitValue, se devuelve el valor 0.

Si la funcin se interrumpe desde el gestor de ERROR, no tiene ningn valor de


retorno en absoluto.
Argumentos
UIDnumEntry ( [\Header] [\Message] | [\MsgArray]
[\Wrap][\Icon][\InitValue] [\MinValue] [\MaxValue]
[\AsInteger][\MaxTime] [\DIBreak] [\DIPassive] [\DOBreak]
[\DOPassive] \BreakFlag])

[\Header]
Tipo de dato: string
El texto de ttulo que debe escribirse en la parte superior del cuadro de mensaje.
Mximo 40 caracteres.
[\Message]
Tipo de dato: string
Una lnea de texto a escribir en la pantalla. Mx. 40 caracteres.
[\MsgArray]
Message Array
Tipo de dato: string
Several text lines from an array to be written on the display.
Slo es posible usar uno de los parmetros, \Message o \MsgArray, en cada
momento.
El espacio mximo del diseo es de 9 lneas de 40 caracteres cada una.
[\Wrap]
Tipo de dato: switch
Si se selecciona, todas las cadenas especificadas en el argumento \MsgArray
se concatenan para formar una cadena con un solo espacio entre las distintas
cadenas individuales y distribuida en el nmero mnimo posible de lneas.
De forma predeterminada, cada una de las cadenas del argumento \MsgArray
aparece en una lnea separada en la pantalla.
[\Icon]
Tipo de dato: icondata
Define el icono a mostrar. Slo puede usarse uno de los iconos predefinidos de
tipo icondata. Consulte Datos predefinidos en la pgina 1121.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.151 UIDnumEntry - Introduccin de nmero de usuario
Continuacin
De forma predeterminada, no se usa ningn icono.
[\InitValue]
Tipo de dato: dnum
El valor inicial que se muestra en el cuadro de introduccin.
[\MinValue]
Tipo de dato: dnum
El valor mnimo del valor de retorno.
[\MaxValue]
Tipo de dato: dnum
El valor mximo del valor de retorno.
[\AsInteger]
Tipo de dato: switch
Elimina el punto decimal del teclado numrico para garantizar que el valor devuelto
sea un entero.
[\MaxTime]
Tipo de dato: num
El periodo mximo, en segundos, que debe esperar el programa para continuar
con la ejecucin. Si no se presiona el botn OK en ese periodo, el programa sigue
ejecutndose en el gestor de errores, a no ser que se utilice el indicador BreakFlag
(que se documenta a continuacin). La constante ERR_TP_MAXTIME puede usarse
para comprobar si ha transcurrido ya el tiempo mximo establecido.
[\DIBreak]
Digital Input Break
Tipo de dato: signaldi
La seal digital de entrada que puede interrumpir el dilogo con el operador. Si
no se presiona el botn OK antes de que la seal cambie a 1 (o si ya tiene el valor
1), el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice
el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DIPassive]
Digital Input Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DIBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DIBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOBreak]
Digital Output Break
Tipo de dato: signaldo
Contina en la pgina siguiente
1120

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.151 UIDnumEntry - Introduccin de nmero de usuario
Continuacin
La seal digital de salida que puede interrumpir el dilogo con el operador. Si no
se presiona el botn OK antes de que la seal cambie a 1 (o si ya tiene el valor
1), el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice
el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOPassive]
Digital Output Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DOBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DOBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\BreakFlag]
Tipo de dato: errnum
Una variable (cambiada a 0 por el sistema antes de su uso) que contiene el cdigo
de error si se utilizan \MaxTime, \DIBreak o \DOBreak. Las constantes
ERR_TP_MAXTIME, ERR_TP_DIBREAK y ERR_TP_DOBREAK pueden usarse para
seleccionar el motivo. Si se omite esta variable opcional, se ejecuta el gestor de
errores.
Ejecucin de programas
Se muestra el cuadro de mensaje numrico, con teclado numrico, icono,
encabezado, lneas de mensaje y valores inicial, mximo y mnimo, de acuerdo
con los argumentos del programa. La ejecucin del programa espera hasta que
el usuario haya introducido un valor numrico autorizado y presione OK o hasta
que el cuadro de mensaje sea interrumpido por un tiempo lmite o una accin de
seal. El valor numrico introducido y el motivo de la interrupcin se devuelven
al programa.
El nuevo cuadro de mensaje del nivel de rutina TRAP toma el foco del cuadro de
mensaje del nivel bsico.
Datos predefinidos
!Icons:
CONST
CONST
CONST
CONST

icondata
icondata
icondata
icondata

iconNone := 0;
iconInfo := 1;
iconWarning := 2;
iconError := 3;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.151 UIDnumEntry - Introduccin de nmero de usuario
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin UIDnumEntry.
Ejemplo 1
VAR errnum err_var;
VAR dnum answer;
VAR dnum distance;
...
answer := UIDnumEntry (\Header:= "BWD move on path"
\Message:="Enter the path overlap?" \Icon:=iconInfo
\InitValue:=5 \MinValue:=0 \MaxValue:=10
\MaxTime:=60 \DIBreak:=di5 \BreakFlag:=err_var);
TEST err_var
CASE ERR_TP_MAXTIME:
CASE ERR_TP_DIBREAK:
! No operator answer distance := 5;
CASE 0
! Operator answer
distance := answer;
DEFAULT:
! No such case defined
ENDTEST

Se muestra el cuadro de mensaje y el operador puede introducir un valor numrico


y presionar OK. El cuadro de mensaje tambin puede ser interrumpido con un
tiempo lmite o una interrupcin con una seal digital de entrada. Es posible
determinar el motivo desde el programa y tomar las acciones adecuadas.
Gestin de errores
Si no se usa el parmetro \BreakFlag, estas situaciones pueden ser gestionadas
en el gestor de errores:

Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_MAXTIME y la
ejecucin contina en el gestor de errores.

Si se activa la entrada digital (parmetro \DIBreak) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_DIBREAK y la
ejecucin contina en el gestor de errores.

Si se activa la salida digital (parmetro \DOBreak) antes de la accin del


operador, la variable de sistema ERRNO cambia a ERR_TP_DOBREAK y la
ejecucin contina en el gestor de errores.

Esta situacin slo puede ser gestionada desde el gestor de errores.

Si no hay ningn cliente, por ejemplo un FlexPendant, que se encargue de


la instruccin, la variable de sistema ERRNO cambia a ERR_TP_NO_CLIENT
y la ejecucin contina en el gestor de errores.

Si no se especifica el valor inicial (parmetro \InitValue) dentro del rango


que va desde el valor mnimo al mximo (parmetros \MinValue y
\MaxValue), la variable de sistema ERRNO cambia a ERR_UI_INITVALUE
y la ejecucin contina en el gestor de errores.

Contina en la pgina siguiente


1122

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.151 UIDnumEntry - Introduccin de nmero de usuario
Continuacin

Si el valor mnimo (parmetro \MinValue) es mayor que el valor mximo


(parmetro \MaxValue), la variable de sistema ERRNO cambia a
ERR_UI_MAXMIN y la ejecucin contina en el gestor de errores.

Si el valor inicial (parmetro \InitValue) no es un entero como se


especifica en el parmetro \AsInteger, la variable de sistema ERRNO cambia
a ERR_UI_NOTINT y la ejecucin prosigue en el gestor de errores.

Limitaciones
Evite usar un valor demasiado pequeo para el parmetro de tiempo lmite
\MaxTime si UIDnumEntry se ejecuta frecuentemente, por ejemplo en un bucle.
Si lo hace, puede dar lugar a un comportamiento impredecible del rendimiento del
sistema, por ejemplo la ralentizacin de la respuesta del FlexPendant.
Sintaxis
UIDnumEntry(
[\Header:= <expression (IN) of string>]
[Message:= <expression (IN) of string> ]
| [\MsgArray:=<array {*} (IN) of string>]
[\Wrap]
[\Icon:= <expression (IN) of icondata>]
[\InitValue:=<expression (IN) of dnum>]
[\MinValue:=<expression (IN) of dnum>]
[\MaxValue:=<expression (IN) of dnum>]
[\AsInteger]
[\MaxTime:= <expression (IN) of num>]
[\DIBreak:= <variable (VAR) of signaldi>]
[\DIPassive]
[\DOBreak:= <variable (VAR) of signaldo>]
[\DOPassive]
[\BreakFlag:= <var or pers (INOUT) of errnum>] )

Una funcin con un valor de retorno del tipo de dato dnum.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos de visualizacin de iconos

icondata - Datos de visualizacin de iconos


en la pgina 1208

Cuadro de mensaje de interaccin con el


usuario de tipo bsico

UIMsgBox - Cuadro de mensaje de usuario


de tipo bsico en la pgina 689

Cuadro de mensaje de interaccin con el


usuario de tipo avanzado

UIMessageBox - Cuadro de mensaje de


usuario de tipo avanzado en la pgina 1141

Introduccin de nmero de interaccin con UINumEntry - Introduccin de nmero de


el usuario
usuario en la pgina 1149
Ajuste de nmero de interaccin con el
usuario

UIDnumTune - Ajuste de nmero de usuario


en la pgina 1125

Ajuste de nmero de interaccin con el


usuario

UINumTune - Ajuste de nmero de usuario


en la pgina 1156

Introduccin alfanumrica de interaccin con UIAlphaEntry - Introduccin alfanumrica del


el usuario
usuario en la pgina 1110

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.151 UIDnumEntry - Introduccin de nmero de usuario
Continuacin
Para obtener ms informacin sobre

Consulte

Vista de lista de interaccin con el usuario

UIListView - Vista de lista de usuario en la


pgina 1132

Sistema conectado al FlexPendant, etc.

UIClientExist - Existe cliente de usuario en


la pgina 1116

Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el


FlexPendant en la pgina 593

1124

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.152 UIDnumTune - Ajuste de nmero de usuario

2.152 UIDnumTune - Ajuste de nmero de usuario


Utilizacin
UIDnumTune (User Interaction Number Tune) se usa para ajustar un valor numrico
desde un dispositivo de usuario disponible, como el FlexPendant. Se escribe un
mensaje para el operador, que a su vez ajusta un valor numrico. El valor numrico
ajustado es comprobado, autorizado y transferido de nuevo al programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin UIDnumTune.
Consulte tambin Ms ejemplos en la pgina 1129.
Ejemplo 1
VAR dnum flow;
...
flow := UIDnumTune(
\Header:="UIDnumTune Header"
\Message:="Tune the flow?"
\Icon:=iconInfo,
10000000,
1000000
\MinValue:=1000000
\MaxValue:=20000000);

xx0900001063

Se muestra en la pantalla del FlexPendant el cuadro de mensaje de ajuste numrico


anterior con icono, encabezado, mensaje y valores inicial, de incremento, mximo
y mnimo. El cuadro de mensaje comprueba que el operador ajuste el valor de
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.152 UIDnumTune - Ajuste de nmero de usuario
Continuacin
flujo flow con pasos de 1000000, empezando con el valor inicial 10000000 y dentro
del rango de valores de 1000000-20000000. La ejecucin del programa espera
hasta que se presione OK. A continuacin, se devuelve el valor numrico
seleccionado, que se almacena en la variable flow.
Valor de retorno
Tipo de dato: dnum
Esta funcin devuelve el valor numrico ajustado.
Si la funcin es interrumpida por \BreakFlag, se devuelve el valor InitValue
especificado.
Si la funcin se interrumpe desde el gestor de ERROR, no se devuelve ningn valor
de retorno en absoluto.
Argumentos
UIDnumTune ( [\Header] [\Message] | [\MsgArray] [\Wrap]
[\Icon]InitValue Increment [\MinValue] [\MaxValue]
[\MaxTime][\DIBreak] [\DIPassive] [\DOBreak] [\DOPassive]
[\BreakFlag] )

[\Header]
Tipo de dato: string
El texto de ttulo que debe escribirse en la parte superior del cuadro de mensaje.
Mximo 40 caracteres.
[\Message]
Tipo de dato: string
Una lnea de texto a escribir en la pantalla. Mx. 40 caracteres.
[\MsgArray]
Message Array
Tipo de dato: string
Several text lines from an array to be written on the display.
Slo es posible usar uno de los parmetros, \Message o \MsgArray, en cada
momento.
El espacio mximo del diseo es de 11 lneas de 40 caracteres cada una.
[\Wrap]
Tipo de dato: switch
Si se selecciona, todas las cadenas especificadas en el argumento \MsgArray
se concatenan para formar una cadena con un solo espacio entre las distintas
cadenas individuales y distribuida en el nmero mnimo posible de lneas.
De forma predeterminada, cada una de las cadenas del argumento \MsgArray
aparece en una lnea separada en la pantalla.
[\Icon]
Tipo de dato: icondata

Contina en la pgina siguiente


1126

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.152 UIDnumTune - Ajuste de nmero de usuario
Continuacin
Define el icono a mostrar. Only one of the predefined icons of type icondata can
be used. Consulte Datos predefinidos en la pgina 1128.
De forma predeterminada, no se usa ningn icono.
InitValue
Initial Value
Tipo de dato: dnum
El valor inicial que se muestra en el cuadro de introduccin.
Increment
Tipo de dato: dnum
Este parmetro especifica en qu cantidad debe cambiar el valor al presionar los
botones de ms o menos.
[\MinValue]
Tipo de dato: dnum
El valor mnimo del valor de retorno.
[\MaxValue]
Tipo de dato: dnum
El valor mximo del valor de retorno.
[\MaxTime]
Tipo de dato: num
El periodo mximo, en segundos, que debe esperar el programa para continuar
con la ejecucin. Si no se presiona el botn OK en ese periodo, el programa sigue
ejecutndose en el gestor de errores, a no ser que se utilice el indicador BreakFlag
(que se documenta a continuacin). La constante ERR_TP_MAXTIME puede usarse
para comprobar si ha transcurrido ya el tiempo mximo establecido.
[\DIBreak]
Digital Input Break
Tipo de dato: signaldi
La seal digital de entrada que puede interrumpir el dilogo con el operador. Si
no se presiona el botn OK antes de que la seal cambie a 1 (o si ya tiene el valor
1), el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice
el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DIPassive]
Digital Input Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DIBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DIBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.152 UIDnumTune - Ajuste de nmero de usuario
Continuacin
[\DOBreak]
Digital Output Break
Tipo de dato: signaldo
La seal digital de salida que puede interrumpir el dilogo con el operador. Si no
se presiona el botn OK antes de que la seal cambie a 1 (o si ya tiene el valor
1), el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice
el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOPassive]
Digital Output Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DOBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DOBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\BreakFlag]
Tipo de dato: errnum
Una variable (cambiada a 0 por el sistema antes de su uso) que contiene el cdigo
de error si se utilizan \MaxTime, \DIBreak o \DOBreak. Las constantes
ERR_TP_MAXTIME, ERR_TP_DIBREAK y ERR_TP_DOBREAK pueden usarse para
seleccionar el motivo. Si se omite esta variable opcional, se ejecuta el gestor de
errores.
Ejecucin de programas
Se muestra el cuadro de mensaje de ajuste numrico con botones de ajuste +/-,
icono, encabezado, lneas de mensaje y valores inicial, de incremento, mximo y
mnimo, de acuerdo con los argumentos del programa. La ejecucin del programa
espera hasta que el usuario haya ajustado el valor numrico y presione OK o hasta
que el cuadro de mensaje sea interrumpido por un tiempo lmite o una accin de
seal. El valor numrico introducido y el motivo de la interrupcin se devuelven
al programa.
El nuevo cuadro de mensaje del nivel de rutina TRAP toma el foco del cuadro de
mensaje del nivel bsico.
Datos predefinidos
!Icons:
CONST icondata
CONST icondata
CONST icondata
CONST icondata

iconNone := 0;
iconInfo := 1;
iconWarning := 2;
iconError := 3;

Contina en la pgina siguiente


1128

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.152 UIDnumTune - Ajuste de nmero de usuario
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin UIDnumTune.
Ejemplo 1
VAR errnum err_var;
VAR dnum tune_answer;
VAR dnum distance;
...
tune_answer := UIDnumTune (\Header:=" BWD move on path"
\Message:="Enter the path overlap?" \Icon:=iconInfo,
5, 1 \MinValue:=0 \MaxValue:=10
\MaxTime:=60 \DIBreak:=di5 \BreakFlag:=err_var);
TEST err_var
CASE ERR_TP_MAXTIME:
CASE ERR_TP_DIBREAK:
! No operator answer
distance := 5;
CASE 0:
! Operator answer
distance := tune_answer;
DEFAULT:
! No such case defined
ENDTEST

Se muestra el cuadro de ajuste de mensaje y el operador puede ajustar el valor


numrico y presionar OK. El cuadro de mensaje tambin puede ser interrumpido
con un tiempo lmite o una interrupcin con una seal digital de entrada. Es posible
determinar el motivo desde el programa y tomar las acciones adecuadas.
Gestin de errores
Si no se usa el parmetro \BreakFlag, estas situaciones pueden ser gestionadas
en el gestor de errores:

Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_MAXTIME y la
ejecucin contina en el gestor de errores.

Si se activa la entrada digital (parmetro \DIBreak) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_DIBREAK y la
ejecucin contina en el gestor de errores.

Si se activa la salida digital (parmetro \DOBreak) antes de la accin del


operador, la variable de sistema ERRNO cambia a ERR_TP_DOBREAK y la
ejecucin contina en el gestor de errores.

Esta situacin slo puede ser gestionada desde el gestor de errores.

Si no hay ningn cliente, por ejemplo un FlexPendant, que se encargue de


la instruccin, la variable de sistema ERRNO cambia a ERR_TP_NO_CLIENT
y la ejecucin contina en el gestor de errores.

Si no se especifica el valor inicial (parmetro \InitValue) dentro del rango


que va desde el valor mnimo al mximo (parmetros \MinValue y

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.152 UIDnumTune - Ajuste de nmero de usuario
Continuacin
\MaxValue), la variable de sistema ERRNO cambia a ERR_UI_INITVALUE
y la ejecucin contina en el gestor de errores.

Si el valor mnimo (parmetro \MinValue) es mayor que el valor mximo


(parmetro \MaxValue), la variable de sistema ERRNO cambia a
ERR_UI_MAXMIN y la ejecucin contina en el gestor de errores.

Limitaciones
Evite usar un valor demasiado pequeo para el parmetro de tiempo lmite
\MaxTime si UIDnumTune se ejecuta frecuentemente, por ejemplo en un bucle.
Si lo hace, puede dar lugar a un comportamiento impredecible del rendimiento del
sistema, por ejemplo la ralentizacin de la respuesta del FlexPendant.
Sintaxis
UIDnumTune(
[\Header:= <expression (IN) of string>]
[\Message:= <expression (IN) of string> ]
| [\MsgArray:=<array {*} (IN) of string>]
[\Wrap]
[\Icon:= <expression (IN) of icondata>] ,]
[InitValue:= ] <expression (IN) of dnum> ,
[Increment:= ] <expression (IN) of dnum>
[\MinValue:= <expression (IN) of dnum>]
[\MaxValue:= <expression(IN) of dnum>]
[\MaxTime:= <expression (IN) of num>]
[\DIBreak:= <variable (VAR) of signaldi>]
[\DIPassive]
[\DOBreak:= <variable (VAR) of signaldo>]
[\DOPassive]
[\BreakFlag:= <var or pers (INOUT) of errnum>] )

Una funcin con un valor de retorno del tipo de dato dnum.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos de visualizacin de iconos

icondata - Datos de visualizacin de iconos


en la pgina 1208

Cuadro de mensaje de interaccin con el


usuario de tipo bsico

UIMsgBox - Cuadro de mensaje de usuario


de tipo bsico en la pgina 689

Cuadro de mensaje de interaccin con el


usuario de tipo avanzado

UIMessageBox - Cuadro de mensaje de


usuario de tipo avanzado en la pgina 1141

Introduccin de nmero de interaccin con UIDnumEntry - Introduccin de nmero de


el usuario
usuario en la pgina 1118
Introduccin de nmero de interaccin con UINumEntry - Introduccin de nmero de
el usuario
usuario en la pgina 1149
Ajuste de nmero de interaccin con el
usuario

UINumTune - Ajuste de nmero de usuario


en la pgina 1156

Introduccin alfanumrica de interaccin con UIAlphaEntry - Introduccin alfanumrica del


el usuario
usuario en la pgina 1110

Contina en la pgina siguiente


1130

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.152 UIDnumTune - Ajuste de nmero de usuario
Continuacin
Para obtener ms informacin sobre

Consulte

Vista de lista de interaccin con el usuario

UIListView - Vista de lista de usuario en la


pgina 1132

Sistema conectado al FlexPendant, etc.

UIClientExist - Existe cliente de usuario en


la pgina 1116

Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el


FlexPendant en la pgina 593

3HAC16581-5 Revisin: L

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

2 Funciones
2.153 UIListView - Vista de lista de usuario

2.153 UIListView - Vista de lista de usuario


Utilizacin
UIListView (User Interaction List View) se utiliza para definir listas de mens
con textos e iconos opcionales en el dispositivo de usuario disponible, como el
FlexPendant. El men tiene dos estilos diferentes: uno con botones de validacin
y otro que reacciona instantneamente a la seleccin del usuario.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin UIListView.
Consulte tambin Ms ejemplos en la pgina 1138.
Ejemplo 1
CONST listitem list{3} := [ ["","Item 1"], ["","Item 2"],
["","Item3"] ];
VAR num list_item;
VAR btnres button_answer;
...
list_item := UIListView (
\Result:=button_answer
\Header:="UIListView Header",
list
\Buttons:=btnOKCancel
\Icon:=iconInfo
\DefaultIndex:=1);
IF button_answer = resOK THEN
IF list_item = 1 THEN
! Do item1
ELSEIF list_item = 2 THEN
! Do item 2
ELSE
! Do item3
ENDIF
ELSE
! User has select Cancel
ENDIF

Contina en la pgina siguiente


1132

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.153 UIListView - Vista de lista de usuario
Continuacin

xx0500002416

Se muestra en la pantalla del FlexPendant la lista de mens especificada


anteriormente, con ttulo, men con los elementos de Item 1 ... Item 3 y los
botones. La ejecucin espera hasta que se presiona OK o Cancelar. Tanto la
seleccin en la lista como el botn presionado se transfieren al programa.
Valor de retorno
Tipo de dato: num
Esta funcin devuelve el elemento seleccionado por el usuario en el men y
correspondiente al ndice de la matriz especificada en el parmetro ListItems.
Si la funcin es interrumpida por \BreakFlag:

Si se especifica el parmetro \DefaultIndex, se devuelve este nmero de


ndice.

Si no se especifica el parmetro \DefaultIndex, se devuelve 0.

Si la funcin se interrumpe desde el gestor de ERROR, no se devuelve ningn valor


de retorno en absoluto.
Argumentos
UIListView ( [\Result] [\Header] ListItems [\Buttons] |
[\BtnArray][\Icon] [\DefaultIndex ] [\MaxTime] [\DIBreak]
[\DIPassive][\DOBreak] [\DOPassive] [\BreakFlag])

[\Result]
Tipo de dato: btnres
El valor numrico del botn seleccionado en el cuadro de men de lista.
Si se usa el argumento \Buttons, se devuelven constantes simblicas del tipo
btnres. Si se usa el argumento \BtnArray, se devuelve el ndice de matriz
correspondiente.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.153 UIListView - Vista de lista de usuario
Continuacin
El argumento \Result con el valor da lugar a 0 si no se cumple ninguna de las
condiciones siguientes:

No se utiliza ninguno de los parmetros \Buttons o \BtnArray.

Se utiliza el argumento \Buttons:=btnNone.

si la funcin es interrumpida por \BreakFlag o el gestor de ERROR:

Consulte Datos predefinidos en la pgina 1137.


[\Header]
Tipo de dato: string
El texto de ttulo que debe escribirse en la parte superior del cuadro de men de
lista. Mximo 40 caracteres.
ListItem
Tipo de dato: listitem
Una matriz con uno o varios elementos de men de lista para su visualizacin y
compuestos de:
Componente image de tipo string:
El nombre de la imagen de icono que debe utilizarse. Para iniciar sus propias
imgenes, las imgenes deben estar situadas en el directorio HOME: del sistema
activo o directamente en el sistema activo.
La recomendacin es situar los archivos en el directorio HOME: de forma que se
incluyan en las operaciones de copia de seguridad y restauracin.
Se requiere un arranque en caliente, tras lo cual el FlexPendant carga las imgenes.
Una exigencia del sistema es que se use la opcin de RobotWare FlexPendant
Interface.
La imagen a mostrar puede tener 28 pxeles de anchura y altura. Si la imagen es
mayor, ser redimensionada a nicamente 28 * 28 pxeles.
No es posible especificar ningn valor exacto en cuanto al tamao que una imagen
puede tener o el nmero de imgenes que es posible cargar en el FlexPendant.
Depende del tamao de los dems archivos cargados en el FlexPendant. La
ejecucin de los programas contina simplemente si se usa una imagen que no
est cargada en el FlexPendant.
Utilice una cadena vaca "" o la constante stEmpty si no desea mostrar ningn
icono.
Componente text de tipo string:

El texto de la lnea de men a mostrar.

Mximo de 75 caracteres por cada elemento del men de lista.

[\Buttons]
Tipo de dato: buttondata
Define los pulsadores que se desea mostrar. Slo puede mostrarse una de las
combinaciones de botones predefinidas del tipo buttondata. Consulte Datos
predefinidos en la pgina 1137.

Contina en la pgina siguiente


1134

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.153 UIListView - Vista de lista de usuario
Continuacin
[\BtnArray]
Button Array
Tipo de dato: string
Definicin propia de pulsadores almacenada en una matriz de cadenas. Esta
funcin devuelve el ndice de matriz cuando se selecciona la cadena
correspondiente.
Slo es posible usar uno de los parmetros, \Buttons o \BtnArray, en cada
momento. Si no se usa ninguno de los parmetros \Buttons o \BtnArray o el
argumento \Buttons:=btnNone, la lista de men reacciona instantneamente
ante la seleccin por parte del usuario.
Como mximo, es posible utilizar 5 botones de 42 caracteres cada uno.
[\Icon]
Tipo de dato: icondata
Define el icono a mostrar. Slo puede usarse uno de los iconos predefinidos de
tipo icondata.
De forma predeterminada, no se usa ningn icono. Consulte Datos predefinidos
en la pgina 1137.
[\DefaultIndex]
Tipo de dato: num
La seleccin predeterminada del usuario en el men de lista y correspondiente al
ndice de la matriz especificada en el parmetro ListItems.
[\MaxTime]
Tipo de dato: num
El periodo mximo, en segundos, que debe esperar el programa para continuar
con la ejecucin. Si no se presiona este botn o no selecciona ninguna opcin en
ese periodo, el programa sigue ejecutndose en el gestor de errores, a no ser que
se utilice el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_MAXTIME puede usarse para comprobar si ha transcurrido ya el tiempo
mximo establecido.
[\DIBreak]
Digital Input Break
Tipo de dato: signaldi
La seal digital de entrada que puede interrumpir el dilogo con el operador. Si
no se presiona ningn botn o no se selecciona ninguna opcin antes de que la
seal cambie a 1 (o si ya tiene el valor 1), el programa sigue ejecutndose en el
gestor de errores, a no ser que se utilice el indicador BreakFlag (que se
documenta a continuacin). La constante ERR_TP_DIBREAK puede usarse para
comprobar si esto ha ocurrido.
[\DIPassive]
Digital Input Passive
Tipo de dato: switch
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.153 UIListView - Vista de lista de usuario
Continuacin
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DIBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DIBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOBreak]()
Digital Output Break
Tipo de dato: signaldo
La seal digital de salida que puede interrumpir el dilogo con el operador. Si no
se presiona ningn botn o no se selecciona ninguna opcin antes de que la seal
cambie a 1 (o si ya tiene el valor 1), el programa sigue ejecutndose en el gestor
de errores, a no ser que se utilice el indicador BreakFlag (que se documenta a
continuacin). La constante ERR_TP_DOBREAK puede usarse para comprobar si
esto ha ocurrido.
[\DOPassive]
Digital Output Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DOBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DOBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\BreakFlag]
Tipo de dato: errnum
Una variable que contiene el cdigo de error si se utilizan \MaxTime, \DIBreak
o \DOBreak. Las constantes ERR_TP_MAXTIME, ERR_TP_DIBREAK y
ERR_TP_DOBREAK pueden usarse para seleccionar el motivo. Si se omite esta
variable opcional, se ejecuta el gestor de errores.
Ejecucin de programas
Se muestra una lista de men con icono, ttulo, elementos de lista y un elemento
predeterminado, de acuerdo con los argumentos del programa. La ejecucin del
programa espera hasta que el operador haya seleccionado una opcin o hasta
que la lista de men sea interrumpida por un tiempo lmite o una accin de seal.
El elemento de lista seleccionado y el motivo de la interrupcin se devuelven al
programa.
La nueva lista de men del nivel de rutina TRAP toma el foco de la lista de men
del nivel bsico.

Contina en la pgina siguiente


1136

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.153 UIListView - Vista de lista de usuario
Continuacin
Datos predefinidos
!Icons:
CONST icondata iconNone := 0;
CONST icondata iconInfo := 1;
CONST icondata iconWarning := 2;
CONST icondata iconError := 3;
!Buttons:
CONST buttondata btnNone := -1;
CONST buttondata btnOK := 0;
CONST buttondata btnAbrtRtryIgn := 1;
CONST buttondata btnOKCancel := 2;
CONST buttondata btnRetryCancel := 3;
CONST buttondata btnYesNo := 4;
CONST buttondata btnYesNoCancel := 5;
!Results:
CONST btnres resUnkwn := 0;
CONST btnres resOK := 1;
CONST btnres resAbort := 2;
CONST btnres resRetry := 3;
CONST btnres resIgnore := 4;
CONST btnres resCancel := 5;
CONST btnres resYes := 6;
CONST btnres resNo := 7;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.153 UIListView - Vista de lista de usuario
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin UIListView.
Ejemplo 1
CONST listitem list{2} := [ ["","Calibrate tool1"], ["","Calibrate
tool2"] ];
VAR num list_item;
VAR errnum err_var;
...
list_item := UIListView
( \Header:="Select tool ?",
list \Icon:=iconInfo
\MaxTime:=60
\DIBreak:=di5
\BreakFlag:=err_var);
TEST err_var
CASE ERR_TP_MAXTIME:
CASE ERR_TP_DIBREAK:
! No operator answer
CASE 0:
! Operator answer
IF list_item =1 THEN
! Calibrate tool1
ELSEIF list_item=2 THEN
! Calibrate tool2
ENDIF
DEFAULT:
! Not such case defined
ENDTEST

Se muestra el cuadro de mensaje y el operador puede seleccionar un elemento


de la lista. El cuadro de mensaje tambin puede ser interrumpido con un tiempo
lmite o una interrupcin con una seal digital de entrada. Es posible determinar
el motivo desde el programa y tomar las acciones adecuadas.
Gestin de errores
Si no se usa el parmetro \BreakFlag, estas situaciones pueden ser gestionadas
en el gestor de errores:

Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_MAXTIME y la
ejecucin contina en el gestor de errores.

Si se activa la entrada digital (parmetro \DIBreak) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_DIBREAK y la
ejecucin contina en el gestor de errores.

Si se activa la salida digital (parmetro \DOBreak) antes de la accin del


operador, la variable de sistema ERRNO cambia a ERR_TP_DOBREAK y la
ejecucin contina en el gestor de errores.

Contina en la pgina siguiente


1138

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.153 UIListView - Vista de lista de usuario
Continuacin
Esta situacin slo puede ser gestionada desde el gestor de errores.

Si no hay ningn cliente, por ejemplo un FlexPendant, que se encargue de


la instruccin, la variable de sistema ERRNO cambia a ERR_TP_NO_CLIENT
y la ejecucin contina en el gestor de errores.

Limitaciones
Evite usar un valor demasiado pequeo para el parmetro de tiempo lmite
\MaxTime si UIListView se ejecuta frecuentemente, por ejemplo en un bucle.
Si lo hace, puede dar lugar a un comportamiento impredecible del rendimiento del
sistema, por ejemplo la ralentizacin de la respuesta del FlexPendant.
Sintaxis
UIListView (
[[\Result := <var or pers (INOUT) of btnres>]
[\Header := <expression (IN) of string>] ,]
[ListItems =] <array {*} (IN) of listitem>
[\Buttons := <expression (IN) of buttondata>]
| [\BtnArray :=<array {*} (IN) of string>]
[\Icon := <expression (IN) of icondata>]
[\DefaultIndex :=<expression (IN) of num>]
[\MaxTime := <expression (IN) of num>]
[\DIBreak := <variable (VAR) of signaldi>]
[\DIPassive]
[\DOBreak := <variable (VAR) of signaldo>]
[\DOPassive]
[\BreakFlag := <var or pers (INOUT) of errnum>])

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Datos de visualizacin de iconos icondata - Datos de visualizacin de iconos en la pgina 1208


Datos de pulsador

buttondata - Datos de pulsador en la pgina 1175

Datos de resultado de pulsador

btnres - Datos de resultado de pulsador en la pgina 1172

Estructura de datos de elementos listitem - Estructura de datos de elementos de lista en


de lista
la pgina 1218
Cuadro de mensaje de interaccin UIMsgBox - Cuadro de mensaje de usuario de tipo bsicon el usuario de tipo bsico
co en la pgina 689
Cuadro de mensaje de interaccin UIMessageBox - Cuadro de mensaje de usuario de tipo
con el usuario de tipo avanzado avanzado en la pgina 1141
Introduccin de nmero de inte- UINumEntry - Introduccin de nmero de usuario en la
raccin con el usuario
pgina 1149
Ajuste de nmero de interaccin UINumTune - Ajuste de nmero de usuario en la pgicon el usuario
na 1156
Introduccin alfanumrica de inte- UIAlphaEntry - Introduccin alfanumrica del usuario
raccin con el usuario
en la pgina 1110

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.153 UIListView - Vista de lista de usuario
Continuacin
Para obtener ms informacin
sobre

Consulte

Sistema conectado al FlexPendant, etc.

UIClientExist - Existe cliente de usuario en la pgina 1116

Borrado de la ventana de opera- TPErase - Borra el texto mostrado en el FlexPendant en


dor
la pgina 593

1140

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.154 UIMessageBox - Cuadro de mensaje de usuario de tipo avanzado

2.154 UIMessageBox - Cuadro de mensaje de usuario de tipo avanzado


Utilizacin
UIMessageBox (User Interaction Message Box) se usa para comunicarse con el
usuario del sistema de robot a travs de un dispositivo de usuario disponible,
como el FlexPendant. Se escribe un mensaje para el operador, que a su vez
responde con la seleccin de un botn. A continuacin, la seleccin de usuario
se transfiere al programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin UIMessageBox.
Consulte tambin Ms ejemplos en la pgina 1146.
Ejemplo 1
VAR btnres answer;
CONST string my_message{5}:= ["Message Line 1","Message Line 2",
"Message Line 3","Message Line 4","Message Line 5"];
CONST string my_buttons{2}:=["OK","Skip"];
...
answer:= UIMessageBox (
\Header:="UIMessageBox Header"
\MsgArray:=my_message
\BtnArray:=my_buttons
\Icon:=iconInfo);
IF answer = 1 THEN
! Operator selection OK
ELSEIF answer = 2 THEN
! Operator selection Skip
ELSE
! No such case defined
ENDIF

xx0500002409

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.154 UIMessageBox - Cuadro de mensaje de usuario de tipo avanzado
Continuacin
Se muestra en la pantalla del FlexPendant el cuadro de mensaje anterior, con
icono, ttulo, mensaje y pulsadores definidos por el usuario. La ejecucin espera
hasta que se presiona OK u Omitir. En otras palabras, se asigna a answer el
valor 1 (OK) 2 (Omitir) en funcin de cul de los botones se presione (ndice de
matriz correspondiente).
Nota
Message Line 1 ... Message Line 5 se muestran en las lneas separadas
de la 1 a la 5 (el modificador \Wrap no se utiliza).
Valor de retorno
Tipo de dato: btnres
El valor numrico del botn seleccionado en el cuadro de mensaje.
Si se usa el argumento \Buttons, se devuelven constantes simblicas del tipo
btnres.
Si se usa el argumento \BtnArray, se devuelve el ndice de matriz
correspondiente.
Si la funcin es interrumpida por \BreakFlag o \Buttons:=btnNone:

Si se especifica el parmetro \DefaultBtn, se devuelve este nmero de


ndice.

Si no se especifica el parmetro \DefaultBtn, se devuelve resUnkwn igual


a 0.

Si la funcin se interrumpe desde el gestor de ERROR, no tiene ningn valor de


retorno en absoluto.
Argumentos
UIMessageBox ( [\Header] [\Message] | [\MsgArray] [\Wrap][\Buttons]
| [\BtnArray] [\DefaultBtn] [\Icon][\Image] [\MaxTime]
[\DIBreak] [\DIPassive] [\DOBreak] [\DOPassive] [\BreakFlag])

[\Header]
Tipo de dato: string
El texto de ttulo que debe escribirse en la parte superior del cuadro de mensaje.
Mximo 40 caracteres.
[\Message]
Tipo de dato: string
Una lnea de texto a escribir en la pantalla. Mximo 55 caracteres.
[\MsgArray]
Message Array
Tipo de dato: string
Several text lines from an array to be written on the display.
Slo es posible usar uno de los parmetros, \Message o \MsgArray, en cada
momento.
Contina en la pgina siguiente
1142

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.154 UIMessageBox - Cuadro de mensaje de usuario de tipo avanzado
Continuacin
El espacio mximo del diseo es de 11 lneas de 55 caracteres cada una.
[\Wrap]
Tipo de dato: switch
Si se selecciona, todas las cadenas especificadas en el argumento \MsgArray
se concatenan para formar una cadena con un solo espacio entre las distintas
cadenas individuales y distribuida en el nmero mnimo posible de lneas.
De forma predeterminada, cada una de las cadenas del argumento \MsgArray
aparece en una lnea separada en la pantalla.
[\Buttons]
Tipo de dato: buttondata
Defines the push buttons to be displayed. Only one of the predefined buttons
combination of type buttondata can be used. Consulte Datos predefinidos en la
pgina 1145.
De forma predeterminada, el sistema muestra el botn OK.
[\BtnArray]
Button Array
Tipo de dato: string
Definicin propia de pulsadores almacenada en una matriz de cadenas. Esta
funcin devuelve el ndice de matriz cuando se selecciona la cadena
correspondiente.
Slo es posible usar uno de los parmetros, \Buttons o \BtnArray, en cada
momento.
Como mximo, es posible utilizar 5 botones de 42 caracteres cada uno.
[\DefaultBtn]
Default Button
Tipo de dato: btnres
Permite especificar un valor que debe ser devuelto si el cuadro de mensaje es
interrumpido por \MaxTime, \DIBreak o \DOBreak. Es posible especificar la
constante simblica predefinida del tipo btnres o cualquier valor definido por el
usuario. Consulte Datos predefinidos en la pgina 1145.
[\Icon]
Tipo de dato: icondata
Define el icono a mostrar. Slo puede usarse uno de los iconos predefinidos de
tipo icondata. Consulte Datos predefinidos en la pgina 1145.
De forma predeterminada, no se usa ningn icono.
[\Image]
Tipo de dato: string
El nombre de la imagen que debe utilizarse. Para iniciar sus propias imgenes,
las imgenes deben estar situadas en el directorio HOME: del sistema activo o
directamente en el sistema activo.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.154 UIMessageBox - Cuadro de mensaje de usuario de tipo avanzado
Continuacin
La recomendacin es situar los archivos en el directorio HOME: de forma que se
incluyan en las operaciones de copia de seguridad y restauracin.
Se requiere un arranque en caliente, tras lo cual el FlexPendant carga las imgenes.
Una exigencia del sistema es que se use la opcin de RobotWare FlexPendant
Interface.
La imagen a mostrar puede tener 185 pxeles de anchura y 300 pxeles de altura.
Si la imagen tiene un tamao mayor, slo se muestran 185 * 300 pxeles de la
imagen a partir de su parte superior izquierda.
No es posible especificar ningn valor exacto en cuanto al tamao que una imagen
puede tener o el nmero de imgenes que es posible cargar en el FlexPendant.
Depende del tamao de los dems archivos cargados en el FlexPendant. La
ejecucin de los programas contina simplemente si se usa una imagen que no
est cargada en el FlexPendant.
[\MaxTime]
Tipo de dato: num
El periodo mximo, en segundos, que debe esperar el programa para continuar
con la ejecucin. Si no se selecciona ningn botn en ese periodo, el programa
sigue ejecutndose en el gestor de errores, a no ser que se utilice el indicador
BreakFlag (que se documenta a continuacin). La constante ERR_TP_MAXTIME
puede usarse para comprobar si ha transcurrido ya el tiempo mximo establecido.
[\DIBreak]
Digital Input Break
Tipo de dato: signaldi
La seal digital de entrada que puede interrumpir el dilogo con el operador. Si
no se selecciona ningn botn cuando la seal cambia a 1 (o si ya tiene el valor
1), el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice
el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DIPassive]
Digital Input Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DIBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DIBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOBreak]
Digital Output Break
Tipo de dato: signaldo
La seal digital de salida que puede interrumpir el dilogo con el operador. Si no
se selecciona ningn botn cuando la seal cambia a 1 (o si ya tiene el valor 1),
el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice el
Contina en la pgina siguiente
1144

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.154 UIMessageBox - Cuadro de mensaje de usuario de tipo avanzado
Continuacin
indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOPassive]
Digital Output Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DOBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DOBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\BreakFlag]
Tipo de dato: errnum
Una variable (cambiada a 0 por el sistema antes de su uso) que contiene el cdigo
de error si se utilizan \MaxTime,\DIBreak o \DOBreak Las constantes
ERR_TP_MAXTIME, ERR_TP_DIBREAK y ERR_TP_DOBREAK pueden usarse para
seleccionar el motivo. Si se omite esta variable opcional, se ejecuta el gestor de
errores.
Ejecucin de programas
Se muestra un cuadro de mensaje con icono, ttulo, lneas de mensaje, imgenes
y botones, de acuerdo con los argumentos del programa. La ejecucin del programa
espera hasta que el usuario seleccione un botn o que el cuadro de mensaje sea
interrumpido por un tiempo lmite o una accin de seal. La opcin seleccionada
por el usuario y el motivo de la interrupcin se devuelven al programa.
El nuevo cuadro de mensaje del nivel de rutina TRAP toma el foco del cuadro de
mensaje del nivel bsico.
Datos predefinidos
!Icons:
CONST icondata iconNone := 0;
CONST icondata iconInfo := 1;
CONST icondata iconWarning := 2;
CONST icondata iconError := 3;
!Buttons:
CONST buttondata btnNone := -1;
CONST buttondata btnOK := 0;
CONST buttondata btnAbrtRtryIgn := 1;
CONST buttondata btnOKCancel := 2;
CONST buttondata btnRetryCancel := 3;
CONST buttondata btnYesNo := 4;
CONST buttondata btnYesNoCancel := 5;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.154 UIMessageBox - Cuadro de mensaje de usuario de tipo avanzado
Continuacin
!Results:
CONST btnres
CONST btnres
CONST btnres
CONST btnres
CONST btnres
CONST btnres
CONST btnres
CONST btnres

resUnkwn := 0;
resOK := 1;
resAbort := 2;
resRetry := 3;
resIgnore := 4;
resCancel := 5;
resYes := 6;
resNo := 7;

Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin UIMessageBox.
Ejemplo 1
VAR errnum err_var;
VAR btnres answer;
...
answer := UIMessageBox (\Header:= "Cycle step 3"
\Message:="Continue with the calibration ?" \Buttons:=btnOKCancel
\DefaultBtn:=resCancel \Icon:=iconInfo \MaxTime:=60 \DIBreak:=di5
\BreakFlag:=err_var);
IF answer = resOK THEN
! OK from the operator
ELSE
! Cancel from the operator or operation break
TEST err_var
CASE ERR_TP_MAXTIME:
! Time out
CASE ERR_TP_DIBREAK:
! Input signal break
DEFAULT:
! Not such case defined
ENDTEST
ENDIF

Se muestra el cuadro de mensaje y el operador puede responder OK o Cancelar.


El cuadro de mensaje tambin puede ser interrumpido con un tiempo lmite o una
interrupcin con una seal digital de entrada. Es posible determinar el motivo
desde el programa.
Gestin de errores
Si no se usa el parmetro \BreakFlag, estas situaciones pueden ser gestionadas
en el gestor de errores:

Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_MAXTIME y la
ejecucin contina en el gestor de errores.

Si se activa la entrada digital (parmetro \DIBreak) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_DIBREAK y la
ejecucin contina en el gestor de errores.

Contina en la pgina siguiente


1146

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.154 UIMessageBox - Cuadro de mensaje de usuario de tipo avanzado
Continuacin

Si se activa la salida digital (parmetro \DOBreak) antes de la accin del


operador, la variable de sistema ERRNO cambia a ERR_TP_DOBREAK y la
ejecucin contina en el gestor de errores.

Esta situacin slo puede ser gestionada desde el gestor de errores.

Si no hay ningn cliente, por ejemplo un FlexPendant, que se encargue de


la instruccin, la variable de sistema ERRNO cambia a ERR_TP_NO_CLIENT
y la ejecucin contina en el gestor de errores.

Limitaciones
Evite usar un valor demasiado pequeo para el parmetro de tiempo lmite
\MaxTime si UIMessageBox se ejecuta frecuentemente, por ejemplo en un bucle.
Si lo hace, puede dar lugar a un comportamiento impredecible del rendimiento del
sistema, por ejemplo la ralentizacin de la respuesta del FlexPendant.
Sintaxis
UIMessageBox(
[\Header:= <expression (IN) of string>]
[\Message:= <expression (IN) of string>]
| [\MsgArray:=<array {*} (IN) of string>]
[\Wrap]
[\Buttons= <expression (IN) of buttondata>]
| [\BtnArray:=<array {*}(IN) of string>]
[\DefaultBtn:=<expression (IN) of btnres>]
[\Icon:=<expression (IN) of icondata>]
[\Image:=<expression (IN) of string>]
[\MaxTime:= <expression (IN) of num>]
[\DIBreak:= <variable (VAR) of signaldi>]
[\DIPassive]
[\DOBreak:= <variable (VAR) of signaldo>]
[\DOPassive]
[\BreakFlag:= <var or pers (INOUT) of errnum>] )

Una funcin con un valor de retorno del tipo de dato btnres.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos de visualizacin de iconos

icondata - Datos de visualizacin de iconos en la


pgina 1208

Datos de pulsador

buttondata - Datos de pulsador en la pgina 1175

Datos de resultado de pulsador

btnres - Datos de resultado de pulsador en la


pgina 1172

Cuadro de mensaje de interaccin con UIMsgBox - Cuadro de mensaje de usuario de tipo


el usuario de tipo bsico
bsico en la pgina 689
Introduccin de nmero de interaccin UINumEntry - Introduccin de nmero de usuario
con el usuario
en la pgina 1149
Ajuste de nmero de interaccin con el UINumTune - Ajuste de nmero de usuario en la
usuario
pgina 1156

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.154 UIMessageBox - Cuadro de mensaje de usuario de tipo avanzado
Continuacin
Para obtener ms informacin sobre

Consulte

Introduccin alfanumrica de interaccin UIAlphaEntry - Introduccin alfanumrica del


con el usuario
usuario en la pgina 1110
Vista de lista de interaccin con el
usuario

UIListView - Vista de lista de usuario en la pgina 1132

Sistema conectado al FlexPendant, etc. UIClientExist - Existe cliente de usuario en la pgina 1116
FlexPendant Interface

Especificaciones del producto - Controller software IRC5, seccin Communication - FlexPendant


Interface

Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el FlexPendant en la pgina 593

1148

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.155 UINumEntry - Introduccin de nmero de usuario

2.155 UINumEntry - Introduccin de nmero de usuario


Utilizacin
UINumEntry (User Interaction Number Entry) se usa para introducir un valor
numrico desde un dispositivo de usuario disponible, como el FlexPendant. Se
escribe un mensaje para el operador, que a su vez responde con un valor numrico.
El valor numrico es comprobado, autorizado y transferido de nuevo al programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin UINumEntry.
Consulte tambin Ms ejemplos en la pgina 1153.
Ejemplo 1
VAR num answer;
...
answer := UINumEntry(
\Header:="UINumEntry Header"
\Message:="How many units should be produced?"
\Icon:=iconInfo
\InitValue:=5
\MinValue:=1
\MaxValue:=10
\AsInteger);
FOR i FROM 1 TO answer DO
produce_part;
ENDFOR

xx0500002412

Se muestra en la pantalla del FlexPendant el cuadro de mensaje numrico anterior,


con icono, encabezado, mensaje y valores inicial, mximo y mnimo. El cuadro de
mensaje comprueba que el operador seleccione un entero perteneciente al rango
de valores. La ejecucin del programa espera hasta que se presione OK. A

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.155 UINumEntry - Introduccin de nmero de usuario
Continuacin
continuacin, se devuelve el valor numrico seleccionado. A continuacin, la rutina
produce_part se repite el nmero de veces especificado a travs del FlexPendant.
Valor de retorno
Tipo de dato: num
Esta funcin devuelve el valor numrico introducido.
Si la funcin es interrumpida por \BreakFlag:

Si se especifica el parmetro \InitValue, se devuelve este valor.

Si no se especifica el parmetro \InitValue , se devuelve el valor 0.

Si la funcin se interrumpe desde el gestor de ERROR, no tiene ningn valor de


retorno en absoluto.
Argumentos
UINumEntry ( [\Header] [\Message] | [\MsgArray]
[\Wrap][\Icon][\InitValue] [\MinValue] [\MaxValue]
[\AsInteger][\MaxTime] [\DIBreak] [\DIPassive] [\DOBreak]
[\DOPassive] \BreakFlag])

[\Header]
Tipo de dato: string
El texto de ttulo que debe escribirse en la parte superior del cuadro de mensaje.
Mximo 40 caracteres.
[\Message]
Tipo de dato: string
Una lnea de texto a escribir en la pantalla. Mximo 40 caracteres.
[\MsgArray]
Message Array
Tipo de dato: string
Several text lines from an array to be written on the display.
Slo es posible usar uno de los parmetros, \Message o \MsgArray, en cada
momento.
El espacio mximo del diseo es de 9 lneas de 40 caracteres cada una.
[\Wrap]
Tipo de dato: switch
Si se selecciona, todas las cadenas especificadas en el argumento \MsgArray
se concatenan para formar una cadena con un solo espacio entre las distintas
cadenas individuales y distribuida en el nmero mnimo posible de lneas.
De forma predeterminada, cada una de las cadenas del argumento \MsgArray
aparece en una lnea separada en la pantalla.
[\Icon]
Tipo de dato: icondata
Define el icono a mostrar. Slo puede usarse uno de los iconos predefinidos de
tipo icondata. Consulte Datos predefinidos en la pgina 1152.
Contina en la pgina siguiente
1150

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.155 UINumEntry - Introduccin de nmero de usuario
Continuacin
De forma predeterminada, no se usa ningn icono.
[\InitValue]
Tipo de dato: num
El valor inicial que se muestra en el cuadro de introduccin.
[\MinValue]
Tipo de dato: num
El valor mnimo del valor de retorno.
[\MaxValue]
Tipo de dato: num
El valor mximo del valor de retorno.
[\AsInteger]
Tipo de dato: switch
Elimina el punto decimal del teclado numrico para garantizar que el valor devuelto
sea un entero.
[\MaxTime]
Tipo de dato: num
El periodo mximo, en segundos, que debe esperar el programa para continuar
con la ejecucin. Si no se presiona el botn OK en ese periodo, el programa sigue
ejecutndose en el gestor de errores, a no ser que se utilice el indicador BreakFlag
(que se documenta a continuacin). La constante ERR_TP_MAXTIME puede usarse
para comprobar si ha transcurrido ya el tiempo mximo establecido.
[\DIBreak]
Digital Input Break
Tipo de dato: signaldi
La seal digital de entrada que puede interrumpir el dilogo con el operador. Si
no se presiona el botn OK antes de que la seal cambie a 1 (o si ya tiene el valor
1), el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice
el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DIPassive]
Digital Input Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DIBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DIBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOBreak]
Digital Output Break
Tipo de dato: signaldo
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.155 UINumEntry - Introduccin de nmero de usuario
Continuacin
La seal digital de salida que puede interrumpir el dilogo con el operador. Si no
se presiona el botn OK antes de que la seal cambie a 1 (o si ya tiene el valor
1), el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice
el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOPassive]
Digital Output Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DOBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DOBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\BreakFlag]
Tipo de dato: errnum
Una variable (cambiada a 0 por el sistema antes de su uso) que contiene el cdigo
de error si se utilizan \MaxTime, \DIBreak o \DOBreak. Las constantes
ERR_TP_MAXTIME, ERR_TP_DIBREAK y ERR_TP_DOBREAK pueden usarse para
seleccionar el motivo. Si se omite esta variable opcional, se ejecuta el gestor de
errores.
Ejecucin de programas
Se muestra el cuadro de mensaje numrico, con teclado numrico, icono,
encabezado, lneas de mensaje y valores inicial, mximo y mnimo, de acuerdo
con los argumentos del programa. La ejecucin del programa espera hasta que
el usuario haya introducido un valor numrico autorizado y presione OK o hasta
que el cuadro de mensaje sea interrumpido por un tiempo lmite o una accin de
seal. El valor numrico introducido y el motivo de la interrupcin se devuelven
al programa.
El nuevo cuadro de mensaje del nivel de rutina TRAP toma el foco del cuadro de
mensaje del nivel bsico.
Datos predefinidos
!Icons:
CONST
CONST
CONST
CONST

icondata
icondata
icondata
icondata

iconNone := 0;
iconInfo := 1;
iconWarning := 2;
iconError := 3;

Contina en la pgina siguiente


1152

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.155 UINumEntry - Introduccin de nmero de usuario
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin UINumEntry.
Ejemplo 1
VAR errnum err_var;
VAR num answer;
VAR num distance;
...
answer := UINumEntry (\Header:= "BWD move on path"
\Message:="Enter the path overlap ?" \Icon:=iconInfo
\InitValue:=5 \MinValue:=0 \MaxValue:=10
\MaxTime:=60 \DIBreak:=di5 \BreakFlag:=err_var);
TEST err_var
CASE ERR_TP_MAXTIME:
CASE ERR_TP_DIBREAK:
! No operator answer distance := 5;
CASE 0
! Operator answer
distance := answer;
DEFAULT:
! Not such case defined
ENDTEST

Se muestra el cuadro de mensaje y el operador puede introducir un valor numrico


y presionar OK. El cuadro de mensaje tambin puede ser interrumpido con un
tiempo lmite o una interrupcin con una seal digital de entrada. Es posible
determinar el motivo desde el programa y tomar las acciones adecuadas.
Gestin de errores
Si no se usa el parmetro \BreakFlag, estas situaciones pueden ser gestionadas
en el gestor de errores:

Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_MAXTIME y la
ejecucin contina en el gestor de errores.

Si se activa la entrada digital (parmetro \DIBreak) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_DIBREAK y la
ejecucin contina en el gestor de errores.

Si se activa la salida digital (parmetro \DOBreak) antes de la accin del


operador, la variable de sistema ERRNO cambia a ERR_TP_DOBREAK y la
ejecucin contina en el gestor de errores.

Esta situacin slo puede ser gestionada desde el gestor de errores.

Si no hay ningn cliente, por ejemplo un FlexPendant, que se encargue de


la instruccin, la variable de sistema ERRNO cambia a ERR_TP_NO_CLIENT
y la ejecucin contina en el gestor de errores.

Si no se especifica el valor inicial (parmetro \InitValue) dentro del rango


que va desde el valor mnimo al mximo (parmetros \MinValue y
\MaxValue), la variable de sistema ERRNO cambia a ERR_UI_INITVALUE
y la ejecucin contina en el gestor de errores.
Contina en la pgina siguiente

3HAC16581-5 Revisin: L

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

2 Funciones
2.155 UINumEntry - Introduccin de nmero de usuario
Continuacin

Si el valor mnimo (parmetro \MinValue) es mayor que el valor mximo


(parmetro \MaxValue), la variable de sistema ERRNO cambia a
ERR_UI_MAXMIN y la ejecucin contina en el gestor de errores.

Si el valor inicial (parmetro \InitValue) no es un entero como se


especifica en el parmetro \AsInteger, la variable de sistema ERRNO cambia
a ERR_UI_NOTINT y la ejecucin prosigue en el gestor de errores.

Limitaciones
Evite usar un valor demasiado pequeo para el parmetro de tiempo lmite
\MaxTime si UINumEntry se ejecuta frecuentemente, por ejemplo en un bucle.
Si lo hace, puede dar lugar a un comportamiento impredecible del rendimiento del
sistema, por ejemplo la ralentizacin de la respuesta del FlexPendant.
Sintaxis
UINumEntry(
[\Header:= <expression (IN) of string>]
[Message:= <expression (IN) of string> ]
| [\MsgArray:=<array {*} (IN) of string>]
[\Wrap]
[\Icon:= <expression (IN) of icondata>]
[\InitValue:=<expression (IN) of num>]
[\MinValue:=<expression (IN) of num>]
[\MaxValue:=<expression (IN) of num>]
[\AsInteger]
[\MaxTime:= <expression (IN) of num>]
[\DIBreak:= <variable (VAR) of signaldi>]
[\DIPassive]
[\DOBreak:= <variable (VAR) of signaldo>]
[\DOPassive]
[\BreakFlag:= <var or pers (INOUT) of errnum>] )

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos de visualizacin de iconos

icondata - Datos de visualizacin de iconos


en la pgina 1208

Cuadro de mensaje de interaccin con el


usuario de tipo bsico

UIMsgBox - Cuadro de mensaje de usuario


de tipo bsico en la pgina 689

Cuadro de mensaje de interaccin con el


usuario de tipo avanzado

UIMessageBox - Cuadro de mensaje de


usuario de tipo avanzado en la pgina 1141

Ajuste de nmero de interaccin con el


usuario

UINumTune - Ajuste de nmero de usuario


en la pgina 1156

Introduccin alfanumrica de interaccin con UIAlphaEntry - Introduccin alfanumrica del


el usuario
usuario en la pgina 1110
Vista de lista de interaccin con el usuario

UIListView - Vista de lista de usuario en la


pgina 1132

Sistema conectado al FlexPendant, etc.

UIClientExist - Existe cliente de usuario en


la pgina 1116

Contina en la pgina siguiente


1154

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.155 UINumEntry - Introduccin de nmero de usuario
Continuacin
Para obtener ms informacin sobre

Consulte

Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el


FlexPendant en la pgina 593

3HAC16581-5 Revisin: L

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

2 Funciones
2.156 UINumTune - Ajuste de nmero de usuario

2.156 UINumTune - Ajuste de nmero de usuario


Utilizacin
UINumTune (User Interaction Number Tune) se usa para ajustar un valor numrico
desde un dispositivo de usuario disponible, como el FlexPendant. Se escribe un
mensaje para el operador, que a su vez ajusta un valor numrico. El valor numrico
ajustado es comprobado, autorizado y transferido de nuevo al programa.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin UINumTune.
Consulte tambin en la pgina 1160.
Ejemplo 1
VAR num flow;
...
flow := UINumTune(
\Header:="UINumTune Header"
\Message:="Tune the flow?"
\Icon:=iconInfo,
2.5,
0.1
\MinValue:=1.5
\MaxValue:=3.5);

xx0500002414

Se muestra en la pantalla del FlexPendant el cuadro de mensaje de ajuste numrico


anterior con icono, encabezado, mensaje y valores inicial, de incremento, mximo
y mnimo. El cuadro de mensaje comprueba que el operador ajusta el valor de
caudal en pasos de 0,1, empezando con el valor inicial 2,5 y dentro del rango de
valores de 1,5 .. 3.5. La ejecucin del programa espera hasta que se presione OK.
A continuacin, se devuelve el valor numrico seleccionado, que se almacena en
la variable flow.

Contina en la pgina siguiente


1156

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.156 UINumTune - Ajuste de nmero de usuario
Continuacin
Valor de retorno
Tipo de dato: num
Esta funcin devuelve el valor numrico ajustado.
Si la funcin es interrumpida por \BreakFlag, se devuelve el valor
\InitValueInitValue especificado.
Si la funcin se interrumpe desde el gestor de ERROR, no se devuelve ningn valor
de retorno en absoluto.
Argumentos
UINumTune ( [\Header] [\Message] | [\MsgArray] [\Wrap] [\Icon]
InitValue Increment [\MinValue] [\MaxValue] [\MaxTime]
[\DIBreak] [\DIPassive] [\DOBreak] [\DOPassive] [\BreakFlag]
)

[\Header]
Tipo de dato: string
El texto de ttulo que debe escribirse en la parte superior del cuadro de mensaje.
Mximo 40 caracteres.
[\Message]
Tipo de dato: string
Una lnea de texto a escribir en la pantalla. Mximo 40 caracteres.
[\MsgArray]
Message Array
Tipo de dato: string
Varias lneas de texto de una matriz a escribir en la pantalla.
Slo es posible usar uno de los parmetros, \Message o \MsgArray, en cada
momento.
El espacio mximo del diseo es de 11 lneas de 40 caracteres cada una.
[\Wrap]
Tipo de dato: switch
Si se selecciona, todas las cadenas especificadas en el argumento \MsgArray
se concatenan para formar una cadena con un solo espacio entre las distintas
cadenas individuales y distribuida en el nmero mnimo posible de lneas.
De forma predeterminada, cada una de las cadenas del argumento \MsgArray
aparece en una lnea separada en la pantalla.
[\Icon]
Tipo de dato: icondata
Define el icono a mostrar. Slo puede usarse uno de los iconos predefinidos de
tipo icondata. Consulte Datos predefinidos en la pgina 1159.
De forma predeterminada, no se usa ningn icono.
InitValue
Tipo de dato: num
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

2 Funciones
2.156 UINumTune - Ajuste de nmero de usuario
Continuacin
El valor inicial que se muestra en el cuadro de introduccin.
Increment
Tipo de dato: num
Este parmetro especifica en qu cantidad debe cambiar el valor al presionar los
botones de ms o menos.
[\MinValue]
Tipo de dato: num
El valor mnimo del valor de retorno.
[\MaxValue]
Tipo de dato: num
El valor mximo del valor de retorno.
[\MaxTime]
Tipo de dato: num
El periodo mximo, en segundos, que debe esperar el programa para continuar
con la ejecucin. Si no se presiona el botn OK en ese periodo, el programa sigue
ejecutndose en el gestor de errores, a no ser que se utilice el indicador BreakFlag
(que se documenta a continuacin). La constante ERR_TP_MAXTIME puede usarse
para comprobar si ha transcurrido ya el tiempo mximo establecido.
[\DIBreak]
Digital Input Break
Tipo de dato: signaldi
La seal digital de entrada que puede interrumpir el dilogo con el operador. Si
no se presiona el botn OK antes de que la seal cambie a 1 (o si ya tiene el valor
1), el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice
el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DIPassive]
Digital Input Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DIBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DIBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DIBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOBreak]
Digital Output Break
Tipo de dato: signaldo
La seal digital de salida que puede interrumpir el dilogo con el operador. Si no
se presiona el botn OK antes de que la seal cambie a 1 (o si ya tiene el valor
1), el programa sigue ejecutndose en el gestor de errores, a no ser que se utilice
Contina en la pgina siguiente
1158

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.156 UINumTune - Ajuste de nmero de usuario
Continuacin
el indicador BreakFlag (que se documenta a continuacin). La constante
ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\DOPassive]
Digital Output Passive
Tipo de dato: switch
Este modificador redefine el comportamiento predeterminado con el argumento
opcional DOBreak. En lugar de reaccionar cuando la seal cambia a 1 (o ya tiene
el valor 1), la instruccin debe continuar en el gestor de errores (si no se utiliza
BreakFlag) cuando la seal DOBreak cambia a 0 (o ya tiene el valor 0). La
constante ERR_TP_DOBREAK puede usarse para comprobar si esto ha ocurrido.
[\BreakFlag]
Tipo de dato: errnum
Una variable (cambiada a 0 por el sistema antes de su uso) que contiene el cdigo
de error si se utilizan \MaxTime, \DIBreak o \DOBreak. Las constantes
ERR_TP_MAXTIME, ERR_TP_DIBREAK y ERR_TP_DOBREAK pueden usarse para
seleccionar el motivo. Si se omite esta variable opcional, se ejecuta el gestor de
errores.
Ejecucin de programas
Se muestra el cuadro de mensaje de ajuste numrico con botones de ajuste +/-,
icono, encabezado, lneas de mensaje y valores inicial, de incremento, mximo y
mnimo, de acuerdo con los argumentos del programa. La ejecucin del programa
espera hasta que el usuario haya ajustado el valor numrico y presione OK o hasta
que el cuadro de mensaje sea interrumpido por un tiempo lmite o una accin de
seal. El valor numrico introducido y el motivo de la interrupcin se devuelven
al programa.
El nuevo cuadro de mensaje del nivel de rutina TRAP toma el foco del cuadro de
mensaje del nivel bsico.
Datos predefinidos
!Icons:
CONST
CONST
CONST
CONST

icondata
icondata
icondata
icondata

iconNone := 0;
iconInfo := 1;
iconWarning := 2;
iconError := 3;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

2 Funciones
2.156 UINumTune - Ajuste de nmero de usuario
Continuacin
Ms ejemplos
A continuacin aparecen ms ejemplos de la funcin UINumTune.
Ejemplo 1
VAR errnum err_var;
VAR num tune_answer;
VAR num distance;
...
tune_answer := UINumTune (\Header:=" BWD move on path"
\Message:="Enter the path overlap ?" \Icon:=iconInfo, 5, 1
\MinValue:=0 \MaxValue:=10 \MaxTime:=60 \DIBreak:=di5
\BreakFlag:=err_var);
TEST err_var
CASE ERR_TP_MAXTIME:
CASE ERR_TP_DIBREAK:
! No operator answer
distance := 5;
CASE 0:
! Operator answer
distance := tune_answer;
DEFAULT:
! No such case defined
ENDTEST

Se muestra el cuadro de ajuste de mensaje y el operador puede ajustar el valor


numrico y presionar OK. El cuadro de mensaje tambin puede ser interrumpido
con un tiempo lmite o una interrupcin con una seal digital de entrada. Es posible
determinar el motivo desde el programa y tomar las acciones adecuadas.
Gestin de errores
Si no se usa el parmetro \BreakFlag, estas situaciones pueden ser gestionadas
en el gestor de errores:

Si se alcanza el tiempo lmite (parmetro \MaxTime) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_MAXTIME y la
ejecucin contina en el gestor de errores.

Si se activa la entrada digital (parmetro \DIBreak) antes de que responda


el operador, la variable de sistema ERRNO cambia a ERR_TP_DIBREAK y la
ejecucin contina en el gestor de errores.

Si se activa la salida digital (parmetro \DOBreak) antes de la accin del


operador, la variable de sistema ERRNO cambia a ERR_TP_DOBREAK y la
ejecucin contina en el gestor de errores.

Esta situacin slo puede ser gestionada desde el gestor de errores.

Si no hay ningn cliente, por ejemplo un FlexPendant, que se encargue de


la instruccin, la variable de sistema ERRNO cambia a ERR_TP_NO_CLIENT
y la ejecucin contina en el gestor de errores.

Si no se especifica el valor inicial (parmetro \InitValue) dentro del rango


que va desde el valor mnimo al mximo (parmetros \MinValue y
\MaxValue), la variable de sistema ERRNO cambia a ERR_UI_INITVALUE
y la ejecucin contina en el gestor de errores.

Contina en la pgina siguiente


1160

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.156 UINumTune - Ajuste de nmero de usuario
Continuacin

Si el valor mnimo (parmetro \MinValue) es mayor que el valor mximo


(parmetro \MaxValue), la variable de sistema ERRNO cambia a
ERR_UI_MAXMIN y la ejecucin contina en el gestor de errores.

Limitaciones
Evite usar un valor demasiado pequeo para el parmetro de tiempo lmite
\MaxTime si UINumTune se ejecuta frecuentemente, por ejemplo en un bucle. Si
lo hace, puede dar lugar a un comportamiento impredecible del rendimiento del
sistema, por ejemplo la ralentizacin de la respuesta del FlexPendant.
Sintaxis
UINumTune(
['\'Header ':=' <expression (IN) of string>]
[Message ':=' <expression (IN) of string> ]
| ['\'MsgArray ':='<array {*} (IN) of string>]
['\'Wrap]
['\'Icon ':=' <expression (IN) of icondata>]
[InitValue ':='<expression (IN) of num>]
[Increment ':='<expression (IN) of num>]
['\'MinValue ':='<expression (IN) of num>]
['\'MaxValue ':='<expression (IN) of num>]
['\'MaxTime ':=' <expression (IN) of num>]
['\'DIBreak ':=' <variable (VAR) of signaldi>]
['\'DIPassive]
['\'DOBreak ':=' <variable (VAR) of signaldo>]
['\'DOPassive]
['\'BreakFlag ':=' <var or pers (INOUT) of errnum>] ')'

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos de visualizacin de iconos

icondata - Datos de visualizacin de iconos


en la pgina 1208

Cuadro de mensaje de interaccin con el


usuario de tipo bsico

UIMsgBox - Cuadro de mensaje de usuario


de tipo bsico en la pgina 689

Cuadro de mensaje de interaccin con el


usuario de tipo avanzado

UIMessageBox - Cuadro de mensaje de


usuario de tipo avanzado en la pgina 1141

Introduccin de nmero de interaccin con UINumEntry - Introduccin de nmero de


el usuario
usuario en la pgina 1149
Introduccin alfanumrica de interaccin con UIAlphaEntry - Introduccin alfanumrica del
el usuario
usuario en la pgina 1110
Vista de lista de interaccin con el usuario

UIListView - Vista de lista de usuario en la


pgina 1132

Sistema conectado al FlexPendant, etc.

UIClientExist - Existe cliente de usuario en


la pgina 1116

Borrado de la ventana de operador

TPErase - Borra el texto mostrado en el


FlexPendant en la pgina 593

3HAC16581-5 Revisin: L

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

2 Funciones
2.157 ValidIO - Seal de E/S vlida para su uso

2.157 ValidIO - Seal de E/S vlida para su uso


Utilizacin
ValidIO se utiliza para comprobar si la seal de E/S especificada puede utilizarse
sin ningn error en este momento.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ValidIO.
Ejemplo 1
IF ValidIO(mydosignal) SetDO mydosignal, 1;

Cambiar la seal de salida digital mydosignal a 1 si su unidad de E/S est en


funcionamiento.
Valor de retorno
Tipo de dato: bool
Devuelve TRUE si la seal es vlida y la unidad de E/S de la seal est en
funcionamiento. De lo contrario, devuelve FALSE.
Argumentos
ValidIO (Signal)

Signal
Tipo de dato: signalxx
El nombre de la seal. Debe ser del tipo signaldo, signaldi, signalgo,
signalgi, signalao o signalai.
Ejecucin de programas
Comportamiento de la ejecucin:

Comprobar si la seal de E/S es vlida

Comprobar si la unidad de E/S de la seal est en funcionamiento.

No se genera ningn mensaje de error.


Sintaxis
ValidIO (
[Signal :=] <variable (VAR) of anytype>
)

Una funcin con un valor de retorno del tipo de dato bool.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones de entrada/salida

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Seales de entrada y salida

Funcionalidad de entrada/salida en general Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S
- Principios de E/S

Contina en la pgina siguiente


1162

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.157 ValidIO - Seal de E/S vlida para su uso
Continuacin
Para obtener ms informacin sobre

Consulte

Configuracin de E/S

Manual de referencia tcnica - Parmetros


del sistema

Definir una seal de E/S con un nombre de AliasIO - Define una seal de E/S con un
alias
nombre de alias en la pgina 23

3HAC16581-5 Revisin: L

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

2 Funciones
2.158 ValToStr - Convierte un valor en una cadena

2.158 ValToStr - Convierte un valor en una cadena


Utilizacin
ValToStr (Value To String) se utiliza para convertir un valor de cualquier tipo de
dato en una cadena.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin ValToStr.
Ejemplo 1
VAR string str;
VAR pos p := [100,200,300];
str := ValToStr(p);

Se asigna a la variable str el valor "[100,200,300]".


Ejemplo 2
str := ValToStr(TRUE);

Se asigna a la variable str el valor "TRUE".


Ejemplo 3
str := ValToStr(1.234567890123456789);

Se asigna a la variable str el valor "1.23456789012346".


Ejemplo 4
VAR num numtype:=1.234567890123456789;
str := ValToStr(numtype);

Se asigna a la variable str el valor "1.23457".


Ejemplo 5
VAR dnum dnumtype:=1.234567890123456789;
str := ValToStr(dnumtype);

Se asigna a la variable str el valor "1.23456789012346".


Valor de retorno
Tipo de dato: string
El valor se convierte en una cadena con un formato estndar de RAPID. Esto
significa en principio 6 dgitos significativos. Un valor literal interpretado como un
valor dnum (consulte el ejemplo 3) y dnum variables (consulte el ejemplo 5) aunque
tiene 15 dgitos significativos.
Si la cadena resultante es demasiado larga, se genera un error de tiempo de
ejecucin.
Argumentos
ValToStr ( Val )

Val
Value
Contina en la pgina siguiente
1164

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.158 ValToStr - Convierte un valor en una cadena
Continuacin
Tipo de dato: anytype
Un valor de cualquier tipo de dato. Puede usar todos los tipos de datos de valor
con estructura atmica o de registro, componente de registro, matriz o elemento
de matriz.
Sintaxis
ValToStr(
[ Val := ] <expression (IN) of anytype>
)

Una funcin con un valor de retorno del tipo de dato string.


Informacin relacionada
Para obtener ms informacin Consulte
sobre
Funciones para cadenas de carac- Technical reference manual - RAPID overview, seccin
teres
Resumen sobre RAPID - Funciones para cadenas de
caracteres
Definicin de cadena de caracte- string - Cadenas de caracteres en la pgina 1287
res
Valores de cadena de caracteres Technical reference manual - RAPID overview, seccin
Caractersticas bsicas - Elementos bsicos

3HAC16581-5 Revisin: L

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

2 Funciones
2.159 VectMagn - Magnitud de un vector pos

2.159 VectMagn - Magnitud de un vector pos


Utilizacin
VectMagn (Vector Magnitude)se utiliza para calcular la magnitud de un vector pos
.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos de la funcin VectMagn.
Ejemplo 1

xx0500002446

Un vector A puede escribirse como la suma de sus componentes en las tres


direcciones ortogonales:
A=Axx+Ayy+Ayy
La magnitud de A es:

j A j = Ax2 + Ay2 + Az2


El vector se describe mediante el tipo de dato pos y la magnitud mediante el tipo
de dato num:
VAR num magnitude;
VAR pos vector;
...
vector := [1,1,1];
magnitude := VectMagn(vector);

Valor de retorno
Tipo de dato: num
La magnitud del vector (tipo de dato pos).
Argumentos
VectMagn (Vector)

Contina en la pgina siguiente


1166

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

2 Funciones
2.159 VectMagn - Magnitud de un vector pos
Continuacin
Vector
Tipo de dato: pos
El vector descrito mediante el tipo de dato pos.
Sintaxis
VectMagn'('
[Vector ':='] <expression (IN) of pos>
')'

Una funcin con un valor de retorno del tipo de dato num.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones y funciones matemticas

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Matemticas

3HAC16581-5 Revisin: L

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

Esta pgina se ha dejado vaca intencionadamente

3 Tipos de datos
3.1 aiotrigg - Condicin de disparo con E/S analgica

3 Tipos de datos
3.1 aiotrigg - Condicin de disparo con E/S analgica
Utilizacin
aiotrigg (Analog I/O Trigger) se utiliza para definir la condicin que genera una
interrupcin para una seal de entrada o salida analgica.
Descripcin
Los datos de tipo aiotrigg definen la forma en que se usarn un umbral mximo
y un umbral mnimo para determinar si el valor lgico de una seal analgica
cumple las condiciones para generar una interrupcin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato aiotrigg.
Ejemplo 1
VAR intnum sig1int;
PROC main()
CONNECT sig1int WITH iroutine1;
ISignalAI \Single, ai1, AIO_BETWEEN, 1.5, 0.5, 0, sig1int;

Solicita una interrupcin que debe producirse la primera vez que el valor lgico
de la seal analgica de entrada ai1 se encuentre entre 0.5 y 1.5. En este caso,
se realiza una llamada a la rutina TRAP iroutine1 .
Datos predefinidos
Se han predefinido las constantes simblicas siguientes del tipo de dato aiotrigg
. Puede usarlas para especificar unas condiciones para las instrucciones
ISignalAI y ISignalAO.
Valor

Constante simblica Comentario

AIO_ABOVE_HIGH

La seal genera interrupciones si se encuentra por encima


del valor mximo especificado

AIO_BELOW_HIGH

La seal genera interrupciones si se encuentra por debajo


del valor mximo especificado

AIO_ABOVE_LOW

La seal genera interrupciones si se encuentra por encima


del valor mnimo especificado

AIO_BELOW_LOW

La seal genera interrupciones si se encuentra por debajo


del valor mnimo especificado

AIO_BETWEEN

La seal genera interrupciones si se encuentra entre los


valores mnimo y mximo especificados

AIO_OUTSIDE

La seal genera interrupciones si se encuentra por debajo


del valor mnimo especificado o por encima del valor mximo especificado

AIO_ALWAYS

La seal siempre genera interrupciones

Caractersticas
aiotrigg es un tipo de dato de alias de num y por tanto hereda sus caractersticas.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.1 aiotrigg - Condicin de disparo con E/S analgica
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Interrupcin a partir de una seal analgi- ISignalAI - Interrupciones a partir de una seal
ca de entrada
analgica de entrada en la pgina 180
Interrupcin a partir de una seal analgi- ISignalAO - Interrupciones a partir de una seal
ca de salida
analgica de salida en la pgina 190
Tipos de datos en general, tipos de datos Technical reference manual - RAPID overview,
de alias
seccin Caractersticas bsicas - Tipos de datos

1170

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.2 bool - Valores lgicos

3.2 bool - Valores lgicos


Utilizacin
bool se utiliza con valores lgicos (verdadero/falso).
Descripcin
El valor de un dato de tipo bool puede ser TRUE (verdadero) o FALSE (falso).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato bool .
Ejemplo 1
flag1 := TRUE;

Se asigna al flag el valor TRUE (verdadero).


Ejemplo 2
VAR bool highvalue;
VAR num reg1;
...
highvalue := reg1 > 100;

highvalue recibe el valor TRUE si reg1 es mayor que 100; de lo contrario, se


asigna FALSE.
Ejemplo 3
IF highvalue Set do1;

La seal do1 se activa si highvalue es TRUE.


Ejemplo 4
highvalue := reg1 > 100;
mediumvalue := reg1 > 20 AND NOT highvalue;

mediumvalue recibe el valor TRUE si reg1 est entre 20 y 100.


Informacin relacionada
Para obtener ms informacin sobre

Consulte

Expresiones lgicas

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Expresiones

Operaciones con valores lgicos

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Expresiones

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.3 btnres - Datos de resultado de pulsador

3.3 btnres - Datos de resultado de pulsador


Utilizacin
btnres (button result) se usa para representar la seleccin de usuario del pulsador
en un dispositivo de usuario, por ejemplo el FlexPendant.
Descripcin
Las constantes de btnres se han diseado para su uso al comprobar el valor de
resultado de la instruccin UIMsgBox y el valor de retorno desde las funciones
UIMessageBox y UIListView.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato btnres.
Ejemplo 1
VAR btnres answer;
UIMsgBox "More ?" \Buttons:=btnYesNo \Result:= answer;
IF answer= resYes THEN
...
ELSEIF answer =ResNo THEN
...
ENDIF

La enumeracin de botn estndar btnYesNo generar un pulsador S y un


pulsador No en la interfaz de usuario. La seleccin del usuario se almacenar en
la variable answer.
Datos predefinidos
Se han predefinido en el sistema las constantes siguientes del tipo de dato btnres.
Valor

Constantes

Respuesta de botn

resUnkwn

Resultado desconocido

resOK

Correcto

resAbort

Anular

resRetry

Reintentar

resIgnore

Omitir

resCancel

Cancelar

resYes

resNo

No

Es posible trabajar con botones definidos por el usuario que responden a las
funciones UIMessageBox y UIListView.
Caractersticas
btnres es un tipo de dato de alias de num y por tanto hereda sus caractersticas.

Contina en la pgina siguiente


1172

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.3 btnres - Datos de resultado de pulsador
Continuacin
Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Cuadro de mensaje de interaccin UIMsgBox - Cuadro de mensaje de usuario de tipo
con el usuario
bsico en la pgina 689
Cuadro de mensaje de interaccin UIMessageBox - Cuadro de mensaje de usuario de
con el usuario
tipo avanzado en la pgina 1141
Vista de lista de interaccin con el
usuario

UIListView - Vista de lista de usuario en la pgina 1132

Datos de botn de tipo de dato de


alias

buttondata - Datos de pulsador en la pgina 1175

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.4 busstate - Estado de bus de E/S

3.4 busstate - Estado de bus de E/S


Utilizacin
busstate se utiliza para representar el estado momentneo de un bus de E/S.
Descripcin
Las constantes de busstate se han diseado para usarlas al comprobar el valor
de retorno de la instruccin IOBusState.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico del tipo de dato busstate.
Ejemplo 1
VAR busstate bstate;
IOBusState "IBS", bstate \Phys;
TEST bstate
CASE IOBUS_PHYS_STATE_RUNNING:
! Possible to access some signal on the IBS bus
DEFAULT:
! Actions for not up and running IBS bus
ENDTEST

Datos predefinidos
Las constantes simblicas predefinidas del tipo de dato busstate pueden verse
en la instruccin IOBusState.
Caractersticas
busstate es un tipo de dato de alias de num y por tanto hereda sus caractersticas.
Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Obtencin del estado actual de un
bus de E/S

IOBusState - Obtener el estado actual de un bus de


E/S en la pgina 164

Instrucciones de entrada/salida

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Seales de entrada y
salida

Funcionalidad de entrada/salida en Technical reference manual - RAPID overview, secgeneral


cin Principios de movimiento y E/S - Principios de
E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

1174

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.5 buttondata - Datos de pulsador

3.5 buttondata - Datos de pulsador


Utilizacin
buttondata se usa para representar una combinacin de pulsadores estndar
para su visualizacin en un dispositivo de usuario, por ejemplo en el FlexPendant.
Descripcin
Las constantes buttondata se utilizan para representar los pulsadores de
respuesta en la instruccin UIMsgBox y las funciones UIMessageBox y
UIListView.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato buttondata.
Ejemplo 1
VAR btnres answer;
UIMsgBox "More ?" \Buttons:=btnYesNo \Result:= answer;
IF answer= resYes THEN
...
ELSE
...
ENDIF

La enumeracin de botn estndar btnYesNo generar un pulsador S y un


pulsador No.
Datos predefinidos
Se han predefinido en el sistema las constantes siguientes del tipo de dato
buttondata.
Valor

Constantes

Botn mostrado

-1

btnNone

Ningn botn

btnOK

Correcto

btnAbrtRtryIgn

Anular, Reintentar y Omitir

btnOKCancel

Aceptar y Cancelar

btnRetryCancel

Reintentar y Cancelar

btnYesNo

S y No

btnYesNoCancel

S, No y Cancelar

Es posible mostrar botones definidos por el usuario con las funciones


UIMessageBox y UIListView.
Caractersticas
buttondata es un tipo de dato de alias de num y por tanto hereda sus
caractersticas.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.5 buttondata - Datos de pulsador
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Cuadro de mensaje de interaccin con el UIMsgBox - Cuadro de mensaje de usuario de


usuario
tipo bsico en la pgina 689
Cuadro de mensaje de interaccin con el UIMessageBox - Cuadro de mensaje de usuario
usuario
de tipo avanzado en la pgina 1141
Vista de lista de interaccin con el usuario UIListView - Vista de lista de usuario en la pgina 1132
Resultado de botn de tipo de dato de
alias

btnres - Datos de resultado de pulsador en la


pgina 1172

Tipos de datos en general, tipos de datos Technical reference manual - RAPID overview,
de alias
seccin Caractersticas bsicas - Tipos de datos

1176

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.6 byte - Valores enteros de 0 a 255

3.6 byte - Valores enteros de 0 a 255


Utilizacin
byte se utiliza con valores decimales (de 0 a 255), acorde con el rango que permite
un byte.
Este tipo de dato se utiliza junto con instrucciones y funciones dedicadas a la
manipulacin de bits y la conversin.
Descripcin
Los datos de tipo byte representan valores de byte enteros.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato byte.
Ejemplo 1
VAR byte data1 := 130;

Definicin de una variable data1 con el valor decimal 130.


Ejemplo 2
CONST num parity_bit := 8;
VAR byte data1 := 130;
BitClear data1, parity_bit;

El bit nmero 8 (parity_bit) de la variable data1 cambia a 0, con lo que el


contenido de la variable data1 cambia de 130 a 2 (en su valor decimal).
Gestin de errores
Si un argumento de tipo byte tiene un valor que queda fuera del rango de 0 a 255,
se genera un error al ejecutar el programa.
Caractersticas
byte es un tipo de dato de alias de num y por tanto hereda sus caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipos de datos de alias

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Tipos de datos

Funciones de bits

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Funciones de
bits

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.7 clock - Medicin de tiempo

3.7 clock - Medicin de tiempo


Utilizacin
Clock se utiliza para medir tiempo. Una variable clock funciona como un
cronmetro que se usa para temporizaciones.
Descripcin
Los datos de tipo clock almacenan una medicin de tiempo en segundos y tienen
una exactitud de 0,001 segundos.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato clock.
Ejemplo 1
VAR clock myclock;
ClkReset myclock;

Se declara y pone a cero el reloj myclock,. Antes de usar ClkReset, ClkStart,


ClkStop y ClkRead, es necesario declarar una variable de tipo clock en el
programa.
Limitaciones
El tiempo mximo que puede almacenar una variable de tipo clock es de
aproximadamente 49 das (4.294.967 segundos). Las instrucciones ClkStart,
ClkStop y ClkRead informan de los desbordamientos del reloj en el caso poco
probable de que se produzcan.
Las variables clock deben declararse como variables VAR, no como variables
persistent.
Caractersticas
clock es un tipo de dato sin valor y no puede usarse en operaciones basadas en
valores.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de instrucciones de hora y fecha Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Sistema y
tiempo
Caractersticas de los tipos de datos sin
valores

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Tipos de datos

1178

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.8 confdata - Datos de configuracin del robot

3.8 confdata - Datos de configuracin del robot


Utilizacin
confdata se utiliza para definir las configuraciones de ejes del robot.
Descripcin
Todas las posiciones del robot se definen y almacenan mediante coordenadas
rectangulares. A la hora de calcular las posiciones correspondientes de los ejes,
existen con frecuencia dos o ms soluciones posibles. Esto significa que el robot
puede alcanzar la misma posicin, es decir, situar la herramienta en la misma
posicin y con la misma orientacin, a partir de distintas posiciones o
configuraciones de los ejes del robot.
Algunos tipos de robots utilizan mtodos numricos iterativos para determinar las
posiciones de los ejes. En estos casos, los parmetros de configuracin puede
usarse para definir valores de eje iniciales adecuados que puede usar el proceso
iterativo.
Para denotar de forma inequvoca una de estas configuraciones posibles, la
configuracin del robot se especifica mediante cuatro valores de eje. En el caso
de un eje de rotacin, el valor define el cuadrante actual para el eje del robot. Los
cuadrantes tienen los nmeros 0, 1, 2, etc. (tambin pueden tener un nmero
negativo). El nmero de cuadrante est conectado al ngulo actual del eje. Para
cada eje, el cuadrante 0 es el primer cuarto de revolucin, de 0 a 90, en sentido
positivo a partir de la posicin cero. El cuadrante 1 es el siguiente cuarto de
revolucin, de 90 a 180, y as en adelante. El cuadrante -1 es el cuarto de
revolucin de 0 a (-90), etc. (consulte la figura siguiente).
La figura muestra los cuadrantes de configuracin para el eje 6.

xx0500002398

En el caso de un eje lineal, el valor define el intervalo en metros del eje del robot.
Para cada eje, el valor 0 significa una posicin entre 0 y 1 metro y 1 significa una
posicin entre 1 y 2 metros. En el caso de los valores negativos, -1 significa una
posicin entre -1 y 0 metros, etc. (consulte la figura siguiente).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.8 confdata - Datos de configuracin del robot
Continuacin
La figura siguiente muestra los valores de configuracin para los ejes lineales.
-3.0
-3

0.0

-1.0

-2.0
-2

-1

1.0
0

2.0
1

3.0
2

x (m)

Valor de configuracin

xx0500002399_es

Datos de configuracin para los robots IRB 140, 6600, 6650, 7600
Existen tres singularidades dentro del rea de trabajo del robot (consulte Manual
de referencia de RAPID - Descripcin general de RAPID, seccin Principios de
movimiento y E/S - Singularidades).

cf1 es el nmero de cuadrante del eje 1.

cf4 es el nmero de cuadrante del eje 4.

cf6 es el nmero de cuadrante del eje 6.

cfx se utiliza para seleccionar una de las ocho configuraciones posibles del robot,
numeradas de 0 a 7. En la tabla siguiente se indican estas configuraciones en
cuanto a cmo se posiciona el robot respecto de las tres singularidades.
cfx

Centro de mueca respecto Centro de mueca respecto ngulo del eje 5


del eje 1
del brazo interior

Delante de

Delante de

Positivo

Delante de

Delante de

Negativo

Delante de

Detrs

Positivo

Delante de

Detrs

Negativo

Detrs

Delante de

Positivo

Detrs

Delante de

Negativo

Detrs

Detrs

Positivo

Detrs

Detrs

Negativo

En las imgenes siguientes se muestran ejemplos de cmo se consiguen la misma


posicin y la misma orientacin de la herramienta con las ocho configuraciones
siguientes.

Contina en la pgina siguiente


1180

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.8 confdata - Datos de configuracin del robot
Continuacin
En la figura siguiente se muestra un ejemplo de las configuraciones de robot 0 y
1. Observe los distintos signos del ngulo del eje 5.
Axis 1

Lower arm

ABB

Lower arm

ABB

Axis 1

beta

-beta

Wrist center

Wrist center

cfx = 1

cfx = 0
xx0500002400_es

En la figura siguiente se muestra un ejemplo de las configuraciones de robot 2 y


3. Observe los distintos signos del ngulo del eje 5.
Eje 1

Eje 1

-beta
ABB

ABB

beta

Wrist center

Wrist center

Lower arm

Lower arm

cfx = 3

cfx = 2
xx0500002401_es

En la figura siguiente se muestra un ejemplo de las configuraciones de robot 4 y


5. Observe los distintos signos del ngulo del eje 5.

Eje 1

Wrist center

Eje 1

Wrist center

beta

AB

AB

-beta

Lower arm

cfx = 4

Lower arm

cfx = 5

xx0500002402_es

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.8 confdata - Datos de configuracin del robot
Continuacin
En la figura siguiente se muestra un ejemplo de las configuraciones de robot 6 y
7. Observe los distintos signos del ngulo del eje 5.

Eje 1

Eje 1

Lower arm

Lower arm

beta

ABB

Wrist center

cfx = 6

-beta

ABB

Wrist center

cfx = 7

xx0500002403_es

Datos de configuracin para el robot IRB 340


Slo se utiliza el parmetro de configuracin cf4.
Datos de configuracin para los robots IRB 260, 660
Slo se utiliza el parmetro de configuracin cf6.
Datos de configuracin para los robots IRB 1400, 2400, 3400, 4400, 6400
Slo se utilizan los parmetros de configuracin cf1, cf4 y cf6.
Datos de configuracin para el robot IRB 5400
Se utilizan los cuatro parmetros de configuracin. Se utilizan cf1, cf4, cf6 para
los ejes 1, 4 y 6 respectivamente y cfx para el eje 5.
Datos de configuracin para los robots IRB 5404, 5406
Estos robots tienen dos ejes de rotacin (brazos 1 y 2) y un eje lineal (brazo 3).

cf1 se utiliza para el eje de rotacin 1

cfx se utiliza para el eje de rotacin 2

cf4 y cf6 no se utilizan

Datos de configuracin para los robots IRB 5413, 5414, 5423


Estos robots tienen dos ejes lineales (brazos 1 y 2) y uno o dos ejes de rotacin
(brazos 4 y 5) (el brazo 3 est bloqueado).

cf1 se utiliza para el eje lineal 1

cfx se utiliza para el eje lineal 2

cf4 se utiliza para el eje de rotacin 4

cf6 no se utiliza

Datos de configuracin para el robot IRB 840


Este robot tiene tres ejes lineales (brazos 1, 2 y 3) y un eje de rotacin (brazo 4).

cf1 se utiliza para el eje lineal 1

Contina en la pgina siguiente


1182

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.8 confdata - Datos de configuracin del robot
Continuacin

cfx se utiliza para el eje lineal 2

cf4 se utiliza para el eje de rotacin 4

cf6 no se utiliza

Debido a que la estructura del robot es principalmente lineal, el uso de un valor


correcto de los parmetros de configuracin c1, cx tiene menos importancia.
Componentes
cf1
Tipo de dato: num
Eje de rotacin:
El cuadrante actual del eje 1, expresado como un nmero entero positivo o negativo.
Eje lineal:
El intervalo actual en metros del eje 1, expresado como un nmero entero positivo
o negativo.
cf4
Tipo de dato: num
Eje de rotacin:
El cuadrante actual del eje 4, expresado como un nmero entero positivo o negativo.
Eje lineal:
El intervalo actual en metros del eje 4, expresado como un nmero entero positivo
o negativo.
cf6
Tipo de dato: num
Eje de rotacin:
El cuadrante actual del eje 6, expresado como un nmero entero positivo o negativo.
Eje lineal:
El intervalo actual en metros del eje 6, expresado como un nmero entero positivo
o negativo.
cfx
Tipo de dato: num
Eje de rotacin:
En el robot IRB140, la configuracin actual del robot, expresada como un entero
de 0 a 7.
En el caso del robot IRB 5400, el cuadrante actual del eje 5, expresado como un
nmero entero positivo o negativo.
En otros robots, el cuadrante actual del eje 2, expresado como un nmero entero
positivo o negativo.
Eje lineal:
El intervalo actual en metros del eje 2, expresado como un nmero entero positivo
o negativo.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.8 confdata - Datos de configuracin del robot
Continuacin
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato confdata.
Ejemplo 1
VAR confdata conf15 := [1, -1, 0, 0]

Una configuracin de robot conf15 para el tipo de robot IRB 5400 se define de la
forma siguiente:

La configuracin del eje 1 del robot es el cuadrante 1, es decir, de 90 a 180.

La configuracin del eje 4 del robot es el cuadrante -1, es decir, de -0 a


(-90).

La configuracin del eje 6 del robot es el cuadrante 0, es decir, de 0 a 90.

La configuracin del eje 5 del robot es el cuadrante 0, es decir, de 0 a 90.

Estructura
< dataobject of confdata >
< cf1 of num >
< cf4 of num >
< cf6 of num >
< cfx of num >

Informacin relacionada
Para obtener ms informacin sobre Consulte
Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Sistemas de
coordenadas

Manejo de datos de configuracin

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Configuracin
del robot

Datos de posicin

robtarget - Datos de posicin en la pgina 1266

1184

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.9 corrdescr - Descriptor de generador de correcciones

3.9 corrdescr - Descriptor de generador de correcciones


Utilizacin
corrdescr (Correction generator descriptor) se utiliza desde los generadores de
correcciones. Un generador de correcciones aade offsets geomtricos al sistema
de coordenadas de la trayectoria.
Descripcin
Los datos de tipo corrdescr contienen una referencia a un generador de
correcciones.
La conexin a un generador de correcciones se realiza mediante la instruccin
CorrCon y el descriptor (la referencia al generador de correcciones) puede usarse
para generar offsets geomtricos en el sistema de coordenadas de la trayectoria,
con ayuda de la instruccin CorrWrite.
Los offsets proporcionados anteriormente pueden ser eliminados mediante la
desconexin de un generador de correcciones con la instruccin CorrDiscon.
Es posible eliminar todos los generadores de correcciones conectados, mediante
la instruccin CorrClear.
La funcin CorrRead devuelve la suma de todos los offsets suministrados hasta
ese momento (incluye todos los generadores de correcciones que estn
conectados).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato corrdescr.
Ejemplo 1
VAR corrdescr id;
VAR pos offset;
...
CorrCon id;
offset := [1, 2 ,3];
CorrWrite id, offset;

La conexin al generador de correcciones se realiza con la instruccin CorrCon.


Se hace referencia a l con el descriptor id. A continuacin, la entrega de los
offsets al generador de correcciones (con la referencia id) se realiza con la
instruccin CorrWrite.
Caractersticas
corrdescr es un tipo de dato sin valor.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Conexin con un generador de correccio- CorrCon - Establece una conexin con un genenes
rador de correcciones en la pgina 75
Desconexin de un generador de correc- CorrDiscon - Cierra la conexin con un generaciones
dor de correcciones en la pgina 80

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.9 corrdescr - Descriptor de generador de correcciones
Continuacin
Para obtener ms informacin sobre

Consulte

Escritura en un generador de correcciones CorrWrite - Escribe en un generador de correcciones en la pgina 81


Lectura de los offsets totales actuales

CorrRead - Lee los offsets totales actuales en


la pgina 860

Eliminacin de todos los generadores de CorrClear - Elimina todos los generadores de


correcciones
correcciones en la pgina 74
Caractersticas de los tipos de datos sin Technical reference manual - RAPID overview,
valor
seccin Caractersticas bsicas - Tipos de datos

1186

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.10 datapos - Inclusin de un bloque para un objeto de datos

3.10 datapos - Inclusin de un bloque para un objeto de datos


Utilizacin
datapos es el bloque de inclusin de un objeto de datos (dato interno del sistema)
recuperados con la funcin GetNextSym.
Descripcin
Los datos del tipo datapos contienen informacin acerca de dnde est definido
un objeto determinado dentro del sistema Se utilizan con las instrucciones
GetDataVal y SetDataVal.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato datapos.
Ejemplo 1
VAR datapos block;
VAR string name;
VAR bool truevar:=TRUE;
...
SetDataSearch "bool" \Object:="my.*" \InMod:="mymod"\LocalSym;
WHILE GetNextSym(name,block) DO
SetDataVal name\Block:=block,truevar;
ENDWHILE

Esta sesin cambia a TRUE todos los objetos de datos locales de tipo bool cuyo
nombre comience con my en el mdulo mymod.
Caractersticas
datapos es un tipo de dato sin valor.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin de un conjunto de smbolos en SetDataSearch - Definir el conjunto de smbolos


una sesin de bsqueda
de una secuencia de bsqueda en la pgina 462
Obtencin del siguiente smbolo coinciden- GetNextSym - Obtiene el siguiente smbolo
te
coincidente en la pgina 917
Obtencin del valor de un objeto de datos GetDataVal - Obtiene el valor de un objeto de
datos en la pgina 115
Asignacin del valor de un objeto de datos SetDataVal - Establece el valor de un objeto de
datos en la pgina 466
Asignacin del valor de varios objetos

SetAllDataVal - Establece un valor en todos los


objetos de datos de un conjunto definido en la
pgina 458

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.11 dionum - Valores digitales (0 - 1)

3.11 dionum - Valores digitales (0 - 1)


Utilizacin
dionum(digital input output numeric) se utiliza para valores digitales (0 1).
Este tipo de dato se utiliza junto con instrucciones y funciones dedicadas a la
gestin de seales digitales de entrada o salida.
Descripcin
Los datos del tipo dionum representan los valores digitales 0 1.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato dionum.
Ejemplo 1
CONST dionum close := 1;
SetDO grip1, close;

Definicin de la constante close con el valor 1. La seal grip1 cambia al valor


close, es decir 1.
Datos predefinidos
Las constantes high, low, y edge estn predefinidas en el mdulo de sistema
base.sys:
CONST dionum low:=0;
CONST dionum high:=1;
CONST dionum edge:=2;
Las constantes low y high se han diseado para instrucciones de E/S.
Edge puede usarse junto con las instrucciones de interrupciones ISignalDI y
ISignalDO.
Caractersticas
dionum es un tipo de dato de alias de num y por tanto hereda sus caractersticas.
Informacin relacionada
Para obtener ms informacin sobre Consulte
Resumen de instrucciones de entrada Technical reference manual - RAPID overview,
y salida
seccin Resumen sobre RAPID - Seales de entrada y salida
Configuracin de E/S

Manual de referencia tcnica - Parmetros del


sistema

Tipos de datos de alias

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Tipos de datos

1188

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.12 dir - Estructura de directorio de archivos

3.12 dir - Estructura de directorio de archivos


Utilizacin
dir (directory) se utiliza para recorrer estructuras de directorios.
Descripcin
Los datos del tipo dir contienen una referencia a un directorio de un disco o una
red. Pueden conectarse al directorio fsico mediante la instruccin OpenDir y
utilizarse a continuacin para operaciones de lectura y escritura.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato dir.
Ejemplo 1
PROC lsdir(string dirname)
VAR dir directory;
VAR string filename;
OpenDir directory, dirname;
WHILE ReadDir(directory, filename) DO
TPWrite filename;
ENDWHILE
CloseDir directory;
ENDPROC

Este ejemplo imprime los nombres de todos los archivos o subdirectorios que se
encuentran dentro del directorio especificado.
Caractersticas
dir es un tipo de dato sin valor y no puede usarse en operaciones basadas en
valores.
Informacin relacionada
Para obtener ms informacin Consulte
sobre
Apertura de un directorio

OpenDir - Abre un directorio en la pgina 302

Creacin de un directorio

MakeDir - Crea un nuevo directorio en la pgina 227

Lectura de un directorio

ReadDir - Lee la siguiente entrada de un directorio en la


pgina 1016

Cierre de un directorio

CloseDir - Cierra un directorio en la pgina 60

Eliminacin de un directorio

RemoveDir - Elimina un directorio en la pgina 377

Eliminacin de un archivo

RemoveFile - Elimina un archivo en la pgina 379

Cambio del nombre de un archi- RenameFile - Cambia el nombre de un archivo en la pgivo


na 380
Comprobacin del tipo del archi- IsFile - Comprobar el tipo de un archivo en la pgina 944
vo

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.13 dnum - Valores numricos dobles

3.13 dnum - Valores numricos dobles


Utilizacin
dnum se utiliza para valores numricos, por ejemplo contadores. Es capaz de
contener valores enteros mayores que num pero sus caractersticas y funciones
son las mismas que las de num.
Descripcin
El valor del tipo de dato dnum puede ser:

Un entero, por ejemplo -5

Un nmero con decimales, por ejemplo 3,45

Tambin puede escribirse de forma exponencial, por ejemplo 2E3 (= 2*10^3 =


2.000), 2,5E-2 (= 0,025).
Los enteros entre -4503599627370496-4503599627370496 y +4503599627370496
se almacenan siempre como enteros exactos.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato dnum.
Ejemplo 1
VAR dnum reg1;
...
reg1:=1000000;

reg1 recibe el valor 1000000.


Ejemplo 2
VAR dnum hex;
Var dnum bin;
VAR dnum oct;
! Hexadecimal representation of decimal value 4294967295
hex := 0xFFFFFFFF;
! Binary representation of decimal value 255
bin := 0b11111111;
! Octal representation of decimal value 255
oct := 0o377;

Ejemplo 3
VAR dnum a:=0;
VAR dnum b:=0;
a := 10 DIV 3;
b := 10 MOD 3;

Divisin entera en la que se asigna un entero a (=3) y se asigna a b el resto (=1).


Limitaciones
Los valores literales entre -4503599627370496 y 4503599627370496 asignados a
una variable dnum se almacenan como enteros exactos.
Si un valor literal que ha sido interpretado como un valor num es asignado o usado
como un valor dnum, es convertido automticamente a dnum.
Contina en la pgina siguiente
1190

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.13 dnum - Valores numricos dobles
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Valores numricos con el tipo de datos num num - Valores numricos en la pgina 1234
Expresiones numricas

Manual de referencia tcnica - Descripcin


general de RAPID, seccin Programacin
bsica en RAPID

Operaciones con valores numricos

Manual de referencia tcnica - Descripcin


general de RAPID, seccin Programacin
bsica en RAPID

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.14 errdomain - Dominio de error

3.14 errdomain - Dominio de error


Utilizacin
errdomain (error domain) se utiliza para especificar un dominio de error.
Descripcin
Los datos de tipo errdomain representan el dominio en el que se ha registrado
un error, una advertencia o un cambio de estado.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato errdomain.
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 nmero


y el tipo del error se almacenan en las variables adecuadas.
Datos predefinidos
Puede usar las constantes predefinidas siguientes para especificar un dominio de
error.
Nombre

Dominio del error

Valor

COMMON_ERR

Todos los dominios de error y de cambios de


estado

OP_STATE

Cambio de estado operativo

SYSTEM_ERR

Errores de sistema

HARDWARE_ERR

Errores de hardware

PROGRAM_ERR

Errores de programa

MOTION_ERR

Errores de movimiento

OPERATOR_ERR

Errores de operador. Obsoleto, ya no se usa.

IO_COM_ERR

Errores de E/S y comunicacin

USER_DEF_ERR

Errores definidos por el usuario (elevados por


RAPID)

OPTION_PROD_ERR

Errores de productos opcionales. Obsoleto, ya


no se usa.

PROCESS_ERR

Errores de proceso

11

CFG_ERR

Error de configuracin

12

Contina en la pgina siguiente


1192

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.14 errdomain - Dominio de error
Continuacin
Caractersticas
errdomain es un tipo de dato de alias de num y por tanto hereda sus
caractersticas.
Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Solicitud de una interrupcin para IError - Solicita una interrupcin para errores en la pgierrores
na 132
Nmeros de errores

Operating manual - Trouble shooting-IRC5

Tipos de datos de alias

Technical reference manual - RAPID overview, seccin


Caractersticas bsicas - Tipos de datos

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.15 errnum - Nmero de error

3.15 errnum - Nmero de error


Utilizacin
errnum se utiliza para describir todos los errores recuperables (no fatales) que
se producen durante la ejecucin del programa, como por ejemplo, la divisin por
cero.
Descripcin
Si el robot detecta un error durante la ejecucin del programa, es posible resolverlo
con el gestor de errores de la rutina. Algunos ejemplos de estos errores es la
existencia de valores demasiado altos y la divisin por cero. Por tanto, se asignan
valores diferentes a la variable de sistema ERRNO, del tipo type errnum, en funcin
de la naturaleza de un error. El gestor de errores puede ser capaz de corregir un
error leyendo el contenido de esta variable, tras lo cual la ejecucin del programa
puede continuar de la forma adecuada.
Los errores tambin pueden crearse desde el propio programa mediante la
instruccin RAISE. Este tipo concreto de error puede detectarse en el gestor de
errores mediante la especificacin de un nmero de error (de 0 a 90 o reservado
mediante la instruccin BookErrNo) como argumento de RAISE.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato errnum.
Ejemplo 1
reg1 := reg2 / reg3;
...
ERROR
IF ERRNO = ERR_DIVZERO THEN
reg3 := 1;
RETRY;
ENDIF

Si reg3 = 0, el robot detecta un error cuando se realiza la divisin. Sin embargo,


es posible detectar y corregir el error mediante la asignacin del valor 1 a reg3.
A continuacin, puede realizarse de nuevo la divisin y proseguir con la ejecucin
del programa.
Ejemplo 2
CONST errnum machine_error := 1;
...
IF di1=0 RAISE machine_error;
...
ERROR
IF ERRNO=machine_error RAISE;

Se produce un error en una mquina (lo cual se detecta a travs de la seal de


entrada di1). Se salta al gestor de errores de la rutina que, a su vez, llama al gestor
de errores de la rutina desde la que se llam a la rutina actual, que es posiblemente
el lugar en el que se puede resolver el error. La constante machine_error se
utiliza para informar al gestor de errores de qu tipo exacto de error se trata.
Contina en la pgina siguiente
1194

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.15 errnum - Nmero de error
Continuacin
Datos predefinidos
Puede usar la variable de sistema ERRNO para obtener el ltimo error que se ha
producido. Existen varias constantes predefinidas que puede usar para determinar
qu tipo de error se ha producido.
Nombre

Causa del error

ERR_ACC_TOO_LOW

Se ha especificado una aceleracin o deceleracin


demasiado baja en las instrucciones PathAccLim o
WorldAccLim

ERR_ALIASIO_DEF

El FromSignal no est definido en la configuracin


de E/S ni ToSignal est declarado en el programa de
RAPID ni definido en la configuracin de E/S. Instruccin AliasIO

ERR_ALIASIO_TYPE

Los tipos de seales de los argumentos FromSignal


y ToSignal no son el nombre de la seal (signalx).
Instruccin AliasIO.

ERR_ALRDYCNT

La variable de interrupcin ya est vinculada a una


rutina TRAP

ERR_ALRDY_MOVING

El robot ya est en movimiento cuando se ejecuta una


instruccin StartMove o StartMoveRetry

ERR_AO_LIM

Valor de seal analgica fuera de lmites

ERR_ARGDUPCND

Existe ms de un argumento condicional para el mismo


parmetro

ERR_ARGNAME

El argumento es una expresin, no presente o de


switch al ejecutar ArgName

ERR_ARGNOTPER

El argumento no es una referencia a una variable


persistente

ERR_ARGNOTVAR

El argumento no es una referencia a una variable

ERR_ARGVALERR

Error de valor de argumento

ERR_AXIS_ACT

Eje no activo

ERR_AXIS_IND

Eje no independiente

ERR_AXIS_MOVING

Eje en movimiento

ERR_AXIS_PAR

El parmetro de eje de es incorrecto

ERR_BUSSTATE

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.

ERR_BWDLIMIT

Lmite StepBwdPath

ERR_CALC_NEG

Error de clculo negativo de StrDig

ERR_CALC_OVERFLOW

Desbordamiento de clculo de StrDig

ERR_CALC_DIVZERO

Divisin entre cero de StrDig

ERR_CALLPROC

Error en una llamada a un procedimiento (no es un


procedimiento) en tiempo de ejecucin (con enlazamiento en tiempo de ejecucin)

ERR_CFG_INTERNAL

No se permite leer un parmetro interno - ReadCfgData

ERR_CFG_ILLTYPE

Error de coincidencia de tipos en ReadCfgData,


WriteCfgData

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.15 errnum - Nmero de error
Continuacin
Nombre

Causa del error

ERR_CFG_LIMIT

Lmite de datos - WriteCfgData

ERR_CFG_NOTFND

No encontrado en ReadCfgData, WriteCfgData

ERR_CFG_OUTOFBOUNDS

Si ListNo tiene el valor -1 en la entrada o mayor que


el nmero de instancias disponibles - ReadCfgData,
WriteCfgData

ERR_CNTNOTVAR

El objetivo de CONNECT no es una referencia a una


variable

ERR_CNV_NOT_ACT

El transportador no est activado

ERR_CNV_CONNECT

La instruccin WaitWobj ya est activa

ERR_CNV_DROPPED

El objeto que estaba esperando la instruccin WaitWobj ha sido desechado.

ERR_COMM_EXT

Error de comunicacin con el sistema externo.

ERR_COMM_INIT_FAILED

No se pudo inicializar la interfaz de comunicacin.

ERR_DATA_RECV

Los datos recibidos del sistema remoto son incorrectos.

ERR_DEV_MAXTIME

Tiempo lmite agotado al ejecutar una instruccin


ReadBin, ReadNum o ReadStr

ERR_DIPLAG_LIM

Valor de DipLag demasiado grande en la instruccin


TriggSpeed conectada al valor actual de
TriggL/TriggC/TriggJ

ERR_DIVZERO

Divisin entre cero

ERR_EXECPHR

Se ha intentado ejecutar una instruccin con un marcador de sustitucin

ERR_FILEACC

El acceso a un archivo se realiza de forma incorrecta

ERR_FILEEXIST

El archivo ya existe

ERR_FILEOPEN

No es posible abrir un archivo

ERR_FILNOTFND

Archivo no encontrado.

ERR_FNCNORET

Sin valor de retorno

ERR_FRAME

Imposible calcular la nueva base de coordenadas

ERR_GO_LIM

Valor de seal digital de grupo fuera de lmites

ERR_ILLDIM

Dimensiones de matriz incorrectas

ERR_ILLQUAT

Se ha intentado usar un valor no vlido de orientacin


(cuaternio)

ERR_ILLRAISE

Nmero de error de RAISE fuera de rango

ERR_INDCNV_ORDER

Una instruccin requiere la ejecucin de IndCnvInit


antes de ejecutarse.

ERR_INOISSAFE

Si se intenta desactivar temporalmente una interrupcin segura con ISleep.

ERR_INOMAX

No hay ms nmeros de interrupcin disponibles

ERR_INT_NOTVAL

Entero no vlido, valor decimal

ERR_INT_MAXVAL

Entero no vlido, valor demasiado grande o demasiado


pequeo

Contina en la pgina siguiente


1196

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.15 errnum - Nmero de error
Continuacin
Nombre

Causa del error

ERR_INVDIM

Dimensiones diferentes

ERR_IODISABLE

Se alcanz el tiempo lmite al ejecutar IODisable

ERR_IOENABLE

Se alcanz el tiempo lmite al ejecutar IOEnable

ERR_IOERROR

Error de E/S al ejecutar la instruccin Save

ERR_LINKREF

Error de referencia en la tarea de programa

ERR_LOADED

El mdulo de programa ya est cargado

ERR_LOADID_FATAL

Slo para uso interno de LoadId

ERR_LOADID_RETRY

Slo para uso interno de LoadId

ERR_LOADNO_INUSE

La sesin de carga se est utilizando en StartLoad

ERR_LOADNO_NOUSE

La sesin de carga se est utilizando en CancelLoad

ERR_MAXINTVAL

Valor entero demasiado alto

ERR_MODULE

Nombre de mdulo incorrecto en la instruccin Save


y EraseModule

ERR_MOD_NOTLOADED

Mdulo no cargado ni instalado desde ModTime

ERR_NAME_INVALID

Si el nombre de la unidad de E/S no existe.

ERR_NORUNUNIT

Si se ha perdido el contacto con la unidad de E/S.

ERR_NOTARR

El dato no es una matriz.

ERR_NOTEQDIM

La dimensin de la matriz utilizada al llamar a la rutina


no coincide con sus parmetros

ERR_NOTINTVAL

No es un valor entero

ERR_NOTPRES

Se utiliza un parmetro, a pesar de que no se utiliz


el argumento correspondiente en la llamada a la rutina

ERR_NOTSAVED

El mdulo ha cambiado desde que fue cargado en el


sistema

ERR_NOT_MOVETASK

Especifica que una tarea es una tarea sin movimiento

ERR_NUM_LIMIT

El valor es superior a 3,40282347E+38 o inferior a 3,40282347E+38

ERR_OUTOFBND

El ndice de la matriz est fuera de los lmites permitidos

ERR_OVERFLOW

Desbordamiento de reloj

ERR_PATH

Falta la ruta de destino en la instruccin Save

ERR_PATHDIST

Distancia de recuperacin demasiado larga para una


instruccin StartMove o StartMoveRetry

ERR_PATH_STOP

Detencin del movimiento a causa de un error de


proceso

ERR_PID_MOVESTOP

Slo para uso interno de LoadId

ERR_PID_RAISE_PP

Error en ParIdRobValid o ParIdPosValid

ERR_PRGMEMFULL

Memoria de programas llena

ERR_PROCSIGNAL_OFF

La seal de proceso est desactivada

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.15 errnum - Nmero de error
Continuacin
Nombre

Causa del error

ERR_PROGSTOP

El robot ya est en el estado de programa parado


cuando se ejecuta una instruccin StartMove o
StartMoveRetry

ERR_RANYBIN_CHK

Error de suma de comprobacin detectado en la


transferencia de datos con la instruccin ReadAnyBin

ERR_RANYBIN_EOF

Se ha detectado el final del archivo antes de que la


instruccin ReadAnyBin lea todos los caracteres previstos

ERR_RCVDATA

Se ha intentado leer un dato no numrico con ReadNum

ERR_REFUNKDAT

Referencia al objeto de datos completo desconocido

ERR_REFUNKFUN

Referencia a la funcin desconocida

ERR_REFUNKPRC

Referencia a un procedimiento desconocido en el


momento del enlazado o en tiempo de ejecucin (enlazamiento en tiempo de ejecucin)

ERR_REFUNKTRP

Referencia a rutina TRAP desconocida

ERR_RMQ_DIM

Dimensiones incorrectas: las dimensiones de los datos


indicados no son iguales a las dimensiones de los
datos del mensaje.

ERR_RMQ_FULL

Cola de mensajes de destino llena.

ERR_RMQ_INVALID

Ranura de destino perdida o no vlida.

ERR_RMQ_INVMSG

Mensaje no vlido, probablemente enviado desde un


cliente distinto de una tarea de RAPID.

ERR_RMQ_MSGSIZE

Tamao de mensaje excesivo. Reduzca el tamao del


mensaje.

ERR_RMQ_NAME

El nombre de ranura indicado no es vlido o no se


encuentra.

ERR_RMQ_NOMSG

No hay ningn mensaje en la cola, probablemente


como resultado de una cada de alimentacin.

ERR_RMQ_TIMEOUT

Se ha alcanzado el tiempo lmite esperando una respuesta en RMQSendWait.

ERR_RMQ_VALUE

La sintaxis del valor no coincide con el tipo de dato.

ERR_ROBLIMIT

El eje est fuera del rea de trabajo o ha excedido los


lmites de al menos un eje acoplado

ERR_SC_WRITE

Error de envo a un ordenador externo

ERR_SIGSUPSEARCH

La seal ya tiene un valor positivo al comienzo del


proceso de bsqueda

ERR_STARTMOVE

El robot ya est en el estado en espera cuando se


ejecuta una instruccin StartMove o StartMoveRetry

ERR_ADDR_INUSE

La direccin y el puerto ya se estn utilizando y no


pueden utilizarse nuevamente. Utilice otro nmero de
puerto u otra direccin en SocketBind.

ERR_SOCK_CLOSED

El zcalo est cerrado o no est creado

ERR_SOCK_TIMEOUT

La conexin no fue establecida antes de alcanzar el


tiempo lmite.

ERR_SPEED_REFRESH_LIM

Redefinicin fuera de lmites en SpeedRefresh

Contina en la pgina siguiente


1198

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.15 errnum - Nmero de error
Continuacin
Nombre

Causa del error

ERR_STRTOOLNG

La cadena es demasiado larga

ERR_SYM_ACCESS

Error de acceso de lectura o escritura del smbolo

ERR_SYNCMOVEOFF

Tiempo lmite de SyncMoveOff

ERR_SYNCMOVEON

Tiempo lmite de SyncMoveOn

ERR_SYNTAX

Error de sintaxis en el mdulo cargado

ERR_TASKNAME

El nombre de tarea no se encuentra en el sistema

ERR_TP_DIBREAK

Una instruccin de lectura de FlexPendant fue interrumpida por una entrada digital

ERR_TP_DOBREAK

Una instruccin de lectura de FlexPendant fue interrumpida por una salida digital

ERR_TP_MAXTIME

Tiempo lmite al ejecutar una instruccin de lectura


desde FlexPendant

ERR_TP_NO_CLIENT

No hay ningn cliente para interactuar al utilizar una


instruccin de lectura desde FlexPendant

ERR_TRUSTLEVEL

No se permite desactivar la unidad de E/S

ERR_TXTNOEXIST

Tabla o ndice incorrecto en la funcin TextGet

ERR_UI_INITVALUE

Error de valor inicial en la funcin UINumEntry

ERR_UI_MAXMIN

El valor mnimo es mayor que el valor mximo en la


funcin UINumEntry

ERR_UI_NOTINT

El valor no es un entero al especificar que debe utilizarse un entero al utilizar UINumEntry

ERR_UISHOW_FATAL

Otro error distinto de ERR_UISHOW_FATAL en la instruccin UIShow

ERR_UISHOW_FULL

No queda espacio en el FlexPendant para otra aplicacin al utilizar la instruccin UIShow

ERR_UNIT_PAR

El parmetro Mech_unit de TestSignDefine es incorrecto

ERR_UNKINO

Nmero de interrupcin desconocido

ERR_UNKPROC

Referencia incorrecta a la sesin de carga de una


instruccin WaitLoad

ERR_UNLOAD

Error de descarga en una instruccin UnLoad o


WaitLoad

ERR_WAITSYNCTASK

Tiempo lmite agotado en WaitSyncTask

ERR_WAIT_MAXTIME

Tiempo lmite agotado el ejecutar una instruccin


WaitDI o WaitUntil

ERR_WHLSEARCH

No hay ningn paro de bsqueda

ERR_WOBJ_MOVING

La unidad mecnica que contiene el objeto de trabajo


est moviendo CalcJointT

Caractersticas
errnum es un tipo de dato de alias de num y por tanto hereda sus caractersticas.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.15 errnum - Nmero de error
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Recuperacin en caso de error

Technical reference manual - RAPID overview

Tipos de datos en general, tipos de datos Technical reference manual - RAPID overview
de alias

1200

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.16 errstr - Cadena de error

3.16 errstr - Cadena de error


Utilizacin
errstr se utiliza para escribir un texto en mensajes de error.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato errstr.
Ejemplo 1
VAR errstr arg:= "This is an example";
ErrLog 5100, \W, ERRSTR_TASK, ERRSTR_CONTEXT, arg, ERRSTR_EMPTY,
ERRSTR_UNUSED;

Datos predefinidos
Nombre

Descripcin

ERRSTR_EMPTY

El argumento est vaco

ERRSTR_UNUSED

El argumento no se utiliza.

ERRSTR_TASK

Nombre de la tarea actual

ERRSTR_CONTEXT

Contexto

Caractersticas
errstr es un tipo de dato de alias de string y por tanto hereda sus
caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipos de datos en general, tipos de datos Technical reference manual - RAPID overview,
de alias
seccin Caractersticas bsicas - Tipos de datos

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.17 errtype - Tipo de error

3.17 errtype - Tipo de error


Utilizacin
errtype (error type) se utiliza para especificar un tipo de error.
Descripcin
Los datos de tipo errtype representan el tipo (cambio de estado, advertencia,
error) de un mensaje de error.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato errtype.
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 nmero


y el tipo del error se almacenan en las variables adecuadas.
Datos predefinidos
Puede usar las constantes predefinidas siguientes para especificar un tipo de
error.
Nombre

Tipo de error

Valor

TYPE_ALL

Cualquier tipo de error (cambio de estado, advertencia,


error)

TYPE_STATE

Cambio de estado (mensaje operativo)

TYPE_WARN

Advertencia (por ejemplo un error recuperable de RAPID) 2

TYPE_ERR

Error

Caractersticas
errtype es un tipo de dato de alias de num y por tanto hereda sus caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Solicitud de una interrupcin para erro- IError - Solicita una interrupcin para errores en
res
la pgina 132
Nmeros de errores

Operating manual - Trouble shooting-IRC5

Tipos de datos de alias

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Tipos de datos

1202

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.18 event_type - Tipo de rutina de evento

3.18 event_type - Tipo de rutina de evento


Utilizacin
event_type se utiliza para representar el tipo de la rutina de evento actual con
una constante simblica
Descripcin
Con la funcin EventType, es posible comprobar si el cdigo de RAPID real se
ejecuta o no a causa de algn evento de sistema especfico.
Ejemplos bsicos
Un ejemplo bsico del tipo de dato event_type aparece a continuacin.
Ejemplo 1
VAR event_type my_type;
...
my_type := EventType( );

El tipo de rutina de evento que se ejecuta se almacenar en la variable my_type.


Datos predefinidos
Las siguientes constantes de tipo event_type estn predefinidas:
Constante de RAPID

Valor

Tipo de evento ejecutado

EVENT_NONE

No se ejecuta ningn evento

EVENT_POWERON

Evento POWER_ON

EVENT_START

Evento START

EVENT_STOP

Evento STOP

EVENT_QSTOP

Evento QSTOP

EVENT_RESTART

Evento RESTART

EVENT_RESET

Evento RESET

EVENT_STEP

Evento STEP

Caractersticas
event_type es un tipo de dato de alias de num y por tanto hereda sus
caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Rutinas de evento en general

Manual de referencia tcnica - Parmetros del


sistema, seccin Controller - Event Routine

Obtener tipo de evento

EventType - Obtiene el tipo de evento actual


dentro de cualquier rutina de evento en la pgina 898

Tipos de datos en general, tipos de datos Technical reference manual - RAPID overview,
de alias
seccin Caractersticas bsicas - Tipos de datos

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.19 exec_level - Execution level

3.19 exec_level - Execution level


Utilizacin
exec_level se utiliza para especificar el nivel de ejecucin del programa.
Descripcin
La funcin ExecLevel permite obtener el nivel de ejecucin actual del cdigo de
RAPID que se est ejecutando en ese momento.
Datos predefinidos
Se han predefinido las constantes siguientes del tipo exec_level:
Constante de RAPID

Valor

Nivel de ejecucin

LEVEL_NORMAL

Ejecutar en el nivel bsico

LEVEL_TRAP

Execute in TRAP routine

LEVEL_SERVICE

Execute in service routine 1)

1) Con LEVEL_SERVICE, significa una rutina de evento, una rutina de servicio


(incluidas las llamadas a rutinas) y una rutina de interrupcin a partir de una seal
de entrada del sistema.
Caractersticas
exec_level es un tipo de dato de alias de num y por tanto hereda sus
caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Obtener el nivel de ejecucin actual

ExecLevel - Obtener el nivel de ejecucin en


la pgina 901

1204

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.20 extjoint - Posicin de los ejes externos

3.20 extjoint - Posicin de los ejes externos


Utilizacin
extjoint se utiliza para definir las posiciones de eje de los ejes externos, los
posicionadores o los manipuladores de piezas de trabajo.
Descripcin
El robot puede controlar hasta seis ejes externos adems de los seis ejes internos,
es decir, un total de doce ejes. Los seis ejes externos tienen una denominacin
de tipo lgico: a, b, c, d, e, f. Estos ejes lgicos pueden conectarse a un eje fsico
y, en este caso, la conexin se define en los parmetros de sistema.
Se utilizan datos de tipo extjoint para almacenar los valores de las posiciones
de cada uno de los ejes lgicos del a al f.
Para cada eje lgico conectado a un eje fsico, la posicin se define de la forma
siguiente:

Para los ejes de rotacin, la posicin se define como la rotacin en grados


de la posicin de calibracin.

Para los ejes lineales: la posicin se define como la distancia en mm existente


respecto de la posicin de calibracin.

Si un eje lgico no est conectado a uno fsico, se utiliza el valor 9E9 como valor
de posicin, para indicar que el eje no est conectado. En el momento de la
ejecucin, se comprueban los datos de posicin de los distintos ejes y se
comprueba si est conectado el eje correspondiente. Si el valor de posicin
almacenado no cumple con la conexin actual del eje, se aplica lo siguiente:

Si la posicin no est definida en los datos de posicin (su valor es 9E9), el


valor no se tendr en cuenta si el eje est conectado pero no activado. Sin
embargo, si el eje est activado, se genera un error.

Si la posicin est definida en los datos de posicin, a pesar de que el eje


no est conectado, el valor no se tendr en cuenta.

No se realiza ningn movimiento pero tampoco se genera ningn error en el caso


de los ejes que tengan datos de posicin vlidos pero que no estn activados.
Si se utiliza un offset del eje externo (instruccin EOffsOn o EOffsSet), las
posiciones se especifican en el sistema de coordenadas ExtOffs.
Si algn eje externo est funcionando en el modo independiente y el robot y sus
ejes adicionales deben realizar algn nuevo movimiento, los datos de posicin del
eje externo en el modo independiente no deben ser 9E9 sino algn valor arbitrario
(no utilizado por el sistema).
Componentes
eax_a
external axis a
Tipo de dato: num
La posicin del eje externo lgico a, expresada en grados o mm (en funcin del
tipo de eje).
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.20 extjoint - Posicin de los ejes externos
Continuacin
...
eax_f
external axis f
Tipo de dato: num
La posicin del eje externo lgico f, expresada en grados o mm (en funcin del
tipo de eje).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato extjoint.
Ejemplo 1
VAR extjoint axpos10 := [ 11, 12.3, 9E9, 9E9, 9E9, 9E9] ;

La posicin de un posicionador externo axpos10, se define de la forma siguiente:

Se cambia a 11 la posicin del eje externo lgico "a", expresada en grados


o mm (en funcin del tipo de eje).

Se cambia a 12.3 la posicin del eje externo lgico "b", expresada en grados
o mm (en funcin del tipo de eje).

Los ejes de c a f permanecen sin definir.

Estructura
< dataobject
< eax_a of
< eax_b of
< eax_c of
< eax_d of
< eax_e of
< eax_f of

of extjoint >
num >
num >
num >
num >
num >
num >

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Datos de posicin

robtarget - Datos de posicin en la pgina 1266


jointtarget - Datos de posicin de eje en la pgina 1216

Sistema de coordenadas ExtOffs

EOffsOn - Activa un offset de ejes externos en la


pgina 92

1206

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.21 handler_type - Type of execution handler

3.21 handler_type - Type of execution handler


Utilizacin
handler_type se utiliza para especificar el tipo de gestor de ejecucin de la rutina
de programa de RAPID.
Descripcin
Con la funcin ExecHandler, es posible comprobar si el cdigo de RAPID en s
se ejecuta en algn gestor de ejecucin de la rutina de programa de RAPID.
Ejemplos bsicos
A continuacin aparece un ejemplo bsico del tipo de dato handler_type.
Ejemplo 1
VAR handler_type my_type;
...
my_type := ExecHandler( );

El tipo de gestor de ejecucin en el que se encuentra el cdigo se almacena en la


variable my_type.
Datos predefinidos
Las siguientes constantes de tipo handler_type estn predefinidas:
Constante de RAPID

Valor

Tipo de gestor de ejecucin

HANDLER_NONE

No se ejecuta en ningn gestor

HANDLER_BWD

Executed in BACKWARD handler

HANDLER_ERR

Executed in ERROR handler

HANDLER_UNDO

Executed in UNDO handler

Caractersticas
handler_type es un tipo de dato de alias de num y por tanto hereda sus
caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Obtener el tipo de gestor de ejecucin

ExecHandler - Obtener el tipo de gestor de


ejecucin en la pgina 900

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.22 icondata - Datos de visualizacin de iconos

3.22 icondata - Datos de visualizacin de iconos


Utilizacin
icondata se usa para representar los iconos estndar del dispositivo de usuario,
por ejemplo del FlexPendant.
Descripcin
Una constante de enumeracin icondata puede ser entregada al argumento Icon
de la instruccin UIMsgBox y las funciones UIMessageBox, UINumEntry,
UINumTune, UIAlphaEntry y UIListView.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato icondata.
Ejemplo 1
VAR btnres answer;
UIMsgBox "More ?" \Buttons:=btnYesNo \Icon:=iconInfo \Result:=
answer;
IF answer= resYes THEN
...
ELSEIF answer =ResNo THEN
...
ENDIF

La constante de enumeracin de botn estndar iconInfo mostrar un icono de


informacin en el encabezado del cuadro de mensaje de la interfaz de usuario.
Datos predefinidos
Se han predefinido en el sistema las constantes siguientes del tipo de dato
icondata.
Valor

Constante

Icono

iconNone

Ningn icono

iconInfo

Icono de informacin

iconWarning

Icono de aviso

iconError

Icono de error

Caractersticas
icondata es un tipo de dato de alias de num y por tanto hereda sus caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Cuadro de mensaje de interaccin con el UIMsgBox - Cuadro de mensaje de usuario de


usuario
tipo bsico en la pgina 689
Cuadro de mensaje de interaccin con el UIMessageBox - Cuadro de mensaje de usuario
usuario
de tipo avanzado en la pgina 1141

Contina en la pgina siguiente


1208

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.22 icondata - Datos de visualizacin de iconos
Continuacin
Para obtener ms informacin sobre

Consulte

Introduccin de nmero de interaccin con UINumEntry - Introduccin de nmero de


el usuario
usuario en la pgina 1149
Ajuste de nmero de interaccin con el
usuario

UINumTune - Ajuste de nmero de usuario en


la pgina 1156

Introduccin alfanumrica de interaccin UIAlphaEntry - Introduccin alfanumrica del


con el usuario
usuario en la pgina 1110
Vista de lista de interaccin con el usuario UIListView - Vista de lista de usuario en la pgina 1132
Tipos de datos en general, tipos de datos Technical reference manual - RAPID overview,
de alias
seccin Caractersticas bsicas - Tipos de datos

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.23 identno - Identidad para las instrucciones de movimiento

3.23 identno - Identidad para las instrucciones de movimiento


Utilizacin
identno (Identity Number) se utiliza para controlar la sincronizacin de dos o ms
movimientos sincronizados y coordinados entre s.
El tipo de dato identno slo puede usarse en un sistema MultiMove que tenga
la opcin Coordinated Robots y slo en las tareas de programa definidas como
tareas de movimiento.
Descripcin
Las instrucciones de movimiento de un sistema MultiMove deben programarse
con el parmetro \ID del tipo de dato identno si se trata de un movimiento
sincronizado y adems \ID no se permite en ningn otro caso.
El nmero de \ID especificado debe ser el mismo en todas las tareas de programa
que cooperan entre s. El nmero de ID constituye una garanta de que los
movimientos no se mezclen en tiempo de ejecucin.
En el modo sincronizado coordinado, debe existir la misma cantidad de
instrucciones de movimiento ejecutadas en todas las tareas de programa. El
parmetro opcional \ID del tipo de dato identno se utiliza para comprobar que
las instrucciones de movimiento asociadas se ejecuten en paralelo antes del inicio
de los movimientos. El nmero de \ID debe ser el mismo en todas las instrucciones
de movimiento que se ejecuten en paralelo.
El usuario no tiene que declarar ninguna variable del tipo identno, pero puede
usar directamente un nmero en las instrucciones (consulte Ejemplos bsicos).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato identno.
Ejemplo 1
PERS tasks task_list{2} := [["T_ROB1"],["T_ROB2"]];
VAR syncident sync1;
VAR syncident sync2;
PROC proc1()
...
SyncMoveOn sync1, task_list;
MoveL *\ID:=10,v100,z50,mytool;
MoveL *\ID:=20,v100,fine,mytool;
SyncMoveOff sync2;
...
ENDPROC

Caractersticas
identno es un tipo de dato de alias de num y por tanto hereda sus propiedades.

Contina en la pgina siguiente


1210

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.23 identno - Identidad para las instrucciones de movimiento
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipos de datos de alias

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Tipos de
datos

Inicio de movimientos sincronizados coordi- SyncMoveOn - Inicia los movimientos sincronados


nizados coordinados en la pgina 570
Fin de movimientos sincronizados coordina- SyncMoveOff - Finaliza los movimientos sindos
cronizados coordinados en la pgina 563

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.24 intnum - Identidad de interrupcin

3.24 intnum - Identidad de interrupcin


Utilizacin
intnum (interrupt numeric) se usa para identificar una interrupcin.
Descripcin
Cuando se conecta una variable de tipo intnum a una rutina TRAP, recibe un valor
especfico que identifica a la interrupcin. A continuacin, la variable se utiliza en
todas las operaciones realizadas con la interrupcin, por ejemplo, al pedir o
desactivar una interrupcin.
Es posible conectar ms de una identidad de interrupcin a una misma rutina
TRAP. Por tanto, la variable de sistema INTNO puede usarse en las rutinas TRAP
para determinar el tipo de interrupcin que tiene lugar.
Las variables del tipo intnum deben declararse siempre como globales en el
mdulo.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato intnum.
Ejemplo 1
VAR intnum feeder_error;
...
PROC main()
CONNECT feeder_error WITH correct_feeder;
ISignalDI di1, 1, feeder_error;

Se genera una interrupcin cuando la entrada di1 cambia de valor a 1. Cuando


esto ocurre, se hace una llamada a la rutina TRAP correct_feeder.
Ejemplo 2
VAR intnum feeder1_error;
VAR intnum feeder2_error;
...
PROC init_interrupt()
...
CONNECT feeder1_error WITH correct_feeder;
ISignalDI di1, 1, feeder1_error;
CONNECT feeder2_error WITH correct_feeder;
ISignalDI di2, 1, feeder2_error;
...
ENDPROC
...
TRAP correct_feeder
IF INTNO=feeder1_error THEN
...
ELSE
...
ENDIF
...
ENDTRAP

Contina en la pgina siguiente


1212

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.24 intnum - Identidad de interrupcin
Continuacin
Se genera una interrupcin cuando una de las entradas, di1 o di2, cambia de
valor a 1. En este caso, se realiza una llamada a la rutina TRAP correct_feeder.
La variable de sistema INTNO se utiliza en la rutina TRAP para determinar qu tipo
de interrupcin se ha producido.
Limitaciones
El nmero mximo de variables activas del tipo intnum que pueden existir en un
momento determinado (entre CONNECT y IDelete) est limitado a 70. El nmero
mximo de interrupciones que puede albergar la cola de ejecucin de rutinas TRAP
en un momento determinado est limitado a 30.
Caractersticas
Intnum es un tipo de dato de alias de num y por tanto hereda sus propiedades.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Interrupciones

Tipos de datos de alias

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Tipos de datos

Conexin de interrupciones

CONNECT - Conecta una interrupcin a una rutina


TRAP en la pgina 67

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.25 iodev - Canales serie y archivos

3.25 iodev - Canales serie y archivos


Utilizacin
iodev(I/O device) se utiliza para canales serie, como impresoras y archivos.
Descripcin
Los datos de tipo iodev contienen una referencia a un archivo o a un canal serie.
Pueden conectarse a la unidad fsica mediante la instruccin Open y utilizarse a
continuacin para operaciones de lectura y escritura.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato iodev.
Ejemplo 1
VAR iodev file;
...
Open "HOME:/LOGDIR/INFILE.DOC", file\Read;
input := ReadNum(file);

Se abre el archivo INFILE.DOC para lectura. Al leer del archivo, se utiliza file
como referencia en lugar del nombre del archivo.
Caractersticas
iodev es un tipo de dato sin valor.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comunicacin a travs de canales serie Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Comunicacin
Configuracin de canales serie

Manual de referencia tcnica - Parmetros del


sistema

Caractersticas de los tipos de datos sin Technical reference manual - RAPID overview,
valor
seccin Caractersticas bsicas - Tipos de datos

1214

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.26 iounit_state - Estado de la unidad de E/S

3.26 iounit_state - Estado de la unidad de E/S


Utilizacin
iounit_state se utiliza para representar el estado momentneo de una unidad
de E/S.
Descripcin
Las constantes de iounit_state se han diseado para usarlas al comprobar el
valor de retorno de la funcin IOUnitState.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato iounit_state.
Ejemplo 1
IF (IOUnitState ("UNIT1" \Phys) = IOUNIT_PHYS_STATE_RUNNING) THEN
! Possible to access some signal on the I/O unit
ELSE
! Read/Write some signal on the I/O unit result in error
ENDIF

Se comprueba si la unidad de E/S UNIT1 funciona correctamente.


Datos predefinidos
Las constantes simblicas predefinidas del tipo de dato iounit_state pueden
encontrarse en la funcin IOUnitState.
Caractersticas
iounit_state es un tipo de dato de alias de num y por tanto hereda sus
caractersticas.
Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Obtencin del estado actual de una IOUnitState - Obtiene el estado actual de una unidad
unidad de E/S
de E/S en la pgina 941
Instrucciones de entrada/salida

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Seales de entrada y
salida

Funcionalidad de entrada/salida en Technical reference manual - RAPID overview, secgeneral


cin Principios de movimiento y E/S - Principios de
E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros del sistema

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.27 jointtarget - Datos de posicin de eje

3.27 jointtarget - Datos de posicin de eje


Utilizacin
jointtarget se utiliza para definir la posicin a la que se movern los ejes del
robot y los ejes externos al ejecutar una instruccin MoveAbsJ.
Descripcin
jointtarget define las posiciones individuales de los distintos ejes, tanto de los
del robot como de los externos.
Componentes
robax
robot axes
Tipo de dato: robjoint
Posiciones de eje de los ejes del robot, en grados.
La posicin del eje se define como la rotacin en grados del eje (brazo)
correspondiente en sentido positivo o negativo a partir de la posicin de calibracin
del eje.
extax
external axes
Tipo de dato: extjoint
La posicin de los ejes externos.
La posicin se definede la forma siguiente para cada eje independiente (eax_a,
eax_b ... eax_f):

Para los ejes de rotacin, la posicin se define como la rotacin en grados


de la posicin de calibracin.

Para los ejes lineales, la posicin se define como la distancia en mm existente


respecto de la posicin de calibracin.

Los ejes externos eax_a ... son ejes lgicos. La relacin existente entre el
nmero lgico del eje y el nmero fsico del eje se define en los parmetros del
sistema.
El valor 9E9 se utiliza para definir los ejes que no estn conectados. Si los ejes
definidos en los datos de posicin son distintos de los ejes que estn conectados
realmente en el momento de la ejecucin del programa, ocurre lo siguiente:

Si la posicin no est definida en los datos de posicin (su valor es 9E9), el


valor no se tendr en cuenta si el eje est conectado pero no activado. Sin
embargo, si el eje est activado, se genera un error.

Si la posicin est definida en los datos de posicin, a pesar de que el eje


no est conectado, el valor no se tiene en cuenta.

No se realiza ningn movimiento pero tampoco se genera ningn error en el caso


de los ejes que tengan datos de posicin vlidos pero que no estn activados.
Si algn eje externo est funcionando en el modo independiente y el robot y sus
ejes externos deben realizar algn nuevo movimiento, los datos de posicin del
Contina en la pgina siguiente
1216

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.27 jointtarget - Datos de posicin de eje
Continuacin
eje externo en el modo independiente no deben ser 9E9 sino algn valor arbitrario
(no utilizado por el sistema).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato jointtarget.
Ejemplo 1
CONST jointtarget calib_pos := [ [ 0, 0, 0, 0, 0, 0], [ 0, 9E9,
9E9, 9E9, 9E9, 9E9] ];

En el caso del sistema IRB2400, la posicin de calibracin normal se define en


calib_pos con el tipo de dato jointtarget. La posicin 0 (grados o mm) de
calibracin normal se define tambin para el eje externo lgico a. Los ejes externos
del b al f permanecen sin definir.
Estructura
< dataobject of jointtarget >
< robax of robjoint >
< rax_1 of num >
< rax_2 of num >
< rax_3 of num >
< rax_4 of num >
< rax_5 of num >
< rax_6 of num >
< extax of extjoint >
< eax_a of num >
< eax_b of num >
< eax_c of num >
< eax_d of num >
< eax_e of num >
< eax_f of num >

Informacin relacionada
Para obtener ms informacin sobre Consulte
Desplazamiento hacia una posicin
de ejes

MoveAbsJ - Mueve el robot a una posicin de ejes


absoluta en la pgina 240
MoveExtJ - Mueve una o varias unidades mecnicas
sin TCP en la pgina 261

Instrucciones de posicionamiento

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Movimiento

Configuracin de ejes externos

Application manual - Additional axes and stand


alone controller

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.28 listitem - Estructura de datos de elementos de lista

3.28 listitem - Estructura de datos de elementos de lista


Utilizacin
listitem se utiliza para definir lneas de men que contienen texto con pequeos
iconos opcionales en el dispositivo de usuario, por ejemplo el FlexPendant.
Descripcin
Los datos del tipo listitem permiten al usuario definir lneas de men para la
funcin UIListView.
Ejemplo bsico
A continuacin aparecen algunos ejemplos bsicos del tipo de dato listitem .
Ejemplo 1
CONST listitem list {3}:=[[stEmpty, "Item1"], [stEmpty, "Item2"],
[stEmpty, "Item3"]];

Una lista de men con Item1....Item3 para su uso en la funcin UIListView.


Componentes
El tipo de dato contiene los componentes siguientes:
image
Tipo de dato: string
La ruta, incluido el nombre de archivo, de la imagen de icono a mostrar (no
implementado en esta versin de software).
Utilice una cadena vaca "" o stEmpty si no desea mostrar ningn icono.
text
Tipo de dato: string
El texto de la lnea de men a mostrar.
Estructura
<dataobject of listitem>
<image of string>
<text of string>

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Interaccin con el usuario con ListView

UIListView - Vista de lista de usuario en la pgina 1132

1218

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.29 loaddata - Datos de carga

3.29 loaddata - Datos de carga


Utilizacin
loaddata se utiliza para describir las cargas fijadas a la interfaz mecnica del
robot (la brida de montaje del robot).
Los datos de carga suelen definir la carga til o la carga de la pinza (ajustada con
la instruccin GripLoad o MechUnitLoad en el caso de los posicionadores) del
robot, es decir, la carga presente en la pinza del robot. loaddata tambin se usa
como parte del dato tooldata para describir la carga de la herramienta.
Descripcin
Las cargas especificadas se utilizan para configurar un modelo dinmico del robot
que permita controlar de la mejor manera posible sus movimientos.
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 definicin
incorrecta de los datos de carga puede dar lugar a la sobrecarga de la estructura
mecnica del robot.
Cuando se especifican datos de carga incorrectos, este hecho suele tener las
consecuencias siguientes:

El robot no funcionar a su capacidad mxima

Peor exactitud de la trayectoria, con riesgo de sobrepasar posiciones

Riesgo de sobrecarga de la estructura mecnica

Componentes
Nota
En este captulo, los datos loaddata slo se describen en la medida en que se
usan para la carga til. Cuando se usan para la carga de la herramienta, consulte
tooldata - Datos de herramientas en la pgina 1301.
mass
Tipo de dato: num
La masa (el peso) de la carga en kilos.
cog
center of gravity
Tipo de dato: pos
El centro de gravedad de la carga til expresada en mm en el sistema de
coordenadas de la herramienta si el robot es el que sujeta la herramienta. Si se
utiliza una herramienta estacionaria, el centro de gravedad de la carga til sostenida
por la pinza se expresa en la base de coordenadas de objeto del sistema de
coordenadas del objeto de trabajo movido por el robot.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.29 loaddata - Datos de carga
Continuacin
aom
axes of moment
Tipo de dato: orient
La orientacin de los ejes de momento. Se trata de los ejes principales del momento
de inercia de la carga til, con origen en cog. Si el robot es el que sujeta la
herramienta, los ejes de momento se expresan en el sistema de coordenadas de
la herramienta.
La figura muestra el centro de gravedad y los ejes de inercia de la carga til.

pinza

Z
X
sistema de
coordenadas de
mueca

Y'
X'

Z'
X''

sistema de coordenadas de
carga til,
centro de gravedad (cog) y
ejes de inercia de carga til
(aom)

Y''
Z''

sistema de
coordenadas de
la herramienta y
TCP
carga
til

xx1100000515_RAPID loaddata_es

Figure 3.1: Herramienta sostenida por el robot

Contina en la pgina siguiente


1220

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.29 loaddata - Datos de carga
Continuacin
Los ejes de momento se expresan en el sistema de coordenadas del objeto si se
utiliza una herramienta estacionaria.

pinza
X

Y
Z

sistema de
coordenadas
de mueca
sistema de
coordenadas
del objeto de
trabajo

Y'
X'
Z'
Z'' X''
Y''

sistema de coordenadas de
carga til,
centro de gravedad (cog) y
ejes de inercia de carga til
(aom)
carga
til

herramienta
estacionaria

xx1100000516_RAPID loaddata_es

Figure 3.2: Herramienta estacionaria


ix
inertia x
Tipo de dato: num
El momento de inercia de la carga alrededor del eje x del momento, expresado en
kgm 2.
La definicin correcta de los momentos de inercia permitir una utilizacin ptima
del planificador de trayectorias y un mejor control de los ejes. Esto puede resultar
especialmente importante a la hora de manejar grandes planchas de metal, etc.
Todos los momentos de inercia ix, iy y iz iguales a 0 kgm2 implican una masa
puntual.
Normalmente, slo es necesario definir momentos de inercia cuando la distancia
existente entre la brida de montaje y el centro de gravedad es menor que el tamao
mximo de la carga (consulte la figura siguiente).

xx0500002372_en

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.29 loaddata - Datos de carga
Continuacin
iy
inertia y
Tipo de dato: num
El momento de inercia de la carga alrededor del eje Y, expresado en kgm2.
Para obtener ms informacin, consulte ix.
iz
inertia z
Tipo de dato: num
El momento de inercia de la carga alrededor del eje Z, expresado en kgm2.
Para obtener ms informacin, consulte ix.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato loaddata.
Ejemplo 1
PERS loaddata piece1 := [ 5, [50, 0, 50], [1, 0, 0, 0], 0, 0, 0];

La carga til movida por una herramienta sostenida por el robot en la figura
Herramienta sostenida por el robot en la pgina 1220 se describe utilizando los
valores siguientes:

Peso 5 kg.

El centro de gravedad es x = 50 , y = 0 y z = 50 mm en el sistema de


coordenadas de la herramienta.

La carga til es una masa puntual.

Ejemplo 2
Set gripper;
WaitTime 0.3;
GripLoad piece1;

Conexin de la carga til, piece1, especificada en el momento en que el robot


sujeta la carga.
Ejemplo 3
Reset gripper;
WaitTime 0.3;
GripLoad load0;

Desconexin de la carga til, especificada en el momento en que el robot suelta


una carga til.
Ejemplo 4
PERS loaddata piece2 := [ 5, [50, 50, 50], [0, 0, 1, 0], 0, 0, 0];
PERS wobjdata wobj2 :=[ TRUE, TRUE, "", [ [0, 0, 0], [1, 0, 0 ,0]
], [ [50, -50, 200], [0.5, 0, -0.866 ,0] ] ];

La carga til movida de acuerdo con la herramienta estacionaria de la figura


Herramienta estacionaria en la pgina 1221 se describe con los siguientes valores
para loaddata:

Peso 5 kg

Contina en la pgina siguiente


1222

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.29 loaddata - Datos de carga
Continuacin

El centro de gravedad es x = 50, y = 50 y z = 50 mm en el sistema de


coordenadas del objeto de trabajo wobj2.

El sistema de coordenadas/ejes de movimiento de la carga til se gira 180


alrededor de Y'' de acuerdo con el sistema de coordenadas del objeto.

La carga til es una masa puntual.

Los siguientes valores se usan para wobjdata:

El robot sostiene el objeto de trabajo.

Se utiliza el sistema fijo de coordenadas del usuario, es decir, el sistema de


coordenadas del usuario es el mismo que el sistema de coordenadas de la
mueca.

El sistema de coordenadas del objeto se gira -120 alrededor de Y y las


coordenadas de su origen son x = 50, y = -50 y z = 200 mm en el sistema
de coordenadas del usuario.

Limitaciones
La carga til slo debe definirse mediante variables persistentes (PERS) y no desde
dentro de una rutina. De esta forma, los valores se guardan al guardar el programa
y se recuperan al cargarlo.
Los argumentos de tipo loaddata de la instruccin GripLoad y MechUnitLoad
deben ser slo del tipo persistente completo (ni elementos de matriz ni
componentes de registro).
Datos predefinidos
La carga load0 define una carga til cuya masa es igual a 0 kg, es decir, ninguna
carga. Esta carga se utiliza como argumento en las instrucciones GripLoad y
MechUnitLoad para desconectar una carga til.
La carga load0 est siempre disponible desde el programa, pero no puede ser
modificada (est almacenada en el mdulo de sistema BASE).
PERS loaddata load0 := [ 0.001, [0, 0, 0.001], [1, 0, 0, 0], 0, 0
, 0 ];

Estructura
< dataobjectof loaddata >
< mass of num >
< cog of pos >
< x of num >
< y of num >
< z of num >
< aom of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >
< ix of num >
< iy of num >
< iz of num >

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.29 loaddata - Datos de carga
Continuacin
Informacin relacionada
Para obtener ms informacin sobre Consulte
Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Sistemas de
coordenadas

Definicin de cargas de herramienta tooldata - Datos de herramientas en la pgina 1301


Definicin de una carga til para ro- GripLoad - Define la carga til de un robot en la pbots
gina 125
Definicin de una carga til para uni- MechUnitLoad - Define una carga til para una unidades mecnicas
dad mecnica en la pgina 232
Identificacin de la carga de la herra- Manual del operador - IRC5 con FlexPendant, secmienta, carga til o carga de brazo cin Programacin y testing - Rutinas de servicio
Definicin de cargas de brazo

Manual de referencia tcnica - Parmetros del sistema, seccin Tema Motion - Flujos de trabajo - Cmo
definir cargas de brazo

Definicin de datos de objetos de tra- wobjdata - Datos del objeto de trabajo en la pgibajo
na 1323

1224

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.30 loadidnum - Tipo de identificacin de la carga

3.30 loadidnum - Tipo de identificacin de la carga


Utilizacin
loadidnum se utiliza para representar un entero con una constante simblica.
Descripcin
Las constantes loadidnum se han diseado para ser usadas durante la
identificacin de cargas de herramientas o cargas tiles, como argumentos de la
instruccin LoadId. Consulte el ejemplo siguiente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato loadidnum.
Ejemplo 1
LoadId TOOL_LOAD_ID, MASS_WITH_AX3, gun1;

Identificacin de la carga de la herramienta gun1 con identificacin de la masa


con los movimientos del eje 3 del robot, a travs del uso de la constante
MASS_WITH_AX3 del tipo de dato loadidnum.
Datos predefinidos
Se han predefinido las constantes simblicas siguientes para el tipo de dato
loadidnum. Puede usarlas como argumentos de la instruccin LoadId.
Valor

Constante simblica

Comentario

MASS_KNOWN

Masa conocida de la herramienta o de la carga til respectivamente.

MASS_WITH_AX3

Masa de la herramienta o de la carga til desconocida.


La identificacin de la masa se realiza con los movimientos del eje 3.

Caractersticas
loadidnum es un tipo de dato de alias de num y por tanto hereda sus
caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Identificacin de carga de un programa


predefinido

Manual del operador - IRC5 con FlexPendant,


seccin Programacin y testing - Rutinas de
servicio - LoadIdentify, rutina de servicio de
identificacin de cargas

Tipo de robot vlido

ParIdRobValid - Tipo de robot vlido para la


identificacin de parmetros en la pgina 984

Posicin de robot vlida

ParIdPosValid - Posicin de robot vlida para


la identificacin de parmetros en la pgina 981

Identificacin de cargas con un ejemplo LoadId - Identificacin de carga de la herramiencompleto


ta o la carga til en la pgina 221

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.31 loadsession - Programar una sesin de carga

3.31 loadsession - Programar una sesin de carga


Utilizacin
loadsession se utiliza para definir distintas sesiones de carga de mdulos de
programa de RAPID.
Descripcin
Los datos de tipo loadsession se utilizan en las instrucciones StartLoad y
WaitLoad para identificar la sesin de carga. loadsession slo contiene una
referencia a la sesin de carga.
Caractersticas
loadsession es un tipo de dato sin valor y no puede usarse en operaciones
basadas en valores.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Carga de mdulos de programa durante la StartLoad - Carga un mdulo de programa


ejecucin
durante la ejecucin en la pgina 514
WaitLoad - Conecta el mdulo cargado a la
tarea en la pgina 729
Caractersticas de los tipos de datos sin va- Technical reference manual - RAPID overview,
lor
seccin Caractersticas bsicas - Tipos de
datos

1226

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.32 mecunit - Unidad mecnica

3.32 mecunit - Unidad mecnica


Utilizacin
mecunit se utiliza para definir las distintas unidades mecnicas que pueden
controlarse y utilizarse desde el programa.
Los nombres de las unidades mecnicas se definen en los parmetros del sistema
y, por tanto, no debe definirlos en el programa.
Descripcin
Los datos del tipo mecunit slo contienen una referencia a la unidad mecnica.
Limitaciones
No debe definir los datos de tipo mecunit en el programa. Sin embargo, si lo hace,
aparecer un mensaje de error tan pronto como se ejecute la instruccin o funcin
que hace referencia a este dato mecunit. Sin embargo, s es posible utilizarlos
como parmetros al declarar una rutina.
Datos predefinidos
Todas las unidades mecnicas definidas en los parmetros del sistema estn
predefinidas en cada tarea de programa. Sin embargo, slo las unidades mecnicas
controladas por la tarea de programa actual (definida en los parmetros de sistema
Controller/Task/Use Mechanical Unit Group), pueden usarse para realizar cualquier
operacin de control.
Adems, la variable predefinida ROB_ID del tipo de dato mecunit est disponible
en cada tarea de programa. Si la tarea de programa actual controla un robot, la
variable de alias ROB_ID contiene una referencia a uno de los robots de ROB_1 a
ROB_6, que puede usarse para controlar el funcionamiento del robot. La variable
ROB_ID no es vlida si la tarea de programa actual no controla ningn robot.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato mecunit.
Ejemplo 1
IF TaskRunRob() THEN
IndReset ROB_ID, 6;
ENDIF

Si la tarea de programa actual controla un robot, restablece el eje 6 del robot.


Caractersticas
mecunit es un tipo de dato sin valor. Esto significa que los datos de este tipo no
son compatibles con operaciones basadas en valores.
Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Comprobacin de si la tarea controla TaskRunRob - Comprueba si una tarea controla algn
algn robot
robot en la pgina 1089

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.32 mecunit - Unidad mecnica
Continuacin
Para obtener ms informacin so- Consulte
bre
Comprobacin de si la tarea controla TaskRunMec - Comprueba si una tarea controla algualguna unidad mecnica
na unidad mecnica en la pgina 1088
Obtencin del nombre de las unida- GetNextMechUnit - Obtener el nombre y los datos de
des mecnicas del sistema
las unidades mecnicas en la pgina 914
Activacin y desactivacin de unida- ActUnit - Activa una unidad mecnica en la pgina 19
des mecnicas
DeactUnit - Desactiva una unidad mecnica en la
pgina 83
Configuracin de unidades mecni- Manual de referencia tcnica - Parmetros del sistema
cas
Caractersticas de los tipos de datos Technical reference manual - RAPID overview, secsin valor
cin Caractersticas bsicas - Tipos de datos

1228

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.33 motsetdata - Datos de parmetros de movimiento

3.33 motsetdata - Datos de parmetros de movimiento


Utilizacin
motsetdata se utiliza para definir un conjunto de parmetros de movimiento que
afectan a todas las instrucciones de posicionamiento del programa:

Velocidad mxima y ajuste de velocidad

Datos de aceleracin

Comportamiento cerca de puntos singulares

Gestin de distintas configuraciones de robot

Ajuste de la resolucin de las trayectorias

Supervisin del movimiento

Limitacin de la aceleracin y deceleracin

Reorientacin de la herramienta durante trayectorias circulares

Normalmente no es necesario utilizar este tipo de dato dado que estos valores
slo pueden establecerse con las instrucciones VelSet, AccSet, SingArea,
ConfJ, ConfL, PathResol, MotionSup, PathAccLim, CirPathMode, y
WorldAccLim.
Los valores actuales de estos parmetros de movimiento estn disponibles a
travs de la variable de sistema C_MOTSET.
Descripcin
Los parmetros de movimiento actuales (almacenados en la variable de sistema
C_MOTSET) afectan a todos los movimientos.
Componentes
vel.oride
Tipo de dato: veldata/num
Velocidad como porcentaje de la velocidad programada.
vel.max
Tipo de dato: veldata/num
Velocidad mxima en mm/seg.
acc.acc
Tipo de dato: accdata/num
Aceleracin y deceleracin como porcentaje de los valores normales.
acc.ramp
Tipo de dato: accdata/num
La proporcin en que la aceleracin y deceleracin aumentan como porcentaje
de los valores normales.
sing.wrist
Tipo de dato: singdata/bool

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.33 motsetdata - Datos de parmetros de movimiento
Continuacin
La orientacin hasta la cual se permite que la herramienta se desve levemente,
para prevenir una singularidad de mueca.
sing.arm
Tipo de dato: singdata/bool
La orientacin hasta la cual se permite que la herramienta se desve levemente,
para prevenir una singularidad de brazo (no implementada).
sing.base
Tipo de dato: singdata/bool
La orientacin de la que no debe desviarse la herramienta.
conf.jsup
Tipo de dato: confsupdata/bool
La supervisin de la configuracin de los ejes est activa durante el movimiento
de los ejes.
conf.lsup
Tipo de dato: confsupdata/bool
La supervisin de la configuracin de los ejes est activa durante el movimiento
lineal y circular.
conf.ax1
Tipo de dato: confsupdata/num
Desviacin mxima permitida en grados para el eje 1 (no se utiliza en esta versin).
conf.ax4
Tipo de dato: confsupdata/num
Desviacin mxima permitida en grados para el eje 4 (no se utiliza en esta versin).
conf.ax6
Tipo de dato: confsupdata/num
Desviacin mxima permitida en grados para el eje 6 (no se utiliza en esta versin).
pathresol
Tipo de dato: num
El ajuste actual como porcentaje de la resolucin de trayectoria configurada.
motionsup
Tipo de dato: bool
Conmutar el estado de la funcin de supervisin de movimientos de RAPID (TRUE
= On y FALSE = Off).
tunevalue
Tipo de dato: num
Ajuste actual de RAPID como porcentaje del valor de ajuste configurado para la
funcin de supervisin de movimientos.

Contina en la pgina siguiente


1230

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.33 motsetdata - Datos de parmetros de movimiento
Continuacin
acclim
Tipo de dato: bool
Limitacin de aceleracin de la herramienta a lo largo de la trayectoria. (TRUE =
con limitacin y FALSE = sin limitacin).
accmax
Tipo de dato: num
Limitacin de aceleracin del TCP en m/s 2. Si acclim tiene el valor FALSE, el valor
es siempre -1.
decellim
Tipo de dato: bool
Limitacin de deceleracin de la herramienta a lo largo de la trayectoria. (TRUE =
con limitacin y FALSE = sin limitacin).
decelmax
Tipo de dato: num
Limitacin de deceleracin del TCP en m/s 2. Si decellim tiene el valor FALSE,
el valor es siempre -1.
cirpathreori
Tipo de dato: num
Reorientacin de la herramienta durante trayectorias circulares:
0 = Mtodo estndar con interpolacin en la base de coordenadas de la trayectoria
1 = Mtodo modificado con interpolacin en la base de coordenadas del objeto
2 = Mtodo modificado con orientacin programada de la herramienta en CirPoint
worldacclim
Tipo de dato: bool
Limitacin de aceleracin en el sistema de coordenadas mundo. (TRUE = con
limitacin y FALSE = sin limitacin).
worldaccmax
Tipo de dato: num
Limitacin de aceleracin en el sistema de coordenadas mundo en m/s 2. Si
worldacclim tiene el valor FALSE, el valor es siempre -1.
Limitaciones
Slo y slo uno de los componentes sing.wrist, sing.arm o sing.base
puede tener un valor igual a TRUE.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.33 motsetdata - Datos de parmetros de movimiento
Continuacin
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato motsetdata.
Ejemplo 1
IF C_MOTSET.vel.oride > 50 THEN
...
ELSE
...
ENDIF

Se ejecutan partes distintas del programa en funcin del ajuste de velocidad actual.
Datos predefinidos
C_MOTSET describe los parmetros de movimiento actuales del robot y est siempre
disponible desde el programa. Por otro lado, C_MOTSET slo puede modificarse
mediante un conjunto de instrucciones, no mediante asignacin.
Los valores predeterminados siguientes para los parmetros de movimiento se
establecen:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio


VAR motsetdata C_MOTSET := [
[ 100, 500 ],-> veldata
[ 100, 100 ],-> accdata
[ FALSE, FALSE, TRUE ],-> singdata
[ TRUE, TRUE, 30, 45, 90 ]-> confsupdata
100,-> path resolution
TRUE,-> motionsup
100,-> tunevalue
FALSE,-> acclim
-1,-> accmax
FALSE,-> decellim
-1,-> decelmax
0,-> cirpathreori
FALSE,-> worldacclim
-1],-> worldaccmax

Contina en la pgina siguiente


1232

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.33 motsetdata - Datos de parmetros de movimiento
Continuacin
Estructura
<dataobject of motsetdata>
<vel of veldata>->Affected by instruction VelSet
<oride of num>
<max of num>
<acc of accdata>->Affected by instruction AccSet
<acc of num>
<ramp of num>
<sing of singdata>->Affected by instruction SingArea
<wrist of bool>
<arm of bool>
<base of bool>
<conf of confsupdata>->Affected by instructions ConfJ and ConfL
<jsup of bool>
<lsup of bool>
<ax1 of num>
<ax4 of num>
<ax6 of num>
<pathresol of num>->Affected by instruction PathResol
<motionsup of bool>->Affected by instruction MotionSup
<tunevalue of num>->Affected by instruction MotionSup
<acclim of bool>->Affected by instruction PathAccLim
<accmax of num>->Affected by instruction PathAccLim
<decellim of bool>->Affected by instruction PathAccLim
<decelmax of num>->Affected by instruction PathAccLim
<cirpathreori of num>->Affected by instruction CirPathMode
<worldacclim of bool>->Affected by instruction WorldAccLim
<worldaccmax of num>->Affected by instruction WorldAccLim

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones para el establecimiento de


parmetros de movimiento

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Parmetros
de movimiento

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.34 num - Valores numricos

3.34 num - Valores numricos


Utilizacin
Num se utiliza con valores numricos, como por ejemplo, contadores.
Descripcin
El valor del tipo de dato num puede ser:

Un entero, por ejemplo -5

Un nmero con decimales, por ejemplo 3,45

Tambin puede escribirse de forma exponencial, por ejemplo 2E3 (= 2*10^3 =


2.000), 2,5E-2 (= 0,025).
Los enteros entre -8388607 y +8388608 se almacenan siempre como enteros
exactos.
Los nmeros con decimales son slo nmeros aproximados y, por tanto, no deben
utilizarse en comparaciones de tipo igual a ni distinto de. En el caso de las
divisiones y las operaciones que utilizan nmeros con decimales, el resultado
tambin ser un nmero con decimales, es decir, no un entero exacto. Por ejemplo:
a := 10;
b := 5;
IF a/b=2 THEN
...

Dado que el resultado de a/b no es un entero, esta condicin no tiene por qu


cumplirse necesariamente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato num.
Ejemplo 1
VAR num reg1;
...
reg1 := 3;

reg1 recibe el valor 3.


Ejemplo 2
a := 10 DIV 3;
b := 10 MOD 3;

Divisin entera en la que se asigna un entero a (=3) y se asigna a b el resto (=1).


Datos predefinidos
Hay algunos datos predefinidos en el sistema. Por ejemplo, la constante pi () se
define en el mdulo del sistema BASE_SHARED.
CONST num pi := 3.1415926;
Limitaciones
Los valores literales entre -8388607 y 8388608 asignados a una variable num se
almacenan siempre como enteros exactos.
Contina en la pgina siguiente
1234

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.34 num - Valores numricos
Continuacin
Si un valor literal que ha sido interpretado como un valor dnum es asignado o
usado como un valor num, es convertido automticamente a num.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Valores numricos con el tipo de datos dnum dnum - Valores numricos dobles en la pgina 1190
Expresiones numricas

Technical reference manual - RAPID overview,


seccin Programacin bsica en RAPID - Expresiones

Operaciones con valores numricos

Technical reference manual - RAPID overview,


seccin Programacin bsica en RAPID - Expresiones

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.35 opcalc - Arithmetic Operator

3.35 opcalc - Arithmetic Operator


Utilizacin
opcalc se utiliza para representar un operador aritmtico en argumentos
entregados a las funciones o instrucciones de RAPID.
Descripcin
El uso previsto de las constantes opcalc es decir el tipo de operacin aritmtica.
Ejemplos
A continuacin aparece un ejemplo de uso del tipo de dato opcalc.
Ejemplo 1
res := StrDigCalc(str1, OpAdd, str2);

Se asigna a res el resultado de la operacin de suma de los valores representados


por las cadenas str1 y str2. OpAdd es del tipo de dato opcalc..
Datos predefinidos
Se han predefinido las constantes simblicas siguientes para el tipo de dato
opcalc. Puede usarlas para definir el tipo de operacin aritmtica utilizado, por
ejemplo en la funcin StrDigCalc.
Constante

Valor

Comentario

OpAdd

Suma (+)

OpSub

Resta (-)

OpMult

Multiplicacin (*)

OpDiv

Divisin (/)

OpMod

Mdulo (%l)

Caractersticas
opcalc es un tipo de dato de alias de num y por tanto hereda sus caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipos de datos en general, tipos de datos de Manual de referencia tcnica - Descripcin


alias
general de RAPID, seccin Caractersticas
bsicas - Tipos de datos
Operaciones aritmticas con cadenas digita- StrDigCalc - Operaciones aritmticas con el
les.
tipo de dato stringdig en la pgina 1063

1236

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.36 opnum - Operador de comparacin

3.36 opnum - Operador de comparacin


Utilizacin
opnum se utiliza para representar un operador de comparacin en argumentos
entregados a las funciones o instrucciones de RAPID.
Descripcin
La constante opnum se ha diseado para definir el tipo de comparacin al
comprobar valores en las instrucciones genricas.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato opnum.
Ejemplo 1
TriggCheckIO checkgrip, 100, airok, EQ, 1, intno1;

Datos predefinidos
Se han predefinido las constantes simblicas siguientes para el tipo de dato opnum.
Puede usarlas para definir el tipo de comparacin utilizado, por ejemplo en la
instruccin TriggCheckIO.
Valor

Constante simblica

Comentario

LT

Menor que

LTEQ

Menor que o igual a

EQ

Igual a

NOTEQ

Distinto de

GTEQ

Mayor que o igual a

GT

Mayor que

Caractersticas
opnum es un tipo de dato de alias de num y por tanto hereda sus caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipos de datos en general, tipos de datos


de alias

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Tipos de
datos

Definicin de una comprobacin de E/S en TriggCheckIO - Define una comprobacin de


una posicin fija
E/S en una posicin fija en la pgina 616

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.37 orient - Orientacin

3.37 orient - Orientacin


Utilizacin
orient se utiliza para orientaciones (por ejemplo la orientacin de una herramienta)
y rotaciones (por ejemplo la rotacin de un sistema de coordenadas).
Descripcin
La orientacin se describe en forma de un cuaternio compuesto por cuatro
elementos: q1, q2, q3 y q4. Para obtener ms informacin acerca de cmo calcular
estos elementos, consulte la informacin siguiente.
Componentes
El tipo de dato orient contiene los componentes siguientes:
q1
Tipo de dato: num
Cuaternio 1.
q2
Tipo de dato: num
Cuaternio 2.
q3
Tipo de dato: num
Cuaternio 3.
q4
Tipo de dato: num
Cuaternio 4.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato orient.
Ejemplo 1
VAR orient orient1;
.
orient1 := [1, 0, 0, 0];

Se asigna a la orientacin orient1 el valor q1=1, q2-q4=0. Esto equivale a ninguna


rotacin.
Limitaciones
La orientacin debe estar normalizada, es decir, la suma de los cuadrados debe
ser igual a 1:
q21 + q22 + q23 + q24 = 1

Contina en la pgina siguiente


1238

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.37 orient - Orientacin
Continuacin
Qu es un cuaternio?
La orientacin de un sistema de coordenadas (por ejemplo el de una herramienta)
puede describirse mediante una matriz de rotacin que describe la direccin de
los ejes del sistema de coordenadas respecto de un sistema de referencia (consulte
la figura siguiente).

z
x

Sistema de
coordenadas
de referencia

Sistema de
coordenadas
girado

xx0500002376_es

Los ejes del sistema de coordenadas girado (x, y, z) son vectores que pueden
expresarse en el sistema de coordenadas de referencia de la forma siguiente:
x = (x1, x2, x3)
y = (y1, y2, y3)
z = (z1, z2, z3)
Esto significa que el componente x del vector x del sistema de coordenadas de
referencia ser x1, el componente y ser x2, etc.
Estos tres vectores pueden reunirse en una matriz (una matriz de rotacin) en la
que cada uno de los vectores compone una de las columnas:

xx0500002381

Un cuaternio es slo una forma ms concisa de referirse a esta matriz de rotacin.


Los cuaternios se calculan partiendo de los elementos de la matriz de rotacin:
x1+y2+z3+1

q1 =
q2 =
q3 =
q4 =

2
x1y2z3+1

sign q2 = sign (y 3-z 2)

y2x1z3+1

sign q3 = sign (z 1-x 3)

z3x1y2+1

sign q4 = sign (x 2-y 1)

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.37 orient - Orientacin
Continuacin
Ejemplo 1
Una herramienta se orienta de forma que su eje Z apunta directamente hacia
delante (en la misma direccin que el eje X del sistema de coordenadas de la
base). El eje Y de la herramienta se corresponde con el eje Y del sistema de
coordenadas de la base (consulte la figura siguiente). Cmo se define la
orientacin de la herramienta en los datos de posicin (robtarget)?
La orientacin de la herramienta en una posicin programada suele estar
relacionada con el sistema de coordenadas del objeto de trabajo utilizado. En este
ejemplo no se utiliza ningn objeto de trabajo y el sistema de coordenadas de la
base es igual al sistema de coordenadas mundo. Por tanto, la orientacin est
relacionada con el sistema de coordenadas de la base.

xx0500002377

En este caso, los ejes estarn relacionados de la forma siguiente:


x = -z = (0, 0, -1)
y = y = (0, 1, 0)
z = x = (1, 0, 0)
Esto corresponde a la matriz de rotacin siguiente:

xx0500002388

La matriz de rotacin proporciona el cuaternio correspondiente:


q1 =

0+1+0+1
2

q2 =

010+1
2

=0

q3 =

100+1
2

q4 =

001+1
2

=0

2
2

= 0,707

2
2

= 0,707

sign q3 = sign (1+1) = +

Contina en la pgina siguiente


1240

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.37 orient - Orientacin
Continuacin
Ejemplo 2
La direccin de la herramienta gira 30 alrededor de los ejes X' y Z' respecto del
sistema de coordenadas de la mueca (consulte la figura siguiente). Cmo se
define la orientacin de la herramienta en los datos de la herramienta?.

xx0500002378

En este caso, los ejes estarn relacionados de la forma siguiente:


x'= (cos30, 0, -sin30)
y = (0, 1, 0)
z = (sin30, 0, cos30)
Esto corresponde a la matriz de rotacin siguiente:

xx0500002393

La matriz de rotacin proporciona el cuaternio correspondiente:


q1 =

cos30 + 1 + cos30 + 1
2

q2 =

cos30 1 cos30+1
2

=0

q3 =

1 cos30 cos30+1
2

= 0,258819

q4 =

cos30 cos30 1+1


2

=0

= 0,965926

sign q3 = sign (sin30+sin30) = +

Estructura
< dataobject of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.37 orient - Orientacin
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Operaciones con orientaciones

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Expresiones

1242

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.38 paridnum - Tipo de identificacin de parmetro

3.38 paridnum - Tipo de identificacin de parmetro


Utilizacin
paridnum se utiliza para representar un entero con una constante simblica.
Descripcin
Las constantes paridnum se han diseado para ser usadas en la identificacin
de parmetros, por ejemplo, identificaciones de carga de herramientas y cargas
tiles o de la carga de un manipulador externo. Consulte el ejemplo siguiente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato paridnum.
Ejemplo 1
TEST ParIdRobValid (TOOL_LOAD_ID)
CASE ROB_LOAD_VAL:
! Possible to do load identification of tool in actual robot type
...
CASE ROB_LM1_LOAD_VAL:
! Only possible to do load identification of tool with
! IRB 6400FHD if actual load < 200 kg
...
CASE ROB_NOT_LOAD_VAL:
! Not possible to do load identification of tool in actual robot
type
...
ENDTEST

Se utiliza la constante predefinida TOOL_LOAD_ID del tipo de dato paridnum.


Datos predefinidos
Se han predefinido las constantes simblicas siguientes del tipo de dato paridnum
para su uso como argumentos en las instrucciones siguientes ParIdRobValid,
ParIdPosValid,LoadId y ManLoadIdProc.
Valor

Constante simblica

Comentario

TOOL_LOAD_ID

Identificacin de la carga de la herramienta

PAY_LOAD_ID

Identificacin de la carga til (consulte la instruccin


GripLoad)

IRBP_K

Identificacin de la carga del manipulador externo


IRBP K

IRBP_L

Identificacin de la carga del manipulador externo


IRBP L

IRBP_C

Identificacin de la carga del manipulador externo


IRBP C

IRBP_C_INDEX

Identificacin de la carga del manipulador externo


IRBP C_INDEX

IRBP_T

Identificacin de la carga del manipulador externo


IRBP T

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.38 paridnum - Tipo de identificacin de parmetro
Continuacin
Valor

Constante simblica

Comentario

IRBP_R

Identificacin de la carga del manipulador externo


IRBP R

IRBP_A

Identificacin de la carga del manipulador externo


IRBP A

IRBP_B

Identificacin de la carga del manipulador externo


IRBP B

IRBP_D

Identificacin de la carga del manipulador externo


IRBP D

Nota
Slo TOOL_LOAD_ID y PAY_LOAD_ID pueden usarse en los programas de RAPID
definidos por el usuario para la identificacin de cargas de la herramienta o la
carga til del robot.
Caractersticas
paridnum es un tipo de dato de alias de num y por tanto hereda sus
caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Programa predefinido Load Identify

Manual del operador - IRC5 con FlexPendant,


seccin Programacin y testing - Rutinas de
servicio - LoadIdentify, rutina de servicio de
identificacin de cargas

Tipo de robot vlido

ParIdRobValid - Tipo de robot vlido para la


identificacin de parmetros en la pgina 984

Posicin de robot vlida

ParIdPosValid - Posicin de robot vlida para


la identificacin de parmetros en la pgina 981

Identificacin de cargas con un ejemplo


completo

LoadId - Identificacin de carga de la herramienta o la carga til en la pgina 221

Identificacin de carga de manipuladores ManLoadIdProc - Identificacin de carga de


externos
los manipuladores IRBP en la pgina 228

1244

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.39 paridvalidnum - Resultado de ParIdRobValid

3.39 paridvalidnum - Resultado de ParIdRobValid


Utilizacin
paridvalidnum se utiliza para representar un entero con una constante simblica.
Descripcin
Las constantes paridvalidnum se han diseado para ser usadas en la
identificacin de parmetros, por ejemplo identificaciones de carga de herramientas
y cargas tiles, a la hora de comprobar el valor de retorno de la funcin
ParIdRobValid. Consulte el ejemplo siguiente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato
paridvalidnum.
TEST ParIdRobValid (PAY_LOAD_ID)
CASE ROB_LOAD_VAL:
! Possible to do load identification of payload in actual robot
! type
...
CASE ROB_LM1_LOAD_VAL:
! Only possible to do load identification of payload
! with IRB 6400FHD if actual load < 200 kg
...
CASE ROB_NOT_LOAD_VAL:
! Not possible to do load identification of payload
! in actual robot type
...
ENDTEST

Se utilizan las constantes predefinidas ROB_LOAD_VAL, ROB_LM1_LOAD_VAL y


ROB_NOT_LOAD_VAL del tipo de dato paridvalidnum.
Datos predefinidos
Se han definido las constantes simblicas siguientes del tipo de dato
paridvalidnum. Puede usarlas a la hora de comprobar el valor de retorno de la
funcin ParIdRobValid.
Valor

Constante simblica

Comentario

10

ROB_LOAD_VAL

Tipo de robot vlido para la identificacin actual


de parmetros

11

ROB_NOT_LOAD_VAL

No es ningn tipo de robot vlido para la identificacin actual de parmetros

12

ROB_LM1_LOAD_VAL

Tipo de robot vlido IRB 6400FHD para la identificacin actual de parmetros, si la carga real es
< 200 kg

Caractersticas
paridvalidnum es un tipo de dato de alias de num y por tanto hereda sus
caractersticas.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.39 paridvalidnum - Resultado de ParIdRobValid
Continuacin
Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Programa predefinido Load Identify Manual del operador - IRC5 con FlexPendant, seccin
Programacin y testing - Rutinas de servicio - LoadIdentify, rutina de servicio de identificacin de cargas
Tipo de robot vlido

ParIdRobValid - Tipo de robot vlido para la identificacin de parmetros en la pgina 984

Posicin de robot vlida

ParIdPosValid - Posicin de robot vlida para la identificacin de parmetros en la pgina 981

Identificacin de cargas con un


ejemplo completo

LoadId - Identificacin de carga de la herramienta o la


carga til en la pgina 221

1246

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.40 pathrecid - Identificador de grabadora de trayectorias

3.40 pathrecid - Identificador de grabadora de trayectorias


Utilizacin
pathrecid se utiliza para identificar un punto de ruptura para la grabadora de
trayectorias.
Descripcin
La grabadora de trayectorias es una funcin del sistema que permite grabar la
trayectoria ejecutada por el robot. Los datos de tipo pathrecid pueden ser
vinculados a una ubicacin de trayectoria determinada mediante la instruccin
PathRecStart. A continuacin, el usuario puede solicitar a la grabadora que
realice un movimiento de vuelta hasta el identificador de la trayectoria, mediante
la instruccin PathRecMoveBwd.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato pathrecid.
Ejemplo 1
VAR pathrecid start_id;
CONST robtarget p1 := [...];
CONST robtarget p2 := [...];
CONST robtarget p3 := [...];
PathRecStart start_id;
MoveL p1, vmax, z50, tool1;
MoveL p2, vmax, z50, tool1
MoveL p3, vmax, z50, tool1;
IF(PathRecValidBwd (\ID := start_id)) THEN
StorePath;
PathRecMoveBwd \ID:=start_id;
...
ENDIF

pathrecid_Examples_1_xx0500002090

En el ejemplo anterior, se inicia la grabadora de trayectorias y se marca el punto


inicial con el identificador de trayectoria start_id. A partir de ese momento, el
robot avanzar con las instrucciones de movimiento tradicionales y volver a la
posicin inicial mediante la trayectoria grabada. Para poder ejecutar instrucciones
de movimiento con la grabadora de trayectorias, es necesario cambiar el nivel de
la trayectoria con StorePath.
Caractersticas
pathrecid es un tipo de dato sin valor

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.40 pathrecid - Identificador de grabadora de trayectorias
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Inicio y detencin de la grabadora de trayec- PathRecStart - Inicia la grabadora de trayectotorias


rias en la pgina 327
PathRecStop - Detiene la grabadora de trayectorias en la pgina 330
Comprobacin de que la trayectoria graba- PathRecValidBwd - Comprueba si existe una
da es correcta
trayectoria de retroceso vlida guardada en la
pgina 989
PathRecValidFwd - Comprueba si existe una
trayectoria de avance vlida guardada en la
pgina 992
Reproduccin de la grabacin de trayecto- PathRecMoveBwd - Hace retroceder la grabarias hacia atrs
dora de trayectorias en la pgina 316
Reproduccin de la grabacin de trayecto- PathRecMoveFwd - Hace avanzar la grabadora
rias hacia delante
de trayectorias en la pgina 324
Caractersticas de los tipos de datos sin
valor

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Tipos de datos

1248

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.41 pos - Posiciones (slo X, Y y Z)

3.41 pos - Posiciones (slo X, Y y Z)


Utilizacin
pos se utiliza para posiciones (slo para X, Y y Z).
El tipo de dato robtarget se utiliza con las posiciones del robot, incluida la
orientacin de la herramienta y la configuracin de los ejes.
Descripcin
Los datos de tipo pos describen las coordenadas de una posicin: X, Y y Z.
Componentes
El tipo de dato pos contiene los componentes siguientes:
x
Tipo de dato: num
El valor X de la posicin.
y
Tipo de dato: num
El valor Y de la posicin.
z
Tipo de dato: num
El valor Z de la posicin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato pos.
Ejemplo 1
VAR pos pos1;
...
pos1 := [500, 0, 940];

Se asigna a la posicin pos1 el valor: X=500 mm, Y=0 mm, Z=940 mm.
Ejemplo 2
pos1.x := pos1.x + 50;

Se traslada la posicin de pos150 mm en la direccin X.


Estructura
< dataobject
< x of num
< y of num
< z of num

of pos >
>
>
>

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Operaciones con posiciones

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Expresiones

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.41 pos - Posiciones (slo X, Y y Z)
Continuacin
Para obtener ms informacin sobre

Consulte

Posicin del robot incluida su orientacin

robtarget - Datos de posicin en la pgina 1266

1250

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.42 pose - Transformaciones de coordenadas

3.42 pose - Transformaciones de coordenadas


Utilizacin
pose se utiliza para cambiar de un sistema de coordenadas a otro.
Descripcin
Los datos de tipo pose describen cmo se desplaza y gira un sistema de
coordenadas alrededor de otro sistema de coordenadas. Por ejemplo, estos datos
pueden describir cmo est situado y orientado el sistema de coordenadas de la
herramienta respecto del sistema de coordenadas de la mueca.
Componentes
El tipo de dato contiene los componentes siguientes:
trans (Pantallas)
translation
Tipo de dato: pos
El desplazamiento de posicin (x, y, z) del sistema de coordenadas.
rot
rotation
Tipo de dato: orient
La rotacin del sistema de coordenadas.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato pose.
VAR pose frame1;
...
frame1.trans := [50, 0, 40];
frame1.rot := [1, 0, 0, 0];

Se asigna a la transformacin de coordenadas frame1 un valor que corresponde


a un desplazamiento en su posicin, donde X=50 mm, Y=0 mm, Z=40 mm. Sin
embargo, no hay ninguna rotacin.
Estructura
< dataobject of pose >
< trans of pos >
< rot of orient >

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Qu es un cuaternio?

orient - Orientacin en la pgina 1238

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.43 progdisp - Desplazamiento de programa

3.43 progdisp - Desplazamiento de programa


Utilizacin
progdisp se utiliza para almacenar el desplazamiento de programa actual de los
ejes del robot y los ejes externos.
Normalmente no es necesario utilizar este tipo de dato dado que los datos se
establecen con las instrucciones PDispSet, PDispOn, PDispOff, EOffsSet,
EOffsOn y EOffsOff. Slo se utiliza para almacenar temporalmente el valor actual
para un uso posterior.
Descripcin
Los valores actuales del desplazamiento de programa estn disponibles a travs
de la variable de sistema C_PROGDISP.
Para obtener ms informacin, consulte las instrucciones PDispSet, PDispOn,
EOffsSet y EOffsOn.
Componentes
pdisp
program displacement
Tipo de dato: pose
El desplazamiento de programa del robot, expresado mediante una traslacin y
una orientacin. La traslacin se expresa en mm.
eoffs
external offset
Tipo de dato: extjoint
El offset de cada uno de los ejes externos. Si el eje es lineal, el valor se expresa
en mm. Si es de rotacin, el valor se expresa en grados.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato progdisp.
Ejemplo 1
VAR progdisp progdisp1;
...
SearchL sen1, psearch, p10, v100, tool1;
PDispOn \ExeP:=psearch, *, tool1;
EOffsOn \ExeP:=psearch, *;
...
progdisp1:=C_PROGDISP;
PDispOff;
EOffsOff;
...
PDispSet progdisp1.pdisp;
EOffsSet progdisp1.eoffs;

Contina en la pgina siguiente


1252

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.43 progdisp - Desplazamiento de programa
Continuacin
En primer lugar, se activa un desplazamiento de programa desde una posicin
buscada. A continuacin, los valores de desplazamiento de programa actuales se
almacenan temporalmente en la variable progdisp1 y el desplazamiento de
programa se desactiva. Ms adelante, la reactivacin se realiza utilizando las
instrucciones PDispSet y EOffsSet.
Datos predefinidos
La variable de sistema C_PROGDISP describe el desplazamiento de programa
actual de los ejes del robot y los ejes externos y est siempre disponible desde el
programa. Por otro lado, slo puede modificarse mediante un conjunto de
instrucciones, no mediante asignacin.
Los siguientes valores predeterminados de desplazamiento de programa se
establecen:

En los arranques en fro.

Cuando se carga un nuevo programa.

Cuando se inicia la ejecucin del programa desde el principio


VAR progdisp C_PROGDISP :=
[ [[ 0, 0, 0], [1, 0, 0, 0]],-> posedata
[ 0, 0, 0, 0, 0, 0]];-> extjointdata

Estructura
< dataobject of progdisp >
< pdisp of pose >
< trans of pos >
< x of num >
< y of num >
< z of num >
< rot of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >
< eoffs of extjoint >
< eax_a of num >
< eax_b of num >
< eax_c of num >
< eax_d of num >
< eax_e of num >
< eax_f of num >

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones para la definicin de desplaza- Technical reference manual - RAPID overmientos de programa
view, seccin Resumen sobre RAPID - Parmetros de movimiento
Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin Principios de movimiento y


E/S - Sistemas de coordenadas

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.44 rawbytes - Datos sin formato

3.44 rawbytes - Datos sin formato


Utilizacin
rawbytes se utiliza como un contenedor genrico de datos. Puede usarse para
la comunicacin con los dispositivos de E/S.
Descripcin
Los datos rawbytes pueden contener cualquier tipo de dato ( num, byte, string
) mediante las instrucciones y funciones de soporte. En cualquier variable de tipo
rawbytes, el sistema almacena tambin la longitud actual de los bytes vlidos.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato rawbytes.
Ejemplo 1
VAR rawbytes raw_data;
VAR num integer := 8;
VAR num float := 13.4;
ClearRawBytes raw_data;
PackRawBytes integer, raw_data, 1 \IntX := INT;
PackRawBytes float, raw_data, (RawBytesLen(raw_data)+1) \Float4;

En este ejemplo, la variable raw_data del tipo rawbytes es borrada en primer


lugar. Es decir, todos sus bytes cambian a 0 (el valor predeterminado tras la
declaracin). A continuacin, se guarda el valor de integer en los 2 primeros
bytes y el valor de float en los 4 bytes siguientes.
Limitaciones
Las variables de tipo rawbytes pueden contener de 0 a 1.024 bytes.
Estructura
rawbytes es un tipo de dato sin valor.
Tras la declaracin de la variable de tipo rawbytes, todos los bytes de rawbytes
quedan definidos como 0 y la longitud actual de los bytes vlidos de la variable
es tambin 0.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Obtencin de la longitud de un dato rawby- RawBytesLen - Obtiene la longitud de un dato


de tipo rawbytes en la pgina 1011
tes
Borrado del contenido de un dato de tipo
rawbytes

ClearRawBytes - Borra el contenido de un


dato de tipo rawbytes en la pgina 53

Copiado del contenido de un dato de tipo


rawbytes

CopyRawBytes - Copia el contenido de un


dato de tipo rawbytes en la pgina 71

Empaquetamiento de un encabezado de
DeviceNet en datos rawbytes

PackDNHeader - Empaqueta un encabezado


de DeviceNet en datos rawbytes en la pgina 304

Contina en la pgina siguiente


1254

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.44 rawbytes - Datos sin formato
Continuacin
Para obtener ms informacin sobre

Consulte

Empaquetamiento de datos en datos


rawbytes

PackRawBytes - Empaqueta datos en un dato


de tipo rawbytes en la pgina 307

Escritura de un dato rawbytes

WriteRawBytes - Escribe un dato de tipo


rawbytes en la pgina 772

Lectura de un dato rawbytes

ReadRawBytes - Lee datos de tipo rawbytes


en la pgina 374

Desempaquetamiento de datos de un dato UnpackRawBytes - Desempaqueta datos de


rawbytes
un dato de tipo rawbytes en la pgina 704

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.45 restartdata - Datos de reinicio de seales de disparo

3.45 restartdata - Datos de reinicio de seales de disparo


Utilizacin
restartdata refleja los valores previos y posteriores de las seales de E/S
especificadas (seales de proceso) en la secuencia de paro de los movimientos
del robot. Las seales de E/S que deben supervisarse se especifican en la
instruccin TriggStopProc.
TriggStopProc y restartdata han sido creadas para ser usadas en el reinicio
tras un paro de programa (STOP) o un paro de emergencia (QSTOP) de las propias
instrucciones de proceso definidas en RAPID (rutinas NOSTEPIN).
Definicin
En la tabla se muestra la definicin del momento de lectura de los valores previos
y posteriores de las seales de I/O.
Tipo de paro

Tiempo de lectura del valor


previo de la seal de E/S

Tiempo de lectura del valor posterior


de la seal de E/S

STOP dentro de Cuando todos los ejes del robot Aproximadamente 400 ms tras el tiemtrayectoria
estn parados
po previo
QSTOP fuera de Lo antes posible
trayectoria

Aproximadamente 400 ms tras el tiempo previo

Descripcin
restartdata refleja los datos siguientes tras la detencin de la ejecucin del
programa:

Datos vlidos de reinicio

Indicacin de si el robot se ha detenido dentro o fuera de la trayectoria

Valor previo de las seales de E/S

Valor posterior de las seales de E/S

Nmero de flancos, entre el tiempo previo y el tiempo posterior, de la seal


correspondiente al proceso en curso

Componentes
restartstop
valid restartdata after stop
Tipo de dato: bool
TRUE = Refleja el ltimo paro STOP o QSTOP.
FALSE = Datos de reinicio no vlidos. Todos los valores de las seales de E/S
cambian a -1.
stoponpath
stop on path
Tipo de dato: bool
TRUE = El robot se ha detenido dentro de la trayectoria (STOP).
FALSE = El robot se ha detenido, pero fuera de la trayectoria (QSTOP).
Contina en la pgina siguiente
1256

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.45 restartdata - Datos de reinicio de seales de disparo
Continuacin
predo1val
pre do1 value
Tipo de dato: dionum
El valor previo de la seal digital "do1" especificada en el argumento DO1 de la
instruccin TriggStopProc.
postdo1val
post do1 value
Tipo de dato: dionum
El valor posterior de la seal digital "do1" especificada en el argumento DO1 de la
instruccin TriggStopProc.
prego1val
pre go1 value
Tipo de dato: num
El valor previo de la seal digital de grupo "go1" especificada en el argumento
GO1 de la instruccin TriggStopProc.
postgo1val
post go1 value
Tipo de dato: num
El valor posterior de la seal digital de grupo "go1" especificada en el argumento
GO1 de la instruccin TriggStopProc.
prego2val
pre go2 value
Tipo de dato: num
El valor previo de la seal digital de grupo "go2" especificada en el argumento
GO2 de la instruccin TriggStopProc.
postgo2val
post go2 value
Tipo de dato: num
El valor posterior de la seal digital de grupo "go2" especificada en el argumento
GO2 de la instruccin TriggStopProc.
prego3val
pre go3 value
Tipo de dato: num
El valor previo de la seal digital de grupo "go3" especificada en el argumento
GO3 de la instruccin TriggStopProc.
postgo3val
post go3 value
Tipo de dato: num

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.45 restartdata - Datos de reinicio de seales de disparo
Continuacin
El valor posterior de la seal digital de grupo "go3" especificada en el argumento
GO3 de la instruccin TriggStopProc.
prego4val
pre go4 value
Tipo de dato: num
El valor previo de la seal digital de grupo "go4" especificada en el argumento
GO4 de la instruccin TriggStopProc.
postgo4val
post go4 value
Tipo de dato: num
El valor posterior de la seal digital de grupo "go4" especificada en el argumento
GO4 de la instruccin TriggStopProc.
preshadowval
pre shadow value
Tipo de dato: dionum
El valor previo de la seal digital "shadow" especificada en el argumento ShadowDO
de la instruccin TriggStopProc.
shadowflanks
number of shadow flanks
Tipo de dato: num
El nmero de transiciones de valor (flancos) de la seal digital shadow entre el
tiempo previo y el tiempo posterior. La seal shadow se especifica en el
argumento ShadowDO de la instruccin TriggStopProc.
postshadowval
post shadow value
Tipo de dato: dionum
El valor posterior de la seal digital "shadow" especificada en el argumento
ShadowDO de la instruccin TriggStopProc.

Contina en la pgina siguiente


1258

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.45 restartdata - Datos de reinicio de seales de disparo
Continuacin
Estructura
< dataobject of restartdata >
< restartstop of bool >
< stoponpath of bool >
< predo1val of dionum >
< postdo1val of dionum >
< prego1val of num >
< postgo1val of num >
< prego2val of num >
< postgo2val of num >
< prego3val of num >
< postgo3val of num >
< prego4val of num >
< postgo4val of num >
< preshadowval of dionum >
< shadowflanks of dionum >
< postshadowval of dionum >

Informacin relacionada
Para obtener ms informacin sobre Consulte
Instrucciones de procesos predefinidos TriggL - Movimiento lineal del robot con eventos
en la pgina 646
TriggC - Movimiento circular del robot con eventos
en la pgina 609
Configuracin de reflejos de datos de TriggStopProc - Genera datos de reinicio para las
reinicio
seales de disparo ante paros en la pgina 674
Retroceso por la trayectoria

StepBwdPath - Retrocede un paso a lo largo de la


trayectoria en la pgina 531

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.46 rmqheader - Encabezado de mensaje de RAPID Message Queue

3.46 rmqheader - Encabezado de mensaje de RAPID Message Queue


Utilizacin
rmqheader (RAPID Message Queue Header) se usa para leer la estructura de los
datos contenidos en un mensaje de tipo rmqmessage.
Descripcin
La parte de encabezado de un tipo de dato sin valor rmqmessage convertido al
tipo de dato de valor rmqheader.
Componentes
datatype
Tipo de dato: string
El nombre del tipo de dato utilizado, por ejemplo num, string o algn otro tipo
de dato con valor.
ndim
Number of Dimensions
Tipo de dato: num
Nmero de dimensiones de matriz.
dim1
Size of first dimension
Tipo de dato: num
El tamao de la primera dimensin. 0 si no se usa.
dim2
Size of second dimension
Tipo de dato: num
El tamao de la segunda dimensin. 0 si no se usa.
dim3
Size of third dimension
Tipo de dato: num
El tamao de la tercera dimensin. 0 si no se usa.
Ejemplos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato rmqheader.
Ejemplo 1
VAR rmqmessage message;
VAR rmqheader header;
...
RMQGetMessage message;
RMQGetMsgHeader message \Header:=header;

Copiar y convertir la informacin de rmqheader desde un mensaje rmqmessage.


Contina en la pgina siguiente
1260

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.46 rmqheader - Encabezado de mensaje de RAPID Message Queue
Continuacin
Estructura
<dataobject of rmqheader>
<datatype of string>
<ndim of num>
<dim1 of num>
<dim2 of num>
<dim3 of num>

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID Application manual - Robot communication and


Message Queue
I/O control, seccin RAPID Message Queue.
Extraer los datos de encabezado de un
rmqmessage

RMQGetMsgHeader - Obtener informacin de


encabezado de un mensaje de RMQ en la pgina 405

RMQ Message

rmqmessage - Mensaje de RAPID Message


Queue en la pgina 1262

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.47 rmqmessage - Mensaje de RAPID Message Queue

3.47 rmqmessage - Mensaje de RAPID Message Queue


Utilizacin
rmqmessage (RAPID Message Queue Message) se usa para el almacenamiento
temporal de los datos de comunicacin.
Descripcin
El tipo de dato rmqmessage es el mensaje utilizado para almacenar los datos
durante la comunicacin entre distintas tareas de RAPID o distintos clientes de
Robot Application Builder con la funcionalidad RMQ. Contiene informacin acerca
del tipo de datos enviados, las dimensiones de los datos, la identidad del remitente
y los datos en s.
Un rmqmessage es un tipo de dato de gran tamao (de aproximadamente 3.000
bytes) y se recomienda reutilizar la variable para ahorrar memoria de RAPID.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato rmqmessage.
Ejemplo 1
VAR rmqmessage rmqmessage1;
VAR string myrecdata;
...
RMQGetMsgData rmqmessage1, myrecdata;

La variable rmqmessage1 se define y puede usarse en un comando RMQ (RAPID


Message Queue). En este ejemplo, la parte de datos contenida en el rmqmessage1
se copia a la variable myrecdata.
Caractersticas
rmqmessage es un tipo de dato sin valor y no puede usarse en operaciones
basadas en valores.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID


Message Queue

Application manual - Robot communication


and I/O control, seccin RAPID Message
Queue.

RMQ Header

rmqheader - Encabezado de mensaje de


RAPID Message Queue en la pgina 1260

Extraer los datos de encabezado de un rmq- RMQGetMsgHeader - Obtener informacin


de encabezado de un mensaje de RMQ en
message
la pgina 405
Ordenar y habilitar interrupciones para un ti- IRMQMessage - Ordenar interrupciones de
po de dato en concreto
RMQ para un tipo de dato en la pgina 175
Obtener el primer mensaje de una cola de
RAPID Message Queue.

RMQGetMessage - Obtener un mensaje de


RMQ en la pgina 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 pgiesperar una respuesta del cliente.
na 416

Contina en la pgina siguiente


1262

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.47 rmqmessage - Mensaje de RAPID Message Queue
Continuacin
Para obtener ms informacin sobre

Consulte

Extraer los datos de un rmqmessage

RMQGetMsgData - Obtener la parte de datos


de un mensaje de RMQ en la pgina 402

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.48 rmqslot - Nmero de identidad de un cliente de RMQ

3.48 rmqslot - Nmero de identidad de un cliente de RMQ


Utilizacin
rmqslot (RAPID Message Queue Slot) se utiliza al comunicarse con un RMQ o
un cliente de Robot Application Builder.
Descripcin
El rmqslot es un nmero de identidad de una cola de RAPID Message Queue
configurada para una tarea de RAPID o el nmero de identidad de un cliente de
Robot Application Builder.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato rmqslot.
Ejemplo 1
VAR rmqslot rmqslot1;
RMQFindSlot rmqslot1, "RMQ_T_ROB1";
...

La variable rmqslot1 se define y puede usarse en la instruccin RMQFindSlot


para obtener el nmero de identidad de la cola de RAPID Message Queue
"RMQ_T_ROB1" configurada para la tarea de RAPID "T_ROB1".
Caractersticas
rmqslot es un tipo de dato sin valor y no puede usarse en operaciones basadas
en valores.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Descripcin de la funcionalidad de RAPID


Message Queue

Application manual - Robot communication


and I/O control, seccin RAPID Message
Queue.

Encontrar el nmero de identidad de una ta- RMQFindSlot - Buscar una identidad de ranurea de RAPID Message Queue o de un
ra para el nombre de ranura en la pgina 397
cliente de Robot Application Builder.
Enviar datos a la cola de una tarea de RAPID RMQSendMessage - Enviar un mensaje de
o de un cliente de Robot Application Builder. datos de RMQ en la pgina 412
Enviar datos a un cliente y esperar una res- RMQSendWait - Enviar un mensaje de datos
puesta del cliente.
de RMQ y esperar una respuesta en la pgina 416
Obtener el nombre de ranura de una identi- RMQGetSlotName - Obtener el nombre de
dad de ranura especificada.
un cliente de RMQ en la pgina 1035

1264

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.49 robjoint - Posicin de eje de los ejes del robot

3.49 robjoint - Posicin de eje de los ejes del robot


Utilizacin
robjoint se utiliza para definir la posicin en grados de los ejes del robot.
Descripcin
Los datos de tipo robjoint se utilizan para almacenar posiciones de eje en grados
para los ejes de robot del 1 al 6. La posicin de un eje se define como la rotacin
en grados del eje (brazo) correspondiente, en sentido positivo o negativo respecto
de la posicin de calibracin del eje.
Componentes
rax_1
robot axis 1
Tipo de dato: num
La posicin del eje 1 del robot, en grados, respecto de la posicin de calibracin.
...
rax_6
robot axis 6
Tipo de dato: num
La posicin del eje 6 del robot, en grados, respecto de la posicin de calibracin.
Estructura
< dataobject
< rax_1 of
< rax_2 of
< rax_3 of
< rax_4 of
< rax_5 of
< rax_6 of

of robjoint >
num >
num >
num >
num >
num >
num >

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Datos de posicin de ejes

jointtarget - Datos de posicin de eje en la pgina 1216

Desplazamiento hacia una posicin MoveAbsJ - Mueve el robot a una posicin de ejes
de ejes
absoluta en la pgina 240

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.50 robtarget - Datos de posicin

3.50 robtarget - Datos de posicin


Utilizacin
robtarget (robot target) se utiliza para definir la posicin del robot y de los ejes
externos.
Descripcin
Los datos de posicin se utilizan en las instrucciones de movimiento para indicar
la posicin hacia la que deben desplazarse los ejes del robot y los ejes externos.
Debido a que el robot puede alcanzar una misma posicin con mtodos diferentes,
tambin se especifica la configuracin de los ejes. De esta forma, se definen los
valores de los ejes si por algn motivo resultan ambiguas, por ejemplo en los
casos siguientes:

Si el robot se encuentra en una posicin avanzada o retrasada

Si el eje 4 est orientado hacia abajo o hacia arriba

Si el eje 6 se encuentra en una revolucin negativa o positiva


AVISO!

La posicin se define partiendo del sistema de coordenadas del objeto de trabajo,


incluidos los posibles desplazamientos de programa. Si la posicin se programa
con un objeto de trabajo distinto del utilizado en la instruccin, el robot no se
mover de la forma esperada. Asegrese de usar el mismo objeto de trabajo
que el utilizado al programar las instrucciones de movimiento. Un uso incorrecto
puede causar accidentes o daos en el robot o en otros equipos.
Componentes
trans
translation
Tipo de dato: pos
La posicin (x, y, z) del punto central de la herramienta, expresado en mm.
La posicin se especifica respecto del sistema de coordenadas del objeto actual,
incluido el desplazamiento de programa. Si no se ha especificado ningn objeto
de trabajo, se utiliza el sistema de coordenadas mundo.
rot
rotation
Tipo de dato: orient
La orientacin de la herramienta, expresada en forma de un cuaternio (q1, q2, q3
y q4).
La orientacin se especifica respecto del sistema de coordenadas del objeto actual,
incluido el desplazamiento de programa. Si no se ha especificado ningn objeto
de trabajo, se utiliza el sistema de coordenadas mundo.

Contina en la pgina siguiente


1266

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.50 robtarget - Datos de posicin
Continuacin
robconf
robot configuration
Tipo de dato: confdata
La configuracin de ejes del robot (cf1, cf4, cf6 y cfx). Esto se define en forma
del cuarto de revolucin actual de los ejes 1, 4 y 6. El primer cuarto de revolucin
positivo, de 0 a 90 se define como 0. El significado del componente cfx depende
del tipo de robot.
Para obtener ms informacin, consulte el tipo de dato confdata.
extax
external axes
Tipo de dato: extjoint
La posicin de los ejes externos.
La posicin se definede la forma siguiente para cada eje independiente (eax_a,
eax_b...eax_f):

Para los ejes de rotacin, la posicin se define como la rotacin en grados


de la posicin de calibracin.

Para los ejes lineales, la posicin se define como la distancia en mm existente


respecto de la posicin de calibracin.

Los ejes externos eax_a ... son ejes lgicos. La relacin existente entre el
nmero lgico del eje y el nmero fsico del eje se define en los parmetros del
sistema.
El valor 9E9 se utiliza para definir los ejes que no estn conectados. Si los ejes
definidos en los datos de posicin son distintos de los ejes que estn conectados
realmente en el momento de la ejecucin del programa, ocurre lo siguiente:

Si la posicin no est definida en los datos de posicin (su valor es 9E9), el


valor no se tendr en cuenta si el eje est conectado pero no activado. Sin
embargo, si el eje est activado, se genera un error.

Si la posicin est definida en los datos de posicin, a pesar de que el eje


no est conectado, el valor no se tiene en cuenta.

No se realiza ningn movimiento pero tampoco se genera ningn error en el caso


de los ejes que tengan datos de posicin vlidos pero que no estn activados.
Si algn eje externo est funcionando en el modo independiente y el robot y sus
ejes externos deben realizar algn nuevo movimiento, los datos de posicin del
eje externo en el modo independiente no deben ser 9E9 sino algn valor arbitrario
(no utilizado por el sistema).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato robtarget.
Ejemplo 1
CONST robtarget p15 := [ [600, 500, 225.3], [1, 0, 0, 0], [1, 1,
0, 0], [ 11, 12.3, 9E9, 9E9, 9E9, 9E9] ];

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.50 robtarget - Datos de posicin
Continuacin
Se define la posicin p15 de la forma siguiente:

La posicin del robot: x = 600, y = 500 y z = 225,3 mm en el sistema de


coordenadas de objeto.

La orientacin de la herramienta en la misma direccin que el sistema de


coordenadas del objeto.

La configuracin de ejes del robot es la siguiente: ejes 1 y 4 en la posicin


de 90 a 180, eje 6 en la posicin de 0 a 90.

La posicin de los ejes externos lgicos a y b, expresada en grados o mm


(en funcin del tipo de eje). Los ejes de c a f permanecen sin definir.

Ejemplo 2
VAR robtarget p20;
...
p20 := CRobT(\Tool:=tool\wobj:=wobj);
p20 := Offs(p20,10,0,0);

Se establece la posicin p20 en la misma posicin que la posicin actual del


robot, mediante una llamada a la funcin CRobT. A continuacin, se mueve la
posicin 10 mm en la direccin x.
Estructura
< dataobject of robtarget >
< trans of pos >
< x of num >
< y of num >
< z of num >
< rot of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >
< robconf of confdata >
< cf1 of num >
< cf4 of num >
< cf6 of num >
< cfx of num >
< extax of extjoint >
< eax_a of num >
< eax_b of num >
< eax_c of num >
< eax_d of num >
< eax_e of num >
< eax_f of num >

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Instrucciones de movimiento

Technical reference manual - RAPID overview, seccin


Resumen sobre RAPID - Movimiento

Contina en la pgina siguiente


1268

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.50 robtarget - Datos de posicin
Continuacin
Para obtener ms informacin Consulte
sobre
Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin


Principios de movimiento y E/S - Sistemas de coordenadas

Manejo de datos de configura- Technical reference manual - RAPID overview, seccin


cin
Principios de movimiento y E/S - Configuracin del robot
Configuracin de ejes externos Application manual - Additional axes and stand alone
controller
Qu es un cuaternio?

orient - Orientacin en la pgina 1238

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.51 shapedata - Datos de forma de zonas mundo

3.51 shapedata - Datos de forma de zonas mundo


Utilizacin
shapedata se utiliza para describir la geometra de una zona mundo.
Descripcin
Es posible definir zonas mundo con 4 formas geomtricas diferentes.

Un prisma cuyos lados son paralelos al sistema de coordenadas mundo y


que se definen mediante una instruccin WZBoxDef

Una esfera, definida mediante una instruccin WZSphDef

Un cilindro paralelo al eje z del sistema de coordenadas mundo y definido


mediante una instruccin WZCylDef

Un rea de espacio de ejes para los ejes del robot y/o los externos, definidos
por la instruccin WZHomeJointDef o WZLimJointDef

La geometra de una zona mundo se define mediante una de las instrucciones


indicadas anteriormente y la accin de una zona mundo definida mediante la
instruccin WZLimSup o WZDOSet.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato shapedata.
Ejemplo 1
VAR wzstationary pole;
VAR wzstationary conveyor;
...
PROC ...
VAR shapedata volume;
...
WZBoxDef \Inside, volume, p_corner1, p_corner2;
WZLimSup \Stat, conveyor, volume;
WZCylDef \Inside, volume, p_center, 200, 2500;
WZLimSup \Stat, pole, volume;
ENDPROC

Una conveyor se define como un prisma y se activa la supervisin de esta rea.


Se define un pole como un cilindro y se activa la supervisin de la zona. Si el
robot alcanza una de estas reas, se detiene el movimiento.
Caractersticas
shapedata es un tipo de dato sin valor.
Informacin relacionada
Para obtener ms informacin sobre Consulte
Zonas mundo

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Parmetros de
movimiento

Definicin de zonas mundo en forma WZBoxDef - Define una zona mundo con forma de
de prisma
prisma en la pgina 780

Contina en la pgina siguiente


1270

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.51 shapedata - Datos de forma de zonas mundo
Continuacin
Para obtener ms informacin sobre Consulte
Definicin de zonas mundo esfricas WZSphDef - Define una zona mundo con forma esfrica en la pgina 806
Definicin de zonas mundo cilndricas WZCylDef - Define una zona mundo con forma cilndrica en la pgina 782
Definicin de una zona mundo para
las posiciones iniciales de los ejes

WZHomeJointDef - Define una zona mundo para


las posiciones iniciales de los ejes en la pgina 795

Definicin de una zona mundo para


las posiciones lmite de los ejes

WZLimJointDef - Define una zona mundo para la limitacin de los ejes en la pgina 799

Activacin de la supervisin de lmites WZLimSup - Activa la supervisin de lmites de las


de las zonas mundo
zonas mundo en la pgina 803
Activacin de salidas digitales basa- WZDOSet - Activacin de salidas digitales basadas
das en zonas mundo
en zonas mundo en la pgina 787

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.52 signalxx - Seales digitales y analgicas

3.52 signalxx - Seales digitales y analgicas


Utilizacin
Los tipos de datos denominados como signalxx se utilizan con las seales
digitales y analgicas de entrada y salida.
Los nombres de las seales se definen en los parmetros del sistema y, por tanto,
no es necesario definirlos en el programa.
Descripcin
Tipo de dato

Se usa para

signalai

Seales analgicas de entrada

signalao

Seales analgicas de salida

signaldi

Seales digitales de entrada

signaldo

Seales digitales de salida

signalgi

Grupos de seales digitales de entrada

signalgo

Grupos de seales digitales de salida

Las variables del tipo signalxo slo contienen una referencia a la seal. El valor
se establece mediante una instruccin, por ejemplo DOutput.
Las variables del tipo signalxi contienen una referencia a una seal, as como
la posibilidad de obtener directamente el valor desde el programa, si se utiliza en
un contexto de valor.
El valor de una seal de entrada puede leerse directamente desde el programa,
como en los ejemplos siguientes:
! Digital input
IF di1 = 1 THEN ...
! Digital group input
IF gi1 = 5 THEN ...
! Analog input
IF ai1 > 5.2 THEN ...

Tambin puede usarse en asignaciones, por ejemplo:


VAR num current_value;
! Digital input
current_value := di1;
! Digital group input
current_value := gi1;
! Analog input
current_value := ai1;

Contina en la pgina siguiente


1272

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.52 signalxx - Seales digitales y analgicas
Continuacin
Limitaciones
No debe definir el tipo de dato signalxx en el programa. Sin embargo, si se llega
a hacer, aparecer un mensaje de error tan pronto como se ejecute una instruccin
o una funcin que haga referencia a esta seal. Sin embargo, s es posible
utilizarlos como parmetros al declarar una rutina.
Datos predefinidos
Las seales definidas en los parmetros del sistema estn siempre disponibles
desde el programa mediante las variables de seal predefinidas (datos instalados).
Sin embargo, debe tener en cuenta que si se define otro dato con el mismo nombre,
se pierde la posibilidad de usar la seal.
Caractersticas
Signalxo es un tipo de dato non-value. Por tanto, los datos de este tipo no son
compatibles con operaciones basadas en valores.
Signalxi es un tipo de datos de semivalor.
Gestin de errores
Pueden generarse los errores recuperables siguientes. El error puede ser
gestionado en un gestor de errores. La variable de sistema ERRNO cambia a:
ERR_NORUNUNIT si se ha perdido el contacto con la unidad.
Informacin relacionada
Para obtener ms informacin sobre Consulte
Resumen de instrucciones de entrada Technical reference manual - RAPID overview,
y salida
seccin Resumen sobre RAPID - Seales de entrada y salida
Funcionalidad de entrada/salida en ge- Technical reference manual - RAPID overview,
neral
seccin Principios de movimiento y E/S - Principios
de E/S
Configuracin de E/S

Manual de referencia tcnica - Parmetros del


sistema

Caractersticas de los tipos de datos


sin valor

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Tipos de datos

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.53 socketdev - Dispositivo de zcalo

3.53 socketdev - Dispositivo de zcalo


Utilizacin
socketdev (socket device) se usa para comunicarse con otros ordenadores en
una red o entre tareas de RAPID.
Descripcin
El dispositivo de zcalo es el manejador de un enlace de comunicaciones con otro
ordenador de una red.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato socketdev.
Ejemplo 1
VAR socketdev socket1;

Se define la variable socket1, que puede usarse en un comando de zcalo, por


ejemplo SocketCreate.
Limitaciones
Es posible declarar tantos zcalos como se desee, pero slo es posible utilizar 8
de ellos al mismo tiempo.
Caractersticas
socketdev es un tipo de dato sin valor.
Informacin relacionada
Para obtener ms informacin sobre Consulte
Comunicacin con zcalos en general Application manual - Robot communication and
I/O control
Creacin de un nuevo zcalo

SocketCreate - Crea un nuevo zcalo en la pgina 489

Caractersticas de los tipos de datos sin Technical reference manual - RAPID overview,
valor
seccin Caractersticas bsicas - Tipos de datos

1274

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.54 socketstatus - Estado de comunicacin de zcalo

3.54 socketstatus - Estado de comunicacin de zcalo


Utilizacin
socketstatus se usa para representar el estado de la comunicacin con zcalos.
Descripcin
El estado del zcalo se captura con la funcin SocketGetStatus y puede usarse
en tareas como el control del flujo de un programa o la depuracin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato socketstatus.
Ejemplo 1
VAR socketdev socket1;
VAR socketstatus state;
...
SocketCreate socket1;
state := SocketGetStatus( socket1 );

El estado de zcalo SOCKET_CREATED se almacena en la variable state.


Datos predefinidos
Las siguientes constantes de tipo socketstatus estn predefinidas:
Constante de RAPID

Valor

Estado de zcalo...

SOCKET_CREATED

Creado

SOCKET_CONNECTED

Cliente conectado a un host remoto

SOCKET_BOUND

Servidor enlazado a una direccin y un puerto


locales

SOCKET_LISTENING

Servidor a la escucha de conexiones entrantes

SOCKET_CLOSED

Cerrado

Caractersticas
socketstatus es un tipo de dato de alias de num y por tanto hereda sus
caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Comunicacin con zcalos en general

Application manual - Robot communication


and I/O control

Obtencin del estado de zcalo

SocketGetStatus - Obtiene el estado actual de


un zcalo en la pgina 1047

Tipos de datos en general, tipos de datos Technical reference manual - RAPID overview,
de alias
seccin Caractersticas bsicas - Tipos de datos

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.55 speeddata - Datos de velocidad

3.55 speeddata - Datos de velocidad


Utilizacin
speeddata se utiliza para especificar la velocidad a la que deben moverse los
ejes, tanto los del robot como los ejes externos.
Description
Los datos de velocidad se utilizan para definir las velocidades siguientes:

Velocidad a la que se mueve el punto central de la herramienta

Velocidad de reorientacin de la herramienta

Velocidad a la que se mueven los ejes lineales o de rotacin.

Cuando se combinan varios tipos de movimiento, una de las velocidades suele


limitar todos los movimientos. La velocidad de los dems movimientos se reduce
de forma que todos los movimientos terminen de ejecutarse al mismo tiempo.
La velocidad tambin est limitada por el rendimiento del robot. Este rendimiento
es distinto segn el tipo de robot y la trayectoria del movimiento.
Componentes
v_tcp
velocity tcp
Tipo de dato:num
La velocidad del punto central de la herramienta (TCP) en mm/s.
Si se utiliza una herramienta estacionaria o ejes externos coordinados, la velocidad
se especifica respecto del objeto de trabajo.
v_ori
velocity orientation
Tipo de dato: num
La velocidad de reorientacin alrededor del TCP, expresada en grados/s.
Si se utiliza una herramienta estacionaria o ejes externos coordinados, la velocidad
se especifica respecto del objeto de trabajo.
v_leax
velocity linear external axes
Tipo de dato: num
La velocidad de los ejes externos lineales, en mm/s.
v_reax
velocity rotational external axes
Tipo de dato: num
La velocidad de los ejes externos de rotacin, en grados/s.

Contina en la pgina siguiente


1276

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.55 speeddata - Datos de velocidad
Continuacin
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato speeddata.
Ejemplo 1
VAR speeddata vmedium := [ 1000, 30, 200, 15 ];

Se definen los datos de velocidad vmedium con las velocidades siguientes:

1.000 mm/s para el TCP.

30 grados/s para la reorientacin de la herramienta.

200 mm/s para los ejes externos lineales.

15 grados/s para los ejes externos de rotacin.


vmedium.v_tcp := 900;

Se cambia la velocidad del TCP a 900 mm/s.


Limitaciones
Con un movimiento muy lento, cada movimiento debe ser lo suficientemente corto
para generar un tiempo de interpolacin inferior a los 240 segundos.
Datos predefinidos
Existen varios datos de velocidad ya definidos en el mdulo de sistema
BASE_SHARED.
Datos de velocidad predefinidos para su uso en los movimientos del robot y de
los ejes externos:
Nombre

Velocidad del
TCP

Orientacin

Eje externo lineal

Eje externo de
rotacin

v5

5 mm/s

500/s

5000 mm/s

1000/s

v10

10 mm/s

500/s

5000 mm/s

1000/s

v20

20 mm/s

500/s

5000 mm/s

1000/s

v30

30 mm/s

500/s

5000 mm/s

1000/s

v40

40 mm/s

500/s

5000 mm/s

1000/s

v50

50 mm/s

500/s

5000 mm/s

1000/s

v60

60 mm/s

500/s

5000 mm/s

1000/s

v80

80 mm/s

500/s

5000 mm/s

1000/s

v100

100 mm/s

500/s

5000 mm/s

1000/s

v150

150 mm/s

500/s

5000 mm/s

1000/s

v200

200 mm/s

500/s

5000 mm/s

1000/s

v300

300 mm/s

500/s

5000 mm/s

1000/s

v400

400 mm/s

500/s

5000 mm/s

1000/s

v500

500 mm/s

500/s

5000 mm/s

1000/s

v600

600 mm/s

500/s

5000 mm/s

1000/s

v800

800 mm/s

500/s

5000 mm/s

1000/s

v1000

1.000 mm/s

500/s

5000 mm/s

1000/s

v1500

1500 mm/s

500/s

5000 mm/s

1000/s

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.55 speeddata - Datos de velocidad
Continuacin
Nombre

Velocidad del
TCP

Orientacin

Eje externo lineal

Eje externo de
rotacin

v2000

2000 mm/s

500/s

5000 mm/s

1000/s

v2500

2500 mm/s

500/s

5000 mm/s

1000/s

v3000

3000 mm/s

500/s

5000 mm/s

1000/s

v4000

4000 mm/s

500/s

5000 mm/s

1000/s

v5000

5000 mm/s

500/s

5000 mm/s

1000/s

v6000

6000 mm/s

500/s

5000 mm/s

1000/s

v7000

7000 mm/s

500/s

5000 mm/s

1000/s

vmax

*)

500/s

5000 mm/s

1000/s

*) Velocidad del TCP mxima para el tipo de robot utilizado y los valores normales
prcticos para el TCP. La funcin MaxRobSpeed de RAPID devuelve el mismo
valor. Si utiliza valores de TCP extremadamente altos en la base de coordenadas
de la herramienta, cree sus propios datos de velocidad con una velocidad de TCP
mayor que la que devuelve MaxRobSpeed.
Datos de velocidad predefinidos para su uso en los movimientos de ejes externos
de rotacin con la instruccin MoveExtJ.
Nombre

Velocidad del
TCP

Orientacin

Eje externo lineal

Eje externo de
rotacin

vrot1

0 mm/s

0/s

0 mm/s

1/s

vrot2

0 mm/s

0/s

0 mm/s

2/s

vrot5

0 mm/s

0/s

0 mm/s

5/s

vrot10

0 mm/s

0/s

0 mm/s

10/s

vrot20

0 mm/s

0/s

0 mm/s

20/s

vrot50

0 mm/s

0/s

0 mm/s

50/s

vrot100

0 mm/s

0/s

0 mm/s

100/s

Datos de velocidad predefinidos para su uso en los movimientos de ejes externos


lineales con la instruccin MoveExtJ.
Nombre

Velocidad del
TCP

Orientacin

Eje externo lineal

Eje externo de
rotacin

vlin10

0 mm/s

0/s

10 mm/s

0/s

vlin20

0 mm/s

0/s

20 mm/s

0/s

vlin50

0 mm/s

0/s

50 mm/s

0/s

vlin100

0 mm/s

0/s

100 mm/s

0/s

vlin200

0 mm/s

0/s

200 mm/s

0/s

vlin500

0 mm/s

0/s

500 mm/s

0/s

lin1000

0 mm/s

0/s

1.000 mm/s

0/s

Contina en la pgina siguiente


1278

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.55 speeddata - Datos de velocidad
Continuacin
Estructura
< dataobject of speeddata >
< v_tcp of num >
< v_ori of num >
< v_leax of num >
< v_reax of num >

Informacin relacionada
Para obtener ms informacin Consulte
sobre
Instrucciones de posicionamiento

Technical reference manual - RAPID overview, seccin


Resumen sobre RAPID - Movimiento

Movimiento y velocidad en ge- Technical reference manual - RAPID overview, seccin


neral
Principios de movimiento y E/S - Posicionamiento durante
la ejecucin del programa
Definicin de la velocidad m- VelSet - Cambia la velocidad programada en la pgina 709
xima
Velocidad mxima del TCP pa- MaxRobSpeed - Velocidad mxima del robot en la pgina 959
ra el robot actual

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.56 stoppointdata - Datos de punto de paro

3.56 stoppointdata - Datos de punto de paro


Utilizacin
stoppointdata se utiliza para especificar cmo debe terminar una posicin, es
decir, a qu distancia de la posicin programada deben encontrarse los ejes antes
de iniciar un movimiento hasta la posicin siguiente.
Descripcin
Una posicin puede terminar en forma de un punto de paso o un punto de paro.
El punto de paso significa que la posicin programada no llega a alcanzarse nunca.
La instruccin especifica una zona para el movimiento, definiendo una trayectoria
de esquina. En lugar de dirigirse hacia la posicin programada, la direccin del
movimiento toma la forma de una trayectoria de esquina antes de alcanzar la
posicin. Consulte Tipos de datos - zonedata.
Un punto de paro significa que los ejes del robot y los ejes externos deben alcanzar
la posicin especificada antes de que continen con el movimiento siguiente. Se
considera que el robot ha alcanzado un punto de paro cuando se satisfacen los
criterios de convergencia del punto. Los criterios de convergencia son la velocidad
y la posicin. Tambin es posible especificar criterios de temporizacin. Para el
punto de parada fine, consulte tambin el tipo de dato zonedata.
Es posible definir tres tipos de puntos de paro mediante stoppointdata.

El tipo de punto de paro en posicin se define como un porcentaje de los


criterios de convergencia (posicin y velocidad) para el punto de paro fine
predefinido. El tipo en posicin tambin utiliza un tiempo mnimo y un
tiempo mximo. El robot espera el cumplimiento de los criterios de posicin
y velocidad, durante al menos el tiempo mnimo y como mucho el tiempo
mximo.

En los puntos de paro de tiempo de paro, se espera siempre el tiempo


especificado sin dejar el punto de paro.

Los puntos de paro de tiempo de seguimiento son puntos de paro de un


tipo especial que se utilizan para coordinar los movimientos del robot con
un transportador.

Los datos de tipo stoppointdata tambin determinan cmo deben sincronizarse


los movimientos con la ejecucin de RAPID. Si el movimiento se sincroniza, la
ejecucin de RAPID espera a un evento de tipo en posicin cuando el robot est
en posicin. Si el movimiento no est sincronizado, la ejecucin de RAPID recibe
un evento de precaptura casi medio segundo antes de que el robot fsico alcance
la posicin programada. Cuando la ejecucin del programa recibe un evento en
posicin o precaptura, contina con la instruccin siguiente. Cuando llega el
evento precaptura, el robot sigue teniendo un margen de maniobra amplio.
Cuando llega el evento en posicin, el robot est cerca de la posicin programada.
Con los tipos tiempo de paro y tiempo de seguimiento, la instruccin siguiente
empieza a ejecutarse al mismo tiempo que empieza la cuenta atrs del tiempo de
parada y del tiempo de seguimiento, respectivamente. Sin embargo, para el tipo

Contina en la pgina siguiente


1280

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.56 stoppointdata - Datos de punto de paro
Continuacin
en posicin, la siguiente instruccin se inicia cuando se cumplen los criterios de
convergencia.
Si utiliza instrucciones de movimiento con el argumento \Conc, no se realiza
ninguna sincronizacin, de modo que la ejecucin real de la instruccin de
movimiento estar preparada inmediatamente.
Velocidad del robot

Velocidad

En posicin
Velocidad de referencia

Tiempo
Retraso constante
Tiempo mn./mx.
Tiempo de paro
Tiempo de seguimiento

xx0500002374_es

La figura anterior representa la terminacin de los puntos de paro. La velocidad


del robot no reduce la velocidad lineal. El servo del robot siempre va por delante
del robot fsico. Esto se representa como el retraso constante en la figura anterior.
El retraso constante es de aproximadamente 0,1 segundos. Los elementos de
temporizacin de stoppointdata utilizan como disparador una velocidad de
referencia. La medicin de tiempo comienza cuando la velocidad de referencia es
cero. Por tanto, el tiempo de los elementos de temporizacin siempre incluyen el
retraso constante. La consecuencia es que no tiene sentido utilizar valores
inferiores al retraso constante.
Componentes
type
type of stop point
Tipo de dato: stoppoint
La tabla siguiente define el tipo de stoppoint.
1 (inpos)

El movimiento termina como un tipo de punto de parada "en


posicin". Activa el elemento inpos de stoppointdata.
No se utilizan los datos de zona de la instruccin, sino fine
o z0.

2 (stoptime)

El movimiento termina con un tipo de punto de paro de


"tiempo de paro". Activa el elemento stoptime de stoppointdata. No se utilizan los datos de zona de la instruccin, sino fine o z0.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.56 stoppointdata - Datos de punto de paro
Continuacin
3 (followtime)

El movimiento termina con un tipo de tiempo exacto de seguimiento del transportador. Los datos de zona de la instruccin se utilizan cuando el robot abandona el transportador.
Activa el elemento followtime de stoppointdata.

El tipo de dato stoppoint es un tipo de dato de alias de num. Se utiliza para elegir
el tipo de punto de paro y qu elementos de datos de stoppointdata deben
utilizarse. Sus constantes predefinidas son:
Valor

Constante simblica

Comentario

inpos

Nmero de tipo en posicin

stoptime

Nmero de tipo de tiempo de paro

fllwtime

Nmero de tipo de tiempo de seguimiento

progsynch
program synchronization
Tipo de dato: bool
Sincronizacin con la ejecucin del programa de RAPID.

TRUE: El movimiento est sincronizado con la ejecucin de RAPID. El


programa no empieza a ejecutar la instruccin siguiente hasta que se ha
alcanzado el punto de paro.

FALSE: El movimiento no est sincronizado con la ejecucin de RAPID. El


programa empieza a ejecutar la instruccin siguiente antes de alcanzar el
punto de paro.

Si utiliza instrucciones de movimiento con el argumento \Conc, no se realiza


ninguna sincronizacin de forma independiente de los datos de progsynch, de
modo que la instruccin de movimiento real estar siempre preparada
inmediatamente.
inpos.position
position condition for TCP
Tipo de dato: num
La condicin de posicin (el radio) del TCP en porcentaje de un punto de paro
fine normal.
inpos.speed
speed condition for TCP
Tipo de dato: num
La condicin de velocidad del TCP en porcentaje de un punto de paro fine normal.
inpos.mintime
minimum wait time
Tipo de dato: num
El tiempo de espera mnimo, en segundos, antes de alcanzar la posicin. Se utiliza
para hacer que el robot espere en el punto al menos el tiempo especificado. El
valor mximo es de 20,0 segundos.
Contina en la pgina siguiente
1282

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.56 stoppointdata - Datos de punto de paro
Continuacin
inpos.maxtime
maximum wait time
Tipo de dato: num
El tiempo mximo, en segundos, que se espera a que se cumplan los criterios de
convergencia. Se utilizan para garantizar que el robot no se quede parado en el
punto si se han establecido condiciones de velocidad y posicin demasiado
estrictas. El valor mximo es de 20,0 segundos.
stoptime
stop time
Tipo de dato: num
El tiempo, en segundos, que el TCP permanece parado en la posicin antes de
empezar el movimiento siguiente. Rango vlido de 0 a 20 s, resolucin 0,001 s.
followtime
follow time
Tipo de dato: num
El tiempo, en segundos, que el TCP sigue al transportador. Rango vlido de 0 a
20 s, resolucin 0,001 s.
signal
Tipo de dato: string
Reservado para un uso futuro.
relation
Tipo de dato: opnum
Reservado para un uso futuro.
checkvalue
Tipo de dato: num
Reservado para un uso futuro.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato
stoppointdata.
Inpos
VAR stoppointdata my_inpos := [ inpos, TRUE, [ 25, 40, 0.1, 5], 0,
0, "", 0, 0];
MoveL *, v1000, fine \Inpos:=my_inpos, grip4;

Se definen los datos del punto de paro my_inpos con las caractersticas siguientes:

El punto de paro es de tipo "en posicin", inpos.

El punto de paro estar sincronizado con la ejecucin del programa de


RAPID, TRUE.

El criterio de distancia del punto de paro es del 25% de la distancia definida


para el punto de paro fine, 25.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.56 stoppointdata - Datos de punto de paro
Continuacin

El criterio de velocidad del punto de paro es del 40% de la velocidad definida


para el punto de paro fine, 40.

El tiempo mnimo de espera antes de la convergencia es 0,1 s, 0.1.

El tiempo mximo que se espera a la convergencia es 5 s, 5.

El robot se mueve hacia la posicin programada hasta que se cumple uno de los
criterios de posicin o velocidad.
my_inpos.inpos.position := 40;
MoveL *, v1000, fine \Inpos:=my_inpos, grip4;

Se ajusta el criterio de distancia del punto de paro al 40%.


Stoptime
VAR stoppointdata my_stoptime := [ stoptime, FALSE, [ 0, 0, 0, 0],
1.45, 0, "", 0, 0];
MoveL *, v1000, fine \Inpos:=my_stoptime, grip4;

Se definen los datos del punto de paro my_stoptime con las caractersticas
siguientes:

El punto de paro es de tipo de tiempo de espera, stoptime.

El punto de paro no estar sincronizado con la ejecucin del programa de


RAPID, FALSE.

El tiempo de espera en posicin es de 1,45 s.

El robot se mueve hacia la posicin programada hasta que llega el evento de


precaptura. Se ejecuta la siguiente instruccin de RAPID. Si es una instruccin de
movimiento, el robot se detiene durante 1,45 segundos antes de empezar el
movimiento siguiente.
my_stoptime.stoptime := 6.66;
MoveL *, v1000, fine \Inpos:=my_stoptime, grip4;

Se ajusta el tiempo de paro del punto de paro a 6,66 s. Si la siguiente instruccin


de RAPID es una instruccin de movimiento, el robot se detiene durante 6,66 s.
Followtime
VAR stoppointdata my_followtime := [ fllwtime, TRUE, [ 0, 0, 0,
0], 0, 0.5, "", 0, 0];
MoveL *, v1000, z10 \Inpos:=my_followtime, grip6\wobj:=conveyor1;

Se definen los datos del punto de paro my_followtime con las caractersticas
siguientes:

El punto de paro es de tipo de tiempo de seguimiento, fllwtime.

El punto de paro estar sincronizado con la ejecucin del programa de


RAPID, TRUE.

El tiempo de seguimiento del punto de paro es de 0,5 s, 0.5.

El robot sigue al transportador durante 0,5 s antes de dejarlo, con una zona de 10
mm, z10.
my_followtime.followtime := 0.4;

Se ajusta el tiempo de seguimiento del punto de paro a 0,4 s.

Contina en la pgina siguiente


1284

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.56 stoppointdata - Datos de punto de paro
Continuacin
Datos predefinidos
Existen varios datos de punto de paro ya definidos en el mdulo de sistema
BASE_SHARED.
Puntos de paro en posicin
Nombre

Progsynch

Posicin Velocidad

Mintime

Maxtime

Stoptime

Followtime

inpos20

TRUE

20%

20%

0s

2s

inpos50

TRUE

50%

50%

0s

2s

inpos100

TRUE

100%

100%

0s

2s

(inpos100 tiene los mismos criterios de convergencia que el punto de paro fine)
Puntos de paro de tiempo de paro
Nombre

Progsynch

Posicin

Veloci- Mintime
dad

Maxtime

Stopti- Followtime
me

stoptime0_5 FALSE

0.5 s

stoptime1_0 FALSE

1.0 s

stoptime1_5 FALSE

1.5 s

Puntos de paro de tiempo de seguimiento


Nombre

Progsynch

Posicin

Veloci- Mintime
dad

Maxtime

Stoptime

Followtime

fllwtime0_5 TRUE

0.5 s

fllwtime1_0 TRUE

1.0 s

fllwtime1_5 TRUE

1.5 s

Estructura
< data object of stoppointdata >
< type of stoppoint >
< progsynch of bool >
< inpos of inposdata >
< position of num >
< speed of num >
< mintime of num >
< maxtime of num >
< stoptime of num >
< followtime of num >
< signal of string >
< relation of opnum >
< checkvalue of num >

Informacin relacionada
Para obtener ms informacin sobre Consulte
Instrucciones de posicionamiento

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Movimiento

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.56 stoppointdata - Datos de punto de paro
Continuacin
Para obtener ms informacin sobre Consulte
Movimientos/trayectorias en general

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa

Puntos de paro o de paso

zonedata - Datos de zonas en la pgina 1331

1286

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.57 string - Cadenas de caracteres

3.57 string - Cadenas de caracteres


Utilizacin
string se utiliza con cadenas de caracteres.
Descripcin
Las cadenas de caracteres estn compuestas por varios caracteres (un mximo
de 80) encerrados entre comillas (""), por ejemplo "Esto es una cadena de
caracteres".
Si desea incluir comillas dentro de la cadena de caracteres, debe escribirlas dos
veces, por ejemplo "Esta cadena contiene un carcter "" de comilla doble".
Si desea incluir una barra invertida dentro de la cadena de caracteres, debe
escribirla dos veces, por ejemplo "Esta cadena contiene un carcter \\".
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato string.
Ejemplo 1
VAR string text;
...
text := "start welding pipe 1";
TPWrite text;

El texto start welding pipe 1 se escribe en el FlexPendant.


Limitaciones
Una cadena puede tener de 0 a 80 caracteres, incluidas las comillas o las barras
invertidas que se utilicen.
Las cadenas de caracteres pueden contener cualquiera de los caracteres
especificados en la norma ISO 8859-1 (Latin-1), adems de caracteres de control
(caracteres ajenos al estndar ISO 8859-1 (Latin-1) y con cdigos numricos de
0 a 255).
Datos predefinidos
El sistema dispone de varias constantes de cadena de caracteres predefinidas,
que pueden usarse junto con las funciones para cadenas de caracteres. Consulte
el ejemplo StrMemb.
Nombre

Conjunto de caracteres

STR_DIGIT

<digit> ::=
0|1|2|3|4|5|6|7|8|9

STR_UPPER

<upper case letter> ::=


A|B|C|D|E|F|G|H|I|J
|K|L|M|N|O|P|Q|R|S|T
|U|V|W|X|Y|Z||||
||||||||||
| | | 1)| | | | | | |
| | | | | 2) | 3)

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.57 string - Cadenas de caracteres
Continuacin
Nombre

Conjunto de caracteres

STR_LOWER

<lower case letter> ::=


a|b|c|d|e|f|g|h|i|j
|k|l|m|n|o|p|q|r|s|t
|u|v|w|x|y|z||||
||||||||||
| | | 1) | | | | | | |
| | | | | 2) | 3) | | -

STR_WHITE

<blank character> ::=

1) Letra "eth" islandesa.


2) Letra Y con acento agudo.
3) Letra "thorn" islandesa.
Las constantes siguientes ya estn definidas en el mdulo de sistema
BASE_SHARED:
CONST string diskhome := "HOME:";
! For old programs from S4C system
CONST string ram1disk := "HOME:";
CONST string disktemp := "TEMP:";
CONST string flp1 := "flp1:";
CONST string stSpace := " ";
CONST string stEmpty := "";

stEmpty puede resultar til a la hora de ahorrar memoria si se utiliza un nmero


elevado de cadenas vacas, por ejemplo:
TPReadFK reg1, "warm start required", stEmpty, stEmpty, stEmpty,
stEmpty, "OK";

Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Operaciones con cadenas de carac- Technical reference manual - RAPID overview, seccin
teres
Caractersticas bsicas - Expresiones
Valores de cadena de caracteres

Technical reference manual - RAPID overview, seccin


Caractersticas bsicas - Elementos bsicos

Instrucciones que utilizan juegos


de caracteres

StrMemb - Comprueba si un carcter pertenece a un


conjunto en la pgina 1076

1288

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.58 stringdig - Cadena de caracteres con slo dos dgitos

3.58 stringdig - Cadena de caracteres con slo dos dgitos


Utilizacin
stringdig se utiliza para representar enteros positivos grandes en una cadena,
usando nicamente dgitos.
Este tipo de dato ha sido introducido dado que el tipo de dato num no es capaz de
manejar enteros positivos superiores a 8.388.608 con una representacin exacta.
Descripcin
Un dato stringdig slo puede contener los dgitos del 0 al 9 encerrados entre
guiones (""), por ejemplo "0123456789".
El tipo de dato stringdig puede manejar enteros positivos hasta 4.294.967.295.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato stringdig.
Ejemplo 1
VAR stringdig digits1;
VAR stringdig digits2;
VAR bool flag1;
...
digits1 ="09000000";
digits2 = "9000001";
flag1 := StrDigCmp (digits1, LT, digits2);

El dato flag1 cambia a TRUE porque 09000000 es inferior a 9000001.


Caractersticas
stringdig es un tipo de dato de alias de string y por tanto hereda la mayor
parte de sus caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Valores de cadena de caracteres

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Elementos
bsicos

Cadenas

string - Cadenas de caracteres en la pgina1287

Valores numricos

num - Valores numricos en la pgina 1234

Operador de comparacin

opnum - Operador de comparacin en la pgina 1237StrDigCmp - Comparar dos cadenas


que slo contienen dgitos en la pgina 1066

Comparar cadenas que slo contienen dgi- StrDigCmp - Comparar dos cadenas que slo
tos
contienen dgitos en la pgina 1066

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.59 switch - Optional parameters

3.59 switch - Optional parameters


Utilizacin
switch se utiliza para los parmetros opcionales.
Descripcin
El tipo especial switch (slo) puede ser asignado a parmetros opcionales y
proporciona una forma de usar argumentos modificadores, es decir, argumentos
que slo se especifican por nombre (no por valor). No es posible transmitir un
valor a un parmetro modificador. La nica forma de usar un parmetro modificador
es comprobar su presencia mediante la funcin predefinida Present.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato switch.
Ejemplo 1
PROC my_routine(\switch on | \switch off)
....
IF Present (off) THEN
....
ENDIF
ENDPROC

En funcin de los argumentos utilizados por la rutina que llama a my_routine, el


flujo del programa puede ser controlado.
Caractersticas
switch es un tipo de dato sin valor y no puede usarse en operaciones basadas
en valores.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Parmetros

Technical reference manual - RAPID overview, seccin Caractersticas bsicas - Rutinas.

Cmo comprobar si est presente un parme- Present - Comprueba si se est usando un


tro opcional
parmetro opcional en la pgina 1008

1290

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.60 symnum - Nmero simblico

3.60 symnum - Nmero simblico


Utilizacin
symnum (Symbolic Number) se utiliza para representar un entero con una constante
simblica.
Descripcin
Las constantes de symnum se han diseado para usarlas al comprobar el valor de
retorno de las funciones OpMode y RunMode. Consulte el ejemplo siguiente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato symnum.
Ejemplo 1
IF RunMode() = RUN_CONT_CYCLE THEN
..
ELSE
..
ENDIF

Datos predefinidos
Se han definido las constantes simblicas siguientes del tipo de dato symnum.
Puede usarlas a la hora de comprobar valores de retorno de las funciones OpMode
y RunMode.
Valor

Constante simblica

Comentario

RUN_UNDEF

Modo de ejecucin no definido

RUN_CONT_CYCLE

Modo de ejecucin continuo o en modo ciclo

RUN_INSTR_FWD

Modo de ejecucin de avance de instrucciones

RUN_INSTR_BWD

Modo de ejecucin hacia atrs

RUN_SIM

Modo de ejecucin simulado

RUN_STEP_MOVE

Instrucciones de movimiento en ejecucin hacia delante e instrucciones lgicas en modo de ejecucin


continuo

Valor

Constante simblica

Comentario

OP_UNDEF

Modo de funcionamiento no definido

OP_AUTO

Modo de funcionamiento automtico

OP_MAN_PROG

Modo de funcionamiento manual a 250 mm/seg como


mximo

OP_MAN_TEST

Modo de funcionamiento manual a mxima velocidad,


100%

Caractersticas
Symnum es un tipo de dato de alias de num y por tanto hereda sus caractersticas.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.60 symnum - Nmero simblico
Continuacin
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipos de datos en general, tipos de datos Technical reference manual - RAPID overview,
de alias
seccin Caractersticas bsicas - Tipos de datos

1292

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.61 syncident - Identidad de punto de sincronizacin

3.61 syncident - Identidad de punto de sincronizacin


Utilizacin
syncident (synchronization identity) se utiliza para especificar el nombre de un
punto de sincronizacin. El nombre del punto de sincronizacin tendr el mismo
nombre (identidad) de los datos declarados con el tipo syncident.
Descripcin
syncident se utiliza para identificar un punto de programa en el que la tarea de
programa actual esperar a que las tareas de programa cooperantes alcancen el
mismo punto de sincronizacin.
El nombre (la identidad) del dato del tipo syncident debe ser el mismo en todas
las tareas de programa cooperantes.
Los datos del tipo syncident se utilizan en las instrucciones WaitSyncTask,
SyncMoveOn y SyncMoveOff.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato syncident.
Ejemplo 1
Ejemplo de programa de la tarea de programa ROB1
PERS tasks task_list{3} := [ ["STN1"], ["ROB1"], ["ROB2"] ];
VAR syncident sync1;
WaitSyncTask sync1, task_list;

En el momento de la ejecucin de la instruccin WaitSyncTask en la tarea de


programa ROB1, la ejecucin de dicha tarea de programa esperar a que las dems
tareas de programa, STN1 y ROB2, hayan alcanzado su instruccin WaitSyncTask
correspondiente con el mismo punto de sincronizacin (reunin), sync1.
Estructura
syncident es un tipo de dato sin valor.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Especificacin de tareas de programa coope- tasks - Tareas de programa de RAPID en la


rativas
pgina 1298
Espera de un punto de sincronizacin con
otras tareas

WaitSyncTask - Espera en un punto de sincronizacin con otras tareas de programa en


la pgina 736

Inicio de movimientos sincronizados coordi- SyncMoveOn - Inicia los movimientos sincronados


nizados coordinados en la pgina 570
Fin de movimientos sincronizados coordina- SyncMoveOff - Finaliza los movimientos sindos
cronizados coordinados en la pgina 563

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.62 Datos del sistema - Valores actuales de los datos del sistema de RAPID

3.62 Datos del sistema - Valores actuales de los datos del sistema de RAPID
Utilizacin
System data refleja los valores actuales de los datos del sistema de RAPID, el
nmero actual de recuperacin en caso de error ERRNO, el nmero actual de
interrupcin INTNO, etc.
Estos datos pueden ser utilizados y ledos por el programa. Pueden usarse para
leer el estado actual, por ejemplo, el desplazamiento actual del programa.
C_MOTSET
La variable C_MOTSET del tipo de dato motsetdata refleja los valores de
movimiento actuales:
Descripcin

Tipo de dato Cambiado por Ms informacin

Parmetros actuales motsetdata Instrucciones


de movimiento, es decir:

motsetdata - Datos de parmetros


de movimiento en la pgina 1229

Ajuste de velocidad y
velocidad mxima

VelSet

VelSet - Cambia la velocidad programada en la pgina 709

Ajuste de aceleracin

AccSet

AccSet - Reduce la aceleracin en


la pgina 17

Movimientos cerca de
puntos singulares

SingArea

SingArea - Define el mtodo de interpolacin alrededor de puntos


singulares en la pgina 476

Control de configuracin lineal


Control de configuracin de ejes

ConfL
ConfJ

ConfL - Monitoriza la configuracin


durante el movimiento lineal en la
pgina 65
ConfJ - Controla la configuracin
durante el movimiento de los ejes
en la pgina 63

Resolucin de la trayectoria

PathResol

PathResol - Ajusta la resolucin de


la trayectoria en la pgina 333

Ajuste de la supervisin de movimiento

MotionSup

MotionSup - Desactiva/activa la
supervisin del movimiento en la
pgina 237

Reduccin de la aceleracin y deceleracin


del TCP a lo largo de
la trayectoria de movimiento

PathAccLim

PathAccLim - Reduce la aceleracin del TCP a lo largo de la trayectoria en la pgina 312

Modificacin de la
orientacin de la herramienta durante la interpolacin circular

CirPathMode CirPathMode - Reorientacin de la


herramienta durante trayectorias
circulares en la pgina 40

Reduccin de la aceleracin de la carga til


en el sistema de coordenadas mundo

WorldAccLim WorldAccLim - Control de aceleracin en el sistema de coordenadas


mundo en la pgina 755

Contina en la pgina siguiente


1294

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.62 Datos del sistema - Valores actuales de los datos del sistema de RAPID
Continuacin
C_PROGDISP
La variable C_PROGDISP del tipo de dato progdisp refleja el desplazamiento
actual del programa y el offset de los ejes externos:
Descripcin

Tipo de dato Cambiado por Ms informacin

Desplazamiento de
progdisp
programa actual para
los ejes del robot

Offset actual de los


ejes externos

Instrucciones: progdisp - Desplazamiento de programa en la pgina 1252


PDispSet

PDispSet - Activa un desplazamiento de programa a partir de una base


de coordenadas conocida en la pgina 342

PDispOn

PDispOn - Activa el desplazamiento


de programa en la pgina 337

PDispOff

PDispOff - Desactiva el desplazamiento de programa en la pgina 336

EOffsSet

EOffsSet - Activa un offset de ejes


externos a partir de valores conocidos en la pgina 94

EOffsOn

EOffsOn - Activa un offset de ejes


externos en la pgina 92

EOffsOff

EOffsOff - Desactiva un offset de


ejes externos en la pgina 91

ERRNO
La variable ERRNO del tipo de dato errnum refleja el nmero actual de recuperacin
en caso de error:
Descripcin

Tipo de dato Cambiado por Ms informacin

El ltimo error que ha errnum


tenido lugar.

El sistema

Technical reference manual - RAPID


overview, seccin Resumen sobre
RAPID - Recuperacin en caso de
error
intnum - Identidad de interrupcin
en la pgina 1212

INTNO
La variable INTNO del tipo de dato intnum refleja el nmero actual de interrupcin:
Descripcin

Tipo de dato Cambiado por Ms informacin

La ltima interrupcin intnum


que ha tenido lugar.

El sistema

Technical reference manual - RAPID


overview, seccin Resumen sobre
RAPID - Interrupciones
intnum - Identidad de interrupcin
en la pgina 1212

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.62 Datos del sistema - Valores actuales de los datos del sistema de RAPID
Continuacin
ROB_ID
La variable ROB_ID del tipo de dato mecunit contiene una referencia al robot con
TCP (si lo hay) de la tarea de programa actual.
Descripcin

Tipo de dato Cambiado por Ms informacin

Referencia al robot (si mecunit


corresponde) en la tarea de programa actual. Comprubelo antes de usar con TaskRunRob ()

El sistema

mecunit - Unidad mecnica en la


pgina 1227

1296

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.63 taskid - Identificacin de tareas

3.63 taskid - Identificacin de tareas


Utilizacin
taskid se utiliza para identificar tareas de programa disponibles en el sistema.
Los nombres de las tareas de programa se definen en los parmetros del sistema
y, por tanto, no es necesario definirlos en el programa.
Descripcin
Los datos del tipo taskid slo contienen una referencia a la tarea de programa.
Limitaciones
No debe definir los datos de tipo taskid en el programa. Sin embargo, s es
posible utilizarlos como parmetros al declarar una rutina.
Datos predefinidos
Las tareas de programa definidas en los parmetros del sistema estn siempre
disponibles desde el programa (datos instalados).
Existen variables predefinidas con el tipo de dato taskid para todas las tareas
de programa del sistema. La identificacin de la variable ser nombre_tarea+ID.
Por ejemplo, para la tarea T_ROB1 la identificacin de la tarea es T_ROB1Id, T_ROB2
- T_ROB2Id etc.
Caractersticas
taskid es un tipo de dato sin valor. Esto significa que los datos de este tipo no
son compatibles con operaciones basadas en valores.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Guardado de mdulos de programa

Save - Guarda un mdulo de programa en la


pgina 422

Configuracin de tareas de programa

Manual de referencia tcnica - Parmetros


del sistema

Caractersticas de los tipos de datos sin va- Technical reference manual - RAPID overview,
lor
seccin Caractersticas bsicas - Tipos de
datos

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.64 tasks - Tareas de programa de RAPID

3.64 tasks - Tareas de programa de RAPID


Utilizacin
tasks se utiliza para especificar varias tareas de programa de RAPID.
Descripcin
Para especificar varias tareas de programa de RAPID, es posible indicar el nombre
de cada tarea como una cadena. En este caso, una matriz del tipo de dato tasks
puede contener todos los nombres de las tareas.
A continuacin, esta lista de tareas puede ser utilizada en las instrucciones
WaitSyncTask y SyncMoveOn.
Nota
Estas instrucciones exigen que los datos estn definidos como variables PERS
globales del sistema y disponibles en todas las tareas cooperantes.
Componentes
El tipo de dato contiene los componentes siguientes.
taskname
Tipo de dato: string
El nombre de una tarea de programa de RAPID, especificado en una cadena.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato tasks.
Ejemplo 1
Ejemplo de programa de la tarea de programa T_ROB1
PERS tasks task_list{3} := [ ["T_STN1"], ["T_ROB1"], ["T_ROB2"] ];
VAR syncident sync1;
WaitSyncTask sync1, task_list;

En el momento de la ejecucin de la instruccin WaitSyncTask en la tarea de


programa T_ROB1, la ejecucin de dicha tarea de programa esperar a que las
dems tareas de programa, T_STN1 y T_ROB2, hayan alcanzado su instruccin
WaitSyncTask correspondiente con el mismo punto de sincronizacin (reunin),
sync1.
Estructura
<dataobject of tasks>
<taskname of string>

Informacin relacionada
Para obtener ms informacin
sobre

Consulte

Identidad para punto de sincroni- syncident - Identidad de punto de sincronizacin en la


zacin
pgina 1293

Contina en la pgina siguiente


1298

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.64 tasks - Tareas de programa de RAPID
Continuacin
Para obtener ms informacin
sobre

Consulte

Espera de un punto de sincroniza- WaitSyncTask - Espera en un punto de sincronizacin


cin con otras tareas
con otras tareas de programa en la pgina 736
Inicio de movimientos sincroniza- SyncMoveOn - Inicia los movimientos sincronizados
dos coordinados
coordinados en la pgina 570
Fin de movimientos sincronizados SyncMoveOff - Finaliza los movimientos sincronizados
coordinados
coordinados en la pgina 563

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.65 testsignal - Seal de prueba

3.65 testsignal - Seal de prueba


Utilizacin
El tipo de dato testsignal se utiliza cuando se realiza un test del sistema de
movimiento del robot.
Descripcin
El sistema de robot cuenta con varias seales de test predefinidas. El tipo de dato
testsignal puede usarse para simplificar la programacin de la instruccin
TestSignDefine.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato testsignal.
Ejemplo 1
TestSignDefine 2, speed, Orbit, 2, 0;

La constante predefinida speed se usa para leer la velocidad actual del eje 2 en
el manipulador orbit.
Datos predefinidos
El sistema tiene predefinidas las seales de test siguientes para los ejes del
manipulador externo. Todos los datos se indican en unidades SI y se miden en el
lado del motor del eje.
Constante simblica

Valor

Unidad

speed

rad/s

torque_ref

Nm

resolver_angle

rad

speed_ref

rad/s

dig_input1

102

01

dig_input2

103

01

Caractersticas
testsignal es un tipo de dato de alias de num y por tanto hereda sus
caractersticas.
Informacin relacionada
Para obtener ms informacin so- Consulte
bre
Definicin de una seal de test

TestSignDefine - Define una seal de prueba en la


pgina 588

Lectura de una seal de prueba

TestSignRead - Obtiene el valor de una seal de test


en la pgina 1096

Puesta a cero de seales de prueba TestSignReset - Restablece todas las definiciones


de seales de prueba en la pgina 590

1300

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.66 tooldata - Datos de herramientas

3.66 tooldata - Datos de herramientas


Utilizacin
tooldata se utiliza para describir las caractersticas de una herramienta, por
ejemplo, una pistola de soldadura o una pinza. Estas caractersticas son la posicin
y orientacin del TCP (punto central de la herramienta) y las caractersticas fsicas
de la carga de la herramienta.
Si la herramienta est fija en el espacio (una herramienta estacionaria), los datos
de la herramienta definen primero la posicin y orientacin de esta herramienta
en el espacio, TCP. A continuacin, describe la carga de la pinza movida por el
robot.
Descripcin
Los datos de la herramienta afectan de las formas siguientes a los movimientos
del robot:

El punto central de la herramienta (TCP) se refiere a un punto que seguir


la trayectoria especificada y el rendimiento de velocidad deseado. Si se
reorienta la herramienta o se utilizan los ejes externos coordinados, slo
este punto seguir la trayectoria deseada a la velocidad programada.

Si se utiliza una herramienta estacionaria, la velocidad y la trayectoria


programadas sern las del objeto de trabajo sostenido por el robot.

Las posiciones programadas se refieren a la posicin del TCP actual y la


orientacin en relacin con el sistema de coordenadas de la herramienta.
Esto significa que si por ejemplo, se reemplaza una herramienta porque est
daada, sigue siendo posible utilizar el programa anterior con slo redefinir
el sistema de coordenadas de la herramienta.

Los datos de la herramienta tambin se usan en los movimientos del robot para:

Definir el TCP que no debe moverse cuando se reorienta el robot.

Definir el sistema de coordenadas de la herramienta para facilitar el


acercamiento o la rotacin de las direcciones de coordenadas de la
herramienta.
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 definicin
incorrecta de los datos de carga puede dar lugar a la sobrecarga de la estructura
mecnica del robot.
Cuando se especifican datos de carga incorrectos, este hecho suele tener las
consecuencias siguientes:

El robot no funcionar a su capacidad mxima

Peor exactitud de la trayectoria, con riesgo de sobrepasar posiciones

Riesgo de sobrecarga de la estructura mecnica

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.66 tooldata - Datos de herramientas
Continuacin
Componentes
robhold
robot hold
Tipo de dato: bool
Define si el robot es el que est sosteniendo la herramienta:

TRUE: El robot sostiene la herramienta.

FALSE: El robot no sostiene la herramienta, sino que se trata de una


herramienta estacionaria.

tframe
tool frame
Tipo de dato: pose
El sistema de coordenadas de la herramienta, es decir:

La posicin del TCP (x, y, z) en mm, expresada en el sistema de coordenadas


de la mueca (tool0) (consulte la figura siguiente).

La orientacin del sistema de coordenadas de la herramienta, expresado en


el sistema de coordenadas de la mueca (consulte la figura siguiente).

Y
X

sistema de
coordenadas
de mueca

X'

sistema de
coordenadas de
la herramienta y
TCP
Y'
Z'

xx1100000517_RAPID tooldata_es

Figure 3.3: Herramienta sostenida por el robot

Contina en la pgina siguiente


1302

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.66 tooldata - Datos de herramientas
Continuacin

Nota
Si se utiliza una herramienta estacionaria, la base de coordenadas de la
herramienta se define respecto del sistema de coordenadas mundo.

Z'
Y'

sistema de
coordenadas de la
X' herramienta y TCP

sistema de
coordenadas
mundo
xx1100000518_RAPID tooldata_es

Figure 3.4: Herramienta estacionaria


tload
tool load
Tipo de dato: loaddata
Nota
Los datos se utilizan tanto para la herramienta sostenida por el robot como para
la herramienta estacionaria. En el caso de la herramienta sostenida por el robot
los datos describen la carga de la herramienta. En el caso de la herramienta
estacionaria, los datos describen la carga de la pinza sostenida por el robot.
Herramienta sostenida por el robot:
La carga de la herramienta, es decir:

La masa (peso) de la herramienta en kg.

El centro de gravedad de la carga de la herramienta (x, y, z) en mm,


expresado en el sistema de coordenadas de la mueca.

La orientacin de los ejes de inercia principales de momento de la


herramienta expresada en el sistema de coordenadas de la mueca.

Los momentos de inercia alrededor de los ejes internos del momento en


kgm2. Si todos los componentes de inercia estn definidos con el valor 0
kgm 2, la herramienta se gestiona como una masa puntual.
Contina en la pgina siguiente

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.66 tooldata - Datos de herramientas
Continuacin

sistema de coordenadas de
carga de herramienta, centro
de gravedad (cog)
y ejes de inercia de carga de
herramienta (aom)
Y
Z

IX

IY
IZ

X
sistema de
coordenadas
de mueca

xx1100000519_RAPID tooldata_es

Herramienta estacionaria:
La carga de la pinza que sostiene el objeto de trabajo:

La masa (peso) de la pinza movida en kg.

El centro de gravedad de la pinza movida (x, y, z) en mm, expresado en el


sistema de coordenadas de la mueca.

La orientacin de los ejes de inercia principales de momento de la pinza


movida expresada en el sistema de coordenadas de la mueca.

Los momentos de inercia alrededor de los ejes internos del momento en


kgm2. Si todos los componentes de inercia estn definidos con el valor 0
kgm 2, la pinza se gestiona como una masa puntual.
sistema de coordenadas de
carga de herramienta, centro
de gravedad (cog)
y ejes de inercia de carga de
herramienta (aom)

Y
X Z

IY
IX IZ

pinza

sistema de
coordenadas
de mueca
herramienta
estacionaria

xx1100000520_RAPID tooldata_es

Contina en la pgina siguiente


1304

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.66 tooldata - Datos de herramientas
Continuacin

Nota
Slo debe especificar la carga de la herramienta/pinza en tooldata. La carga
til manejada por la pinza se conecta y desconecta mediante la instruccin
GripLoad y se define con un loaddata.
En lugar de utilizar la instruccin GripLoad es posible definir y utilizar tooldata
diferentes para la pinza con la pieza de trabajo pinzada y la pinza sin pieza de
trabajo.
Resumen
La posicin y orientacin de TCP en tooldata se definen en el sistema de
coordenadas de mueca en una herramienta sostenida por el robot.
La posicin y orientacin de TCP en tooldata se definen en el sistema de
coordenadas mundo en una herramienta sostenida por el robot.
La parte loaddata en tooldata est en todos los casos relacionada en el sistema
de coordenadas de mueca, independientemente de si se utiliza una herramienta
sostenida por el robot (para describir la herramienta) o una herramienta estacionaria
(para describir la pinza).
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato tooldata.
Ejemplo 1
PERS tooldata gripper := [ TRUE, [[97.4, 0, 223.1], [0.924, 0,
0.383 ,0]], [5, [23, 0, 75], [1, 0, 0, 0], 0, 0, 0]];

La herramienta se describe utilizando los valores siguientes:

El robot sostiene la herramienta.

El TCP est situado en un punto a 223,1 mm en lnea recta de la brida de


montaje y a 97,4 mm a lo largo del eje X del sistema de coordenadas de la
mueca.

Las direcciones X y Z de la herramienta se giran 45 en relacin con la


direccin Y en el sistema de coordenadas de la mueca.

La masa de la herramienta es de 5 kg.

El centro de gravedad est situado en un punto a 75 mm en lnea recta de


la brida de montaje y 23 mm a lo largo del eje X del sistema de coordenadas
de la mueca.

Es posible considerar la carga como una masa puntual, es decir, sin ningn
momento de inercia.

Ejemplo 2
gripper.tframe.trans.z := 225.2;

El TCP de la herramienta, gripper se ajusta a 225.2 en la direccin Z.


Limitaciones
Los datos de la herramienta deben definirse como variables persistentes (PERS)
y no deben definirse desde dentro de una rutina. De esta forma, los valores se
guardan al guardar el programa y se recuperan al cargarlo.
Contina en la pgina siguiente
3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.66 tooldata - Datos de herramientas
Continuacin
Los argumentos de datos de herramienta de cualquier instruccin de movimiento
deben ser slo del tipo persistente completo (ni elementos de matriz ni
componentes de registro).
Datos predefinidos
La herramienta tool0 define el sistema de coordenadas de la mueca, cuyo origen
es el centro de la brida de montaje. tool0 est siempre disponible desde el
programa, pero no puede ser modificada en ningn momento (est almacenada
en el mdulo de sistema BASE).
PERS tooldata tool0 := [ TRUE, [ [0, 0, 0], [1, 0, 0 ,0] ], [0.001,
[0, 0, 0.001], [1, 0, 0, 0], 0, 0, 0] ];

Estructura
< dataobject of tooldata >
< robhold of bool >
< tframe of pose >
< trans of pos >
< x of num >
< y of num >
< z of num >
< rot of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >
< tload of loaddata >
< mass of num >
< cog of pos >
< x of num >
< y of num >
< z of num >
< aom of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >
< ix of num >
< iy of num >
< iz of num >

Informacin relacionada
Para obtener ms informacin sobre Consulte
Instrucciones de posicionamiento

Technical reference manual - RAPID overview, seccin Resumen sobre RAPID - Movimiento

Sistemas de coordenadas

Technical reference manual - RAPID overview, seccin Principios de movimiento y E/S - Sistemas de
coordenadas

Definicin de una carga til para ro- GripLoad - Define la carga til de un robot en la pbots
gina 125

Contina en la pgina siguiente


1306

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.66 tooldata - Datos de herramientas
Continuacin
Para obtener ms informacin sobre Consulte
Definicin de datos de carga

loaddata - Datos de carga en la pgina 1219

Definicin de datos de objetos de tra- wobjdata - Datos del objeto de trabajo en la pgibajo
na 1323

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.67 tpnum - Nmero de ventana del FlexPendant

3.67 tpnum - Nmero de ventana del FlexPendant


Utilizacin
tpnum se utiliza para representar la ventana del FlexPendant con una constante
simblica.
Descripcin
Las constantes tpnum se han diseado para su uso con la instruccin TPShow.
Consulte el ejemplo siguiente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato tpnum.
Ejemplo 1
TPShow TP_LATEST;

La ltima ventana usada en el FlexPendant antes de la ventana actual del


FlexPendant ser la que se active tras la ejecucin de esta instruccin.
Datos predefinidos
Se ha predefinido la constante simblica siguiente para el tipo de dato tpnum.
Puede usarla con la instruccin TPShow.
Valor

Constante simblica

Comentario

TP_LATEST

ltima ventana usada en el FlexPendant

Caractersticas
tpnum es un tipo de dato de alias de num y por tanto hereda sus caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipos de datos en general, tipos de datos


de alias

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Tipos de
datos

Comunicacin a travs del FlexPendant

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Comunicacin

Cambio de ventana en el FlexPendant

TPShow - Cambia de ventana en el FlexPendant en la pgina 606

1308

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.68 trapdata - Datos de interrupcin para la rutina TRAP actual

3.68 trapdata - Datos de interrupcin para la rutina TRAP actual


Utilizacin
trapdata (trap data) se utiliza para contener los datos de interrupcin que
provocan la ejecucin de la rutina TRAP actual.
Debe utilizarse en las rutinas TRAP generadas por la instruccin IError, antes
del uso de la instruccin ReadErrData.
Descripcin
Los datos del tipo trapdata representan informacin interna relacionada con
la interrupcin que provoc la ejecucin de la rutina TRAP actual. Su contenido
depende del tipo de interrupcin.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato trapdata.
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 nmero


y el tipo del error se almacenan en las variables adecuadas sin valor, del tipo
trapdata.
Caractersticas
trapdata es un tipo de dato sin valor.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Resumen de interrupciones

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Interrupciones

Ms informacin sobre la gestin de interrup- Technical reference manual - RAPID overview,


ciones
seccin Caractersticas bsicas - Interrupciones
Tipos de datos sin valor

Technical reference manual - RAPID overview,


seccin Caractersticas bsicas - Tipos de
datos

Solicitud de una interrupcin para errores

IError - Solicita una interrupcin para errores


en la pgina 132

Obtencin de datos de interrupcin para la GetTrapData - Obtiene datos de interrupcin


rutina TRAP actual
para la rutina TRAP actual en la pgina 121

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.68 trapdata - Datos de interrupcin para la rutina TRAP actual
Continuacin
Para obtener ms informacin sobre

Consulte

Obtencin de informacin sobre un error

ReadErrData - Obtiene informacin sobre un


error en la pgina 370GetTrapData - Obtiene
datos de interrupcin para la rutina TRAP actual en la pgina 121

1310

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.69 triggdata - Eventos de posicionamiento, trigg

3.69 triggdata - Eventos de posicionamiento, trigg


Utilizacin
triggdata se utiliza para almacenar datos acerca de un evento de posicionamiento
durante un movimiento del robot.
Un evento de posicionamiento puede tener la forma de un parmetro en una seal
de salida o puede significar la ejecucin de una rutina de interrupcin en una
posicin especfica a lo largo de la trayectoria de movimiento del robot.
Descripcin
Para definir las condiciones de las mediciones respectivas de un evento de
posicionamiento, se utilizan variables del tipo triggdata. Los datos contenidos
en la variable se forman en el programa mediante una instruccin TriggIO,
TriggEquip, TriggCheckIO o TriggInt y se utilizan desde una instruccin
TriggL, TriggC o TriggJ.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato triggdata
.
Ejemplo 1
VAR triggdata gunoff;
TriggIO gunoff, 0,5 \DOp:=gun, 0;
TriggL p1, v500, gunoff, fine, gun1;

La seal digital de salida gun cambia al valor 0 cuando el TCP se encuentra en


una posicin a 0,5 mm del punto p1.
Caractersticas
triggdata es un tipo de dato sin valor.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Definicin de disparos

TriggIO - Define un evento de E/S de posicin


o tiempo fijos cerca de un punto de paro en la
pgina 633
TriggEquip - Define un evento de E/S basado
en la posicin y el tiempo en la trayectoria en la
pgina 622
TriggCheckIO - Define una comprobacin de
E/S en una posicin fija en la pgina 616
TriggInt - Define una interrupcin dependiente
de una posicin en la pgina 628

Utilizacin de disparos

TriggL - Movimiento lineal del robot con eventos


en la pgina 646
TriggC - Movimiento circular del robot con
eventos en la pgina 609
TriggJ - Movimientos de ejes del robot a partir
de eventos en la pgina 639

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.69 triggdata - Eventos de posicionamiento, trigg
Continuacin
Para obtener ms informacin sobre

Consulte

Caractersticas de los tipos de datos sin Technical reference manual - RAPID overview,
valor
seccin Caractersticas bsicas - Tipos de datos

1312

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.70 triggios - Positioning events, trigg

3.70 triggios - Positioning events, trigg


Utilizacin
triggios se utiliza para almacenar datos acerca de un evento de posicionamiento
durante un movimiento del robot. Si el evento de posicionamiento est distribuido
en una posicin especfica de la trayectoria, una seal de salida cambia a un valor
especfico.
Descripcin
triggios se utiliza para definir condiciones y acciones para el establecimiento
de una seal digital de salida, un grupo de seales digitales de salida o una seal
analgica de salida en una posicin fija a lo largo de la trayectoria de movimiento
del robot.
Componentes
used
Tipo de dato: bool
Define si el elemento de la matriz debe utilizarse o no.
distance
Tipo de dato: num
Define la posicin de la trayectoria en la que debe producirse el evento de E/S.
Se especifica como la distancia en mm (valor positivo) desde el punto final de la
trayectoria de movimiento si el componente start tiene el valor FALSE.
start
Tipo de dato: bool
Cambia a TRUE si la distancia comienza en el punto inicial del movimiento en
lugar del punto final.
equiplag
Equipment Lag
Tipo de dato: num
Especifica el retardo del equipo externo, en segundos.
Para la compensacin del retardo de los equipos externos, utilice un valor de
argumento positivo. Un valor positivo significa que la seal de E/S es activada por
el sistema de robot en el momento especificado, antes de que el TCP alcance
fsicamente la distancia especificada respecto del punto de inicio o final del
movimiento.
Un valor negativo significa que la seal de E/S es activada por el sistema de robot
en el momento especificado, despus de que el TCP fsico haya sobrepasado la
distancia especificada respecto del punto de inicio o final del movimiento.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.70 triggios - Positioning events, trigg
Continuacin
En la figura se muestra el uso del componente equiplag.

Punto final

Punto de inicio
Distancia
\Start

Distancia

EquipLag
xx0800000173_es

signalname
Tipo de dato: string
El nombre de la seal que debe cambiar. Debe ser una seal digital de salida, un
grupo de seales digitales de salida o una seal analgica de salida.
setvalue
Tipo de dato: num
El valor deseado para la seal de salida (dentro del rango permitido para la seal
actual).
xxx
Tipo de dato: num
Este componente no se utiliza en este momento. Ha sido aadido con el fin de
poder aadir funcionalidad en versiones futuras sin perder la compatibilidad.
Ejemplos
A continuacin aparece un ejemplo del tipo de dato triggios.
Ejemplo 1
VAR triggios gunon{1};
gunon{1}.used:=TRUE;
gunon{1}.distance:=3;
gunon{1}.start:=TRUE;
gunon{1}.signalname:="gun";
gunon{1}.equiplag:=0;
gunon{1}.setvalue:=1;
MoveJ p1, v500, z50, gun1;
TriggLIOs p2, v500, \TriggData1:=gunon, z50, gun1;
MoveL p3, v500, z50, gun1;

La seal gun se activa cuando el TCP est 3 mm despus del punto p1.

Contina en la pgina siguiente


1314

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.70 triggios - Positioning events, trigg
Continuacin
Estructura
<dataobject of triggios>
<used of bool>
<distance of num>
<start of bool>
<equiplag of num>
<signalname of string>
<setvalue of num>
<xxx of num>

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Eventos de posicionamiento, trigg

triggiosdnum - Positioning events, trigg en


la pgina 1316

Movimientos lineales del robot con eventos TriggLIOs - Movimientos lineales del robot
de E/S
con eventos de E/S en la pgina 653

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.71 triggiosdnum - Positioning events, trigg

3.71 triggiosdnum - Positioning events, trigg


Utilizacin
triggiosdnum se utiliza para almacenar datos acerca de un evento de
posicionamiento durante un movimiento del robot. Si el evento de posicionamiento
est distribuido en una posicin especfica de la trayectoria, una seal de salida
cambia a un valor especfico.
Descripcin
triggiosdnum se utiliza para definir condiciones y acciones para el
establecimiento de una seal digital de salida, un grupo de seales digitales de
salida o una seal analgica de salida en una posicin fija a lo largo de la trayectoria
de movimiento del robot.
Componentes
used
Tipo de dato: bool
Define si el elemento de la matriz debe utilizarse o no.
distance
Tipo de dato: num
Define la posicin de la trayectoria en la que debe producirse el evento de E/S.
Se especifica como la distancia en mm (valor positivo) desde el punto final de la
trayectoria de movimiento si el componente start tiene el valor FALSE.
start
Tipo de dato: bool
Cambia a TRUE si la distancia comienza en el punto inicial del movimiento en
lugar del punto final.
equiplag
Equipment Lag
Tipo de dato: num
Especifica el retardo del equipo externo, en segundos.
Para la compensacin del retardo de los equipos externos, utilice un valor de
argumento positivo. Un valor positivo significa que la seal de E/S es activada por
el sistema de robot en el momento especificado, antes de que el TCP alcance
fsicamente la distancia especificada respecto del punto de inicio o final del
movimiento.
Un valor negativo significa que la seal de E/S es activada por el sistema de robot
en el momento especificado, despus de que el TCP fsico haya sobrepasado la
distancia especificada respecto del punto de inicio o final del movimiento.
signalname
Tipo de dato: string

Contina en la pgina siguiente


1316

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.71 triggiosdnum - Positioning events, trigg
Continuacin
El nombre de la seal que debe cambiar. Debe ser una seal digital de salida, un
grupo de seales digitales de salida o una seal analgica de salida.
setvalue
Tipo de dato: dnum
El valor deseado para la seal de salida (dentro del rango permitido para la seal
actual).
xxx
Tipo de dato: num
Este componente no se utiliza en este momento. Ha sido aadido con el fin de
poder aadir funcionalidad en versiones futuras sin perder la compatibilidad.
Ejemplos
A continuacin aparece un ejemplo del tipo de dato triggiosdnum.
Ejemplo 1
VAR triggiosdnum gunon{1};
gunon{1}.used:=TRUE;
gunon{1}.distance:=3;
gunon{1}.start:=TRUE;
gunon{1}.signalname:="go_gun";
gunon{1}.equiplag:=0;
gunon{1}.setvalue:=123456789;
MoveJ p1, v500, z50, gun1;
TriggLIOs p2, v500, \TriggData3:=gunon, z50, gun1;
MoveL p3, v500, z50, gun1;

La seal go_gun se activa cuando el TCP est 3 mm despus del punto p1.
Estructura
<dataobject of triggiosdnum>
<used of bool>
<distance of num>
<start of bool>
<equiplag of num>
<signalname of string>
<setvalue of dnum>
<xxx of num>

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Eventos de posicionamiento, trigg

triggios - Positioning events, trigg en la pgina 1313

Movimientos lineales del robot con eventos TriggLIOs - Movimientos lineales del robot
de E/S
con eventos de E/S en la pgina 653

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.72 triggstrgo - Positioning events, trigg

3.72 triggstrgo - Positioning events, trigg


Utilizacin
triggstrgo(trigg stringdig group output) se utiliza para almacenar datos acerca
de un evento de posicionamiento durante un movimiento del robot. Si el evento
de posicionamiento est distribuido en una posicin especfica de la trayectoria,
un grupo de seales digitales de salida cambia a un valor especfico.
Descripcin
triggstrgo se utiliza para definir condiciones y acciones para el establecimiento
de seales digitales de salida en una posicin fija a lo largo de la trayectoria de
movimiento del robot.
Componentes
used
Tipo de dato: bool
Define si el elemento de la matriz debe utilizarse o no.
distance
Tipo de dato: num
Define la posicin de la trayectoria en la que debe producirse el evento de E/S.
Se especifica como la distancia en mm (valor positivo) desde el punto final de la
trayectoria de movimiento si el componente start tiene el valor FALSE.
start
Tipo de dato: bool
Cambia a TRUE si la distancia comienza en el punto inicial del movimiento en
lugar del punto final.
equiplag
Equipment Lag
Tipo de dato: num
Especifica el retardo del equipo externo, en segundos.
Para la compensacin del retardo de los equipos externos, utilice un valor de
argumento positivo. Un valor positivo significa que la seal de E/S es activada por
el sistema de robot en el momento especificado, antes de que el TCP alcance
fsicamente la distancia especificada respecto del punto de inicio o final del
movimiento.
Un valor negativo significa que la seal de E/S es activada por el sistema de robot
en el momento especificado, despus de que el TCP fsico haya sobrepasado la
distancia especificada respecto del punto de inicio o final del movimiento.

Contina en la pgina siguiente


1318

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.72 triggstrgo - Positioning events, trigg
Continuacin
En la figura se muestra el uso del componente equiplag.

Punto final

Punto de inicio
Distancia
\Start

Distancia

EquipLag
xx0800000173_es

signalname
Tipo de dato: string
El nombre de la seal que debe cambiar. Debe ser un nombre de seal de salida
de grupo.
setvalue
Tipo de dato: stringdig
El valor deseado para la seal de salida (dentro del rango permitido para la salida
digital de grupo actual). El uso del tipo de dato stringdig hace posible utilizar
valores hasta el 4.294.967.295, que es el valor mximo que puede tener un grupo
de seales digitales (el sistema admite como mximo 32 seales en una seal de
grupo).
xxx
Tipo de dato: num
Este componente no se utiliza en este momento. Ha sido aadido con el fin de
poder aadir funcionalidad en versiones futuras sin perder la compatibilidad.
Ejemplos
A continuacin aparece un ejemplo del tipo de dato triggstrgo.
Ejemplo 1
VAR triggstrgo gunon{1};
gunon{1}.used:=TRUE;
gunon{1}.distance:=3;
gunon{1}.start:=TRUE;
gunon{1}.signalname:="gun";
gunon{1}.equiplag:=0;
gunon{1}.setvalue:="4294967295";
MoveJ p1, v500, z50, gun1;
TriggLIOs p2, v500, \TriggData2:=gunon, z50, gun1;
MoveL p3, v500, z50, gun1;

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.72 triggstrgo - Positioning events, trigg
Continuacin
La seal gun recibe el valor 4.294.967.295 cuando el TCP est 3 mm despus del
punto p1.
Estructura
<dataobject of triggstrgo>
<used of bool>
<distance of num>
<start of bool>
<equiplag of num>
<signalname of string>
<setvalue of stringdig>
<xxx of num>

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Movimientos lineales del robot con eventos TriggLIOs - Movimientos lineales del robot
de E/S
con eventos de E/S en la pgina 653
Comparar dos cadenas que slo contienen StrDigCmp - Comparar dos cadenas que slo
dgitos
contienen dgitos en la pgina 1066
Operaciones aritmticas con tipos de datos StrDigCalc - Operaciones aritmticas con el
stringdig
tipo de dato stringdig en la pgina 1063

1320

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.73 tunetype - Tipo de ajuste de servo

3.73 tunetype - Tipo de ajuste de servo


Utilizacin
tunetype se utiliza para representar un entero con una constante simblica para
tipos distintos de ajuste de servo.
Descripcin
Las constantes tunetype se han diseado para su uso como argumento de la
instruccin TuneServo. Consulte el ejemplo siguiente.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato tunetype.
Ejemplo 1
TuneServo MHA160R1, 1, 110 \Type:= TUNE_KP;

Datos predefinidos
Se han definido las constantes simblicas siguientes para el tipo de dato tunetype.
Puede usarlas como argumento de la instruccin TuneServo.
Valor

Constante simblica

Comentario

TUNE_DF

Reduce el riesgo de sobrepasar posiciones

TUNE_KP

Afecta a la ganancia del control de posicin

TUNE_KV

Afecta a la ganancia del control de velocidad

TUNE_TI

Afecta al tiempo de integracin del control de velocidad

TUNE_FRIC_LEV

Afecta al nivel de compensacin de friccin

TUNE_FRIC_RAMP

Afecta a la pendiente de compensacin de friccin

TUNE_DG

Reduce el riesgo de sobrepasar posiciones

TUNE_DH

Reduce las vibraciones con cargas pesadas

TUNE_DI

Reduce los errores de trayectoria

TUNE_DK

Slo para uso interno de ABB

10

TUNE_DL

Slo para uso interno de ABB

Caractersticas
tunetype es un tipo de dato de alias de num y por tanto hereda sus
caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Tipos de datos en general, tipos de datos Technical reference manual - RAPID overview,
de alias
seccin Caractersticas bsicas - Tipos de datos
Uso del tipo de dato tunetype

TuneServo - Ajuste de servos en la pgina 683

3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.74 uishownum - ID de instancia para UIShow

3.74 uishownum - ID de instancia para UIShow


Utilizacin
uishownum es el tipo de dato utilizado para el parmetro InstanceId de la
instruccin UIShow. Se usa para identificar una vista en el FlexPendant.
Descripcin
Cuando una variable persistente del tipo uishownum se usa con la instruccin
UIShow, recibe un valor especfico que identifica la vista iniciada en el FlexPendant.
A continuacin, la variable persistente se utiliza en todas las operaciones realizadas
con esa vista, como iniciar de nuevo la vista, modificar la vista, etc.
Ejemplos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato uishownum.
Ejemplo 1
CONST string Name:="TpsViewMyAppl.gtpu.dll";
CONST string Type:="ABB.Robotics.SDK.Views.TpsViewMyAppl";
CONST string Cmd1:="Init data string passed to the view";
PERS uishownum myinstance:=0;
VAR num mystatus:=0;
...
! Launch one view of the application MyAppl
UIShow Name, Type \InitCmd:=Cmd1 \InstanceID:=myinstance
\Status:=mystatus;

El cdigo de la parte superior iniciar una vista de la aplicacin MyAppl con el


comando de inicializacin Cmd1. El token utilizado para identificar la vista se
guarda en el parmetro myinstance.
Caractersticas
uishownum es un tipo de dato de alias de num y por tanto hereda sus propiedades.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

UIShow

UIShow - Visualizacin de interfaz de usuario en la pgina 697

1322

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.75 wobjdata - Datos del objeto de trabajo

3.75 wobjdata - Datos del objeto de trabajo


Utilizacin
wobjdata se utiliza para describir el objeto de trabajo que el robot est soldando,
procesando, moviendo por s solo, etc.
Descripcin
Si los objetos de trabajo estn definidos en una instruccin de posicionamiento,
la posicin se basar en las coordenadas del objeto de trabajo. Las ventajas de
hacerlo son las siguientes:

Si se introducen manualmente los datos de posicin, por ejemplo, mediante


la programacin fuera de lnea, suele ser posible tomar los valores de un
plano.

Los programas pueden reutilizarse rpidamente despus de cualquier cambio


en la instalacin del robot. Por ejemplo, si se cambia de posicin un til,
slo es necesario redefinir el sistema de coordenadas del usuario.

Tambin es posible compensar las variaciones en la forma en que el objeto


de trabajo est fijado. Sin embargo, para estos fines se requerir algn tipo
de sensor para posicionar el objeto de trabajo.

Si se utiliza una herramienta estacionaria o ejes externos coordinados, es necesario


definir el objeto de trabajo, ya que en este caso la trayectoria y la velocidad estaran
relacionadas con el objeto de trabajo en lugar del TCP.
Los datos del objeto de trabajo pueden usarse tambin para los movimientos.

El robot puede desplazarse en las direcciones del objeto de trabajo.

La posicin actual mostrada se basa en el sistema de coordenadas del objeto


de trabajo.

Componentes
robhold
robot hold
Tipo de dato: bool
Define si el robot de la tarea de programa actual es el que est sosteniendo el
objeto de trabajo:

TRUE: El robot sostiene el objeto de trabajo, es decir, se est utilizando una


herramienta estacionaria.

FALSE: El robot no est sosteniendo el objeto de trabajo, es decir, el robot


est sosteniendo la herramienta.

ufprog
user frame programmed
Tipo de dato: bool
Define si se est utilizando un sistema fijo de coordenadas del usuario:

TRUE: Sistema de coordenadas del usuario fijo

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.75 wobjdata - Datos del objeto de trabajo
Continuacin

FALSE: Sistema mvil de coordenadas del usuario, es decir, se utilizan ejes


externos coordinados. Tambin debe usarse en los sistemas MultiMove que
se utilizan en el modo semicoordinado o sincronizado coordinado.

ufmec
user frame mechanical unit
Tipo de dato: string
La unidad mecnica con la que se coordinan los movimientos del robot. Slo se
especifican en el caso de los sistemas mviles de coordenadas del usuario (ufprog
es FALSE).
Especifica el nombre de la unidad mecnica definido en los parmetros del sistema,
por ejemplo orbit_a.
uframe
user frame
Tipo de dato: pose
El sistema de coordenadas del usuario, es decir, la posicin de la superficie o del
til de trabajo actual (consulte la figura siguiente):

La posicin del origen del sistema de coordenadas (x, y, z) en mm.

La rotacin del sistema de coordenadas, expresada como un cuaternio (q1,


q2, q3, q4).

Si el robot es el que sostiene la herramienta, el sistema de coordenadas del usuario


se define en el sistema de coordenadas mundo (en el sistema de coordenadas de
la mueca si se utiliza una herramienta estacionaria).
En el caso de una base de coordenadas de usuario mvil (ufprog con el valor
FALSE), la base de coordenadas del usuario es definida continuamente por el
sistema.
oframe
object frame
Tipo de dato: pose
El sistema de coordenadas del objeto, es decir, la posicin del objeto de trabajo
actual (consulte la figura siguiente):

La posicin del origen del sistema de coordenadas (x, y, z) en mm.

La rotacin del sistema de coordenadas, expresada como un cuaternio (q1,


q2, q3, q4).

Contina en la pgina siguiente


1324

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.75 wobjdata - Datos del objeto de trabajo
Continuacin
El sistema de coordenadas del objeto se define en el sistema de coordenadas del
usuario.

xx0500002369

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato wobjdata.
Ejemplo 1
PERS wobjdata wobj2 :=[ FALSE, TRUE, "", [ [300, 600, 200], [1, 0,
0 ,0] ], [ [0, 200, 30], [1, 0, 0 ,0] ] ];

El objeto de trabajo de la figura anterior se describe utilizando los valores


siguientes:

El robot no sostiene el objeto de trabajo.

Se utiliza el sistema fijo de coordenadas del usuario.

El sistema de coordenadas del usuario no se gira y las coordenadas de su


origen son x= 300, y = 600 y z = 200 mm en el sistema de coordenadas
mundo.

El sistema de coordenadas del objeto no se gira y las coordenadas de su


origen son x= 0, y = 200 y z = 30 mm en el sistema de coordenadas del
usuario.
wobj2.oframe.trans.z := 38.3;

Se ajusta la posicin del objeto de trabajo wobj2 a 38,3 mm en la direccin


z.

Limitaciones
Los datos del objeto de trabajo deben definirse como variables persistentes (PERS)y
no deben definirse desde dentro de una rutina. De esta forma, los valores se
guardan al guardar el programa y se recuperan al cargarlo.
Los argumentos de datos de objeto de trabajo de cualquier instruccin de
movimiento deben ser slo del tipo persistente completo (ni elementos de matriz
ni componentes de registro).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.75 wobjdata - Datos del objeto de trabajo
Continuacin
Datos predefinidos
Los datos de objeto de trabajo wobj0 se definen de forma que el sistema de
coordenadas del objeto coincida con el sistema de coordenadas mundo. El robot
es el que sostiene el objeto de trabajo.
Wobj0 est siempre disponible desde el programa, pero no puede ser modificada
en ningn momento (est almacenada en el mdulo de sistema BASE).
PERS wobjdata wobj0 := [ FALSE, TRUE, "", [ [0, 0, 0], [1, 0, 0
,0] ], [ [0, 0, 0], [1, 0, 0 ,0] ] ];

Estructura
< dataobject of wobjdata >
< robhold of bool >
< ufprog of bool >
< ufmec of string >
< uframe of pose >
< trans of pos >
< x of num >
< y of num >
< z of num >
< rot of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >
< oframe of pose >
< trans of pos >
< x of num >
< y of num >
< z of num >
< rot of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Instrucciones de posicionamiento

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Movimiento

Sistemas de coordenadas

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sistemas
de coordenadas

Ejes externos coordinados

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Sistemas
de coordenadas

Calibracin de los ejes coordinados

Application manual - Additional axes and stand


alone controller
Manual de aplicaciones - MultiMove

1326

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.76 wzstationary - Datos de zona mundo estacionaria

3.76 wzstationary - Datos de zona mundo estacionaria


Utilizacin
wzstationary (world zone stationary) se usa para identificar una zona mundo
estacionaria y slo puede usarse en una rutina de evento conectada al evento
POWER ON.
Las zonas mundo se supervisan durante los movimientos del robot, tanto durante
la ejecucin del programa como durante los movimientos. Si el TCP del robot
alcanza la zona mundo o si los ejes del robot o los ejes externos alcanzan la zona
mundo, el movimiento se detiene o se activa o desactiva una seal digital de salida.
Descripcin
Las zonas mundo wzstationary se definen y activan con una instruccin
WZLimSup o una instruccin WZDOSet.
WZLimSup o WZDOSet asignan un valor numrico a variables o variables
persistentes con el tipo de dato wzstationary. El valor identifica una zona mundo.
Las zonas mundo estacionarias siempre estn activas en el estado Motores ON
y slo se eliminan en los arranques en caliente (al apagar y encender de nuevo el
interruptor). No es posible desactivar, activar ni eliminar una zona mundo
estacionaria a travs de instrucciones de RAPID.
Las zonas mundo estacionarias deben estar activadas desde la puesta en marcha
y deben estar definidas en la rutina de evento POWER ON o en una tarea
semiesttica.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato wzstationary.
Ejemplo 1
VAR wzstationary conveyor;
...
PROC ...
VAR shapedata volume;
...
WZBoxDef \Inside, volume, p_corner1, p_corner2;
WZLimSup \Stat, conveyor, volume;
ENDPROC

Un conveyor se define como un prisma de ngulos rectos (el volumen que queda
debajo de la cinta). Si el robot alcanza este volumen, se detiene el movimiento.
Limitaciones
Los datos wzstationary deben definirse como variables (VAR) o variables
persistentes (PERS). Pueden ser globales en la tarea o locales dentro del mdulo,
pero no locales dentro de una rutina.
Los argumentos de tipo wzstationary deben ser slo datos completos (ni
elementos de matriz ni componentes de registro).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.76 wzstationary - Datos de zona mundo estacionaria
Continuacin
Los valores de inicializacin de los datos del tipo wzstationary no se utilizan
en el sistema de control. Cuando sea necesario utilizar una variable persistente
en un sistema multitarea, cambie el valor inicial a 0 en las dos tareas, por ejemplo
PERS wzstationary share_workarea := [0];
Ms ejemplos
Para ver un ejemplo completo, consulte la instruccin WZLimSup.
Caractersticas
wzstationary es un tipo de dato de alias de wztemporary y hereda sus
caractersticas.
Informacin relacionada
Para obtener ms informacin sobre

Consulte

Zonas mundo

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Zonas
mundo

Forma de las zonas mundo

shapedata - Datos de forma de zonas mundo en


la pgina 1270

Zona mundo temporal

wztemporary - Datos de zona mundo temporal en


la pgina 1329

Activacin de la supervisin de lmites WZLimSup - Activa la supervisin de lmites de


de las zonas mundo
las zonas mundo en la pgina 803
Activacin de salidas digitales basadas WZDOSet - Activacin de salidas digitales basaen zonas mundo
das en zonas mundo en la pgina 787

1328

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.77 wztemporary - Datos de zona mundo temporal

3.77 wztemporary - Datos de zona mundo temporal


Utilizacin
wztemporary (world zone temporary) se utiliza para identificar una zona mundo
temporal y puede usarse en cualquier parte del programa RAPID para cualquier
tarea de movimiento.
Las zonas mundo se supervisan durante los movimientos del robot, tanto durante
la ejecucin del programa como durante los movimientos. Si el TCP del robot
alcanza la zona mundo o si los ejes del robot o los ejes externos alcanzan la zona
mundo, el movimiento se detiene o se activa o desactiva una seal digital de salida.
Descripcin
Las zonas mundo wztemporary se definen y activan con una instruccin WZLimSup
o una instruccin WZDOSet.
WZLimSup o WZDOSet asignan un valor numrico a variables o variables
persistentes con el tipo de dato wztemporary. El valor identifica una zona mundo.
Una vez definidas y activadas, las zonas mundo temporales pueden desactivarse
con WZDisable, activarse de nuevo con WZEnable y eliminarse con WZFree.
Todas las zonas mundo temporales de la tarea de movimiento se eliminan
automticamente y todos los objetos de datos del tipo wztemporary de la tarea
de movimiento cambian a 0:

Cuando se carga un nuevo programa en la tarea motion

Cuando se inicia la ejecucin del programa desde el principio en la tarea


motion

Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato wztemporary.
Ejemplo 1
VAR wztemporary roll;
...
PROC
VAR shapedata volume;
CONST pos t_center := [1000, 1000, 1000];
...
WZCylDef \Inside, volume, t_center, 400, 1000;
WZLimSup \Temp, roll, volume;
ENDPROC

Se define una variable wztemporary, roll, con forma de cilindro. Si el robot


alcanza este volumen, se detiene el movimiento.
Limitaciones
Los datos wztemporary deben definirse como variables (VAR) o variables
persistentes (PERS). Pueden ser globales en la tarea o locales dentro del mdulo,
pero no locales dentro de una rutina.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.77 wztemporary - Datos de zona mundo temporal
Continuacin
Los argumentos de tipo wztemporary deben ser slo datos completos (ni
elementos de matriz ni componentes de registro).
Las zonas mundo temporales slo deben definirse (WZLimSup o WZDOSet) y
liberarse (WZFree) desde la tarea MAIN. Las definiciones de zonas mundo
temporales en cualquier segundo plano no se permiten porque afectaran a la
ejecucin del programa en la tarea de movimiento relacionada. Las instrucciones
WZDisable y WZEnable pueden usarse en la tarea en segundo plano. Cuando
sea necesario utilizar una variable persistente en un sistema multitarea, cambie
el valor inicial a 0 en las dos tareas, por ejemplo PERS wztemporary
share_workarea := [0];
Ms ejemplos
Para ver un ejemplo completo, consulte la instruccin WZDOSet.
Estructura
< dataobject of wztemporary >
< wz of num >

Informacin relacionada
Para obtener ms informacin sobre Consulte
Zonas mundo

Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Zonas
mundo

Forma de las zonas mundo

shapedata - Datos de forma de zonas mundo en


la pgina 1270

Zona mundo estacionaria

wzstationary - Datos de zona mundo estacionaria


en la pgina 1327

Activacin de la supervisin de lmites WZLimSup - Activa la supervisin de lmites de las


de las zonas mundo
zonas mundo en la pgina 803
Activacin de salidas digitales basadas WZDOSet - Activacin de salidas digitales basadas
en zonas mundo
en zonas mundo en la pgina 787
Desactivacin de zonas mundo

WZDisable - Desactiva la supervisin de las zonas


mundo temporales en la pgina 785

Activacin de zonas mundo

WZEnable - Activa la supervisin de las zonas


mundo temporales en la pgina 791

Eliminacin de zonas mundo

WZFree - Elimina la supervisin de las zonas


mundo temporales en la pgina 793

1330

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.78 zonedata - Datos de zonas

3.78 zonedata - Datos de zonas


Utilizacin
zonedata se utiliza para especificar cmo debe terminar una posicin, es decir,
a qu distancia de la posicin programada deben encontrarse los ejes antes de
iniciar un movimiento hasta la posicin siguiente.
Descripcin
Una posicin puede terminar en forma de un punto de paso o un punto de paro.
Un punto de paro significa que los ejes del robot y los ejes externos deben alcanzar
la posicin especificada (detenindose) antes de que la ejecucin del programa
contine en la instruccin siguiente. Tambin es posible definir puntos de paro
distintos del tipo predefinido fine. Los criterios de paro que indican si se considera
que el robot ha alcanzado el punto, pueden manipularse mediante stoppointdata.
El punto de paso significa que la posicin programada no llega a alcanzarse nunca.
En su lugar, la direccin del movimiento cambia antes de que se alcance la
posicin. Es posible definir dos zonas (rangos) diferentes para cada posicin:

La zona para la trayectoria del TCP.

La zona extendida para la reorientacin de la herramienta y para los ejes


externos

La zona para la
trayectoria del TCP

Posicin
programada

Inicio de la reorientacin
hacia la posicin siguiente
Inicio de la trayectoria
de esquina del TCP
La zona extendida

xx0500002357_es

Las zonas funcionan de la misma forma durante el movimiento de los ejes, pero
el tamao de la zona puede ser algo distinto del programado.
El tamao de la zona no puede ser mayor que la mitad de la distancia existente
hasta la posicin ms cercana (hacia delante o hacia atrs). Si se especifica una
zona ms grande, el robot la reduce automticamente.
La zona para la trayectoria del TCP
Se genera una trayectoria de esquina (parbola) tan pronto como se alcanza el
borde de la zona (consulte la figura anterior).

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.78 zonedata - Datos de zonas
Continuacin
La zona de reorientacin de la herramienta
La reorientacin comienza tan pronto como el TCP alcanza la zona extendida. La
herramienta se reorienta de forma que la orientacin en el momento de salir de la
zona sea la misma que habra tenido en la misma posicin si se hubieran
programado puntos de paro. La reorientacin ser ms suave si se aumenta el
tamao de la zona. Adems, existe menos riesgo de tener que reducir la velocidad
para realizar la reorientacin.
En la figura siguiente se muestran tres posiciones programadas, la ltima de ellas
con una orientacin distinta para la herramienta.

xx0500002358

En la figura siguiente se muestra cmo quedara la ejecucin del programa si todas


las posiciones fueran puntos de paro.

xx0500002359

En la figura siguiente se muestra cmo quedara la ejecucin del programa si la


posicin central fuera un punto de paso.

xx0500002360

La zona para los ejes externos


Los ejes externos comienzan a moverse hacia la prxima posicin tan pronto como
el TCP alcanza la zona extendida. De esta forma, un eje lento puede empezar su
aceleracin antes y funcionar de una forma ms uniforme.
Zona reducida
Con reorientaciones grandes de la herramienta o movimientos grandes de los ejes
externos, la zona extendida e incluso la zona del TCP pueden ser reducidas por
el robot. La zona se define como el tamao relativo ms pequeo de la zona,
basado en los componentes de la misma (consulte Componentes en la pgina 1334)
y en el movimiento programado.

Contina en la pgina siguiente


1332

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.78 zonedata - Datos de zonas
Continuacin
En la figura siguiente se muestra un ejemplo de zona reducida para la reorientacin
de la herramienta al 36% del movimiento previsto para zone_ori.

90 mm
MoveL con movimientos de
pzone_ori
herramienta de 200 mm, reorientacin
P1 de 25 de la herramienta y zona z60
Los tamaos relativos de la zona son
pzone_tcp
________________________
= 60/200 = 30%
Longitud del movimiento P1-P2
pzone_ori
________________________
= 90/200 = 45%
Longitud del movimiento P1-P2
zone_ori
________________________
= 9 /25 = 36%
ngulo de la reorientacin P1-P2

60 mm
pzone_tcp
P2

9
zone_ori

xx0500002362_es

En la figura siguiente se muestra un ejemplo de zona reducida para la reorientacin


de la herramienta y de la trayectoria del TCP al 15% del movimiento previsto para
zone_ori.

90 mm
60 mm
pzone_ori pzone_tcp
9
herramienta de 200 mm, reorientacin
zone_ori
de 60 de la herramienta y zona z60

MoveL MoveL con movimientos de

P2

P1
Los tamaos relativos de la zona son
pzone_tcp
________________________
= 60/200 = 30%
Longitud del movimiento P1-P2
zone_ori
________________________
= 9 /60 = 15%
ngulo de la reorientacin P1-P2
xx0500002363_es

Cuando los ejes externos estn activos, afectan a los tamaos relativos de la zona
acorde con las frmulas siguientes:
pzone_eax
________________________
Longitud del movimiento P1-P2
zone_leax
________________________
Longitud del movimiento mx. lineal de ejes externos P1-P2.
zone_reax
________________________
ngulo de reorientacin mx. de eje externo de rotacin P1-P2.
xx0500002364_es

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.78 zonedata - Datos de zonas
Continuacin

Nota
Si la zona del TCP se reduce a causa de zone_ori, zone_leax o zone_reax,
el planificador de trayectorias activa un modo que puede manejar el caso de que
no se produzca ningn movimiento del TCP. Si se ha producido un movimiento
del TCP con este modo activado, no se compensa la velocidad para la curvatura
de la trayectoria en una zona de esquina. Por ejemplo, esto provoca una
reduccin de velocidad del 30% en las esquinas de 90 grados. Si esto le supone
un problema, aumente el componente de la zona que est causando esta
limitacin.
Componentes
finep
fine point
Tipo de dato: bool
Define si el movimiento debe terminar como un punto de paro (punto fino fine)
o como punto de paso.

TRUE: El movimiento termina como un punto de paro y la ejecucin del


programa no contina hasta que el robot llega hasta el punto de paro. Los
dems componentes de los datos de la zona no se utilizan.

FALSE: El movimiento termina como un punto de paso y la ejecucin del


programa contina hasta aproximadamente 100 ms antes de que el robot
llegue a la zona.

pzone_tcp
path zone TCP
Tipo de dato: num
El tamao (el radio) de la zona del TCP en mm.
La zona extendida se define como el tamao relativo ms pequeo de la zona,
basado en los componentes pzone_ori...zone_reax siguientes y en el
movimiento programado.
pzone_ori
path zone orientation
Tipo de dato: num
El tamao de la zona (el radio) para la reorientacin de la herramienta. El tamao
se define como la distancia en mm del TCP respecto del punto programado.
El tamao debe ser mayor que el valor correspondiente de pzone_tcp. Si se
especifica un valor menor, el tamao aumenta automticamente para que sea igual
que el pzone_tcp.
pzone_eax
path zone external axes
Tipo de dato: num

Contina en la pgina siguiente


1334

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.78 zonedata - Datos de zonas
Continuacin
El tamao de la zona (el radio) para los ejes externos. El tamao se define como
la distancia en mm del TCP respecto del punto programado.
El tamao debe ser mayor que el valor correspondiente de pzone_tcp. Si se
especifica un valor menor, el tamao aumenta automticamente para que sea igual
que el pzone_tcp.
zone_ori
zone orientation
Tipo de dato: num
El tamao de la zona para la reorientacin de la herramienta, en grados. Si el robot
est sosteniendo el objeto de trabajo, esto implica un ngulo de rotacin para el
objeto de trabajo.
zone_leax
zone linear external axes
Tipo de dato: num
El tamao de zona para los ejes externos lineales, en mm.
zone_reax
zone rotational external axes
Tipo de dato: num
El tamao de zona para los ejes externos de rotacin, en grados.
Ejemplos bsicos
A continuacin aparecen algunos ejemplos bsicos del tipo de dato zonedata.
Ejemplo 1
VAR zonedata path := [ FALSE, 25, 40, 40, 10, 35, 5 ];

Se definen los datos de zona path con las caractersticas siguientes:

El tamao de la zona para la trayectoria del TCP es de 25 mm.

El tamao de la zona para la reorientacin de la herramienta es de 40 mm


(movimiento del TCP).

El tamao de la zona para los ejes externos es de 40 mm (movimiento del


TCP).

Si el TCP est detenido, se produce una gran reorientacin o existe un gran


movimiento de los ejes externos respecto de la zona, se aplica lo siguiente:

El tamao de la zona para la reorientacin de la herramienta es de 10 grados.

El tamao de la zona para los ejes externos lineales es de 35 mm.

El tamao de la zona para los ejes externos de rotacin es de 5 grados.


path.pzone_tcp := 40;

Se ajusta el tamao de la zona para la trayectoria del TCP a 40 mm.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

3 Tipos de datos
3.78 zonedata - Datos de zonas
Continuacin
Datos predefinidos
Existen varios datos de zona ya definidos en el mdulo de sistema BASE_SHARED.
Puntos de paro
Use zonedata con nombre fine.
Puntos de paso
Zona de trayectoria

Zona

Nombre Trayec.
TCP

Orientacin

Eje externo Orientacin

Eje lineal

Eje de rotacin

z0

0,3 mm

0,3 mm

0,3 mm

0.03

0,3 mm

0.03

z1

1 mm

1 mm

1 mm

0,1

1 mm

0,1

z5

5 mm

8 mm

8 mm

0.8

8 mm

0.8

z10

10 mm

15 mm

15 mm

1.5

15 mm

1.5

z15

15 mm

23 mm

23 mm

2.3

23 mm

2.3

z20

20 mm

30 mm

30 mm

3.0

30 mm

3.0

z30

30 mm

45 mm

45 mm

4.5

45 mm

4.5

z40

40 mm

60 mm

60 mm

6.0

60 mm

6.0

z50

50 mm

75 mm

75 mm

7.5

75 mm

7.5

z60

60 mm

90 mm

90 mm

9.0

90 mm

9.0

z80

80 mm

120 mm

120 mm

12

120 mm

12

z100

100 mm

150 mm

150 mm

15

150 mm

15

z150

150 mm

225 mm

225 mm

23

225 mm

23

z200

200 mm

300 mm

300 mm

30

300 mm

30

Estructura
< data object of zonedata >
< finep of bool >
< pzone_tcp of num >
< pzone_ori of num >
< pzone_eax of num >
< zone_ori of num >
< zone_leax of num >
< zone_reax of num >

Informacin relacionada
Para obtener ms informacin sobre Consulte
Instrucciones de posicionamiento

Technical reference manual - RAPID overview,


seccin Resumen sobre RAPID - Movimiento

Movimientos/trayectorias en general Technical reference manual - RAPID overview,


seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa
Configuracin de ejes externos

Application manual - Additional axes and stand


alone controller

Contina en la pgina siguiente


1336

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

3 Tipos de datos
3.78 zonedata - Datos de zonas
Continuacin
Para obtener ms informacin sobre Consulte
Otros puntos de paro

stoppointdata - Datos de punto de paro en la pgina 1280

3HAC16581-5 Revisin: L

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

Esta pgina se ha dejado vaca intencionadamente

4 Ejemplos de tipos de programacin


4.1 Gestor de ERROR con movimientos

4 Ejemplos de tipos de programacin


4.1 Gestor de ERROR con movimientos
Utilizacin
Estos ejemplos de tipos describen cmo usar instrucciones de movimiento en un
gestor de ERROR despus de producirse un proceso elevado asincrnicamente
o un error de movimiento.
Esta funcionalidad slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Descripcin
El gestor de ERROR puede iniciar un nuevo movimiento temporal y por ltimo
reanudar el movimiento original interrumpido y detenido. Por ejemplo, puede
usarse para ir a una posicin de servicio o para limpiar la pistola tras producirse
un proceso elevado asncronamente o un error de movimiento.
Para alcanzar esta funcionalidad, deben usarse las instrucciones StorePath RestoPath en el gestor de ERROR. Para reanudar el movimiento y continuar con
la ejecucin del programa existen varias instrucciones RAPID.
Ejemplos de tipo
A continuacin aparecen algunos ejemplos de tipo de esta funcionalidad.
Principio
...
ERROR
IF ERRNO = ERR_PATH_STOP THEN
StorePath;
! Move away and back to the interrupted position
...
RestoPath;
StartMoveRetry;
ENDIF
ENDPROC

En la ejecucin de StartMoveRetry, el robot reanuda su movimiento, se reanuda


cualquier proceso activo y el programa reintenta su ejecucin. StartMoveRetry
hace lo mismo que StartMove ms RETRY en una operacin indivisible.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

4 Ejemplos de tipos de programacin


4.1 Gestor de ERROR con movimientos
Continuacin
Reinicio automtico de la ejecucin
CONST robtarget service_pos := [...];
VAR robtarget stop_pos;
...
ERROR
IF ERRNO = AW_WELD_ERR THEN
! Current movement on motion base path level
! is already stopped.
! New motion path level for new movements in the ERROR handler
StorePath;
! Store current position from motion base path level
stop_pos := CRobT(\Tool:=tool1, \WObj:=wobj1);
! Do the work to fix the problem
MoveJ service_pos, v50, fine, tool1, \WObj:=wobj1;
...
! Move back to the position on the motion base path level
MoveJ stop_pos, v50, fine, tool1, \WObj:=wobj1;
! Go back to motion base path level
RestoPath;
! Restart the stopped movements on motion base path level,
! restart the process and retry program execution
StartMoveRetry;
ENDIF
ENDPROC

ste es un ejemplo de tipo de cmo usar la recuperacin asncrona de errores


automtica tras algn tipo de proceso durante los movimientos del robot.
Reinicio manual de la ejecucin
...
ERROR
IF ERRNO = PROC_ERR_XXX THEN
! Current movement on motion base path level
! is already stopped and in stop move state.
! This error must be handle manually.
! Reset the stop move state on motion base path level.
StopMoveReset;
ENDIF
ENDPROC

ste es un ejemplo de tipo de cmo usar el manejo manual de la recuperacin


asncrona de errores tras algn tipo de proceso durante los movimientos del robot.
Una vez que el gestor de ERROR anterior se ha ejecutado hasta el final, la ejecucin
del programa se detiene y el puntero de programa del principio de la instruccin
con el error de proceso (tambin al principio de cualquier rutina NOSTEPIN
utilizada). El siguiente inicio de programa reanuda el programa y el movimiento
desde la posicin en la que se produjo el error de proceso original.

Contina en la pgina siguiente


1340

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

4 Ejemplos de tipos de programacin


4.1 Gestor de ERROR con movimientos
Continuacin
Ejecucin de programas
Comportamiento de ejecucin:

Al inicio de la ejecucin del gestor de ERROR, el programa abandona su nivel


de ejecucin base.

En la ejecucin de StorePath, el sistema de movimiento abandona su nivel


de ejecucin base.

En la ejecucin de RestoPath, el sistema de movimiento retorna a su nivel


de ejecucin base.

En la ejecucin de StartMoveRetry, el programa regresa a su nivel de


ejecucin base.

Limitaciones
Las siguientes instrucciones de RAPID deben usarse en el gestor de ERROR con
instrucciones de movimiento para ponerlo a funcionar con la recuperacin
automtica de errores tras un error de proceso generado asncronamente o un
error de trayectoria:
Instruccin

Descripcin

StorePath

Entrar en el nuevo nivel de trayectoria de movimiento

RestoPath

Retornar al nivel base de trayectoria de movimientos

StartMove Reintentar

Reanudar los movimientos interrumpidos en el nivel base de


trayectoria de movimientos. Tambin se reanuda el proceso y
se reintenta la ejecucin de programas.
Misma funcionalidad que StartMove + RETRY.

La siguiente instruccin RAPID debe usarse en el gestor de ERROR para ponerlo


a funcionar con la recuperacin manual de errores tras un error de proceso
generado asncronamente o un error de trayectoria:
Instruccin

Descripcin

StopMoveReset

Entrar en el nuevo nivel de trayectoria de movimiento

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Para entrar en el nuevo nivel de trayectoria StorePath - Almacena la trayectoria cuando


de movimiento
se produce una interrupcin en la pgina 555
Para retornar al nivel base de trayectoria de RestoPath - Restablece la trayectoria desmovimientos
pus de una interrupcin en la pgina 386
Para reanudar la ejecucin del movimiento StartMoveRetry - Reanuda el movimiento y
interrumpido, el proceso y el reintento del la ejecucin del robot en la pgina 521
programa.

3HAC16581-5 Revisin: L

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

4 Ejemplos de tipos de programacin


4.2 Rutinas de servicio con o sin movimientos

4.2 Rutinas de servicio con o sin movimientos


Utilizacin
Estos ejemplos de tipo describen cmo usar las instrucciones de movimiento en
una rutina de servicio. El mismo principio aplicable a StopMove, StartMove y
StopMoveReset es vlido tambin para las rutinas de servicio vlidas sin
movimientos (slo instrucciones lgicas).
Ambas rutinas de servicio u otras rutinas (procedimientos) sin parmetros pueden
iniciarse manualmente y realizar movimientos de acuerdo con estos ejemplos de
tipo.
Esta funcionalidad slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento en el modo independiente
o semicoordinado.
Descripcin
La rutina de servicio puede iniciar un nuevo movimiento temporal y, en un inicio
posterior del programa, reanudar el movimiento original. Por ejemplo, puede usarse
para ir a una posicin de servicio o iniciar manualmente la limpieza de la pistola.
Para alcanzar esta funcionalidad, deben usarse las instrucciones StorePath RestoPath y StopMoveReset en la rutina de servicio.
Ejemplos de tipo
A continuacin aparecen algunos ejemplos de tipo de esta funcionalidad.
Principio
PROC xxxx()
StopMove;
StorePath;
! Move away and back to the interrupted position
...
RestoPath;
StopMoveReset;
ENDPROC

StopMove es necesario con el fin de asegurarse de que el movimiento detenido


originalmente no se reanude en caso de una secuencia manual "parar
programa-reiniciar programa" durante la ejecucin de la rutina de servicio.

Contina en la pgina siguiente


1342

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

4 Ejemplos de tipos de programacin


4.2 Rutinas de servicio con o sin movimientos
Continuacin
Paro dentro de la trayectoria
VAR robtarget service_pos := [...];
...
PROC proc_stop_on_path()
VAR robtarget stop_pos;
! Current stopped movements on motion base path level
! must not be restarted in the service routine.
StopMove;
! New motion path level for new movements in the service routine.
StorePath;
! Store current position from motion base path level
stop_pos := CRobT(\Tool:=tool1 \WObj:=wobj1);
! Do the work
MoveJ service_pos, v50, fine, tool1 \WObj:=wobj1;
...
! Move back to interrupted position on the motion base path level
MoveJ stop_pos, v50, fine, tool1, \WObj:=wobj1;
! Go back to motion base path level
RestoPath;
! Reset the stop move state for the interrupted movement
! on motion base path level
StopMoveReset;
ENDPROC

En este ejemplo de tipo, los movimientos de la rutina de servicio comienzan y


terminan en la posicin de la trayectoria en la que se detuvo el programa.
Recuerde tambin que la herramienta y el objeto de trabajo utilizados se conocen
en el momento de la programacin.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

4 Ejemplos de tipos de programacin


4.2 Rutinas de servicio con o sin movimientos
Continuacin
Pero en el siguiente punto de paro
TASK PERS tooldata used_tool := [...];
TASK PERS wobjdata used_wobj := [...];
...
PROC proc_stop_in_stop_point()
VAR robtarget stop_pos;
! Current move instruction on motion base path level continue
! to its ToPoint and will be finished in a stop point.
StartMove;
! New motion path level for new movements in the service routine
StorePath;
! Get current tool and work object data
GetSysData used_tool;
GetSysData used_wobj;
! Store current position from motion base path level
stop_pos := CRobT(\Tool:=used_tool \WObj:=used_wobj);
! Do the work
MoveJ Offs(stop_pos,0,0,20),v50,fine,used_tool\WObj:=used_wobj;
...
! Move back to interrupted position on the motion base path level
MoveJ stop_pos, v50, fine, used_tool,\WObj:=used_wobj;
! Go back to motion base path level
RestoPath;
! Reset the stop move state for any new movement
! on motion base path level
StopMoveReset;
ENDPROC

En este ejemplo de tipo, los movimientos de la rutina de servicio continan y


terminan en el punto ToPoint de las instrucciones de movimiento interrumpidas,
antes de que se complete la instruccin StorePath.
Recuerde tambin que la herramienta y el objeto de trabajo utilizados no se conocen
en el momento de la programacin.
Ejecucin de programas
Comportamiento de ejecucin:

Al inicio de la ejecucin de la rutina de servicio, el programa abandona su


nivel de ejecucin base.

En la ejecucin de StorePath, el sistema de movimiento abandona su nivel


de ejecucin base.

En la ejecucin de RestoPath, el sistema de movimiento retorna a su nivel


de ejecucin base.

En la ejecucin de ENDPROC, el programa regresa a su nivel de ejecucin


base.

Contina en la pgina siguiente


1344

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

4 Ejemplos de tipos de programacin


4.2 Rutinas de servicio con o sin movimientos
Continuacin
Limitaciones
Las siguientes instrucciones de RAPID deben usarse en la rutina de servicio junto
con las instrucciones de movimiento para que funcione:
Instruccin

Descripcin

StorePath

Entrar en el nuevo nivel de trayectoria de


movimiento

RestoPath

Retornar al nivel base de trayectoria de movimientos

StopMoveReset

Restablecer el estado de paro de movimiento


del movimiento interrumpido en el nivel base
de la trayectoria

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Ninguna reanudacin del movimiento ya


detenido en el nivel base de trayectoria

StopMove - Detiene el movimiento del robot


en la pgina 548

Reanudacin del movimiento ya detenido


en el nivel base de trayectoria

StopMove - Detiene el movimiento del robot


en la pgina 548

Para entrar en el nuevo nivel de trayectoria StorePath - Almacena la trayectoria cuando


de movimiento
se produce una interrupcin en la pgina 555
Para retornar al nivel base de trayectoria

RestoPath - Restablece la trayectoria despus


de una interrupcin en la pgina 386

Restablecer el estado de paro de movimien- StopMoveReset - Restablece el estado de


to del movimiento interrumpido en el nivel movimiento de paro de sistema en la pgibase de la trayectoria
na 552

3HAC16581-5 Revisin: L

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

4 Ejemplos de tipos de programacin


4.3 Interrupciones de E/S del sistema con o sin movimiento

4.3 Interrupciones de E/S del sistema con o sin movimiento


Utilizacin
Estos ejemplos de tipo describen cmo usar las instrucciones de movimiento en
una rutina de interrupcin de E/S del sistema. El mismo principio aplicable a
StopMove, StartMove y StopMoveReset es vlido tambin para las
interrupciones de E/S del sistema sin movimientos (slo instrucciones lgicas).
Esta funcionalidad slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento en el modo independiente
o semicoordinado.
Descripcin
La interrupcin de E/S del sistema puede iniciar un nuevo movimiento temporal
y, en un inicio posterior del programa, reanudar el movimiento original. Por ejemplo,
puede usarse para ir a una posicin de servicio o limpiar una pistola cuando se
produce una interrupcin.
Para alcanzar esta funcionalidad, deben usarse las instrucciones StorePath RestoPath y StopMoveReset en la rutina de interrupcin de E/S del sistema.
Ejemplos de tipo
A continuacin aparecen algunos ejemplos de tipo de esta funcionalidad.
Principio
PROC xxxx()
StopMove;
StorePath;
! Move away and back to the interrupted position
...
RestoPath;
StopMoveReset;
ENDPROC

StopMove es necesario para poder garantizar que el movimiento detenido


originalmente no se reinicie al principio de la rutina de interrupcin de E/S.
Si no se usa StopMove con StartMove, el movimiento de la rutina de interrupcin
de E/S continuar inmediatamente y finalizar en ToPoint en la instruccin de
movimiento interrumpida.

Contina en la pgina siguiente


1346

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

4 Ejemplos de tipos de programacin


4.3 Interrupciones de E/S del sistema con o sin movimiento
Continuacin
Paro dentro de la trayectoria
VAR robtarget service_pos := [...];
...
PROC proc_stop_on_path()
VAR robtarget stop_pos;
! Current stopped movements on motion base path level
! isnt restarted in the system I/O routine.
StopMove \Quick;
! New motion path level for new movements in the system
! I/O routine.
StorePath;
! Store current position from motion base path level
stop_pos := CRobT(\Tool:=tool1 \WObj:=wobj1);
! Do the work
MoveJ service_pos, v50, fine, tool1 \WObj:=wobj1;
...
! Move back to interrupted position on the motion base path level
MoveJ stop_pos, v50, fine, tool1, \WObj:=wobj1;
! Go back to motion base path level
RestoPath;
! Reset the stop move state for the interrupted movement
! on motion base path level
StopMoveReset;
ENDPROC

En este ejemplo de tipo, los movimientos interrumpidos se detienen inmediatamente


y se reinician al iniciarse el programa una vez finalizada la rutina de interrupcin
de E/S del sistema.
Recuerde tambin que la herramienta y el objeto de trabajo utilizados se conocen
en el momento de la programacin.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

4 Ejemplos de tipos de programacin


4.3 Interrupciones de E/S del sistema con o sin movimiento
Continuacin
Pero en el siguiente punto de paro
TASK PERS tooldata used_tool := [...];
TASK PERS wobjdata used_wobj := [...];
...
PROC proc_stop_in_stop_point()
VAR robtarget stop_pos;
! Current move instruction on motion base path level continue
! to its ToPoint and will be finished in a stop point.
StartMove;
! New motion path level for new movements in the system
! I/O routine
StorePath;
! Get current tool and work object data
GetSysData used_tool;
GetSysData used_wobj;
! Store current position from motion base path level
stop_pos := CRobT(\Tool:=used_tool \WObj:=used_wobj);
! Do the work
MoveJ Offs(stop_pos,0,0,20),v50,fine,used_tool\WObj:=used_wobj;
...
! Move back to interrupted position on the motion base path level
MoveJ stop_pos, v50, fine, used_tool,\WObj:=used_wobj;
! Go back to motion base path level
RestoPath;
! Reset the stop move state for new movement
! on motion base path level
StopMoveReset;
ENDPROC

En este ejemplo de tipo, los movimientos de la rutina de E/S del sistema continan
inmediatamente y terminan en el punto ToPoint de las instrucciones de movimiento
interrumpidas.
Recuerde tambin que la herramienta y el objeto de trabajo utilizados no se conocen
en el momento de la programacin.
Ejecucin de programas
Comportamiento de ejecucin:

Al inicio de la ejecucin de la rutina de E/S del sistema, el programa abandona


su nivel de ejecucin base.

En la ejecucin de StorePath, el sistema de movimiento abandona su nivel


de ejecucin base.

En la ejecucin de RestoPath, el sistema de movimiento retorna a su nivel


de ejecucin base.

En la ejecucin de ENDPROC, el programa regresa a su nivel de ejecucin


base.

Contina en la pgina siguiente


1348

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

4 Ejemplos de tipos de programacin


4.3 Interrupciones de E/S del sistema con o sin movimiento
Continuacin
Limitaciones
Las siguientes instrucciones de RAPID deben usarse en la rutina de E/S del sistema
junto con las instrucciones de movimiento para que funcione:
Instruccin

Descripcin

StorePath

Entrar en el nuevo nivel de trayectoria de movimiento

RestoPath

Retornar al nivel base de trayectoria de movimientos

StopMoveReset

Restablecer el estado de paro de movimiento del movimiento


interrumpido en el nivel base de la trayectoria

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Ninguna reanudacin del movimiento ya de- StopMove - Detiene el movimiento del robot
tenido en el nivel base de trayectoria
en la pgina 548
Reanudacin del movimiento ya detenido en StartMove - Reanuda el movimiento del robot
el nivel base de trayectoria
en la pgina 518
Para entrar en el nuevo nivel de trayectoria StorePath - Almacena la trayectoria cuando
de movimiento
se produce una interrupcin en la pgina 555
Para retornar al nivel base de trayectoria

RestoPath - Restablece la trayectoria despus de una interrupcin en la pgina 386

Restablecer el estado de paro de movimiento StopMoveReset - Restablece el estado de


del movimiento interrumpido en el nivel base movimiento de paro de sistema en la pgide la trayectoria
na 552

3HAC16581-5 Revisin: L

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

4 Ejemplos de tipos de programacin


4.4 Rutinas TRAP con movimientos

4.4 Rutinas TRAP con movimientos


Utilizacin
Estos ejemplos de tipo describen cmo usar las instrucciones de movimiento en
una rutina TRAP tras producirse una interrupcin.
Esta funcionalidad slo puede usarse en la tarea principal T_ROB1 o, si se cuenta
con un sistema MultiMove, en las tareas de movimiento.
Descripcin
La rutina TRAP puede iniciar un nuevo movimiento temporal y por ltimo reanudar
el movimiento original. Por ejemplo, puede usarse para ir a una posicin de servicio
o limpiar una pistola cuando se produce una interrupcin.
Para alcanzar esta funcionalidad, deben usarse las instrucciones StorePath RestoPath y StartMove en la rutina TRAP.
Ejemplos de tipo
A continuacin aparecen algunos ejemplos de tipo de esta funcionalidad.
Principio
TRAP xxxx
StopMove;
StorePath;
! Move away and back to the interrupted position
...
RestoPath;
StartMove;
ENDTRAP

Si se utiliza StopMove, el movimiento se detiene inmediatamente dentro de la


trayectoria en curso. De lo contrario, el movimiento contina hacia el punto ToPoint
de la instruccin de movimiento actual.

Contina en la pgina siguiente


1350

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

4 Ejemplos de tipos de programacin


4.4 Rutinas TRAP con movimientos
Continuacin
Pero en el siguiente punto de paro
VAR robtarget service_pos := [...];
...
TRAP trap_in_stop_point
VAR robtarget stop_pos;
! Current move instruction on motion base path level continue
! to its ToPoint and will be finished in a stop point.
! New motion path level for new movements in the TRAP
StorePath;
! Store current position from motion base path level
stop_pos := CRobT(\Tool:=tool1 \WObj:=wobj1);
! Do the work
MoveJ service_pos, v50, fine, tool1 \WObj:=wobj1;
...
! Move back to interrupted position on the motion base path level
MoveJ stop_pos, v50, fine, tool1, \WObj:=wobj1;
! Go back to motion base path level
RestoPath;
! Restart the interupted movements on motion base path level
StartMove;
ENDTRAP

En este ejemplo de tipo, los movimientos de la rutina TRAP se inician y terminan


en el punto ToPoint de las instrucciones de movimiento interrumpidas. Recuerde
tambin que la herramienta y el objeto de trabajo se conocen en el momento de
la programacin.

Contina en la pgina siguiente


3HAC16581-5 Revisin: L

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

4 Ejemplos de tipos de programacin


4.4 Rutinas TRAP con movimientos
Continuacin
Paro inmediato dentro de la trayectoria
TASK PERS tooldata used_tool := [...];
TASK PERS wobjdata used_wobj := [...];
...
TRAP trap_stop_at_once
VAR robtarget stop_pos;
! Current move instruction on motion base path level stops
! at once
StopMove;
! New motion path level for new movements in the TRAP
StorePath;
! Get current tool and work object data
GetSysData used_tool;
GetSysData used_wobj;
! Store current position from motion base path level
stop_pos := CRobT(\Tool:=used_tool \WObj:=used_wobj);
! Do the work
MoveJ Offs(stop_pos,0,0,20),v50,fine,used_tool\WObj:=used_wobj;
...
! Move back to interrupted position on the motion base path level
MoveJ stop_pos, v50, fine, used_tool,\WObj:=used_wobj;
! Go back to motion base path level
RestoPath;
! Restart the interupted movements on motion base path level
StartMove;
ENDTRAP

En este ejemplo de tipo, los movimientos de la rutina TRAP comienzan y terminan


en la posicin de la trayectoria en la que se detuvo la instruccin de movimiento
interrumpida. Recuerde tambin que la herramienta y el objeto de trabajo utilizados
no se conocen en el momento de la programacin.
Ejecucin de programas
Comportamiento de ejecucin:

Al inicio de la ejecucin de la rutina TRAP, el programa abandona su nivel


de ejecucin base.

En la ejecucin de StorePath, el sistema de movimiento abandona su nivel


de ejecucin base.

En la ejecucin de RestoPath, el sistema de movimiento retorna a su nivel


de ejecucin base.

En la ejecucin de ENDTRAP, el programa regresa a su nivel de ejecucin


base.

Limitaciones
Las siguientes instrucciones de RAPID deben usarse en la rutina TRAP junto con
las instrucciones de movimiento para que funcione:
Instruccin

Descripcin

StorePath

Entrar en el nuevo nivel de trayectoria de movimiento

Contina en la pgina siguiente


1352

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

4 Ejemplos de tipos de programacin


4.4 Rutinas TRAP con movimientos
Continuacin
Instruccin

Descripcin

RestoPath

Retornar al nivel base de trayectoria de movimientos

StartMove

Reanudar los movimientos interrumpidos en el nivel base de


trayectoria de movimientos

Informacin relacionada
Para obtener ms informacin sobre

Consulte

Para detener inmediatamente el movimiento StopMove - Detiene el movimiento del robot


actual
en la pgina 548
Para entrar en el nuevo nivel de trayectoria StorePath - Almacena la trayectoria cuando
de movimiento
se produce una interrupcin en la pgina 555
Para retornar al nivel base de trayectoria

RestoPath - Restablece la trayectoria despus de una interrupcin en la pgina 386

Para reanudar el movimiento interrumpido

StartMove - Reanuda el movimiento del robot


en la pgina 518

3HAC16581-5 Revisin: L

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

Esta pgina se ha dejado vaca intencionadamente

ndice

ndice
A
Abs, 809
AbsDnum, 811
AccSet, 17
ACos, 813
ActUnit, 19
Add, 21
aiotrigg, 1169
AliasIO, 23
AOutput, 814
ArgName, 816
ASin, 820
Assignment
=, 26
ATan, 821
ATan2, 822

B
BitAnd, 823
BitCheck, 825
BitClear, 28
BitLSh, 827
BitNeg, 829
BitOr, 831
BitRSh, 833
BitSet, 30
BitXOr, 835
BookErrNo, 32
bool, 1171
Break, 34
btnres, 1172
busstate, 1174
buttondata, 1175
byte, 1177
ByteToString, 837

C
CalcJointT, 839
CalcRobT, 843
CalcRotAxFrameZ, 845
CalcRotAxisFrame, 850
CallByVar, 35
CancelLoad, 37
CDate, 855
CheckProgRef, 39
CirPathMode, 40
CJointT, 856
Clear, 46
ClearIOBuff, 47
ClearPath, 49
ClearRawBytes, 53
ClkRead, 858
ClkReset, 55
ClkStart, 56
ClkStop, 58
clock, 1178
Close, 59
CloseDir, 60
comment, 61
CompactIF, 62
confdata, 1179
ConfJ, 63
ConfL, 65
CONNECT, 67

CopyFile, 69
CopyRawBytes, 71
CorrClear, 74
CorrCon, 75
corrdescr, 1185
CorrDiscon, 80
CorrRead, 860
CorrWrite, 81
Cos, 861
CPos, 862
CRobT, 864
CSpeedOverride, 867
CTime, 869
CTool, 870
CWObj, 872

D
datapos, 1187
DeactUnit, 83
Decr, 85
DecToHex, 874
DefAccFrame, 875
DefDFrame, 878
DefFrame, 881
Dim, 884
dionum, 1188
dir, 1189
Distance, 886
DitherAct, 87
DitherDeact, 89
dnum, 1190
DnumToNum, 888
DnumToStr, 890
DotProd, 892
DOutput, 894
DropWObj, 90

E
EOffsOff, 91
EOffsOn, 92
EOffsSet, 94
EraseModule, 96
errdomain, 1192
ErrLog, 98
errnum, 1194
ErrRaise, 102
errstr, 1201
errtype, 1202
ErrWrite, 107
etiqueta, 216
EulerZYX, 896
event_type, 1203
EventType, 898
exec_level, 1204
ExecHandler, 900
ExecLevel, 901
EXIT, 109
ExitCycle, 110
Exp, 902
extjoint, 1205

F
FileSize, 903
FileTime, 906

3HAC16581-5 Revisin: L

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

ndice

FOR, 112
FSSize, 910

G
gestor de ERROR, 1339
GetDataVal, 115
GetMecUnitName, 913
GetNextMechUnit, 914
GetNextSym, 917
GetServiceInfo, 919
GetSysData, 118
GetSysInfo, 921
GetTaskName, 924
GetTime, 926
GetTrapData, 121
GInputDnum, 928
GOTO, 123
GOutput, 931
GOutputDnum, 933
GripLoad, 125

H
handler_type, 1207
HexToDec, 936
HollowWristReset, 127

I
icondata, 1208
IDelete, 129
identno, 1210
IDisable, 130
IEnable, 131
IError, 132
IF, 135
Incr, 137
IndAMove, 139
IndCMove, 143
IndDMove, 147
IndInpos, 937
IndReset, 151
IndRMove, 156
IndSpeed, 939
intnum, 1212
InvertDO, 161
IOBusStart, 163
IOBusState, 164
iodev, 1214
IODisable, 167
IOEnable, 170
iounit_state, 1215
IOUnitState, 941
IPers, 173
IRMQMessage, 175
IsFile, 944
ISignalAI, 180
ISignalAO, 190
ISignalDI, 194
ISignalDO, 197
ISignalGI, 200
ISignalGO, 203
ISleep, 206
IsMechUnitActive, 948
IsPers, 949
IsStopMoveAct, 951
IsStopStateEvent, 953
IsSyncMoveOn, 955
IsSysId, 957

IsVar, 958
ITimer, 208
IVarValue, 211
IWatch, 214

J
jointtarget, 1216

L
leer bloque, 364
listitem, 1218
Load, 217
loaddata, 1219
LoadId, 221
loadidnum, 1225
loadsession, 1226

M
MakeDir, 227
ManLoadIdProc, 228
MaxRobSpeed, 959
MechUnitLoad, 232
mecunit, 1227
MirPos, 960
ModExist, 962
ModTime, 963
MotionPlannerNo, 965
MotionSup, 237
motsetdata, 1229
MoveAbsJ, 240
MoveC, 246
MoveCDO, 253
MoveCSync, 257
MoveExtJ, 261
MoveJ, 265
MoveJDO, 270
MoveJSync, 274
MoveL, 278
MoveLDO, 283
MoveLSync, 287
MToolRotCalib, 291
MToolTCPCalib, 294

N
NonMotionMode, 967
NOrient, 969
num, 1234
NumToDnum, 971
NumToStr, 972

O
Offs, 974
opcalc, 1236
Open, 297
OpenDir, 302
OpMode, 976
opnum, 1237
orient, 1238
OrientZYX, 977
ORobT, 979

P
PackDNHeader, 304
PackRawBytes, 307
paridnum, 1243
ParIdPosVaild, 981
ParIdRobValid, 984

1356

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

ndice

paridvalidnum, 1245
PathAccLim, 312
PathLevel, 987
pathrecid, 1247
PathRecMoveBwd, 316
PathRecMoveFwd, 324
PathRecStart, 327
PathRecStop, 330
PathRecValidBwd, 989
PathRecValidFwd, 992
PathResol, 333
PDispOff, 336
PDispOn, 337
PDispSet, 342
PFRestart, 997
pos, 1249
pose, 1251
PoseInv, 998
PoseMult, 1000
PoseVect, 1002
Pow, 1004
PowDnum, 1005
PPMovedInManMode, 1007
Present, 1008
ProcCall, 344
ProcerrRecovery, 346
progdisp, 1252
ProgMemFree, 1010
PulseDO, 352

R
RAISE, 355
RaiseToUser, 358
rawbytes, 1254
RawBytesLen, 1011
ReadAnyBin, 361
ReadBin, 1013
ReadBlock, 364
ReadCfgData, 366
ReadDir, 1016
ReadErrData, 370
ReadMotor, 1019
ReadNum, 1021
ReadRawBytes, 374
ReadStr, 1024
ReadStrBin, 1028
ReadVar, 1030
RelTool, 1032
RemainingRetries, 1034
RemoveDir, 377
RemoveFile, 379
RenameFile, 380
Reset, 382
ResetPPMoved, 383
ResetRetryCount, 384
restartdata, 1256
RestoPath, 386
RETRY, 388
RETURN, 390
Rewind, 392
RMQEmptyQueue, 395
RMQFindSlot, 397
RMQGetMessage, 399
RMQGetMsgData, 402
RMQGetMsgHeader, 405
RMQGetSlotName, 1035
rmqheader, 1260

rmqmessage, 1262
RMQReadWait, 409
RMQSendMessage, 412
RMQSendWait, 416
rmqslot, 1264
robjoint, 1265
RobName, 1037
RobOS, 1039
robtarget, 1266
Round, 1040
RoundDnum, 1042
RunMode, 1044
Rutinas de servicio, 1342, 1346
Rutinas TRAP, 1350

S
Save, 422
SCWrite, 425
SearchC, 428
SearchExtJ, 437
SearchL, 444
SenDevice, 454
Set, 456
SetAllDataVal, 458
SetAO, 460
SetDataSearch, 462
SetDataVal, 466
SetDO, 469
SetGO, 471
SetSysData, 474
shapedata, 1270
signalxx, 1272
Sin, 1046
SingArea, 476
SkipWarn, 478
SocketAccept, 479
SocketBind, 482
SocketClose, 484
SocketConnect, 486
SocketCreate, 489
socketdev, 1274
SocketGetStatus, 1047
SocketListen, 491
SocketReceive, 493
SocketSend, 499
socketstatus, 1275
SoftAct, 504
SoftDeact, 506
speeddata, 1276
SpeedRefresh, 507
SpyStart, 510
SpyStop, 513
Sqrt, 1050
SqrtDnum, 1051
StartLoad, 514
StartMove, 518
StartMoveRetry, 521
STCalcForce, 1052
STCalcTorque, 1054
STCalib, 524
STClose, 528
StepBwdPath, 531
STIndGun, 533
STIndGunReset, 535
STIsCalib, 1056
STIsClosed, 1058
STIsIndGun, 1060

3HAC16581-5 Revisin: L

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

ndice

STIsOpen, 1061
SToolRotCalib, 536
SToolTCPCalib, 539
Stop, 543
STOpen, 546
StopMove, 548
StopMoveReset, 552
stoppointdata, 1280
StorePath, 555
StrDigCalc, 1063
StrDigCmp, 1066
StrFind, 1069
string, 1287
stringdig, 1289
StrLen, 1071
StrMap, 1072
StrMatch, 1074
StrMemb, 1076
StrOrder, 1078
StrPart, 1081
StrToByte, 1083
StrToVal, 1085
STTune, 558
STTuneReset, 562
switch, 1290
symnum, 1291
syncident, 1293
SyncMoveOff, 563
SyncMoveOn, 570
SyncMoveResume, 578
SyncMoveSuspend, 580
SyncMoveUndo, 582
system data, 1294
SystemStopAction, 584

TriggIO, 633
triggios, 1313
triggiosdnum, 1316
TriggJ, 639
TriggL, 646
TriggLIOs, 653
TriggRampAO, 659
TriggSpeed, 666
TriggStopProc, 674
triggstrgo, 1318
Trunc, 1104
TruncDnum, 1106
TryInt, 679
TRYNEXT, 681
TuneReset, 682
TuneServo, 683
tunetype, 1321
Type, 1108

ValidIO, 1162
ValToStr, 1164
VectMagn, 1166
VelSet, 709

Tan, 1087
taskid, 1297
TaskRunMec, 1088
TaskRunRob, 1089
tasks, 1298
TasksInSync, 1090
TEST, 586
TestAndSet, 1092
TestDI, 1095
testsignal, 1300
TestSignDefine, 588
TestSignRead, 1096
TestSignReset, 590
TextGet, 1098
TextTabFreeToUse, 1100
TextTabGet, 1102
TextTabInstall, 591
tooldata, 1301
TPErase, 593
tpnum, 1308
TPReadDnum, 594
TPReadFK, 597
TPReadNum, 602
TPShow, 606
TPWrite, 607
trapdata, 1309
TriggC, 609
TriggCheckIO, 616
triggdata, 1311
TriggEquip, 622
TriggInt, 628

U
UIAlphaEntry, 1110
UIClientExist, 1116
UIDnumEntry, 1118
UIDnumTune, 1125
UIListView, 1132
UIMessageBox, 1141
UIMsgBox, 689
UINumEntry, 1149
UINumTune, 1156
UIShow, 697
uishownum, 1322
UnLoad, 701
UnpackRawBytes, 704

W
WaitAI, 711
WaitAO, 714
WaitDI, 717
WaitDO, 719
WaitGI, 721
WaitGO, 725
WaitLoad, 729
WaitRob, 734
WaitSyncTask, 736
WaitTestAndSet, 740
WaitTime, 743
WaitUntil, 745
WaitWObj, 749
WarmStart, 752
WHILE, 753
wobjdata, 1323
WorldAccLim, 755
Write, 757
WriteAnyBin, 761
WriteBin, 764
WriteBlock, 766
WriteCfgData, 768
WriteRawBytes, 772
WriteStrBin, 775
WriteVar, 777
WZBoxDef, 780

1358

3HAC16581-5 Revisin: L
Copyright 2004-2011 ABB. Reservados todos los derechos.

ndice

WZCylDef, 782
WZDisable, 785
WZDOSet, 787
WZEnable, 791
WZFree, 793
WZHomeJointDef, 795
WZLimJointDef, 799

WZLimSup, 803
WZSphDef, 806
wzstationary, 1327
wztemporary, 1329

Z
zonedata, 1331

3HAC16581-5 Revisin: L

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

ABB AB
Discrete Automation and Motion
Robotics
S-721 68 VSTERS
SWEDEN
Telephone +46 (0) 21 344 400
www.abb.com

3HAC16581-5, Rev L, es

Contact us

También podría gustarte