0% encontró este documento útil (0 votos)
207 vistas199 páginas

Ri Ud3 Ud4

Este documento describe los objetivos y contenido de un curso sobre programación de robots industriales. Los objetivos incluyen programar robots utilizando técnicas de programación y procesamiento de datos, verificar el funcionamiento de robots y reparar averías en entornos industriales robotizados. El contenido cubre programación de robots, verificación de funcionamiento y reparación de averías. Se explican métodos de programación como programación en línea, fuera de línea, guiada y textual a diferentes niveles.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
207 vistas199 páginas

Ri Ud3 Ud4

Este documento describe los objetivos y contenido de un curso sobre programación de robots industriales. Los objetivos incluyen programar robots utilizando técnicas de programación y procesamiento de datos, verificar el funcionamiento de robots y reparar averías en entornos industriales robotizados. El contenido cubre programación de robots, verificación de funcionamiento y reparación de averías. Se explican métodos de programación como programación en línea, fuera de línea, guiada y textual a diferentes niveles.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UD3 Programación de robots industriales On-Line.

Objetivos:
- Programa robots, utilizado técnicas de programación y procesamiento de datos.
- Verifica el funcionamiento de robots, ajustando os dispositivos de control y aplicando as normas
de seguridad.
- Repara averías en ámbitos industriales robotizados, diagnostica disfunciones y elabora informes
de incidencias.

Contenido:
- Programación de robots.
- Verificación del funcionamiento de robots.
- Reparación de averías en contornos industriales robotizados.

UD3 Programación de robots industriales On-Line. 198


3.1.- Programación de robots.

Un robot industrial es básicamente un manipulador multifuncional reprogramable, lo cual permite su


adaptación de manera rápida y económica a diferentes aplicaciones. La programación de un robot se
puede definir como el proceso mediante el cual se le indica a éste la secuencia de acciones que deberá
llevar a cabo durante la realización de su tarea. Estas acciones consisten generalmente en moverse a
puntos predefinidos y manipular objetos del entorno.

3.1.1.- Entorno de programación.

Es de gran importancia para conseguir un aumento de productividad, contar con un entorno de


programación adecuado a las necesidades.

Programar las acciones de un manipulador es complicado en el sentido de que en todo momento existe
una interacción con el entorno, tratándose de un proceso continuo de prueba y error. Esta es la principal
causa que lleva a que las mayoría de los sistemas de programación de robots sean de tipo interpretado,
pudiéndose realizar un seguimiento paso a paso de lo programado en cada momento. Se evita así el
tedioso ciclo de editar-compilar-ejecutar muy costoso en tiempo. También es importante que exista una
buena monitorización continua del desarrollo del programa.

El modelo del entorno es la representación que tiene el robot de los objetos con los que interacciona.
Normalmente este modelo se limita a características geométricas: posición y orientación de los objetos, y
en ocasiones a su forma, dimensiones, peso, etc.

Actualmente se pueden distinguir dos tipos de programación de robots industriales atendiendo a su


entorno: programación In-Line.y programación Off-Line.

Programación On-Line.- Los puntos de programación del robot, se van introduciendo con la ayuda del
panel de control. El programador debe de estar cerca del área de movimiento del robot y el robot
almacena toda la información generada en la programación.

- Modo secuencial de operaciones.


- “Teach-In”, siempre se requiere robots operativos con las herramientas instaladas y marcas para
facilitar la programación.
- Tardanza en detección de errores.

Programación Off-Line.- Los programas se generan lejos del entorno del robot, generalmente desde un
ordenador con un tipo específico de software.

- Requiere un proceso de trabajo digital en la fase de diseño y simulación.


- No requiere de robots, ni de componentes físicos. Se emplean sistemas en 3D en celdas de
trabajo.
- Rápidas evaluaciones y optimizaciones.
- Mejor conocimiento del trabajo.

UD3 Programación de robots industriales On-Line. 199


3.1.2.- Métodos de programación On-Line.

Programación Programar un robot consiste en indicar paso por paso las diferentes acciones (moverse a un
punto, abrir o cerrar la pinza, etc.) que éste deberá realizar durante su funcionamiento, la flexibilidad en la
aplicación del robot y, por lo tanto, su utilidad van a depender en gran parte de las características de su
sistema de programación.

Actualmente no existe normalización en relación a los procedimientos de programación de robots, cada


fabricante desarrolla su método particular, el cual es válido solamente para sus propios robots. Sin
embargo, algunos han servido de modelo para el desarrollo de otros
.
Existen varios criterios para clasificar los métodos de programación. Algunos lo hacen según la potencia
del método, y otras lo hacen según el sistema utilizado para indicar la secuencia de acciones a realizar,
éste último es el más ilustrativo al momento de dar a conocer las alternativas existentes para programar un
robot.

Guiado Pasivo
Directo
Guiado Pasivo
Programación por Guiado Pasivo
Guiado Indirecto
Programación de
Guiado Básico
robots Guiado activo
Guiado Extendido
Nivel Robot
Programación
Nivel Objeto
textual
Nivel Tarea

3.1.2.1.- Programación por Guiado.

La programación por guiado o aprendizaje consiste en hacer realizar al robot, o a una maqueta del mismo,
la tarea, registrando las configuraciones adoptadas para su posterior repetición en forma automática.
Para guiar al robot por los puntos deseados se utilizan distintas soluciones:

Guiado Pasivo.- Si los actuadores del robot están desconectados y el programador aporta en forma directa
la energía para mover el robot, se habla de un guiado pasivo. Existe el guiado pasivo directo y el guiado
pasivo por indirecto
.
Guiado Pasivo Directo.- En este caso, el programador puede tomar el extremo del robot y llevarlo hasta
os puntos deseados a través de las trayectorias más adecuadas. La unidad de control del robot registra de
manera automática la señal de los sensores de posición de las articulaciones en todos los puntos
recorridos.

Guiado Pasivo Indirecto.- La dificultad física de mover toda la


estructura del robot se resuelve a través de este procedimiento. En
este caso se dispone de un doble del robot, mientras que éste
permanece fuera de línea. El doble posee una configuración
idéntica que el robot real, pero es mucho más ligero y fácil de
mover. La programación se realiza llevando de la mano a este
doble, mientras que la unidad de control muestrea y almacena con
cierta frecuencia los valores que toman los sensores de posición de
las articulaciones, para su posterior repetición por el robot.

UD3 Programación de robots industriales On-Line. 200


Guiado activo.- Esta posibilidad permite emplear el propio sistema de accionamiento del robot,
controlado desde una botonera para que sea éste el que mueva sus articulaciones. Atendiendo a la
potencia del sistema, se habla de guiado básico y guiado extendido.

http://www.youtube.com/watch?v=ghV1xkUR8JU https://www.youtube.com/watch?v=lXSho9loGYU

Guiado Básico.- El robot es guiado por los puntos por los cuales se desea que pase durante la fase de
ejecución automática del programa. Durante ésta, la unidad de control interpola dichos puntos según
determinadas trayectorias. Muchas veces no es posible incluir ningún tipo de estructuras de control dentro
del programa, por lo que los puntos son recorridos siempre secuencialmente, en el mismo orden que se
programaron.

Guiado Extendido.- Permite especificar, junto a los puntos por los que deberá pasar el robot, datos
relativos a la velocidad, tipo de trayectoria, precisión con la que se quiere alcanzar los puntos, control del
flujo del programa, atención a entradas/salidas binarias, etc. En este caso, el método guiado de utilizado
es el de la botonera. El guiado por extendido aumenta la potencia del sistema de programación.

Los métodos por guiado son muy útiles y presentan ventajas, como que son fáciles de aprender y
requieren de un espacio de memoria relativamente pequeño para almacenar la información. Sin embargo,
también presenta inconvenientes como la necesidad de utilizar al propio robot y su entorno para realizar
la programación, lo que obliga a sacar al robot de la línea de producción e interrumpir ésta.

3.1.2.2.- Programación textual.

Este método de programación permite indicar la tarea al robot a través de un lenguaje de programación
específico. Un programa se entiende como una serie de órdenes que son editadas y posteriormente
ejecutadas, por lo tanto, existe un texto para el programa. La programación textual se puede clasificar en
tres niveles:
UD3 Programación de robots industriales On-Line. 201
- Nivel robot, si las órdenes se refieren a los movimientos a realizar por el robot.
- Nivel objeto, si las órdenes se refieren al estado en que deben ir quedando los objetos.
- Nivel tarea, si las órdenes se refieren al objetivo a conseguir.

Nivel Robot.- Se debe especificar cada uno de los movimientos que ha de realizar el robot, como
velocidad, direcciones de aproximación y salida, apertura y cierre de la pinza, etc. También es necesario
descomponer la tarea global en varias subtareas.

Nivel Objeto.- Disminuye la complejidad del programa. La programación se realiza de manera más
cómoda, ya que las instrucciones se dan en función de los objetos a manejar. Una planificación de la tarea
se encargará de consultar una base de datos y generar las instrucciones a nivel de robot.

Nivel Tarea.- El programa se reduce a una única sentencia, ya que, se especifica qué es lo que debe hacer
el robot en lugar de cómo debe hacerlo.

Nivel Robot Nivel Objeto Nivel Tarea

3.1.3.- Lenguajes de programación.

Actualmente, la programación de robots se queda en el primero de ellos, existiendo una gran cantidad de
lenguajes de programación textual, entre los que destacan los siguientes:

Fabricante Modelo Lenguaje


ABB S4 – IRC5 RAPID
S4P IRC5P
KUKA KRC2 KRL
KRC4
FANUC RJ3IB PTE
RJ3IC KAREL
PMC
Motoman XRC TOE
Staubli CS8C VAL3
REIS ROBOTstarV ROBOTstarV

UD3 Programación de robots industriales On-Line. 202


RAPID (ABB). Programado con RobotStudio.

KRL (KUKA). Programado con WorkVisual.

UD3 Programación de robots industriales On-Line. 203


3.1.4.- Programación de secuencias.

La creación de la estructura del programa es una parte importante en la resolución de una tarea
determinada. Podemos utilizar un diagrama de flujo estándar, mediante el cual se divide la tarea en
fragmentos / operaciones representadas por símbolos distintos conectados a través de flechas. Así,
proponemos trazar el algoritmo completo, lo cual ayuda significativamente en la toma el código del
programa en sí.

Diagrama de flujo de un paletizador.

UD3 Programación de robots industriales On-Line. 204


3.1.5.- Sistema de programación KUKA KR C4 (Programación para el grupo de usuarios).

Tareas a ejecutar.

KUKA smartPAD System Software 8.2

1 Botón para desenchufar el smartPAD.

2 Interruptor de llave para acceder al gestor de conexiones.


El conmutador únicamente se puede cambiar cuando está insertada la llave. El gestor de
conexiones permite cambiar el modo de servicio.

3 Dispositivo de PARADA DE EMERGENCIA.


Para detener el robot en situaciones de peligro. El dispositivo de PARADA DE EMERGENCIA se
bloquea cuando se acciona.

UD3 Programación de robots industriales On-Line. 205


Modos de sercvicio.

Modo de servicio manual.

El servicio manual es el servicio para realizar los trabajos de ajuste. Se consideran trabajos de ajuste todos
los trabajos que deban llevarse a cabo en el robot industrial para poder ser operado en servicio
automático. Son trabajos de ajuste:

- Modo tecleado.
- Programación por aprendizaje.
- Programación.
- Verificación del programa.

En el modo manual se deben tener en cuenta los aspectos siguientes:

- Si no se necesitan los accionamientos, éstos deben ser desconectados para que el manipulador o los ejes
adicionales (opcional) no puedan desplazarse por equivocación. Los programas nuevos o modificados
siempre se deben probar primero en el modo de servicio Manual Velocidad reducida (T1).
- Las herramientas, el manipulador o los ejes adicionales (opcional) no deben tocar nunca el vallado de
seguridad o sobresalir del mismo.
- Las piezas, herramientas u otros objetos no deben quedar apretados por el desplazamiento del robot
industrial, ni tampoco llevar a cortocircuitos o caerse.
- Todos los trabajos de ajuste deben realizarse en la medida de lo posible fuera del vallado de seguridad
que delimita el área asegurada.
UD3 Programación de robots industriales On-Line. 206
Si los trabajos de ajuste deben llevarse a cabo dentro del vallado de seguridad que delimita el área
asegurada, se deben tener en cuenta los puntos siguientes.
En el modo de servicio Manual Velocidad reducida (T1):

- Si se puede evitar, no debe hallarse ninguna otra persona dentro de la zona delimitada por los
dispositivos de seguridad. Si es imprescindible que varias personas permanezcan dentro de la zona
delimitada por los dispositivos de seguridad, se debe tener en cuenta lo siguiente:
- Todas las personas deben tener a disposición un pulsador de hombre muerto.
- Todas las personas deben tener un contacto visual sin obstáculos sobre el robot industrial.
- Debe poder haber contacto visual entre todas las personas implicadas.
- El operario debe situarse en una posición desde la cual pueda tener visión sobre la zona de peligro para
así poder evitar posibles peligros.

- Los programas nuevos o modificados siempre se deben probar primero en el modo de servicio Manual
Velocidad reducida (T1).

- Tras efectuar alguna modificación en el robot industrial, los programas existentes siempre deben ser
probados primero en el modo de servicio Manual Velocidad reducida (T1). Esto es válido para todos los
componentes del robot industrial y también incluye las modificaciones de software y los ajustes de
configuración

En el modo de servicio Manual Velocidad alta (T2):

- Este modo de servicio sólo puede utilizarse cuando se requiere la aplicación de un test con servicio
Manual velocidad alta o reducida.
- Este modo de servicio no permite la programación ni la programación por aprendizaje.
- El operario debe asegurarse antes de iniciar el test que los interruptores de hombre muerto están en
condiciones de funcionamiento.
- El operario debe colocarse en fuera de la zona de peligro.
- No debe hallarse ninguna otra persona dentro de la zona delimitada por los dispositivos de seguridad. El
operario debe encargarse de ello.

Modo de servicio automático.

El servicio automático sólo es posible si se cumplen las siguientes medidas de seguridad:


- Todos los dispositivos de seguridad y protección están debidamente montados y en condiciones de
funcionamiento.
- En la instalación no se encuentra ninguna persona.
- Se cumplen los procedimientos definidos para la ejecución de los trabajos.

Cuando el manipulador o un eje adicional (opcional) se detiene sin motivo aparente, sólo se puede
acceder a la zona de peligro después de haber accionado una PARADA DE EMERGENCIA.

Mantenimiento y reparaciones.

Si se ha efectuado algún trabajo de mantenimiento o reparación, se debe comprobar que quede


garantizado el nivel de seguridad necesario. Para esta comprobación se deben tener en cuenta las
disposiciones vigentes nacionales y locales en materia de protección laboral. Además, debe comprobarse
también que todos los circuitos de seguridad funcionen correctamente.

El mantenimiento y las reparaciones tienen por misión asegurar que se mantenga el estado funcional o se
restablezca en caso de avería. La reparación comprende la detección de fallos y su subsanación.
UD3 Programación de robots industriales On-Line. 207
Interfaz de usuario KUKA smartHMI.

UD3 Programación de robots industriales On-Line. 208


Crear nuevo programa.
Seleccionar o abrir programa.
Un programa se puede seleccionar o abrir. En lugar del navegador se muestra un editor con el programa.
Se ha seleccionado el programa:
- Se muestra el puntero de paso.
- El programa se puede arrancar.
- El programa se puede editar con limitaciones.
Los programas seleccionados son especialmente apropiados para ser editados por el grupo de
usuario "Usuario".
Ejemplo: No se permiten las instrucciones KRL que tienen varias líneas (p. ej., LOOP ...
ENDLOOP).
- Si se cancela, se aceptan las modificaciones sin que aparezca ninguna pregunta de seguridad. Si
se han programado cambios no permitidos, aparece un mensaje de error.
El programa está abierto:
- El programa no se puede arrancar.
- El programa se puede editar.
Los programas abiertos son especialmente apropiados para ser editados por el grupo de usuario
"Experto".
- Al cerrarlos aparece una pregunta de seguridad. Los cambios se pueden aceptar o rechazar.
UD3 Programación de robots industriales On-Line. 209
Barra de estado.

La barra de estado muestra el estado de determinados ajustes centrales del robot industrial. En la mayoría
de las visualizaciones se abre una ventana al tocarlas, en la que se pueden modificar los ajustes.

Indicador de estado "Interpretador Submit".

Conectar/desconectar accionamientos.

UD3 Programación de robots industriales On-Line. 210


Indicador de estado Interpretador del robot.

UD3 Programación de robots industriales On-Line. 211


Estructura de un programa KRL.

UD3 Programación de robots industriales On-Line. 212


Posición HOME (HOME position).

La posición HOME es una posición válida para todos los programas. Por regla general, se la utiliza como
primera y última posición en el programa, por su definición unívoca y no crítica.

La HOME position está declarada por defecto en la unidad de control del robot con los siguientes valores.

Se pueden programar por aprendizaje otras posiciones HOME. Una Home Position debe cumplir las
siguientes condiciones:
- Posición de salida favorable para la ejecución del programa.
- Posición de parada favorable. Por ejemplo, en la posición de parada el robot no debe ser un obstáculo.

Modos de ejecución de programas.

UD3 Programación de robots industriales On-Line. 213


Sistemas de coordenadas.

Para poder indicar en el espacio la posición u orientación de un punto, se utilizan diferentes sistemas de
coordenadas. Se puede establecer una diferenciación básica entre sistemas de coordenadas específicos de
los ejes y sistemas de coordenadas cartesianos:

En el sistema de coordenadas específico de los ejes se indican los corrimientos (para los ejes de
traslación) o los giros (para los ejes de rotación) de cada eje del robot. En un robot de brazo articulado de
6 ejes, deben indicarse los 6 ángulos de articulación del robot, para especificar unívocamente la posición
y la orientación.

Transformación de las coordenadas.

Puesto que el ser humano, como programador, piensa en coordenadas cartesianas, no suele ser práctico
programar en el sistema de coordenadas específicas de los ejes. La unidad de control ofrece por ello
varios sistemas cartesianos para la programación cuyas coordenadas se transforman automáticamente en
el sistema específico del eje antes de que se ejecute el movimiento.

UD3 Programación de robots industriales On-Line. 214


Sistema de coordenadas cartesiano.

En un sistema de coordenadas cartesiano, cada uno de los 3 ejes de coordenadas (X, Y y Z) es


perpendicular a los otros dos y todos juntos forman, en este orden, un sistema rectangular.
En el sistema de coordenadas cartesiano, la posición de un punto en el espacio queda unívocamente
establecida mediante la indicación de las coordenadas X, Y y Z. Estas coordenadas se obtienen de las
distancias translatorias de cada valor de coordenadas con respecto al origen de coordenadas.

Para poder alcanzar cualquier punto en el espacio con la orientación que se desee, además de los tres
valores translatorios se necesitan tres datos de rotación:

Ángulo circular del sistema de coordenadas del robot.

UD3 Programación de robots industriales On-Line. 215


En la unidad de control del robot se encuentran definidos los siguientes sistemas de coordenadas
cartesianos:

- WORLD
- ROBROOT
- BASE
- TOOL

WORLD.

El sistema de coordenadas WORLD (sistema de coordenadas universales) es un sistema de coordenadas


cartesianas de definición fija. Es el sistema genérico de coordenadas para los sistemas de coordenadas
BASE y ROBROOT.

Por defecto, el sistema de coordenadas WORLD se encuentra en el pie del robot.

ROBROOT.

El sistema de coordenadas ROBROOT es un sistema de coordenadas cartesianas que siempre se


encuentra en el pie del robot. Describe la posición del robot en relación al sistema de coordenadas
WORLD.
Por defecto, el sistema de coordenadas ROBROOT se cubre con el sistema de coordenadas WORLD. Con
$ROBROOT puede definirse un corrimiento del robot respecto al sistema de coordenadas WORLD.

BASE.

El sistema de coordenadas BASE es un sistema de coordenadas cartesianas que describe la posición de la


pieza de trabajo. Hace referencia al sistema de coordenadas WORLD.
Por defecto, el sistema de coordenadas BASE se cubre con el sistema de coordenadas WORLD. Es
desplazado por el usuario hacia la pieza de trabajo.
TOOL.

El sistema de coordenadas TOOL es un sistema de coordenadas cartesianas cuyo punto de trabajo se


encuentra en la herramienta.
Por defecto, el origen del sistema de coordenadas TOOL se encuentra en el centro de la brida. (Se
denomina entonces sistema de coordenadas FLANGE) El sistema de coordenadas TOOL es desplazado
por el usuario en el punto de trabajo de la herramienta.
UD3 Programación de robots industriales On-Line. 216
Desplazamiento manual del robot.

Existen dos formas de desplazar el robot de forma manual:


- Desplazamiento cartesiano.- El TCP es desplazado en dirección positiva o negativa a lo largo de los ejes
de un sistema de coordenadas.
- Desplazamiento específico de los ejes.- Cada eje puede se puede desplazar individualmente en dirección
positiva y negativa.

Existen dos elementos de operación con los cuales puede moverse un robot.

- Teclas de desplazamiento.
- Space Mouse.

UD3 Programación de robots industriales On-Line. 217


Singularidades.

Los robots KUKA con 6 grados de libertad tienen 3 posiciones singulares distintas.

- Singularidad por encima de la cabeza


- Singularidad de las posiciones extendidas
- Singularidades de los ejes de la muñeca

Una posición singular se caracteriza por no permitir una transformación de retroceso (conversión de las
coordenadas cartesianas en valores específicos de los ejes) unívoca aunque se hayan preestablecido los
datos Status y Turn. En este caso o cuando las más pequeñas modificaciones cartesianas provocan
grandes cambios en el ángulo de los ejes, se habla de posiciones singulares.

Por encima de la cabeza.

En este caso, el punto de raíz de la muñeca, cuya posición radica en el punto de intersección de los ejes
A4, A5 y A6, se encuentra en el eje 1.

En la singularidad por encima de la cabeza, el punto de la raíz de la muñeca (= centro del eje A5) se halla
vertical al eje A1 del robot. La posición del eje A1 no se puede establecer unívocamente mediante la
transformación de retroceso y puede por tanto aceptar cualquier valor. Si el punto de destino de un paso
de movimiento PTP se halla en esta singularidad por encima de la cabeza, la unidad de control del robot
puede reaccionar como sigue gracias a la variable del sistema $SINGUL_POS[1]:

- 0: el ángulo del eje A1 se ajusta a 0 grados (ajuste por defecto).


- 1: el ángulo del eje A1 permanece igual desde el punto de arranque hasta el de destino.

Posiciones extendidas.

En la singularidad de las posiciones extendidas, el punto de la raíz de la muñeca (= centro del eje A5) se
halla en prolongación de los ejes A1 y A3 del robot.
UD3 Programación de robots industriales On-Line. 218
El robot se encuentra en el límite de su área de trabajo. La transformación de retroceso proporciona un
ángulo de eje unívoco, pero las pequeñas velocidades cartesianas dan lugar a grandes velocidades axiales
en los ejes A2 y A3. Si el punto de destino de un paso de movimiento PTP se halla en esta singularidad de
las posiciones extendidas, la unidad de control del robot puede reaccionar como sigue gracias a la variable
del sistema $SINGUL_POS[2]:

- 0: el ángulo del eje A2 se ajusta a 0 grados (ajuste por defecto).


- 1: el ángulo del eje A2 permanece igual desde el punto de arranque hasta el de destino.

Ejes de la muñeca.

En una singularidad de los ejes de la muñeca los ejes A4 y A6 se hallan paralelos uno con el otro y el eje
A5 dentro del área de ±0,01812°.

La posición de ambos ejes no se puede determinar inequívocamente por medio de una transformación de
retroceso. Pero existen muchas posiciones axiales para los ejes A4 y A6 en las que las sumas de los
ángulos de eje son idénticas. Si el punto de destino de un paso de movimiento PTP se halla en esta
singularidad de los ejes de la muñeca, la unidad de control del robot puede reaccionar como sigue gracias
a la variable del sistema $SINGUL_POS[3]:

- 0: el ángulo del eje A4 se ajusta a 0 grados (ajuste por defecto).


- 1: el ángulo del eje A4 permanece igual desde el punto de inicio hasta el de destino.
UD3 Programación de robots industriales On-Line. 219
Desplazamiento especifico de cada eje.

En el sistema de coordenadas específico de los ejes, se puede desplazar individualmente cada uno de los
ejes del robot en la dirección axial positiva o negativa. Para ello se utilizan las teclas de desplazamiento o
el Space Mouse, que permite desplazar simultáneamente 3 o 6 ejes.

Mostrar posición actual.

Procedimiento 1. Seleccionar en el menú principal Visualización > Posición real. Se visualiza


la posición real cartesiana.
2. Pulsar en Específico del eje para visualizar la posición real específica del eje.
3. Pulsar Cartesiano para volver a visualizar la posición real cartesiana.

Posición real específica del eje:

Se muestra la posición actual de los ejes A1 a A6. Cuando existen ejes adicionales, se muestran también
las posiciones de los mismos. La posición real también puede indicarse en pantalla mientras el robot se
encuentra en movimiento.

UD3 Programación de robots industriales On-Line. 220


UD3 Programación de robots industriales On-Line. 221
Ejercicio_1.- Desplazamiento especifico de cada eje.

Eje P1 P2 P3 P4 P5 P6 P7 P8
A1
A2
A3
A4
A5
A6

UD3 Programación de robots industriales On-Line. 222


Desplazamiento coordenadas.

El sistema de coordenadasWORLD (sistema de coordenadas universales) es un sistema de coordenadas


cartesiano situado en un punto fijo. Sirve como sistema de coordenadas de origen para los sistemas de
coordenadas BASEyROBROOT.

Pestaña teclas.

Pestaña Space Mouse.

UD3 Programación de robots industriales On-Line. 223


Mostrar posición actual.

Procedimiento 1. Seleccionar en el menú principal Visualización > Posición real. Se visualiza


la posición real cartesiana.
2. Pulsar en Específico del eje para visualizar la posición real específica del eje.
3. Pulsar Cartesiano para volver a visualizar la posición real cartesiana.

Posición real específica del eje:

Descripción Posición real cartesiana: Se indica en pantalla la posición actual (X, Y, Z) y la orientación
(A, B, C) del TCP. Además, se visualizan los sistemas de coordenadas actuales TOOL y BASE, y
también Status y Turn.

UD3 Programación de robots industriales On-Line. 224


Status y Turn

En una posición, los datos “S” (Status - Estador) y “T” (Turn- giro) permiten seleccionar de entre varias
posiciones de robot posibles para un mismo punto en el espacio (debido a las singularidades de la
cinemática) una posición muy precisa y unívocamente definida. “S” y “T”se especifican en binario.

Status-Estado.

Con el estado S se manejan las ambigüedades en la posición del eje. Por lo tanto, S depende de la
respectiva cinemática del robot.

El significado de cada uno de los bits es el siguiente:


Bit 0: Posición del punto de la raíz de lamuñeca (área de base/área por encima de la cabeza)
Bit 1: Configuración del brazo
Bit 2: Configuración de la muñeca
Para los robots de brazo articulado de 6 ejes, los bits se definen según la tabla siguiente:

UD3 Programación de robots industriales On-Line. 225


Turn-Giro.

Ampliando una indicación de posición cartesiana con el valor Turn (giro) se pueden además alcanzar
ángulos de eje superiores a +180º o inferiores a -180º sin una estrategia de desplazamiento especial (por
ejemplo, puntos intermedios). En los ejes rotatorios, los bits individuales determinan el signo que precede
al valor del eje del siguiente modo:

Bit x = 0: Ángulo del eje x 0º


Bit x = 1: Ángulo del eje x < 0º

Una indicación T ’B 10011’, significa por tanto que los ángulos de los ejes 1, 2 y 5 son negativos, y que
los ángulos de los ejes 3, 4 y 6 son por el contrario positivos (pueden omitirse todos los bits de 0 con un
valor más alto).

Gráficamente, cabe imaginarse el área de base / por encima de la cabeza de forma cartesiana. Para ello, se
definen los conceptos siguientes:

Punto de la raíz de la muñeca: Punto de intersección de los ejes de la muñeca.

Sistema de coordenadas A1: Si el eje 1 está en 0º, entonces es idéntico al sistema de coordenadas
$ROBROOT. En los valores distintos de 0º, se mueve junto con el eje 1.

Así pues, el área de base/por encima de la cabeza, puede definirse del modo siguiente:
- Si el valor x del punto de la raíz de la muñeca, expresado en el sistema de coordenadas A1, es positivo,
el robot se encuentra en el área de base.
- Si el valor x del punto de la raíz de la muñeca, expresado en el sistema de coordenadas A1, es negativo,
el robot se encuentra en el área por encima la cabeza.

UD3 Programación de robots industriales On-Line. 226


Ejercicio_2.- Desplazamiento coordenadas.

Eje P1 P2 P3 P4 P5 P6 P7 P8
X
Y
Z
A
B
C
S
T

UD3 Programación de robots industriales On-Line. 227


Tipo de movimiento PTP.

El robot desplaza el TCP al punto de destino a lo largo de la trayectoria más rápida. La trayectoria más
rápida no es, en regla general, la trayectoria más corta y por ello no es una recta. Dado que los ejes del
robot se mueven de forma rotacional, trayectorias curvas pueden ser ejecutadas de forma más rápida que
las rectas. No puede predecirse la trayectoria exacta.

Velocidad PTP.

El eje principal es le nombre dado al eje que más se tiene que mover para alcanzar el punto final, la
velocidad especificad en el punto no es la real.

PTP- Perfil más alto de movimiento.

El perfil más alto del movimiento es utilizado por defecto, es decir los esfuerzos de torsión permitidos se
utilizan en cada punto de una trayectoria. La velocidad se adapta siempre para evitar que los esfuerzos de
torsión sean excedidos.

UD3 Programación de robots industriales On-Line. 228


Aproximación.

La aproximación significa que: el robot no se detiene exactamente sobre el punto programado. La


aproximación es una opción que puede seleccionarse en la programación de movimientos.

El TCP abandona la trayectoria sobre la cual se posicionaría exactamente en el punto de destino y recorre
una trayectoria más rápida. En la programación del movimiento se define la distancia mínima al punto de
destino en que el TCP puede abandonar su trayectoria original.

El transcurso de una trayectoria en un movimiento PTP de aproximación no es previsible. Tampoco es


previsible por qué lado del punto de aproximación pasa la trayectoria.

UD3 Programación de robots industriales On-Line. 229


Programación para el grupo de usuarios Usuario, formulario inline PTP.

Las instrucciones también pueden programarse sin formularios inline. Para ello se utiliza el lenguaje de
programación KRL (KUKA Robot Language).

Condición previa. - Se ha seleccionado el programa.


- Modo de servicio T1

Procedimiento 1. Mover el TCP a la posición que se programará por aprendizaje como punto de
destino.
2. Colocar el cursor en la línea detrás de la cual se insertará la instrucción de
movimiento.
3. Seleccionar la secuencia de menú Instrucciones > Movimiento > PTP.
4. Ajustar los parámetros en el formulario inline.
5. Guardar pulsando Instrucción OK.

Ventana de opciones Parámetros de movimiento PTP.

.
UD3 Programación de robots industriales On-Line. 230
Ejercicio_3. Programación de movimientos PTP.

KRL Situación Velocidad


PTP HOME A1= 0 A2=-90 A3=90 A4=0 A5=0 A6=0 100%
PTP P1 5 cm altura base izq 100%
PTP P2 1 cm altura base izq 50%
WAIT 2 Seg
PTP P3 5 cm altura base izq 50%
PTP P4 5 cm altura base der. 100%
PTP P5 1 cm altura base der. 50%
WAIT 2 Seg
PTP P6 5 cm altura base der. 50%
PTP HOME 100%

UD3 Programación de robots industriales On-Line. 231


Programar tiempo de espera - WAIT.

Condición previa - Se ha seleccionado el programa.


- Modo de servicio T1
Procedimiento. 1. Colocar el cursor en la línea detrás de la cual se insertará la instrucción lógica.
2. Seleccionar la secuencia de menú Instrucciones > Lógica > WAIT.
3. Ajustar los parámetros en el formulario inline.
4. Guardar pulsando Instrucción OK.

Formulario inline WAIT.- Con WAIT puede programarse un tiempo de espera. El movimiento del robot
se detiene durante el tiempo programado. WAIT genera una parada del proceso.

Programar una función de espera dependiente de señal - WAITFOR.

Condición previa. - Se ha seleccionado el programa.


- Modo de servicio T1
Procedimiento. 1. Colocar el cursor en la línea detrás de la cual se insertará la instrucción lógica.
2. Seleccionar la secuencia de menú Instrucciones > Lógica > WAITFOR.
3. Ajustar los parámetros en el formulario inline.
4. Guardar pulsando Instrucción OK.

Formulario inline WAITFOR.- La instrucción activa una función de espera dependiente de una señal. En
caso necesario, pueden combinarse de forma lógica varias señales (máximo 12). Si se agrega una
concatenación lógica, en el formulario inline aparecen campos para las señales adicionales y para más
combinaciones.

UD3 Programación de robots industriales On-Line. 232


UD3 Programación de robots industriales On-Line. 233
Tipo de movimiento LIN.

El robot conduce el TCP a la velocidad definida hasta el punto de destino a lo largo de una recta.

Aproximación.- El TCP abandona la trayectoria sobre la cual se posicionaría exactamente en el punto de


destino y recorre una trayectoria más corta. En la programación del movimiento se define la distancia
mínima al punto de destino en que el TCP puede abandonar su trayectoria original. El curso de la
trayectoria en la zona de aproximación no es un arco circular.

Control de orientación.- El TCP puede tener en el punto inicial una orientación distinta que en el punto de
destino. La orientación en el arranque puede pasar de distintas maneras a la orientación en el destino. Al
programar un movimiento CP debe seleccionarse un tipo.

UD3 Programación de robots industriales On-Line. 234


Programación para el grupo de usuarios Usuario, formulario inline LIN.

Condición previa. - Se ha seleccionado el programa.


- Modo de servicio T1

Procedimiento. 1. Mover el TCP a la posición que se programará por aprendizaje como punto de
destino.
2. Colocar el cursor en la línea detrás de la cual se insertará la instrucción de
movimiento.
3. Seleccionar la secuencia de menú Instrucciones > Movimiento > LIN.
4. Ajustar los parámetros en el formulario inline.
5. Guardar pulsando Instrucción OK.

Ventana de opciones Parámetros de movimiento LIN.

UD3 Programación de robots industriales On-Line. 235


Ejercicio_4. Programación de movimientos LIN.

KRL Situación Velocidad


PTP HOME A1= 0 A2=-90 A3=90 A4=0 A5=0 A6=0 100%
PTP P1 25 cm y 5 cm altura 100%
LIN P2 1 cm altura 0,5 m/s
LIN P3 0,5 m/s
WAIT 2 Seg.
LIN P4 0,5 m/s
WAIT 2 Seg.
LIN P5 1 cm altura 0,5 m/s
LIN P6 25 cm y 5 cm altura 0,5 m/s
PTP HOME 100%

UD3 Programación de robots industriales On-Line. 236


Tipo de movimiento CIRC.

El robot conduce el TCP con una velocidad definida al punto de destino a lo largo de la trayectoria
circular. La trayectoria circular queda definida por el punto de arranque, un punto intermedio y el punto
de destino.

Aproximación.- El TCP abandona la trayectoria sobre la cual se posicionaría exactamente en el punto de


destino y recorre una trayectoria más corta. En la programación del movimiento se define la distancia
mínima al punto de destino en que el TCP puede abandonar su trayectoria original. En el punto
intermedio, el posicionamiento siempre es exacto. El curso de la trayectoria en la zona de aproximación
no es un arco circular.

Control de orientación.- Los movimientos CIRC tienen disponibles los mismos controles de orientación
que los movimientos LIN.

Para movimientos CIRC la unidad de control del robot tiene en cuenta la orientación programada del
punto de destino. La orientación programada del punto auxiliar se ignora.

UD3 Programación de robots industriales On-Line. 237


Programación para el grupo de usuarios Usuario, formulario inline CIRC.

Condición previa. - Se ha seleccionado el programa.


- Modo de servicio T1

Procedimiento. 1. Desplazar el TCP a la posición que se programará por aprendizaje como punto
auxiliar.
2. Colocar el cursor en la línea detrás de la cual se insertará la instrucción de
movimiento.
3. Seleccionar la secuencia de menú Instrucciones > Movimiento > CIRC.
4. Ajustar los parámetros en el formulario inline.
5. Pulsar TouchUp PI.
6. Mover el TCP a la posición que se programará por aprendizaje como punto de
destino.
7. Guardar pulsando Instrucción OK.

Ventana de opciones Parámetros de movimiento CIR.

UD3 Programación de robots industriales On-Line. 238


Ejercicio_5. Programación de movimientos CIRC.

KRL Situación Velocidad Tiempo de espera


PTP HOME Home 100%
PTP P1 50%
PTP P2 50% 2 Seg
LIN P3 0,5 m/s
CIR (P1) P4 / (P2) P5 Arco 1 0,5 m/s
LIN P6 0,5 m/s
CIR (P1) P7 / (P2) P8 Arco 2 0,5 m/s
LIN P9 0,5 m/s
CIR (P1) 10 / (P2) P11 Arco 3 0,5 m/s
LIN P12 0,5 m/s
CIR (P1) P13 / (P2) P14 Arco 4 0,5 m/s
LIN P15 0,5 m/s
PTP P16 50%
PTP P17 50%
PTP P18 50%
CIR (P1) P19 / (P2) P20 Circulo 0,5 m/s
PTP P21 50% 2 Seg
PTP HOME Home 100%

UD3 Programación de robots industriales On-Line. 239


Ejercicio_6. Letras KUKA.

UD3 Programación de robots industriales On-Line. 240


Tipo de movimiento spline.

Spline es un tipo de movimiento cartesiano especialmente apropiado para trayectorias curvas complejas.
En principio, dichas trayectorias también se pueden crear con movimientos LIN y CIRC aproximados
pero el spline presenta una serie de ventajas.

Inconvenientes de los movimientos LIN y CIRC aproximados:


- La trayectoria se define con puntos aproximados que no se encuentran en la propia trayectoria. Las
zonas de posicionamiento aproximado son difíciles de predecir. Resulta costoso crear la trayectoria
deseada.
- En muchos casos se producen reducciones de velocidad difíciles de predecir como, p. ej., en las zonas
de posicionamiento aproximado y en caso de puntos muy próximos.
- El curso de la trayectoria cambia si no se puede llevar a cabo la aproximación, p. ej., por motivos de
tiempo.
- El curso de la trayectoria varía en función del override, la velocidad o la aceleración.

Ventajas del spline:


- La trayectoria se define con puntos que se encuentran en la propia trayectoria. La trayectoria deseada se
crea fácilmente.
- Se mantiene la velocidad programada. Solo se reduce la velocidad en pocos casos.
- La trayectoria siempre es la misma, independientemente del override, de la velocidad o de la
aceleración.
- Los círculos y los radios estrechos se recorren con gran precisión.

UD3 Programación de robots industriales On-Line. 241


Programación para el grupo de usuarios Usuario formulario inline bloque Spline.

Con un bloque spline se pueden agrupar varios segmentos SPL, SLIN y/o SCIRC en un mismo
movimiento total. Un bloque spline que no contiene ningún segmento no es una instrucción de
movimiento.

Un bloque Spline puede contener:


- Segmentos spline (cantidad limitada por la capacidad de la memoria).
- Comentarios y líneas vacías
- Instrucciones inline de paquetes de tecnología que cuentan con función spline

Un bloque Spline no debe contener otras instrucciones, p. ej. asignaciones de variables o instrucciones
lógicas. Un bloque Spline no genera una parada del proceso.

Condición previa - Se ha seleccionado el programa.


- Modo de servicio T1
Procedimiento
1. Colocar el cursor en la línea detrás de la cual se insertará el bloque Spline.
2. Seleccionar la secuencia de menú Instrucciones > Movimiento > Bloque
SPLINE.
3. Ajustar los parámetros en el formulario inline.
4. Pulsar Instrucción OK.
5. Pulsar Abrir/cerrar Fold. Ahora se pueden insertar segmentos Spline y otras
líneas en el bloque Spline.
- Programar segmento SPL o SLIN".
- Programar segmento SCIRC.
UD3 Programación de robots industriales On-Line. 242
Programar segmento SPL o SLIN.

Condición previa. - Se ha seleccionado el programa.


- Modo de servicio T1
- El Fold del bloque Spline está abierto.

Procedimiento 1. Desplazar el TCP al punto de destino.


2. Colocar el cursor en la línea del bloque spline detrás de la cual se insertará el
segmento.
3. Seleccionar secuencia de menú Instrucciones > Movimiento > SPL o SLIN.
4. Ajustar los parámetros en el formulario inline.
5. Pulsar Instrucción OK.

Programar segmento SCIRC.

Condición previa - Se ha seleccionado el programa.


- Modo de servicio T1
- El Fold del bloque Spline está abierto.

Procedimiento 1. Desplazar el TCP al punto auxiliar.


2. Colocar el cursor en la línea del bloque spline detrás de la cual se insertará-el
segmento.
3. Seleccionar la secuencia de menú Instrucc. > Movimiento > SCIRC.
4. Ajustar los parámetros en el formulario inline.
5. Pulsar TouchUp PA (punto auxiliar).
6. Desplazar el TCP al punto de destino.
7. Pulsar Instruc. OK.
UD3 Programación de robots industriales On-Line. 243
Ejercicio_7. Programación de movimientos SPLINE.

UD3 Programación de robots industriales On-Line. 244


Ejercicio_8. Espiral.

UD3 Programación de robots industriales On-Line. 245


Medición de la herramienta o TOOL.

En la medición de la herramienta, el usuario asigna a una herramienta montada en la brida de acople del
robot un sistema de coordenadas cartesianas (sistema de coordenadas TOOL).

El sistema de coordenadas TOOL tiene su origen en un punto definido por el usuario. Este se denomina
TCP (Tool Center Point). Por regla general, el TCP se coloca en el punto de trabajo de la herramienta.

Ventajas de la medición de la herramienta:


- La herramienta puede desplazarse en línea recta siguiendo la dirección de trabajo.
- La herramienta puede girar alrededor del TCP sin que la posición del TCP varíe.
- Servicio con el programa: La velocidad programada se mantiene en el TCP a lo largo de toda la
trayectoria.

Se pueden guardar como máximo 16 sistemas de coordenadas de herramienta. Variable:


TOOL_DATA[1…16]).

Se graban los siguientes datos:

- X, Y, Z: Origen del sistema de coordenadas TOOL referido al sistema de coordenadas FLANGE.


- A, B, C: Orientación del sistema de coordenadas TOOL referido al sistema de coordenadas FLANGE

La medición de la herramienta consta de 2 pasos:

UD3 Programación de robots industriales On-Line. 246


UD3 Programación de robots industriales On-Line. 247
Medición del TCP: Método XYZ 4 puntos.

Con el TCP de la herramienta que se desea medir debe desplazarse el robot a un punto de referencia desde
4 direcciones diferentes. El punto de referencia puede ser cualquiera. La unidad de control del robot
calcula el TCP a partir de las distintas posiciones de la brida.

Seleccionar en el menú principal Puesta en servicio > Medir > Herramienta > XYZ de 4 puntos.

Medición del TCP: Método XYZ Referencia.

En el método XYZ Referencia se efectúa la medición de una nueva herramienta con referencia a una
herramienta ya conocida. La unidad de control del robot compara las posiciones de la brida y calcula el
TCP de la nueva herramienta.

Seleccionar en el menú principal la secuencia Puesta en servicio > Medir > Herramienta > Referencia
XYZ.

UD3 Programación de robots industriales On-Line. 248


Definir la orientación: Medición de ABC 2 puntos.

A la unidad de control del robot se le comunican los ejes del sistema de coordenadas TOOL desplazando
el robot a un punto del eje X y un punto en el plano XY.

Este método se utiliza cuando las direcciones de los ejes deben establecerse con la mayor exactitud
posible.

Seleccionar en el menú principal la secuencia Puesta en servicio > Medir > Herramienta > ABC 2 puntos.

UD3 Programación de robots industriales On-Line. 249


Ejercicio_9. Traslación de objetos.

Herramienta (1) Pinza


X = 8.406 A = 71.950
Y = -0.312 B = 76.470
Z = 125.978 C = 72.849

Abrir pinza
OUT [1] = FALSE OUT [4] = TRUE
Cerrar pinza
OUT [4] = FALSE OUT [1] = TRUE

UD3 Programación de robots industriales On-Line. 250


Programar las salidas OUT con parada del proceso.

UD3 Programación de robots industriales On-Line. 251


Programar instrucciones lógicas.

Entradas/Salidas

Entradas/salidas digitales.- La unidad de control del robot puede administrar, como máximo, 4.096
entradas digitales y 4.096 salidas digitales. La configuración es específica del cliente.

Entradas/salidas analógicas.- La unidad de control del robot puede administrar 32 entradas analógicas y
32 salidas analógicas. La configuración es específica del cliente.
Rango de valores permitido para entradas/salidas analógicas: -1,0 hasta +1,0. Esto corresponde a un rango
de tensión de -10 V hasta +10 V. Cuando se sobrepasa el valor, la entrada/salida asume el valor máximo y
aparece un mensaje hasta que el valor se encuentra nuevamente en el rango permitido.

Las entradas/salidas se administran a través de las siguientes variables del sistema:

Activar una salida digital - OUT.

Condición previa. - Se ha seleccionado el programa.


- Modo de servicio T1
Procedimiento. 1. Colocar el cursor en la línea detrás de la cual se insertará la instrucción lógica.
2. Seleccionar la secuencia de menú Instrucciones > Lógica > OUT > OUT.
3. Ajustar los parámetros en el formulario inline.
4. Guardar pulsando Instrucción OK.

Formulario inline OUT.- La instrucción activa una salida digital.

UD3 Programación de robots industriales On-Line. 252


Activar una salida de impulso - PULSE.

Condición previa. - Se ha seleccionado el programa.


- Modo de servicio T1
Procedimiento. 1. Colocar el cursor en la línea detrás de la cual se insertará la instrucción lógica.
2. Seleccionar la secuencia de menú Instrucciones > Lógica > OUT > PULSE.
3. Ajustar los parámetros en el formulario inline.
4. Guardar pulsando Instrucción OK.

Formulario inline PULSE.- La instrucción activa un impulso de una duración determinada

Activar salida analógica - ANOUT.

Condición previa. - Se ha seleccionado el programa.


- Modo de servicio T1
Procedimiento. 1. Colocar el cursor en la línea detrás de la cual se insertará la instrucción.
2. Seleccionar la secuencia de menú Instrucciones > Salida analógica > Estática o
Dinámica.
3. Ajustar los parámetros en el formulario inline.
4. Guardar pulsando Instrucción OK.

Formulario inline ANOUT estática.- Esta instrucción activa una salida analógica estática. Se pueden
utilizar, como máximo, 8 salidas analógicas al mismo tiempo (estáticas y dinámicas juntas). ANOUT
genera una parada del procesamiento en avance.

Un factor fija la tensión a un nivel determinado. El valor real de la tensión depende del módulo analógico
utilizado. Por ej. un módulo de 10 V entrega, con un factor de 0,5, un valor de tensión de 5 V.

UD3 Programación de robots industriales On-Line. 253


Formulario inline ANOUT dinámica.

Esta instrucción conecta o desconecta una salida analógica dinámica. Como máximo, se permite conectar
al mismo tiempo 4 salidas dinámicas analógicas. ANOUT genera una parada del proceso.

La tensión queda determinada por medio de un factor. El valor real de la tensión depende de los
siguientes valores:
- Velocidad o generador de funciones.
Por ejemplo, una velocidad de 1 m/s afectado con un factor de 0,5, da como resultado una tensión de 5 V.
- Offset
Por ejemplo, un offset de +0,15 sobre una tensión de 0,5 V da una tensión de 6,5 V.

UD3 Programación de robots industriales On-Line. 254


Medición de la base.

En la medición de la Base el operario asigna una superficie de trabajo o una herramienta a un sistema de
coordenadas cartesianas (sistema de coordenadas base). El sistema de coordenadas BASE tiene su origen
en un punto definido por el usuario.

Ventajas de la medición BASE:


- El TCP puede moverse de forma manual a lo largo de los cantos de la superficie de trabajo o de la pieza.
- Puntos pueden ser programados por aprendizaje en relación a la base. Si la Base debe ser desplazada, p.
ej. si la superficie de trabajo fue desplazada, se desplazan también los puntos y no tienen que ser
programados nuevamente.

Se pueden guardar como máximo, 32 sistemas de coordenadas BASE. Variable: BASE_DATA[1…32].

Existen 2 métodos para medir una base:


- Método de los 3 puntos.
- Método indirecto.

Medición de los 3 puntos.

El robot debe desplazarse al origen y a otros 2 puntos de la base. Estos 3 puntos definen la nueva base.

En el menú principal, seleccionar Puesta en servicio > Medir > Base > 3 puntos.

UD3 Programación de robots industriales On-Line. 255


Método indirecto.

Descripción El método indirecto es utilizado cuando no es posible llegar con el robot al origen de la base,
por ej. porque se encuentra en el interior de una pieza o fuera del campo de trabajo del robot.

Debe efectuarse el desplazamiento a 4 puntos de la base, cuyas coordenadas deben conocerse. La unidad
de control del robot calcula la base utilizando estos puntos.

Seleccionar en el menú principal Puesta en servicio > Medir > Base > Indirecto.

UD3 Programación de robots industriales On-Line. 256


Ejercicio_10. Bases.

Herramienta (3) Laser


X = 60.220 A = -19.798
Y = -0.274 B = -27.617
Z = 130.399 C = 0.0

Base (1) Base A


X = 588.985 A = -1.094
Y = -193.686 B = 0.004
Z = 78.703 C = 0.010

Base (2) Base B


X = 593.337 A = -0.752
Y = 140.219 B = 0.005
Z = 78.693 C = -0.030

UD3 Programación de robots industriales On-Line. 257


Medición de la herramienta fija.

La medición de una herramienta fija consta de 2 pasos:

La unidad de control del robot guarda el TCP externo como sistema de coordenadas BASE y la pieza
como sistema de coordenadas TOOL. En total pueden guardarse 32 sistemas de coordenadas BASE y 16
sistemas de coordenadas TOOL.

Medir el TCP externo.

Primero el usuario indica, a la unidad de control del robot, el TCP de la herramienta fija. Para ello el robot
debe desplazarse al TCP con una herramienta ya medida.

A continuación debe comunicarse a la unidad de control del robot la orientación del sistema de
coordenadas de la herramienta fija. Adicionalmente, el usuario alinea el sistema de coordenadas de la
herramienta medida de forma paralela al nuevo sistema de coordenadas. Existen 2 variantes:

- 5D: El usuario informa a la unidad de control del robot de la dirección de avance de la herramienta. Por
defecto, la dirección de avance es el eje X. La orientación de los demás ejes la determina el sistema y el
usuario no la puede cambiar.

El sistema siempre establece igual la orientación de los demás ejes. Si en un futuro se debe volver a medir
la herramienta, p. ej., tras una colisión, bastará con establecer de nuevo la dirección de avance. No se
debe tener en cuenta el giro en la dirección de avance.

- 6D: El usuario informa a la unidad de control del robot de la orientación de los 3 ejes.

En el menú principal, seleccionar Puesta en servicio > Medir > Herramienta fija > Herramienta.

UD3 Programación de robots industriales On-Line. 258


Medir la pieza: Método directo.

A la unidad de control del robot se le comunican el origen y 2 puntos más de la pieza. Estos 3 puntos
definen la pieza de forma unívoca.

Seleccionar en el menú principal Puesta en servicio > Medir > Herramienta fija > Pieza de trabajo >
Medición directa.

Medir la pieza: Método indirecto.

Descripción La unidad de control del robot calcula la pieza en base a 4 puntos cuyas coordenadas se
conocen. No es necesario desplazarse al origen de la pieza.

Seleccionar en el menú principal Puesta en servicio > Medir > Herramienta fija > Pieza de trabajo >
Medición indirecta.

UD3 Programación de robots industriales On-Line. 259


Ejercicio_11. herramienta fija.

Herramienta (2) Ventosa


X = -83.691 A = 0.0
Y = 1.528 B = 0.0
Z = 68.787 C = 0.0

Herramient(4) Pieza de trabajo


X = -16.608 A = 23.459
Y = 92.775 B = -88.834
Z = 0.371 C = 156.798

Base (3) Herramienta fija


X = 611.134 A = 178.609
Y = 156.309 B = -0.118
Z = 279.600 C = 0.0

UD3 Programación de robots industriales On-Line. 260


Coger
OUT [2] = 1 OUT [5] = 0
Soltar
OUT [5] = 1 OUT [2] = 0

Programar las salidas OUT con parada del proceso.

UD3 Programación de robots industriales On-Line. 261


UD4 Programación de robots industriales Off-Line.
Objetivos:
- Programa robots, utilizado técnicas de programación y procesamiento de datos.
- Verifica el funcionamiento de robots, ajustando os dispositivos de control y aplicando as normas
de seguridad.
- Repara averías en ámbitos industriales robotizados, diagnostica disfunciones y elabora informes
de incidencias.

Contenido:
- Programación de robots Off-Line.
- Simulación y ejecución del programa.
- Verificación del funcionamiento del programa.

UD4 Programación de robots industriales Off-Line. 262


Sistema de programación KUKA KR C4 (Programación experto).

Cambiar de grupo de usuario.

Procedimiento 1. Seleccionar en el menú principal Configuración > Grupo de usuario. Se muestra


el grupo de usuario actual.
2. Para cambiar al grupo de usuario por defecto: Pulsar Estándar. (Estándar no está
disponible si ya se está en el grupo de usuario por defecto).
Para cambiar a otro grupo de usuario: Pulsar Acceso. Marcar el grupo de usuario
deseado.
3. Si se solicita: Introducir clave de acceso y confirmar con Iniciar sesión.
Descripción En el KSS se dispone de distintas funciones en función del grupo de
usuario.

Existen los siguientes grupos de usuario:


- Operador.- Grupo de usuario para el operador. Es el grupo de usuario por defecto.
- Usuario.- Grupo de usuario para el operador. (Los grupos de usuario "Operador" y "Usuario" se crean
por defecto para el mismo grupo destinatario).
- Experto.- Grupo de usuario para el programador Este grupo de usuario está protegido por un código de
acceso.

Estructura y creación de programas.

Mientras que para el usuario son invisibles todos los archivos de sistema, el experto puede verlos y
también editarlos en la ventana de programas. Además, junto a los nombres de archivo y comentarios, en
el nivel del experto pueden mostrarse también las extensiones, atributos y tamaños de los archivos.

UD4 Programación de robots industriales Off-Line. 263


Concepto de archivo.

Un programa KRL puede estar compuesto de un fichero SRC y de un fichero DAT.

Aquí, el fichero con la extensión “SRC” es el archivo con el código de programa propiamente dicho. Aquí
existen las variantes DEF y DEFFCT (con valor de retorno). Por el contrario, el fichero con la extensión
“DAT” contiene los datos específicos para el programa. Esta partición está basada en el concepto de
archivo de KRL: El programa contiene, además de las instrucciones de movimiento, distintas acciones
que deben ser ejecutadas por el robot industrial. Éstas pueden ser determinadas secuencias de
movimientos, por ejemplo abrir o cerrar una herramienta con garras, amén de otras ejecuciones más
complejas, tales como el mando de una pinza de soldadura tomando en consideración las condiciones
límite.

Para efectuar el test de programas es útil, y a veces necesario, poder ejecutar tareas parciales. El concepto
de archivo realizado en KRL, cumple con las necesidades especiales de la programación del robot.

Estructura de archivos.

Un archivo es la unidad que programa el programador. Con ello, un archivo corresponde a una unidad de
programa en el disco duro o en la memoria (RAM). Cada programa en KRL puede constar de uno o
varios archivos. Los programas simples comprenden exactamente un archivo. Las tareas más complejas
se solucionan mejor con un programa compuesto de varios archivos.

El nombre del objeto sin extensión es asimismo el nombre del archivo y por ello se indica en la
declaración con “DEF”. El nombre debe constar de un máximo de 24 caracteres y no debe ser ninguna
palabra clave . Cada archivo comienza con la declaración “DEF” y finaliza con “END”.

DEF NAME(X1:IN)
Declaraciones
Instrucciones
END

Declaración.- Las declaraciones se evalúan antes de la ejecución del programa, es decir, durante la
compilación. En la sección de declaraciones no debe haber ninguna instrucción. La primera instrucción
constituye asimismo el comienzo de la sección de instrucciones.

Instrucción.- Contrariamente a lo que ocurre en la sección de declaraciones, las instrucciones tienen un


carácter dinámico: se ejecutan durante la ejecución del programa.

Lista de datos.- Un programa del robot puede constar de un solo fichero de programa o de un fichero de
programa con la correspondiente lista de datos. La lista de datos y el fichero se señalizan como

UD4 Programación de robots industriales Off-Line. 264


correspondientes mediante sus nombres comunes. Los nombres solamente se diferencian por la extensión,
por ejemplo:

Fichero: PROG1.SRC
Lista de datos: PROG1.DAT

En la lista de datos sólo se permiten asignaciones de valores con “=”.

Crear programas.

UD4 Programación de robots industriales Off-Line. 265


Esconder partes de un programa.

Al contrario que en los editores normales, el editor KCP permite visualizar aquellas partes específicas del
contenido de un programa que el usuario desea ver. Así, por ejemplo, el usuario ve solamente los
contenidos esenciales de un programa, mientras que el experto puede ver el programa completo.

FOLD.

La superficie de operación KUKA utiliza una técnica especial para visualizar con claridad un programa.
Las instrucciones marcadas como comentarios KRL permiten suprimir la visualización de las partes
subsiguientes del programa. De esta manera, el programa queda dividido en apartados adecuados que se
denominan “FOLDS” por tener las características de una carpeta.

Normalmente, las “FOLDS” se encuentran “cerradas”, y sólo pueden ser “abiertas” en el nivel del
experto. Estos elementos contienen información que el usuario no puede ver en la superficie de operación
de KUKA (KUKA--BOF). En el nivel del experto, se puede hacer que un bloque KRL sea invisible para
el usuario. Para ello, se deben delimitar las correspondientes declaraciones o instrucciones pormedio de
las denominaciones “;FOLD” y “;ENDFOLD”.

Se puede elegir entre las siguientes opciones:

”FOLD” es simplemente una instrucción para el editor. El compilador interpreta las instrucciones FOLD
gracias a que éstas llevan delante el signo de punto y coma como si fuera un comentario normal.
UD4 Programación de robots industriales Off-Line. 266
Variables y declaraciones.

Variables y nombres.

Junto al uso de constantes, es decir, la indicación directa del valor en forma de números, caracteres, etc.,
en KRL también pueden utilizarse dentro del programa variables y otras formas de datos.

En la programación de robots industriales, las variables son necesarias, por ejemplo, para el
procesamiento del sensor. Con ellas, el valor leído por el sensor se puede memorizar y evaluar en
diferentes lugares del programa. Además, se pueden efectuar operaciones aritméticas para calcular, por
ejemplo, una nueva posición.

En el programa, una variable se representa por medio de un nombre que se puede elegir libremente dentro
de unos determinados límites.

Nombres en KRL.

- Pueden tener una longitud máxima de 24 caracteres


- Pueden contener letras (A--Z), cifras (0--9) y los caracteres ’_’ y ’$’
- No deben comenzar con cifras
- No deben ser palabras clave

Puesto que todas las variables del sistema comienzan con ’$’, no se debe utilizar este signo como primer
carácter en los nombres definidos por el propio usuario.

Nombres válidos en KRL son, por ejemplo:

SENSOR_1
BOQUILLA13
P1_HASTA_P12

Una variable se debe considerar como un área dememoria fija, a cuyo contenido puede accederse a través
del nombre de variable. Por ello, la variable se crea para el tiempo que dura el procesamiento del
programa mediante una posición de memoria (lugar) y un contenido de memoria (valor).

Asignación de valor.- Los valores se asignan a las variables mediante el signo de igualdad (=).

CANTIDAD = 5

Significa por tanto que en el área dememoria se registra, con la dirección CANTIDAD, el valor 5. Al
programador no le interesa la apariencia exacta de la dirección, por lo que el compilador la asigna de
manera independiente. Lo único que importa es que en el programa se pueda acceder en todo momento al
contenido de memoria por medio de su nombre.

Duración.

La duración de una variable es el tiempo durante el cual dicha variable tiene asignada una posición de
memoria. Este tiempo depende de si la variable está declarada en un archivo SRC o en una lista de datos:

- Variable declarada en un archivo SRC.


La duración se limita al tiempo de funcionamiento del programa. Una vez finalizado el
procesamiento, el área de memoria vuelve a quedar libre. El valor de la variable se pierde.
UD4 Programación de robots industriales Off-Line. 267
- Variable declarada en una lista de datos.
La duración no depende del tiempo de procesamiento del programa. La variable existe mientras
exista la lista de datos. Dichas variables son, por lo tanto, permanentes (hasta la próxima conexión
/ desconexión).

Declaración e inicialización de objetos de datos.

DECL:

La asignación de un nombre de variable a un tipo de datos y la reserva de la posición de memoria se


efectúan en KRL por medio de la declaración DECL.

DECL INT CANTIDAD,NUMERO

se declaran, por ejemplo, dos variables CANTIDAD y NUMERO del tipo de datos “número entero”
(integer).

Inicialización.

Una vez declarada una variable, su valor se define inicialmente como no válido, ya que de lo contrario
este valor dependería de la ocupación aleatoria de lamemoria. Para poder trabajar con la variable, es
necesario asignarle previamente un determinado valor. Esta primera asignación de un valor a una variable
se denomina inicialización.

La asignación de un valor a una variable es una instrucción y, por ello, no puede efectuarse en la sección
de declaraciones. No obstante, en la sección de instrucciones la inicialización se puede realizar en
cualquier momento. Sin embargo, todas las variables declaradas deben ser convenientemente inicializadas
en una sección de inicialización directamente después de la sección de declaración.

Solamente en las listas de datos está permitido inicializar variables directamente en la línea de
declaración.

UD4 Programación de robots industriales Off-Line. 268


Tipos de datos simples.

Tipos de datos simples son ciertos tipos de datos básicos que existen en lamayoría de lenguajes de
programación. Al contrario que los tipos de datos estructurados, los tipos de datos simples contienen un
único valor.

Campos.

Se conocen como campos aquellos agrupamientos de objetos de un mismo tipo de datos que forman un
objeto de datos. A los componentes individuales de un campo se puede acceder a través de índices.
Mediante la declaración.

Campo unidimensional.

DECL INT OTTO[7]

Índice de campo.

Puede poner, por ejemplo, 7 números enteros diferentes en el campo OTTO[]. A cada componente
individual del campo se puede acceder indicando el correspondiente índice (el primer índice es siempre el
1):

OTTO[1] = 5 ; al 1° elemento se le asigna el número 5


OTTO[2] = 10 ; al 2° elemento se le asigna el número 10
OTTO[3] = 15 ; al 3° elemento se le asigna el número 15
OTTO[4] = 20 ; al 4° elemento se le asigna el número 20
OTTO[5] = 25 ; al 5° elemento se le asigna el número 25
OTTO[6] = 30 ; al 6° elemento se le asigna el número 30
OTTO[7] = 35 ; al 7° elemento se le asigna el número 35

De manera gráfica, cabe imaginarse el campo con el nombre OTTO[] como una estantería con 7
compartimentos. De acuerdo con las asignaciones anteriores, la ocupación de los compartimentos
ofrecería el siguiente aspecto:

Si es preciso inicializar todos los elementos de un campo con el mismo número, por ejemplo el 0, no es
necesario programar explícitamente cada asignación, sino que se puede “automatizar” la preasignación
por medio de un bucle y de una variable de conteo:

FOR I = 1 TO 7
OTTO[I] = 0
ENDFOR

UD4 Programación de robots industriales Off-Line. 269


La variable de conteo es en este caso la variable entera I. Ésta debe haber sido declarada antes de ser
utilizada como número entero.

Bidimensional.

Además de los campos unidimensionales tratados hasta ahora (es decir, los campos con un solo índice),
en KRL pueden utilizarse también campos bidimensionales o tridimensionales.

DECL REAL MATRIX[5,4]

Se declara un campo bidimensional 5×4 con 5×4=20 elementos del tipo REAL. Gráficamente, este campo
puede representarse como una matriz con 5 columnas y 4 filas. Con la secuencia de programa

NUM = 0
FOR COLUMNA = 1 TO 5
FOR FILA = 1 TO 4
NUM = NUM + 1
MATRIX[COLUMNA,FILA] = NUM
ENDFOR
ENDFOR

los elementos de la matriz reciben un valor que corresponde con el orden de su asignación. Así pues, la
ocupación de matriz obtenida es la siguiente:

Tridimensional.

Los campos tridimensionales son como variasmatrices bidimensionales dispuestas una tras otra. La
tercera dimensión indica, por así decirlo, el plano en el que se encuentra la matriz (véase Fig. 11). Un
campo tridimensional se declara de forma análoga a los campos unidimensionales o bidimensionales, por
ejemplo:

DECL BOOL FELD_3D[3,5,4]

La secuencia de inicialización podría tener el siguiente aspecto:


UD4 Programación de robots industriales Off-Line. 270
FOR PLANO = 1 TO 3
FOR COLUMNA = 1 TO 5
FOR FILA = 1 TO 4
CAMPO_3D[PLANO,COLUMNA,FILA] = FALSE
ENDFOR
ENDFOR
ENDFOR

Cadenas de caracteres.

Tal como se describe anteriormente, el tipo de datos CHAR sólo permite guardar caracteres
individuales. Para utilizar cadenas de caracteres completas, por ejemplo palabras, basta
con definir un campo unidimensional del tipo CHAR:

DECL CHAR NAME[8]

Como viene siendo habitual, se puede acceder a cada uno de los elementos del campo NAME[], por
ejemplo:

NAME[3] = “G”

También se pueden introducir cadenas de caracteres completas:

NAME[] = “ABCDEFG”

Ocupa los siete primeros elementos del campo NAME[] con las letras A, B, C, D, E,
F y G:

UD4 Programación de robots industriales Off-Line. 271


Estructuras.

STRUC.

Si es necesario agrupar diferentes tipos de datos, el campo no es apropiado, por lo que debe recurrirse a la
forma general de composición. Con la instrucción de declaración STRUC pueden agruparse diferentes
tipos de datos definidos previamente (o tipos de datos predefinidos) en un nuevo tipo de datos compuesto.
En especial, las composiciones y los campos pueden ser parte de otras composiciones.

Un ejemplo típico del uso de composiciones es el tipo de datos estándar POS. Este tipo consta de 6
valores REAL y 2 valores INT, y fue definido en el archivo $OPERATE.SRC de la siguiente manera:

STRUC POS REAL X, Y, Z, A, B, C, INT S, T

Punto separador.

Si ahora se utiliza por ejemplo una variable POSICIÓN del tipo de datos de estructura POS, se pueden
ocupar los elementos individualmentemediante el punto separador, por ejemplo:

POSICION.X = 34.4
POSICION.Y = -23.2
POSICION.Z = 100.0
POSICION.A = 90
POSICION.B = 29.5
POSICION.C = 3.5
POSICION.S = 2
POSICION.T = 6

O conjuntamente por medio de lo que se conoce como agregado

POSICION={X 34.4,Y -23.2,Z 100.0,A 90,B 29.5,C 3.5,S 2,T 6}

Así pues, las variables POS también admiten, por ejemplo, las siguientes asignaciones:

POSICION={B 100.0,X 29.5,T 6}


POSICION={A 54.6,B -125.64,C 245.6}
POSICION={ X 230,Y 0.0,Z 342.5}

En el archivo $OPERATE.SRC se encuentran predefinidas las estructuras siguientes:

STRUC AXIS REAL A1,A2,A3,A4,A5,A6


STRUC E6AXIS REAL A1,A2,A3,A4,A5,A6,E1,E2,E3,E4,E5,E6
STRUC FRAME REAL X,Y,Z,A,B,C
STRUC POS REAL X,Y,Z,A,B,C, INT S,T
STRUC E6POS REAL X,Y,Z,A,B,C,E1,E2,E3,E4,E5,E6, INT S,T

UD4 Programación de robots industriales Off-Line. 272


Programación de movimiento.

Movimientos punto a punto PTP.

El movimiento punto a punto (PTP) es la manera más rápida de mover la punta de la herramienta (Tool
Center Point: TCP) desde la posición actual hasta una posición de destino programada. La unidad de
control calcula para ello las diferencias de ángulo necesarias para cada eje.

Mediante la variable del sistema de velocidad y aceleración.

$VEL_AXIS[número de eje] se programan las velocidades máximas específicas del eje, INT en %,
$ACC_AXIS[número de eje] las aceleraciones máximas específicas del eje, INT en %.

DEF EJE_PTP1() ;el nombre del programa es EJE_PTP1


;
$VEL_AXIS[1]=100 ;especificación de las velocidades de eje %.
$VEL_AXIS[2]=100
$VEL_AXIS[3]=100
$VEL_AXIS[4]=100
$VEL_AXIS[5]=100
$VEL_AXIS[6]=100
;
$ACC_AXIS[1]=100 ;especificación de las aceleraciones de eje %
$ACC_AXIS[2]=100
$ACC_AXIS[3]=100
$ACC_AXIS[4]=100
$ACC_AXIS[5]=100
$ACC_AXIS[6]=100
;
PTP HOME Vel= 100 % DEFAULT

PTP {A1 90,A2 -90,A3 0,A4 0,A5 0,A6 -180}


PTP {X 20, Y 20, Z 100, A -31.68, B 56.41, C -38.05, S 6, T18}
PTP {Z 40}

PTP HOME Vel= 100 % DEFAULT

END

En primer lugar, en este programa se especifican las velocidades y aceleraciones de los ejes. Antes de que
pueda ejecutarse un movimiento punto a punto, deben haberse efectuado estas asignaciones.

Coordenadas absolutas.- Si al indicar las coordenadas de los ejes se omiten componentes individuales, el
robot solamente desplaza los ejes indicados. Los otros ejes no cambian de posición. Por lo tanto, con

PTP {A3 45}

Sólo se coloca el eje 3 en 45_. Es preciso tener en cuenta que las indicaciones de ángulos en la instrucción
PTP son valores absolutos. El robot no gira el eje otros 45_, sino que se desplaza hasta la posición
absoluta 45_ del eje.
UD4 Programación de robots industriales Off-Line. 273
Coordenadas relativas.- Para el desplazamiento relativo se utiliza la instrucción PTP_REL. Así pues, para
girar por ejemplo los ejes 1 y 4 35_ cada uno, tan sólo es necesario programar:

PTP_REL {A1 35,A4 35}

DEF EJE_PTP2 ( )
INI

PTP HOME Vel= 100 % DEFAULT

PTP {A1 90,A2 -90,A3 0,A4 0,A5 0,A6 -180}


PTP {X 20, Y 20, Z 100, A -31.68, B 56.41, C -38.05, S 6, T18}
PTP {Z 40}
PTP_REL {A1 35, A4 35}

PTP HOME Vel= 100 % DEFAULT

END

DEF EJE_PTP3 ( )
; Declaraciones
INT X,I
POS AVANCE
;
;Inicializar
INI
X=0
AVANCE.X = 50.0
AVANCE.Y = 0.0
AVANCE.Z = 500.0
FOR I = 1 TO 6
$ACC_AXIS[I] = 50; Aceleración de los ejes
$VEL_AXIS[I] = 25; Velocidad de los ejes
ENDFOR
$BASE = BASE_DATA[1]; Base
$TOOL = TOOL_DATA[2] ; Herramienta ventosa
;
;Programa
PTP HOME Vel= 100 % DEFAULT

PTP {X 20, Y 20, Z 100, A -31.68, B 56.41, C -38.05, S 6, T18}


FOR X = 1 TO 10
PTP AVANCE
AVANCE.X = AVANCE.X + 25
WAIT SEC 5.0
ENDFOR

PTP HOME Vel= 100 % DEFAULT

END
UD4 Programación de robots industriales Off-Line. 274
Movimientos lineales LIN.

Para un movimiento lineal, la KR C... calcula una recta desde la posición actual (en el programa, éste es
el último punto programado) hasta la posición que se indicó en la instrucción de movimiento.

La programación de un movimiento lineal se efectúa utilizando las palabras claves LIN o LIN_REL junto
con la indicación del punto de destino, es decir, igual que en la programación PTP. Para los movimientos
lineales, la posición de destino se indica de forma cartesiana. Por lo tanto, solamente se admiten los tipos
de datos FRAME o POS.

DEF EJE_LIN ( )
INI

$BASE = BASE_DATA[1]; Base


$TOOL = TOOL_DATA[2] ; Herramienta ventosa

PTP HOME Vel= 100 % DEFAULT

PTP {A5 30}


LIN {X 1030,Y 350,Z 1300,A 160,B 45,C 130}
LIN {Y 0,Z 800,A 0,S 2,T 35}
LIN {X 700,Y -300,Z 1000,A 23,B 230,C -90}
LIN {Z 1200,A 90,B 0,C 0}
; Movimiento relativo a lo largo del eje X
LIN_REL { X 300}

PTP HOME Vel= 100 % DEFAULT

END

UD4 Programación de robots industriales Off-Line. 275


Movimientos circulares CIRC.

Para definir unívocamente una circunferencia o arco de circunferencia en el espacio, se necesitan 3 puntos
que sean diferentes entre sí y no se encuentren sobre una recta.

Al igual que en PTP o en LIN, el punto inicial de un movimiento circular se vuelve a indicar mediante la
posición actual.

Por ello, para programar un movimiento circular con las instrucciones CIRC o CIRC_REL, además del
punto de destino debe definirse un punto intermedio. Para calcular la trayectoria de movimiento con la
unidad de control, del punto auxiliar solamente se evalúan los componentes translatorios (X, Y, Z). La
orientación de la punta de la herramienta cambia continuamente, dependiendo del control de orientación,
desde el punto inicial hasta el punto final, o bien se mantiene constante.

Además de la posición intermedia y de la posición de destino, puede programarse un ángulo circular con
la opción CA (ángulo circular). La geometría del arco de circunferencia se sigue especificando mediante
el punto inicial, el punto auxiliar y el punto de destino. Sin embargo, la posición de destino a alcanzar
realmente en el arco de circunferencia se especifica mediante el ángulo de circunferencia programado.
Eso resulta particularmente útil a la hora de reprogramar la posición de destino (sin modificar la
geometría del círculo).

El arco de circunferencia a recorrer puede prolongarse o acortarse de acuerdo con el ángulo de


circunferencia. La orientación de destino programada se alcanza en el punto de destino real. Mediante el
signo del ángulo circular puede especificarse el sentido de giro, es decir, la dirección en que debe
recorrerse el arco de circunferencia.

CA > 0º en el sentido programado (Punto inicial punto auxiliar punto de destino)


CA < 0º en sentido contrario al programado (Punto inicial punto de destino punto auxiliar)

UD4 Programación de robots industriales Off-Line. 276


DEF EJE_CIR ( )
INI

PTP HOME Vel= 100 % DEFAULT

PTP {POS: X 980,Y -238,Z 718,A 133,B 66,C 146,S 6,T 50}
CIRC {X 925,Y -285,Z 718},{X 867,Y -192,Z 718,A 155,B 75,C 160}
CIRC {X 982,Y -221,Z 718,A 50,B 60,C 0},{X 1061,Y -118,Z 718,
A -162,B 60,C 177}, CA 300.0
$CIRC_TYPE=#PATH
CIRC {X 867,Y -192,Z 718},{X 982,Y -221,Z 718,A 0}, CA -150
LIN {A 100} ;
CIRC {X 963.08,Y -85.39,Z 718},{X 892.05,Y 67.25,Z 718.01,
A 97.34,B 57.07,C 151.11}
; movimiento circular relativo
CIRC_REL {X -50,Y 50},{X 0,Y 100}

PTP HOME Vel= 100 % DEFAULT

END

Programación por aprendizaje de los puntos.

La integración del procedimiento de aprendizaje es una característica de calidad fundamental de un


lenguaje de programación de robot.

Signo !

Para ello, en KRL solamente es necesario programar un signo ! como posicionador para las coordenadas
que posteriormente se desean programar por aprendizaje:

PTP !
LIN ! C_DIS
CIRC ! ,CA 135.0

Luego, en la unidad de control, se pueden introducir en el programa las coordenadas correspondientes


mediante la tecla del softkey “Touch Up” después de pulsar la tecla del softkey “Modificar”. Las
coordenadas actuales se escriben directamente en la estructura seleccionada del archivo SRC, por
ejemplo:

PTP {POS:X 145.25,Y 42.46,Z 200.5,A -35.56,B 0.0,C 176.87,S 2,T 2}


LIN {X -23.55,Y 0.0,Z 713.56,A 0.0,B 34.55,C -90.0} C_DIS
CIRC {X -56.5,Y -34.5,Z 45.56,A 35.3,B 0.0,C 90.0},{X 3.5,Y 20.30,Z 45.56,A 0.0,B 0.0,C 0.0}, CA
135.0

Al programar por aprendizaje las coordenadas cartesianas, siempre se toma como sistema de referencia el
sistema de coordenadas base ($BASE) que en ese momento es válido en el sistema. Por ello, debe
asegurarse de que durante la programación por aprendizaje esté siempre declarado el sistema de
coordenadas base necesario para el movimiento posterior.

UD4 Programación de robots industriales Off-Line. 277


Movimiento continuo en trayectoria - LIN y CIR.

La trayectoria de giro y rotación y aceleraciones deben inicializarse antes de ejecutar un movimiento CP.

Nombre de la variable Tipo dato Unidad Función


Velocidad $VEL.CP Real m/s Velocidad de trayectoria
$VEL.ORI1 Real º/s Velocidad de giro
$VEL.ORI2 Real º/s Velocidad de rotación
Aceleración $ACC.CP Real m/s2 Aceleración de trayectoria
$ACC.ORI1 Real º/s2 Aceleración de giro
$ACC.ORI2 Real º/s2 Aceleración de rotación

DEF EJE_CP ( )
INI

$BASE = BASE_DATA[1]; Base


$TOOL = TOOL_DATA[2] ; Herramienta ventosa
$VEL.CP = 1.0 ; Modificación de velocidades
$VEL.ORI1 = 150;
$VEL.ORI2 = 100
$ACC.CP = 1.7 ; Modificación de aceleraciones
$ACC.ORI1 = 80
$ACC.ORI2 = 80

PTP HOME Vel= 100 % DEFAULT

LIN {X 1030, Y 350, Z 1300, A 160, B 45, C 130}


LIN_REL{X 100, Y 250, Z 125}

PTP HOME Vel= 100 % DEFAULT

END

UD4 Programación de robots industriales Off-Line. 278


Control de orientación.

Control de orientación en movimientos LIN.

Variable Valor Descripción


$ORI_TYPE #CONSTANT La orientación permanece constante durante el
movimiento CP. La orientación programada en el punto
final no se tiene en cuenta.

Variable Valor Descripción


$ORI_TYPE #VAR Durante los movimientos CP, la orientación cambia
continuamente hasta la orientación del punto final.

Variable Valor Descripción


$ORI_TYPE #JOINT Durante el movimiento sobre la trayectoria, la
orientación de la Tool cambia continuamente desde la
posición de inicio a la posición final.

Control de orientación para movimientos circulares.

Variable Valor Descripción


$ORI_TYPE #CONSTANT La orientación permanece constante durante el
movimiento circular. La orientación programada en el
punto final no se tiene en cuenta.
$ORI_TYPE #VAR Durante el movimiento circular, la orientación cambia
continuamente hasta la orientación del punto final.
$CIRC_TYPE #BASE Control de orientación relacionado con el espacio
durante el movimiento circular.
$CIRC_TYPE #PATH Control de orientación relacionado con la trayectoria
durante el movimiento circular.

UD4 Programación de robots industriales Off-Line. 279


$ORI_TYPE = #CONSTANT
$CIRC_TYPE = #PATH

$ORI_TYPE = #VAR
$CIRC_TYPE = #PATH

$ORI_TYPE = #CONSTANT
$CIRC_TYPE = #BASE

$ORI_TYPE = #VAR
$CIRC_TYPE = #BASE

PTP HOME Vel= 100 % DEFAULT

$ORI_TYPE=#CONST
LIN {X 700,Y -300,Z 1000,A 23,B 230,C -90}
LIN_REL {X 300}

$ORI_TYPE=#CONST
$CIRC_TYPE=#PATH
CIRC {X 982,Y -221,Z 718,A 50,B 60,C 0},{X 1061,Y -118,Z 718, A -162,B 60,C 177}, CA 300.0
CIRC_REL {X -50,Y 50},{X 0,Y 100}

PTP HOME Vel= 100 % DEFAULT


UD4 Programación de robots industriales Off-Line. 280
Posición aproximada.

Para aumentar la velocidad puede utilizarse el posicionamiento aproximado en aquellos casos en donde
no es necesario posicionar exactamente sobre el punto. El robot acorta el recorrido.

El contorno de posicionamiento aproximado es generado automáticamente por la unidad de control. El


programador solamente influye en el comienzo y el final del posicionamiento aproximado. Para el cálculo
del paso de posicionamiento aproximado, el control necesita los datos del punto inicial, del punto de
posicionamiento aproximado y del punto final.

Posicionamiento aproximado PTP-PTP.

PTP Nombre_punto (o coordenada) C_PTP

El tamaño del rango de posicionamiento se establece mediante la variable $APO.CPTP (en %).
La distancia máxima de aproximación esta limitada en los datos máquina a 90º para todos los ejes.
El posicionamiento aproximado de un punto se visualiza en la instrucción PTP indicando la palabra clave
C_PTP

$APO.CPTP = 50
LIN {X 700,Y -300,Z 1000,A 23,B 230,C -90} C_PTP

En este caso, el posicionamiento aproximado se inicia cuando el primer eje tiene que recorrer un ángulo
residual de 45º (50% de 90º) hacia el punto de posicionamiento aproximado. Así pues, el posicionamiento
concluye exactamente cuando el primer eje ha recorrido un ángulo de 45º desde el punto de
posicionamiento aproximado.

Cuanto mayor es $APO.CPTP, más se redondea la trayectoria.

UD4 Programación de robots industriales Off-Line. 281


Ejemplo para el posicionamiento aproximado PTP-PTP

DEF EJE_APROX_PTP ( )
INI

PTP HOME Vel= 100 % DEFAULT

PTP {X 1159.08,Y -232.06,Z 716.38,A 171.85,B 67.32,C 162.65,S 2,T 10}

;Posicionamiento aproximado del punto


PTP { X 1246.93,Y -98.86,Z 715,A 125.1,B 56.75,C 111.66,S 2,T 10} C_PTP
PTP {X 1109.41,Y -0.51,Z 715,A 95.44,B 73.45,C 70.95,S 2,T 10}

;Posicionamiento aproximado de dos puntos 20%


$APO.CPTP=20
PTP {X 1296.61,Y 133.41,Z 715,A 150.32,B 55.07,C 130.23,S 2,T 11} C_PTP
PTP {X 988.45,Y 238.53,Z 715,A 114.65,B 50.46,C 84.62,S 2,T 11} C_PTP
PTP {X 1209.5,Y 381.09,Z 715,A -141.91,B 82.41,C -159.41,S 2,T 11}

PTP HOME Vel= 100 % DEFAULT


END

UD4 Programación de robots industriales Off-Line. 282


Posicionamiento aproximado LIN-LIN.

Para el movimiento continuo a lo largo de trayectorias complejas, existe el requisito de efectuar el


posicionamiento aproximado también entre pasos individuales lineales. Los diferentes movimientos de
orientación en los pasos LIN, deben pasar gradualmente unos dentro de otros.

Ejemplo para el posicionamiento aproximado LIN-LIN

DEF EJE_APROX_LIN ( )
INI

PTP HOME Vel= 100 % DEFAULT


PTP {X 1159.08,Y -232.06,Z 716.38,A 171.85,B 67.32,C 162.65,S 2,T 10}

;Posicionamiento aproximado del punto


PTP {X 1246.93,Y -98.86,Z 715,A 125.1,B 56.75,C 111.66,S 2,T 10} C_PTP
PTP {X 1109.41,Y -0.51,Z 715,A 95.44,B 73.45,C 70.95,S 2,T 10}

;Posicionamiento aproximado de dos puntos 20%


$APO.CPTP=20
PTP {X 1296.61,Y 133.41,Z 715,A 150.32,B 55.07,C 130.23,S 2,T 11} C_PTP
PTP {X 988.45,Y 238.53,Z 715,A 114.65,B 50.46,C 84.62,S 2,T 11} C_PTP
PTP {X 1209.5,Y 381.09,Z 715,A -141.91,B 82.41,C -159.41,S 2,T 11}

PTP HOME Vel= 100 % DEFAULT


END

UD4 Programación de robots industriales Off-Line. 283


Posicionamiento aproximado CIRC-CIRC y posicionamiento aproximado CIRC-LIN.

La tarea de posicionamiento aproximado entre los pasos CIRC y otros pasos CP (LIN o CIRC) es casi
idéntica al posicionamiento aproximado entre dos pasos LIN. Tanto el movimiento de orientación como
el translatorio deben pasar sin saltos de velocidad de uno a otro contorno de paso individual.

Ejemplo para el posicionamiento aproximado CIRC-CIRC.

DEF EJE_APROX_LIN ( )
INI
PTP HOME Vel= 100 % DEFAULT
PTP {POS: X 980,Y -238,Z 718,A 133,B 66,C 146,S 6,T 50}
; control de orientación variable referido al espacio
; posicionamiento aproximado según el criterio de distancia
$APO.CDIS=20
CIRC {X 925,Y -285,Z 718},{X 867,Y -192,Z 718,A 155,B 75,C 160} C_DIS
; control de orientación constante referido al espacio
; punto de destino especificado mediante la indicación del ángulo
; no es posible el posicionamiento aproximado debido a la parada del procesamiento en avance mediante
$OUT
$ORI_TYPE=#CONST
CIRC {X 982,Y -221,Z 718,A 50,B 60,C 0},{X 1061,Y -118,Z 718,A -162,B 60,C 177}, CA 150 C_ORI
$OUT[3]=TRUE
; control de orientación variable referido a la trayectoria
; posicionamiento aproximado según el criterio de orientación
$ORI_TYPE=#VAR
$CIRC_TYPE=#PATH
CIRC {X 963.08,Y -85.39,Z 718},{X 892.05,Y 67.25,Z 718.01,A 97.34,B 57.07,C 151.11} C_ORI
; movimientos circulares relativos
; posicionamiento aproximado según el criterio de velocidad
$APO.CVEL=50
CIRC_REL {X -50,Y 50},{X 0,Y 100} C_VEL
; posicionamiento aproximado según el criterio de distancia
$APO.CDIS=40
CIRC_REL {X -50,Y 50},{X 0,Y 100} C_DIS
CIRC_REL {X -50,Y 50},{X 0,Y 100}
PTP HOME Vel= 100 % DEFAULT
END

UD4 Programación de robots industriales Off-Line. 284


Control de ejecución del programa.

Ramificaciones de programa.

Instrucciones de salto GOTO.

La forma más simple de la ramificación de programa la constituye la denominada instrucción de salto


incondicional. Esta puede, sin reflejar ninguna condición determinada, ser ejecutada en todo caso. A
través de la instrucción

GOTO MARCA

El puntero del programa salta a la posición MARCA. Pero la posición deberá estar definida
imprescindiblemente con:

MARCA:

La instrucción GOTO conduce rápidamente a programas no estructurados sin una buena visión global,
dado que además cualquier instrucción GOTO puede ser sustituida por cualquier otra instrucción de
bucle, deberá, en lo posible, evitarse la utilización de GOTO.

Ramificación condicionada IF.

La instrucción IF permite la formulación de instrucciones condicionadas ofreciendo dos alternativas para


la selección. En la forma más común la instrucción es la siguiente:

IF Condición de ejecución THEN


Instrucciones
ELSE
Instrucciones
ENDIF

La condición de ejecución es una expresión booleana. Si la condición de ejecución ha sido cumplidas, se


ejecutará el bloque THEN. En el otro caso, puede ejecutarse el bloque ELSE o se prescide del mismo.
Prescindir significa el abandono inmediato de la ramificación.

Se permiten la cantidad de instrucciones que se desee. Estas pueden constar a su vez de otras
instrucciones IF. Esto significa que se pueden encajar los bloques IF. Sin embargo, cada instrucción IF
debe cerrarse con una instrucción ENDIF propia.

UD4 Programación de robots industriales Off-Line. 285


INT A,B

IF $IN[10]==FALSE THEN
PTP HOME Vel= 100 % DEFAULT
ELSE
IF A>B THEN
$OUT[1]=TRUE
ENDIF
A=A+1
PTP HOME Vel= 100 % DEFAULT
ENDIF

Distribuidor SWITCH.

Si existen más de 2 alternativas, se puede programar bien con una estructura IF encajada o bien – más
confortable – utilizar en la programación el distribuidor SWITCH.

La instrucción SWITCH es una instrucción de selección para diferentes ramificaciones del programa. Un
criterio de selección es ocupado antes de la instrucción SWITCH con un valor determinado. Si el valor
concuerda con una identificación de bloque, se procesa la ramificación de programa correspondiente,
saltando el programa, sin tener enconsideración la identificación de bloque subsiguiente, hasta la
instrucción ENDSWITCH. Si no concuerda una identificación de bloque con el criterio de selección, se
procesará, en caso de que exista, un bloque DEFAULT (por defecto). En caso contrario se continuaría con
la instrucción siguiente a partir de la instrucción ENDSWITCH.

A una ramificación de programa es permisible asignar varios identificadores de bloque. Sin embargo, a la
inversa, no es recomendable utilizar un identificador de bloque repetidas veces ya que sólo es considerada
la primera ramificación con la identificación correspondiente.

Los tipos de datos permitidos del criterio de selección son INT, CHAR y ENUM. El tipo de dato del
criterio de selección deberá concordar con la identificación de bloque.

La instrucción de DEFAULT (por defecto) puede faltar, pero sólo puede aparecer una sola vez dentro de
una instrucción SWITCH.

Con una instrucción SWITCH puede llamar p. ej. diferentes subprogramas en dependencia de un número
de programa. El número de programa podría enviarse p. ej. del PLC a las entradas digitales del KR C1.
Así está disponible como criterio de selección en forma de un valor Integer.

INT VERSION
SWITCH VERSION
CASE 1
ACCION_A()
CASE 2
ACCION_B()
CASE 3
ACCION_C()
CASE 4
ACCION_D()
DEFAULT
ERROR()
ENDSWITCH
UD4 Programación de robots industriales Off-Line. 286
Bucles.

La estructura base siguiente para el control del procesamiento del programa son los bucles que contienen
una o varias instrucciones de procesamiento repetitivas hasta que se haya cumplido una determinada
condición. Los bucles se diferencian según la forma de la condición y posición donde se produce la
interrogación respecto a su continuación.

El salto desde fuera hacia dentro de un cuerpo de bucle no está permitido siendo rechazado por la unidad
de control (mensaje de fallo).

Bucles sinfín.

Con la instrucción LOOP se pueden programar bucles sinfín:

LOOP
Instrucciones
ENDLOOP

La ejecución repetida del bloque de instrucción sólo se puede finalizar mediante la instrucción EXIT.

Terminación anticipada de la ejecución de bucles.

Con la instrucción EXIT puede terminar cualquier bucle prematuramente. Llamando a EXIT dentro de un
bloque de instrucción del bucle, se terminan los ciclos de bucles, continuando el programa detrás de la
instrucción del final del bucle.

Para los bucles sinfín, el EXIT es, sin embargo, la única posibilidad de finalizar la ejecución del bucle.
Respecto a ello véase el ejemplo siguiente:

LOOP
LIN P_1
LIN P_2
IF $IN[30]==TRUE THEN
EXIT
ENDIF
ENDLOOP

UD4 Programación de robots industriales Off-Line. 287


Bucles de conteo.

Los bucles de conteo son ejecutados hasta que la variable de conteo sobrepase o quede por debajo de un
determinado valor, bien mediante conteo ascendente o descendente. En la KRL se tiene a disposición una
instrucción FOR.

FOR Contador = Arranque TO Final STEP Ancho de paso


Instrucciones
ENDFOR

De esta forma se permite, con una buena visión global, programar una determinada cantidad de
secuencias.

Como valor de Arranque y valor Final del contador deberá indicar, respectivamente, una expresión del
tipo Integer (entero). Las expresiones son analizadas al principio del bucle. La variable INT Contador
(por consiguiente deberá estar declarada previamente) es impuesta con el valor de arranque, aumentando
o disminuyendo según el ancho de paso tras cada secuencia del bucle.

El ancho de paso no debe ser ni una variable ni tampoco cero. Si se omite la indicación del ancho de paso,
dispondrá por defecto el valor estándar 1. También se admiten valores negativos para el ancho de paso.

Para cada instrucción FOR debe haber una instrucción ENDFOR. El programa continuará procesándose,
después de la última secuencia de bucle, en la primera instrucción detrás de ENDFOR.

El valor del contador puede utilizarse tanto dentro como fuera del bucle. Dentro del bucle, este sirve p.ej.
de índice actual para la edición de los campos. Después de salir del bucle, el contador adopta el último
valor tomado (es decir Final+Ancho de paso).

DEF FOR_PROG()

INT I, J
INT FELD[10, 6]

FOR I=1 TO 9 STEP 2
FOR J=6 TO 1 STEP -1
FELD[I,J] = I + J
ENDFOR
ENDFOR

END

UD4 Programación de robots industriales Off-Line. 288


Bucle WHILE.

El bucle WHILE interroga al principio de la repetición sobre una condición de ejecución. Se trata de un
bucle rechazante, ya que no se ejecuta ni una sola vez si la condición de ejecución no es cumplida ya
desde el principio. La sintaxis del bucle WHILE es:

WHILE Condición de ejecución


Instrucciones
ENDWHILE

La condición de ejecución es una expresión lógica que puede tratarse tanto de una variable boolena, una
llamada de función booleana o una combinación lógica con un resultado booleano.

El bloque de instrucciones se ejecuta cuando la condición lógica ha tomado el valor de TRUE, es decir,
que la condición de ejecución se ha cumplido. Cuando la condición lógica tiene el valor FALSE, el
programa continua procesándose detrás de la instrucción ENDWHILE. Por consiguiente, deberá finalizar
cada instrucción WHILE con una instrucción ENDWHILE.

W=1 WHILE $IN[1]==TRUE


WHILE W<100 W=W+1
W=W+1 ENDWHILE
ENDWHILE

Bucle REPEAT.

Lo contrario a un bucle WHILE es un bucle REPEAT. Con REPEAT se interroga al final del bucle acerca
de la condición de interrupción. Por ello un bucle REPEAT realizará, en todo caso, el ciclo completo,
incluso cuando se cumpla ya de entrada la condición de interrupción desde el principio del bucle.

REPEAT
Instrucciones
UNTIL Condición de interrupción

La condición de interrupción es análoga a la del bucle WHILE, una expresión lógica, una variable
booleana, una llamada de función booleana o una combinación lógica con un resultado booleano:

W=1
REPEAT
W=W+1
UNTIL $IN[1]==TRUE
UD4 Programación de robots industriales Off-Line. 289
Instrucciones de espera. WAIT.

Con la instrucción WAIT puede forzar la detención del programa hasta que se produzca una situación
determinada. Se hace una diferenciación entre esperar que se produzca un evento y el establecimiento de
temporizaciones de espera.

Espera a un evento.

Con la instrucción, WAIT FOR Condición, puede detener el procesamiento del programa hasta que se
produzca el evento especificado con Condición:

- Si la expresión lógica de Condición durante la llamada de WAIT ya es TRUE, el procesamiento del


programa no será interrumpido (sin embargo se fuerza una parada del procesamiento en avance).
- Si la condición es FALSE, el procesamiento del programa se interrumpirá hasta que la expresión tome
de nuevo el valor TRUE.

La condición WAIT FOR puede aplicarse a las variables $IN[], $OUT[], $CYCFLAG[], $TIMER[],
$TIMER_FLAG[], $FLAG[] e I[].

Valores numéricos.- A cada variable se le asigna un número.

Valores variables
En lugar de un número se transfiere una variable. Para ello es necesario una declaración de las variables
en la lista de datos (*.dat). Una convención en el archivo fuente (*.src) fija el valor de la variable.

Lista de datos: Archivo fuente:

DEFDAT PROG1 DEF PROG1()


... ...

DECL INT INT_VAR INT_VAR=7


... ...

UD4 Programación de robots industriales Off-Line. 290


En el ejemplo, a la variable INT_VAR se le asigna el valor “7”.

También es posible un cálculo de expresiones. En el ejemplo, se le asignó a la variable X el valor “1”, a Y


el valor “2” y a Z el valor “3”.

Tiempos de espera.

La instrucción WAIT SEC sirve para programar los tiempos de espera en segundos: WAIT SEC Tiempo

Tiempo es una expresión aritmética REAL, con la que puede indicar la cantidad de segundos que desea
que dure la interrupción del procesamiento del programa. Si el valor es negativo, no se produce la espera.

WAIT SEC 17.542


WAIT SEC TIEMPO*4+1

Detener el programa HALT.

Si desea interrumpir la ejecución del programa y detener el procesamiento, deberá programar la


instrucción HALT

Pero la última instrucción de movimiento procesada es ejecutada completamente. El procesamiento


continua presionando la tecla de arranque. A continuación se ejecutará la instrucción subsiguiente
después de HALT.

UD4 Programación de robots industriales Off-Line. 291


Instrucciones de entrada/salida.

La KR C... conoce 1026 entradas y 1024 salidas y se configuran a través de bus de campo. Las entradas
ueden ser leídas, las salidas pueden ser leídas y activadas. Estas son excitadas a través de las variables de
sistema $IN[Nr] o $OUT[Nr]. Las salidas no utilizadas pueden usarse como marcas.

Entradas y salidas binarias.

Si se excitan entradas y salidas individualmente, se puede hablar de entradas y salidas binarias. Las
salidas binarias pueden tomar 2 estados: Low o High (nivel de tensión bajo o alto). Por ello, se tratan
estas variables como del tipo BOOL. Por consiguiente, las salidas pueden ser activadas con la variables
del sistema

$OUT[Nr] = TRUE y reseteadas con


$OUT[Nr] = FALSE .

SIGNAL.

En la KR C se pueden además asignar nombres a cada una de las entradas/salidas. Para ello sirve la
declaración de la señal. Esta deberá estar ubicada, como todas las declaraciones, en la parte de
declaración del programa. Es decir que también se puede programar:

SIGNAL CONMUTADOR $IN[6]


Ք
IF CONMUTADOR == FALSE THEN
Ք
ENDIF

La variable conmutador es declarada internamente como BOOL.

DEF BINSIG ( )
;--------- Sección de declaración ---------
SIGNAL CANCELAR $IN[16]
SIGNAL IZQUIERDA $OUT[14]
SIGNAL DERECHA $OUT[15]
;------------- Sección principal------------
IZQUIERDA=FALSE
DERECHA=FALSE
WHILE CANCELAR==FALSE ;Cancelar con entrada 16 activa
IF $IN[1] THEN
IZQUIERDA=TRUE
DERECHA=FALSE
ELSE
IZQUIERDA=FALSE
DERECHA=TRUE
ENDIF
ENDWHILE
END

UD4 Programación de robots industriales Off-Line. 292


Temporizadores.

Las 16 variables de temporizador $TIMER[1]…$TIMER[16], sirven paramedir los procesos temporales y


pueden por tanto utilizarse como “cronómetro”. La medición se inicia y se para con las variables del
sistema

$TIMER_STOP[1]…$TIMER_STOP[16]:
$TIMER_STOP[4] = FALSE
$TIMER_STOP[4] = TRUE ; Arranca, por ejemplo, el temporizador 4,

Vuelve a detener el temporizador 4. Mediante una asignación normal de valores, se puede reiniciar en
todo momento la variable de temporizador afectada, por ejemplo:

$TIMER[4] = 0

Si el valor de una variable de temporizador cambia demenos amás, el correspondiente flag se coloca en
TRUE (condición Timer--Out), por ejemplo:

$TIMER_FLAG[4] = TRUE

Al arrancar la unidad de control, todas las variables de temporizador se ocupan automáticamente con 0,
los flags

$TIMER_FLAG[1]…$TIMER_FLAG[16] se ocupan con FALSE y las variables


$TIMER_STOP[1]…$TIMER_STOP[16] se ocupan con TRUE.

La unidad de las variables de temporizador es el milisegundo (ms). La actualización de


$TIMER[1]…$TIMER[16] y de $TIMER_FLAG[1]…$TIMER_FLAG[16] tiene lugar cada 12 ms.

$TIMER_STOP[1] = TRUE
LOOP
IF(TIMER[1] >= 1000) THEN
PTP {AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0}
ENDLOOP

Flag.

Los 1024 flags $FLAG[1]…$FLAG[1024] se utilizan como marcas globales. Estas variables booleanas se
predefinen con FALSE. Usted puede ver en cualquier momento sobre la superficie de operación el valor
actual de los flags mediante el punto de menú “Visualización”.

$CYCFLAG[1] = $IN[1] AND $IN[2]


$CYCFLAG[2] = FALSE
$CYCFLAG[3] = TRUE

Además, en el KR C... hay 32 flags cíclicos $CYCFLAG[1]…$CYCFLAG[32]. Después del arranque de


la unidad de control, todos ellos están predefinidos con FALSE.

$CYCFLAG[1]…$CYCFLAG[32] tienen el tipo de datos BOOL. En la asignación a un flag cíclico se


puede utilizar cualquier expresión booleana que se desee.

$CYCFLAG[10] = $IN[2] AND $IN[13]


UD4 Programación de robots industriales Off-Line. 293
Hace que la expresión booleana “$IN[2] AND $IN[13]” sea evaluada cíclicamente. Esto quiere decir que
cualquier modificación de la entrada 2 o de la entrada 13 producirá también un cambio en
$CYCFLAG[10], sin importar el lugar en que se encuentre el puntero de ejecución del programa una vez
ejecutada la expresión anterior.

UD4 Programación de robots industriales Off-Line. 294


Manipulación de datos.

Para lamanipulación de diferentes objetos de datos, existe una gran cantidad de operadores y funciones
que permiten crear fórmulas. El poder de un lenguaje de programación de robots depende tanto de los
objetos de datos admitidos como de las posibilidades demanipularlos.

Operadores.

Operadores son los operadores matemáticos habituales, en contraposición a funciones tales como
SIN(30), que proporciona el seno del ángulo de 30º. Así pues, en la operación 5+7, el 5 y el 7 son los
operandos y el signo + es el operador.

En cada operación, el compilador comprueba la admisibilidad de los operandos. Así, por ejemplo, 7 - 3
es, como resta de dos números enteros, una operación admisible. Por el contrario, 5 + “A” es, como
adición de un valor entero a un carácter, una operación no permitida.

En algunas operaciones como 5 + 7.1 (es decir, la suma de números enteros y valores reales) se efectúa
una adaptación del tipo y el valor entero 5 es convertido en el valor real 5.0.

Operadores aritméticos.

Los operadores aritméticos corresponden a los tipos de datos INTEGER (ENTERO) y REAL. En KRL se
admiten los 4 tipos de cálculo básico.

El resultado de una operación aritmética solamente es INT cuando los dos operandos son del tipo
INTEGER (entero). Si el resultado de una división de enteros no es un número entero, se desecha la parte
decimal. Cuando, como mínimo, uno de los dos operandos es REAL, entonces también el resultado es de
tipo REAL

DEF ARITH()
;--------- Sección de declaración ---------
INT A,B,C
REAL K,L,M
;---------- Inicialización ---------
;antes de la inicialización, todas las variables son no-válidas.
A = 2 ;A=2
B = 9.8 ;B=10
C = 7/4 ;C=1
UD4 Programación de robots industriales Off-Line. 295
K = 3.5 ;K=3.5
L = 0.1 E01 ;L=1.0
M = 3 ;M=3.0
;------------- Sección principal------------
A = A * C ;A=2
B = B - ’HB’ ;B=-1
C = C + K ;C=5
K = K * 10 ;K=35.0
L = 10 / 4 ;L=2
L = 10 / 4.0 ;L=2.5
L = 10 / 4. ;L=2.5
L = 10./ 4 ;L=2.5
C = 10./ 4. ;C=3
M = (10/3) * M ;M=9.0
END

Operador geométrico.

El operador geométrico se simboliza en KRL con el símbolo de dos puntos “:”. Este operador ejecuta,
entre los tipos de datos FRAME y POS un combinación lógica de frames.

La combinación lógica de dos frames es el procedimiento normal para transformar sistemas de


coordenadas. Por ello, la combinación lógica de una estructura FRAME con una estructura POS
solamente actúa sobre el frame que está dentro de la estructura POS. Los componentes S y T no resultan
afectados por la transformación y por ello tampoco necesitan estar ocupados con un valor. Sin embargo,
los valores X, Y, Z, A, B y C deben estar ocupados siempre con un valor, tanto en los operandos POS
como en los operandos FRAME.

Combinación lógica de frames:

Una combinación lógica de frames se evalúa de izquierda a derecha. El resultado siempre tiene el mismo
tipo de datos que el operando que, en el lado derecho, más alejado se encuentre.

En una habitación hay una mesa. El sistema de coordenadas del ESPACIO está definido como sistema de
coordenadas fijo en el rincón delantero izquierdo de la habitación.

La mesa se encuentra paralela a las paredes de la habitación. La esquina delantera izquierda de la mesa se
encuentra exactamente a 600 mm de la pared delantera y a 450mm de la pared izquierda de la habitación.
La mesa tiene 800 mm de altura.

Sobre lamesa hay una pieza de forma cuadrangular. El sistema de coordenadas PIEZA se debe colocar en
una esquina de la pieza. Para luego poder manipular convenientemente la pieza, el eje Z del sistema de
UD4 Programación de robots industriales Off-Line. 296
coordenadas PIEZA mira hacia abajo. Con respecto al eje Z del sistema de coordenadas MESA, la pieza
está girada 40_. La posición del sistema de coordenadas PIEZA respecto al sistema de coordenadas
MESA es X=80 mm, Y = 110 mm y Z = 55 mm.

Ahora, la tarea es describir el sistema de coordenadas PIEZA con respecto al sistema de coordenadas
HABITACIÓN. Para ello, se deben declarar en primer lugar las siguientes variables de frame:

FRAME MESA, PIEZA, BASE

El sistema de coordenadas HABITACIÓN ya está establecido por el sistema. Los sistemas de


coordenadas MESA y PIEZA se inicializan ahora de acuerdo con las condiciones límite:

MESA = {X 450,Y 600,Z 800,A 0,B 0,C 0}


PIEZA = {X 80,Y 110,Z 55,A -40,B 180,C 0}

Ahora, el sistema de coordenadas PIEZA con respecto al sistema de coordenadas ESPACIO se obtiene
mediante el operador geométrico, para

BASE = MESA:PIEZA

En nuestro caso, BASE está ocupado del modo siguiente:

BASE = {X 530,Y 710,Z 855,A 140,B 0,C -180}

Otra posibilidad sería:

BASE = {X 530,Y 710,Z 855,A -40,B 180,C 0}

UD4 Programación de robots industriales Off-Line. 297


Operadores de comparación.

Con los operadores de comparación que figuran en Tab. 6 se pueden formar expresiones lógicas. Por
tanto, el resultado de una comparación es siempre del tipo de datos BOOL, ya que una comparación sólo
puede ser verdadera (TRUE) o falsa (FALSE).


BOOL A,B

B = 10 < 3 ;B=FALSE
A = 10/3 == 3 ;A=TRUE
B = ((B == A) <> (10.00001 >= 10)) == TRUE ;B=TRUE
A = “F” < “Z” ;A=TRUE

Operadores lógicos.

Permiten la combinación lógica de variables booleanas, constantes y expresiones lógicas simples


formadas mediante los operadores de comparación. Así, por ejemplo, la expresión

(A > 5) AND (A < 12)

Solamente tiene el valor TRUE si A está dentro de un rango de 5 a 12.

Operadores de bits.

Con los operadores de bits se pueden combinar lógicamente números enteros, combinando lógicamente
entre sí los bits individuales cada número. Los operadores de bits combinan bits individuales del mismo
modo que los operadores lógicos combinan dos valores booleanos, si se considera el valor de bit 1 como
TRUE y el valor 0 como FALSE.

UD4 Programación de robots industriales Off-Line. 298


INT A

A = 10 B_AND 9 ;A=8
A = 10 B_OR 9 ;A=11
A = 10 B_EXOR 9 ;A=3
A = B_NOT 197 ;A=-198
A = B_NOT ’HC5’ ;A=-198
A = B_NOT ’B11000101’ ;A=-198
A = B_NOT “E” ;A=-70

Prioridades de los operadores.

Si se utilizan expresiones más complejas con varios operadores, deben tenerse en cuenta las diferentes
prioridades de cada uno de ellos, ya que las expresiones individuales se ejecutan siguiendo el orden de sus
prioridades.

UD4 Programación de robots industriales Off-Line. 299


Funciones estándar.

Para calcular ciertos problemas matemáticos, en KRL se encuentran predefinidas algunas funciones
estándar. Éstas pueden utilizarse directamente sin otra declaración.

B = -3.4
A = 5 * ABS(B) ;A=17.0
;
A = SQRT(16.0801) ;A=4.01
;
A = SIN(30) ;A=0.5
B = 2*COS(45) ;B=1.41421356
C = TAN(45) ;C=1.0
;
A = COS(60) ;A=0.5
B = ACOS(A) ;B=60
;
A = SIN(60) ;A=0.8660254
B = 90-ACOS(A) ;B=60

UD4 Programación de robots industriales Off-Line. 300


Entradas y salidas digitales.

Declaración de la señal.

Con la declaración de la señal no sólo se puede asignar a determinadas entradas/salidas un nombre, sino
que además, se pueden agrupar varias entradas/salidas binarias a una sola señal digital. Con la declaración

SIGNAL SALI $OUT[10] TO $OUT[20]

Se puede declarar ahora, p. ej., las salidas 10 hasta 20 a través de una variable interna declarada como
Entera SALI y activada como palabra de 11 bit. La salida digital declarada de este modo, se puede definir
para cada asignación entera posible a la variable SALI, p. ej.:

SALI = 35
SALI = ’B100011’
SALI = ’H23’

- Las entradas/salidas deberán indicarse en la declaración de la señal, en orden ascendente, sin


interrupciones.
- Como máximo, se pueden agrupar 32 entradas o salidas a una señal digital.
- Una señal puede aparecer en diferentes declaraciones de señales.

DEF BINSIG ( )
;--------- Sección de declaración ---------
SIGNAL CANCELAR $IN[16]
SIGNAL POSICION $OUT[13] TO $OUT[15]
;------------- Sección principal------------
POSICION=’B010’
WHILE CANCELAR==FALSE ;Cancelar con entrada 16 activa
IF $IN[1] THEN
POSICION=’B010’
ELSE
POSICION=’B100’
ENDIF
ENDWHILE
END

Activar salidas en el punto de destino.

En el momento que el robot haya alcanzado el punto de destino de un paso demovimiento, pueden
activarse hasta 8 salidas referidas a la ejecución principal y sin detención de laejecución en avance. Para
ello sirve la siguiente instrucción:

$OUT_C[salida] = expresión booleana

UD4 Programación de robots industriales Off-Line. 301


PTP P1
$OUT_C[10] = TRUE
$OUT_C[11]=FALSE
$OUT_C[12] = TRUE
LIN P2

Salidas de impulso. PULSE.

Con la instrucción PULSE pueden activarse o desactivarse cada una de las salidas durante un tiempo
determinado.

PULSE($OUT[4],TRUE,0.7)

Pone por ejemplo, a nivel alto, la salida 4 durante 0,7 segundos. Este impulso puede procesarse
paralelamente con el programa del robot (durante este proceso no se detiene el intérprete).

Las temporizaciones de impulsos realizables van de 0.012 a 231 segundos. La retícula es de 0.1

UD4 Programación de robots industriales Off-Line. 302


Subprogramas y funciones.

Para reducir durante la programación la tarea de escribir aquellos apartados de programa que se repiten
con frecuencia, así como la longitud del programa, se han introducido subprogramas y funciones como
construcción de lenguaje.

Un efecto de los subprogramas y de las funciones que no conviene infravalorar es la posibilidad de volver
a utilizar en otros programas los algoritmos que ya han sido registrados, y especialmente el uso de
subprogramas para estructurar el programa. Este tipo de estructuración puede generar un estructura
jerárquica, demodo que se pueda activar cada uno de los subprogramas por un programa de nivel
superior, se puedan procesar completamente tareas parciales y se puedan enviar los resultados.

Declaraciones.

Un subprograma o una función son partes de programas separadas, con encabezamiento de programa,
sección de declaraciones y de instrucciones, que pueden llamarse desde cualquier parte del programa
según convenga. Una vez procesado el subprograma o la función, se produce un salto hacia atrás hasta la
instrucción subsiguiente después de activarse el subprograma.

Desde un subprograma o bien una función, pueden llamarse otros subprogramas y/o funciones. La
profundidad de encajado permitida en este caso es de 20. Si se excede estenúmero, aparecerá un mensaje
de fallo indicando “REBASE APILAMIENTO DE PROGRAMA”. La llamada recursiva de subprograma
o de funciones está permitida. Dicho con otras palabras: un subprograma o una función puede volver a
llamarse a sí mismo.

Subprogramas DEF

Todos los subprogramas se declaran exactamente igual que los programas principales, con
la convención DEF más el nombre, y se cierran con END, p. ej.:

DEF SUBPROG()

END

UD4 Programación de robots industriales Off-Line. 303


Funciones DEFFCT.

Al contrario que los subprogramas, las funciones emiten un valor de retorno. Una función comienza con
la palabra clave “DEFFCT”. El tipo de datos del valor de retorno se indica inmediatamente después de la
palabra clave “DEFFCT”. El propio valor de retorno es transferidomediante “RETURN”.Mediante la
palabra clave “ENDFCT” se finaliza la función.

DEFFCT INT Función()


DECL INT Sample
Sample = 11
RETURN Sample
ENDFCT

Si falta la instrucción “RETURN” aparecerá un error de tiempo de ejecución.

UD4 Programación de robots industriales Off-Line. 304


PROG_1-Seleción de trayectoria.

Herramienta (3) Laser


X = 60.220 A = -19.798
Y = -0.274 B = -27.617
Z = 130.399 C = 0.0

Base (1) Base A


X = 588.985 A = -1.094
Y = -193.686 B = 0.004
Z = 78.703 C = 0.010

Base (2) Base B


X = 593.337 A = -0.752
Y = 140.219 B = 0.005
Z = 78.693 C = -0.030

UD4 Programación de robots industriales Off-Line. 305


PROG_1_1, LOOP , FOR, IF THEN.

UD4 Programación de robots industriales Off-Line. 306


UD4 Programación de robots industriales Off-Line. 307
PROG_1_2, SWITCH, CASE.

UD4 Programación de robots industriales Off-Line. 308


UD4 Programación de robots industriales Off-Line. 309
PROG_2.- Paletizador de cajas.

PROG_2_1 Paletizador (Cinta).

Herramienta (2) Ventosa


X = -83.691 A = 0.0
Y = 1.528 B = 0.0
Z = 68.787 C = 0.0

Base (4) Cinta


X = 500.0 A = 0.0
Y = -300.0 B = 0.0
Z = 0.0 C = 0.0

Base (5) Palet


X = 758 A = 0.0
Y = 124 B = 0.0
Z = 0.0 C = 0.0

UD4 Programación de robots industriales Off-Line. 310


! "# $
% ! "# $
&'
&(
&(
)& * + # ,
-& + # ,
./ & 0
)&
-&
/&(

UD4 Programación de robots industriales Off-Line. 311


UD4 Programación de robots industriales Off-Line. 312
PROG_2_2 Paletizador (Cinta y palet).

) - /
/

! "# $
% ! "# $
&'
&(
&(
/ &
)& * + # ,
-& + # ,
./ & 0
)& 12 # ,
-& 2 # ,
/& 0

UD4 Programación de robots industriales Off-Line. 313


UD4 Programación de robots industriales Off-Line. 314
PROG_3-Paletizador con capas alternas.

UD4 Programación de robots industriales Off-Line. 315


Herramienta (1) Pinza
X = 8.406 A = 71.950
Y = -0.312 B = 76.470
Z = 125.978 C = 72.849
Herramienta (2) Ventosa
X = -83.691 A = 0.0
Y = 1.528 B = 0.0
Z = 68.787 C = 0.0
Herramienta (3) Laser
X = 60.220 A = -19.798
Y = -0.274 B = -27.617
Z = 130.399 C = 0.0
Herramient(4) Pieza de trabajo
X = -16.608 A = 23.459
Y = 92.775 B = -88.834
Z = 0.371 C = 156.798
Herramient(5)

Base (1) Base A


X = 588.985 A = -1.094
Y = -193.686 B = 0.004
Z = 78.703 C = 0.010
Base (2) Base B
X = 593.337 A = -0.752
Y = 140.219 B = 0.005
Z = 78.693 C = -0.030
Base (3) Herramienta fija
X = 611.134 A = 178.609
Y = 156.309 B = -0.118
Z = 279.600 C = 0.0
Base (4) Cinta
X = 500.0 A = 0.0
Y = -300.0 B = 0.0
Z = 0.0 C = 0.0
Base (5) Palet
X = 758 A = 0.0
Y = 124 B = 0.0
Z = 0.0 C = 0.0
Base (6) Celda Agilus Extrerior
X = 342.991 A = 0.0
Y = 161.079 B = 0.0
Z = 401.600 C = 0.0
Base(7)

UD4 Programación de robots industriales Off-Line. 316


SIMULACIÓN KUKA.Sim.

KUKA.Sim Pro es un programa que permite elaborar diseños en 3D de instalaciones equipadas con
robots de KUKA. Con él se puede simular y examinar sin esfuerzo cualquier diseño y concepto. Idóneo
para integradores de sistemas.

Se utilizan los componentes de KUKA.Sim incluidos en la amplia biblioteca de componentes adjunta o


descárguese modelos de internet con ayuda del catálogo web de KUKA.Sim.

La biblioteca incluye una amplia gama de componentes eficientes; éstos no son sólo geométricos, sino
que además tienen en parte una estructura paramétrica y cuentan con un comportamiento que puede
aplicarse directamente en la simulación (p. ej. cintas transportadoras, barreras luminosas, etc.). Cargue
por ejemplo una valla de protección y adapte la altura y anchura de ésta a sus necesidades. Este principio
modular evita que los componentes tengan que ser dibujados de nuevo y supone por lo tanto un ahorro
considerable de tiempo.

Los componentes disponen de puntos "magnéticos" mediante los que pueden unirse fácilmente a otros
componentes. Los componentes pueden combinarse también con señales digitales de entrada y salida de
KUKA.OfficeLite para poder, por ejemplo, controlar la garra o evaluar las señales del sensor del
componente. Las líneas transportadoras del tipo "push-pull" (empuje-tracción) y las líneas transportadoras
con velocidad constante también pueden ser simuladas en KUKA Sim Pro. KUKA.Sim Pro dispone,
además, de un lenguaje abierto para crear archivos de órdenes, Python 2.6, con el que puede ampliarse el
comportamiento de los componentes de forma flexible.

También es posible crear y guardar bibliotecas de componentes propias para sus productos; de este modo
podrá integrar dichos componentes en otros conceptos de instalación en cualquier momento y
presentárselos a sus clientes.

Los formatos CAD estándar que pueden importarse son: STL (Binario/ASCII), 3DS, VRML1, Robface y
Google Sketchup.

Se dispone de una amplia gama de funciones API y COM con las que podrá programar y utilizar sus
propios Plug-Ins para KUKA.Sim Pro.

Se utilizan las funciones de KUKA.Sim Pro y KUKA.OfficeLite para crear su programa de robot KRL.
En combinación con KUKA.OfficeLite podrá crear análisis de tiempos de ciclo en tiempo real y con alta
precisión con el fin de verificar el concepto de su instalación.
UD4 Programación de robots industriales Off-Line. 317
Arranque del programa y menús.

Para iniciar el programa ejecutaremos la aplicación situada en el escritorio:

La primera pantalla que aparece es en la que vamos a desarrollar todo el trabajo y simula un entorno en
3D es el interfaz usuario:

En la parte superior izquierda podemos aprecia una barra en la que se encuentran lo siguientes menús
desplegables:

UD4 Programación de robots industriales Off-Line. 318


Barra de herramientas:

Funciones de control de archivos:


-New: esta función permite crear un archivo nuevo.
-Open: esta función permite abrir un archivo.
-Save: esta función permite guardar un archivo.

Funciones de navegación:
- Orbit: esta función permite girar en una órbita de tres dimensiones el entorno de trabajo
alrededor del centro de interés.
- Pan: esta función permite mover el entorno de trabajo en cualquier dirección de forma paralela a
la pantalla.
- Zoom: esta función permite ampliar la zona de trabajo para una mejor visualización.
- Fill: esta función permite encuadrar dentro de la zona de trabajo todos los elementos que existen
dentro de ella de una forma rápida sin necesidad del zoom.

Funciones para manipulación de objetos:


- Select: esta función permite seleccionar cualquier elemento.
- Trans: esta función permite la traslación de todo tipo de elementos previamente seleccionados
con respecto a su sistema de coordenadas.
- Rot: esta función permite la rotación de todo tipo de elementos previamente seleccionados con
respecto a su sistema de coordenadas.
- Pnp: esta función permite la unión de piezas mediante puntos predefinidos.
- Interact: se puede utilizar con robots y algunos parametros de componentes. El cursor del ratón
cambia cuando es posible interactuar con el componente.

Herramientas para el control de la simulación:

- Repeat: Repite el ciclo de simulación.


- Play: Arranca la imulación.
- Record: Se inicia la grabación y se abre el cuadro de diálogo para guardar un PDF en 3D.
UD4 Programación de robots industriales Off-Line. 319
- Reset: Cuando queramos ejecutar de nuevo un programa, para inicializar variables.
- Slim speed: Controla la velocidad de simulación, si desplazamos el cursor hacia la izquierda
reduciremos la velocidad, y si lo desplazamos hacia la derecha la incrementaremos.
- Virtual Time/Real Time Mode: Cambia entre el modo de tiempo virtual y el modo de tiempo
real. El modo de tiempo real significa que un segundo en la simulación es de un segundo en
tiempo real. La velocidad de Tiempo virtual depende de la velocidad de la computadora. Ambos
modos de tiempo se pueden acelerar y desaceleraron

Select: La selección de los componentes del menú desplegable aparece cuando se selecciona la
herramienta de selección. Permite al usuario seleccionar un componente de una lista. También se muestra
una lista de los componentes invisibles disponibles en el mundo 3D. Esto permite al usuario seleccionar y
cambiar los parámetros de los componentes invisibles que no están disponibles para la recogida de la
World 3D.

Translate: El plano de referencia se puede seleccionar (World, Parent, Object y User). La barra de
herramientas dinámica permite transladar el objeto seleccionado con los valores numéricos. Estos valores
se pueden restablecer a cero pulsando el botón específico de coordenadas.

Rotate: La barra de herramientas dinámica rota el objeto seleccionado con los valores de entrada. Estos
valores se pueden restablecer a cero pulsando el botón específico de coordenadas. También hay un botón
para ajustar a una orientación de un marco o de la superficie. Hay una opción para configurar un origen
temporal y traducir o rotar el objeto alrededor de ese punto.

PnP: La barra de herramientas dinámica ofrece opciones plug y play de conexión para los componentes.

La etiqueta del eCat muestra los Componentes que se guardan


en su catálogo electrónico.

UD4 Programación de robots industriales Off-Line. 320


La etiqueta Param exterioriza los atributos del Componente
actualmente seleccionado y permite modificar parámetros de forma
como altura, anchura, espesor, etc.

La etiqueta KUKA Robot Controller (KRC) se usa para verificar


movimiento automatizado y puede usarse para modificar datos de
posición. La etiqueta KRC opera en cooperaciones con PC KUKA
Office Lite o KUKA Office.

La etiqueta Create dispone las funciones para crear Componentes.


Dispone de un menú desplegable en el que se encuentran todos los
elementos que contiene el componente.

UD4 Programación de robots industriales Off-Line. 321


La etiqueta Teach provee las funciones para enseñar y programar
los componentes que tienen estructuras cinemáticas, en nuestro
caso la mayor parte de los casos robots.

En la parte inferior al campo de trabajo encontramos el panel de mensajes:

Este panel es el área de salida principal para mensajes. Es posible Depurar mensajes proveen información
adicional acerca de las operaciones que están siendo ejecutadas.

Los mensajes atienden a varios tipos en función del color:


-Rojo brillante - error
-Rojo oscuro - advertencia
-Azul - informativo
-Verde - elimine las instrucciones de un programa

En la parte inmediatamente inferior encontramos la barra de estado:

Campo de información.

Activar y desactivar la visualización del plano XY del sistema de coordenadas seleccionado.

Visibilidad origen Activar y desactivar. Seleccione origen individual (origen flotante o


Referencia Origen) para alternar el menú emergente contextual (botón derecho del ratón)

UD4 Programación de robots industriales Off-Line. 322


Cambiar la visualización de los sistemas de coordenadas activada o desactivada.
Seleccionar sistemas de coordenadas individuales para cambiar el menú emergente
contextual (botón derecho del ratón).

Bloquea / desbloquea los datos posicionales asociados con el componente seleccionado.


Normalmente se utiliza para cambiar la posición de un robot sin necesidad de cambiar la
ruta de acceso de datos de posición.

Cambia el dibujo de las huellas. Si trazas son globalmente fuera, que son invisibles,
independientemente del estado de la señal en un robot individuo

Comprobar la detección de colisiones activar o desactivar para los componentes


seleccionados. Las colisiones se muestran en amarillo.

Notas activar o desactivar.

Alternar comprobar el límite conjunto o encender los componentes seleccionados. Cuando


se exceden los límites de conjuntos del eje que está fuera de carrera se mostrará rojo. Fuera
de posiciones de alcance también se muestran de color rojo. Normalmente se utiliza para el
control de los límites comunes de un robot con los datos de posición programados.

Posibilidad de visualizar las notas creadas en el programa a modo informativo.

Posibilidad de detectar si los componentes están fuera del alcance del robot para los
componentes actualmente seleccionados. Cuando la distancia es excedida el axis se
mostrará en rojo. Esta función habitualmente es usada para cotejar los límites de la juntura
de un robot con los datos de programación introducidos.

UD4 Programación de robots industriales Off-Line. 323


SIM_1.- Desplazamiento.

Desplazamiento especifico de cada eje Jog Joints

Permite mover cada articulación del robot independientemente.

UD4 Programación de robots industriales Off-Line. 324


Desplazamiento cartesiano Tim Tool.

Permite mover el elemento terminal del robot en coordenadas


cartesianas.

Rotación de eje Rot Tool.

Permite mover el elemento final del robot en coordenadas


cilíndricas

UD4 Programación de robots industriales Off-Line. 325


Programación de secuencias.- Para realizar la programación, disponemos de las siguientes herramientas:

1.- Graba la posición en la que se encuentra el robot PTP.


2.- Graba posición pero accede a ella con movimientos lineales LIN.
3.- Manipulación del gripper, para agarre de objetos.
4.- Manipulación del gripper, para que este suelte los objetos.
5.- Llamada a subrutina.
6.- Añadir comentario.
7.- Retardo.
8.- Para la simulación.
9.- Activa salida binaria
10.- Espacio donde se guardaran las posiciones.
11.- Espera a entrada Binaria.
12.- Llama a subrutina.
13.- Espera el fin de subrutina.
14.- Borra posición

Grabación de posiciones de una trayectoria.

1.- Programa principal.


2.- Nueva secuencia.
3.- Cortar secuencia.
4.- Copiar secuencia.
5.- Pegar secuencia.
6,. Borrar secuencia.
7.- Cargar programa
8.- Guardar programa
9.- Exportar a KRL

UD4 Programación de robots industriales Off-Line. 326


KUKA.OfficeLite.

KUKA.OfficeLite permite crear y optimizar offline programas para robots de KUKA en cualquier PC.
KUKA.OfficeLite es casi idéntico al software de sistema KUKA KR C4. Gracias al uso de la interfaz
original KUKA SmartHMI y de la sintaxis KRL, el manejo y la programación offline coinciden
exactamente con los del robot. KUKA.OfficeLite se suministra como imagen de disco virtual preinstalada
y puede utilizarse con el software Vmware. Los programas KRL pueden transferirse sin modificación
alguna al sistema de control del robot KUKA.

Características.

Este sistema de programación posee las mismas características que el software de sistema KUKA:
Disponibilidad de todo el repertorio de funciones de las respectivas ediciones del software de sistema,
pero sin posibilidad de conectar hardware periférico (p. ej. bus de campo basado en Ethernet).
Comprobación de sintaxis KRL mediante el compilador y el interpretador disponibles; creación de
programas KRL de usuario ejecutables.
Control completo de la ejecución de un programa de aplicación de robot en tiempo real. Ello permite
optimizar la duración de los ciclos.
Optimización de programas: el software de tecnología KUKA se puede utilizar e instalar en todo
momento.
De este modo, en un PC estándar se puede disponer del software de sistema completo de KUKA.
Es posible simular señales de salida digitales para comprobar en el programa KRL la reacción a dichas
señales.
No es posible emplear KUKA.OfficeLite para controlar un robot real.

Campo de aplicación.

KUKA.OfficeLite es el controlador virtual de robots KUKA y ha sido concebido principalmente para la


programación y el desarrollo offline de aplicaciones.

UD4 Programación de robots industriales Off-Line. 327


SIM_1. Insertar componentes.

- Insertar KR 6 R900 SIXX Agilus.

- Insertar la herramienta Torch 22.5

UD4 Programación de robots industriales Off-Line. 328


- Acoplar la herramienta al robot (PnP).

- Insertar mesa y cambiar las dimensiones a 1080 x 600 x 620.

- KUKA SIM Library 2.2\General\Office\Furniture\Table A

UD4 Programación de robots industriales Off-Line. 329


- Trasladar la mesa a la posición X=330 Y=0 Z=0

- Trasladar el robot a la posición X= 0 Y=0 Z=620

- Insertar el controlador KRC4


KUKA SIM Library 2.2\KUKA\Controllers\KRC3\KRC4 compact
Trasladar el KRC4 la posición X=315 Y=210 Z=0

Guardar el ejercicio con el nombre SIM_1.

UD4 Programación de robots industriales Off-Line. 330


SIM_2. Programación de movimientos PTP.

Teach KRL Situación Velocidad


PTP HOME A1= 0 A2=-90 A3=90 A4=0 A5=0 A6=0 100%
PTP P1 5 cm altura base izq 100%
PTP P2 1 cm altura base izq 50%
WAIT 2 Seg
PTP P3 5 cm altura base izq 50%
PTP P4 5 cm altura base der. 50%
PTP P5 1 cm altura base der. 50%
WAIT 2 Seg
PTP P6 5 cm altura base der. 50%
PTP HOME A1= 0 A2=-90 A3=90 A4=0 A5=0 A6=0 100%

UD4 Programación de robots industriales Off-Line. 331


SIM_3. Programación de movimientos LIN.

Teach KRL Situación Velocidad


PTP HOME A1= 0 A2=-90 A3=90 A4=0 A5=0 A6=0 100%
PTP P1 25 cm y 5 cm altura 100%
LIN P2 1 cm altura 50%
LIN P3 50%
WAIT 2 Seg
LIN P4 50%
WAIT 2 Seg
LIN P5 1 cm altura 50%
LIN P6 25 cm y 5 cm altura 50%
PTP HOME A1= 0 A2=-90 A3=90 A4=0 A5=0 A6=0 100%

UD4 Programación de robots industriales Off-Line. 332


SIM_4. Desplazamiento caja.

Robot KR6 My Components > KR6

Ventosa My Components > Generic RVacuum

Mesa General > Office > Table C

Caja General > Objects > Beberage > Trasports > Dolly Tray

UD4 Programación de robots industriales Off-Line. 333


SIM_5. Celda llenado cajas.

El robot 1 coge del suelo la caja y la traslada encima de la mesa.

El robot 2 coge el objeto de la segunda mesa y lo introduce en la caja depositada en la primera mesa.

UD4 Programación de robots industriales Off-Line. 334


SIM_6. Desplazamiento de objetos.

UD4 Programación de robots industriales Off-Line. 335


SIM_7. Paletizador de cajas.

Insertar conveyor 1.
Insertar conveyor 2 de 700 x 700 x 700.
Unir los dos conveyor con PNP.
Insertar block y modificar el tamaño a 400 x 400 x 400.
Guardar el block modificado como:
File > save componet as > Block
Insertat pallet.
Editar el conveyor 1 y 2.
En el conveyor 1 insertar el Block guardado.
Param > Creator > Part > Ruta para insertar el Block.

UD4 Programación de robots industriales Off-Line. 336


SIM_8. Paletizador de botellas.

UD4 Programación de robots industriales Off-Line. 337


SIM_9. Manipulación de pantallas.

BucketConveyor.

Insertat “KR6” y cintas.


Insertar “BucketConveyor”.
Seleccionar “PNP”.
Seleccionar “Conect Abstract interface” y conectarlo con el “KR6”.

Star a Remote Routine BucketConveyor::GraspToConveyor


Star a Remote Routine BucketConveyor::DriveOneStep

UD4 Programación de robots industriales Off-Line. 338


SIM_10. Tools.

UD4 Programación de robots industriales Off-Line. 339


SIM_11. Base.

$OUT[17] refers to a red trace at TOOL_DATA[1].


$OUT[32] refers to a khaki trace at TOOL_DATA[16]

UD4 Programación de robots industriales Off-Line. 340


SIM_12. Training Cell KR6 Agilus.

http://www.youtube.com/watch?v=Y3STLp3qQgo

UD4 Programación de robots industriales Off-Line. 341


SIM_13. Training Cell KR6.

http://www.youtube.com/watch?v=PY5Lv0yiymE

UD4 Programación de robots industriales Off-Line. 342


SIM_14. Paletizador.

http://www.youtube.com/watch?v=U-CjKKG9_DI

https://www.youtube.com/watch?v=OaO6BrNQWXI

UD4 Programación de robots industriales Off-Line. 343


SIM_15. Doblado de chapas.

https://www.youtube.com/watch?v=PeQeY7nCwHo

UD4 Programación de robots industriales Off-Line. 344


SIM_16. Prensas.

https://www.youtube.com/watch?v=fOhFpYgsiAE&list=UUqXSuUJS45RXxCO4MMv2XCA

https://www.youtube.com/watch?v=fUFrHDTAWBg

https://www.youtube.com/watch?v=Cgdssu5cJ1o

UD4 Programación de robots industriales Off-Line. 345


http://www.youtube.com/watch?v=2COtY2vU1mg

http://www.youtube.com/watch?v=hyOvwn-P55Q

UD4 Programación de robots industriales Off-Line. 346


http://www.youtube.com/watch?v=gpp6CvCgtNY&list=TLgNPuWhx0TFI

http://www.youtube.com/watch?v=CwzxwRJvCRc&feature=c4-
overview&list=UUDZlfEcsMr7ZcWz0xmfoL2Q

UD4 Programación de robots industriales Off-Line. 347


http://www.youtube.com/watch?v=hdUY2TtHXao

http://www.youtube.com/watch?v=YTf99yODUmE

UD4 Programación de robots industriales Off-Line. 348


ABB RobotStudio.

Insertar y mover robot.

https://www.youtube.com/watch?v=e_hx4CGLTpo

Simular trayectoria robot.

https://www.youtube.com/watch?v=lSFMjcBLgM8

UD4 Programación de robots industriales Off-Line. 349


Instrucción MoveL

Descripción general La ventaja de RAPID es que, excepto por el hecho de que presenta una funcionalidad
que aparece en otros lenguajes de programación de alto nivel, ha sido diseñado
especialmente para controlar robots. Y lo que es más importante, existen instrucciones
para hacer que el robot se mueva.

MoveL Una instrucción de movimiento simple puede tener el aspecto siguiente:


MoveL p10, v1000, fine, tool0;

MoveL es una instrucción que mueve el robot linealmente (en una línea recta) desde su
posición actual hasta la posición especificada.

p10 especifica la posición hasta la que debe moverse el robot.

v1000 especifica que la velocidad del robot debe ser de 1.000 mm/s.
fine especifica que el robot debe moverse exactamente hasta la posición especificada y
no tomar atajos en las esquinas en su desplazamiento hasta la siguiente posición.

especifica que lo que debe moverse hasta la posición especificada es la brida de


tool0
montaje situada en el extremo del robot.

Sintaxis de MoveL MoveL ToPoint Speed Zone Tool;

ToPoint. El punto de destino, definido por una constante del tipo de dato robtarget. Al
programar con el FlexPendant, puede asignar un valor robtarget apuntando a una
posición con el robot. Al programar fuera de línea, puede resultar complicado calcular
las coordenadas de una posición.
Robtarget la posición x=600, y=-100, z=800 puede declararse y asignarse de la forma
siguiente:

CONST robtarget p10 := [ [600, -100, 800], [1, 0, 0, 0], [0, 0, 0, 0], [ 9E9, 9E9, 9E9,
9E9, 9E9, 9E9] ];

Speed. La velocidad del movimiento, definida por una constante del tipo de dato
speeddata. Existe un buen número de valores predefinidos, como por ejemplo:
speeddata predefinido Valor

v5 5 mm/s
v100 100 mm/s
v1000 1.000 mm/s
vmax Velocidad máxima del robot

Zone Especifica una zona de esquina definida por una constante del tipo de dato
zonedata. Existe muchos valores predefinidos, como por ejemplo:
zonedata predefinido Valor

UD4 Programación de robots industriales Off-Line. 350


fine El robot irá exactamente hasta la posición especificada.
z10 La trayectoria del robot puede tomar atajos en las esquinas si está a menos de
10 mm de ToPoint.
z50 La trayectoria del robot puede tomar atajos en las esquinas si está a menos de
50 mm de ToPoint.

Las siguientes instrucciones de RAPID darán lugar a la trayectoria de robot mostrada a


continuación:

MoveL p10, v1000, z50, tool0;


MoveL p20, v1000, fine, tool0;

Tool. Especifica la herramienta utilizada por el robot, definida por una variable
persistente del tipo de dato tooldata. Si hay una pistola de soldadura, una pistola de
adhesivo o un rotulador fijado al robot, queremos programar el ToPoint de la punta de
esta herramienta. Esto se realiza automáticamente si se declara, asigna y utiliza un
valor de tooldata en la instrucción MoveL.
tool0 es una herramienta predefinida que representa al robot sin ninguna herramienta
montada en él y no debe ser declarada ni asignada. Cualquier otra herramienta debe ser
declarada y asignada antes de usarla.

Ejemplos con MoveL

Trazar un cuadrado Un robot sostiene un rotulador sobre un papel colocado sobre una mesa. Queremos que
el robot baje la punta del rotulador para colocarla en el papel y que a continuación
trace un cuadrado.

PERS tooldata tPen := [ TRUE, [[200, 0, 30], [1, 0, 0 ,0]], [0.8, [62, 0, 17], [1, 0, 0, 0],
0, 0, 0]];
CONST robtarget p10 := [ [600, -100, 800], [0.707170, 0, 0.707170, 0], [0, 0, 0, 0], [
9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
CONST robtarget p20 := [ [600, 100, 800], [0.707170, 0, 0.707170, 0], [0, 0, 0, 0], [
9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
CONST robtarget p30 := [ [800, 100, 800], [0.707170, 0, 0.707170, 0], [0, 0, 0, 0], [
UD4 Programación de robots industriales Off-Line. 351
9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
CONST robtarget p40 := [ [800, -100, 800], [0.707170, 0, 0.707170, 0], [0, 0, 0, 0], [
9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];

PROC main()
MoveL p10, v200, fine, tPen;
MoveL p20, v200, fine, tPen;
MoveL p30, v200, fine, tPen;
MoveL p40, v200, fine, tPen;
MoveL p10, v200, fine, tPen;
ENDPROC

Trazar con zonas de Se traza la misma figura que en el ejemplo anterior, pero con una zona de esquina de
esquina
20 mm en p20 y una zona de esquina de 50 mm en p40.

VAR tooldata tPen := ...


...
VAR robtarget p40 := ...
PROC main()
MoveL p10, v200, fine, tPen;
MoveL p20, v200, z20, tPen;
MoveL p30, v200, fine, tPen;
MoveL p40, v200, z50, tPen;
MoveL p10, v200, fine, tPen;
ENDPROC

UD4 Programación de robots industriales Off-Line. 352


Otras instrucciones de movimiento

Distintas instrucciones RAPID cuenta con distintas instrucciones de movimiento. Las más comunes son
de movimiento MoveL, MoveJ y MoveC.

MoveJ MoveJ se utiliza para mover el robot rápidamente de un punto a otro cuando no es
imprescindible que el movimiento siga una línea recta.
Utilice MoveJ para mover el robot hasta un punto en el aire situado a poca distancia de
donde va a trabajar el robot. La instrucción MoveL no funciona si, por ejemplo, la base
del robot está entre la posición actual y la posición programada o si la reorientación
de la herramienta es demasiado grande. MoveJ puede usarse siempre en estos casos.
La sintaxis de MoveJ es similar a la de MoveL.

Ejemplo

MoveJ p10, v1000, fine, tPen;

MoveC MoveC se usa para mover el robot en círculo describiendo un arco.

Ejemplo.

MoveL p10, v500, fine, tPen;


MoveC p20, p30, v500, fine, tPen;
MoveL p40, v500, fine, tPen;

UD4 Programación de robots industriales Off-Line. 353


Señales de E/S

Acerca de las señales Las señales se utilizan para la comunicación con los equipos externos con los
que coopera el robot. Las señales de entrada son activadas por los equipos
externos y pueden usarse en el programa de RAPID para iniciar la realización
de alguna operación con el robot. Las señales de salida son activadas por el
programa de RAPID y actúan para comunicar a los equipos externos que
deben hacer algo.

Configuración de señales Las señales son configuradas en los parámetros de sistema del sistema de
robot. Es posible definir nombres personalizados para las señales. No deben
declararse en el programa de RAPID.

Entrada digital Las señales digitales de entrada pueden tener los valores 0 ó 1. El programa
de RAPID puede leer su valor pero no cambiarlo.

Ejemplo
Si la señal digital de entrada di1 tiene el valor 1, el robot se mueve.
IF di1 = 1 THEN
MoveL p10, v1000, fine, tPen;
ENDIF

Salida digital Las señales digitales de salida pueden tener los valores 0 ó 1. El programa de
RAPID puede establecer el valor de una señal digital de salida y con ello
influir en el comportamiento de los equipos externos. El valor de una señal
digital de salida se establece con la instrucción SetDO.

Ejemplo
El robot cuenta con una herramienta pinza que puede cerrarse con la señal
digital de salida do_grip. El robot se mueve hasta la posición en la que se
encuentra el rotulador y cierra la pinza. A continuación, el robot se mueve
hasta donde debe trazar, ahora usando la herramienta tPen.

MoveJ p0, vmax, fine, tGripper;


SetDO do_grip, 1;
MoveL p10, v1000, fine, tPen;

UD4 Programación de robots industriales Off-Line. 354


SIM_1_ABB.

- Insertar IRB 120


- Insertar la herramienta myTool
- Conectar myToll a IRB 120
- Fijar posición X=0, Y=0, Z=620
- Insertar solido Modelado>Solido>Tetraedro
- Largo 800, ancho 600, alto 620
- Fijar posición X = -220, Y=-300, Z=0
- Guardar SIM_1_ABB

UD4 Programación de robots industriales Off-Line. 355


SIM_2_ABB.

https://www.youtube.com/watch?v=A_FJ353uip4

UD4 Programación de robots industriales Off-Line. 356


SIM_3_ABB.

https://www.youtube.com/watch?v=9BAmHCXqloo

UD4 Programación de robots industriales Off-Line. 357


FLEXPENDANT.

Mover robot con

https://www.youtube.com/watch?v=8wt_geDlUwQ

https://www.youtube.com/watch?v=A3NtdRHoDVY

UD4 Programación de robots industriales Off-Line. 358


SIM_4_ABB FLEXPENDANT.

https://www.youtube.com/watch?v=A_FJ353uip4

UD4 Programación de robots industriales Off-Line. 359


SIM_5_ABB FLEXPENDANT.

https://www.youtube.com/watch?v=9BAmHCXqloo

UD4 Programación de robots industriales Off-Line. 360


SIM_6_ABB FLEXPENDANT.

https://www.youtube.com/watch?v=7GnXSEwTvtk

Insertar IRB120. X= 0 Y=0 Z =0


Insertar Pieza 1 color rojo 200 x 100 x 50 X= -250 Y = -500 Z =0
Insertar Pieza 2 color amarillo 200 x 100 x 50 X= -50 Y = -500 Z =0
Insertar Pieza 3 color verde 200 x 100 x 50 X= 150 Y = -500 Z =0

Crear componente inteligente. "SC_Ventosa".


Inserta cilindro color verde "Ventosa" Diámetro 25 Altura 25

UD4 Programación de robots industriales Off-Line. 361


Crear herramienta "MyNewTool"
Seleccionar Pieza > Usar existente > Ventosa.
Nombre TCP > "MyNewTool" > Insertar.
Conectar herramienta a IRB 120 Actualizar la posición de "SC_Ventosa".

Añadir componente subordinado. "Attecher". Conecta un objeto


Añadir componente subordinado. "Detacher". Desconecta un objeto conectado.
Añadir componente subordinado "LogicSRLatch" Aplicar-restablece
Añadir componente subordinado. "Line Sensor" Detecta objeto.

Añadir componente subordinado. "Line Sensor" Detecta objeto.


Start X=0 Y=0 Z=28
End X=0 Y=0 Z= 80
Radio 2 mm
SensedPart X=200 Y=-400 Z=0

UD4 Programación de robots industriales Off-Line. 362


Añadir señales de E/S

Añadir conexión de E/S.

UD4 Programación de robots industriales Off-Line. 363


Conectar la Ventosa al IRB 120 a través de I/O.

Controlador > Editor de configuración > I/O

Crear "Unit "ABB.

Cear "Signal". OUT_1, OUT_2, IN_1.

UD4 Programación de robots industriales Off-Line. 364


Lógica de la estación.

Simulación > Lógica de estación.

UD4 Programación de robots industriales Off-Line. 365


SIM_7_ABB.

https://www.youtube.com/watch?v=tN0DvWH1o1k
Insertar IIB 4600
Insertat Euro Pallet Importar biblioteca > Equipamiento.
Crear Pieza_1 400 x 400 x 400 Material Stonewall
Posición X=1220 Y=2750 Z=0 Invisible
Insertar SC_BelConveyoy Configura cinta transportadora. Descargado de WEB ABB
Posición X=1220 Y=2750 Z=0
Orientación X=0 Y = 0 Z= -90

UD4 Programación de robots industriales Off-Line. 366


Insertar SC Vacuun ToolCreator Creador de herramientas de ventosa. Descargado de WEB ABB

Crear Componente inteligente Ventosa y conectar al IRB 4600

Lógica de la estación.

UD4 Programación de robots industriales Off-Line. 367


Comunicación con el FlexPendant

Acerca de las instrucciones RAPID cuenta con varias instrucciones para escribir información para el
de lectura y escritura operador del robot, así como para recibir información del operador. Ya hemos
visto TPWrite en los ejemplos anteriores. Las únicas instrucciones que
estudiaremos aquí son TPWrite, TPReadFK y TPReadNum.

TPWrite La escritura de un mensaje para el operador puede hacerse con la instrucción


TPWrite.

TPrite "Now producing exhaust pipes";

Escrita de una variable de cadena


La cadena de texto escrita en el FlexPendant puede provenir de una variable
de cadena. El texto escrito también puede ser el resultado de concatenar una
variable de cadena con otra cadena.

VAR string product := "exhaust pipe";


! Write only the product on the FlexPendant
TPWrite product;
! Write "Producing" and the product on the FlexPendant
TPWrite "Producing " + product;

Escritura de una variable numérica


Es posible añadir una variable numérica a continuación de la cadena
utilizando el argumento opcional \Num.

VAR num count := 13;


TPWrite "The number of produced units is: " \Num:=count;

TPReadFK Al escribir un programa de RAPID que requiere que el operador elija una
opción, TPReadFK es una instrucción útil. Permite la visualización de hasta
cinco teclas de función y el operador puede elegir cuál de ellas tocar. Los
botones corresponden a los valores 1 a 5.

UD4 Programación de robots industriales Off-Line. 368


VAR num answer;
TPReadFK answer, "Select which figure to draw", "Square", "Triangle",
stEmpty, stEmpty, stEmpty;
IF answer = 1 THEN
! code to draw square
ELSEIF answer = 2 THEN
! code to draw triangle
ELSE
! do nothing
ENDIF

Si el usuario selecciona "Square", la variable numérica answer recibe el valor


1. Si el usuario selecciona "Triangle", la variable numérica answer recibe el
valor 2.
Es posible especificar cinco teclas de función. Si no necesita usar una tecla,
escriba stEmpty en lugar del texto del botón.

TPReadNum TPReadNum permite al operador escribir un número en el FlexPendant, en


lugar de elegir una opción.

VAR num answer;


TPReadNum answer, "How many times shall I draw the figure?";
FOR i FROM 1 TO answer DO
! code to draw figure
ENDFOR

UD4 Programación de robots industriales Off-Line. 369


SIM_8_ABB.

https://www.youtube.com/watch?v=wGp26SqWH0o

Insertar Robot IRB 140


Insertar Herramienta PKI 500
Conectar herramienta al robot.

Dibujar la base 500 x 800 x 300 x= 300 Y=-400 z=0


Dibujar cuadrado 200 x 200 x 50 x= 450 Y=-350 z=300
Dibujar circulo D200 H50 x= 550 Y=0 z=300
Dibujar piramide CL100 x H200 x NC4 x= 550 Y=250 z=300

Crear subrutina Cuadrado


Crear subrutina Circulo
Crear subrutina Pirámide
Cada vez que se ejecute cada subrutina activar un mensaje en la Flexpendant.

UD4 Programación de robots industriales Off-Line. 370


SIM_9_ABB.

https://www.youtube.com/watch?v=wGp26SqWH0o

Establecer objeto de trabajo W_MESA

UD4 Programación de robots industriales Off-Line. 371


SIM_10_ABB.

https://www.youtube.com/watch?v=6cXwZPPFTbY

Insertar Robot IRB 440_60_196


Insertar Herramienta AW_Gun_PSF_25
Conectar herramienta al robot.
Importar Pieza y mesa.
Establecer objeto de trabajo W_MESA

Crear trayectorias con MoveJ y MoveL


Convertir las MoveL a MoveC. Seleccionar dos MoveL y "Convertir en movimiento circular"

UD4 Programación de robots industriales Off-Line. 372


SIM_11_ABB.

https://www.youtube.com/watch?v=G3-j4-TpUOU

Importar Fresadora.
Crear Herramienta T_Fresadora.
Guardar herramienta T_Fresadora como biblioteca.
Insertar IRB 4600-45/2.05.
Conectar T_FRESADORA al robot.
Importar Pole.
Importar Mesa_pieza_b. Pos X=1100 Y=0 Z = 1000 Ori X= 0 Y=0 Z=90
Importar Pieza B. Pos X=1100 Y=0 Z = 1050 Ori X= 0 Y=0 Z=90
Crear Objeto de trabajo W_MESA.

UD4 Programación de robots industriales Off-Line. 373


SIM_12_ABB.

https://www.youtube.com/watch?v=G3-j4-TpUOU

CD ABB > Opciones adicionales > TrackMotion


> TrackMotion Type A

Abrir estación vacía.


Insertar robot IRB 6660-100/3.35
Insertar guía lineal track IRBT 6004 7.7mts
Conectar robot con guía lineal, actualizando el sistema de coordenadas.
Sistema de robot desde diseño.

UD4 Programación de robots industriales Off-Line. 374


SIM_EJE9_ABB.

https://www.youtube.com/watch?v=ZpqbLbEoj_M

Insertar IRB 120 X=0 Y=0 Z=620


Insertar Mesa 800 x 600 x 620 Marble X=-200 Y= -300 Z=0
Insertar Pieza_1 40 x 40 x 40 X=300 Y= -165 Z=620
Insertar Pieza_2 40 x 40 x 40 X=410 Y= -165 Z=620
Insertar Pieza_3 40 x 40 x 40 X=520 Y= -165 Z=620
Importar sc_shunkgripper y renombrar por PINZA
Conectar Pinza a robot.
Configurar I/O.
Lógica estación.

UD4 Programación de robots industriales Off-Line. 375


Lenguaje de programación ABB Rapid.

Variables

Tipos de datos RAPID cuenta con muchos tipos de datos diferentes. De momento, nos
centraremos en los cuatro tipos de datos generales:

Tipo
de Descripción
dato
Datos numéricos, que pueden ser enteros y con decimales. Por
num
ejemplo 10 ó 3,14159.
Un dato numérico con una resolución mayor que la de num . Puede ser
un número entero (capaz de manejar valores grandes) y un número con
dnum
decimales (con más posiciones decimales). Por ejemplo
4503599627370496 ó 3,141592653589793.
Una cadena de texto. Por ejemplo "Esto es una cadena". Máximo 80
string
caracteres.
Una variable booleana (lógica). Sólo puede tener los valores TRUE o
bool
FALSE.

Todos los demás tipos de datos se basan en estos cuatro. Comprendiendo estos
tipos, la forma de realizar operaciones con ellos y cómo pueden ser
combinados para formar tipos de datos complejos, podrá comprender
fácilmente todos los tipos de datos.

Características de las variables Las variables con tienen valores de datos. Al detener el programa y volverlo a
poner en marcha, la variable conserva su valor, pero si se mueve el puntero de
programa a Main el valor del dato de la variable se pierde.

Declaración de una variable La declaración de una variable es la forma de definir un nombre de variable y
determina el tipo de dato que debe tener. Las variables se declaran con la
palabra clave VAR, siguiendo la sintaxis:

VAR datatypeidentifier;

Ejemplo
VAR num length;
VAR dnum pi;
VAR string name;
VAR bool finished;

Asignación de valores La asignación de un valor a una variable se hace con la instrucción :=

length := 10;
pi := 3.141592653589793;
name := "John"
UD4 Programación de robots industriales Off-Line. 376
finished := TRUE;

Recuerde que := no es un signo de igual que. Significa la asignación de la


expresión que aparece a su derecha de la variable que aparece a la izquierda.
Sólo puede indicarse una única variable a la izquierda de :=

Por ejemplo, lo siguiente es un código de RAPID correcto que da como


resultado que reg1 tenga el valor 3:

reg1 := 2;
reg1 := reg1 + 1;

La asignación puede hacerse al mismo tiempo que la declaración de la


variable:

VAR num length := 10;


VAR dnum pi := 3.141592653589793;
VAR string name := "John";
VAR bool finished := TRUE;

Variables persistentes

Qué es una variable persistente Las variables persistentes son básicamente iguales a una variable normal, pero
con una diferencia importante. La variable persistente recuerda el último valor
que se le haya asignado, incluso si el programa es detenido y puesto en marcha
de nuevo desde el principio.

Declaración de una variable Las variables persistentes se declaran con la palabra clave PERS. En el
persistente
momento de la declaración es necesario indicar un valor inicial.

PERS num nbr := 1;


PERS string string1 := "Hello";

Ejemplo Considere el ejemplo de código siguiente:

PERS num nbr := 1;


PROC main()
nbr := 2;
ENDPROC

Si se ejecuta este programa, el valor inicial cambia a 2. La próxima vez que se


ejecute el programa, el código del programa tendrá el aspecto siguiente:

PERS num nbr := 2;


PROC main()
nbr := 2;
ENDPROC

UD4 Programación de robots industriales Off-Line. 377


Operadores

Operadores numéricos Estos operadores operan con el tipo de datos num y devuelven el tipo de datos num.
Es decir, en los ejemplos siguientes, las variables reg1, reg2 y reg3 son del tipo de
dato num.

Operador Descripción Ejemplo


+ Suma reg1 := reg2 + reg3;
Resta reg1 := reg2 - reg3;
-
Menos unario reg1 := -reg2;
* Multiplicación reg1 := reg2 * reg3;
/ División reg1 := reg2 / reg3;

Operadores relacionales Estos operadores devuelven el tipo de dato bool.


En los ejemplos, reg1 y reg2 son del tipo de dato num mientras que flag1 es del tipo
bool.

Operador Descripción Ejemplo


flag1 := reg1 = reg2;
= igual a flag1 es TRUE si reg1 es igual a reg2
flag1 := reg1 < reg2;
< menor que flag1 es TRUE si reg1 es menor que reg2
flag1 := reg1 > reg2;
> mayor que flag1 es TRUE si reg1 es mayor que reg2
flag1 := reg1 <= reg2;
<= menor que o igual a flag1 es TRUE si reg1 es menor que o igual a reg2
flag1 := reg1 >= reg2;
>= mayor que o igual a flag1 es TRUE si reg1 es mayor que o igual a reg2
flag1 := reg1 <> reg2;
<> distinto de flag1 es TRUE si reg1 es distinto de reg2

Los operadores lógicos se usan con frecuencia junto con la instrucción IF. Para ver
ejemplos de código.

Operador de cadena
Operador Descripción Ejemplo
VAR string firstname := "John";
VAR string lastname := "Smith";
Concatenación de VAR string fullname;
+ fullname := firstname + " " + lastname;
cadenas
La variable fullname contendrá la cadena "John
Smith".

UD4 Programación de robots industriales Off-Line. 378


IF THEN

Acerca del flujo del programa Los ejemplos de programa que hemos visto hasta ahora se ejecutan
secuencialmente, de arriba abajo. En los programas más complejos, es posible
que deseemos controlar qué código se ejecuta, en qué orden y cuántas veces.
En primer lugar echaremos un vistazo a cómo crear las condiciones necesarias
para determinar si una secuencia de programa debe ejecutarse o no.

IF La instrucción IF puede usarse cuando un conjunto de sentencias sólo debe


ejecutarse si se cumple una condición determinada.
Si la condición lógica de la sentencia IF se cumple, el código de programa
situado entre las palabras clave THEN y ENDIF se ejecuta. Si la condición no se
cumple, ese código no se ejecuta y la ejecución continúa después de ENDIF.
Ejemplo
En este ejemplo, la cadena string1 se escribe en el FlexPendant si no es una
cadena vacía. Si string1 es una cadena vacía, es decir, no contiene ningún
carácter, no se realiza ninguna acción.
VAR string string1 := "Hello";
IF string1 <> "" THEN
TPWrite string1;
ENDIF

ELSE Una sentencia IF también puede contener código de programa para su ejecución
si la condición no se cumple.
Si la condición lógica de la sentencia IF se cumple, el código de programa
situado entre las palabras clave THEN y ELSE se ejecuta. Si la condición no se
cumple, el código situado entre las palabras clave ELSE y ENDIF se ejecuta.
Ejemplo
En este ejemplo, la cadena string1 se escribe en el FlexPendant si no es una
cadena vacía. Si string1 es una cadena vacía, se escribe el texto "The string is
empty".

VAR string string1 := "Hello";


IF string1 <> "" THEN
TPWrite string1;
ELSE
TPWrite "The string is empty";
ENDIF

ELSEIF En ocasiones existen más de dos secuencias de programa alternativas. En este


caso, puede usar ELSEIF para crear distintas alternativas.
Ejemplo
En este ejemplo se escriben textos diferentes en función del valor de la variable
time.

VAR num time := 38.7;


IF time < 40 THEN
UD4 Programación de robots industriales Off-Line. 379
TPWrite "Part produced at fast rate";
ELSEIF time < 60 THEN
TPWrite "Part produced at average rate";
ELSE
TPWrite "Part produced at slow rate";
ENDIF

Observe que, dado que la primera condición se cumple, se escribe el primer


texto. Los otros dos textos no se escribirán (aunque es cierto que time tiene un
valor inferior a 60).

Ejemplos con condiciones lógicas y sentencias IF

Ejemplo Usar la sentencia IF para determinar qué texto debe escribir en el FlexPendant. Escribir en el
FlexPendant qué pieza se produce a mayor velocidad.

VAR string part1 := "Shaft";


VAR num time1;
VAR string part2 := "Pipe";
VAR num time2;
PROC main()
time1 := 41.8;
time2 := 38.7;
IF time1 < time2 THEN
TPWrite part1 + " is fastest to produce";
ELSEIF time1 > time2 THEN
TPWrite part2 + " is fastest to produce";
ELSE
TPWrite part1 + " and " + part2 + " are equally fast to produce";
ENDIF
ENDPROC

Ejemplo Si la producción de una pieza requiere más de 60 segundos, escribir un mensaje en el FlexPendant.
Si la variable booleana full_speed contiene FALSE, el mensaje indicará al operador que debe
incrementar la velocidad del robot. Si full_speed contiene TRUE, el mensaje pedirá al operador que
examine el motivo de la lentitud de la producción.

VAR num time := 62.3;


VAR bool full_speed := TRUE;
PROC main()
IF time > 60 THEN
IF full_speed THEN
TPWrite "Examine why the production is slow";
ELSE
TPWrite "Increase robot speed for faster production";
ENDIF
ENDIF
ENDPROC

UD4 Programación de robots industriales Off-Line. 380


TEST

TEST se utiliza cuando es necesario ejecutar instrucciones diferentes en


Utilización función del valor de una expresión o un dato.
Si no hay demasiadas alternativas, también es posible usar la instrucción
IF..ELSE.

El ejemplo que aparece a continuación ilustra la instrucción TEST:


Ejemplos básicos Ejemplo 1

TEST reg1
CASE 1,2,3 :
routine1;
CASE 4 :
routine2;
DEFAULT :
TPWrite "Illegal choice";
Stop;
ENDTEST

Se ejecutan instrucciones diferentes en función del valor de reg1. Si el valor es


1, 2 ó 3, se ejecuta routine1. Si el valor es 4, se ejecuta routine2. De lo
contrario, se envía un mensaje de error a la unidad de programación y la
ejecución se detiene.

TEST Test data {CASE Test value {, Test value} : ...} [ DEFAULT: ...]
Argumentos ENDTEST

Test data
Tipo de dato: All
El dato o la expresión con el que se comparará el valor de prueba.

Test value
Tipo de dato: Del mismo tipo que test data
El valor que debe tener el dato de prueba para que se ejecuten las instrucciones
asociadas.

Sintaxis TEST <expression>


{ CASE <test value> { ',' <test value> } ':'
<statement list> }
[ DEFAULT ':'
<statement list> ]
ENDTEST

UD4 Programación de robots industriales Off-Line. 381


Bucle FOR

Repetición de una secuencia de código Otra forma de controlar el flujo del programa es repetir una secuencia
de código del programa un número determinado de veces.

Cómo funciona el bucle FOR El código siguiente repetirá 5 veces la escritura de "Hola":
FOR i FROM 1 TO 5 DO
TPWrite "Hello";
ENDFOR

La sintaxis de la sentencia FOR es la siguiente:

FOR counter FROM startvalue TO endvalue DO


program code to be repeated
ENDFOR

El valor del contador no tiene por qué declararse, pero actúa como una
variable numérica dentro del bucle FOR. La primera vez que se ejecuta
el código, el contador tiene el valor especificado por valorinicial. A
continuación, el valor del contador se incrementa en 1 cada vez que se
ejecuta el código. La última vez que se ejecuta el código es cuando el
valor de contador iguala a valor final. A continuación, la ejecución
continúa con el código de programa que aparezca a continuación de
ENDFOR.

Utilización del valor del contador El valor del contador puede usarse en el bucle FOR.
Por ejemplo, el cálculo de la suma de todos los números de 1 a 50
(1+2+3+...+49+50) puede programarse de la forma siguiente:

VAR num sum := 0;


FOR i FROM 1 TO 50 DO
sum := sum + i;
ENDFOR

No se permite asignar un valor para el contador dentro del bucle FOR.

UD4 Programación de robots industriales Off-Line. 382


Bucle WHILE

Repetición con una condición La repetición de una secuencia de código puede combinarse con la
ejecución condicional de la secuencia de código. Con el bucle WHILE, el
programa seguirá ejecutando la secuencia de código siempre y cuando se
cumpla la condición.

Sintaxis de WHILE La sintaxis del bucle WHILE es la siguiente:

WHILE condition DO
program code to be repeated
ENDWHILE

Si la condición no se cumple desde el principio, la secuencia de código no


llega a ejecutarse nunca. Si la condición se cumple, la secuencia de código se
ejecuta repetidamente hasta que la condición deja de cumplirse.

Ejemplo El código de programa siguiente suma números (1+2+3+...) hasta que la


suma llegue a 100.

VAR num sum := 0;


VAR num i := 0;
WHILE sum <= 100 DO
i := i + 1;
sum := sum + i;
ENDWHILE

No cree bucles eternos o pesados Si la condición nunca deja de cumplirse, el bucle continuará
sin una instrucción wait
constantemente y consumirá enormes cantidades de potencia del ordenador.
La escritura de un bucle eterno está permitida, pero en ese caso debe
contener alguna instrucción de espera que permita al ordenador realizar
otras tareas entretanto.
Los bucles pesados (con gran cantidad de cálculos y escrituras en el
FlexPendant, sin instrucciones de movimiento) pueden requerir alguna
instrucción de espera incluso si existe un número limitado de bucles.

WHILE TRUE DO
! Some code
...
! Wait instruction that waits for 1 second
WaitTime 1;
ENDWHILE

Recuerde que las instrucciones de movimiento funcionan como


instrucciones de espera, dado que la ejecución no continúa hasta que el
robot ha alcanzado su objetivo.

UD4 Programación de robots industriales Off-Line. 383


SIM_PROG_1_ABB.

https://www.youtube.com/watch?v=Z5P92_sA85M

UD4 Programación de robots industriales Off-Line. 384


PROG_1_1, LOOP , FOR, IF THEN.

UD4 Programación de robots industriales Off-Line. 385


UD4 Programación de robots industriales Off-Line. 386
PROG_1_2, TEST, CASE.

UD4 Programación de robots industriales Off-Line. 387


UD4 Programación de robots industriales Off-Line. 388
PROG_2.- Paletizador de cajas.

PROG_2_1 Paletizador (Cinta).

https://www.youtube.com/watch?v=S3K41sZTtKg

CONST robtarget Target_HOME:=[[408.511634473,0,605.68726027...


CONST robtarget Target_COGER:=[[490.000074388,-179.999862855,179.999785915]...
VAR robtarget POS_CINTA:=[[-0.000007506,-0.000012946,-0.000014823]...
VAR robtarget POS_PALET:=[[0.000096577,-0.000232796,0.000144213]...

! Declaración de variables
VAR num J;
VAR num LARGO;
VAR num ANCHO;
VAR num ALTO;
VAR num CNT_CINTA;
! Iniciar variables
LARGO := 80;
ANCHO := 40;
ALTO := 40;
CNT_CINTA := 0;
POS_CINTA.trans.x := (9 * ANCHO) - (ANCHO /2);
POS_CINTA.trans.y := (2 * LARGO) - (LARGO /2);
POS_CINTA.trans.z := ALTO + 50;
POS_PALET.trans.x := 0;
POS_PALET.trans.y := 0;
POS_PALET.trans.z := 400;
UD4 Programación de robots industriales Off-Line. 389
Ejemplo de empaquetar instrucciones de movimiento.

POS_CINTA.trans.y := LARGO + LARGO / 2;


MoveL POS_CINTA,v200,fine,Tool_Ventosa\WObj:=CINTA;

POS_CINTA.trans.y := LARGO / 2;
MoveL POS_CINTA,v200,fine,Tool_Ventosa\WObj:=CINTA;

POS_CINTA.trans.z := POS_CINTA.trans.z - 50;


MoveL POS_CINTA,v200,fine,Tool_Ventosa\WObj:=CINTA;

UD4 Programación de robots industriales Off-Line. 390


UD4 Programación de robots industriales Off-Line. 391
PROG_2_2 Paletizador (Cinta y palet)

https://www.youtube.com/watch?v=9LTVd3lD48w

CONST robtarget Target_HOME:=[[408.511634473,0,605.68726027...


CONST robtarget Target_COGER:=[[490.000074388,-179.999862855,179.999785915]...
VAR robtarget POS_CINTA:=[[-0.000007506,-0.000012946,-0.000014823]...
VAR robtarget POS_PALET:=[[0.000096577,-0.000232796,0.000144213]...

! Declaración de variables
VAR num J;
VAR num X;
VAR num Y;
VAR num Z;
VAR num LARGO;
VAR num ANCHO;
VAR num ALTO;
VAR num CNT_CINTA;
! Iniciar variables
LARGO := 80;
ANCHO := 40;
ALTO := 40;
CNT_CINTA := 0;
POS_CINTA.trans.x := (9 * ANCHO) - (ANCHO /2);
POS_CINTA.trans.y := (2 * LARGO) - (LARGO /2);
POS_CINTA.trans.z := ALTO + 50;
POS_PALET.trans.x := (3 * ANCHO) - (ANCHO / 2);
POS_PALET.trans.y := (2 * LARGO) - (LARGO / 2);
POS_PALET.trans.z := ALTO + 50;
UD4 Programación de robots industriales Off-Line. 392
UD4 Programación de robots industriales Off-Line. 393
PROG_3-Paletizador con capas alternas.

https://www.youtube.com/watch?v=0dcPOEDRvMU

UD4 Programación de robots industriales Off-Line. 394


https://www.youtube.com/watch?v=itbIGOFJc4E

https://www.youtube.com/watch?v=8tCtWekuzqs

UD4 Programación de robots industriales Off-Line. 395


https://www.youtube.com/watch?v=w_9UCzbQA-8

https://www.youtube.com/watch?v=HxsSruMdUMM

UD4 Programación de robots industriales Off-Line. 396

También podría gustarte