You are on page 1of 1332

ABB Robotics

Manual de referencia tcnica Instrucciones, funciones y tipos de datos de RAPID

Manual de referencia tcnica Instrucciones, funciones y tipos de datos de RAPID


RobotWare 5.14 ID de documento: 3HAC16581-5 Revisin: K

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 ninguna 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. Ninguna parte de este manual debe ser entregada a terceros ni utilizada para fines no autorizados. Cualquier incumplimiento de esta norma ser perseguido legalmente. Usted puede obtener copias adicionales de este manual a travs de ABB, con el coste aplicable en el momento de su solicitud.
Copyright 2004-2011 ABB. Reservados todos los derechos.

Copyright 2004-2011 ABB Reservados todos los derechos. ABB AB Robotics Products SE-721 68 Vsters Suecia

Contenido

Descripcin general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1 Instrucciones 15

1.1 AccSet - Reduce la aceleracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.2 ActUnit - Activa una unidad mecnica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.3 Add - Suma un valor numrico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.4 AliasIO - Define una seal de E/S con un nombre de alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.5 ":=" - Asigna un valor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.6 BitClear - Desactiva un bit especfico de un dato de byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.7 BitSet - Activa un bit especfico de un dato de byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.8 BookErrNo - Registra un nmero de error de sistema de RAPID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1.9 Break - Interrumpe la ejecucin del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.10 CallByVar - Llama a un procedimiento mediante una variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 1.11 CancelLoad - Cancela la carga de un mdulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 1.12 CheckProgRef - Comprobar referencias de programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.13 CirPathMode - Reorientacin de la herramienta durante trayectorias circulares . . . . . . . . . . . . . . . . . . 38 1.14 Clear - Borra el valor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 1.15 ClearIOBuff - Vaca el bfer de entrada de un canal serie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 1.16 ClearPath - Elimina la trayectoria actual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 1.17 ClearRawBytes - Borra el contenido de un dato de tipo rawbytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 1.18 ClkReset - Pone a cero un reloj utilizado como temporizador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 1.19 ClkStart - Pone en marcha un reloj utilizado para la temporizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 1.20 ClkStop - Detiene un reloj utilizado para la temporizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 1.21 Close - Cierra un archivo o un canal serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 1.22 CloseDir - Cierra un directorio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 1.23 Comentario - Comentario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 1.24 Compact IF (IF compacto) - Si se cumple una condicin, entonces... (una instruccin) . . . . . . . . . . . . 60 1.25 ConfJ - Controla la configuracin durante el movimiento de los ejes . . . . . . . . . . . . . . . . . . . . . . . . . . 61 1.26 ConfL - Monitoriza la configuracin durante el movimiento lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 1.27 CONNECT - Conecta una interrupcin a una rutina TRAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 1.28 CopyFile - Copia un archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 1.29 CopyRawBytes - Copia el contenido de un dato de tipo rawbytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 1.30 CorrClear - Elimina todos los generadores de correcciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 1.31 CorrCon - Establece una conexin con un generador de correcciones . . . . . . . . . . . . . . . . . . . . . . . . . 72 1.32 CorrDiscon - Cierra la conexin con un generador de correcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 1.33 CorrWrite - Escribe en un generador de correcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 1.34 DeactUnit - Desactiva una unidad mecnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 1.35 Decr - Reduce un nmero en 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 1.36 DitherAct - Activa la funcin de oscilacin del servo suave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 1.37 DitherDeact - Desactiva la funcin de oscilacin del servo suave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 1.38 DropWObj - Suelta un objeto de trabajo sobre un transportador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 1.39 EOffsOff - Desactiva un offset de ejes externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 1.40 EOffsOn - Activa un offset de ejes externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 1.41 EOffsSet - Activa un offset de ejes externos a partir de valores conocidos . . . . . . . . . . . . . . . . . . . . . . 92 1.42 EraseModule - Elimina un mdulo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 1.43 ErrLog - Escribe un mensaje de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 1.44 ErrRaise - Escribe un aviso y llama a un gestor de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 1.45 ErrWrite - Escribe un mensaje de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 1.46 EXIT - Finaliza la ejecucin del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 1.47 ExitCycle - Interrumpe el ciclo actual y pasa al siguiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 1.48 FOR - Repite un nmero determinado de veces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 1.49 GetDataVal - Obtiene el valor de un objeto de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 1.50 GetSysData - Obtiene datos del sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 1.51 GetTrapData - Obtiene datos de interrupcin para la rutina TRAP actual. . . . . . . . . . . . . . . . . . . . . . 118 1.52 GOTO - Salta a otra instruccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

Copyright 2004-2011 ABB. All rights reserved.

3HAC16581-5 Revisin: K

Contenido

1.53 GripLoad - Define la carga til del robot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 1.54 HollowWristReset - Restablece la mueca hueca en los modelos IRB5402 e IRB5403. . . . . . . . . . . 124 1.55 IDelete - Cancela una interrupcin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 1.56 IDisable - Desactiva todas las interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 1.57 IEnable - Habilita el uso de interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 1.58 IError - Solicita una interrupcin para errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 1.59 IF - Si se cumple una condicin, ...; de lo contrario, ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 1.60 Incr - Aumenta en 1 un valor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 1.61 IndAMove - Movimiento independiente de posicin absoluta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 1.62 IndCMove - Movimiento independiente continuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 1.63 IndDMove - Movimiento independiente de posicin delta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 1.64 IndReset - Restablecimiento independiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 1.65 IndRMove - Movimiento independiente de posicin relativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 1.66 InvertDO - Invierte el valor de una seal de salida digital. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 1.67 IOBusStart - Start of I/O bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 1.68 IOBusState - Obtener el estado actual de un bus de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 1.69 IODisable - Desactiva una unidad de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 1.70 IOEnable - Activa una unidad de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 1.71 IPers - Interrupcin en caso de cambio de valor de una variable persistente. . . . . . . . . . . . . . . . . . . . 171 1.72 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato . . . . . . . . . . . . . . . . . . . . . . . 173 1.73 ISignalAI - Interrupciones a partir de una seal analgica de entrada. . . . . . . . . . . . . . . . . . . . . . . . . 177 1.74 ISignalAO - Interrupciones a partir de una seal analgica de salida . . . . . . . . . . . . . . . . . . . . . . . . . 188 1.75 ISignalDI - Solicita interrupciones a partir de una seal digital de entrada. . . . . . . . . . . . . . . . . . . . . 192 1.76 ISignalDO - Interrupciones a partir de una seal digital de salida. . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 1.77 ISignalGI - Solicita interrupciones de un grupo de seales digitales de entrada . . . . . . . . . . . . . . . . . 198 1.78 ISignalGO - Solicita interrupciones de un grupo de seales digitales de salida . . . . . . . . . . . . . . . . . 201 1.79 ISleep - Desactiva una interrupcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 1.80 ITimer - Solicita una interrupcin temporizada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 1.81 IVarValue - Solicita una interrupcin a partir del valor de una variable . . . . . . . . . . . . . . . . . . . . . . . 209 1.82 IWatch - Activar una interrupcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 1.83 Etiqueta - Nombre de lnea. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 1.84 Load - Carga un mdulo de programa durante la ejecucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 1.85 LoadId - Identificacin de carga de la herramienta o la carga til. . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 1.86 MakeDir - Crea un nuevo directorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 1.87 ManLoadIdProc - Identificacin de carga de los manipuladores IRBP. . . . . . . . . . . . . . . . . . . . . . . . 227 1.88 MechUnitLoad - Define una carga til para una unidad mecnica . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 1.89 MotionSup - Desactiva/activa la supervisin del movimiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 1.90 MoveAbsJ - Mueve el robot a una posicin de ejes absoluta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 1.91 MoveC - Mueve el robot en crculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 1.92 MoveCDO - Mueve el robot en una trayectoria circular y establece una salida digital en la esquina. 251 1.93 MoveCSync - Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID . . . 255 1.94 MoveExtJ - Mueve una o varias unidades mecnicas sin TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 1.95 MoveJ - Mueve el robot mediante un movimiento de ejes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 1.96 MoveJDO - Mueve el robot mediante el movimiento de los ejes y activa una salida digital en la esquina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 1.97 MoveJSync - Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de RAPID . . . 271 1.98 MoveL - Mueve el robot siguiendo una trayectoria lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 1.99 MoveLDO - Mueve el robot linealmente y establece una salida digital en la esquina. . . . . . . . . . . . . 280 1.100 MoveLSync - Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID . . . . . . . . . . . 284 1.101 MToolRotCalib - Calibracin de la rotacin de una herramienta mvil . . . . . . . . . . . . . . . . . . . . . . 288 1.102 MToolTCPCalib - Calibracin del TCP de una herramienta mvil. . . . . . . . . . . . . . . . . . . . . . . . . . 291 1.103 Open - Abre un archivo o un canal serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 1.104 OpenDir - Abre un directorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 1.105 PackDNHeader - Empaqueta un encabezado de DeviceNet en datos rawbytes . . . . . . . . . . . . . . . . 301 1.106 PackRawBytes - Empaqueta datos en un dato de tipo rawbytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. All rights reserved.

Contenido

1.107 PathAccLim - Reduce la aceleracin del TCP a lo largo de la trayectoria . . . . . . . . . . . . . . . . . . . . 309 1.108 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias . . . . . . . . . . . . . . . . . . . . . . . . . . 312 1.109 PathRecMoveFwd - Hace avanzar la grabadora de trayectorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 1.110 PathRecStart - Inicia la grabadora de trayectorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 1.111 PathRecStop - Detiene la grabadora de trayectorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 1.112 PathResol - Ajusta la resolucin de la trayectoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 1.113 PDispOff - Desactiva el desplazamiento de programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 1.114 PDispOn - Activa el desplazamiento de programa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 1.115 PDispSet - Activa un desplazamiento de programa a partir de una base de coordenadas conocida . 336 1.116 ProcCall - Llama a un nuevo procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 1.117 ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos . 340 1.118 PulseDO - Genera un pulso en una seal digital de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 1.119 RAISE - Llama a un gestor de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 1.120 RaiseToUser - Propaga un error al nivel del usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 1.121 ReadAnyBin - Lee datos de un canal serie o un archivo binario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 1.122 ReadBlock - Lee un bloque de datos de un dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 1.123 ReadCfgData - Lee un atributo de un parmetro del sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 1.124 ReadErrData - Obtiene informacin sobre un error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 1.125 ReadRawBytes - Lee datos de tipo rawbytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 1.126 RemoveDir - Elimina un directorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 1.127 RemoveFile - Elimina un archivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 1.128 RenameFile - Cambia el nombre de un archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 1.129 Reset - Pone a cero una seal digital de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 1.130 ResetPPMoved - Restablecer el estado del puntero de programa movido en el modo manual. . . . . 375 1.131 ResetRetryCount - Restablece el nmero de reintentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 1.132 RestoPath - Restablece la trayectoria despus de una interrupcin . . . . . . . . . . . . . . . . . . . . . . . . . . 377 1.133 RETRY - Reanuda la ejecucin despus de un error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 1.134 RETURN - Finaliza la ejecucin de una rutina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 1.135 Rewind - Rebobina la posicin del archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 1.136 RMQEmptyQueue - Vaca la cola de mensajes de RAPID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 1.137 RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura . . . . . . . . . . . . . . . . . . . . 387 1.138 RMQGetMessage - Obtener un mensaje de RMQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 1.139 RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ. . . . . . . . . . . . . . . . . . . . . . . 392 1.140 RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ. . . . . . . . . . . . 395 1.141 RMQReadWait - Devuelve un mensaje de una cola RMQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 1.142 RMQSendMessage - Enviar un mensaje de datos de RMQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 1.143 RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta. . . . . . . . . . . . . . . . 405 1.144 Save - Guarda un mdulo de programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 1.145 SCWrite - Enva los datos de la variable a una aplicacin cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 1.146 SearchC - Realiza una bsqueda en crculo usando el robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 1.147 SearchExtJ - Busca con una o varias unidades mecnicas sin TCP . . . . . . . . . . . . . . . . . . . . . . . . . . 424 1.148 SearchL - Realiza una bsqueda lineal usando el robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 1.149 SenDevice - Establece una conexin a un dispositivo de sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 1.150 Set - Activa una seal digital de salida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 1.151 SetAllDataVal - Establece un valor en todos los objetos de datos de un conjunto definido . . . . . . . 444 1.152 SetAO - Cambia el valor de una seal analgica de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 1.153 SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda . . . . . . . . . . . . . . . 448 1.154 SetDataVal - Establece el valor de un objeto de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 1.155 SetDO - Cambia el valor de una seal digital de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 1.156 SetGO - Cambia el valor de un grupo de seales digitales de salida . . . . . . . . . . . . . . . . . . . . . . . . . 458 1.157 SetSysData - Establece datos del sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 1.158 SingArea - Define el mtodo de interpolacin alrededor de puntos singulares . . . . . . . . . . . . . . . . . 463 1.159 SkipWarn - Omitir el ltimo aviso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 1.160 SocketAccept - Acepta una conexin entrante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 1.161 SocketBind - Enlaza un zcalo a mi direccin IP y puerto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

Copyright 2004-2011 ABB. All rights reserved.

3HAC16581-5 Revisin: K

Contenido

1.162 SocketClose - Cierra un zcalo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 1.163 SocketConnect - Establece una conexin a un ordenador remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 1.164 SocketCreate - Crea un nuevo zcalo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 1.165 SocketListen - Permanece a la escucha de conexiones entrantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 1.166 SocketReceive - Recibe datos de un ordenador remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 1.167 SocketSend - Enva datos a un ordenador remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 1.168 SoftAct - Activa el servo suave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 1.169 SoftDeact - Desactiva el servo suave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 1.170 SpeedRefresh - El ajuste de velocidad para el movimiento en curso. . . . . . . . . . . . . . . . . . . . . . . . . 492 1.171 SpyStart - Comienza la grabacin de los datos de tiempo de ejecucin . . . . . . . . . . . . . . . . . . . . . . 495 1.172 SpyStop - Detiene la grabacin de los datos de tiempo de ejecucin . . . . . . . . . . . . . . . . . . . . . . . . 498 1.173 StartLoad - Carga un mdulo de programa durante la ejecucin. . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 1.174 StartMove - Reanuda el movimiento del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 1.175 StartMoveRetry - Reanuda el movimiento y la ejecucin del robot . . . . . . . . . . . . . . . . . . . . . . . . . 506 1.176 STCalib - Calibra una herramienta servo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 1.177 STClose - Cierra una herramienta servo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 1.178 StepBwdPath - Retrocede un paso a lo largo de la trayectoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 1.179 STIndGun - Pone la pistola en el modo independiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 1.180 STIndGunReset - Restablece el modo independiente de la pistola . . . . . . . . . . . . . . . . . . . . . . . . . . 520 1.181 SToolRotCalib - Calibracin del TCP y de la rotacin de una herramienta estacionaria . . . . . . . . . 521 1.182 SToolTCPCalib - Calibracin del TCP de una herramienta estacionaria . . . . . . . . . . . . . . . . . . . . . 524 1.183 Stop - Detiene la ejecucin del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 1.184 STOpen - Abre una herramienta servo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 1.185 StopMove - Detiene el movimiento del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 1.186 StopMoveReset - Restablece el estado de movimiento de paro de sistema. . . . . . . . . . . . . . . . . . . . 537 1.187 StorePath - Almacena la trayectoria cuando se produce una interrupcin. . . . . . . . . . . . . . . . . . . . . 540 1.188 STTune - Ajusta una herramienta servo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 1.189 STTuneReset - Restablece el ajuste de la herramienta servo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 1.190 SyncMoveOff - Finaliza los movimientos sincronizados coordinados . . . . . . . . . . . . . . . . . . . . . . . 548 1.191 SyncMoveOn - Inicia los movimientos sincronizados coordinados . . . . . . . . . . . . . . . . . . . . . . . . . 555 1.192 SyncMoveResume - Activa el modo de movimientos sincronizados coordinados . . . . . . . . . . . . . . 562 1.193 SyncMoveSuspend - Activa el movimiento independiente-semicoordinado . . . . . . . . . . . . . . . . . . 564 1.194 SyncMoveUndo - Activa los movimientos independientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 1.195 SystemStopAction - Para el sistema de robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 1.196 TEST - En funcin del valor de una expresin... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 1.197 TestSignDefine - Define una seal de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 1.198 TestSignReset - Restablece todas las definiciones de seales de prueba. . . . . . . . . . . . . . . . . . . . . . 574 1.199 TextTabInstall - Instalacin de una tabla de textos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 1.200 TPErase - Borra el texto mostrado en el FlexPendant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 1.201 TPReadDnum - Lee un nmero del FlexPendant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 1.202 TPReadFK - Lee las teclas de funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 1.203 TPReadNum - Lee un nmero del FlexPendant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 1.204 TPShow - Cambia de ventana en el FlexPendant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 1.205 TPWrite - Escribe en el FlexPendant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 1.206 TriggC - Movimiento circular del robot con eventos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 1.207 TriggCheckIO - Define una comprobacin de E/S en una posicin fija . . . . . . . . . . . . . . . . . . . . . . 600 1.208 TriggEquip - Define un evento de E/S basado en la posicin y el tiempo en la trayectoria . . . . . . . 606 1.209 TriggInt - Define una interrupcin dependiente de una posicin. . . . . . . . . . . . . . . . . . . . . . . . . . . . 612 1.210 TriggIO - Define un evento de E/S de posicin o tiempo fijos cerca de un punto de paro . . . . . . . . 616 1.211 TriggJ - Movimientos de ejes del robot a partir de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 1.212 TriggL - Movimiento lineal del robot con eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 1.213 TriggLIOs - Movimientos lineales del robot con eventos de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 1.214 TriggRampAO - Define un evento AO de rampa de posicin fija en la trayectoria . . . . . . . . . . . . . 640 1.215 TriggSpeed - Define la velocidad del TCP en proporcin a una salida analgica con un evento de escala fija de posicin-tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. All rights reserved.

Contenido

Copyright 2004-2011 ABB. All rights reserved.

1.216 TriggStopProc - Genera datos de reinicio para las seales de disparo ante paros . . . . . . . . . . . . . . . 654 1.217 TryInt - Comprobar si un objeto de dato es un entero vlido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 1.218 TRYNEXT - Salta sobre una instruccin que ha provocado un error . . . . . . . . . . . . . . . . . . . . . . . . 661 1.219 TuneReset - Restablecimiento del ajuste del servo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 1.220 TuneServo - Ajuste de servos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 1.221 UIMsgBox - Cuadro de mensaje de usuario de tipo bsico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 1.222 UIShow - Visualizacin de interfaz de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 1.223 UnLoad - Descarga un mdulo de programa durante la ejecucin . . . . . . . . . . . . . . . . . . . . . . . . . . 681 1.224 UnpackRawBytes - Desempaqueta datos de un dato de tipo rawbytes . . . . . . . . . . . . . . . . . . . . . . . 684 1.225 VelSet - Cambia la velocidad programada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 1.226 WaitAI - Espera hasta que se establece un valor de seal analgica de entrada . . . . . . . . . . . . . . . . 691 1.227 WaitAO - Espera hasta que se establece un valor de seal analgica de salida. . . . . . . . . . . . . . . . . 694 1.228 WaitDI - Espera hasta que se activa una seal digital de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 1.229 WaitDO - Espera hasta que se activa una seal digital de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 1.230 WaitGI - Espera hasta que se activa un grupo de entradas digitales . . . . . . . . . . . . . . . . . . . . . . . . . 701 1.231 WaitGO - Espera hasta que se activa un grupo de salidas digitales . . . . . . . . . . . . . . . . . . . . . . . . . . 705 1.232 WaitLoad - Conecta el mdulo cargado a la tarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 1.233 WaitRob - Esperar hasta un punto de paro o una velocidad cero. . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 1.234 WaitSyncTask - Espera en un punto de sincronizacin con otras tareas de programa . . . . . . . . . . . 716 1.235 WaitTestAndSet - Espera a que se desactive una variable y la activa a continuacin . . . . . . . . . . . . 720 1.236 WaitTime - Espera una cantidad de tiempo determinada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723 1.237 WaitUntil - Espera hasta que se cumple una condicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 1.238 WaitWObj - Espera a un objeto de trabajo en un transportador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729 1.239 WarmStart - Reinicia el controlador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732 1.240 WHILE - Repite una o varias operaciones siempre y cuando.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 1.241 WorldAccLim - Control de aceleracin en el sistema de coordenadas mundo . . . . . . . . . . . . . . . . . 735 1.242 Write - Escribe en un archivo o un canal serie alfanumrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737 1.243 WriteAnyBin - Escribe datos en un canal serie o archivo binario . . . . . . . . . . . . . . . . . . . . . . . . . . . 741 1.244 WriteBin - Escribe en un canal serie binario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744 1.245 WriteBlock - Escribe un bloque de datos en un dispositivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747 1.246 WriteCfgData - Escribe un atributo de un parmetro del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 749 1.247 WriteRawBytes - Escribe un dato de tipo rawbytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753 1.248 WriteStrBin - Escribe una cadena de caracteres en un canal serie binario. . . . . . . . . . . . . . . . . . . . . 756 1.249 WriteVar - Escribe una variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 1.250 WZBoxDef - Define una zona mundo con forma de prisma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761 1.251 WZCylDef - Define una zona mundo con forma cilndrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763 1.252 WZDisable - Desactiva la supervisin de las zonas mundo temporales . . . . . . . . . . . . . . . . . . . . . . 766 1.253 WZDOSet - Activacin de salidas digitales basadas en zonas mundo. . . . . . . . . . . . . . . . . . . . . . . . 768 1.254 WZEnable - Activa la supervisin de las zonas mundo temporales. . . . . . . . . . . . . . . . . . . . . . . . . . 772 1.255 WZFree - Elimina la supervisin de las zonas mundo temporales. . . . . . . . . . . . . . . . . . . . . . . . . . . 774 1.256 WZHomeJointDef - Define una zona mundo para las posiciones iniciales de los ejes . . . . . . . . . . . 776 1.257 WZLimJointDef - Define una zona mundo para la limitacin de los ejes . . . . . . . . . . . . . . . . . . . . . 780 1.258 WZLimSup - Activa la supervisin de lmites de las zonas mundo. . . . . . . . . . . . . . . . . . . . . . . . . . 784 1.259 WZSphDef - Define una zona mundo con forma esfrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787 2 Funciones 789

2.1 Abs - Obtiene el valor absoluto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789 2.2 AbsDnum - Obtiene el valor absoluto de un dnum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 2.3 ACos - Calcula el valor de arco coseno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793 2.4 AOutput - Lee el valor de una seal analgica de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 2.5 ArgName - Obtiene el nombre de un argumento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796 2.6 ASin - Calcula el valor del arco seno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800 2.7 ATan - Calcula el valor de arco tangente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801 2.8 ATan2 - Calcula el valor de arco tangente 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802 2.9 BitAnd - AND lgico bit a bit - Operacin con datos de byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803

3HAC16581-5 Revisin: K

Contenido

2.10 BitCheck - Comprueba si un bit especificado de un dato de byte est activado . . . . . . . . . . . . . . . . . 805 2.11 BitLSh - DESPLAZAMIENTO A LA IZQUIERDA lgico bit a bit - Operacin de byte . . . . . . . . . 807 2.12 BitNeg - NEGACIN lgica bit a bit - Operacin con datos de byte . . . . . . . . . . . . . . . . . . . . . . . . . 809 2.13 BitOr - OR lgico bit a bit - Operacin con datos de byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811 2.14 BitRSh - DESPLAZAMIENTO A LA DERECHA lgico bit a bit - Operacin de byte . . . . . . . . . . 813 2.15 BitXOr - XOR lgico bit a bit - Operacin con datos de byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815 2.16 ByteToStr - Convierte un byte en un dato de cadena de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . 817 2.17 CalcJointT - Calcula los ngulos de las articulaciones a partir de un robtarget. . . . . . . . . . . . . . . . . . 820 2.18 CalcRobT - Calcula el valor de robtarget a partir de jointtarget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 2.19 CalcRotAxFrameZ - Calcular la base de coordenadas de un eje de rotacin . . . . . . . . . . . . . . . . . . . 826 2.20 CalcRotAxisFrame - Calcular la base de coordenadas de un eje de rotacin . . . . . . . . . . . . . . . . . . . 830 2.21 CDate - Lee la fecha actual como una cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834 2.22 CJointT - Lee los ngulos actuales de los ejes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 2.23 ClkRead - Lee un reloj utilizado para la temporizacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837 2.24 CorrRead - Lee los offsets totales actuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839 2.25 Cos - Calcula el valor del coseno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840 2.26 CPos - Lee los datos de posicin (pos) actuales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841 2.27 CRobT - Lee los datos de posicin (robtarget) actuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843 2.28 CSpeedOverride - Lee el ajuste de velocidad actual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846 2.29 CTime - Lee la hora actual en forma de una cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848 2.30 CTool - Lee los datos actuales de la herramienta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849 2.31 CWObj - Lee los datos del objeto de trabajo actual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851 2.32 DecToHex - Convierte de decimal a hexadecimal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853 2.33 DefAccFrame - Define una base de coordenadas exacta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854 2.34 DefDFrame - Define una base de coordenadas de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . 857 2.35 DefFrame - Define una base de coordenadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860 2.36 Dim - Obtiene las dimensiones de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863 2.37 Distance - Distancia entre dos puntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865 2.38 DnumToNum - Convierte dnum a num . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867 2.39 DnumToStr - Convierte un valor numrico en una cadena de caracteres . . . . . . . . . . . . . . . . . . . . . . 869 2.40 DotProd - Producto escalar de dos vectores pos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871 2.41 DOutput - Lee el valor de una seal digital de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873 2.42 EulerZYX - Obtiene ngulos Euler a partir de una orientacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875 2.43 EventType - Obtiene el tipo de evento actual dentro de cualquier rutina de evento . . . . . . . . . . . . . . 877 2.44 ExecHandler - Obtener el tipo de gestor de ejecucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879 2.45 ExecLevel - Obtener el nivel de ejecucin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880 2.46 Exp - Calcula el valor exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881 2.47 FileSize - Obtiene el tamao de un archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882 2.48 FileTime - Obtiene la informacin de hora de un archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 2.49 FSSize - Obtiene el tamao de un sistema de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888 2.50 GetMecUnitName - Obtiene el nombre de la unidad mecnica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 891 2.51 GetNextMechUnit - Obtener el nombre y los datos de las unidades mecnicas . . . . . . . . . . . . . . . . . 892 2.52 GetNextSym - Obtiene el siguiente smbolo coincidente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895 2.53 GetServiceInfo - Obtener informacin de servicio del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897 2.54 GetSysInfo - Obtener informacin acerca del sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899 2.55 GetTaskName - Obtiene el nombre y el nmero de la tarea actual . . . . . . . . . . . . . . . . . . . . . . . . . . . 902 2.56 GetTime - Lee la hora actual como un valor numrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904 2.57 GInputDnum - Lee el valor de una seal de entrada de grupo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906 2.58 GOutput - Lee el valor de un grupo de seales digitales de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . 908 2.59 GOutputDnum - Lee el valor de una seal de salida de grupo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910 2.60 HexToDec - Convierte de hexadecimal a decimal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912 2.61 IndInpos - Estado de posicin de un eje independiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913 2.62 IndInpos - Estado de velocidad de un eje independiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915 2.63 IOUnitState - Obtiene el estado actual de una unidad de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917 2.64 IsFile - Comprobar el tipo de un archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. All rights reserved.

Contenido

2.65 IsMechUnitActive - Indica si una unidad mecnica est activa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924 2.66 IsPers - Determina si es una variable persistente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925 2.67 IsStopMoveAct - Est activo el indicador de movimiento de paro . . . . . . . . . . . . . . . . . . . . . . . . . . . 927 2.68 IsStopStateEvent - Comprueba si se ha movido el puntero de programa . . . . . . . . . . . . . . . . . . . . . . 929 2.69 IsSyncMoveOn - Comprueba si el modo de movimiento sincronizado est activado . . . . . . . . . . . . . 931 2.70 IsSysID - Comprobar la identidad del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933 2.71 IsVar - Determina si un dato es una variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934 2.72 MaxRobSpeed - Velocidad mxima del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936 2.73 MirPos - Obtencin de la posicin espejo de una posicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937 2.74 ModExist - Comprobar si un mdulo de programa existe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939 2.75 ModTime - Obtiene la hora de modificacin del mdulo cargado. . . . . . . . . . . . . . . . . . . . . . . . . . . . 940 2.76 MotionPlannerNo - Obtiene el nmero de planificador de movimientos conectado . . . . . . . . . . . . . . 942 2.77 NonMotionMode - Lee el modo de ejecucin sin movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944 2.78 NOrient - Normaliza la orientacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946 2.79 NumToDnum - Convierte num a dnum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948 2.80 NumToStr - Convierte un valor numrico en una cadena de caracteres . . . . . . . . . . . . . . . . . . . . . . . 949 2.81 Offs - Desplaza una posicin del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951 2.82 OpMode - Lee el modo de funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953 2.83 OrientZYX - Genera una orientacin a partir de ngulos Euler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954 2.84 ORobT - Elimina el desplazamiento de programa de una posicin . . . . . . . . . . . . . . . . . . . . . . . . . . . 956 2.85 ParIdPosValid - Posicin de robot vlida para la identificacin de parmetros . . . . . . . . . . . . . . . . . 958 2.86 ParIdRobValid - Tipo de robot vlido para la identificacin de parmetros . . . . . . . . . . . . . . . . . . . . 961 2.87 PathLevel - Obtiene el nivel de trayectoria actual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964 2.88 PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida guardada. . . . . . . . . . . 966 2.89 PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada. . . . . . . . . . . . . 970 2.90 PFRestart - Comprueba si se ha interrumpido una trayectoria despus de un fallo de alimentacin. . 974 2.91 PoseInv - Invierte los datos de pose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975 2.92 PoseMult - Multiplica datos de pose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.93 PoseVect - Aplica una transformacin a un vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979 2.94 Pow - Calcula el resultado de elevar un valor a una potencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981 2.95 PowDnum - Calcula el resultado de elevar un valor a una potencia . . . . . . . . . . . . . . . . . . . . . . . . . . 983 2.96 PPMovedInManMode - Comprobar si el puntero de programa se ha movido en el modo manual. . . 985 2.97 Present - Comprueba si se est usando un parmetro opcional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986 2.98 ProgMemFree - Obtiene el tamao de memoria libre del programa . . . . . . . . . . . . . . . . . . . . . . . . . . 988 2.99 RawBytesLen - Obtiene la longitud de un dato de tipo rawbytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989 2.100 ReadBin - Lee un byte de un archivo o un canal serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991 2.101 ReadDir - Lee la siguiente entrada de un directorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994 2.102 ReadMotor - Lee los ngulos actuales de los motores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.103 ReadNum - Lee un nmero de un archivo o un canal serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999 2.104 ReadStr - Lee una cadena de caracteres de un archivo o un canal serie. . . . . . . . . . . . . . . . . . . . . . 1002 2.105 ReadStrBin - Lee una cadena de un canal serie o un archivo binario . . . . . . . . . . . . . . . . . . . . . . . 1006 2.106 ReadVar - Lee una variable de un dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.107 RelTool - Hace un desplazamiento respecto de la herramienta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010 2.108 RemainingRetries - Reintentos restantes an pendientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012 2.109 RMQGetSlotName - Obtener el nombre de un cliente de RMQ . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013 2.110 RobName - Obtiene el nombre del robot del TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015 2.111 RobOS - Comprueba si el programa se est ejecutando en RC o VC . . . . . . . . . . . . . . . . . . . . . . . 1017 2.112 Round - Redondear un valor numrico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1018 2.113 RoundDnum - Redondear un valor numrico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1020 2.114 RunMode - Obtiene el modo de ejecucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1022 2.115 Sin - Calcula el valor del seno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024 2.116 SocketGetStatus - Obtiene el estado actual de un zcalo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025 2.117 Sqrt - Calcula el valor de la raz cuadrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1028 2.118 SqrtDnum - Calcula el valor de la raz cuadrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029 2.119 STCalcForce - Calcula fuerza de la punta de una herramienta servo. . . . . . . . . . . . . . . . . . . . . . . . 1030

Copyright 2004-2011 ABB. All rights reserved.

3HAC16581-5 Revisin: K

Contenido

3 Tipos de datos

1147

3.1 aiotrigg - Condicin de disparo con E/S analgica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147 3.2 bool - Valores lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1149 3.3 btnres - Datos de resultado de pulsador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150 3.4 busstate - Estado de bus de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152 3.5 buttondata - Datos de pulsador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153 3.6 byte - Valores enteros de 0 a 255 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1155 3.7 clock - Medicin de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156 3.8 confdata - Datos de configuracin del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157 3.9 corrdescr - Descriptor de generador de correcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163 3.10 datapos - Inclusin de un bloque para un objeto de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1165 3.11 dionum - Valores digitales (0 - 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166 3.12 dir - Estructura de directorio de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167 3.13 dnum - Valores numricos dobles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1168

10

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. All rights reserved.

2.120 STCalcTorque - Calcula el par motor de una herramienta servo . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032 2.121 STIsCalib - Compruebe si una herramienta servo est calibrada. . . . . . . . . . . . . . . . . . . . . . . . . . . 1034 2.122 STIsClosed - Comprueba si una herramienta servo est cerrada . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036 2.123 STIsIndGun - Comprueba si una herramienta servo se encuentra en el modo independiente. . . . . 1038 2.124 STIsOpen - Comprueba si una herramienta servo est abierta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.125 StrDigCalc - Operaciones aritmticas con el tipo de dato stringdig . . . . . . . . . . . . . . . . . . . . . . . . 1041 2.126 StrDigCmp - Comparar dos cadenas que slo contienen dgitos . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044 2.127 StrFind - Busca un carcter en una cadena de caracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047 2.128 StrLen - Obtiene la longitud de una cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1049 2.129 StrMap - Mapea una cadena de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050 2.130 StrMatch - Busca un patrn dentro de una cadena de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . 1052 2.131 StrMemb - Comprueba si un carcter pertenece a un conjunto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054 2.132 StrOrder - Comprueba si dos cadenas de caracteres estn ordenadas . . . . . . . . . . . . . . . . . . . . . . . 1056 2.133 StrPart - Busca una parte de una cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059 2.134 StrToByte - Convierte una cadena en un byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 2.135 StrToVal - Convierte una cadena de caracteres en un valor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064 2.136 Tan - Calcula el valor de tangente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066 2.137 TaskRunMec - Comprueba si una tarea controla alguna unidad mecnica . . . . . . . . . . . . . . . . . . . 1067 2.138 TaskRunRob - Comprueba si una tarea controla algn robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1068 2.139 TasksInSync - Devuelve el nmero de tareas sincronizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069 2.140 TestAndSet - Comprueba una variable y la establece si no est establecida . . . . . . . . . . . . . . . . . 1071 2.141 TestDI - Se comprueba si una entrada digital est activada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1074 2.142 TestSignRead - Obtiene el valor de una seal de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075 2.143 TextGet - Obtener un texto de las tablas de textos del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077 2.144 TextTabFreeToUse - Comprueba si una tabla de textos est libre para su uso . . . . . . . . . . . . . . . . 1079 2.145 TextTabGet - Obtiene el nmero de una tabla de textos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081 2.146 Trunc - Trunca un valor numrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083 2.147 TruncDnum - Trunca un valor numrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085 2.148 Type - Obtener el nombre del tipo de dato de una variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087 2.149 UIAlphaEntry - Introduccin alfanumrica del usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089 2.150 UIClientExist - Existe cliente de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095 2.151 UIDnumEntry - Introduccin de nmero de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1096 2.152 UIDnumTune - Ajuste de nmero de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103 2.153 UIListView - Vista de lista de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1110 2.154 UIMessageBox - Cuadro de mensaje de usuario de tipo avanzado . . . . . . . . . . . . . . . . . . . . . . . . . 1118 2.155 UINumEntry - Introduccin de nmero de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126 2.156 UINumTune - Ajuste de nmero de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133 2.157 ValidIO - Seal de E/S vlida para su uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140 2.158 ValToStr - Convierte un valor en una cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142 2.159 VectMagn - Magnitud de un vector pos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144

Contenido

3.14 errdomain - Dominio de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1170 3.15 errnum - Nmero de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1172 3.16 errstr - Cadena de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 3.17 errtype - Tipo de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179 3.18 event_type - Tipo de rutina de evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1180 3.19 exec_level - Execution level. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181 3.20 extjoint - Posicin de los ejes externos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182 3.21 handler_type - Type of execution handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184 3.22 icondata - Datos de visualizacin de iconos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185 3.23 identno - Identidad para las instrucciones de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187 3.24 intnum - Identidad de interrupcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1189 3.25 iodev - Canales serie y archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1191 3.26 iounit_state - Estado de la unidad de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192 3.27 jointtarget - Datos de posicin de eje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 3.28 listitem - Estructura de datos de elementos de lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195 3.29 loaddata - Datos de carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196 3.30 loadidnum - Tipo de identificacin de la carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201 3.31 loadsession - Programar una sesin de carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202 3.32 mecunit - Unidad mecnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203 3.33 motsetdata - Datos de parmetros de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205 3.34 num - Valores numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1210 3.35 opcalc - Arithmetic Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212 3.36 opnum - Operador de comparacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213 3.37 orient - Orientacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214 3.38 paridnum - Tipo de identificacin de parmetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218 3.39 paridvalidnum - Resultado de ParIdRobValid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 3.40 pathrecid - Identificador de grabadora de trayectorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1222 3.41 pos - Posiciones (slo X, Y y Z). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224 3.42 pose - Transformaciones de coordenadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226 3.43 progdisp - Desplazamiento de programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1227 3.44 rawbytes - Datos sin formato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 3.45 restartdata - Datos de reinicio de seales de disparo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1231 3.46 rmqheader - Encabezado de mensaje de RAPID Message Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235 3.47 rmqmessage - Mensaje de RAPID Message Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237 3.48 rmqslot - Nmero de identidad de un cliente de RMQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238 3.49 robjoint - Posicin de eje de los ejes del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239 3.50 robtarget - Datos de posicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240 3.51 shapedata - Datos de forma de zonas mundo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 3.52 signalxx - Seales digitales y analgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246 3.53 socketdev - Dispositivo de zcalo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1248 3.54 socketstatus - Estado de comunicacin de zcalo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 3.55 speeddata - Datos de velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1250 3.56 stoppointdata - Datos de punto de paro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254 3.57 string - Cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1260 3.58 stringdig - Cadena de caracteres con slo dos dgitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1262 3.59 switch - Optional parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1263 3.60 symnum - Nmero simblico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1264 3.61 syncident - Identidad de punto de sincronizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266 3.62 Datos del sistema - Valores actuales de los datos del sistema de RAPID . . . . . . . . . . . . . . . . . . . . . 1267 3.63 taskid - Identificacin de tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1270 3.64 tasks - Tareas de programa de RAPID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1271 3.65 testsignal - Seal de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273 3.66 tooldata - Datos de herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 3.67 tpnum - Nmero de ventana del FlexPendant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1279 3.68 trapdata - Datos de interrupcin para la rutina TRAP actual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1280

Copyright 2004-2011 ABB. All rights reserved.

3HAC16581-5 Revisin: K

11

Contenido

3.69 triggdata - Eventos de posicionamiento, trigg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1281 3.70 triggios - Positioning events, trigg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 3.71 triggiosdnum - Positioning events, trigg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1285 3.72 triggstrgo - Positioning events, trigg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1287 3.73 tunetype - Tipo de ajuste de servo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1290 3.74 uishownum - ID de instancia para UIShow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1291 3.75 wobjdata - Datos del objeto de trabajo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1292 3.76 wzstationary - Datos de zona mundo estacionaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1296 3.77 wztemporary - Datos de zona mundo temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1298 3.78 zonedata - Datos de zonas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300 4 Ejemplos de tipos de programacin 1307

4.1 Gestor de ERROR con movimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1307 4.2 Rutinas de servicio con o sin movimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1310 4.3 Interrupciones de E/S del sistema con o sin movimiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1314 4.4 Rutinas TRAP con movimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1318 Index 1323

12

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. All rights reserved.

Descripcin general

Descripcin general
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: Manual del operador - Introduccin a RAPID Manual de referencia tcnica - Descripcin general de RAPID

Organizacin de los captulos Este manual est organizado en los captulos siguientes: Captulo
1. Instrucciones

Contenido
Descripciones detalladas de todas las instrucciones bsicas de RAPID, con ejemplos de cmo usarlas. Descripciones detalladas de todas las funciones bsicas de RAPID, con ejemplos de cmo usarlas. Descripciones detalladas de todos los tipos de datos bsicos de RAPID, con ejemplos de cmo usarlas. 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.

2. Funciones
Copyright 2004-2011 ABB. Reservados todos los derechos.

3. Tipos de datos

4. Ejemplos de tipos de programacin

Referencias Referencia
Manual de referencia tcnica - Descripcin general de RAPID

ID de documento
3HAC16580-5

Manual del operador - Introduccin a RAPID 3HAC029364-005

Technical reference manual - RAPID kernel 3HAC16585-1

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 13

Descripcin general Continuacin Revisiones Revisin


F G

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 586 Type - Obtener el nombre del tipo de dato de una variable en la pgina 1087 UIDnumEntry - Introduccin de nmero de usuario en la pgina 1096 UIDnumTune - Ajuste de nmero de usuario en la pgina 1103 triggiosdnum - Positioning events, trigg en la pgina 1285 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 791 DnumToStr - Convierte un valor numrico en una cadena de caracteres en la pgina 869 GetServiceInfo - Obtener informacin de servicio del sistema en la pgina 897 PowDnum - Calcula el resultado de elevar un valor a una potencia en la pgina 983 RoundDnum - Redondear un valor numrico en la pgina 1020 SqrtDnum - Calcula el valor de la raz cuadrada en la pgina 1029 TruncDnum - Trunca un valor numrico en la pgina 1085

H J

14

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.1. AccSet - Reduce la aceleracin RobotWare - OS

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.

Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 15

1 Instrucciones
1.1. AccSet - Reduce la aceleracin RobotWare - OS Continuacin
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. Las figuras muestran cmo la reduccin de la aceleracin da lugar a unos movimientos ms suaves.

xx0500002146

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: Sintaxis
AccSet [ Acc ':=' ] < expression (IN) of num > ',' [ Ramp ':=' ] < expression (IN) of num > ';'
Copyright 2004-2011 ABB. Reservados todos los derechos.

En los arranques en fro. Cuando se carga un nuevo programa. Cuando se inicia la ejecucin del programa desde el principio

Informacin relacionada Para obtener ms informacin sobre Consulte

Control de aceleracin en el sistema de WorldAccLim - Control de aceleracin en el coordenadas mundo sistema de coordenadas mundo en la pgina 735 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 309 Instrucciones de posicionamiento Manual de referencia tcnica - Descripcin general de RAPID

16

3HAC16581-5 Revisin: K

1 Instrucciones
1.2. ActUnit - Activa una unidad mecnica RobotWare - OS

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.

Copyright 2004-2011 ABB. Reservados todos los derechos.

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. Sintaxis
ActUnit [MechUnit ':=' ] < variable (VAR) of mecunit> ';'

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 17

1 Instrucciones
1.2. ActUnit - Activa una unidad mecnica RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Desactivacin de unidades mecnicas Unidades mecnicas Ms ejemplos Grabadora de trayectorias

Consulte
DeactUnit - Desactiva una unidad mecnica en la pgina 81 mecunit - Unidad mecnica en la pgina 1203 DeactUnit - Desactiva una unidad mecnica en la pgina 81 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias en la pgina 312

18

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.3. Add - Suma un valor numrico RobotWare - OS

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 19

1 Instrucciones
1.3. Add - Suma un valor numrico RobotWare - OS 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 num > | [ Dname := ] < var or pers (INOUT) of dnum > , [ AddValue ':=' ] < expression (IN) of num > | [ AddDvalue := ] < expression (IN) of dnum > ;

Informacin relacionada Para obtener ms informacin sobre


Incremento de una variable en 1 Decremento de una variable en 1

Consulte
Incr - Aumenta en 1 un valor en la pgina 135 Decr - Reduce un nmero en 1 en la pgina 83

Cambio de un dato mediante una ":=" - Asigna un valor en la pgina 24 expresin arbitraria, por ejemplo una multiplicacin

20

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

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

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 21 para los mdulos cargados y Ms ejemplos en la pgina 22 para los mdulos instalados. Ejemplos bsicos A continuacin aparece un ejemplo bsico de la instruccin AliasIO. Consulte tambin Ms ejemplos en la pgina 22. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. 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).

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 21

1 Instrucciones
1.4. AliasIO - Define una seal de E/S con un nombre de alias RobotWare - OS Continuacin 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. Los tipos de datos de los argumentos FromSignal y ToSignal no son del mismo tipo.

ERR_ALIASIO_TYPE

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).
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


22 3HAC16581-5 Revisin: K

1 Instrucciones
1.4. AliasIO - Define una seal de E/S con un nombre de alias RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Instrucciones de entrada/salida

Consulte
Manual de referencia tcnica - Descripcin general de RAPID

Funcionalidad de entrada/salida en Manual de referencia tcnica - Descripcin general de general RAPID Configuracin de E/S Definicin de rutinas de evento Mdulos de tarea cargados o instalados Manual de referencia tcnica - Parmetros del sistema Manual de referencia tcnica - Parmetros del sistema Manual de referencia tcnica - Parmetros del sistema

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

23

1 Instrucciones
1.5. ":=" - Asigna un valor RobotWare - OS

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 24. 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.


Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


24 3HAC16581-5 Revisin: K

1 Instrucciones
1.5. ":=" - Asigna un valor RobotWare - OS Continuacin Limitaciones El dato (cuyo valor se desea cambiar) no debe ser ninguno de los siguientes: Una constante 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


Expresiones Tipos de datos sin valor

Consulte
Manual de referencia tcnica - Descripcin general de RAPID Manual de referencia tcnica - Descripcin general de RAPID

Asignacin de un valor inicial a un dato Manual del operador - IRC5 con FlexPendant

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

25

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

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;

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.

xx0500002147

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


26 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.6. BitClear - Desactiva un bit especfico de un dato de byte RobotWare - OS 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 28 Comprobacin de si un bit especfico de un dato de byte est activado Otras funciones de bits BitCheck - Comprueba si un bit especificado de un dato de byte est activado en la pgina 805 Manual de referencia tcnica - Descripcin general de RAPID

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

27

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

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;

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.

xx0500002148

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


28 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.7. BitSet - Activa un bit especfico de un dato de byte RobotWare - OS 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 26 Comprobacin de si un bit especfico de un dato de byte est activado Otras funciones de bits BitCheck - Comprueba si un bit especificado de un dato de byte est activado en la pgina 805 Manual de referencia tcnica - Descripcin general de RAPID

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

29

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

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 ... ELSE ... ENDIF
Copyright 2004-2011 ABB. Reservados todos los derechos.

IF ERRNO = ERR_GLUEFLOW THEN

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.

Contina en la pgina siguiente


30 3HAC16581-5 Revisin: K

1 Instrucciones
1.8. BookErrNo - Registra un nmero de error de sistema de RAPID RobotWare - OS Continuacin 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. Sintaxis
BookErrNo [ ErrorName ':='] < variable (VAR) of errnum > ';'

Informacin relacionada Para obtener ms informacin sobre


Gestin de errores Nmero de error Llamada a un gestor de errores

Consulte
Manual de referencia tcnica - Descripcin general de RAPID errnum - Nmero de error en la pgina 1172 RAISE - Llama a un gestor de errores en la pgina 349

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

31

1 Instrucciones
1.9. Break - Interrumpe la ejecucin del programa RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Break';'

Informacin relacionada Para obtener ms informacin sobre


Paro para acciones de programa Paro despus de un error no recuperable Finalizacin de la ejecucin del programa Paro de los movimientos del robot nicamente

Consulte
Stop - Detiene la ejecucin del programa en la pgina 528 EXIT - Finaliza la ejecucin del programa en la pgina 107 EXIT - Finaliza la ejecucin del programa en la pgina 107 StopMove - Detiene el movimiento del robot en la pgina 533

32

3HAC16581-5 Revisin: K

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

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 33. 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 door_loc; CASE 2: rf_door door_loc; CASE 3: lr_door door_loc; CASE 4: rr_door door_loc; DEFAULT: EXIT; ENDTEST

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 33

1 Instrucciones
1.10. CallByVar - Llama a un procedimiento mediante una variable RobotWare - OS Continuacin 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. 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 inforConsulte macin sobre


Llamadas a procedimientos Manual de referencia tcnica - Descripcin general de RAPID Manual del operador - IRC5 con FlexPendant

34

3HAC16581-5 Revisin: K

1 Instrucciones
1.11. CancelLoad - Cancela la carga de un mdulo RobotWare - OS

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 35. 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 35

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

Informacin relacionada Para obtener ms informacin sobre


Carga de mdulos de programa durante la ejecucin

Consulte
StartLoad - Carga un mdulo de programa durante la ejecucin en la pgina 499

Conexin de un mdulo cargado a una WaitLoad - Conecta el mdulo cargado a la tarea tarea en la pgina 709 Sesin de carga Carga de un mdulo de programa Descarga de un mdulo de programa Comprobar referencias de programa loadsession - Programar una sesin de carga en la pgina 1202 Load - Carga un mdulo de programa durante la ejecucin en la pgina 215 UnLoad - Descarga un mdulo de programa durante la ejecucin en la pgina 681 CheckProgRef - Comprobar referencias de programa en la pgina 37

36

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.12. CheckProgRef - Comprobar referencias de programa RobotWare - OS

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


Carga de un mdulo de programa Descarga de un mdulo de programa

Consulte
Load - Carga un mdulo de programa durante la ejecucin en la pgina 215 UnLoad - Descarga un mdulo de programa durante la ejecucin en la pgina 681

Inicio de la carga de un mdulo de programa StartLoad - Carga un mdulo de programa durante la ejecucin en la pgina 499 Finalizacin de la carga de un mdulo de programa WaitLoad - Conecta el mdulo cargado a la tarea en la pgina 709

3HAC16581-5 Revisin: K

37

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

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;

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


38 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

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

Copyright 2004-2011 ABB. Reservados todos los derechos.

xx0500002153

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 39

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

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
Se supone que el haz de corte est alineado 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.

xx0800000294

Contina en la pgina siguiente


40 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.13. CirPathMode - Reorientacin de la herramienta durante trayectorias circulares RobotWare - OS Continuacin 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

NOTA: Este modificador requiere la opcin Wrist Move.


[ \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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 41

1 Instrucciones
1.13. CirPathMode - Reorientacin de la herramienta durante trayectorias circulares RobotWare - OS Continuacin 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: 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. En los arranques en fro. Cuando se carga un nuevo programa. Cuando se inicia la ejecucin del programa desde el principio.

xx0500002149

\Wrist45, Los modos \Wrist46 y \Wrist56 slo deben usarse para cortar objetos

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] ';'

Contina en la pgina siguiente


42 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

delgados, dado que la posibilidad de controlar el ngulo de la herramienta se pierde al utilizar slo dos ejes de mueca. No es posible utilizar movimientos coordinados dado que el eje principal est bloqueado.

1 Instrucciones
1.13. CirPathMode - Reorientacin de la herramienta durante trayectorias circulares RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Interpolacin Datos de parmetros de movimiento Instruccin para movimiento circular Movimientos de la mueca

Consulte
Manual de referencia tcnica - Descripcin general de RAPID motsetdata - Datos de parmetros de movimiento en la pgina 1205 MoveC - Mueve el robot en crculo en la pgina 244 Application manual - Motion Performance, seccin Wrist Move

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

43

1 Instrucciones
1.14. Clear - Borra el valor RobotWare - OS

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 > ';'
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Incremento de una variable en 1 Decremento de una variable en 1 Suma de cualquier valor a una variable Cambio de un dato mediante una expresin arbitraria

Consulte
Incr - Aumenta en 1 un valor en la pgina 135 Decr - Reduce un nmero en 1 en la pgina 83 Add - Suma un valor numrico en la pgina 19 ":=" - Asigna un valor en la pgina 24

44

3HAC16581-5 Revisin: K

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

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Sintaxis
ClearIOBuff [IODevice ':='] <variable (VAR) of iodev>';'

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 45

1 Instrucciones
1.15. ClearIOBuff - Vaca el bfer de entrada de un canal serie RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Apertura de un canal serie

Consulte
Manual de referencia tcnica - Descripcin general de RAPID

46

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.16. ClearPath - Elimina la trayectoria actual Robot Ware - OS

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.

xx0500002154

Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 47

1 Instrucciones
1.16. ClearPath - Elimina la trayectoria actual Robot Ware - OS Continuacin
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. Limitaciones A continuacin aparecen algunos ejemplos de limitacin de la instruccin ClearPath.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


48 3HAC16581-5 Revisin: K

1 Instrucciones
1.16. ClearPath - Elimina la trayectoria actual Robot Ware - OS Continuacin 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. 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 49

1 Instrucciones
1.16. ClearPath - Elimina la trayectoria actual Robot Ware - OS Continuacin Informacin relacionada Para obtener ms inforConsulte macin sobre
Paro de los movimientos del StopMove - Detiene el movimiento del robot en la pgina 533 robot Recuperacin en caso de error Error elevado asncronamente Manual de referencia tcnica - Descripcin general de RAPID Technical reference manual - RAPID kernel ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos en la pgina 340

50

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

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

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 51

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

Informacin relacionada Para obtener ms informacin sobre


Dato rawbytes Obtencin de la longitud de un dato rawbytes

Consulte
rawbytes - Datos sin formato en la pgina 1229 RawBytesLen - Obtiene la longitud de un dato de tipo rawbytes en la pgina 989

Copiado del contenido de un dato de tipo CopyRawBytes - Copia el contenido de un dato rawbytes de tipo rawbytes en la pgina 69 Empaquetamiento de un encabezado de PackDNHeader - Empaqueta un encabezado de DeviceNet en datos rawbytes DeviceNet en datos rawbytes en la pgina 301 Empaquetamiento de datos en datos rawbytes Escritura de un dato rawbytes Lectura de un dato rawbytes Desempaquetamiento de datos de un dato rawbytes PackRawBytes - Empaqueta datos en un dato de tipo rawbytes en la pgina 304 WriteRawBytes - Escribe un dato de tipo rawbytes en la pgina 753 ReadRawBytes - Lee datos de tipo rawbytes en la pgina 367 UnpackRawBytes - Desempaqueta datos de un dato de tipo rawbytes en la pgina 684

52

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

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

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 > ';'
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Otras instrucciones de reloj

Consulte
Manual de referencia tcnica - Descripcin general de RAPID

3HAC16581-5 Revisin: K

53

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

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);
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


54 3HAC16581-5 Revisin: K

1 Instrucciones
1.19. ClkStart - Pone en marcha un reloj utilizado para la temporizacin RobotWare - OS 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


Otras instrucciones de reloj

Consulte
Manual de referencia tcnica - Descripcin general de RAPID

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

55

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

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 >';'
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Otras instrucciones de reloj Ms ejemplos

Consulte
Manual de referencia tcnica - Descripcin general de RAPID ClkStart - Pone en marcha un reloj utilizado para la temporizacin en la pgina 54

56

3HAC16581-5 Revisin: K

1 Instrucciones
1.21. Close - Cierra un archivo o un canal serie RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Para obtener ms informacin sobre


Apertura de un archivo o canal serie

Consulte
Manual de referencia tcnica - Descripcin general de RAPID

3HAC16581-5 Revisin: K

57

1 Instrucciones
1.22. CloseDir - Cierra un directorio RobotWare - OS

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

Sintaxis
CloseDir [ Dev ':=' ] < variable (VAR) of dir>';'

Informacin relacionada Para obtener ms informacin sobre


Directorio Creacin de un directorio Apertura de un directorio Lectura de un directorio Eliminacin de un directorio Eliminacin de un archivo Cambio del nombre de un archivo

Consulte
dir - Estructura de directorio de archivos en la pgina 1167 MakeDir - Crea un nuevo directorio en la pgina 226 OpenDir - Abre un directorio en la pgina 299 ReadDir - Lee la siguiente entrada de un directorio en la pgina 994 RemoveDir - Elimina un directorio en la pgina 370 RemoveFile - Elimina un archivo en la pgina 371 RenameFile - Cambia el nombre de un archivo en la pgina 372

58

3HAC16581-5 Revisin: K

1 Instrucciones
1.23. Comentario - Comentario RobotWare - OS

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>
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Caracteres permitidos en los comentarios Comentarios dentro de declaraciones de datos y rutinas

Consulte
Manual de referencia tcnica - Descripcin general de RAPID Manual de referencia tcnica - Descripcin general de RAPID

3HAC16581-5 Revisin: K

59

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

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
IF <conditional expression> ( <instruction> | <SMT>) ';'
Copyright 2004-2011 ABB. Reservados todos los derechos.

(EBNF)

Informacin relacionada Para obtener ms informacin sobre


Condiciones (expresiones lgicas) IF con varias instrucciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID IF - Si se cumple una condicin, ...; de lo contrario, ... en la pgina 133

60

3HAC16581-5 Revisin: K

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

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 61

1 Instrucciones
1.25. ConfJ - Controla la configuracin durante el movimiento de los ejes RobotWare - OS 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: Sintaxis
ConfJ [ '\' On] | [ '\' Off]';'

En los arranques en fro. Cuando se carga un nuevo programa. Cuando se inicia la ejecucin del programa desde el principio.

Informacin relacionada Para obtener ms informacin sobre Consulte

Manejo de configuraciones diferentes Manual de referencia tcnica - Descripcin general de RAPID Configuracin del robot durante el movimiento lineal ConfL - Monitoriza la configuracin durante el movimiento lineal en la pgina 63
Copyright 2004-2011 ABB. Reservados todos los derechos.

62

3HAC16581-5 Revisin: K

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

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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 63

1 Instrucciones
1.26. ConfL - Monitoriza la configuracin durante el movimiento lineal RobotWare - OS 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 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: Sintaxis
ConfL [ '\' On] | [ '\' Off]';'
Copyright 2004-2011 ABB. Reservados todos los derechos.

En los arranques en fro. Cuando se carga un nuevo programa. Cuando se inicia la ejecucin del programa desde el principio.

Informacin relacionada Para obtener ms informacin sobre


Manejo de configuraciones diferentes Configuracin del robot durante el movimiento de ejes

Consulte
Manual de referencia tcnica - Descripcin general de RAPID ConfJ - Controla la configuracin durante el movimiento de los ejes en la pgina 61

Definicin del mtodo de interpolacin SingArea - Define el mtodo de interpolacin alrededor de puntos singulares alrededor de puntos singulares en la pgina 463

64

3HAC16581-5 Revisin: K

1 Instrucciones
1.27. CONNECT - Conecta una interrupcin a una rutina TRAP RobotWare - OS

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


Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 65

1 Instrucciones
1.27. CONNECT - Conecta una interrupcin a una rutina TRAP RobotWare - OS 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>
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre Consulte


Resumen de interrupciones Ms informacin sobre la gestin de interrupciones Tipos de datos de las interrupciones Cancelacin de una interrupcin Manual de referencia tcnica - Descripcin general de RAPID Manual de referencia tcnica - Descripcin general de RAPID intnum - Identidad de interrupcin en la pgina 1189 IDelete - Cancela una interrupcin en la pgina 126

66

3HAC16581-5 Revisin: K

1 Instrucciones
1.28. CopyFile - Copia un archivo RobotWare - OS

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


Creacin de un directorio Eliminacin de un directorio Cambio del nombre de un archivo Eliminacin de un archivo

Consulte
MakeDir - Crea un nuevo directorio en la pgina 226 RemoveDir - Elimina un directorio en la pgina 370 RenameFile - Cambia el nombre de un archivo en la pgina 372 RemoveFile - Elimina un archivo en la pgina 371

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 67

1 Instrucciones
1.28. CopyFile - Copia un archivo RobotWare - OS Continuacin Para obtener ms informacin sobre
Comprobacin del tipo del archivo Comprobacin del tamao del archivo Comprobacin del tamao del sistema de archivos

Consulte
IsFile - Comprobar el tipo de un archivo en la pgina 920 FileSize - Obtiene el tamao de un archivo en la pgina 882 FSSize - Obtiene el tamao de un sistema de archivos en la pgina 888

68

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

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

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 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 := 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


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

1 Instrucciones
1.29. CopyRawBytes - Copia el contenido de un dato de tipo rawbytes RobotWare - OS Continuacin
[\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


Dato rawbytes Obtencin de la longitud de un dato rawbytes Borrado del contenido de un dato de tipo rawbytes

Consulte
rawbytes - Datos sin formato en la pgina 1229 RawBytesLen - Obtiene la longitud de un dato de tipo rawbytes en la pgina 989 ClearRawBytes - Borra el contenido de un dato de tipo rawbytes en la pgina 51

Empaquetamiento de un encabezado PackDNHeader - Empaqueta un encabezado de de DeviceNet en datos rawbytes DeviceNet en datos rawbytes en la pgina 301 Empaquetamiento de datos en datos PackRawBytes - Empaqueta datos en un dato de tipo rawbytes rawbytes en la pgina 304 Escritura de un dato rawbytes Lectura de un dato rawbytes WriteRawBytes - Escribe un dato de tipo rawbytes en la pgina 753 ReadRawBytes - Lee datos de tipo rawbytes en la pgina 367

Desempaquetamiento de datos de un UnpackRawBytes - Desempaqueta datos de un dato dato rawbytes de tipo rawbytes en la pgina 684

70

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.30. CorrClear - Elimina todos los generadores de correcciones Path Offset

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 el Manual de referencia tcnica - Parmetros del sistema, tema Controller. Sintaxis
CorrClear ';'

Informacin relacionada Para obtener ms informacin sobre


Conexin con un generador de correcciones

Consulte
CorrCon - Establece una conexin con un generador de correcciones en la pgina 72

Copyright 2004-2011 ABB. Reservados todos los derechos.

Desconexin de un generador de correc- CorrDiscon - Cierra la conexin con un ciones generador de correcciones en la pgina 78 Escritura en un generador de correcciones Lectura de los offsets totales actuales Descriptor de correccin CorrWrite - Escribe en un generador de correcciones en la pgina 79 CorrRead - Lee los offsets totales actuales en la pgina 839 corrdescr - Descriptor de generador de correcciones en la pgina 1163

3HAC16581-5 Revisin: K

71

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

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 72. 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

A B XP, YP, ZP XT, Y,T ZT

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

72

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.31. CorrCon - Establece una conexin con un generador de correcciones Path Offset Continuacin 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

A B C T

Sensor para correccin horizontal Sensor para correccin vertical Sistema de coordenadas de la trayectoria Herramienta

Ejemplo de programa ATENCIN! hori_sig y vert_sig son seales analgicas definidas en los parmetros del sistema.
CONST num TARGET_DIST := 5; CONST num SCALE_FACTOR := 0.5;
Copyright 2004-2011 ABB. Reservados todos los derechos.

VAR intnum intno1; VAR corrdescr hori_id; VAR corrdescr vert_id; VAR pos total_offset; VAR pos write_offset; VAR bool conFlag;

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 73

1 Instrucciones
1.31. CorrCon - Establece una conexin con un generador de correcciones Path Offset Continuacin
PROC PathRoutine() ! Connect to the correction generators for horizontal and vertical correction. 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. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

CorrDiscon vert_id;

Contina en la pgina siguiente


74 3HAC16581-5 Revisin: K

1 Instrucciones
1.31. CorrCon - Establece una conexin con un generador de correcciones Path Offset 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

Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 75

1 Instrucciones
1.31. CorrCon - Establece una conexin con un generador de correcciones Path Offset Continuacin 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 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

En la tabla siguiente se muestran los generadores de correcciones. X


0 0 0

Y
0 1 1

Z
3 0 3

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

Contina en la pgina siguiente


76 3HAC16581-5 Revisin: K

1 Instrucciones
1.31. CorrCon - Establece una conexin con un generador de correcciones Path Offset Continuacin 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 78 Escritura en un generador de correcciones Lectura de los offsets totales actuales Eliminacin de todos los generadores de correcciones Descriptor de generador de correcciones CorrWrite - Escribe en un generador de correcciones en la pgina 79 CorrRead - Lee los offsets totales actuales en la pgina 839 CorrClear - Elimina todos los generadores de correcciones en la pgina 71 corrdescr - Descriptor de generador de correcciones en la pgina 1163

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

77

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

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 78. 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 72. Sintaxis
CorrDiscon [ Descr ':=' ] < variable (VAR) of corrdescr > ';'
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Conexin con un generador de correcciones Escritura en un generador de correcciones Lectura de los offsets totales actuales

Consulte
CorrCon - Establece una conexin con un generador de correcciones en la pgina 72 CorrWrite - Escribe en un generador de correcciones en la pgina 79 CorrRead - Lee los offsets totales actuales en la pgina 839

Eliminacin de todos los generadores de CorrClear - Elimina todos los generadores de corcorrecciones recciones en la pgina 71 Descriptor de correccin corrdescr - Descriptor de generador de correcciones en la pgina 1163

78

3HAC16581-5 Revisin: K

1 Instrucciones
1.33. CorrWrite - Escribe en un generador de correcciones Path Offset

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. Data Tipo de dato: pos El offset a escribir.
Copyright 2004-2011 ABB. Reservados todos los derechos.

Ms ejemplos Para obtener ms ejemplos de la instruccin CorrWrite, consulte CorrCon - Establece una conexin con un generador de correcciones en la pgina 72. 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 > ';'

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 79

1 Instrucciones
1.33. CorrWrite - Escribe en un generador de correcciones Path Offset Continuacin Informacin relacionada Para obtener ms informacin sobre
Conexin con un generador de correcciones

Consulte
CorrCon - Establece una conexin con un generador de correcciones en la pgina 72

Desconexin de un generador de correc- CorrDiscon - Cierra la conexin con un ciones generador de correcciones en la pgina 78 Lectura de los offsets totales actuales CorrRead - Lee los offsets totales actuales en la pgina 839

Eliminacin de todos los generadores de CorrClear - Elimina todos los generadores de correcciones correcciones en la pgina 71 Descriptor de generador de correcciones corrdescr - Descriptor de generador de correcciones en la pgina 1163

80

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.34. DeactUnit - Desactiva una unidad mecnica RobotWare - OS

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_motio se mueven hacia p40. Ejemplo 3
MoveL p10, v100, fine, tool1;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.34. DeactUnit - Desactiva una unidad mecnica RobotWare - OS Continuacin 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


Activacin de unidades mecnicas Unidades mecnicas Grabadora de trayectorias

Consulte
ActUnit - Activa una unidad mecnica en la pgina 17 mecunit - Unidad mecnica en la pgina 1203 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias en la pgina 312mecunit - Unidad mecnica en la pgina 1203
Copyright 2004-2011 ABB. Reservados todos los derechos.

82

3HAC16581-5 Revisin: K

1 Instrucciones
1.35. Decr - Reduce un nmero en 1 RobotWare - OS

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 83. 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

... 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: K 83

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

Informacin relacionada Para obtener ms informacin sobre


Incremento de una variable en 1 Sustraccin de cualquier valor a una variable

Consulte
Incr - Aumenta en 1 un valor en la pgina 135 Add - Suma un valor numrico en la pgina 19

Cambio de un dato mediante una ":=" - Asigna un valor en la pgina 24 expresin arbitraria, por ejemplo una multiplicacin

84

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

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

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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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).

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 85

1 Instrucciones
1.36. DitherAct - Activa la funcin de oscilacin del servo suave RobotWare - OS Continuacin
[ \Level ]

Tipo de dato: num 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 > ] ';'
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Activacin del servo suave Comportamiento con el servo suave activado Desactivacin de la oscilacin

Consulte
SoftAct - Activa el servo suave en la pgina 489 Manual de referencia tcnica - Descripcin general de RAPID DitherDeact - Desactiva la funcin de oscilacin del servo suave en la pgina 87

86

3HAC16581-5 Revisin: K

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

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: Sintaxis
DitherDeact';'
Copyright 2004-2011 ABB. Reservados todos los derechos.

En los arranques en fro Cuando se carga un nuevo programa Cuando se inicia la ejecucin del programa desde el principio

Informacin relacionada Para obtener ms informacin sobre


Activacin de la oscilacin

Consulte
DitherAct - Activa la funcin de oscilacin del servo suave en la pgina 85

3HAC16581-5 Revisin: K

87

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

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 *, v1000, z10, tool, \WObj:=wobj_on_cnv1; MoveL *, v1000, fine, tool, \WObj:=wobj0; DropWObj wobj_on_cnv1; MoveL *, 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>';'
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Espera a objetos de trabajo Conveyor tracking

Consulte
WaitWObj - Espera a un objeto de trabajo en un transportador en la pgina 729 Application manual - Conveyor tracking

88

3HAC16581-5 Revisin: K

1 Instrucciones
1.39. EOffsOff - Desactiva un offset de ejes externos RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Se desactivan los offsets activos para los ejes externos. Sintaxis


EOffsOff ';'

Informacin relacionada Para obtener ms informacin sobre


Definicin del desplazamiento con dos posiciones Definicin de offsets a partir de valores conocidos Desactivacin del desplazamiento de programa del robot

Consulte
EOffsOn - Activa un offset de ejes externos en la pgina 90 EOffsSet - Activa un offset de ejes externos a partir de valores conocidos en la pgina 92 PDispOff - Desactiva el desplazamiento de programa en la pgina 331

3HAC16581-5 Revisin: K

89

1 Instrucciones
1.40. EOffsOn - Activa un offset de ejes externos RobotWare - OS

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 91. 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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


90 3HAC16581-5 Revisin: K

1 Instrucciones
1.40. EOffsOn - Activa un offset de ejes externos RobotWare - OS Continuacin 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. 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: 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, *;

En los arranques en fro. Cuando se carga un nuevo programa. Cuando se inicia la ejecucin del programa desde el principio.

Copyright 2004-2011 ABB. Reservados todos los derechos.

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


Desactivacin de un offset de ejes externos Definicin de offsets a partir de valores conocidos Desplazamiento de los movimientos del robot Sistemas de coordenadas

Consulte
EOffsOff - Desactiva un offset de ejes externos en la pgina 89 EOffsSet - Activa un offset de ejes externos a partir de valores conocidos en la pgina 92 PDispOn - Activa el desplazamiento de programa en la pgina 332 Manual de referencia tcnica - Descripcin general de RAPID

3HAC16581-5 Revisin: K

91

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

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.

xx0500002162

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


92 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.41. EOffsSet - Activa un offset de ejes externos a partir de valores conocidos RobotWare - OS 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: Sintaxis
EOffsSet [ EAxOffs ':=' ] < expression (IN) of extjoint> ';'

En los arranques en fro. Cuando se carga un nuevo programa. Cuando se inicia la ejecucin del programa desde el principio.

Informacin relacionada Para obtener ms informacin sobre


Activacin de un offset de ejes externos Desactivacin de un offset de ejes externos Desplazamiento de los movimientos del robot Definicin de datos del tipo extjoint
Copyright 2004-2011 ABB. Reservados todos los derechos.

Consulte
EOffsOn - Activa un offset de ejes externos en la pgina 90 EOffsOff - Desactiva un offset de ejes externos en la pgina 89 PDispOn - Activa el desplazamiento de programa en la pgina 332 extjoint - Posicin de los ejes externos en la pgina 1182 Manual de referencia tcnica - Descripcin general de RAPID

Sistemas de coordenadas

3HAC16581-5 Revisin: K

93

1 Instrucciones
1.42. EraseModule - Elimina un mdulo RobotWare - OS

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


94 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Informacin relacionada Para obtener ms informacin sobre


Descarga de un mdulo de programa Carga de mdulos de programa en paralelo con la ejecucin de otro programa Aceptacin de una referencia no resuelta

Consulte
UnLoad - Descarga un mdulo de programa durante la ejecucin en la pgina 681 StartLoad - Carga un mdulo de programa durante la ejecucin en la pgina 499 WaitLoad - Conecta el mdulo cargado a la tarea en la pgina 709 Manual de referencia tcnica - Parmetros del sistema, seccin Controller

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

95

1 Instrucciones
1.43. ErrLog - Escribe un mensaje de error RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


96 3HAC16581-5 Revisin: K

1 Instrucciones
1.43. ErrLog - Escribe un mensaje de error RobotWare - OS 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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).

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 97

1 Instrucciones
1.43. ErrLog - Escribe un mensaje de error RobotWare - OS Continuacin
[ \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.
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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

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


Datos predefinidos de tipo errstr Visualizacin de mensajes en el FlexPendant

Consulte
errstr - Cadena de error en la pgina 1178 TPWrite - Escribe en el FlexPendant en la pgina 591 UIMsgBox - Cuadro de mensaje de usuario de tipo bsico en la pgina 669 Manual del operador - IRC5 con FlexPendant Application manual - Additional options, seccin Event log messages Application manual - Additional options

Registro de eventos Mensajes del registro de eventos, explicacin del archivo XML Cmo instalar archivos XML al utilizar opciones adicionales

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

99

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

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 ENDIF ENDPROC ENDMODULE
Copyright 2004-2011 ABB. Reservados todos los derechos.

TRYNEXT;

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.
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.

Contina en la pgina siguiente


100 3HAC16581-5 Revisin: K

1 Instrucciones
1.44. ErrRaise - Escribe un aviso y llama a un gestor de errores RobotWare - OS Continuacin 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.
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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 101

1 Instrucciones
1.44. ErrRaise - Escribe un aviso y llama a un gestor de errores RobotWare - OS Continuacin 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


102 3HAC16581-5 Revisin: K

1 Instrucciones
1.44. ErrRaise - Escribe un aviso y llama a un gestor de errores RobotWare - OS Continuacin Ejecucin de programas 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 ErrorIDindicado. 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 103

1 Instrucciones
1.44. ErrRaise - Escribe un aviso y llama a un gestor de errores RobotWare - OS Continuacin Sintaxis
ErrRaise [ErrorName ':=' ] < expression (IN) of string> ',' [ErrorId ':=' ] < expression (IN) of num> ',' [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


Datos predefinidos de tipo errstr Registro de nmeros de error Gestin de errores

Consulte
errstr - Cadena de error en la pgina 1178 BookErrNo - Registra un nmero de error de sistema de RAPID en la pgina 30 Manual de referencia tcnica - Descripcin general de RAPID

104

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.45. ErrWrite - Escribe un mensaje de error RobotWare - OS

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


Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 105

1 Instrucciones
1.45. ErrWrite - Escribe un mensaje de error RobotWare - OS 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 ] | [ '\' I ] ',' [ Header ':=' ] < expression (IN) of string>',' [ Reason ':=' ] < expression (IN) of string> [ \RL2 ':=' < expression (IN) of string> ] [ \RL3 ':=' < expression (IN) of string> ] [ \RL4 ':=' < expression (IN) of string> ] ';'
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Datos predefinidos de tipo errstr Visualizacin de mensajes en el FlexPendant

Consulte
errstr - Cadena de error en la pgina 1178 TPWrite - Escribe en el FlexPendant en la pgina 591 UIMsgBox - Cuadro de mensaje de usuario de tipo bsico en la pgina 669 Manual del operador - IRC5 con FlexPendant

Registro de eventos

Escritura de un mensaje de error - ErrLog ErrLog - Escribe un mensaje de error en la pgina 96 106 3HAC16581-5 Revisin: K

1 Instrucciones
1.46. EXIT - Finaliza la ejecucin del programa RobotWare - OS

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


Copyright 2004-2011 ABB. Reservados todos los derechos.

Consulte
Stop - Detiene la ejecucin del programa en la pgina 528

Detencin temporal de la ejecucin del programa

3HAC16581-5 Revisin: K

107

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

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 ExitCycle; ENDTRAP
Copyright 2004-2011 ABB. Reservados todos los derechos.

TPWrite "ERROR, I will start on the next item";

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


108 3HAC16581-5 Revisin: K

1 Instrucciones
1.47. ExitCycle - Interrumpe el ciclo actual y pasa al siguiente RobotWare - OS 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

Copyright 2004-2011 ABB. Reservados todos los derechos.

Paro despus de un error no recuperable EXIT - Finaliza la ejecucin del programa en la pgina 107 Finalizacin de la ejecucin del programa Paro para acciones de programa EXIT - Finaliza la ejecucin del programa en la pgina 107 Stop - Detiene la ejecucin del programa en la pgina 528

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

3HAC16581-5 Revisin: K

109

1 Instrucciones
1.48. FOR - Repite un nmero determinado de veces RobotWare - OS

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 110. 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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). 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};

Contina en la pgina siguiente


110 3HAC16581-5 Revisin: K

1 Instrucciones
1.48. FOR - Repite un nmero determinado de veces RobotWare - OS Continuacin
ENDFOR

Se ajustan hacia arriba los valores de una matriz de forma que a{}:=a{}, a{}:=a{} 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

Sintaxis
(EBNF) FOR <loop variable> FROM <expression> TO <expression> [ STEP <expression> ] DO <instruction list> ENDFOR <loop variable> ::= <identifier>

Informacin relacionada Para obtener ms informacin sobre


Expresiones Repeticin siempre y cuando se cumpla una condicin Identificadores

Consulte
Manual de referencia tcnica - Descripcin general de RAPID WHILE - Repite una o varias operaciones siempre y cuando... en la pgina 733 Manual de referencia tcnica - Descripcin general de RAPID

3HAC16581-5 Revisin: K

111

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

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};
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


112 3HAC16581-5 Revisin: K

1 Instrucciones
1.49. GetDataVal - Obtiene el valor de un objeto de datos RobotWare - OS Continuacin
[ \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 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

Copyright 2004-2011 ABB. Reservados todos los derechos.

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


3HAC16581-5 Revisin: K 113

1 Instrucciones
1.49. GetDataVal - Obtiene el valor de un objeto de datos RobotWare - OS 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 sobre


Definicin de un conjunto de smbolos en una sesin de bsqueda Obtencin del siguiente smbolo coincidente

Consulte
SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda en la pgina 448 GetNextSym - Obtiene el siguiente smbolo coincidente en la pgina 895

Asignacin del valor de un objeto de SetDataVal - Establece el valor de un objeto de datos datos en la pgina 453
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 444

El tipo de datos relacionado datapos datapos - Inclusin de un bloque para un objeto de datos en la pgina 1165

114

3HAC16581-5 Revisin: K

1 Instrucciones
1.50. GetSysData - Obtiene datos del sistema RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 115

1 Instrucciones
1.50. GetSysData - Obtiene datos del sistema RobotWare - OS Continuacin
DestObject

Tipo de dato: anytype La variable persistente para el almacenamiento del valor actual del dato de sistema. 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
tooldata wobjdata loaddata

Tipo de dato de sistema


Herramienta Objeto de trabajo 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


116 3HAC16581-5 Revisin: K

1 Instrucciones
1.50. GetSysData - Obtiene datos del sistema RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Definicin de herramientas Definicin de objetos de trabajo Definicin de una carga til Establecimiento de datos del sistema

Consulte
tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292 loaddata - Datos de carga en la pgina 1196 SetSysData - Establece datos del sistema en la pgina 461

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

117

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

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 118. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. Sintaxis
GetTrapData [TrapEvent :=] <variable (VAR) of trapdata>;

Contina en la pgina siguiente


118 3HAC16581-5 Revisin: K

1 Instrucciones
1.51. GetTrapData - Obtiene datos de interrupcin para la rutina TRAP actual RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Interrupciones trapdata - Datos de interrupcin para la rutina TRAP actual en la pgina 1280 IError - Solicita una interrupcin para errores en la pgina 129

Ms informacin sobre la gestin de interrupciones Datos de interrupcin para la rutina TRAP actual Solicitud de una interrupcin para errores

Obtencin de informacin sobre un error ReadErrData - Obtiene informacin sobre un error en la pgina 364

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

119

1 Instrucciones
1.52. GOTO - Salta a otra instruccin RobotWare - OS

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:
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


120 3HAC16581-5 Revisin: K

1 Instrucciones
1.52. GOTO - Salta a otra instruccin RobotWare - OS Continuacin Limitaciones Slo es posible transferir la ejecucin del programa a una etiqueta que se encuentra dentro de la misma rutina. 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 Consulte sobre


Label Etiqueta - Nombre de lnea en la pgina 214 Otras instrucciones que modifican el Manual de referencia tcnica - Descripcin general flujo del programa de RAPID, seccin Resumen sobre RAPID - Control del flujo del programa

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

121

1 Instrucciones
1.53. GripLoad - Define la carga til del robot RobotWare - OS

1.53. GripLoad - Define la carga til del robot


Utilizacin
GripLoad se utiliza para definir la carga til que se sostiene con la pinza del robot.

Descripcin Cuando se especifican datos de carga incorrectos, este hecho suele tener las consecuencias siguientes: Si el valor de los datos de carga especificados es mayor que el valor de la carga real: El robot no funcionar a su capacidad mxima Peor exactitud de la trayectoria, con riesgo de sobrepasar posiciones

Si el valor de los datos de carga especificados es menor que el valor de la carga real: Peor exactitud de la trayectoria, con riesgo de sobrepasar posiciones Riesgo de sobrecarga de la estructura mecnica

AVISO! Es importante definir siempre la carga real de la herramienta y, si se usa, tambin la carga til del robot. Una definicin incorrecta de los datos de carga puede dar lugar a la sobrecarga de la estructura mecnica del robot. Ejemplos bsicos A continuacin aparecen algunos ejemplos bsicos de la instruccin GripLoad. Ejemplo 1
GripLoad piece1;

La pinza del robot sostiene una carga denominada piece1.


Copyright 2004-2011 ABB. Reservados todos los derechos.

Ejemplo 2
GripLoad load0;

La pinza del robot suelta todas las cargas. Argumentos


GripLoad Load Load

Tipo de dato: loaddata El dato de carga que describe la carga til actual. Ejecucin de programas La carga especificada afecta al rendimiento del robot. La carga predeterminada, de 0 kg, 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.

Contina en la pgina siguiente


122 3HAC16581-5 Revisin: K

1 Instrucciones
1.53. GripLoad - Define la carga til del robot RobotWare - OS Continuacin 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 carga de la herramienta o la Manual del operador - IRC5 con FlexPendant, carga til seccin Programacin y testing - Rutinas de servicio Identificacin de carga de las unidades mecnicas Definicin de datos de carga Definicin de la carga de una herramienta Definicin de la carga del objeto de trabajo MechUnitLoad - Define una carga til para una unidad mecnica en la pgina 231 loaddata - Datos de carga en la pgina 1196 tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

123

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

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.54. HollowWristReset - Restablece la mueca hueca en los modelos IRB5402 e IRB5403 RobotWare - OS Continuacin 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 sobre


Parmetros del sistema relacionados Regreso a la trayectoria

Consulte
Manual de referencia tcnica - Parmetros del sistema, seccin Motion - Arm - Independent Joint Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

125

1 Instrucciones
1.55. IDelete - Cancela una interrupcin IDelete

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: Sintaxis
IDelete [ Interrupt := ] < variable (VAR) of intnum > ;

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

Informacin relacionada Para obtener ms informacin sobre


Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Interrupciones ISleep - Desactiva una interrupcin en la pgina 204 IDisable - Desactiva todas las interrupciones en la pgina 127

Ms informacin sobre la gestin de interrupciones Desactivacin temporal de una interrupcin Desactivacin temporal de todas las interrupciones

126

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.56. IDisable - Desactiva todas las interrupciones RobotWare - OS

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:
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones

Ms informacin sobre la gestin de inter- Manual de referencia tcnica - Descripcin rupciones general de RAPID, seccin Caractersticas bsicas - Interrupciones Activacin de interrupciones IEnable - Habilita el uso de interrupciones en la pgina 128

3HAC16581-5 Revisin: K

127

1 Instrucciones
1.57. IEnable - Habilita el uso de interrupciones RobotWare - OS

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


Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Interrupciones IDisable - Desactiva todas las interrupciones en la pgina 127

Ms informacin sobre la gestin de interrupciones Desactivacin de interrupciones

128

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.58. IError - Solicita una interrupcin para errores RobotWare - OS

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 130. 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ \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


3HAC16581-5 Revisin: K 129

1 Instrucciones
1.58. IError - Solicita una interrupcin para errores RobotWare - OS 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 algunos ejemplos bsicos 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


130 3HAC16581-5 Revisin: K

1 Instrucciones
1.58. IError - Solicita una interrupcin para errores RobotWare - OS Continuacin 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. 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones

Ms informacin sobre la gestin de inter- Manual de referencia tcnica - Descripcin rupciones general de RAPID, seccin Caractersticas bsicas - Interrupciones

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 131

1 Instrucciones
1.58. IError - Solicita una interrupcin para errores RobotWare - OS Continuacin Para obtener ms informacin sobre
Tipos de errores, constantes predefinidas

Consulte

Dominios de error, constantes predefinidas errdomain - Dominio de error en la pgina 1170 errtype - Tipo de error en la pgina 1179 Obtencin de datos de interrupcin para la GetTrapData - Obtiene datos de interrupcin rutina TRAP actual para la rutina TRAP actual en la pgina 118 Obtencin de informacin sobre un error ReadErrData - Obtiene informacin sobre un error en la pgina 364

132

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

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

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 133. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. 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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 133

1 Instrucciones
1.59. IF - Si se cumple una condicin, ...; de lo contrario, ... RobotWare - OS Continuacin 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


Condiciones (expresiones lgicas)

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Expresiones

134

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.60. Incr - Aumenta en 1 un valor RobotWare - OS

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 135. 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

... 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

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

1 Instrucciones
1.60. Incr - Aumenta en 1 un valor RobotWare - OS Continuacin Sintaxis
Incr [ Name := ] < var or pers (INOUT) of num > | [ Dname := ] < var or pers (INOUT) of dnum > ;

Informacin relacionada Para obtener ms informacin sobre


Decremento de una variable en 1 Suma de cualquier valor a una variable Cambio de un dato mediante una expresin arbitraria, por ejemplo una multiplicacin

Consulte
Decr - Reduce un nmero en 1 en la pgina 83 Add - Suma un valor numrico en la pgina 19 ":=" - Asigna un valor en la pgina 24

136

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.61. IndAMove - Movimiento independiente de posicin absoluta Independent Axis

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 139. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 137

1 Instrucciones
1.61. IndAMove - Movimiento independiente de posicin absoluta Independent Axis 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


138 3HAC16581-5 Revisin: K

1 Instrucciones
1.61. IndAMove - Movimiento independiente de posicin absoluta Independent Axis 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.


Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 139

1 Instrucciones
1.61. IndAMove - Movimiento independiente de posicin absoluta Independent Axis Continuacin Informacin relacionada Para obtener ms informacin sobre
Ejes independientes en general

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa - Ejes independientes IndReset - Restablecimiento independiente en la pgina 149 IndReset - Restablecimiento independiente en la pgina 149 IndRMove - Movimiento independiente de posicin relativa en la pgina 154 IndDMove - Movimiento independiente de posicin delta en la pgina 145 IndCMove - Movimiento independiente continuo en la pgina 141

Cambio de nuevo al modo manual Restablecimiento del sistema de medicin Otros movimientos de ejes independientes

Comprobacin del estado de velocidad de los IndInpos - Estado de velocidad de un eje ejes independientes independiente en la pgina 915 Comprobacin del estado de posicin de los IndInpos - Estado de posicin de un eje indeejes independientes pendiente en la pgina 913 Definicin de ejes independientes Manual de referencia tcnica - Parmetros del sistema, seccin Motion - Arm Independent Joint

140

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.62. IndCMove - Movimiento independiente continuo Independent Axis

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 143. 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


Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 141

1 Instrucciones
1.62. IndCMove - Movimiento independiente continuo Independent Axis 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


142 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.62. IndCMove - Movimiento independiente continuo Independent Axis 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 > ] ;

Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 143

1 Instrucciones
1.62. IndCMove - Movimiento independiente continuo Independent Axis Continuacin Informacin relacionada Para obtener ms informacin sobre
Ejes independientes en general

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa - Ejes independientes IndReset - Restablecimiento independiente en la pgina 149 IndReset - Restablecimiento independiente en la pgina 149 IndAMove - Movimiento independiente de posicin absoluta en la pgina 137 IndRMove - Movimiento independiente de posicin relativa en la pgina 154 IndDMove - Movimiento independiente de posicin delta en la pgina 145 IndInpos - Estado de velocidad de un eje independiente en la pgina 915 IndInpos - Estado de posicin de un eje independiente en la pgina 913 Manual de referencia tcnica - Parmetros del sistema, seccin Motion - Arm - Independent Joint

Cambio de nuevo al modo manual Restablecimiento del sistema de medicin Otros movimientos de ejes independientes

Comprobacin del estado de velocidad de los ejes independientes Comprobacin del estado de posicin de los ejes independientes Definicin de ejes independientes

144

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.63. IndDMove - Movimiento independiente de posicin delta Independent Axis

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 147. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 Reduccin de la aceleracin y deceleracin respecto del rendimiento mximo (1 - 100%, 100% = rendimiento mximo). Contina en la pgina siguiente
3HAC16581-5 Revisin: K 145

1 Instrucciones
1.63. IndDMove - Movimiento independiente de posicin delta Independent Axis Continuacin 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).
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


146 3HAC16581-5 Revisin: K

1 Instrucciones
1.63. IndDMove - Movimiento independiente de posicin delta Independent Axis 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: 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 > ] ;
Copyright 2004-2011 ABB. Reservados todos los derechos.

90 grados 60 grados 460 grados (1 revolucin + 100 grados)

Informacin relacionada Para obtener ms informacin sobre


Ejes independientes en general

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa - Ejes independientes IndReset - Restablecimiento independiente en la pgina 149 IndReset - Restablecimiento independiente en la pgina 149 IndAMove - Movimiento independiente de posicin absoluta en la pgina 137 IndRMove - Movimiento independiente de posicin relativa en la pgina 154 IndCMove - Movimiento independiente continuo en la pgina 141 IndInpos - Estado de velocidad de un eje independiente en la pgina 915

Cambio de nuevo al modo manual Restablecimiento del sistema de medicin Otros movimientos de ejes independientes

Comprobacin del estado de velocidad de los ejes independientes

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 147

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

Consulte

Comprobacin del estado de posicin de IndInpos - Estado de posicin de un eje indepenlos ejes independientes diente en la pgina 913 Definicin de ejes independientes Manual de referencia tcnica - Parmetros del sistema, seccin Motion - Arm - Independent Joint

148

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.64. IndReset - Restablecimiento independiente Independent Axis

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 152.
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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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).

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 149

1 Instrucciones
1.64. IndReset - Restablecimiento independiente Independent Axis Continuacin
[ \RefPos ]

Reference Position Tipo de dato: robtarget 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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


150 3HAC16581-5 Revisin: K

1 Instrucciones
1.64. IndReset - Restablecimiento independiente Independent Axis Continuacin
[ \Old ]

Tipo de dato: switch Mantiene la posicin anterior. 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.64. IndReset - Restablecimiento independiente Independent Axis Continuacin Ms ejemplos A continuacin aparecen algunos ejemplos bsicos 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> , [ \ RefPos:= < expression (IN) of robtarget> ] | [ \ RefNum:= < expression (IN) of num> ] [ \ Short ] | [ \ Fwd ] | [ \ Bwd ] | [ \ Old ];
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ Axis:= ] < expression (IN) of num>

Informacin relacionada Para obtener ms informacin sobre


Ejes independientes en general

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa - Ejes independientes IndAMove - Movimiento independiente de posicin absoluta en la pgina 137 IndCMove - Movimiento independiente continuo en la pgina 141 IndDMove - Movimiento independiente de posicin delta en la pgina 145 IndRMove - Movimiento independiente de posicin relativa en la pgina 154

Cambio de un eje al modo independiente

Contina en la pgina siguiente


152 3HAC16581-5 Revisin: K

1 Instrucciones
1.64. IndReset - Restablecimiento independiente Independent Axis Continuacin Para obtener ms informacin sobre
Comprobacin del estado de velocidad de los ejes independientes Comprobacin del estado de posicin de los ejes independientes Definicin de ejes independientes

Consulte
IndInpos - Estado de velocidad de un eje independiente en la pgina 915 IndInpos - Estado de posicin de un eje independiente en la pgina 913 Manual de referencia tcnica - Parmetros del sistema, seccin Motion - Arm - Independent Joint

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

153

1 Instrucciones
1.65. IndRMove - Movimiento independiente de posicin relativa Independent Axis

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 157. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.65. IndRMove - Movimiento independiente de posicin relativa Independent Axis Continuacin
[ \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

Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 155

1 Instrucciones
1.65. IndRMove - Movimiento independiente de posicin relativa Independent Axis 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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).

Contina en la pgina siguiente


156 3HAC16581-5 Revisin: K

1 Instrucciones
1.65. IndRMove - Movimiento independiente de posicin relativa Independent Axis Continuacin 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 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:


Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 157

1 Instrucciones
1.65. IndRMove - Movimiento independiente de posicin relativa Independent Axis Continuacin Informacin relacionada Para obtener ms informacin sobre
Ejes independientes en general

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa - Ejes independientes IndReset - Restablecimiento independiente en la pgina 149

Cambio de nuevo al modo manual

Restablecimiento del sistema de medicin IndReset - Restablecimiento independiente en la pgina 149 Otros movimientos de ejes independientes IndAMove - Movimiento independiente de posicin absoluta en la pgina 137 IndDMove - Movimiento independiente de posicin delta en la pgina 145 IndCMove - Movimiento independiente continuo en la pgina 141

Comprobacin del estado de velocidad de IndInpos - Estado de velocidad de un eje indelos ejes independientes pendiente en la pgina 915 Comprobacin del estado de posicin de IndInpos - Estado de posicin de un eje indepenlos ejes independientes diente en la pgina 913 Definicin de ejes independientes Manual de referencia tcnica - Parmetros del sistema, seccin Motion - Arm - Independent Joint

158

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

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

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.

Copyright 2004-2011 ABB. Reservados todos los derechos.

xx0500002164

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: K 159

1 Instrucciones
1.66. InvertDO - Invierte el valor de una seal de salida digital RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin Consulte sobre
Instrucciones de entrada/salida Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Seales de entrada y salida Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Principios de E/S Manual de referencia tcnica - Parmetros del sistema

Funcionalidad de entrada/salida en general Configuracin de E/S

160

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.67. IOBusStart - Start of I/O bus RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ BusName := ] < expression (IN) of string>;

Informacin relacionada Para obtener ms informacin sobre Consulte


Cmo obtener el estado del bus de E/S Configuracin de E/S IOBusState - Obtener el estado actual de un bus de E/S en la pgina 162 Manual de referencia tcnica - Parmetros del sistema

3HAC16581-5 Revisin: K

161

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

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: DEFAULT: ! Actions for stopped IBS bus ENDTEST
Copyright 2004-2011 ABB. Reservados todos los derechos.

! The IBS bus is started

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.

Contina en la pgina siguiente


162 3HAC16581-5 Revisin: K

1 Instrucciones
1.68. IOBusState - Obtener el estado actual de un bus de E/S RobotWare - OS Continuacin
[\Phys]

Physical 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 retorno
10 11

Constante simblica
IOBUS_LOG_STATE_STOPPED IOBUS_LOG_STATE_STARTED

Comentario
El bus se ha detenido debido a un error 2) 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Constante simblica
IOBUS_PHYS_STATE_HALTED IOBUS_PHYS_STATE_RUNNING IOBUS_PHYS_STATE_ERROR IOBUS_PHYS_STATE_STARTUP

Comentario
El bus se ha detenido
3)

20 21 22 23

Bus en funcionamiento 1) El bus no est trabajando 2) El bus est en el modo de puesta en marcha. No se comunica con ninguna unidad. El bus slo ha sido creado
3)

24

IOBUS_PHYS_STATE_INIT

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 163

1 Instrucciones
1.68. IOBusState - Obtener el estado actual de un bus de E/S RobotWare - OS Continuacin Valor de retorno
0 1 2 3

Constante simblica
BUSSTATE_HALTED BUSSTATE_RUN BUSSTATE_ERROR BUSSTATE_STARTUP

Comentario
El bus se ha detenido Bus en funcionamiento 1) El bus no est trabajando 2) El bus est en el modo de puesta en marcha. No se comunica con ninguna unidad. El bus slo ha sido creado 3)

4
1)

BUSSTATE_INIT

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];
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Definicin de estado de bus Inicio de un bus de E/S

Consulte
busstate - Estado de bus de E/S en la pgina 1152 IOBusStart - Start of I/O bus en la pgina 161

Funcionalidad de entrada/salida en Manual de referencia tcnica - Descripcin general de general RAPID, seccin Principios de movimiento y E/S Principios de E/S Configuracin de E/S Manual de referencia tcnica - Parmetros del sistema

164

3HAC16581-5 Revisin: K

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

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 166. 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).
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. 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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 165

1 Instrucciones
1.69. IODisable - Desactiva una unidad de E/S RobotWare - OS 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_IODISABLE ERR_TRUSTLEVEL ERR_NAME_INVALID Si se alcanza el tiempo lmite de espera antes de que la unidad de E/S se desactive Si el nivel trustlevel de la unidad de E/S tiene el valor 0, no es posible desactivar la unidad de E/S. 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 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

TRYNEXT;

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). Contina en la pgina siguiente
166 3HAC16581-5 Revisin: K

1 Instrucciones
1.69. IODisable - Desactiva una unidad de E/S RobotWare - OS Continuacin Sintaxis
IODisable [ UnitName := ] < expression (IN) of string> , [ MaxTime := ] < expression (IN) of num> ;

Informacin relacionada Para obtener ms informacin sobre


Activacin de una unidad de E/S Instrucciones de entrada/salida

Consulte
IOEnable - Activa una unidad de E/S en la pgina 168 Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Seales de entrada y salida Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Principios de E/S Manual de referencia tcnica - Parmetros del sistema

Funcionalidad de entrada/salida en general Configuracin de E/S

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

167

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

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 169. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


168 3HAC16581-5 Revisin: K

1 Instrucciones
1.70. IOEnable - Activa una unidad de E/S RobotWare - OS 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 ERR_NAME_INVALID ERR_BUSSTATE Si se agota el tiempo lmite antes de que la unidad de E/S se active. Si el nombre de la unidad de E/S no existe. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 169

1 Instrucciones
1.70. IOEnable - Activa una unidad de E/S RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Desactivacin de una unidad de E/S Instrucciones de entrada/salida

Consulte
IODisable - Desactiva una unidad de E/S en la pgina 165 Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID Seales de entrada y salida Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Principios de E/S Manual de referencia tcnica - Parmetros del sistema

Funcionalidad de entrada/salida en general Configuracin de E/S

170

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

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

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 171

1 Instrucciones
1.71. IPers - Interrupcin en caso de cambio de valor de una variable persistente RobotWare - OS 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


Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, 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 192 Ms informacin sobre la gestin de interrup- Manual de referencia tcnica - Descripcin ciones general de RAPID, seccin Caractersticas bsicas - Interrupciones Identidad de interrupcin intnum - Identidad de interrupcin en la pgina 1189
Copyright 2004-2011 ABB. Reservados todos los derechos.

172

3HAC16581-5 Revisin: K

1 Instrucciones
1.72. IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato FlexPendant Interface, PC Interface, or Multitasking

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 Ms ejemplos. 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 173

1 Instrucciones
1.72. IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato FlexPendant Interface, PC Interface, or Multitasking Continuacin 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. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

MODULE ReceiverMod VAR intnum intno1; VAR rmqheader rmqheader1; VAR rmqslot rmqslot1; VAR 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

Contina en la pgina siguiente


174 3HAC16581-5 Revisin: K

1 Instrucciones
1.72. IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato FlexPendant Interface, PC Interface, or Multitasking Continuacin
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

Copyright 2004-2011 ABB. Reservados todos los derechos.

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. 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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 175

1 Instrucciones
1.72. IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato FlexPendant Interface, PC Interface, or Multitasking 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 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


Descripcin de la funcionalidad de RAPID Message Queue

Consulte
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 o de un cliente de Robot Application Builder. ranura para el nombre de ranura en la pgina 387 Obtener el primer mensaje de una cola de RAPID Message Queue. RMQGetMessage - Obtener un mensaje de RMQ en la pgina 389
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 esperar una respuesta del cliente. pgina 405 Extraer los datos de encabezado de un rmqmessage. RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ en la pgina 395

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 401 Extraer los datos de un rmqmessage. Obtener el nombre de ranura de una identidad de ranura especificada. RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ en la pgina 392 RMQGetSlotName - Obtener el nombre de un cliente de RMQ en la pgina 1013

176

3HAC16581-5 Revisin: K

1 Instrucciones
1.73. ISignalAI - Interrupciones a partir de una seal analgica de entrada RobotWare - OS

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;

Copyright 2004-2011 ABB. Reservados todos los derechos.

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 cuando se inicia de nuevo en el modo continuo,

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 177

1 Instrucciones
1.73. ISignalAI - Interrupciones a partir de una seal analgica de entrada RobotWare - OS Continuacin 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
1 2 3 4 5 6

Constante simblica
AIO_ABOVE_HIGH AIO_BELOW_HIGH AIO_ABOVE_LOW AIO_BELOW_LOW AIO_BETWEEN AIO_OUTSIDE

Comentario
La seal genera interrupciones si se encuentra por encima del valor mximo especificado La seal genera interrupciones si se encuentra por debajo del valor mximo especificado La seal genera interrupciones si se encuentra por encima del valor mnimo especificado La seal genera interrupciones si se encuentra por debajo del valor mnimo especificado La seal genera interrupciones si se encuentra entre los valores mnimo y mximo especificados La seal genera interrupciones si se encuentra por debajo del valor mnimo especificado o por encima del valor mximo especificado La seal siempre genera interrupciones

7 HighValue

AIO_ALWAYS

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


178 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.73. ISignalAI - Interrupciones a partir de una seal analgica de entrada RobotWare - OS 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)

Copyright 2004-2011 ABB. Reservados todos los derechos.

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


3HAC16581-5 Revisin: K 179

1 Instrucciones
1.73. ISignalAI - Interrupciones a partir de una seal analgica de entrada RobotWare - OS 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

xx0500002165

Contina en la pgina siguiente


180 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.73. ISignalAI - Interrupciones a partir de una seal analgica de entrada RobotWare - OS Continuacin Condicin para la generacin de una interrupcin con cada muestreo a partir del momento de la suscripcin

Copyright 2004-2011 ABB. Reservados todos los derechos.

xx0500002166

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 181

1 Instrucciones
1.73. ISignalAI - Interrupciones a partir de una seal analgica de entrada RobotWare - OS Continuacin Ejemplo 1 de generacin de interrupciones

xx0500002167

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


182 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.73. ISignalAI - Interrupciones a partir de una seal analgica de entrada RobotWare - OS Continuacin Ejemplo 2 de generacin de interrupciones

xx0500002168

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


3HAC16581-5 Revisin: K 183

1 Instrucciones
1.73. ISignalAI - Interrupciones a partir de una seal analgica de entrada RobotWare - OS Continuacin Ejemplo 3 de generacin de interrupciones

xx0500002169

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


184 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.73. ISignalAI - Interrupciones a partir de una seal analgica de entrada RobotWare - OS Continuacin Ejemplo 4 de generacin de interrupciones

xx0500002170

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

Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 185

1 Instrucciones
1.73. ISignalAI - Interrupciones a partir de una seal analgica de entrada RobotWare - OS Continuacin 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. 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>;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


186 3HAC16581-5 Revisin: K

1 Instrucciones
1.73. ISignalAI - Interrupciones a partir de una seal analgica de entrada RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre Consulte
Resumen de interrupciones Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones aiotrigg - Condicin de disparo con E/S analgica en la pgina 1147

Definicin de constantes

Interrupcin a partir de una seal analgica ISignalAO - Interrupciones a partir de una de salida seal analgica de salida en la pgina 188 Interrupcin a partir de una seal digital de entrada Interrupcin a partir de una seal digital de salida Ms informacin sobre la gestin de interrupciones Identidad de interrupcin ISignalDI - Solicita interrupciones a partir de una seal digital de entrada en la pgina 192 ISignalDO - Interrupciones a partir de una seal digital de salida en la pgina 195 Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Interrupciones intnum - Identidad de interrupcin en la pgina 1189

Parmetros del sistema relacionados (filtro) Manual de referencia tcnica - Parmetros del sistema, seccin IO signals

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

187

1 Instrucciones
1.74. ISignalAO - Interrupciones a partir de una seal analgica de salida RobotWare - OS

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;

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 cuando se inicia de nuevo en el modo continuo,

Contina en la pgina siguiente


188 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

1 Instrucciones
1.74. ISignalAO - Interrupciones a partir de una seal analgica de salida RobotWare - OS Continuacin 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
1 2 3 4 5 6

Constante simblica
AIO_ABOVE_HIGH AIO_BELOW_HIGH AIO_ABOVE_LOW AIO_BELOW_LOW AIO_BETWEEN AIO_OUTSIDE

Comentario
La seal genera interrupciones si se encuentra por encima del valor mximo especificado La seal genera interrupciones si se encuentra por debajo del valor mximo especificado La seal genera interrupciones si se encuentra por encima del valor mnimo especificado La seal genera interrupciones si se encuentra por debajo del valor mnimo especificado La seal genera interrupciones si se encuentra entre los valores mnimo y mximo especificados La seal genera interrupciones si se encuentra por debajo del valor mnimo especificado o por encima del valor mximo especificado La seal siempre genera interrupciones

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

AIO_ALWAYS

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: K 189

1 Instrucciones
1.74. ISignalAO - Interrupciones a partir de una seal analgica de salida RobotWare - OS 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


190 3HAC16581-5 Revisin: K

1 Instrucciones
1.74. ISignalAO - Interrupciones a partir de una seal analgica de salida RobotWare - OS 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


Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones aiotrigg - Condicin de disparo con E/S analgica en la pgina 1147 ISignalAI - Interrupciones a partir de una seal analgica de entrada en la pgina 177 ISignalDI - Solicita interrupciones a partir de una seal digital de entrada en la pgina 192 ISignalDO - Interrupciones a partir de una seal digital de salida en la pgina 195

Definicin de constantes Interrupcin a partir de una seal analgica de entrada Interrupcin a partir de una seal digital de entrada Interrupcin a partir de una seal digital de salida

Ms informacin sobre la gestin de interrup- Manual de referencia de RAPID - Descripcin ciones general de RAPID, seccin Caractersticas bsicas - Interrupciones Identidad de interrupcin
Copyright 2004-2011 ABB. Reservados todos los derechos.

intnum - Identidad de interrupcin en la pgina 1189 Manual de referencia tcnica - Parmetros del sistema, seccin IO signals

Parmetros del sistema relacionados (filtro)

3HAC16581-5 Revisin: K

191

1 Instrucciones
1.75. ISignalDI - Solicita interrupciones a partir de una seal digital de entrada RobotWare - OS

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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


192 3HAC16581-5 Revisin: K

1 Instrucciones
1.75. ISignalDI - Solicita interrupciones a partir de una seal digital de entrada RobotWare - OS 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.

Copyright 2004-2011 ABB. Reservados todos los derechos.


xx0500002189

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: K 193

1 Instrucciones
1.75. ISignalDI - Solicita interrupciones a partir de una seal digital de entrada RobotWare - OS 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 > ;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin Consulte sobre


Resumen de interrupciones Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones

Interrupcin a partir de una seal de ISignalDO - Interrupciones a partir de una seal digital salida de salida en la pgina 195 Ms informacin sobre la gestin de Manual de referencia tcnica - Descripcin general de interrupciones RAPID, seccin Caractersticas bsicas - Interrupciones Identidad de interrupcin intnum - Identidad de interrupcin en la pgina 1189

194

3HAC16581-5 Revisin: K

1 Instrucciones
1.76. ISignalDO - Interrupciones a partir de una seal digital de salida RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ \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: K 195

1 Instrucciones
1.76. ISignalDO - Interrupciones a partir de una seal digital de salida RobotWare - OS 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.


xx0500002190

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


196 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.76. ISignalDO - Interrupciones a partir de una seal digital de salida RobotWare - OS 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 ] ,
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ Signal := ] < variable (VAR) of signaldo > , [ TriggValue := ] < expression (IN) of dionum > , [ Interrupt := ] < variable (VAR) of intnum > ;

Informacin relacionada Para obtener ms informacin sobre


Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, 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 192 Ms informacin sobre la gestin de interrup- Manual de referencia tcnica - Descripcin ciones general de RAPID, seccin Caractersticas bsicas - Interrupciones Identidad de interrupcin intnum - Identidad de interrupcin en la pgina 1189

3HAC16581-5 Revisin: K

197

1 Instrucciones
1.77. ISignalGI - Solicita interrupciones de un grupo de seales digitales de entrada RobotWare - OS

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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


198 3HAC16581-5 Revisin: K

1 Instrucciones
1.77. ISignalGI - Solicita interrupciones de un grupo de seales digitales de entrada RobotWare - OS 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

Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 199

1 Instrucciones
1.77. ISignalGI - Solicita interrupciones de un grupo de seales digitales de entrada RobotWare - OS 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 Consulte sobre


Resumen de interrupciones Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones

Interrupcin a partir de una seal de ISignalDI - Solicita interrupciones a partir de una entrada seal digital de entrada en la pgina 192 Interrupcin a partir de seales de salida de grupo ISignalGO - Solicita interrupciones de un grupo de seales digitales de salida en la pgina 201
Copyright 2004-2011 ABB. Reservados todos los derechos.

Ms informacin sobre la gestin de Manual de referencia tcnica - Descripcin general de interrupciones RAPID, seccin Caractersticas bsicas - Interrupciones Identidad de interrupcin Tiempo de filtro intnum - Identidad de interrupcin en la pgina 1189 Manual de referencia tcnica - Parmetros del sistema, Tema IO, tipo Signal

200

3HAC16581-5 Revisin: K

1 Instrucciones
1.78. ISignalGO - Solicita interrupciones de un grupo de seales digitales de salida RobotWare - OS

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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 201

1 Instrucciones
1.78. ISignalGO - Solicita interrupciones de un grupo de seales digitales de salida RobotWare - OS 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


202 3HAC16581-5 Revisin: K

1 Instrucciones
1.78. ISignalGO - Solicita interrupciones de un grupo de seales digitales de salida RobotWare - OS Continuacin Sintaxis
ISignalGO [ \ Single ] | [ \ SingleSafe ] , [ Signal := ] < variable (VAR) of signalgo > , [ Interrupt:= ] < variable (VAR) of intnum > ;

Informacin relacionada Para obtener ms informacin sobre


Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones ISignalDO - Interrupciones a partir de una seal digital de salida en la pgina 195

Interrupcin a partir de una seal de salida

Interrupcin a partir de seales de entrada de ISignalGI - Solicita interrupciones de un grupo grupo de seales digitales de entrada en la pgina 198 Ms informacin sobre la gestin de interrup- Manual de referencia tcnica - Descripcin ciones general de RAPID, seccin Caractersticas bsicas - Interrupciones Identidad de interrupcin intnum - Identidad de interrupcin en la pgina 1189

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

203

1 Instrucciones
1.79. ISleep - Desactiva una interrupcin RobotWare - OS

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 204. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


204 3HAC16581-5 Revisin: K

1 Instrucciones
1.79. ISleep - Desactiva una interrupcin RobotWare - OS 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 1172). 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


Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones IWatch - Activar una interrupcin en la pgina 212 IDisable - Desactiva todas las interrupciones en la pgina 127 IDelete - Cancela una interrupcin en la pgina 126

Activacin de interrupciones Desactivacin de todas las interrupciones Cancelacin de una interrupcin

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

205

1 Instrucciones
1.80. ITimer - Solicita una interrupcin temporizada RobotWare - OS

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 207. 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


Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.80. ITimer - Solicita una interrupcin temporizada RobotWare - OS Continuacin
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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 207

1 Instrucciones
1.80. ITimer - Solicita una interrupcin temporizada RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones

Ms informacin sobre la gestin de interrup- Manual de referencia tcnica - Descripcin ciones general de RAPID, seccin Caractersticas bsicas - Interrupciones

208

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.81. IVarValue - Solicita una interrupcin a partir del valor de una variable Optical Tracking

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).
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 TRAP AdapTrap VAR num ArrInd; !Scale the raw gap value received ArrInd:=ArrIndx(gap_value);

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 209

1 Instrucciones
1.81. IVarValue - Solicita una interrupcin a partir del valor de una variable Optical Tracking Continuacin
! 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. 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.

Contina en la pgina siguiente


210 3HAC16581-5 Revisin: K

1 Instrucciones
1.81. IVarValue - Solicita una interrupcin a partir del valor de una variable Optical Tracking Continuacin 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


Establecimiento de una conexin a un dispositivo de sensor Resumen de interrupciones

Consulte
SenDevice - Establece una conexin a un dispositivo de sensor en la pgina 440 Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Interrupciones Application manual - Continuous application platform Application manual - Arc and Arc Sensor

Ms informacin sobre la gestin de interrupciones


Copyright 2004-2011 ABB. Reservados todos los derechos.

Optical Tracking Optical Tracking Art

3HAC16581-5 Revisin: K

211

1 Instrucciones
1.82. IWatch - Activar una interrupcin RobotWare - OS

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 212. 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 1172). El error puede ser gestionado en el gestor de errores.

Contina en la pgina siguiente


212 3HAC16581-5 Revisin: K

1 Instrucciones
1.82. IWatch - Activar una interrupcin RobotWare - OS Continuacin Sintaxis
IWatch [ Interrupt := ] < variable (VAR) of intnum > ;

Informacin relacionada Para obtener ms informacin sobre


Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones ISleep - Desactiva una interrupcin en la pgina 204

Desactivacin de una interrupcin

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

213

1 Instrucciones
1.83. Etiqueta - Nombre de lnea RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


Identificadores

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Elementos bsicos GOTO - Salta a otra instruccin en la pgina 120

Trasladar la ejecucin del programa a una etiqueta

214

3HAC16581-5 Revisin: K

1 Instrucciones
1.84. Load - Carga un mdulo de programa durante la ejecucin RobotWare - OS

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
Mdulo de programa Mdulo de sistema

Trasladar el puntero de proAbrir un nuevo programa grama a main desde el de RAPID FlexPendant
No se ve afectado No se ve afectado Descargado 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
Mdulo de programa Mdulo de sistema
Copyright 2004-2011 ABB. Reservados todos los derechos.

Trasladar el puntero de proAbrir un nuevo programa grama a main desde el de RAPID FlexPendant
Descargado Descargado Descargado Descargado

Ejemplos bsicos A continuacin aparecen algunos ejemplos bsicos de la instruccin Load. Consulte tambin Ms ejemplos en la pgina 217. 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: K 215

1 Instrucciones
1.84. Load - Carga un mdulo de programa durante la ejecucin RobotWare - OS 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 217 a continuacin.

Contina en la pgina siguiente


216 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.84. Load - Carga un mdulo de programa durante la ejecucin RobotWare - OS Continuacin Ms ejemplos A continuacin aparecen ms ejemplos de cmo usar la instruccin Load. Ms ejemplos generales
Load \Dynamic, "HOME:/DOORDIR/DOOR1.MOD";

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

Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 217

1 Instrucciones
1.84. Load - Carga un mdulo de programa durante la ejecucin RobotWare - OS Continuacin 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 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


218 3HAC16581-5 Revisin: K

1 Instrucciones
1.84. Load - Carga un mdulo de programa durante la ejecucin RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Descarga de un mdulo de programa Carga de mdulos de programa en paralelo con la ejecucin de otro programa

Consulte
UnLoad - Descarga un mdulo de programa durante la ejecucin en la pgina 681 StartLoad - Carga un mdulo de programa durante la ejecucin en la pgina 499 WaitLoad - Conecta el mdulo cargado a la tarea en la pgina 709 CheckProgRef - Comprobar referencias de programa en la pgina 37

Comprobar referencias de programa

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

219

1 Instrucciones
1.85. LoadId - Identificacin de carga de la herramienta o la carga til RobotWare-OS

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 &nbsp Program Editor/Debug/Call Service Rout./ LoadIdentify. Ejemplos bsicos A continuacin aparecen algunos ejemplos bsicos de la instruccin LoadId. Consulte tambin Ms ejemplos en la pgina 224. 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 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

EXIT;

Contina en la pgina siguiente


220 3HAC16581-5 Revisin: K

1 Instrucciones
1.85. LoadId - Identificacin de carga de la herramienta o la carga til RobotWare-OS Continuacin
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. Condiciones 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 se encuentran cerca de su rango de trabajo correspondiente.-Carcasa de inclinacin casi horizontal, es decir, el eje 4 est 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 Se conoce la masa del TCP mvil Se desconoce la Se conoce la masa del TCP masa del TCP mvil fijo
Definido Definido Definido

En la tabla siguiente se ilustra la identificacin de carga de la herramienta. Modos de identificacin de carga / Datos definidos antes de LoadId
Carga del brazo superior (parmetro del sistema) Masa de la herramienta

Se desconoce la masa del TCP fijo


Definido

En la tabla siguiente se ilustra la identificacin de carga de la carga til. Modos de identificacin de Se conoce la Se desconoce la Se conoce la carga / Datos definidos antes masa del TCP masa del TCP masa del TCP de LoadId mvil mvil fijo
Copyright 2004-2011 ABB. Reservados todos los derechos.

Se desconoce la masa del TCP fijo


Definido

Carga del brazo superior (parmetros del sistema) Datos de carga de la herramienta Masa de la carga til Base de coordenadas de herramienta en la herramienta Base de coordenadas de usuario en el objeto de trabajo Base de coordenadas de objeto en el objeto de trabajo Definido Definido Definido

Definido Definido Definido Definido Definido Definido Definido

Definido

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%

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 221

1 Instrucciones
1.85. LoadId - Identificacin de carga de la herramienta o la carga til RobotWare-OS Continuacin 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
1 2

Constante simblica
TOOL_LOAD_ID PAY_LOAD_ID

Comentario
Identificacin de la carga de la herramienta Identificacin de la carga til (consulte la instruccin GripLoad)

LoadIdType

Tipo de dato: loadidnum Un tipo de identificacin de carga de los definidos en la tabla siguiente. Valor
1

Constante simblica
MASS_KNOWN

Comentario
Masa conocida de la herramienta o de la carga til respectivamente. (Debe especificarse la masa de la herramienta o la carga til especificada) 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.

MASS_WITH_AX3

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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


222 3HAC16581-5 Revisin: K

1 Instrucciones
1.85. LoadId - Identificacin de carga de la herramienta o la carga til RobotWare-OS Continuacin
[ \ 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.

xx0500002198

Si no se especifica este argumento, el valor predeterminado es +90 grados. Mn. + -30 grados. Valor ptimo + o -90 grados.
[ \ 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 LoadId ... Realizar slo la prueba lenta Realizar slo la medicin y actualizar la herramienta o la carga til

[ \ Accuracy ]

Tipo de dato: num


Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 223

1 Instrucciones
1.85. LoadId - Identificacin de carga de la herramienta o la carga til RobotWare-OS Continuacin 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. 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> ] ;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


224 3HAC16581-5 Revisin: K

1 Instrucciones
1.85. LoadId - Identificacin de carga de la herramienta o la carga til RobotWare-OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Programa predefinido Load Identify

Consulte
Manual del operador - IRC5 con FlexPendant, seccin Programacin y testing - Rutinas de servicio - LoadIdentify, rutina de servicio de identificacin de cargas paridnum - Tipo de identificacin de parmetro en la pgina 1218 paridvalidnum - Resultado de ParIdRobValid en la pgina 1220 loadidnum - Tipo de identificacin de la carga en la pgina 1201 ParIdRobValid - Tipo de robot vlido para la identificacin de parmetros en la pgina 961 ParIdPosValid - Posicin de robot vlida para la identificacin de parmetros en la pgina 958

Tipo de identificacin de parmetro Resultado de ParIdRobValid Tipo de identificacin de carga Tipo de robot vlido Posicin de robot vlida

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

225

1 Instrucciones
1.86. MakeDir - Crea un nuevo directorio RobotWare - OS

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>;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Eliminacin de un directorio Cambio del nombre de un archivo Eliminacin de un archivo Copia de un archivo Comprobacin del tipo del archivo Comprobacin del tamao del archivo Comprobacin del tamao del sistema de archivos

Consulte
RemoveDir - Elimina un directorio en la pgina 370 RenameFile - Cambia el nombre de un archivo en la pgina 372 RemoveFile - Elimina un archivo en la pgina 371 CopyFile - Copia un archivo en la pgina 67 IsFile - Comprobar el tipo de un archivo en la pgina 920 FileSize - Obtiene el tamao de un archivo en la pgina 882 FSSize - Obtiene el tamao de un sistema de archivos en la pgina 888

226

3HAC16581-5 Revisin: K

1 Instrucciones
1.87. ManLoadIdProc - Identificacin de carga de los manipuladores IRBP RobotWare-OS

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 Program Editor/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;

Copyright 2004-2011 ABB. Reservados todos los derechos.

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


3HAC16581-5 Revisin: K 227

1 Instrucciones
1.87. ManLoadIdProc - Identificacin de carga de los manipuladores IRBP RobotWare-OS 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.

xx0500002197

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 Este argumento tendr el valor TRUE si la identificacin ha sido realizada o FALSE en caso contrario. Contina en la pgina siguiente
228 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.87. ManLoadIdProc - Identificacin de carga de los manipuladores IRBP RobotWare-OS Continuacin
[ \ 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 calIRBP-K culados IRBP-L IRBP-C IRBP_T IRBP-A IRBP-B IRBP-D

IRBP-R

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.


Copyright 2004-2011 ABB. Reservados todos los derechos.

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. 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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 229

1 Instrucciones
1.87. ManLoadIdProc - Identificacin de carga de los manipuladores IRBP RobotWare-OS Continuacin 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


Tipo de identificacin de parmetro Unidad mecnica Carga til

Consulte
paridnum - Tipo de identificacin de parmetro en la pgina 1218 mecunit - Unidad mecnica en la pgina 1203 loaddata - Datos de carga en la pgina 1196

230

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.88. MechUnitLoad - Define una carga til para una unidad mecnica RobotWare - OS

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, 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. 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

Ejemplo 1
ActUnit SNT1; MechUnitLoad STN1, 1, load0;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 fixture1 montado en el eje 1. Ejemplo 3
ActUnit STN1; MechUnitLoad STN1, 1, workpiece1;

Se activa la unidad mecnica STN1 y se define la carga til workpiece1 que corresponde al accesorio y a la pieza de trabajo de nombre workpiece1, montada en el eje 1. Argumentos
MechUnitLoad MechUnit AxisNo Load MechUnit

Mechanical Unit Tipo de dato: mecunit El nombre de la unidad mecnica. Contina en la pgina siguiente
3HAC16581-5 Revisin: K 231

1 Instrucciones
1.88. MechUnitLoad - Define una carga til para una unidad mecnica RobotWare - OS Continuacin
AxisNo

Axis Number Tipo de dato: num El nmero del eje, dentro de la unidad mecnica, que sostiene la carga.
Load

Tipo de dato: loaddata El dato de carga que describe la carga til actual que se desea definir. 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

A B C D

Accesorio Pieza de trabajo Centro de gravedad de la carga til (accesorio + pieza de trabajo) Unidad mecnica

Contina en la pgina siguiente


232 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.88. MechUnitLoad - Define una carga til para una unidad mecnica RobotWare - OS 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

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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. 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.
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> ';'

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 233

1 Instrucciones
1.88. MechUnitLoad - Define una carga til para una unidad mecnica RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Identificacin de la carga til de las unidades mecnicas externas Unidades mecnicas Definicin de datos de carga

Consulte
Manual del producto - IRBP /D2009 mecunit - Unidad mecnica en la pgina 1203 loaddata - Datos de carga en la pgina 1196

Definicin de una carga til para el robot GripLoad - Define la carga til del robot en la pgina 122

234

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.89. MotionSup - Desactiva/activa la supervisin del movimiento Collision Detection

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 235

1 Instrucciones
1.89. MotionSup - Desactiva/activa la supervisin del movimiento Collision Detection 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: 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> ] ;

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


236 3HAC16581-5 Revisin: K

1 Instrucciones
1.89. MotionSup - Desactiva/activa la supervisin del movimiento Collision Detection Continuacin Informacin relacionada Para obtener ms informacin sobre
Descripcin general de la funcin

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Supervisin del movimiento/ deteccin de colisiones Manual de referencia tcnica - Parmetros del sistema, seccin Motion - Motion Planner - Use Motion Supervision

Ajuste con los parmetros del sistema

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

237

1 Instrucciones
1.90. MoveAbsJ - Mueve el robot a una posicin de ejes absoluta RobotWare - OS

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 241. Ejemplo 1
MoveAbsJ p50, v1000, z50, tool2;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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]

Contina en la pgina siguiente


238 3HAC16581-5 Revisin: K

1 Instrucciones
1.90. MoveAbsJ - Mueve el robot a una posicin de ejes absoluta RobotWare - OS Continuacin
[\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 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 239

1 Instrucciones
1.90. MoveAbsJ - Mueve el robot a una posicin de ejes absoluta RobotWare - OS 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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


240 3HAC16581-5 Revisin: K

1 Instrucciones
1.90. MoveAbsJ - Mueve el robot a una posicin de ejes absoluta RobotWare - OS 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 2.200 mm/s y 45 mm respectivamente.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 241

1 Instrucciones
1.90. MoveAbsJ - Mueve el robot a una posicin de ejes absoluta RobotWare - OS 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.

xx0500002201

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

Contina en la pgina siguiente


242 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

Sintaxis

1 Instrucciones
1.90. MoveAbsJ - Mueve el robot a una posicin de ejes absoluta RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre Consulte

Otras instrucciones de posicionamiento Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID Movimiento Definicin de jointtarget Definicin de velocidad Definicin de datos de zona Definicin de datos de punto de paro Definicin de herramientas Definicin de objetos de trabajo Movimiento en general Ejecucin simultnea de programas jointtarget - Datos de posicin de eje en la pgina 1193 speeddata - Datos de velocidad en la pgina 1250 zonedata - Datos de zonas en la pgina 1300 stoppointdata - Datos de punto de paro en la pgina 1254 tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Sincronizacin con instrucciones lgicas

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

243

1 Instrucciones
1.91. MoveC - Mueve el robot en crculo RobotWare - OS

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 248. 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 p4, p1, v500, fine, tool1;
Copyright 2004-2011 ABB. Reservados todos los derechos.

MoveC p2, p3, v500, z20, tool1;

La figura muestra cmo se realiza un crculo completo mediante dos instrucciones MoveC.

xx0500002212

Argumentos
MoveC [\Conc] CirPoint ToPoint [\ID] Speed [\V] | [\T] Zone [\Z] [\Inpos] Tool [\WObj] [\Corr]

Contina en la pgina siguiente


244 3HAC16581-5 Revisin: K

1 Instrucciones
1.91. MoveC - Mueve el robot en crculo RobotWare - OS Continuacin
[ \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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 TCP, la reorientacin de la herramienta y los ejes externos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 245

1 Instrucciones
1.91. MoveC - Mueve el robot en crculo RobotWare - OS Continuacin
[ \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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


246 3HAC16581-5 Revisin: K

1 Instrucciones
1.91. MoveC - Mueve el robot en crculo RobotWare - OS 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 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.

Copyright 2004-2011 ABB. Reservados todos los derechos.

xx0500002214

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. 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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 247

1 Instrucciones
1.91. MoveC - Mueve el robot en crculo RobotWare - OS Continuacin 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

Limitaciones Existen algunas limitaciones en cuanto a las posibilidades de posicionamiento de CirPoint y ToPoint, como se muestra en la figura siguiente.

xx0500002213

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.

Contina en la pgina siguiente


248 3HAC16581-5 Revisin: K

1 Instrucciones
1.91. MoveC - Mueve el robot en crculo RobotWare - OS Continuacin 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. 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> ] ,
Copyright 2004-2011 ABB. Reservados todos los derechos.

[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 sobre Consulte

Otras instrucciones de posiciona- Manual de referencia tcnica - Descripcin general de miento RAPID, seccin Resumen sobre RAPID - Movimiento Definicin de velocidad Definicin de datos de zona Definicin de datos de punto de paro Definicin de herramientas Definicin de objetos de trabajo speeddata - Datos de velocidad en la pgina 1250 zonedata - Datos de zonas en la pgina 1300 stoppointdata - Datos de punto de paro en la pgina 1254 tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 249

1 Instrucciones
1.91. MoveC - Mueve el robot en crculo RobotWare - OS Continuacin Para obtener ms informacin sobre
Escritura en una entrada de correccin Reorientacin de la herramienta durante trayectorias circulares Movimiento en general Sistemas de coordenadas

Consulte
CorrWrite - Escribe en un generador de correcciones en la pgina 79 CirPathMode - Reorientacin de la herramienta durante trayectorias circulares en la pgina 38 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Sistemas de coordenadas Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Sincronizacin con instrucciones lgicas Manual de referencia tcnica - Parmetros del sistema

Ejecucin simultnea de programas Parmetros del sistema

250

3HAC16581-5 Revisin: K

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 RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 251

1 Instrucciones
1.92. MoveCDO - Mueve el robot en una trayectoria circular y establece una salida digital en la esquina RobotWare - OS 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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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).

Contina en la pgina siguiente


252 3HAC16581-5 Revisin: K

1 Instrucciones
1.92. MoveCDO - Mueve el robot en una trayectoria circular y establece una salida digital en la esquina RobotWare - OS Continuacin Ejecucin de programas Consulte la instruccin MoveC para obtener ms informacin acerca del movimiento circular. 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.

xx0500002215

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 253

1 Instrucciones
1.92. MoveCDO - Mueve el robot en una trayectoria circular y establece una salida digital en la esquina RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Otras instrucciones de posicionamiento Movimiento del robot en crculo Definicin de velocidad Definicin de datos de zona Definicin de herramientas Definicin de objetos de trabajo Movimiento en general Sistemas de coordenadas

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Movimiento MoveC - Mueve el robot en crculo en la pgina 244 speeddata - Datos de velocidad en la pgina 1250 zonedata - Datos de zonas en la pgina 1300 tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Sistemas de coordenadas

Movimientos con parmetros de E/S Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Sincronizacin con instrucciones lgicas

254

3HAC16581-5 Revisin: K

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 RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 255

1 Instrucciones
1.93. MoveCSync - Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID RobotWare - OS 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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.93. MoveCSync - Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID RobotWare - OS 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.

xx0500002216

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Ejecucin del procedimiento de RAPID


De acuerdo con esta descripcin En el punto de paro Ninguno en absoluto

Continuous o Cycle Paso hacia delante Paso hacia atrs

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 257

1 Instrucciones
1.93. MoveCSync - Mueve el robot en una trayectoria circular y ejecuta un procedimiento de RAPID RobotWare - OS Continuacin 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 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


Otras instrucciones de posicionamiento Mueve el robot en crculo Definicin de velocidad Definicin de datos de zona Definicin de herramientas Definicin de objetos de trabajo Movimiento en general Sistemas de coordenadas

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID Movimiento MoveC - Mueve el robot en crculo en la pgina 244 speeddata - Datos de velocidad en la pgina 1250 zonedata - Datos de zonas en la pgina 1300 tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Sistemas de coordenadas TriggInt - Define una interrupcin dependiente de una posicin en la pgina 612 TriggC - Movimiento circular del robot con eventos en la pgina 593
Copyright 2004-2011 ABB. Reservados todos los derechos.

Define una interrupcin dependiente de una posicin Movimiento circular del robot con eventos

258

3HAC16581-5 Revisin: K

1 Instrucciones
1.94. MoveExtJ - Mueve una o varias unidades mecnicas sin TCP RobotWare - OS

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 261. 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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. Este argumento no puede usarse en los movimientos sincronizados coordinados en un sistema MultiMove.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 259

1 Instrucciones
1.94. MoveExtJ - Mueve una o varias unidades mecnicas sin TCP RobotWare - OS Continuacin
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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 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.

Contina en la pgina siguiente


260 3HAC16581-5 Revisin: K

1 Instrucciones
1.94. MoveExtJ - Mueve una o varias unidades mecnicas sin TCP RobotWare - OS Continuacin 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 j1, rot_ax_speed, fine; MoveExtJ j2, rot_ax_speed, z20; MoveExtJ j3, rot_ax_speed, z20; MoveExtJ j4, rot_ax_speed, 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 , ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ 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


Otras instrucciones de posicionamiento Definicin de jointtarget Definicin de velocidad Definicin de datos de zona Movimiento en general Ejecucin simultnea de programas

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Movimiento jointtarget - Datos de posicin de eje en la pgina 1193 speeddata - Datos de velocidad en la pgina 1250 zonedata - Datos de zonas en la pgina 1300 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Sincronizacin con instrucciones lgicas

3HAC16581-5 Revisin: K

261

1 Instrucciones
1.95. MoveJ - Mueve el robot mediante un movimiento de ejes RobotWare - OS

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 264. 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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


262 3HAC16581-5 Revisin: K

1 Instrucciones
1.95. MoveJ - Mueve el robot mediante un movimiento de ejes RobotWare - OS Continuacin
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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 263

1 Instrucciones
1.95. MoveJ - Mueve el robot mediante un movimiento de ejes RobotWare - OS Continuacin
[ \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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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;

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.

Contina en la pgina siguiente


264 3HAC16581-5 Revisin: K

1 Instrucciones
1.95. MoveJ - Mueve el robot mediante un movimiento de ejes RobotWare - OS Continuacin 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 >
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ \ Z := < expression (IN) of num > ] [ \ Inpos := < expression (IN) of stoppointdata > ] , [ Tool := ] < persistent (PERS) of tooldata > [ \ WObj := < persistent (PERS) of wobjdata > ] ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 265

1 Instrucciones
1.95. MoveJ - Mueve el robot mediante un movimiento de ejes RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Otras instrucciones de posicionamiento Definicin de velocidad Definicin de datos de zona

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Movimiento speeddata - Datos de velocidad en la pgina 1250 zonedata - Datos de zonas en la pgina 1300

Definicin de datos de punto de stoppointdata - Datos de punto de paro en la pgina 1254 paro Definicin de herramientas Definicin de objetos de trabajo Movimiento en general Sistemas de coordenadas tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Sistemas de coordenadas Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Sincronizacin con instrucciones lgicas

Ejecucin simultnea de programas

266

3HAC16581-5 Revisin: K

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 ]

Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 267

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Tipo de dato: dionum El valor deseado para la seal (0 1).

Contina en la pgina siguiente


268 3HAC16581-5 Revisin: K

1 Instrucciones
1.96. MoveJDO - Mueve el robot mediante el movimiento de los ejes y activa una salida digital en la esquina Continuacin 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. La figura muestra la activacin/desactivacin de una seal digital de salida en la trayectoria de esquina con MoveJDO.

xx0500002196

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 >
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ \ 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 > ] ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 269

1 Instrucciones
1.96. MoveJDO - Mueve el robot mediante el movimiento de los ejes y activa una salida digital en la esquina Continuacin Informacin relacionada Para obtener ms informacin sobre
Otras instrucciones de posicionamiento Movimiento del robot mediante un movimiento de ejes Definicin de velocidad Definicin de datos de zona Definicin de herramientas Definicin de objetos de trabajo Movimiento en general Sistemas de coordenadas

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID Movimiento MoveJ - Mueve el robot mediante un movimiento de ejes en la pgina 262 speeddata - Datos de velocidad en la pgina 1250 zonedata - Datos de zonas en la pgina 1300 tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Sistemas de coordenadas Manual de referencia tcnica - Descripcin general de RAPID, seccin Sincronizacin mediante instrucciones lgicas

Movimientos con parmetros de E/S

270

3HAC16581-5 Revisin: K

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 RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


3HAC16581-5 Revisin: K 271

1 Instrucciones
1.97. MoveJSync - Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de RAPID RobotWare - OS 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).

Contina en la pgina siguiente


272 3HAC16581-5 Revisin: K

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 RobotWare - OS Continuacin Ejecucin de programas Consulte la instruccin MoveJ para obtener ms informacin acerca de los movimientos de ejes. 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.

xx0500002195

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
Continuous o Cycle Paso hacia delante
Copyright 2004-2011 ABB. Reservados todos los derechos.

Ejecucin del procedimiento de RAPID


De acuerdo con esta descripcin En el punto de paro Ninguno en absoluto

Paso hacia atrs

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

1 Instrucciones
1.97. MoveJSync - Mueve el robot con un movimiento de ejes y ejecuta un procedimiento de RAPID RobotWare - OS 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 Consulte sobre


Otras instrucciones de posicionamiento Movimiento del robot mediante un movimiento de ejes Definicin de velocidad Definicin de datos de zona Definicin de herramientas Definicin de objetos de trabajo Movimiento en general Sistemas de coordenadas Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Movimiento MoveJ - Mueve el robot mediante un movimiento de ejes en la pgina 262 speeddata - Datos de velocidad en la pgina 1250 zonedata - Datos de zonas en la pgina 1300 tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Manual de referencia tcnica - Descripcin general de RAPID, 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 612 Movimientos de robot eje por eje con eventos TriggJ - Movimientos de ejes del robot a partir de eventos en la pgina 621

274

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.98. MoveL - Mueve el robot siguiendo una trayectoria lineal RobotWare - OS

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 278. 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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 275

1 Instrucciones
1.98. MoveL - Mueve el robot siguiendo una trayectoria lineal RobotWare - OS Continuacin
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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


276 3HAC16581-5 Revisin: K

1 Instrucciones
1.98. MoveL - Mueve el robot siguiendo una trayectoria lineal RobotWare - OS Continuacin
[ \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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. 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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 277

1 Instrucciones
1.98. MoveL - Mueve el robot siguiendo una trayectoria lineal RobotWare - OS Continuacin 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 2.200 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
[ \ 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 ] ;
Copyright 2004-2011 ABB. Reservados todos los derechos.

MoveL

Contina en la pgina siguiente


278 3HAC16581-5 Revisin: K

1 Instrucciones
1.98. MoveL - Mueve el robot siguiendo una trayectoria lineal RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Otras instrucciones de posicionamiento Definicin de velocidad Definicin de datos de zona Definicin de datos de punto de paro Definicin de herramientas Definicin de objetos de trabajo

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID Movimiento speeddata - Datos de velocidad en la pgina 1250 zonedata - Datos de zonas en la pgina 1300 stoppointdata - Datos de punto de paro en la pgina 1254 tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292

Escritura en una entrada de correccin CorrWrite - Escribe en un generador de correcciones en la pgina 79 Movimiento en general Sistemas de coordenadas Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Sistemas de coordenadas Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Sincronizacin con instrucciones lgicas

Ejecucin simultnea de programas

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

279

1 Instrucciones
1.99. MoveLDO - Mueve el robot linealmente y establece una salida digital en la esquina. RobotWare - OS

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


280 3HAC16581-5 Revisin: K

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. RobotWare - OS 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

Value

Tipo de dato: dionum El valor deseado para la seal (0 1).

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 281

1 Instrucciones
1.99. MoveLDO - Mueve el robot linealmente y establece una salida digital en la esquina. RobotWare - OS Continuacin 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. La figura muestra la activacin/desactivacin de una seal digital de salida en la trayectoria de esquina con MoveLDO.

xx0500002193

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 [ \ 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 > ] ;
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ ToPoint := ] < expression (IN) of robtarget >

Contina en la pgina siguiente


282 3HAC16581-5 Revisin: K

1 Instrucciones
1.99. MoveLDO - Mueve el robot linealmente y establece una salida digital en la esquina. RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Otras instrucciones de posicionamiento Movimiento lineal del robot Definicin de velocidad Definicin de datos de zona Definicin de herramientas Definicin de objetos de trabajo Movimiento en general Sistemas de coordenadas

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID Movimiento MoveL - Mueve el robot siguiendo una trayectoria lineal en la pgina 275 speeddata - Datos de velocidad en la pgina 1250 zonedata - Datos de zonas en la pgina 1300 tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Sistemas de coordenadas Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Sincronizacin con instrucciones lgicas

Movimientos con parmetros de E/S

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

283

1 Instrucciones
1.100. MoveLSync - Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


284 3HAC16581-5 Revisin: K

1 Instrucciones
1.100. MoveLSync - Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID RobotWare - OS 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 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

Copyright 2004-2011 ABB. Reservados todos los derechos.

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).

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 285

1 Instrucciones
1.100. MoveLSync - Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID RobotWare - OS Continuacin 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. La figura muestra el orden de ejecucin del procedimiento de RAPID definido por el usuario al llegar al centro de la trayectoria de esquina.

xx0500002194

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:
Continuous o Cycle Paso hacia delante Paso hacia atrs

Ejecucin del procedimiento de RAPID:


De acuerdo con esta descripcin En el punto de paro Ninguno en absoluto
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


286 3HAC16581-5 Revisin: K

1 Instrucciones
1.100. MoveLSync - Mueve el robot de forma lineal y ejecuta un procedimiento de RAPID RobotWare - OS Continuacin 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. 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

Copyright 2004-2011 ABB. Reservados todos los derechos.

Otras instrucciones de posicionamiento Manual de referencia tcnica - Descripcin general de RAPID, seccin Movimiento Movimiento lineal del robot Definicin de velocidad Definicin de datos de zona Definicin de herramientas Definicin de objetos de trabajo Movimiento en general Sistemas de coordenadas MoveL - Mueve el robot siguiendo una trayectoria lineal en la pgina 275 speeddata - Datos de velocidad en la pgina 1250 zonedata - Datos de zonas en la pgina 1300 tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Manual de referencia tcnica - Descripcin general de RAPID, 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 612 Movimientos de robot lineales con eventos TriggL - Movimiento lineal del robot con eventos en la pgina 628

3HAC16581-5 Revisin: K

287

1 Instrucciones
1.101. MToolRotCalib - Calibracin de la rotacin de una herramienta mvil RobotWare - OS

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


288 3HAC16581-5 Revisin: K

1 Instrucciones
1.101. MToolRotCalib - Calibracin de la rotacin de una herramienta mvil RobotWare - OS Continuacin Consulte la figura siguiente para obtener una definicin del objetivo de ejes para RefTip, ZPos, y opcionalmente XPos.

xx0500002192

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;

Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

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. Contina en la pgina siguiente


3HAC16581-5 Revisin: K 289

1 Instrucciones
1.101. MToolRotCalib - Calibracin de la rotacin de una herramienta mvil RobotWare - OS Continuacin 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
[ RefTip := ] < expression (IN) of jointtarget > , [ ZPos := ] < expression (IN) of jointtarget > [ \XPos := < expression (IN) of jointtarget > ] , [ Tool := ] < persistent (PERS) of tooldata > ;
Copyright 2004-2011 ABB. Reservados todos los derechos.

MToolRotCalib

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 291 Calibracin del TCP de una herramienta SToolTCPCalib - Calibracin del TCP de una fija herramienta estacionaria en la pgina 524 Calibracin del TCP y la rotacin de una SToolRotCalib - Calibracin del TCP y de la herramienta fija rotacin de una herramienta estacionaria en la pgina 521

290

3HAC16581-5 Revisin: K

1 Instrucciones
1.102. MToolTCPCalib - Calibracin del TCP de una herramienta mvil RobotWare - OS

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.


Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

xx0500002191

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 291

1 Instrucciones
1.102. MToolTCPCalib - Calibracin del TCP de una herramienta mvil RobotWare - OS 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 El tercer punto de aproximacin. Contina en la pgina siguiente


292 3HAC16581-5 Revisin: K

1 Instrucciones
1.102. MToolTCPCalib - Calibracin del TCP de una herramienta mvil RobotWare - OS Continuacin
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 > ,
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ 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


Calibracin de la rotacin de una herramienta mvil

Consulte
MToolRotCalib - Calibracin de la rotacin de una herramienta mvil en la pgina 288

Calibracin del TCP de una herramienta SToolTCPCalib - Calibracin del TCP de una fija herramienta estacionaria en la pgina 524 Calibracin del TCP y la rotacin de una SToolRotCalib - Calibracin del TCP y de la herramienta fija rotacin de una herramienta estacionaria en la pgina 521

3HAC16581-5 Revisin: K

293

1 Instrucciones
1.103. Open - Abre un archivo o un canal serie RobotWare - OS

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 296. 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
"HOME:" O bien diskhome1 "TEMP:" o disktemp1 "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

Ruta completa del archivo

Tipo de dispositivo de E/S

"/hd0a/xxxx/HOME/"2 Disco Flash o disco duro "/hd0a/temp/" "/bd0/" "/bd1/" "/bd2/" "/bd3/" "/bd4/" "/bd5/" "/bd6/" "/bd7/" "/bd8/" "/bd9/" Disco Flash o disco duro Por ejemplo, llave de memoria USB 3

Contina en la pgina siguiente


294 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.103. Open - Abre un archivo o un canal serie RobotWare - OS Continuacin Ruta completa del archivo
-

Nombre del dispositivo de E/S


"com1:"4 "com2:"4 "com3:"4 "pc:"5

Tipo de dispositivo de E/S


Canal serie

"/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
"HOME:" O bien diskhome1 "TEMP:" o disktemp "RemovableDisk1:" o usbdisk1 "RemovableDisk2:" o usbdisk2 "RemovableDisk3:" o usbdisk3 "RemovableDisk4:" o usbdisk4

Ruta completa del archivo


"/xxxx/HOME/"2

Tipo de dispositivo de E/S

"/c:/temp/yyyy/"3 Disco duro "/xxxx/HOME/ RemovableDisk1/" "/xxxx/HOME/ RemovableDisk2/" "/xxxx/HOME/ RemovableDisk3/" "/xxxx/HOME/ RemovableDisk4/" Por ejemplo, llave de memoria USB 4

Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.103. Open - Abre un archivo o un canal serie RobotWare - OS Continuacin
[\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


Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.103. Open - Abre un archivo o un canal serie RobotWare - OS Continuacin Ejemplo 2
VAR iodev io_device; VAR rawbytes raw_data_out; VAR rawbytes raw_data_in; VAR num float := 0.2; VAR 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. 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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 297

1 Instrucciones
1.103. Open - Abre un archivo o un canal serie RobotWare - OS Continuacin 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


Escritura, lectura y cierre de archivos o canales serie Fieldbus Command Interface

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Comunicacin Application manual - Robot communication and I/ O control, seccin Fieldbus Command Interface

298

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.104. OpenDir - Abre un directorio RobotWare - OS

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


3HAC16581-5 Revisin: K 299

1 Instrucciones
1.104. OpenDir - Abre un directorio RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Directorio Creacin de un directorio Eliminacin de un directorio Lectura de un directorio Cierre de un directorio Eliminacin de un archivo Cambio del nombre de un archivo

Consulte
dir - Estructura de directorio de archivos en la pgina 1167 MakeDir - Crea un nuevo directorio en la pgina 226 RemoveDir - Elimina un directorio en la pgina 370 ReadDir - Lee la siguiente entrada de un directorio en la pgina 994 CloseDir - Cierra un directorio en la pgina 58 RemoveFile - Elimina un archivo en la pgina 371 RenameFile - Cambia el nombre de un archivo en la pgina 372

300

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.105. PackDNHeader - Empaqueta un encabezado de DeviceNet en datos rawbytes RobotWare - OS

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,20 01 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 "20 1D 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 Formato Rango 2 caracteres 0 - 9, a -f, A - F "00" - "FF"

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

1 Instrucciones
1.105. PackDNHeader - Empaqueta un encabezado de DeviceNet en datos rawbytes RobotWare - OS Continuacin
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 encabezado RawData
Formato Servicio Tamao de ruta Ruta

N de bytes
1 1 1 x

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

Cdigo interno del IRC5 para DeviceNet Cdigo hexadecimal del servicio Bytes de entrada 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


302 3HAC16581-5 Revisin: K

1 Instrucciones
1.105. PackDNHeader - Empaqueta un encabezado de DeviceNet en datos rawbytes RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Dato rawbytes Obtencin de la longitud de un dato rawbytes Borrado del contenido de un dato de tipo rawbytes Copiado del contenido de un dato de tipo rawbytes Empaquetamiento de datos en datos rawbytes Escritura de un dato rawbytes Lectura de un dato rawbytes

Consulte
rawbytes - Datos sin formato en la pgina 1229 RawBytesLen - Obtiene la longitud de un dato de tipo rawbytes en la pgina 989 ClearRawBytes - Borra el contenido de un dato de tipo rawbytes en la pgina 51 CopyRawBytes - Copia el contenido de un dato de tipo rawbytes en la pgina 69 PackRawBytes - Empaqueta datos en un dato de tipo rawbytes en la pgina 304 WriteRawBytes - Escribe un dato de tipo rawbytes en la pgina 753 ReadRawBytes - Lee datos de tipo rawbytes en la pgina 367

Desempaquetamiento de datos de un UnpackRawBytes - Desempaqueta datos de un dato dato rawbytes de tipo rawbytes en la pgina 684 Funciones para bits/bytes Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID Matemticas - Funciones de bits Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID Funciones para cadenas de caracteres

Funciones para cadenas de caracteres

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

303

1 Instrucciones
1.106. PackRawBytes - Empaqueta datos en un dato de tipo rawbytes RobotWare - OS

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


Copyright 2004-2011 ABB. Reservados todos los derechos.

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;

El contenido de los 7 bytes siguientes de raw_data ser "abcdefg", codificado en ASCII. Contina en la pgina siguiente
304 3HAC16581-5 Revisin: K

1 Instrucciones
1.106. PackRawBytes - Empaqueta datos en un dato de tipo rawbytes RobotWare - OS Continuacin 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. Consulte Datos predefinidos en la pgina 307.
[ \Float4 ]

Tipo de dato: switch El Value a empaquetar tiene el formato num y debe almacenarse en RawData como flotante en 4 bytes. Contina en la pgina siguiente
3HAC16581-5 Revisin: K 305

1 Instrucciones
1.106. PackRawBytes - Empaqueta datos en un dato de tipo rawbytes RobotWare - OS Continuacin
[ \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:
num *) dnum **) num string byte

Parmetros de opcin permitidos:


\IntX \IntX \Float4 \ASCII (de 1 a 80 caracteres) \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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


306 3HAC16581-5 Revisin: K

1 Instrucciones
1.106. PackRawBytes - Empaqueta datos en un dato de tipo rawbytes RobotWare - OS 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 Valor conFormato de entero simblica stante
USINT UINT UDINT ULINT SINT INT DINT 1 2 4 8 -1 -2 -4 Entero de 1 byte sin signo Entero de 2 byte sin signo Entero de 4 byte sin signo Entero de 8 byte sin signo Entero de 1 bytes con signo Entero de 2 bytes con signo Entero de 4 bytes con signo

Rango de valores enteros


0 ... 255 0 ... 65 535 0 ... 8 388 608 *) 0 ... 4 294 967 295 ****) 0 ... 4 503 599 627 370 496**) - 128... 127 - 32 768 ... 32 767 - 8 388 607 ... 8 388 608 *) -2 147 483 648 ... 2 147 483 647 ***) - 4 503 599 627 370 496... 4 503 599 627 370 496 **)

LINT

-8

Entero de 8 bytes con signo

*) *) 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> ,
Copyright 2004-2011 ABB. Reservados todos los derechos.

[RawData := ] < variable (VAR) of rawbytes> [ \ Network ] , [StartIndex := ] < expression (IN) of num> [ \ Hex1 ] | [ \ IntX := < expression (IN) of inttypes>] |[ \ Float4 ] | [ \ ASCII] ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 307

1 Instrucciones
1.106. PackRawBytes - Empaqueta datos en un dato de tipo rawbytes RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Dato rawbytes Obtencin de la longitud de un dato rawbytes Borrado del contenido de un dato de tipo rawbytes Copiado del contenido de un dato de tipo rawbytes Empaquetamiento de un encabezado de DeviceNet en datos rawbytes Escritura de un dato rawbytes Lectura de un dato rawbytes

Consulte
rawbytes - Datos sin formato en la pgina 1229 RawBytesLen - Obtiene la longitud de un dato de tipo rawbytes en la pgina 989 ClearRawBytes - Borra el contenido de un dato de tipo rawbytes en la pgina 51 CopyRawBytes - Copia el contenido de un dato de tipo rawbytes en la pgina 69 PackDNHeader - Empaqueta un encabezado de DeviceNet en datos rawbytes en la pgina 301 WriteRawBytes - Escribe un dato de tipo rawbytes en la pgina 753 ReadRawBytes - Lee datos de tipo rawbytes en la pgina 367

Desempaquetamiento de datos de un dato UnpackRawBytes - Desempaqueta datos de rawbytes un dato de tipo rawbytes en la pgina 684 Funciones para bits/bytes Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Funciones de bits Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Funciones para cadenas de caracteres

Funciones para cadenas de caracteres

308

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.107. PathAccLim - Reduce la aceleracin del TCP a lo largo de la trayectoria RobotWare - OS

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.

Copyright 2004-2011 ABB. Reservados todos los derechos.

xx0500002184

Ejemplos bsicos A continuacin aparecen algunos ejemplos bsicos de la instruccin PathAccLim. Consulte tambin Ms ejemplos en la pgina 310. 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;

Se devuelven la aceleracin y deceleracin del TCP a sus valores mximos (predeterminados).

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 309

1 Instrucciones
1.107. PathAccLim - Reduce la aceleracin del TCP a lo largo de la trayectoria RobotWare - OS Continuacin 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Si se usa una combinacin de instrucciones AccSet y PathAccLim, el sistema reduce la aceleracin y deceleracin en el orden siguiente: Ms ejemplos A continuacin aparecen ms ejemplos de cmo usar la instruccin PathAccLim. Segn AccSet Segn PathAccLim

xx0500002183

Contina en la pgina siguiente


310 3HAC16581-5 Revisin: K

1 Instrucciones
1.107. PathAccLim - Reduce la aceleracin del TCP a lo largo de la trayectoria RobotWare - OS Continuacin 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. Se limita a 4 m/s la deceleracin del TCP2 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

PathAccLim [ AccLim := ] < expression (IN) of bool > [\AccMax := <expression (IN) of num >], [DecelLim := ] < expression (IN) of bool> [\DecelMax := <expression (IN) of num >];

Informacin relacionada Para obtener ms informacin sobre


Instrucciones de posicionamiento

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Movimiento motsetdata - Datos de parmetros de movimiento en la pgina 1205 AccSet - Reduce la aceleracin en la pgina 15

Datos de parmetros de movimiento Reduccin de la aceleracin

3HAC16581-5 Revisin: K

311

1 Instrucciones
1.108. PathRecMoveBwd - Hace retroceder la grabadora de trayectorias Path Recovery

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 314. 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:
[\ToolOffs]

Regreso a la posicin en la que se inici el movimiento sincronizado Regreso hasta la posicin de ID ms cercana grabada

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


312 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.108. PathRecMoveBwd - Hace retroceder la grabadora de trayectorias Path Recovery 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

Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 313

1 Instrucciones
1.108. PathRecMoveBwd - Hace retroceder la grabadora de trayectorias Path Recovery 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


314 3HAC16581-5 Revisin: K

1 Instrucciones
1.108. PathRecMoveBwd - Hace retroceder la grabadora de trayectorias Path Recovery Continuacin

xx0500002135

Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 315

1 Instrucciones
1.108. PathRecMoveBwd - Hace retroceder la grabadora de trayectorias Path Recovery 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


316 3HAC16581-5 Revisin: K

1 Instrucciones
1.108. PathRecMoveBwd - Hace retroceder la grabadora de trayectorias Path Recovery Continuacin
ENDTEST !Perform service action PathRecMoveFwd \ToolOffs:=[0,0,10]; RestoPath; StartMove;

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

!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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 317

1 Instrucciones
1.108. PathRecMoveBwd - Hace retroceder la grabadora de trayectorias Path Recovery Continuacin 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. 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 Consulte


Copyright 2004-2011 ABB. Reservados todos los derechos.

Para obtener ms informacin sobre

Identificador de grabadora de pathrecid - Identificador de grabadora de trayectorias en la trayectorias pgina 1222 Inicio y detencin de la grabadora de trayectorias PathRecStart - Inicia la grabadora de trayectorias en la pgina 322 PathRecStop - Detiene la grabadora de trayectorias en la pgina 325 PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida guardada en la pgina 966 PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada en la pgina 970

Comprobacin de que la trayectoria grabada es correcta

Reproduccin de la grabacin PathRecMoveFwd - Hace avanzar la grabadora de trayectode trayectorias hacia delante rias en la pgina 319 Almacenamiento y restauracin de trayectorias StorePath - Almacena la trayectoria cuando se produce una interrupcin en la pgina 540 RestoPath - Restablece la trayectoria despus de una interrupcin en la pgina 377 Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Movimiento Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas

Otras instrucciones de posicionamiento Recuperacin en caso de error

318

3HAC16581-5 Revisin: K

1 Instrucciones
1.109. PathRecMoveFwd - Hace avanzar la grabadora de trayectorias PathRecovery

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 320. 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]

Copyright 2004-2011 ABB. Reservados todos los derechos.

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


3HAC16581-5 Revisin: K 319

1 Instrucciones
1.109. PathRecMoveFwd - Hace avanzar la grabadora de trayectorias PathRecovery 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

xx0500002133

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


320 3HAC16581-5 Revisin: K

1 Instrucciones
1.109. PathRecMoveFwd - Hace avanzar la grabadora de trayectorias PathRecovery 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 1222 Inicio y detencin de la grabadora de trayectorias PathRecStart - Inicia la grabadora de trayectorias en la pgina 322 PathRecStop - Detiene la grabadora de trayectorias en la pgina 325 PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida guardada en la pgina 966 PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada en la pgina 970 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias en la pgina 312 StorePath - Almacena la trayectoria cuando se produce una interrupcin en la pgina 540 RestoPath - Restablece la trayectoria despus de una interrupcin en la pgina 377

Copyright 2004-2011 ABB. Reservados todos los derechos.

Comprobacin de que la trayectoria grabada es correcta

Reproduccin de la grabacin de trayectorias hacia atrs Almacenamiento y restauracin de trayectorias

Otras instrucciones de posicionamiento Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID Movimiento Recuperacin en caso de error Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Recuperacin en caso de error Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Recuperacin en caso de error

3HAC16581-5 Revisin: K

321

1 Instrucciones
1.110. PathRecStart - Inicia la grabadora de trayectorias Path Recovery

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


322 3HAC16581-5 Revisin: K

1 Instrucciones
1.110. PathRecStart - Inicia la grabadora de trayectorias Path Recovery 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.110. PathRecStart - Inicia la grabadora de trayectorias Path Recovery Continuacin 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 trayectotorias rias en la pgina 1222 Detencin de la grabadora de trayecto- PathRecStop - Detiene la grabadora de trayectorias rias en la pgina 325 Comprobacin de que la trayectoria grabada es correcta PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida guardada en la pgina 966 PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada en la pgina 970 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias en la pgina 312 PathRecMoveFwd - Hace avanzar la grabadora de trayectorias en la pgina 319 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S

Reproduccin de la grabacin de trayectorias hacia atrs Reproduccin de la grabacin de trayectorias hacia delante Movimiento en general

324

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.111. PathRecStop - Detiene la grabadora de trayectorias Path Recovery

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. 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 := [...];

Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 325

1 Instrucciones
1.111. PathRecStop - Detiene la grabadora de trayectorias Path Recovery Continuacin
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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


326 3HAC16581-5 Revisin: K

1 Instrucciones
1.111. PathRecStop - Detiene la grabadora de trayectorias Path Recovery Continuacin

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 ] ;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre Consulte

Identificadores de grabadora de trayec- pathrecid - Identificador de grabadora de trayectotorias rias en la pgina 1222 Inicio de la grabadora de trayectorias Comprobacin de que la trayectoria grabada es correcta PathRecStart - Inicia la grabadora de trayectorias en la pgina 322 PathRecValidBwd - Comprueba si existe una trayectoria de retroceso vlida guardada en la pgina 966 PathRecValidFwd - Comprueba si existe una trayectoria de avance vlida guardada en la pgina 970 PathRecMoveBwd - Hace retroceder la grabadora de trayectorias en la pgina 312 PathRecMoveFwd - Hace avanzar la grabadora de trayectorias en la pgina 319 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S

Reproduccin de la grabacin de trayectorias hacia atrs Reproduccin de la grabacin de trayectorias hacia delante Movimiento en general

3HAC16581-5 Revisin: K

327

1 Instrucciones
1.112. PathResol - Ajusta la resolucin de la trayectoria RobotWare - OS

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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Con el robot en un punto de paro, el tiempo de muestreo de la trayectoria aumenta al 150% del valor configurado. Argumentos
PathResol PathSampleTime

Contina en la pgina siguiente


328 3HAC16581-5 Revisin: K

1 Instrucciones
1.112. PathResol - Ajusta la resolucin de la trayectoria RobotWare - OS Continuacin
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 a 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.

Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Sintaxis
PathResol [PathSampleTime := ] < expression (IN) of num> ;

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 329

1 Instrucciones
1.112. PathResol - Ajusta la resolucin de la trayectoria RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre Consulte

Instrucciones de posicionamiento Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Parmetros de movimiento Manual de referencia tcnica - Descripcin general de RAPID, 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

330

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.113. PDispOff - Desactiva el desplazamiento de programa RobotWare - OS

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


Definicin del desplazamiento de programa con dos posiciones Definicin del desplazamiento de programa con una base de coordenadas conocida

Consulte
PDispOn - Activa el desplazamiento de programa en la pgina 332 PDispSet - Activa un desplazamiento de programa a partir de una base de coordenadas conocida en la pgina 336

3HAC16581-5 Revisin: K

331

1 Instrucciones
1.114. PDispOn - Activa el desplazamiento de programa RobotWare - OS

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 334. 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.114. PDispOn - Activa el desplazamiento de programa RobotWare - OS Continuacin
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.

Copyright 2004-2011 ABB. Reservados todos los derechos.

xx0500002186

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. Por otro lado, es posible programar varias instrucciones PDispOn, una tras otra y, en este caso, se suman los distintos desplazamientos de programa.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 333

1 Instrucciones
1.114. PDispOn - Activa el desplazamiento de programa RobotWare - OS Continuacin 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.

xx0500002187

El desplazamiento de programa se elimina automticamente en los casos siguientes: Ms ejemplos A continuacin aparecen ms ejemplos de cmo usar la instruccin PDispOn. Ejemplo 1
PROC draw_square() PDispOn *, tool1; MoveL *, v500, z10, tool1; MoveL *, v500, z10, tool1; MoveL *, v500, z10, tool1; MoveL *, v500, z10, tool1; PDispOff; ENDPROC ... MoveL p10, v500, fine \Inpos := inpos50, tool1; draw_square; MoveL p20, v500, fine \Inpos := inpos50, tool1; draw_square; MoveL p30, v500, fine \Inpos := inpos50, tool1; draw_square;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


334 3HAC16581-5 Revisin: K

1 Instrucciones
1.114. PDispOn - Activa el desplazamiento de programa RobotWare - OS Continuacin 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> ] ;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Desactivacin del desplazamiento de programa Definicin del desplazamiento de programa con una base de coordenadas conocida Sistemas de coordenadas

Consulte
PDispOff - Desactiva el desplazamiento de programa en la pgina 331 PDispSet - Activa un desplazamiento de programa a partir de una base de coordenadas conocida en la pgina 336 Manual de referencia tcnica - Parmetros del sistema, seccin Principios de movimiento y E/ S - Sistemas de coordenadas tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292

Definicin de herramientas Definicin de objetos de trabajo

3HAC16581-5 Revisin: K

335

1 Instrucciones
1.115. PDispSet - Activa un desplazamiento de programa a partir de una base de coordenadas conocida RobotWare - OS

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.

xx0500002199

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


336 3HAC16581-5 Revisin: K

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 RobotWare - OS 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.

xx0500002204

El desplazamiento de programa se activa cuando la instruccin PDispSet 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


Desactivacin del desplazamiento de programa Definicin del desplazamiento de programa con dos posiciones Definicin de datos del tipo pose Sistemas de coordenadas

Consulte
PDispOff - Desactiva el desplazamiento de programa en la pgina 331 PDispOn - Activa el desplazamiento de programa en la pgina 332 pose - Transformaciones de coordenadas en la pgina 1226 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Sistemas de coordenadas PDispOn - Activa el desplazamiento de programa en la pgina 332

Ejemplos de cmo puede usarse el desplazamiento de programa

3HAC16581-5 Revisin: K

337

1 Instrucciones
1.116. ProcCall - Llama a un nuevo procedimiento RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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;

Llama al procedimiento weldpipe3, con un argumento obligatorio y un argumento opcional. Contina en la pgina siguiente
338 3HAC16581-5 Revisin: K

1 Instrucciones
1.116. ProcCall - Llama a un nuevo procedimiento RobotWare - OS Continuacin 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


Argumentos, parmetros

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Rutinas

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

339

1 Instrucciones
1.117. ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos RobotWare - OS

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 341. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


340 3HAC16581-5 Revisin: K

1 Instrucciones
1.117. ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos RobotWare - OS 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:
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 341

1 Instrucciones
1.117. ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos RobotWare - OS Continuacin
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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


342 3HAC16581-5 Revisin: K

1 Instrucciones
1.117. ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos RobotWare - OS Continuacin
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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 343

1 Instrucciones
1.117. ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos RobotWare - OS Continuacin
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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 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.

Contina en la pgina siguiente


344 3HAC16581-5 Revisin: K

1 Instrucciones
1.117. ProcerrRecovery - Genera errores de movimiento de proceso y permite la recuperacin tras ellos RobotWare - OS Continuacin Sintaxis
ProcerrRecovery [ \ SyncOrgMoveInst ] | [ \ SyncLastMoveInst ] [ \ ProcSignal := ] < variable (VAR) of signaldo > ;

Informacin relacionada Para obtener ms informacin sobre


Gestores de errores

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Recuperacin en caso de error Manual de referencia de RAPID - Kernel de RAPID - Recuperacin en caso de errores RaiseToUser - Propaga un error al nivel del usuario en la pgina 352 StartMoveRetry - Reanuda el movimiento y la ejecucin del robot en la pgina 506

Errores elevados asncronamente Propagacin de un error al nivel del usuario Reanudacin del movimiento y la ejecucin de programas

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

345

1 Instrucciones
1.118. PulseDO - Genera un pulso en una seal digital de salida RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ \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.

Contina en la pgina siguiente


346 3HAC16581-5 Revisin: K

1 Instrucciones
1.118. PulseDO - Genera un pulso en una seal digital de salida RobotWare - OS Continuacin 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. En la figura siguiente se muestran ejemplos de generacin de pulsos en una seal digital de salida.

Copyright 2004-2011 ABB. Reservados todos los derechos.

xx0500002217

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: K 347

1 Instrucciones
1.118. PulseDO - Genera un pulso en una seal digital de salida RobotWare - OS 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


Instrucciones de entrada/salida

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Seales de entrada y salida Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Principios de E/S Manual de referencia tcnica - Parmetros del sistema

Funcionalidad de entrada/salida en general Configuracin de E/S

348

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.119. RAISE - Llama a un gestor de errores RobotWare-OS

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 350. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 349

1 Instrucciones
1.119. RAISE - Llama a un gestor de errores RobotWare-OS Continuacin 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). 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 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

IF ERRNO = ERR_DIVZERO THEN

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".

Contina en la pgina siguiente


350 3HAC16581-5 Revisin: K

1 Instrucciones
1.119. RAISE - Llama a un gestor de errores RobotWare-OS Continuacin 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 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


Gestin de errores

Copyright 2004-2011 ABB. Reservados todos los derechos.

Consulte
Manual de referencia tcnica - Parmetros del sistema, seccin Caractersticas bsicas - Recuperacin en caso de error Manual de referencia tcnica - Parmetros del sistema, seccin Caractersticas bsicas - Recuperacin en caso de error BookErrNo - Registra un nmero de error de sistema de RAPID en la pgina 30

Recuperacin en caso de error con un salto largo Registro de nmeros de error

3HAC16581-5 Revisin: K

351

1 Instrucciones
1.120. RaiseToUser - Propaga un error al nivel del usuario RobotWare - OS

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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


352 3HAC16581-5 Revisin: K

1 Instrucciones
1.120. RaiseToUser - Propaga un error al nivel del usuario RobotWare - OS Continuacin
ELSE RaiseToUser \BreakOff; ENDIF ENDPROC ENDMODULE

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 353

1 Instrucciones
1.120. RaiseToUser - Propaga un error al nivel del usuario RobotWare - OS Continuacin 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. 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: 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>;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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)

Informacin relacionada Para obtener ms informacin sobre


Gestin de errores

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Recuperacin en caso de error Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Deshacer BookErrNo - Registra un nmero de error de sistema de RAPID en la pgina 30

Gestin de deshacer

Registro de nmeros de error

354

3HAC16581-5 Revisin: K

1 Instrucciones
1.121. ReadAnyBin - Lee datos de un canal serie o un archivo binario RobotWare - OS

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 356. 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


Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 355

1 Instrucciones
1.121. ReadAnyBin - Lee datos de un canal serie o un archivo binario RobotWare - OS 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


356 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.121. ReadAnyBin - Lee datos de un canal serie o un archivo binario RobotWare - OS 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


Apertura y otras operaciones con canales serie o archivos Escritura de datos en canales serie o archivo

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Comunicacin WriteAnyBin - Escribe datos en un canal serie o archivo binario en la pgina 741

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

357

1 Instrucciones
1.122. ReadBlock - Lee un bloque de datos de un dispositivo Sensor Interface

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: 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).
Copyright 2004-2011 ABB. Reservados todos los derechos.

Name COM1: Connector COM1 Baudrate 19200

COM_TRP: Name sen1: Type RTP1 PhyChannel COM1

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.

Contina en la pgina siguiente


358 3HAC16581-5 Revisin: K

1 Instrucciones
1.122. ReadBlock - Lee un bloque de datos de un dispositivo Sensor Interface Continuacin
FileName

Tipo de dato: string 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)
SEN_NO_MEAS SEN_NOREADY SEN_GENERRO SEN_BUSY SEN_UNKNOWN SEN_EXALARM SEN_CAALARM SEN_TEMP SEN_VALUE SEN_CAMCHECK SEN_TIMEOUT

Descripcin
Fallo de medicin Sensor incapaz de gestionar el comando Error general del sensor Sensor ocupado Sensor desconocido Error de sensor externo Error de sensor interno Error de temperatura del sensor Valor de comunicacin no vlido Fallo de comprobacin de sensor Error de comunicacin

Sintaxis
ReadBlock [ device := ] < expression(IN) of string>,
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ BlockNo := ] < expression (IN) of num > , [ FileName := ] < expression (IN) of string > , [ \ TaskName := < expression (IN) of string > ] ;

Informacin relacionada Para obtener ms informacin sobre


Establecimiento de una conexin a un dispositivo de sensor Escritura de una variable de sensor Lectura de una variable de sensor Escritura de un bloque de datos de sensor Configuracin de la comunicacin del sensor

Consulte
SenDevice - Establece una conexin a un dispositivo de sensor en la pgina 440 WriteVar - Escribe una variable en la pgina 758 ReadVar - Lee una variable de un dispositivo en la pgina 1008 WriteBlock - Escribe un bloque de datos en un dispositivo en la pgina 747 Manual de referencia tcnica - Parmetros del sistema, seccin Communication

3HAC16581-5 Revisin: K

359

1 Instrucciones
1.123. ReadCfgData - Lee un atributo de un parmetro del sistema RobotWare - OS

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 for rob_1 en la variable de tiponumoffset1. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


360 3HAC16581-5 Revisin: K

1 Instrucciones
1.123. ReadCfgData - Lee un atributo de un parmetro del sistema RobotWare - OS Continuacin
[\ListNo]

Tipo de dato: num 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; ...
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 361

1 Instrucciones
1.123. ReadCfgData - Lee un atributo de un parmetro del sistema RobotWare - OS 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. Datos predefinidos La constante predefinida END_OF_LIST, con valor -1, puede usarse para detener la lectura si no es posible encontrar ms instancias. Contina en la pgina siguiente
362 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.123. ReadCfgData - Lee un atributo de un parmetro del sistema RobotWare - OS Continuacin 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


Definicin de cadena de caracteres Escritura de un atributo de un parmetro del sistema Obtencin del nombre del robot de la tarea actual Configuracin

Consulte
string - Cadenas de caracteres en la pgina 1260 WriteCfgData - Escribe un atributo de un parmetro del sistema en la pgina 749 RobName - Obtiene el nombre del robot del TCP en la pgina 1015 Manual de referencia tcnica - Parmetros del sistema

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

363

1 Instrucciones
1.124. ReadErrData - Obtiene informacin sobre un error RobotWare - OS

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 365 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. Por ejemplo, el error 10008 Program restarted, se devuelve como 8. Contina en la pgina siguiente
364 3HAC16581-5 Revisin: K

1 Instrucciones
1.124. ReadErrData - Obtiene informacin sobre un error RobotWare - OS Continuacin
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. Ms ejemplos A continuacin aparecen ms ejemplos de la instruccin ReadErrData. Ejemplo 1
VAR intnum err_interrupt; VAR trapdata err_data;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 365

1 Instrucciones
1.124. ReadErrData - Obtiene informacin sobre un error RobotWare - OS Continuacin 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


Resumen de interrupciones

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Interrupciones Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Interrupciones errdomain - Dominio de error en la pgina 1170
Copyright 2004-2011 ABB. Reservados todos los derechos.

Ms informacin sobre la gestin de interrupciones Dominios de error, constantes predefinidas

Tipos de errores, constantes predefini- errtype - Tipo de error en la pgina 1179 das Solicitud de una interrupcin para errores Obtencin de datos de interrupcin para la rutina TRAP actual IError - Solicita una interrupcin para errores en la pgina 129 GetTrapData - Obtiene datos de interrupcin para la rutina TRAP actual en la pgina 118

366

3HAC16581-5 Revisin: K

1 Instrucciones
1.125. ReadRawBytes - Lee datos de tipo rawbytes RobotWare - OS

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 iodev io_device; VAR rawbytes raw_data_out; VAR rawbytes raw_data_in; VAR num float := 0.2; VAR 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


3HAC16581-5 Revisin: K 367

1 Instrucciones
1.125. ReadRawBytes - Lee datos de tipo rawbytes RobotWare - OS 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


Dato rawbytes Obtencin de la longitud de un dato rawbytes Borrado del contenido de un dato de tipo rawbytes Copiado del contenido de un dato de tipo rawbytes

Consulte
rawbytes - Datos sin formato en la pgina 1229 RawBytesLen - Obtiene la longitud de un dato de tipo rawbytes en la pgina 989 ClearRawBytes - Borra el contenido de un dato de tipo rawbytes en la pgina 51 CopyRawBytes - Copia el contenido de un dato de tipo rawbytes en la pgina 69

Contina en la pgina siguiente


368 3HAC16581-5 Revisin: K

1 Instrucciones
1.125. ReadRawBytes - Lee datos de tipo rawbytes RobotWare - OS Continuacin Para obtener ms informacin sobre
Empaquetamiento de un encabezado de DeviceNet en datos rawbytes Empaquetamiento de datos en datos rawbytes Escritura de un dato rawbytes

Consulte
PackDNHeader - Empaqueta un encabezado de DeviceNet en datos rawbytes en la pgina 301 PackRawBytes - Empaqueta datos en un dato de tipo rawbytes en la pgina 304 WriteRawBytes - Escribe un dato de tipo rawbytes en la pgina 753

Desempaquetamiento de datos de un dato UnpackRawBytes - Desempaqueta datos de un rawbytes dato de tipo rawbytes en la pgina 684

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

369

1 Instrucciones
1.126. RemoveDir - Elimina un directorio RobotWare - OS

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


Directorio Apertura de un directorio Lectura de un directorio Cierre de un directorio Creacin de un directorio

Consulte
dir - Estructura de directorio de archivos en la pgina 1167 OpenDir - Abre un directorio en la pgina 299 ReadDir - Lee la siguiente entrada de un directorio en la pgina 994 CloseDir - Cierra un directorio en la pgina 58 MakeDir - Crea un nuevo directorio en la pgina 226

Cambio del nombre de un archivo RenameFile - Cambia el nombre de un archivo en la pgina 372 Eliminacin de un archivo Copia de un archivo Comprobacin del tamao del archivo Comprobacin del tamao del sistema de archivos RemoveFile - Elimina un archivo en la pgina 371 CopyFile - Copia un archivo en la pgina 67 FileSize - Obtiene el tamao de un archivo en la pgina 882 FSSize - Obtiene el tamao de un sistema de archivos en la pgina 888

Comprobacin del tipo del archivo IsFile - Comprobar el tipo de un archivo en la pgina 920

370

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.127. RemoveFile - Elimina un archivo RobotWare - OS

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>;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Creacin de un directorio Eliminacin de un directorio Cambio del nombre de un archivo Copia de un archivo Comprobacin del tipo del archivo Comprobacin del tamao del archivo Comprobacin del tamao del sistema de archivos

Consulte
MakeDir - Crea un nuevo directorio en la pgina 226 RemoveDir - Elimina un directorio en la pgina 370 RenameFile - Cambia el nombre de un archivo en la pgina 372 CopyFile - Copia un archivo en la pgina 67 IsFile - Comprobar el tipo de un archivo en la pgina 920 FileSize - Obtiene el tamao de un archivo en la pgina 882 FSSize - Obtiene el tamao de un sistema de archivos en la pgina 888

3HAC16581-5 Revisin: K

371

1 Instrucciones
1.128. RenameFile - Cambia el nombre de un archivo RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


372 3HAC16581-5 Revisin: K

1 Instrucciones
1.128. RenameFile - Cambia el nombre de un archivo RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Creacin de un directorio Eliminacin de un directorio Eliminacin de un archivo Copia de un archivo Comprobacin del tipo del archivo Comprobacin del tamao del archivo Comprobacin del tamao del sistema de archivos

Consulte
MakeDir - Crea un nuevo directorio en la pgina 226 RemoveDir - Elimina un directorio en la pgina 370 RemoveFile - Elimina un archivo en la pgina 371 CopyFile - Copia un archivo en la pgina 67 IsFile - Comprobar el tipo de un archivo en la pgina 920 FileSize - Obtiene el tamao de un archivo en la pgina 882 FSSize - Obtiene el tamao de un sistema de archivos en la pgina 888

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

373

1 Instrucciones
1.129. Reset - Pone a cero una seal digital de salida RobotWare - OS

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 pone a cero la seal weld. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


Cambio de una seal digital de salida a cero Instrucciones de entrada/salida

Consulte
Set - Activa una seal digital de salida en la pgina 442 Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Seales de entrada y salida Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Principios de E/S Manual de referencia tcnica - Parmetros del sistema 3HAC16581-5 Revisin: K

Funcionalidad de entrada/salida en general Configuracin de E/S

374

1 Instrucciones
1.130. ResetPPMoved - Restablecer el estado del puntero de programa movido en el modo manual. RobotWare - OS

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

Sintaxis
ResetPPMoved;

Informacin relacionada Para obtener ms informacin sobre


Comprobar si el puntero de programa se ha movido en el modo manual

Consulte
PPMovedInManMode - Comprobar si el puntero de programa se ha movido en el modo manual. en la pgina 985

3HAC16581-5 Revisin: K

375

1 Instrucciones
1.131. ResetRetryCount - Restablece el nmero de reintentos RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


Gestores de errores

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Recuperacin en caso de error RETRY - Reanuda la ejecucin despus de un error en la pgina 379

Reanudacin de la ejecucin despus de un error

Configuracin del nmero mximo Manual de referencia tcnica - Parmetros del sistema, de reintentos seccin System Misc Nmero de reintentos restantes RemainingRetries - Reintentos restantes an pendientes en la pgina 1012

376

3HAC16581-5 Revisin: K

1 Instrucciones
1.132. RestoPath - Restablece la trayectoria despus de una interrupcin RobotWare - OS

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; ...
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 esto, el robot vuelve a la posicin en Contina en la pgina siguiente
3HAC16581-5 Revisin: K 377

1 Instrucciones
1.132. RestoPath - Restablece la trayectoria despus de una interrupcin RobotWare - OS Continuacin 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 sobre


Almacenamiento de trayectorias Ms ejemplos

Consulte
StorePath - Almacena la trayectoria cuando se produce una interrupcin en la pgina 540 StorePath - Almacena la trayectoria cuando se produce una interrupcin en la pgina 540 PathRecStart - Inicia la grabadora de trayectorias en la pgina 322 SyncMoveSuspend - Activa el movimiento independientesemicoordinado en la pgina 564

378

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.133. RETRY - Reanuda la ejecucin despus de un error RobotWare - OS

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 ;

Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 379

1 Instrucciones
1.133. RETRY - Reanuda la ejecucin despus de un error RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Gestores de errores

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Recuperacin en caso de error Manual de referencia tcnica - Parmetros del sistema, seccin System Misc TRYNEXT - Salta sobre una instruccin que ha provocado un error en la pgina 661

Configuracin del nmero mximo de reintentos Continuacin en la instruccin siguiente

380

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.134. RETURN - Finaliza la ejecucin de una rutina RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


3HAC16581-5 Revisin: K 381

1 Instrucciones
1.134. RETURN - Finaliza la ejecucin de una rutina RobotWare - OS 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


Funciones y procedimientos

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Rutinas Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Interrupciones Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Recuperacin en caso de error
Copyright 2004-2011 ABB. Reservados todos los derechos.

Rutinas TRAP

Gestores de errores

382

3HAC16581-5 Revisin: K

1 Instrucciones
1.135. Rewind - Rebobina la posicin del archivo RobotWare - OS

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 383. 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. Ms ejemplos
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 383

1 Instrucciones
1.135. Rewind - Rebobina la posicin del archivo RobotWare - OS Continuacin
! 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>;

Informacin relacionada Para obtener ms informacin sobre


Apertura y otras operaciones con archivos

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Comunicacin

384

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.136. RMQEmptyQueue - Vaca la cola de mensajes de RAPID RobotWare - OS

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Para obtener ms informacin sobre


Descripcin de la funcionalidad de RAPID Message Queue rmqmessage tipo de dato

Consulte
Application manual - Robot communication and I/O control, seccin RAPID Message Queue. rmqmessage - Mensaje de RAPID Message Queue en la pgina 1237.

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 401. 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 esperar una respuesta del cliente pgina 405. Encontrar el nmero de identidad de una tarea de RAPID Message Queue o de un cliente de Robot Application Builder Extraer los datos de encabezado de un rmqmessage Extraer los datos de un rmqmessage Ordenar y habilitar interrupciones para un tipo de dato en concreto RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura en la pgina 387. RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ en la pgina 395. RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ en la pgina 392. IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato en la pgina 173.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 385

1 Instrucciones
1.136. RMQEmptyQueue - Vaca la cola de mensajes de RAPID RobotWare - OS Continuacin Para obtener ms informacin sobre
Obtener el nombre de ranura de una identidad de ranura especificada Recibir un mensaje de una cola RMQ Obtener el primer mensaje de una cola de RAPID Message Queue

Consulte
RMQGetSlotName - Obtener el nombre de un cliente de RMQ en la pgina 1013. RMQReadWait - Devuelve un mensaje de una cola RMQ en la pgina 398. RMQGetMessage - Obtener un mensaje de RMQ en la pgina 389.

386

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.137. RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura FlexPendant Interface, PC Interface, or Multitasking

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.

Copyright 2004-2011 ABB. Reservados todos los derechos.

Sintaxis
RMQFindSlot [ Slot := ] < variable (VAR) of rmqslot > , [ Name := ] < expression (IN) of string >;

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 387

1 Instrucciones
1.137. RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura FlexPendant Interface, PC Interface, or Multitasking Continuacin Informacin relacionada Para obtener ms informacin sobre
Descripcin de la funcionalidad de RAPID Message Queue

Consulte
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 401 Obtener el primer mensaje de una cola de RAPID Message Queue. RMQGetMessage - Obtener un mensaje de RMQ en la pgina 389

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 esperar una respuesta del cliente pgina 405 Extraer los datos de encabezado de un rmqmessage Ordenar y habilitar interrupciones para un tipo de dato en concreto Extraer los datos de un rmqmessage Obtener el nombre de ranura de una identidad de ranura especificada RMQ Slot RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ en la pgina 395 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato en la pgina 173 RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ en la pgina 392 RMQGetSlotName - Obtener el nombre de un cliente de RMQ en la pgina 1013 rmqslot - Nmero de identidad de un cliente de RMQ en la pgina 1238

388

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.138. RMQGetMessage - Obtener un mensaje de RMQ FlexPendant Interface, PC Interface, or Multitasking

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 389. 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. 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;

Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 389

1 Instrucciones
1.138. RMQGetMessage - Obtener un mensaje de RMQ FlexPendant Interface, PC Interface, or Multitasking Continuacin
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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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). 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. Este error se genera si el mensaje no es vlido. Esto puede ocurrir por ejemplo si una aplicacin de PC enva un mensaje daado.

ERR_RMQ_INVMSG

Contina en la pgina siguiente


390 3HAC16581-5 Revisin: K

1 Instrucciones
1.138. RMQGetMessage - Obtener un mensaje de RMQ FlexPendant Interface, PC Interface, or Multitasking Continuacin 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


Descripcin de la funcionalidad de RAPID Message Queue Encontrar el nmero de identidad de una tarea de RAPID Message Queue o de un cliente de Robot Application Builder

Consulte
Application manual - Robot communication and I/O control, seccin RAPID Message Queue. RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura en la pgina 387

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 401 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 esperar una respuesta del cliente pgina 405 Extraer los datos de encabezado de un rmqmessage
Copyright 2004-2011 ABB. Reservados todos los derechos.

RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ en la pgina 395 RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ en la pgina 392 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato en la pgina 173 RMQGetSlotName - Obtener el nombre de un cliente de RMQ en la pgina 1013 rmqmessage - Mensaje de RAPID Message Queue en la pgina 1237

Extraer los datos de un rmqmessage Ordenar y habilitar interrupciones para un tipo de dato en concreto Obtener el nombre de ranura de una identidad de ranura especificada RMQ Message

3HAC16581-5 Revisin: K

391

1 Instrucciones
1.139. RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ FlexPendant Interface, PC Interface, or Multitasking

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 Ms ejemplos. 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


Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


392 3HAC16581-5 Revisin: K

1 Instrucciones
1.139. RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ FlexPendant Interface, PC Interface, or Multitasking Continuacin
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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Cuando se recibe un nuevo mensaje, la rutina TRAP TRAPmsghandler 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). 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 ERR_RMQ_DIM El mensaje recibido y el tipo de dato utilizado en el argumento Data no son del mismo tipo de dato. 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. El tamao de los datos recibidos es mayor que el tamao mximo configurado para el RMQ en la tarea receptora. Este error se genera si el mensaje no es vlido. Esto puede ocurrir por ejemplo si una aplicacin de PC enva un mensaje daado.

ERR_RMQ_MSGSIZE ERR_RMQ_INVMSG

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 393

1 Instrucciones
1.139. RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ FlexPendant Interface, PC Interface, or Multitasking Continuacin Sintaxis
RMQGetMsgData [ Message := ] < variable (VAR) of rmqmessage > , [ Data := ] < reference (VAR) of anytype >;

Informacin relacionada Para obtener ms informacin sobre


Descripcin de la funcionalidad de RAPID Message Queue Encontrar el nmero de identidad de una tarea de RAPID Message Queue o de un cliente de Robot Application Builder

Consulte
Application manual - Robot communication and I/O control, seccin RAPID Message Queue. RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura en la pgina 387

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 401 Obtener el primer mensaje de una cola de RAPID Message Queue. RMQGetMessage - Obtener un mensaje de RMQ en la pgina 389

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 esperar una respuesta del cliente pgina 405 Extraer los datos de encabezado de un rmqmessage Ordenar y habilitar interrupciones para un tipo de dato en concreto Obtener el nombre de ranura de una identidad de ranura especificada RMQ Message RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ en la pgina 395 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato en la pgina 173 RMQGetSlotName - Obtener el nombre de un cliente de RMQ en la pgina 1013 rmqmessage - Mensaje de RAPID Message Queue en la pgina 1237
Copyright 2004-2011 ABB. Reservados todos los derechos.

394

3HAC16581-5 Revisin: K

1 Instrucciones
1.140. RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ FlexPendant Interface, PC Interface, or Multitasking

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 396. 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 395

1 Instrucciones
1.140. RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ FlexPendant Interface, PC Interface, or Multitasking 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. 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


396 3HAC16581-5 Revisin: K

1 Instrucciones
1.140. RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ FlexPendant Interface, PC Interface, or Multitasking Continuacin
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 TRAPmsghandler 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). 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


Descripcin de la funcionalidad de RAPID Message Queue Encontrar el nmero de identidad de una tarea de RAPID Message Queue o de un cliente de Robot Application Builder
Copyright 2004-2011 ABB. Reservados todos los derechos.

Consulte
Application manual - Robot communication and I/O control, seccin RAPID Message Queue. RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura en la pgina 387

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 401 Obtener el primer mensaje de una cola de RAPID Message Queue. RMQGetMessage - Obtener un mensaje de RMQ en la pgina 389

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 esperar una respuesta del cliente pgina 405 Extraer los datos de un rmqmessage Ordenar y habilitar interrupciones para un tipo de dato en concreto Obtener el nombre de ranura de una identidad de ranura especificada RMQ Slot RMQ Header RMQ Message RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ en la pgina 392 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato en la pgina 173 RMQGetSlotName - Obtener el nombre de un cliente de RMQ en la pgina 1013 rmqslot - Nmero de identidad de un cliente de RMQ en la pgina 1238 rmqmessage - Mensaje de RAPID Message Queue en la pgina 1237 rmqheader - Encabezado de mensaje de RAPID Message Queue en la pgina 1235

3HAC16581-5 Revisin: K

397

1 Instrucciones
1.141. RMQReadWait - Devuelve un mensaje de una cola RMQ RobotWare - OS

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. 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


398 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.141. RMQReadWait - Devuelve un mensaje de una cola RMQ RobotWare - OS 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
ERR_RMQ_TIMEOUT ERR_RMQ_INVMSG

Descripcin
No se ha recibido ninguna respuesta dentro del tiempo lmite. Este error se genera si el mensaje no es vlido. Esto puede ocurrir por ejemplo si una aplicacin de PC enva un mensaje daado.

Copyright 2004-2011 ABB. Reservados todos los derechos.

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 > ] ';'

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 399

1 Instrucciones
1.141. RMQReadWait - Devuelve un mensaje de una cola RMQ RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Descripcin de la funcionalidad de RAPID Message Queue Descripcin de los modos de ejecucin de tareas rmqmessage tipo de dato

Consulte
Application manual - Robot communication and I/O control, seccin RAPID Message Queue. Manual de referencia tcnica - Parmetros del sistema, seccin Tema Controller - Tipo Task. rmqmessage - Mensaje de RAPID Message Queue en la pgina 1237.

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 401. 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 esperar una respuesta del cliente pgina 405. Encontrar el nmero de identidad de una tarea de RAPID Message Queue o de un cliente de Robot Application Builder. Extraer los datos de encabezado de un rmqmessage Extraer los datos de un rmqmessage Ordenar y habilitar interrupciones para un tipo de dato en concreto Obtener el nombre de ranura de una identidad de ranura especificada Vaciar la cola de mensajes de RAPID RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura en la pgina 387. RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ en la pgina 395. RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ en la pgina 392. IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato en la pgina 173. RMQGetSlotName - Obtener el nombre de un cliente de RMQ en la pgina 1013. RMQEmptyQueue - Vaca la cola de mensajes de RAPID en la pgina 385rmqmessage - Mensaje de RAPID Message Queue en la pgina 1237. RMQGetMessage - Obtener un mensaje de RMQ en la pgina 389.

Obtener el primer mensaje de una cola de RAPID Message Queue

400

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.142. RMQSendMessage - Enviar un mensaje de datos de RMQ FlexPendant Interface, PC Interface, or Multitasking

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 402. 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 401

1 Instrucciones
1.142. RMQSendMessage - Enviar un mensaje de datos de RMQ FlexPendant Interface, PC Interface, or Multitasking Continuacin
[\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. 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 RECORD msgrec num x; num y; ENDRECORD PROC main() 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

VAR rmqslot destinationSlot;

Contina en la pgina siguiente


402 3HAC16581-5 Revisin: K

1 Instrucciones
1.142. RMQSendMessage - Enviar un mensaje de datos de RMQ FlexPendant Interface, PC Interface, or Multitasking Continuacin
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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. La cola de mensajes de destino est llena. 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.

ERR_RMQ_FULL ERR_RMQ_INVALID

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).

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 403

1 Instrucciones
1.142. RMQSendMessage - Enviar un mensaje de datos de RMQ FlexPendant Interface, PC Interface, or Multitasking Continuacin Sintaxis
RMQSendMessage [ Slot := ] < variable (VAR) of rmqslot > , [ SendData := ] < reference (REF) of anytype > [ \ UserDef := < expression (IN) of num > ] ;

Informacin relacionada Para obtener ms informacin sobre


Descripcin de la funcionalidad de RAPID Message Queue Encontrar el nmero de identidad de una tarea de RAPID Message Queue o de un cliente de Robot Application Builder Obtener el primer mensaje de una cola de RAPID Message Queue.

Consulte
Application manual - Robot communication and I/O control, seccin RAPID Message Queue. RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura en la pgina 387 RMQGetMessage - Obtener un mensaje de RMQ en la pgina 389

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 esperar una respuesta del cliente pgina 405 Extraer los datos de encabezado de un rmqmessage Extraer los datos de un rmqmessage Ordenar y habilitar interrupciones para un tipo de dato en concreto Obtener el nombre de ranura de una identidad de ranura especificada RMQ Slot RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ en la pgina 395 RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ en la pgina 392 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato en la pgina 173 RMQGetSlotName - Obtener el nombre de un cliente de RMQ en la pgina 1013
Copyright 2004-2011 ABB. Reservados todos los derechos.

rmqslot - Nmero de identidad de un cliente de RMQ en la pgina 1238

404

3HAC16581-5 Revisin: K

1 Instrucciones
1.143. RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta FlexPendant Interface, PC Interface, or Multitasking

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 407. 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;

Copyright 2004-2011 ABB. Reservados todos los derechos.

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 Contina en la pgina siguiente
3HAC16581-5 Revisin: K 405

1 Instrucciones
1.143. RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta FlexPendant Interface, PC Interface, or Multitasking Continuacin 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 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


406 3HAC16581-5 Revisin: K

1 Instrucciones
1.143. RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta FlexPendant Interface, PC Interface, or Multitasking 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). Ms ejemplos A continuacin aparecen ms ejemplos de cmo usar la instruccin RMQSendWait.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 407

1 Instrucciones
1.143. RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta FlexPendant Interface, PC Interface, or Multitasking Continuacin
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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. La cola de mensajes de destino est llena. 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. No se ha recibido ninguna respuesta dentro del tiempo lmite. Este error se genera si el mensaje no es vlido. Esto puede ocurrir por ejemplo si una aplicacin de PC enva un mensaje daado.

ERR_RMQ_FULL ERR_RMQ_INVALID

ERR_RMQ_TIMEOUT ERR_RMQ_INVMSG

Contina en la pgina siguiente


408 3HAC16581-5 Revisin: K

1 Instrucciones
1.143. RMQSendWait - Enviar un mensaje de datos de RMQ y esperar una respuesta FlexPendant Interface, PC Interface, or Multitasking Continuacin 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


Descripcin de la funcionalidad de RAPID Message Queue Encontrar el nmero de identidad de una tarea de RAPID Message Queue o de un cliente de Robot Application Builder

Consulte
Application manual - Robot communication and I/O control, seccin RAPID Message Queue. RMQFindSlot - Buscar una identidad de ranura para el nombre de ranura en la pgina 387

Copyright 2004-2011 ABB. Reservados todos los derechos.

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 401 Obtener el primer mensaje de una cola de RAPID Message Queue. Extraer los datos de encabezado de un rmqmessage Extraer los datos de un rmqmessage Ordenar y habilitar interrupciones para un tipo de dato en concreto Obtener el nombre de ranura de una identidad de ranura especificada RMQ Slot RMQ Message RMQGetMessage - Obtener un mensaje de RMQ en la pgina 389 RMQGetMsgHeader - Obtener informacin de encabezado de un mensaje de RMQ en la pgina 395 RMQGetMsgData - Obtener la parte de datos de un mensaje de RMQ en la pgina 392 IRMQMessage - Ordenar interrupciones de RMQ para un tipo de dato en la pgina 173 RMQGetSlotName - Obtener el nombre de un cliente de RMQ en la pgina 1013 rmqslot - Nmero de identidad de un cliente de RMQ en la pgina 1238 rmqmessage - Mensaje de RAPID Message Queue en la pgina 1237

3HAC16581-5 Revisin: K

409

1 Instrucciones
1.144. Save - Guarda un mdulo de programa RobotWare - OS

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 411. 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]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.


[\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.

Contina en la pgina siguiente


410 3HAC16581-5 Revisin: K

1 Instrucciones
1.144. Save - Guarda un mdulo de programa RobotWare - OS Continuacin
[\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.


Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 411

1 Instrucciones
1.144. Save - Guarda un mdulo de programa RobotWare - OS 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>] ;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Tareas de programa

Consulte
taskid - Identificacin de tareas en la pgina 1270

412

3HAC16581-5 Revisin: K

1 Instrucciones
1.145. SCWrite - Enva los datos de la variable a una aplicacin cliente PC interface/backup

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 SCWrite. 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.145. SCWrite - Enva los datos de la variable a una aplicacin cliente PC interface/backup Continuacin 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 YYYYYY Imposible enviar

Donde YYYY es el

nombre de la variable. 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.

Contina en la pgina siguiente


414 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.145. SCWrite - Enva los datos de la variable a una aplicacin cliente PC interface/backup Continuacin
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. 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:

Copyright 2004-2011 ABB. Reservados todos los derechos.

xx0500002139

3HAC16581-5 Revisin: K

415

1 Instrucciones
1.146. SearchC - Realiza una bsqueda en crculo usando el robot RobotWare - OS

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 420. Ejemplo 1 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

SearchC di1, 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] SearchPoint CirPoint ToPoint [\ID] Speed [\V] | [\T] Tool [\WObj] [\Corr]

Contina en la pgina siguiente


416 3HAC16581-5 Revisin: K

1 Instrucciones
1.146. SearchC - Realiza una bsqueda en crculo usando el robot RobotWare - OS Continuacin
[ \Stop ]

Stiff Stop 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


Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 417

1 Instrucciones
1.146. SearchC - Realiza una bsqueda en crculo usando el robot RobotWare - OS Continuacin
[ \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) 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.
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).

Contina en la pgina siguiente


418 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.146. SearchC - Realiza una bsqueda en crculo usando el robot RobotWare - OS Continuacin
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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

[ \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.
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. Contina en la pgina siguiente
3HAC16581-5 Revisin: K 419

1 Instrucciones
1.146. SearchC - Realiza una bsqueda en crculo usando el robot RobotWare - OS Continuacin
[ \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. 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).

xx0500002237

Ms ejemplos A continuacin aparecen ms ejemplos de cmo usar la instruccin SearchC. Ejemplo 1


SearchC \Sup, di1\Flanks, sp, cirpoint, p10, v100, probe;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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). Contina en la pgina siguiente
420 3HAC16581-5 Revisin: K

1 Instrucciones
1.146. SearchC - Realiza una bsqueda en crculo usando el robot RobotWare - OS Continuacin 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.

xx0500002238

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 421

1 Instrucciones
1.146. SearchC - Realiza una bsqueda en crculo usando el robot RobotWare - OS Continuacin 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.

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


422 3HAC16581-5 Revisin: K

1 Instrucciones
1.146. SearchC - Realiza una bsqueda en crculo usando el robot RobotWare - OS Continuacin Sintaxis
SearchC [ \ Stop, ] | [ \ PStop ,] | [ \ SStop , ] | [ \ Sup , ] [ Signal:= ] < variable (VAR) of signaldi > [\ Flanks], [ 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 Consulte sobre


Bsquedas lineales Escritura en una entrada de correccin Mueve el robot en crculo Movimiento circular
Copyright 2004-2011 ABB. Reservados todos los derechos.

SearchL - Realiza una bsqueda lineal usando el robot en la pgina 431 CorrWrite - Escribe en un generador de correcciones en la pgina 79 MoveC - Mueve el robot en crculo en la pgina 244 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Posicionamiento durante la ejecucin del programa speeddata - Datos de velocidad en la pgina 1250 tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292 Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Recuperacin en caso de error Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S

Definicin de velocidad Definicin de herramientas Definicin de objetos de trabajo Utilizacin de gestores de errores

Movimiento en general

3HAC16581-5 Revisin: K

423

1 Instrucciones
1.147. SearchExtJ - Busca con una o varias unidades mecnicas sin TCP RobotWare - OS

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 427. Ejemplo 1
SearchExtJ di1, searchp, jpos10, vrot20;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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] SearchJointPos ToJointPos [\ID] [\UseEOffs] Speed [\T] [ \Stop ]

Stiff Stop Tipo de dato:switch 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. Contina en la pgina siguiente
424 3HAC16581-5 Revisin: K

1 Instrucciones
1.147. SearchExtJ - Busca con una o varias unidades mecnicas sin TCP RobotWare - OS Continuacin
[ \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):
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.147. SearchExtJ - Busca con una o varias unidades mecnicas sin TCP RobotWare - OS Continuacin
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.
[ \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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


426 3HAC16581-5 Revisin: K

1 Instrucciones
1.147. SearchExtJ - Busca con una o varias unidades mecnicas sin TCP RobotWare - OS Continuacin 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. 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).

xx0500002243

Ms ejemplos A continuacin aparecen ms ejemplos de cmo usar la instruccin SearchExtJ. Ejemplo 1


SearchExtJ \Sup, di1\Flanks, searchp,jpos10, vrot20;
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 427

1 Instrucciones
1.147. SearchExtJ - Busca con una o varias unidades mecnicas sin TCP RobotWare - OS Continuacin 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 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; ... SearchExtJ \Stop, di1, sp, jpos20, vrot5; ... ERROR IF ERRNO=ERR_WHLSEARCH THEN StorePath; MoveExtJ jpos10, vrot50, fine; RestoPath; ClearPath; StartMove; RETRY;
Copyright 2004-2011 ABB. Reservados todos los derechos.

MoveExtJ jpos10, vrot100, fine;

Contina en la pgina siguiente


428 3HAC16581-5 Revisin: K

1 Instrucciones
1.147. SearchExtJ - Busca con una o varias unidades mecnicas sin TCP RobotWare - OS Continuacin
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. Limitaciones Limitaciones de bsqueda con movimiento sincronizado y coordinado:
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 429

1 Instrucciones
1.147. SearchExtJ - Busca con una o varias unidades mecnicas sin TCP RobotWare - OS Continuacin Sintaxis
SearchExtJ [ \ Stop , ] | [ \ PStop ,] | [ \ SStop ,] | [ \ Sup , ] [ Signal := ] < variable (VAR) of signaldi > [\ Flanks], [ 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


Movimiento de unidades mecnicas sin TCP Definicin de jointtarget Definicin de velocidad

Consulte
MoveExtJ - Mueve una o varias unidades mecnicas sin TCP en la pgina 259 jointtarget - Datos de posicin de eje en la pgina 1193 speeddata - Datos de velocidad en la pgina 1250

Utilizacin de gestores de errores Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Recuperacin en caso de error Movimiento en general Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S

430

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.148. SearchL - Realiza una bsqueda lineal usando el robot RobotWare - OS

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 435. Ejemplo 1
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 431

1 Instrucciones
1.148. SearchL - Realiza una bsqueda lineal usando el robot RobotWare - OS Continuacin Argumentos
SearchL [\Stop] | [\PStop] | [\SStop] | [\Sup] Signal [\Flanks] SearchPoint ToPoint [\ID] Speed [\V] | [\T] Tool [\WObj] [\Corr] [ \Stop ]

Stiff Stop 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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


432 3HAC16581-5 Revisin: K

1 Instrucciones
1.148. SearchL - Realiza una bsqueda lineal usando el robot RobotWare - OS Continuacin
[ \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) 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.
SearchPoint

Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 433

1 Instrucciones
1.148. SearchL - Realiza una bsqueda lineal usando el robot RobotWare - OS Continuacin
[ \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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.148. SearchL - Realiza una bsqueda lineal usando el robot RobotWare - OS Continuacin 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).

xx0500002243

Ms ejemplos A continuacin aparecen ms ejemplos de cmo usar la instruccin SearchL. Ejemplo 1


SearchL \Sup, di1\Flanks, sp, p10, v100, probe;

Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 435

1 Instrucciones
1.148. SearchL - Realiza una bsqueda lineal usando el robot RobotWare - OS Continuacin 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.

xx0500002244

La figura siguiente muestra que no se ha detectado ningn xito de bsqueda porque se usaron datos de zona errneos.

xx0500002245

La figura siguiente muestra que no se ha detectado ningn xito de bsqueda porque se usaron datos de zona errneos.

xx0500002246

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

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.148. SearchL - Realiza una bsqueda lineal usando el robot RobotWare - OS Continuacin 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 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.

Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 437

1 Instrucciones
1.148. SearchL - Realiza una bsqueda lineal usando el robot RobotWare - OS 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


438 3HAC16581-5 Revisin: K

1 Instrucciones
1.148. SearchL - Realiza una bsqueda lineal usando el robot RobotWare - OS Continuacin Sintaxis
SearchL [ \ Stop , ] | [ \ PStop ,] | [ \ SStop ,] | [ \ Sup , ] [ Signal := ] < variable (VAR) of signaldi > [\ Flanks], [ 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


Bsquedas circulares Escritura en una entrada de correccin Movimiento lineal del robot Movimiento lineal

Consulte
SearchC - Realiza una bsqueda en crculo usando el robot en la pgina 416 CorrWrite - Escribe en un generador de correcciones en la pgina 79 MoveL - Mueve el robot siguiendo una trayectoria lineal en la pgina 275 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa speeddata - Datos de velocidad en la pgina 1250 tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292

Copyright 2004-2011 ABB. Reservados todos los derechos.

Definicin de velocidad Definicin de herramientas Definicin de objetos de trabajo

Utilizacin de gestores de errores Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Recuperacin en caso de error Movimiento en general Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S

3HAC16581-5 Revisin: K

439

1 Instrucciones
1.149. SenDevice - Establece una conexin a un dispositivo de sensor Sensor Interface

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: 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; 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Name COM1: Connector COM1 Baudrate 19200

COM_TRP: Name sen1: Type RTP1 PhyChannel COM1

CONST num ZCoord := 10;

Contina en la pgina siguiente


440 3HAC16581-5 Revisin: K

1 Instrucciones
1.149. SenDevice - Establece una conexin a un dispositivo de sensor Sensor Interface Continuacin Argumentos
SenDevice device device

Tipo de dato: string El nombre del dispositivo de E/S configurado en sio.cfg para el sensor utilizado. Sintaxis
ReadBlock [ device := ] < expression(IN) of string>, [ BlockNo := ] < expression (IN) of num > , [ FileName := ] < expression (IN) of string > ;

Informacin relacionada Para obtener ms informacin sobre


Escritura de una variable de sensor Lectura de una variable de sensor

Consulte
WriteVar - Escribe una variable en la pgina 758 ReadVar - Lee una variable de un dispositivo en la pgina 1008

Escritura de un bloque de datos WriteBlock - Escribe un bloque de datos en un dispositivo de sensor en la pgina 747 Configuracin de la comunicacin del sensor Manual de referencia tcnica - Parmetros del sistema, seccin Communication

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

441

1 Instrucciones
1.150. Set - Activa una seal digital de salida RobotWare - OS

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 a 1 la seal weldon. 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 > ;

Contina en la pgina siguiente


442 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.150. Set - Activa una seal digital de salida RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Cambio de una seal digital de salida a cero Cambio del valor de una seal digital de salida Instrucciones de entrada/salida

Consulte
Reset - Pone a cero una seal digital de salida en la pgina 374 SetDO - Cambia el valor de una seal digital de salida en la pgina 456 Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Seales de entrada y salida Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Principios de E/S Manual de referencia tcnica - Parmetros del sistema

Funcionalidad de entrada/salida en general Configuracin de E/S

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

443

1 Instrucciones
1.151. SetAllDataVal - Establece un valor en todos los objetos de datos de un conjunto definido RobotWare - OS

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 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.

Contina en la pgina siguiente


444 3HAC16581-5 Revisin: K

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 RobotWare - OS Continuacin 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


Definicin de un conjunto de smbolos en una sesin de bsqueda Obtencin del siguiente smbolo coincidente Obtencin del valor de un objeto de datos Asignacin del valor de un objeto de datos El tipo de datos relacionado datapos

Copyright 2004-2011 ABB. Reservados todos los derechos.

Consulte
SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda en la pgina 448 GetNextSym - Obtiene el siguiente smbolo coincidente en la pgina 895 GetDataVal - Obtiene el valor de un objeto de datos en la pgina 112 SetDataVal - Establece el valor de un objeto de datos en la pgina 453 datapos - Inclusin de un bloque para un objeto de datos en la pgina 1165

3HAC16581-5 Revisin: K

445

1 Instrucciones
1.152. SetAO - Cambia el valor de una seal analgica de salida RobotWare - OS

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 447. 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

xx0500002408

Contina en la pgina siguiente


446 3HAC16581-5 Revisin: K

1 Instrucciones
1.152. SetAO - Cambia el valor de una seal analgica de salida RobotWare - OS 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.


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 sobre


Instrucciones de entrada/salida

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Seales de entrada y salida

Copyright 2004-2011 ABB. Reservados todos los derechos.

Funcionalidad de entrada/salida en Manual de referencia tcnica - Descripcin general de general RAPID, 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: K

447

1 Instrucciones
1.153. SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda RobotWare - OS

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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


448 3HAC16581-5 Revisin: K

1 Instrucciones
1.153. SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda RobotWare - OS 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
. [s]

Significado
Cualquier carcter individual. Cualquier carcter individual del conjunto no vaco s, donde s es una secuencia de caracteres. Los rangos pueden especificarse como c-c. Cualquier carcter individual no perteneciente al conjunto s. Cero o ms casos de la expresin regular r. Uno varios casos de la expresin regular r. Cero o un caso de la expresin regular r. La expresin regular r. Se utiliza para separar una expresin regular de otra. Las expresiones regulares r o r'. Cualquier secuencia de caracteres (cero, uno o varios caracteres).

[^s] r* r+ r? (r) r | r .*

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Tipo de dato: switch Acepta smbolos de variables persistentes (PERS).


[ \VarSym ]

Variable Symbols Tipo de dato: switch Acepta smbolos de variables (VAR).

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 449

1 Instrucciones
1.153. SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda RobotWare - OS Continuacin
[ \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. 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. Contina en la pgina siguiente
450 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.153. SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda RobotWare - OS Continuacin
[ \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. 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] ;

Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 451

1 Instrucciones
1.153. SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda RobotWare - OS Continuacin Informacin relacionada Para obtener ms informacin sobre
Obtencin del siguiente smbolo coincidente

Consulte
GetNextSym - Obtiene el siguiente smbolo coincidente en la pgina 895

Obtencin del valor de un objeto de GetDataVal - Obtiene el valor de un objeto de datos en datos la pgina 112 Asignacin del valor de varios objetos de datos El tipo de datos relacionado datapos SetAllDataVal - Establece un valor en todos los objetos de datos de un conjunto definido en la pgina 444 datapos - Inclusin de un bloque para un objeto de datos en la pgina 1165

452

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.154. SetDataVal - Establece el valor de un objeto de datos RobotWare - OS

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};
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.154. SetDataVal - Establece el valor de un objeto de datos RobotWare - OS 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. No es posible asignar un valor a una variable declarada como LOCAL en un mdulo de RAPID incorporado. Contina en la pgina siguiente
454 3HAC16581-5 Revisin: K

1 Instrucciones
1.154. SetDataVal - Establece el valor de un objeto de datos RobotWare - OS Continuacin 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


Definicin de un conjunto de smbolos en una sesin de bsqueda Obtencin del siguiente smbolo coincidente Obtencin del valor de un objeto de datos

Consulte
SetDataSearch - Definir el conjunto de smbolos de una secuencia de bsqueda en la pgina 448 GetNextSym - Obtiene el siguiente smbolo coincidente en la pgina 895 GetDataVal - Obtiene el valor de un objeto de datos en la pgina 112

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

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

455

1 Instrucciones
1.155. SetDO - Cambia el valor de una seal digital de salida RobotWare - OS

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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


456 3HAC16581-5 Revisin: K

1 Instrucciones
1.155. SetDO - Cambia el valor de una seal digital de salida RobotWare - OS Continuacin
Value

Tipo de dato: dionum El valor deseado para la seal, 0 1. Valor especificado


0 Cualquier valor excepto 0

Cambiar la salida digital a


0 1

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.


Copyright 2004-2011 ABB. Reservados todos los derechos.

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


Instrucciones de entrada/salida

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Seales de entrada y salida Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Principios de E/S Manual de referencia tcnica - Parmetros del sistema

Funcionalidad de entrada/salida en general Configuracin de E/S

3HAC16581-5 Revisin: K

457

1 Instrucciones
1.156. SetGO - Cambia el valor de un grupo de seales digitales de salida RobotWare - OS

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;

Se cambia la seal go2 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. 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.

Contina en la pgina siguiente


458 3HAC16581-5 Revisin: K

1 Instrucciones
1.156. SetGO - Cambia el valor de un grupo de seales digitales de salida RobotWare - OS Continuacin
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Copyright 2004-2011 ABB. Reservados todos los derechos.

Valor doble permitido


0-1 0-3 0-7 0-15 0-31 0-63 0-127 0-255 0-511 0-1023 0-2047 0-4095 0-8191 0-16383 0-32767 0-65535 0-131071 0-262143 0-524287 0-1048575 0-2097151 0-4194303 0-8388607 0-16777215 0-33554431 0-67108863 0-134217727 0-268435455 0-536870911 0-1073741823 0-2147483647 0-4294967295

0-1 0-3 0-7 0-15 0-31 0-63 0-127 0-255 0-511 0-1023 0-2047 0-4095 0-8191 0-16383 0-32767 0-65535 0-131071 0-262143 0-524287 0-1048575 0-2097151 0-4194303 0-8388607 * * * * * * * * *

20 21 22 23 24 25 26 27 28 29 30 31 32

*) 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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 459

1 Instrucciones
1.156. SetGO - Cambia el valor de un grupo de seales digitales de salida RobotWare - OS Continuacin 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) of num > , ] [ Signal := ] < variable (VAR) of signalgo > , [ Value := ] < expression (IN) of num > | [ Dvalue := ] < expression (IN) of dnum > ;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Otras instrucciones de entrada y salida

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Seales de entrada y salida Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Principios de E/S Manual de referencia tcnica - Parmetros del sistema

Funcionalidad de entrada/salida en general Configuracin de E/S (parmetros del sistema)

460

3HAC16581-5 Revisin: K

1 Instrucciones
1.157. SetSysData - Establece datos del sistema RobotWare - OS

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:
Copyright 2004-2011 ABB. Reservados todos los derechos.

Tipo de dato
tooldata wobjdata loaddata

Tipo de dato de sistema


Herramienta Objeto de trabajo 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. 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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 461

1 Instrucciones
1.157. SetSysData - Establece datos del sistema RobotWare - OS Continuacin Sintaxis
SetSysData [ SourceObject:=] < persistent(PERS) of anytype> [\ObjectName:= < expression (IN) of string> ] ;

Informacin relacionada Para obtener ms informacin sobre


Definicin de herramientas Definicin de objetos de trabajo Definicin de una carga til Obtencin de datos del sistema

Consulte
tooldata - Datos de herramientas en la pgina 1274 wobjdata - Datos del objeto de trabajo en la pgina 1292 loaddata - Datos de carga en la pgina 1196 GetSysData - Obtiene datos del sistema en la pgina 115

462

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.158. SingArea - Define el mtodo de interpolacin alrededor de puntos singulares RobotWare - OS

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]

Copyright 2004-2011 ABB. Reservados todos los derechos.

[ \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


3HAC16581-5 Revisin: K 463

1 Instrucciones
1.158. SingArea - Define el mtodo de interpolacin alrededor de puntos singulares RobotWare - OS 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. Sintaxis
SingArea [ \ Wrist ] | [\ Off ] ;

En los arranques en fro. Cuando se carga un nuevo programa. Cuando se inicia la ejecucin del programa desde el principio

Informacin relacionada Para obtener ms informacin sobre


Singularidad

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Singularidades Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S Posicionamiento durante la ejecucin del programa
Copyright 2004-2011 ABB. Reservados todos los derechos.

Interpolacin

464

3HAC16581-5 Revisin: K

1 Instrucciones
1.159. SkipWarn - Omitir el ltimo aviso RobotWare-OS

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 ;
Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Recuperacin en caso de error

Consulte
Manual de referencia tcnica - Descripcin general de RAPID, seccin Resumen sobre RAPID - Recuperacin en caso de error Manual de referencia tcnica - Descripcin general de RAPID, seccin Caractersticas bsicas - Recuperacin en caso de error errnum - Nmero de error en la pgina 1172

Nmero de error

3HAC16581-5 Revisin: K

465

1 Instrucciones
1.160. SocketAccept - Acepta una conexin entrante Socket Messaging

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 467. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.

Contina en la pgina siguiente


466 3HAC16581-5 Revisin: K

1 Instrucciones
1.160. SocketAccept - Acepta una conexin entrante Socket Messaging Continuacin
[\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 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 467

1 Instrucciones
1.160. SocketAccept - Acepta una conexin entrante Socket Messaging Continuacin
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 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 ERR_SOCK_TIMEOUT El zcalo est cerrado (ha sido cerrado o no ha sido creado). Use SocketCreate para crear un nuevo zcalo. 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


Comunicacin con zcalos en general Creacin de un nuevo zcalo Conexin a un ordenador remoto (slo cliente) Envo de datos a un ordenador remoto

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

Application manual - Robot communication and I/ O control, seccin Socket Messaging SocketCreate - Crea un nuevo zcalo en la pgina 476 SocketConnect - Establece una conexin a un ordenador remoto en la pgina 473 SocketSend - Enva datos a un ordenador remoto en la pgina 485

Recepcin de datos desde un ordenador SocketReceive - Recibe datos de un ordenador remoto remoto en la pgina 480 Cierre del zcalo SocketClose - Cierra un zcalo en la pgina 471 Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin IP y puerto en la pgina 469 Cmo permanecer a la escucha de conexiones (slo servidor) Obtencin del estado actual del zcalo Aplicacin de ejemplo de zcalos de cliente Ejemplo de aplicacin de zcalos de servidor SocketListen - Permanece a la escucha de conexiones entrantes en la pgina 478 SocketGetStatus - Obtiene el estado actual de un zcalo en la pgina 1025 SocketSend - Enva datos a un ordenador remoto en la pgina 485 SocketReceive - Recibe datos de un ordenador remoto en la pgina 480

468

3HAC16581-5 Revisin: K

1 Instrucciones
1.161. SocketBind - Enlaza un zcalo a mi direccin IP y puerto Socket Messaging

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


3HAC16581-5 Revisin: K 469

1 Instrucciones
1.161. SocketBind - Enlaza un zcalo a mi direccin IP y puerto Socket Messaging 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 ERR_SOCK_ADDR_INUSE El zcalo est cerrado (ha sido cerrado o no ha sido creado). Utilice SocketCreate para crear un nuevo zcalo. 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


Comunicacin con zcalos en general Creacin de un nuevo zcalo Conexin a un ordenador remoto (slo cliente) Envo de datos a un ordenador remoto

Consulte
Application manual - Robot communication and I/ O control, seccin Socket Messaging SocketCreate - Crea un nuevo zcalo en la pgina 476 SocketConnect - Establece una conexin a un ordenador remoto en la pgina 473 SocketSend - Enva datos a un ordenador remoto en la pgina 485

Recepcin de datos desde un ordenador SocketReceive - Recibe datos de un ordenador remoto remoto en la pgina 480 Cierre del zcalo Cmo permanecer a la escucha de conexiones (slo servidor) SocketClose - Cierra un zcalo en la pgina 471 SocketListen - Permanece a la escucha de conexiones entrantes en la pgina 478
Copyright 2004-2011 ABB. Reservados todos los derechos.

Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante en la pgina 466 Obtencin del estado actual del zcalo Aplicacin de ejemplo de zcalos de cliente Aplicacin de ejemplo de zcalos de servidor SocketGetStatus - Obtiene el estado actual de un zcalo en la pgina 1025 SocketSend - Enva datos a un ordenador remoto en la pgina 485 SocketReceive - Recibe datos de un ordenador remoto en la pgina 480

470

3HAC16581-5 Revisin: K

1 Instrucciones
1.162. SocketClose - Cierra un zcalo Socket Messaging

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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


3HAC16581-5 Revisin: K 471

1 Instrucciones
1.162. SocketClose - Cierra un zcalo Socket Messaging Continuacin Informacin relacionada Para obtener ms informacin sobre
Comunicacin con zcalos en general Creacin de un nuevo zcalo Conexin a un ordenador remoto (slo cliente) Envo de datos a un ordenador remoto

Consulte
Application manual - Robot communication and I/ O control, seccin Socket Messaging SocketCreate - Crea un nuevo zcalo en la pgina 476 SocketConnect - Establece una conexin a un ordenador remoto en la pgina 473 SocketSend - Enva datos a un ordenador remoto en la pgina 485

Recepcin de datos desde un ordenador SocketReceive - Recibe datos de un ordenador remoto remoto en la pgina 480 Enlazamiento de un zcalo (slo servidor) Cmo permanecer a la escucha de conexiones (slo servidor) Aceptacin de conexiones (slo servidor) Obtencin del estado actual del zcalo Aplicacin de ejemplo de zcalos de cliente Aplicacin de ejemplo de zcalos de servidor SocketBind - Enlaza un zcalo a mi direccin IP y puerto en la pgina 469 SocketListen - Permanece a la escucha de conexiones entrantes en la pgina 478 SocketAccept - Acepta una conexin entrante en la pgina 466t SocketGetStatus - Obtiene el estado actual de un zcalo en la pgina 1025 SocketSend - Enva datos a un ordenador remoto en la pgina 485 SocketReceive - Recibe datos de un ordenador remoto en la pgina 480

472

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.163. SocketConnect - Establece una conexin a un ordenador remoto Socket Messaging

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 474. 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. 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.

Contina en la pgina siguiente


3HAC16581-5 Revisin: K 473

1 Instrucciones
1.163. SocketConnect - Establece una conexin a un ordenador remoto Socket Messaging Continuacin 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 ERR_SOCK_TIMEOUT El zcalo est cerrado (ha sido cerrado o no ha sido creado). Utilice SocketCreate para crear un nuevo zcalo. 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


474 3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.163. SocketConnect - Establece una conexin a un ordenador remoto Socket Messaging Continuacin Informacin relacionada Para obtener ms informacin sobre
Comunicacin con zcalos en general Creacin de un nuevo zcalo Envo de datos a un ordenador remoto

Descrito en:
Application manual - Robot communication and I/O control SocketCreate - Crea un nuevo zcalo en la pgina 476 SocketSend - Enva datos a un ordenador remoto en la pgina 485

Recepcin de datos desde un ordenador SocketReceive - Recibe datos de un ordenador remoto remoto en la pgina 480 Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin IP y puerto en la pgina 469 Cmo permanecer a la escucha de conexiones (slo servidor) SocketListen - Permanece a la escucha de conexiones entrantes en la pgina 478

Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante en la pgina 466 Obtencin del estado actual del zcalo Aplicacin de ejemplo de zcalos de cliente Aplicacin de ejemplo de zcalos de servidor SocketGetStatus - Obtiene el estado actual de un zcalo en la pgina 1025 SocketSend - Enva datos a un ordenador remoto en la pgina 485 SocketReceive - Recibe datos de un ordenador remoto en la pgina 480

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

475

1 Instrucciones
1.164. SocketCreate - Crea un nuevo zcalo Socket Messaging

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.
SocketCreate y SocketClose.
Copyright 2004-2011 ABB. Reservados todos los derechos.

El zcalo no debe estar usndose. El zcalo est en uso entre las instrucciones

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

Contina en la pgina siguiente


476 3HAC16581-5 Revisin: K

1 Instrucciones
1.164. SocketCreate - Crea un nuevo zcalo Socket Messaging Continuacin Informacin relacionada Para obtener ms informacin sobre
Comunicacin con zcalos en general Conexin a un ordenador remoto (slo cliente) Envo de datos a un ordenador remoto Recepcin de datos desde un ordenador remoto Cierre del zcalo

Consulte
Application manual - Robot communication and I/O control, seccin Socket Messaging SocketConnect - Establece una conexin a un ordenador remoto en la pgina 473 SocketSend - Enva datos a un ordenador remoto en la pgina 485 SocketReceive - Recibe datos de un ordenador remoto en la pgina 480 SocketClose - Cierra un zcalo en la pgina 471

Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin IP y puerto en la pgina 469 Cmo permanecer a la escucha de conexiones (slo servidor) SocketListen - Permanece a la escucha de conexiones entrantes en la pgina 478

Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante en la pgina 466 Obtencin del estado actual del zcalo Aplicacin de ejemplo de zcalos de cliente Aplicacin de ejemplo de zcalos de servidor SocketGetStatus - Obtiene el estado actual de un zcalo en la pgina 1025 SocketSend - Enva datos a un ordenador remoto en la pgina 485 SocketReceive - Recibe datos de un ordenador remoto en la pgina 480

Copyright 2004-2011 ABB. Reservados todos los derechos.

3HAC16581-5 Revisin: K

477

1 Instrucciones
1.165. SocketListen - Permanece a la escucha de conexiones entrantes Socket Messaging

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
Copyright 2004-2011 ABB. Reservados todos los derechos.

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. 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.

Contina en la pgina siguiente


478 3HAC16581-5 Revisin: K

1 Instrucciones
1.165. SocketListen - Permanece a la escucha de conexiones entrantes Socket Messaging Continuacin Sintaxis
SocketListen [ Socket := ] < variable (VAR) of socketdev > ;

Informacin relacionada Para obtener ms informacin sobre


Comunicacin con zcalos en general Creacin de un nuevo zcalo Conexin a un ordenador remoto (slo cliente) Envo de datos a un ordenador remoto Recepcin de datos desde un ordenador remoto Cierre del zcalo

Consulte
Application manual - Robot communication and I/O control, seccin Socket Messaging SocketCreate - Crea un nuevo zcalo en la pgina 476 SocketConnect - Establece una conexin a un ordenador remoto en la pgina 473 SocketSend - Enva datos a un ordenador remoto en la pgina 485 SocketReceive - Recibe datos de un ordenador remoto en la pgina 480 SocketClose - Cierra un zcalo en la pgina 471

Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin IP y puerto en la pgina 469 Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante en la pgina 466 Obtencin del estado actual del zcalo Aplicacin de ejemplo de zcalos de cliente Aplicacin de ejemplo de zcalos de servidor
Copyright 2004-2011 ABB. Reservados todos los derechos.

SocketGetStatus - Obtiene el estado actual de un zcalo en la pgina 1025 SocketSend - Enva datos a un ordenador remoto en la pgina 485 SocketReceive - Recibe datos de un ordenador remoto en la pgina 480

3HAC16581-5 Revisin: K

479

1 Instrucciones
1.166. SocketReceive - Recibe datos de un ordenador remoto Socket Messaging

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 482. 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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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.
[ \ReadNoOfBytes ]

Read number of Bytes Tipo de dato: num

Contina en la pgina siguiente


480 3HAC16581-5 Revisin: K

1 Instrucciones
1.166. SocketReceive - Recibe datos de un ordenador remoto Socket Messaging Continuacin 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:
[ \Time ]

Funcin StrLen con la variable del argumento \Str Funcin RawBytesLen con la variable del argumento \RawData

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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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
\Str \RawData \Data

Datos de entrada
1 carcter 1 rawbytes 1 byte

Datos de cable
1 byte (8 bits) 1 byte (8 bits) 1 byte (8 bits)

Datos de salida
1 carcter 1 rawbytes 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: K 481

1 Instrucciones
1.166. SocketReceive - Recibe datos de un ordenador remoto Socket Messaging 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
Copyright 2004-2011 ABB. Reservados todos los derechos.

Contina en la pgina siguiente


482 3HAC16581-5 Revisin: K

1 Instrucciones
1.166. SocketReceive - Recibe datos de un ordenador remoto Socket Messaging Continuacin 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. 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 ERR_SOCK_TIMEOUT El zcalo se cierra. Conexin interrumpida. 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 483

1 Instrucciones
1.166. SocketReceive - Recibe datos de un ordenador remoto Socket Messaging Continuacin Informacin relacionada Para obtener ms informacin sobre
Comunicacin con zcalos en general Creacin de un nuevo zcalo Conexin a un ordenador remoto (slo cliente) Envo de datos a un ordenador remoto Cierre del zcalo

Consulte
Application manual - Robot communication and I/ O control, seccin Socket Messaging SocketCreate - Crea un nuevo zcalo en la pgina 476 SocketConnect - Establece una conexin a un ordenador remoto en la pgina 473 SocketSend - Enva datos a un ordenador remoto en la pgina 485 SocketClose - Cierra un zcalo en la pgina 471

Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin IP y puerto en la pgina 469 Cmo permanecer a la escucha de conexiones (slo servidor) SocketListen - Permanece a la escucha de conexiones entrantes en la pgina 478

Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante en la pgina 466 Obtencin del estado actual del zcalo Aplicacin de ejemplo de zcalos de cliente SocketGetStatus - Obtiene el estado actual de un zcalo en la pgina 1025 SocketSend - Enva datos a un ordenador remoto en la pgina 485

484

3HAC16581-5 Revisin: K

Copyright 2004-2011 ABB. Reservados todos los derechos.

1 Instrucciones
1.167. SocketSend - Enva datos a un ordenador remoto Socket Messaging

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 486. 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


Copyright 2004-2011 ABB. Reservados todos los derechos.

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: K 485

1 Instrucciones
1.167. SocketSend - Enva datos a un ordenador remoto Socket Messaging 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
\Str \RawData \Data

Datos de entrada
1 carcter 1 rawbytes 1 byte

Datos de cable
1 byte (8 bits) 1 byte (8 bits) 1 byte (8 bits)

Datos de salida
1 carcter 1 rawbytes 1 byte

Es posible combinar los tipos de datos (string, rawbytes o array of byte) entre SocketSend y SocketReceive. 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;
Copyright 2004-2011 ABB. Reservados todos los derechos.

...

Contina en la pgina siguiente


486 3HAC16581-5 Revisin: K

1 Instrucciones
1.167. SocketSend - Enva datos a un ordenador remoto Socket Messaging Continuacin
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. 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.
Copyright 2004-2011 ABB. Reservados todos los derechos.

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

1 Instrucciones
1.167. SocketSend - Enva datos a un ordenador remoto Socket Messaging Continuacin 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


Comunicacin con zcalos en general Creacin de un nuevo zcalo Conexin a un ordenador remoto (slo cliente) Recepcin de datos desde un ordenador remoto Cierre del zcalo

Consulte
Application manual - Robot communication and I/O control, Socket Messaging SocketCreate - Crea un nuevo zcalo en la pgina 476 SocketConnect - Establece una conexin a un ordenador remoto en la pgina 473 SocketReceive - Recibe datos de un ordenador remoto en la pgina 480 SocketClose - Cierra un zcalo en la pgina 471

Enlazamiento de un zcalo (slo servidor) SocketBind - Enlaza un zcalo a mi direccin IP y puerto en la pgina 469 Cmo permanecer a la escucha de conexiones (slo servidor) SocketListen - Permanece a la escucha de conexiones entrantes en la pgina 478

Aceptacin de conexiones (slo servidor) SocketAccept - Acepta una conexin entrante en la pgina 466 Obtencin del estado actual del zcalo Aplicacin de ejemplo de zcalos de servidor Uso de caracteres no imprimibles (datos binarios) en literales de cadenas de caracteres. SocketGetStatus - Obtiene el estado actual de un zcalo en la pgina 1025 SocketReceive - Recibe datos de un ordenador remoto en la pgina 480 Technical reference manual - RAPID kernel, seccin String literals
Copyright 2004-2011 ABB. Reservados todos los derechos.

488

3HAC16581-5 Revisin: K

1 Instrucciones
1.168. SoftAct - Activa el servo suave RobotWare - OS

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 ]
Copyright 2004-2011 ABB. Reservados todos los derechos.

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 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%. Contina en la pgina siguiente
3HAC16581-5 Revisin: K 489

1 Instrucciones
1.168. SoftAct - Activa el servo suave RobotWare - OS Continuacin 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


Desactivacin del servo suave Comportamiento con el servo suave activado

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

SoftDeact - Desactiva el servo suave en la pgina 491 Manual de referencia tcnica - Descripcin general de RAPID, seccin Principios de movimiento y E/S - Posicionamiento durante la ejecucin del programa Application manual - Additional Axes and stand alone controller, seccin Axes Configuration - Soft servo

Configuracin de ejes externos

490

3HAC16581-5 Revisin: K

1 Instrucciones
1.169. SoftDeact - Desactiva el servo suave RobotWare - OS

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

Copyright 2004-2011 ABB. Reservados todos los derechos.

Informacin relacionada Para obtener ms informacin sobre


Activacin del servo suave

Consulte
SoftAct - Activa el servo suave en la pgina 489

3HAC16581-5 Revisin: K

491

1 Instrucciones
1.170. SpeedRefresh - El ajuste de velocidad para el movimiento en curso RobotWare - OS

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